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); } } }
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); }