示例#1
0
        private bool doTest(int board, GT668Class.GtiSignal signal, GT900USBClass GT668, TestOptionsClass testOpt)
        {
            double posv = 0.0;
            double negv = 0.0;

            Console.WriteLine("");
            GT668.ClearError();
            nf.AddToINFO($@"", InfoLine);
            nf.AddToINFO($@"Testing board {board} for signal {signal}", InfoLine);
            GT668.Select(board);
            GT668.MeasureAmplitude(signal, ref posv, ref negv, 1000.0);
            if (posv - negv >= 0.5)
            {
                double thr_val = (posv + negv) / 2.0;

                nf.AddToINFO($@"Signal found on board {board} for signal {EnumHelper.GetDescription(signal)} setting threshold {Math.Round(thr_val,3)} V", InfoLine);
                GT668.SetReferenceClock(GT668Class.GtiRefClkSrc.GT_REF_INTERNAL, false, false);
                GT668.SetBlockArm(GT668Class.GtiBlkArmSrc.GT_BA_IMM, GT668Class.GtiPolarity.GT_POL_POS, false);
                GT668.SetArmAuxOut(GT668Class.GtiArmAuxOut.GT_AUX_OUT_OFF);
                GT668.SetMemoryWrapMode(true);
                GT668.SetT0Mode(false, true);
                GT668.SetInputImpendance(signal, GT668Class.GtiImpedance.GT_IMP_LO);
                GT668.SetInputCoupling(signal, GT668Class.GtiCoupling.GT_CPL_DC);
                if (testOpt.manualTreshold)
                {
                    GT668.SetInputThreshold(signal, GT668Class.GtiThrMode.GT_THR_VOLTS, testOpt.treshold);
                }
                else
                {
                    GT668.SetInputThreshold(signal, GT668Class.GtiThrMode.GT_THR_VOLTS, thr_val);
                }
                GT668.SetInputPrescale(signal, GT668Class.GtiPrescale.GT_DIV_16);
                GT668.SetMeasSkip(0, 624U);
                switch (signal)
                {
                case GT668Class.GtiSignal.GT_SIG_A: GT668.SetMeasInput(0, GT668Class.GtiInputSel.GT_CHA_POS); break;

                case GT668Class.GtiSignal.GT_SIG_B: GT668.SetMeasInput(0, GT668Class.GtiInputSel.GT_CHB_POS); break;
                }


                GT668.SetMeasEnable(0, true);
                GT668.SetMeasEnable(1, false);



                GT668.StartMeasurements();
                Thread.Sleep(100);

                uint       num2   = 0;
                ref uint   local2 = ref num2;
                double     num3   = 0.0;
                ref double local3 = ref num3;
示例#2
0
        public bool TestFreq(int board, int Frequency, int ch, GT900USBClass ob)
        {
            double[] numArray = new double[2];
            bool     flag     = true;

            ob.Select(board);
            GT668Class.GtiBlkArmSrc src = GT668Class.GtiBlkArmSrc.GT_BA_OFF;
            GT668Class.GtiPolarity  pol = GT668Class.GtiPolarity.GT_POL_POS;
            bool level = false;

            ob.GetBlockArm(ref src, ref pol, ref level);
            GT668Class.GtiArmAuxOut aux_out = GT668Class.GtiArmAuxOut.GT_AUX_OUT_OFF;
            ob.GetArmAuxOut(ref aux_out);
            GT668Class.GtiPrescale presc = GT668Class.GtiPrescale.GT_DIV_AUTO;
            ob.GetInputPrescale(GT668Class.GtiSignal.GT_SIG_A, ref presc);
            int      ch1    = ch;
            int      num1   = 0;
            uint     num2   = checked ((uint)num1);
            ref uint local1 = ref num2;
示例#3
0
        public void RunDirect()
        {
            var ob = new GT900USBClass();

            ob.measConfig = mcc;
            bool ok = false;

            if (ob.measConfig.measType == eMeasType.pps_a_b)
            {
                ok = WorkerPrepareInstrumentPPS_A_B(ob, false);
            }
            else if (ob.measConfig.measType == eMeasType.freq_a)
            {
                ok = WorkerPrepareInstrumentFEQUENCY_A(ob, false);
            }
            if (ok)
            {
                Thread.Sleep(200);
                StartingMeasurement(ob, false);
                Thread.Sleep(200);
                WorkerRunMeasurement(ob, false);
            }
        }
示例#4
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);
        }