Esempio n. 1
0
 void Info(int cnt, bool worker, string key, string info, ResultDataClass data = null)
 {
     if (worker)
     {
         measWorker.ReportProgress(cnt, new ReportDataClass(key, info, data));
     }
     else
     {
         if ((key == InfoLine) || (key == ControlLine))
         {
             nf.AddToINFO(info, key);
         }
         else if ((key == DataLine) && (data != null))
         {
             nf.AddToINFO(info, key, data);
         }
     }
 }
Esempio n. 2
0
        void WorkerRunMeasurement(GT900USBClass ob, bool worker)
        {
            if (ob == null)
            {
                return;
            }
            Error(0, worker, $@"Test ErrorLog");
            uint ActNumTags0 = 0;
            uint ActNumTags1 = 0;

            double start_time = ob.ReadSysTime();
            int    cmd_cnt    = 0;

            Info(++cmd_cnt, worker, InfoLine, $@"StartTime:{start_time}");

            int akt = 0;

            ob.Run = true;
            Thread.Sleep(ob.measConfig.sleepAfterSingleMeasurement);

            while ((akt < ob.measConfig.loops || ob.measConfig.loops <= 0) && isBusy(worker) && (ob.Run))
            {
                double time = ob.ReadSysTime() - start_time;
                if (ob.measConfig.showAllErrors)
                {
                    int er = ob.GetError();
                    if (er > 0)
                    {
                        Info(++cmd_cnt, worker, InfoLine, $@"ERROR->ReadSysTime->{akt}->Time:{time}->Error:{er}");
                    }
                }

                if (akt > ob.measConfig.loops && ob.measConfig.loops > 0)
                {
                    break;
                }
                int readCnt = 0;

                var    r1         = new GT668Class.GtiRealTime[2];
                var    r2         = new GT668Class.GtiRealTime[2];
                double result     = double.MinValue;
                double resulttime = 0;
                if (ob.measConfig.measType == eMeasType.freq_a)
                {
                    ActNumTags0 = 0U;
                    ActNumTags1 = 0U;
                    while ((ActNumTags0 != ob.measConfig.numTag0) && (ob.Run) && isBusy(worker))
                    {
                        ob.ReadTimetagsEx(ref r1[0], ob.measConfig.numTag0, ref ActNumTags0, ref r2[0], ob.measConfig.numTag1, ref ActNumTags1);
                        int errRead = ob.GetError();
                        Thread.Sleep(ob.measConfig.sleepAfterSingleRead);
                        if (errRead > 0)
                        {
                            Error(++cmd_cnt, worker, $@"ERROR->{ob.GetErrorMessage(errRead)}->StopMeasurement");
                            ob.StopMeasurements();
                            ob.ClearError();
                            Thread.Sleep(50);
                            Error(++cmd_cnt, worker, $@"RestartMeasurement");
                            ob.StartMeasurements();
                            Error(++cmd_cnt, worker, $@"Measurement Restarted");
                            readCnt = 0;
                        }
                        readCnt++;
                    }

                    if (ob.Run)
                    {
                        resulttime = ob.ReadSysTime();
                        result     = (Math.Abs(10000.0 / ((r1[1].Seconds + r1[1].Fraction) - (r1[0].Seconds + r1[0].Fraction)))) + ob.measConfig.userDefinedYOffset;
                    }
                }
                else if (ob.measConfig.measType == eMeasType.freq_a_b)
                {
                    ActNumTags0 = 0;
                    ActNumTags1 = 0;
                    readCnt     = 0;
                    double tm = 0.0;
                    while (((ActNumTags0 <= 0) || (ActNumTags1 <= 0)) && ob.Run && isBusy(worker))
                    {
                        ob.ReadTimetagsEx(ref r1[0], ob.measConfig.numTag0, ref ActNumTags0, ref r2[0], ob.measConfig.numTag1, ref ActNumTags1);
                        Thread.Sleep(ob.measConfig.sleepAfterSingleRead);
                        int errRead = ob.GetError();
                        //tm = ob.ReadSysTime() - start_time;
                        if (errRead > 0)
                        {
                            Error(++cmd_cnt, worker, $@"{tm}: ERROR->{ob.GetErrorMessage(errRead)}->StopMeasurement");
                            ob.StopMeasurements();
                            ob.ClearError();
                            Thread.Sleep(50);
                            Error(++cmd_cnt, worker, $@"{tm}: RestartMeasurement");
                            ob.StartMeasurements();
                            tm = ob.ReadSysTime() - start_time;
                            Error(++cmd_cnt, worker, $@"{tm}: Measurement Restarted");
                            readCnt = 0;
                        }

                        readCnt++;
                    }
                    if (ob.Run)
                    {
                        tm         = ob.ReadSysTime() - start_time;
                        resulttime = Math.Round(tm, 6);
                        result     = (r1[0].Fraction - r2[0].Fraction) + ob.measConfig.userDefinedYOffset;
                    }
                }
                else if (ob.measConfig.measType == eMeasType.pps_a_b)
                {
                    ActNumTags0 = 0;
                    ActNumTags1 = 0;
                    readCnt     = 0;
                    while (((ActNumTags0 <= 0) || (ActNumTags1 <= 0) || (resulttime <= 0)) && ob.Run && isBusy(worker))
                    {
                        ob.ReadTimetagsEx(ref r1[0], ob.measConfig.numTag0, ref ActNumTags0, ref r2[0], ob.measConfig.numTag1, ref ActNumTags1);
                        Thread.Sleep(ob.measConfig.sleepAfterSingleRead);
                        int errRead = ob.GetError();

                        if (errRead > 0)
                        {
                            Error(++cmd_cnt, worker, $@"ERROR->{ob.GetErrorMessage(errRead)}->StopMeasurement");
                            ob.StopMeasurements();
                            ob.ClearError();
                            Thread.Sleep(50);
                            Error(++cmd_cnt, worker, $@"RestartMeasurement");
                            ob.StartMeasurements();
                            Error(++cmd_cnt, worker, $@"Measurement Restarted");
                            readCnt = 0;
                        }

                        readCnt++;

                        if (ob.Run)
                        {
                            resulttime = r1[0].Seconds;
                        }
                    }
                    if (ob.Run)
                    {
                        result = (r1[0].Fraction - r2[0].Fraction) + ob.measConfig.userDefinedYOffset;
                    }
                }

                int err = ob.GetError();
                if (err > 0)
                {
                    Info(++cmd_cnt, worker, InfoLine, $@"ERROR->{akt}->Time:{time}->CountTags:{ob.measConfig.numTag0},ReadTags:{ActNumTags0}->Error:{err}");
                    ob.ClearError();
                }

                time = ob.ReadSysTime() - start_time;
                if (ob.measConfig.showAllErrors)
                {
                    err = ob.GetError();
                    if (err > 0)
                    {
                        Info(++cmd_cnt, worker, InfoLine, $@"ERROR->ReadSysTime->{akt}->Time:{time}->Error:{err}");
                    }
                }

                if ((result > double.MinValue) && (ob.Run))
                {
                    if (ActNumTags0 > 1)
                    {
                        Console.WriteLine();
                    }
                    if (ob.measConfig.showResults)
                    {
                        var rd = new ResultDataClass();
                        rd.ID    = Guid.NewGuid();
                        rd.STAMP = DateTime.Now;

                        if (ob.measConfig.measType == eMeasType.pps_a_b)
                        {
                            rd.VALUE     = result;
                            rd.DATASTAMP = resulttime;
                            Info(++cmd_cnt, worker, DataLine, $@"    Tag({readCnt}): tag0->{ActNumTags0},tag1->{ActNumTags1}->{rd.DATASTAMP}={rd.VALUE}", rd);
                        }
                        else if (ob.measConfig.measType == eMeasType.freq_a_b)
                        {
                            rd.VALUE     = result;
                            rd.DATASTAMP = resulttime;
                            Info(++cmd_cnt, worker, DataLine, $@"    Tag({readCnt}): tag0->{ActNumTags0},tag1->{ActNumTags1}->{rd.DATASTAMP}={rd.VALUE}", rd);
                        }
                        else if (ob.measConfig.measType == eMeasType.freq_a)
                        {
                            rd.VALUE     = result;
                            rd.DATASTAMP = resulttime;
                            Info(++cmd_cnt, worker, DataLine, $@"    Tag({readCnt}): tag0->{ActNumTags0},tag1->{ActNumTags1}->{rd.DATASTAMP}={rd.VALUE}", rd);
                            Thread.Sleep(200);
                        }
                    }
                    else
                    {
                        err = ob.GetError();
                        Info(++cmd_cnt, worker, InfoLine, $@"{akt}->Time:{time}->CountTags:{ob.measConfig.numTag0},ReadTags:{ActNumTags0},{ActNumTags1}->Error:{err}");
                    }

                    if (ob.measConfig.restartMeasurementAfterLoop && ob.Run)
                    {
                        ob.StopMeasurements();
                        Info(++cmd_cnt, worker, InfoLine, $@"Measurement stopped");
                        ob.StartMeasurements();
                        Info(++cmd_cnt, worker, InfoLine, $@"Measurement started");
                    }
                    if (ob.Run)
                    {
                        ob.Sleep();
                    }
                    akt++;
                    Application.DoEvents();
                }
            }
            Info(++cmd_cnt, worker, InfoLine, $@"Measurement loop stopped.");
            ob.Run = false;
            ob.CloseMeasurement();
            Cancel(worker);
        }