Пример #1
0
        protected bool AdjustWavelengthMethod_1()
        {
            Int32 StartDac = MyStruct.WavelengthDacStart;

            dut.WriteWavelengthDac(MyStruct.WavelengthDacStart);
            double CurrentWavelength = pWavemeter.GetCenterWavelength();

            TargetWavelengthDac = MyStruct.WavelengthDacStart;

            if (CurrentWavelength > MyStruct.WavelengthTargetMin && CurrentWavelength < MyStruct.WavelengthTargetMax)
            {
                Log.SaveLogToTxt("CurrentWavelength is " + CurrentWavelength);
                return(true);
            }
            else
            {
                int DataCount = (MyStruct.WavelengthDacMax - MyStruct.WavelengthDacMin) / MyStruct.WavelengthDacStep;
                ScanDacArray        = new double[DataCount];
                ScanWavelengthArray = new double[DataCount];

                for (int i = 0; i < DataCount; i++)
                {
                    ScanDacArray[i] = MyStruct.WavelengthDacMin + MyStruct.WavelengthDacStep * i;
                    dut.WriteWavelengthDac(ScanDacArray[i]);
                    Thread.Sleep(200);
                    ScanWavelengthArray[i] = pWavemeter.GetCenterWavelength();
                    Log.SaveLogToTxt("ScanDacArray[" + i.ToString() + "]=" + ScanDacArray[i].ToString() + " " + "ScanWavelengthArray[" + i.ToString() + "]=" + ScanWavelengthArray[i].ToString());
                }

                BestDac = Convert.ToInt32(CalculateBestPoint(MyStruct.WavelengthTypcalValue, ScanDacArray, ScanWavelengthArray));

                Log.SaveLogToTxt("CalculateBestPoint=" + BestDac);

                if (BestDac >= MyStruct.WavelengthDacMax)
                {
                    BestDac = MyStruct.WavelengthDacMax;
                }
                else if (BestDac <= MyStruct.WavelengthDacMin)
                {
                    BestDac = MyStruct.WavelengthDacMin;
                }

                Log.SaveLogToTxt("BestDac=" + BestDac);

                dut.WriteWavelengthDac(BestDac);
                return(true);
            }
        }
Пример #2
0
        public override bool Test()
        {
            if (AnalysisInputParameters(inputParameters) == false)
            {
                return(false);
            }
            if (!CloseandOpenAPC(Convert.ToByte(APCMODE.IBAISandIMODON)))
            {
                return(false);                                                         //开启APC
            }
            if (!pSpectrograph.StartSweep())
            {
                fitDataTable("Wavelength(nm)", Wavelength.ToString());



                if (!flagNormalTest)//全测试
                {
                    fitDataTable("SpanWide(nm)", SpanWide.ToString());

                    if (pSpectrograph.analysisMode == 2)//单模
                    {
                        fitDataTable("SMSR(db)", SMSR.ToString());
                        fitDataTable("OSNR(db)", OSNR.ToString());
                    }
                }


                return(false);
            }


            Wavelength = pSpectrograph.GetCenterWavelength();
            fitDataTable("Wavelength(nm)", Wavelength.ToString());



            if (!flagNormalTest)//全测试
            {
                SpanWide = pSpectrograph.GetSpectralWidth();
                fitDataTable("SpanWide(nm)", SpanWide.ToString());

                if (pSpectrograph.analysisMode == 2)//单模
                {
                    SMSR = pSpectrograph.GetSMSR();
                    fitDataTable("SMSR(db)", SMSR.ToString());
                    OSNR = pSpectrograph.GetOSNR();
                    fitDataTable("OSNR(db)", OSNR.ToString());
                }

                pSpectrograph.pglobalParameters = GlobalParameters;
                pSpectrograph.SaveWaveformScreen();
            }
            return(true);
        }