Ejemplo n.º 1
0
 protected override bool StartTest()
 {
     logger.FlushLogBuffer();
     logoStr = "";
     if (AnalysisInputParameters(inputParameters) == false)
     {
         logger.FlushLogBuffer();
         return(false);
     }
     if (selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
     {
         Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];
         // open apc
         string apcstring = null;
         dut.APCStatus(out apcstring);
         if (apcstring == "OFF" || apcstring == "FF")
         {
             logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");
             dut.APCON();
             logoStr += logger.AdapterLogString(0, "Power off");
             tempps.Switch(false);
             Thread.Sleep(200);
             logoStr += logger.AdapterLogString(0, "Power on");
             tempps.Switch(true);
             Thread.Sleep(200);
             bool isOpen = dut.APCStatus(out apcstring);
             if (apcstring == "ON")
             {
                 logoStr += logger.AdapterLogString(1, "APC ON");
             }
             else
             {
                 logoStr += logger.AdapterLogString(3, "APC NOT ON");
             }
         }
         // open apc
         logoStr   += logger.AdapterLogString(0, "Step3...ReadDmiTemp");
         tempDmi    = dut.ReadDmiTemp();
         tempDmiErr = tempDmi - GlobalParameters.CurrentTemp;
         logoStr   += logger.AdapterLogString(1, "tempDmi=" + tempDmi.ToString());
         logoStr   += logger.AdapterLogString(1, "tempDmiErr=" + tempDmiErr.ToString());
         AnalysisOutputParameters(outputParameters);
         logger.FlushLogBuffer();
         return(true);
     }
     else
     {
         logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
         logger.FlushLogBuffer();
         return(false);
     }
 }
Ejemplo n.º 2
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }

            if (selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // open apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "OFF" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");
                    dut.APCON();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isOpen = dut.APCStatus(out apcstring);
                    if (apcstring == "ON")
                    {
                        logoStr += logger.AdapterLogString(1, "APC ON");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(1, "APC NOT ON");
                    }
                }
                // open apc
                //temp
                logoStr += logger.AdapterLogString(0, "Step3...CheckTempHighAlarm");
                logoStr += logger.AdapterLogString(1, CheckTempHighAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step4...CheckTempHighWarning");
                logoStr += logger.AdapterLogString(1, CheckTempHighWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step5...CheckTempLowAlarm");
                logoStr += logger.AdapterLogString(1, CheckTempLowAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step6...CheckTempLowWarning");
                logoStr += logger.AdapterLogString(1, CheckTempLowWarning(dut).ToString());



                //vcc
                logoStr += logger.AdapterLogString(0, "Step7...CheckVccLowWarning");
                logoStr += logger.AdapterLogString(1, CheckVccLowWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step8...CheckVccLowAlarm");
                logoStr += logger.AdapterLogString(1, CheckVccLowAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step9...CheckVccHighAlarm");
                logoStr += logger.AdapterLogString(1, CheckVccHighAlarm(dut).ToString());


                logoStr += logger.AdapterLogString(0, "Step10...CheckVccHighWarning");
                logoStr += logger.AdapterLogString(1, CheckVccHighWarning(dut).ToString());



                //ibias
                logoStr += logger.AdapterLogString(0, "Step11...CheckBiasHighAlarm");
                logoStr += logger.AdapterLogString(1, CheckBiasHighAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step12...CheckBiasHighWarning");
                logoStr += logger.AdapterLogString(1, CheckBiasHighWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step13...CheckBiasLowWarning");
                logoStr += logger.AdapterLogString(1, CheckBiasLowWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step14...CheckBiasLowAlarm");
                logoStr += logger.AdapterLogString(1, CheckBiasLowAlarm(dut).ToString());

                // tx power
                logoStr += logger.AdapterLogString(0, "Step15...CheckTxPowerHighAlarm");
                logoStr += logger.AdapterLogString(1, CheckTxPowerHighAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step16...CheckTxPowerHighWarning");
                logoStr += logger.AdapterLogString(1, CheckTxPowerHighWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step17...CheckTxPowerLowWarning");
                logoStr += logger.AdapterLogString(1, CheckTxPowerLowWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step18...CheckTxPowerLowAlarm");
                logoStr += logger.AdapterLogString(1, CheckTxPowerLowAlarm(dut).ToString());



                // rx power
                logoStr += logger.AdapterLogString(0, "Step19...CheckRxPowerHighAlarm");
                logoStr += logger.AdapterLogString(1, CheckRxPowerHighAlarm(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step20...CheckRxPowerHighWarning");
                logoStr += logger.AdapterLogString(1, CheckRxPowerHighWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step21...CheckRxPowerLowWarning");
                logoStr += logger.AdapterLogString(1, CheckRxPowerLowWarning(dut).ToString());

                logoStr += logger.AdapterLogString(0, "Step22...CheckRxPowerLowAlarm");
                logoStr += logger.AdapterLogString(1, CheckRxPowerLowAlarm(dut).ToString());



                AnalysisOutputParameters(outputParameters);
                logger.FlushLogBuffer();
                return(true);
            }

            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }
Ejemplo n.º 3
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            if (selectedEquipList["DUT"] != null && selectedEquipList["ATTEN"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                Powersupply tempps    = (Powersupply)selectedEquipList["POWERSUPPLY"];
                Attennuator tempAtten = (Attennuator)selectedEquipList["ATTEN"];
                // open apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "OFF" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");

                    dut.APCON();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(500);
                    bool isOpen = dut.APCStatus(out apcstring);
                    if (apcstring == "ON")
                    {
                        logoStr += logger.AdapterLogString(1, "APC ON");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT ON");
                    }
                }
                // open apc
                logoStr += logger.AdapterLogString(0, "Step3...Start Test RxDmi");
                double[] tempRxPowerDmiArray = new double[testRxPowerDmiStruct.ArrayListRxInputPower.Count];
                double[] tempRxPowerErrArray = new double[testRxPowerDmiStruct.ArrayListRxInputPower.Count];
                for (byte i = 0; i < testRxPowerDmiStruct.ArrayListRxInputPower.Count; i++)
                {
                    tempAtten.AttnValue(testRxPowerDmiStruct.ArrayListRxInputPower[i].ToString());
                    Thread.Sleep(1000);
                    tempRxPowerDmiArray[i] = dut.ReadDmiRxp();
                    tempRxPowerErrArray[i] = Math.Abs(Convert.ToDouble(testRxPowerDmiStruct.ArrayListRxInputPower[i].ToString()) - tempRxPowerDmiArray[i]);
                    logoStr += logger.AdapterLogString(1, "testRxPowerDmiStruct.ArrayListRxInputPower[" + i.ToString() + "]:" + testRxPowerDmiStruct.ArrayListRxInputPower[i].ToString() + "tempRxPowerDmiArray[" + i.ToString() + "]:" + tempRxPowerDmiArray[i].ToString() + "tempRxPowerErrArray[" + i.ToString() + "]" + tempRxPowerErrArray[i].ToString());
                }
                byte maxIndex;
                MaxErr      = algorithm.SelectMaxValue(ArrayList.Adapter(tempRxPowerErrArray), out maxIndex);
                ErrMaxPoint = Convert.ToDouble(testRxPowerDmiStruct.ArrayListRxInputPower[maxIndex].ToString());
                logoStr    += logger.AdapterLogString(1, "ErrMaxPoint=" + ErrMaxPoint.ToString() + "  MaxErr" + MaxErr.ToString());
                AnalysisOutputParameters(outputParameters);
                logger.FlushLogBuffer();
                return(true);
            }
            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }
Ejemplo n.º 4
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            calledCount++;
            if (calledCount > 1)
            {
                logger.AdapterLogString(0, "calledCount>1");
                return(true);
            }
            if (AnalysisInputParameters(inputParameters) == false)
            {
                return(false);
            }
            if (selectedEquipList["POWERSUPPLY"] != null && selectedEquipList["DUT"] != null)
            {
                bool isWriteCoefCOk = false;
                bool isWriteCoefBOk = false;
                bool isWriteCoefAOk = false;

                Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // close apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "ON" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start close apc");
                    dut.APCOFF();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isclosed = dut.APCStatus(out apcstring);
                    if (apcstring == "OFF")
                    {
                        logoStr += logger.AdapterLogString(1, "APC OFF");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT OFF");
                    }
                }
                // close apc
                vccAdcArray = new double[GlobalParameters.TotalVccCount, calVccDmiStruct.ArrayListVcc.Count];
                ReadVccADCTM(dut, tempps);
                logoStr += logger.AdapterLogString(0, "Step3...Start Fitting Curve");
                double[] tempVccArray = new double[calVccDmiStruct.ArrayListVcc.Count];
                for (byte i = 0; i < calVccDmiStruct.ArrayListVcc.Count; i++)
                {
                    tempVccArray[i] = Convert.ToDouble(calVccDmiStruct.ArrayListVcc[i].ToString());
                }
                tempps.ConfigVoltageCurrent(Convert.ToString(GlobalParameters.VccOffset + calVccDmiStruct.generalVcc));
                if (calVccDmiStruct.is1Stor2StorPid == 1)
                {
                    for (byte i = 0; i < tempVccArray.Length; i++)
                    {
                        tempVccArray[i] = tempVccArray[i] * 10000;
                    }
                    for (byte i = 0; i < GlobalParameters.TotalVccCount; i++)
                    {
                        double[] tempAdc = new double[calVccDmiStruct.ArrayListVcc.Count];
                        for (byte j = 0; j < calVccDmiStruct.ArrayListVcc.Count; j++)
                        {
                            tempAdc[j] = vccAdcArray[i, j];
                        }
                        double[] coefArray = algorithm.MultiLine(tempAdc, tempVccArray, calVccDmiStruct.ArrayListVcc.Count, 1);
                        vccDmiCoefC = (float)coefArray[0];
                        vccDmiCoefB = (float)coefArray[1];
                        vccDmiCoefB = vccDmiCoefB * 256;
                        double[] tempCoefArray = new double[2] {
                            vccDmiCoefC, vccDmiCoefB
                        };
                        vccDmiCoefArray = ArrayList.Adapter(coefArray);
                        vccDmiCoefArray.Reverse();
                        for (byte k = 0; k < vccDmiCoefArray.Count; k++)
                        {
                            logoStr += logger.AdapterLogString(1, "vccDmiCoefArray[" + k.ToString() + "]=" + vccDmiCoefArray[k].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(vccDmiCoefArray[k])));
                        }
                        logoStr += logger.AdapterLogString(0, "Step4...WriteCoef");
                        #region W&R Vcccoefc
                        isWriteCoefCOk = dut.SetVcccoefc(vccDmiCoefC.ToString(), (byte)(i + 1));
                        if (isWriteCoefCOk)
                        {
                            isWriteCoefCOk = true;
                            logoStr       += logger.AdapterLogString(1, "WritevccDmiCoefC:" + isWriteCoefCOk.ToString());
                        }
                        else
                        {
                            isWriteCoefCOk = false;
                            logoStr       += logger.AdapterLogString(3, "WritevccDmiCoefC:" + isWriteCoefCOk.ToString());
                        }
                        #endregion
                        #region W&R Vcccoefb
                        isWriteCoefBOk = dut.SetVcccoefb(vccDmiCoefB.ToString(), (byte)(i + 1));

                        if (isWriteCoefBOk)
                        {
                            isWriteCoefBOk = true;
                            logoStr       += logger.AdapterLogString(1, "WritevccDmiCoefB:" + isWriteCoefBOk.ToString());
                        }

                        else
                        {
                            isWriteCoefBOk = false;
                            logoStr       += logger.AdapterLogString(3, "WritevccDmiCoefB:" + isWriteCoefBOk.ToString());
                        }
                        #endregion
                        if (isWriteCoefBOk & isWriteCoefCOk)
                        {
                            isCalVccDmiOk = true;

                            logoStr += logger.AdapterLogString(1, "isCalVccDmiOk:" + isCalVccDmiOk.ToString());
                        }
                        else
                        {
                            isCalVccDmiOk = false;
                            logoStr      += logger.AdapterLogString(3, "isCalVccDmiOk:" + isCalVccDmiOk.ToString());
                        }
                    }
                }
                else if (calVccDmiStruct.is1Stor2StorPid == 2)
                {
                    for (byte i = 0; i < tempVccArray.Length; i++)
                    {
                        tempVccArray[i] = tempVccArray[i] * 10000;
                    }
                    for (byte i = 0; i < GlobalParameters.TotalVccCount; i++)
                    {
                        double[] tempAdc = new double[calVccDmiStruct.ArrayListVcc.Count];

                        for (byte j = 0; j < calVccDmiStruct.ArrayListVcc.Count; j++)
                        {
                            tempAdc[j] = vccAdcArray[i, j];
                        }
                        double[] coefArray = algorithm.MultiLine(tempAdc, tempVccArray, calVccDmiStruct.ArrayListVcc.Count, 2);
                        vccDmiCoefC = (float)coefArray[0];
                        vccDmiCoefB = (float)coefArray[1];
                        vccDmiCoefA = (float)coefArray[2];

                        vccDmiCoefArray = ArrayList.Adapter(coefArray);
                        vccDmiCoefArray.Reverse();
                        for (byte k = 0; k < vccDmiCoefArray.Count; k++)
                        {
                            logoStr += logger.AdapterLogString(1, "vccDmiCoefArray[" + k.ToString() + "]=" + vccDmiCoefArray[k].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(vccDmiCoefArray[k])));
                        }
                        logoStr += logger.AdapterLogString(0, "Step4...WriteCoef");
                        #region W&R Vcccoefc
                        isWriteCoefCOk = dut.SetVcccoefc(vccDmiCoefC.ToString());
                        if (isWriteCoefCOk)
                        {
                            isWriteCoefCOk = true;
                            logoStr       += logger.AdapterLogString(1, "WritevccDmiCoefC:" + isWriteCoefCOk.ToString());
                        }
                        else
                        {
                            isWriteCoefCOk = false;
                            logoStr       += logger.AdapterLogString(3, "WritevccDmiCoefC:" + isWriteCoefCOk.ToString());
                        }
                        #endregion
                        #region W&R Vcccoefb
                        isWriteCoefBOk = dut.SetVcccoefb(vccDmiCoefB.ToString(), (byte)(i + 1));

                        if (isWriteCoefBOk)
                        {
                            isWriteCoefBOk = true;

                            logoStr += logger.AdapterLogString(1, "WritevccDmiCoefB:" + isWriteCoefBOk.ToString());
                        }
                        else
                        {
                            isWriteCoefBOk = false;
                            logoStr       += logger.AdapterLogString(3, "WritevccDmiCoefB:" + isWriteCoefBOk.ToString());
                        }
                        #endregion
                        #region W&R Vcccoefa
                        //isWriteCoefAOk = dut.SetVcccoefa(vccDmiCoefA.ToString(), i + 1);
                        if (isWriteCoefAOk)
                        {
                            isWriteCoefAOk = true;
                            logoStr       += logger.AdapterLogString(1, "WritevccDmiCoefA:" + isWriteCoefAOk.ToString());
                        }
                        else
                        {
                            isWriteCoefAOk = false;
                            logoStr       += logger.AdapterLogString(3, "WritevccDmiCoefA:" + isWriteCoefAOk.ToString());
                        }
                        #endregion
                        if (isWriteCoefBOk & isWriteCoefCOk & isWriteCoefAOk)
                        {
                            isCalVccDmiOk = true;
                            logoStr      += logger.AdapterLogString(1, "isCalVccDmiOk:" + isCalVccDmiOk.ToString());
                        }
                        else
                        {
                            isCalVccDmiOk = false;
                            logoStr      += logger.AdapterLogString(3, "isCalVccDmiOk:" + isCalVccDmiOk.ToString());
                        }
                    }
                }
            }
            else
            {
                logoStr      += logger.AdapterLogString(4, "Equipments is not enough!");
                isCalVccDmiOk = false;
                logger.FlushLogBuffer();
                return(isCalVccDmiOk);
            }
            AnalysisOutputParameters(outputParameters);
            logger.FlushLogBuffer();
            return(isCalVccDmiOk);
        }
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (!channelArray.ContainsKey(GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()))
            {
                channelArray.Add(GlobalParameters.CurrentChannel.ToString().Trim().ToUpper(), GlobalParameters.CurrentChannel.ToString().Trim().ToUpper());
            }
            else
            {
                logger.AdapterLogString(0, "Curren Channel had exist");
                return(true);
            }
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            if (selectedEquipList["ATTEN"] != null && selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                bool isWriteCoefCOk = false;
                bool isWriteCoefBOk = false;
                bool isWriteCoefAOk = false;

                Attennuator tempAtten = (Attennuator)selectedEquipList["ATTEN"];
                Powersupply tempps    = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // close apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "ON" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start close apc");

                    dut.APCOFF();
                    logoStr += logger.AdapterLogString(0, "Power off");

                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");

                    tempps.Switch(true);
                    Thread.Sleep(500);
                    bool isclosed = dut.APCStatus(out apcstring);
                    if (apcstring == "OFF")
                    {
                        logoStr += logger.AdapterLogString(1, "APC OFF");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT OFF");
                    }
                }
                // close apc
                rxPoweruwArray  = new double[calRxDmiStruct.ArrayListRxPower.Count];
                rxPowerAdcArray = new double[calRxDmiStruct.ArrayListRxPower.Count];
                for (byte i = 0; i < calRxDmiStruct.ArrayListRxPower.Count; i++)
                {
                    rxPoweruwArray[i] = algorithm.ChangeDbmtoUw(Convert.ToDouble(calRxDmiStruct.ArrayListRxPower[i])) * 10;
                    tempAtten.AttnValue(calRxDmiStruct.ArrayListRxPower[i].ToString());
                    Thread.Sleep(1000);
                    UInt16 Temp;
                    dut.ReadRxpADC(out Temp);
                    rxPowerAdcArray[i] = Convert.ToDouble(Temp);
                }
                logoStr += logger.AdapterLogString(0, "Step3...Start Fitting Curve");
                if (calRxDmiStruct.is1Stor2StorPid == 1)
                {
                    double[] coefArray = algorithm.MultiLine(rxPowerAdcArray, rxPoweruwArray, calRxDmiStruct.ArrayListRxPower.Count, 1);
                    rxDmiCoefC = (float)coefArray[0];
                    rxDmiCoefB = (float)coefArray[1];
                    double[] tempCoefArray = new double[2] {
                        rxDmiCoefC, rxDmiCoefB
                    };

                    rxDmiCoefArray = ArrayList.Adapter(tempCoefArray);
                    rxDmiCoefArray.Reverse();
                    for (byte i = 0; i < rxDmiCoefArray.Count; i++)
                    {
                        logoStr += logger.AdapterLogString(1, "rxDmiCoefArray[" + i.ToString() + "]=" + rxDmiCoefArray[i].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(rxDmiCoefArray[i])));
                    }
                    logoStr += logger.AdapterLogString(0, "Step4...WriteCoef");
                    #region W&RRxpcoefc
                    isWriteCoefCOk = dut.SetRxpcoefc(rxDmiCoefC.ToString());

                    if (isWriteCoefCOk)
                    {
                        isWriteCoefCOk = true;
                        logoStr       += logger.AdapterLogString(1, "WriterxDmiCoefC:" + isWriteCoefCOk.ToString());
                    }
                    else
                    {
                        isWriteCoefCOk = false;

                        logoStr += logger.AdapterLogString(3, "WriterxDmiCoefC:" + isWriteCoefCOk.ToString());
                    }
                    #endregion
                    #region W&R Rxpcoefb
                    isWriteCoefBOk = dut.SetRxpcoefb(rxDmiCoefB.ToString());

                    if (isWriteCoefBOk)
                    {
                        isWriteCoefBOk = true;
                        logoStr       += logger.AdapterLogString(1, "WriterxDmiCoefB:" + isWriteCoefBOk.ToString());
                    }
                    else
                    {
                        isWriteCoefCOk = false;
                        logoStr       += logger.AdapterLogString(3, "WriterxDmiCoefB:" + isWriteCoefBOk.ToString());
                    }
                    #endregion
                    if (isWriteCoefCOk & isWriteCoefBOk)
                    {
                        isCalRxDmiOk = true;
                        logoStr     += logger.AdapterLogString(1, "isCalRxDmiOk:" + isCalRxDmiOk.ToString());
                    }
                    else
                    {
                        isCalRxDmiOk = false;
                        logoStr     += logger.AdapterLogString(3, "isCalRxDmiOk:" + isCalRxDmiOk.ToString());
                    }
                }
                else if (calRxDmiStruct.is1Stor2StorPid == 2)
                {
                    double[] coefArray = algorithm.MultiLine(rxPowerAdcArray, rxPoweruwArray, calRxDmiStruct.ArrayListRxPower.Count, 2);
                    rxDmiCoefC     = (float)coefArray[0];
                    rxDmiCoefB     = (float)coefArray[1];
                    rxDmiCoefA     = (float)coefArray[2];
                    rxDmiCoefArray = ArrayList.Adapter(coefArray);
                    rxDmiCoefArray.Reverse();
                    for (byte i = 0; i < rxDmiCoefArray.Count; i++)
                    {
                        logoStr += logger.AdapterLogString(1, "rxDmiCoefArray[" + i.ToString() + "]=" + rxDmiCoefArray[i].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(rxDmiCoefArray[i])));
                    }
                    logoStr += logger.AdapterLogString(0, "Step4...WriteCoef");

                    #region W&RRxpcoefc
                    isWriteCoefCOk = dut.SetRxpcoefc(rxDmiCoefC.ToString());

                    if (isWriteCoefCOk)
                    {
                        isWriteCoefCOk = true;
                        logoStr       += logger.AdapterLogString(1, "WriterxDmiCoefC:" + isWriteCoefCOk.ToString());
                    }
                    else
                    {
                        isWriteCoefCOk = false;
                        logoStr       += logger.AdapterLogString(3, "WriterxDmiCoefC:" + isWriteCoefCOk.ToString());
                    }
                    #endregion
                    #region W&R Rxpcoefb
                    isWriteCoefBOk = dut.SetRxpcoefb(rxDmiCoefB.ToString());
                    //dut.ReadRxpcoefb(out tempString);
                    if (isWriteCoefBOk)
                    {
                        isWriteCoefBOk = true;
                        logoStr       += logger.AdapterLogString(1, "WriterxDmiCoefB:" + isWriteCoefBOk.ToString());
                    }
                    else
                    {
                        isWriteCoefCOk = false;
                        logoStr       += logger.AdapterLogString(3, "WriterxDmiCoefB:" + isWriteCoefBOk.ToString());
                    }
                    #endregion
                    #region W&R Rxpcoefa
                    isWriteCoefAOk = dut.SetRxpcoefa(rxDmiCoefA.ToString());

                    if (isWriteCoefAOk)
                    {
                        isWriteCoefAOk = true;
                        logoStr       += logger.AdapterLogString(1, "WriterxDmiCoefA:" + isWriteCoefAOk.ToString());
                    }
                    else
                    {
                        isWriteCoefAOk = false;
                        logoStr       += logger.AdapterLogString(3, "WriterxDmiCoefA:" + isWriteCoefAOk.ToString());
                    }
                    #endregion
                    if (isWriteCoefCOk & isWriteCoefBOk & isWriteCoefAOk)
                    {
                        isCalRxDmiOk = true;
                        logoStr     += logger.AdapterLogString(1, "isCalRxDmiOk:" + isCalRxDmiOk.ToString());
                    }
                    else
                    {
                        isCalRxDmiOk = false;
                        logoStr     += logger.AdapterLogString(3, "isCalRxDmiOk:" + isCalRxDmiOk.ToString());
                    }
                }
            }
            else
            {
                isCalRxDmiOk = false;
                logoStr     += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(isCalRxDmiOk);
            }
            AnalysisOutputParameters(outputParameters);
            logger.FlushLogBuffer();
            return(isCalRxDmiOk);
        }
Ejemplo n.º 6
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }

            if (selectedEquipList["ERRORDETE"] != null && selectedEquipList["ATTEN"] != null && selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                bool isWriteCoefCOk = false;
                bool isWriteCoefBOk = false;
                bool isWriteCoefAOk = false;

                ErrorDetector tempED  = (ErrorDetector)selectedEquipList["ERRORDETE"];
                Attennuator   tempAtt = (Attennuator)selectedEquipList["ATTEN"];
                Powersupply   tempps  = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // add logo infor
                logoStr += logger.AdapterLogString(0, "Setp2...SetAttenPoint:" + adjustAPDStruct.ApdCalPoint.ToString());
                // add logo infor
                bool ok = tempAtt.AttnValue(adjustAPDStruct.ApdCalPoint.ToString());
                // add logo infor
                logoStr += logger.AdapterLogString(0, ok.ToString());
                // close apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "ON" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step3...Start close apc");
                    dut.APCOFF();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isclosed = dut.APCStatus(out apcstring);
                    if (apcstring == "OFF")
                    {
                        logoStr += logger.AdapterLogString(1, "APC OFF");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC OFF");
                    }
                }
                // close apc

                UInt32[] tempApdArray = new UInt32[adjustAPDStruct.ArrayListApdBiasPoints.Count];
                for (byte i = 0; i < adjustAPDStruct.ArrayListApdBiasPoints.Count; i++)
                {
                    tempApdArray[i] = Convert.ToUInt32(adjustAPDStruct.ArrayListApdBiasPoints[i].ToString());
                }
                logoStr += logger.AdapterLogString(0, "Step4...StartCalApd");
                ArrayList tempBerArray    = new ArrayList();
                ArrayList tempApdDacArray = new ArrayList();
                double    minBer          = -1;
                UInt32    targetAPDAC     = EnumMethod(tempApdArray, dut, tempED, adjustAPDStruct.ApdBiasStep, out tempBerArray, out tempApdDacArray, out minBer);
                minBer = Math.Round(minBer, 5);
                for (byte i = 0; i < Math.Min(tempBerArray.Count, tempApdDacArray.Count); i++)
                {
                    logoStr += logger.AdapterLogString(1, GlobalParameters.CurrentChannel.ToString());
                    logoStr += logger.AdapterLogString(1, tempApdDacArray[i].ToString() + "  " + tempApdDacArray[i].ToString());
                }
                logoStr      += logger.AdapterLogString(1, "minApdDac=" + targetAPDAC.ToString() + "  minBer=" + minBer.ToString());
                isApdAdjustOK = true;
                #region  CheckTempChange
                if (!tempratureADCArray.ContainsKey(GlobalParameters.CurrentTemp.ToString().Trim().ToUpper()))
                {
                    logoStr += logger.AdapterLogString(0, "Step4...TempChanged Read tempratureADC");
                    logoStr += logger.AdapterLogString(1, "realtemprature=" + GlobalParameters.CurrentTemp.ToString());

                    UInt16 tempratureADC;
                    dut.ReadTempADC(out tempratureADC, 1);
                    logoStr += logger.AdapterLogString(1, "tempratureADC=" + tempratureADC.ToString());
                    tempratureADCArray.Add(GlobalParameters.CurrentTemp.ToString().Trim().ToUpper(), tempratureADC.ToString().Trim());
                    tempratureADCArrayList.Add(tempratureADC);
                }
                #endregion
                #region  add current channel
                if (!adjustAPDtValueRecordsStruct.ContainsKey(GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()))
                {
                    logoStr += logger.AdapterLogString(0, "Step6...add current channel records");
                    logoStr += logger.AdapterLogString(1, "GlobalParameters.CurrentChannel=" + GlobalParameters.CurrentChannel.ToString());
                    adjustAPDtValueRecordsStruct.Add(GlobalParameters.CurrentChannel.ToString().Trim().ToUpper(), new ArrayList());
                    adjustAPDtValueRecordsStruct[GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()].Add(targetAPDAC);
                }
                else
                {
                    adjustAPDtValueRecordsStruct[GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()].Add(targetAPDAC);
                }


                #endregion
                #region  CurveCoef

                if (adjustAPDtValueRecordsStruct.ContainsKey(GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()))
                {
                    if (tempratureADCArray.Count >= 2 && adjustAPDtValueRecordsStruct[GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()].Count >= 2)
                    {
                        int      tempCount        = Math.Min(tempratureADCArray.Count, adjustAPDtValueRecordsStruct[GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()].Count);
                        double[] tempAPDDacArray  = new double[tempCount];
                        double[] tempTempAdcArray = new double[tempCount];
                        for (byte i = 0; i < tempCount; i++)
                        {
                            tempAPDDacArray[i]  = double.Parse(adjustAPDtValueRecordsStruct[GlobalParameters.CurrentChannel.ToString().Trim().ToUpper()][i].ToString());
                            tempTempAdcArray[i] = double.Parse(tempratureADCArrayList[i].ToString());
                        }
                        logoStr += logger.AdapterLogString(0, "Step8...Start Fitting Curve");

                        if (adjustAPDStruct.is1Stor2StorPid == 2)
                        {
                            double[] coefArray = algorithm.MultiLine(tempTempAdcArray, tempAPDDacArray, tempratureADCArray.Count, 2);
                            apdPowerCoefC = (float)coefArray[0];
                            apdPowerCoefB = (float)coefArray[1];
                            apdPowerCoefA = (float)coefArray[2];
                            apdCoefArray  = ArrayList.Adapter(coefArray);
                            apdCoefArray.Reverse();
                            for (byte i = 0; i < apdCoefArray.Count; i++)
                            {
                                logoStr += logger.AdapterLogString(1, "apdCoefArray[" + i.ToString() + "]=" + apdCoefArray[i].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.FloatToIEE754(apdCoefArray[i])));
                            }
                            logoStr += logger.AdapterLogString(0, "Step9...WriteCoef");

                            #region W&R Apddaccoefc
                            isWriteCoefCOk = dut.SetBiasdaccoefc(apdPowerCoefC.ToString());
                            if (isWriteCoefCOk)
                            {
                                isWriteCoefCOk = true;
                                logoStr       += logger.AdapterLogString(1, "isWriteCoefCOk:" + isWriteCoefCOk.ToString());
                            }
                            else
                            {
                                isWriteCoefCOk = false;
                                logoStr       += logger.AdapterLogString(3, "isWriteCoefCOk:" + isWriteCoefCOk.ToString());
                            }
                            #endregion
                            #region W&R Apddaccoefb
                            isWriteCoefBOk = dut.SetBiasdaccoefb(apdPowerCoefB.ToString());
                            if (isWriteCoefBOk)
                            {
                                isWriteCoefBOk = true;
                                logoStr       += logger.AdapterLogString(1, "isWriteCoefBOk:" + isWriteCoefBOk.ToString());
                            }
                            else
                            {
                                isWriteCoefBOk = false;
                                logoStr       += logger.AdapterLogString(3, "isWriteCoefBOk:" + isWriteCoefBOk.ToString());
                            }
                            #endregion
                            #region W&R Apddaccoefa
                            isWriteCoefAOk = dut.SetBiasdaccoefa(apdPowerCoefA.ToString());

                            if (isWriteCoefAOk)
                            {
                                isWriteCoefAOk = true;
                                logoStr       += logger.AdapterLogString(1, "isWriteCoefAOk:" + isWriteCoefAOk.ToString());
                            }
                            else
                            {
                                isWriteCoefAOk = false;
                                logoStr       += logger.AdapterLogString(3, "isWriteCoefAOk:" + isWriteCoefAOk.ToString());
                            }
                            #endregion
                            if (isWriteCoefAOk & isWriteCoefBOk & isWriteCoefCOk)
                            {
                                isCalApdPowerOk = true;
                                logoStr        += logger.AdapterLogString(1, "isCalApdPowerOk:" + isCalApdPowerOk.ToString());
                            }
                            else
                            {
                                isCalApdPowerOk = false;
                                logoStr        += logger.AdapterLogString(3, "isCalApdPowerOk:" + isCalApdPowerOk.ToString());
                            }
                        }
                        else if (adjustAPDStruct.is1Stor2StorPid == 1)
                        {
                            double[] coefArray = algorithm.MultiLine(tempTempAdcArray, tempAPDDacArray, tempratureADCArray.Count, 1);
                            apdPowerCoefC = (float)coefArray[0];
                            apdPowerCoefB = (float)coefArray[1];
                            apdPowerCoefA = (float)coefArray[2];
                            apdCoefArray  = ArrayList.Adapter(coefArray);
                            apdCoefArray.Reverse();
                            for (byte i = 0; i < apdCoefArray.Count; i++)
                            {
                                logoStr += logger.AdapterLogString(1, "apdCoefArray[" + i.ToString() + "]=" + apdCoefArray[i].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.FloatToIEE754(apdCoefArray[i])));
                            }
                            logoStr += logger.AdapterLogString(0, "Step9...WriteCoef");

                            #region W&R Apddaccoefc
                            isWriteCoefCOk = dut.SetBiasdaccoefc(apdPowerCoefC.ToString());

                            if (isWriteCoefCOk)
                            {
                                isWriteCoefCOk = true;
                                logoStr       += logger.AdapterLogString(1, "isWriteCoefCOk:" + isWriteCoefCOk.ToString());
                            }
                            else
                            {
                                isWriteCoefCOk = false;
                                logoStr       += logger.AdapterLogString(3, "isWriteCoefCOk:" + isWriteCoefCOk.ToString());
                            }
                            #endregion
                            #region W&R Apddaccoefb
                            isWriteCoefBOk = dut.SetBiasdaccoefb(apdPowerCoefB.ToString());
                            if (isWriteCoefBOk)
                            {
                                isWriteCoefBOk = true;
                                logoStr       += logger.AdapterLogString(0, "isWriteCoefBOk:" + isWriteCoefBOk.ToString());
                            }
                            else
                            {
                                isWriteCoefBOk = false;
                                logoStr       += logger.AdapterLogString(3, "isWriteCoefBOk:" + isWriteCoefBOk.ToString());
                            }
                            #endregion

                            if (isWriteCoefBOk & isWriteCoefCOk)
                            {
                                isCalApdPowerOk = true;
                                logoStr        += logger.AdapterLogString(1, "isCalApdPowerOk:" + isCalApdPowerOk.ToString());
                            }
                            else
                            {
                                isCalApdPowerOk = false;
                                logoStr        += logger.AdapterLogString(3, "isCalApdPowerOk:" + isCalApdPowerOk.ToString());
                            }
                        }
                    }
                }

                #endregion
                AnalysisOutputParameters(outputParameters);
                logger.FlushLogBuffer();
                return(isApdAdjustOK);
            }
            else
            {
                logoStr      += logger.AdapterLogString(4, "Equipments is not enough!");
                isApdAdjustOK = false;
                logger.FlushLogBuffer();
                return(isApdAdjustOK);
            }
        }
Ejemplo n.º 7
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                return(false);
            }
            if (selectedEquipList["ATTEN"] != null && selectedEquipList["ERRORDETE"] != null && selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // open apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "OFF" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");
                    dut.APCON();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isOpen = dut.APCStatus(out apcstring);
                    if (apcstring == "ON")
                    {
                        logoStr += logger.AdapterLogString(1, "APC ON");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT ON");
                    }
                }
                // open apc
                Attennuator   tempAtten = (Attennuator)selectedEquipList["ATTEN"];
                ErrorDetector tempED    = (ErrorDetector)selectedEquipList["ERRORDETE"];
                logoStr += logger.AdapterLogString(0, "Step3...SetAttenValue");
                SetAttenValue(tempAtten, testBerStruct.CsenAlignRxPwr);
                Thread.Sleep(200);
                tempAtten.Switch(true);
                double attPoint = 0;
                logoStr += logger.AdapterLogString(0, "Step4...AutoAlaign");

                bool isAutoAlaign = tempED.AutoAlaign(true);
                if (isAutoAlaign)
                {
                    logoStr += logger.AdapterLogString(1, isAutoAlaign.ToString());
                }
                else
                {
                    logoStr += logger.AdapterLogString(4, isAutoAlaign.ToString());
                    logger.FlushLogBuffer();
                    return(isAutoAlaign);
                }

                if (isAutoAlaign)
                {
                    if (testBerStruct.IsBerQuickTest == true)
                    {
                        tempAtten.AttnValue(testBerStruct.CsenStartingRxPwr.ToString());
                        Thread.Sleep(200);
                        double sensitivity = tempED.GetErrorRate();
                        logoStr += logger.AdapterLogString(1, "SetAtten=" + testBerStruct.CsenStartingRxPwr.ToString());

                        if (sensitivity.ToString().ToUpper().Trim() == "NAN")
                        {
                            sensitivityPoint = -1000;
                            AnalysisOutputParameters(outputParameters);
                            logger.FlushLogBuffer();
                            return(false);
                        }
                        if (testBerStruct.CsenTargetBER == 1E-3)
                        {
                            if (sensitivity <= 1E-3)
                            {
                                sensitivityPoint = testBerStruct.CsenStartingRxPwr;
                            }
                            else
                            {
                                sensitivityPoint = -1000;
                                logoStr         += logger.AdapterLogString(4, "AttPoint=" + testBerStruct.CsenStartingRxPwr.ToString() + "CSENCE>1E-3 ");
                                AnalysisOutputParameters(outputParameters);
                                logger.FlushLogBuffer();
                                return(false);
                            }
                        }
                        else if (testBerStruct.CsenTargetBER == 1E-12)
                        {
                            if (sensitivity <= 1E-12)
                            {
                                sensitivityPoint = testBerStruct.CsenStartingRxPwr;
                            }
                            else
                            {
                                sensitivityPoint = -1000;
                                logoStr         += logger.AdapterLogString(4, "AttPoint=" + testBerStruct.CsenStartingRxPwr.ToString() + "CSENCE>1E-12 ");
                                AnalysisOutputParameters(outputParameters);
                                logger.FlushLogBuffer();
                                return(false);
                            }
                        }

                        sensitivityPoint = Math.Round(sensitivityPoint, 2);
                        logoStr         += logger.AdapterLogString(1, "sensitivityPoint= " + sensitivityPoint.ToString());
                        AnalysisOutputParameters(outputParameters);
                        logger.FlushLogBuffer();
                        return(true);
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(0, "Step5...SerchTargetPoint");
                        attPoint = SerchTargetPoint(tempAtten, tempED, testBerStruct.CsenStartingRxPwr, testBerStruct.SearchTargetBerLL, testBerStruct.SearchTargetBerUL, testBerStruct.SearchTargetBerAddStep, testBerStruct.SearchTargetBerSubStep);
                        logoStr += logger.AdapterLogString(1, "SetAtten=" + attPoint.ToString());
                        ArrayList attPoints;
                        ArrayList berPoints;
                        double    intercept;
                        double    slope;
                        logoStr += logger.AdapterLogString(0, "Step6...SerchCoefPoints");
                        if (testBerStruct.CsenTargetBER == 1E-3)
                        {
                            SerchCoefPointsTarget1E3(tempAtten, tempED, attPoint, testBerStruct.CsenTargetBER, testBerStruct.CoefCsenSubStep, testBerStruct.CoefCsenAddStep, out attPoints, out berPoints);
                            byte     tmepCount     = (byte)Math.Min(attPoints.Count, berPoints.Count);
                            double[] tempattPoints = new double[tmepCount];
                            double[] tempberPoints = new double[tmepCount];
                            for (byte i = 0; i < tmepCount; i++)
                            {
                                tempattPoints[i] = double.Parse(attPoints[i].ToString());
                                tempberPoints[i] = double.Parse(berPoints[i].ToString());
                                logoStr         += logger.AdapterLogString(1, "attPoints[ " + i.ToString() + "]" + double.Parse(attPoints[i].ToString()) + "  " + "berPoints[ " + i.ToString() + "]" + double.Parse(berPoints[i].ToString()));
                            }
                            algorithm.LinearRegression(algorithm.Getlog10(algorithm.GetNegative(algorithm.Getlog10(tempberPoints))), tempattPoints, out slope, out intercept);
                            sensitivityPoint = slope + (intercept * System.Math.Log10(System.Math.Log10(testBerStruct.CsenTargetBER) * (-1)));
                        }
                        else if (testBerStruct.CsenTargetBER == 1E-12)
                        {
                            SerchCoefPoints1E12(tempAtten, tempED, attPoint, testBerStruct.CsenTargetBER, testBerStruct.CoefCsenSubStep, testBerStruct.CoefCsenAddStep, out attPoints, out berPoints);
                            byte     tmepCount     = (byte)Math.Min(attPoints.Count, berPoints.Count);
                            double[] tempattPoints = new double[tmepCount];
                            double[] tempberPoints = new double[tmepCount];
                            for (byte i = 0; i < tmepCount; i++)
                            {
                                tempattPoints[i] = double.Parse(attPoints[i].ToString());
                                tempberPoints[i] = double.Parse(berPoints[i].ToString());
                                logoStr         += logger.AdapterLogString(1, "attPoints[ " + i.ToString() + "]" + double.Parse(attPoints[i].ToString()) + "  " + "berPoints[ " + i.ToString() + "]" + double.Parse(berPoints[i].ToString()));
                            }
                            algorithm.LinearRegression(algorithm.Getlog10(algorithm.GetNegative(algorithm.Getlog10(tempberPoints))), tempattPoints, out slope, out intercept);
                            sensitivityPoint = slope + (intercept * System.Math.Log10(System.Math.Log10(testBerStruct.CsenTargetBER) * (-1)));
                        }
                        if (sensitivityPoint.ToString().ToUpper().Trim() == "NAN")
                        {
                            sensitivityPoint = -1000;
                            AnalysisOutputParameters(outputParameters);
                            logger.FlushLogBuffer();
                            return(false);
                        }
                        sensitivityPoint = Math.Round(sensitivityPoint, 2);
                        logoStr         += logger.AdapterLogString(1, "sensitivityPoint= " + sensitivityPoint.ToString());
                        AnalysisOutputParameters(outputParameters);
                        logger.FlushLogBuffer();
                        return(true);
                    }
                }
                else
                {
                    logger.FlushLogBuffer();
                    return(false);
                }
            }
            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }
Ejemplo n.º 8
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            IList <string> tempKeys = realTempratureArray.Keys;

            for (byte i = 0; i < tempKeys.Count; i++)
            {
                if (tempKeys[i].ToUpper().Substring(0, tempKeys[i].ToUpper().Length - 1) == (GlobalParameters.CurrentTemp.ToString().Trim().ToUpper()))
                {
                    logger.AdapterLogString(0, "Current temprature had exist");
                    return(true);
                }
            }


            if (AnalysisInputParameters(inputParameters) == false)
            {
                return(false);
            }
            if (selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                bool        isWriteCoefCOk = false;
                bool        isWriteCoefBOk = false;
                bool        isWriteCoefAOk = false;
                Powersupply tempps         = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // close apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "ON" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start close apc");
                    dut.APCOFF();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(500);
                    bool isclosed = dut.APCStatus(out apcstring);
                    if (apcstring == "OFF")
                    {
                        logoStr += logger.AdapterLogString(1, "APC OFF");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT OFF");
                    }
                }
                // close apc
                #region  CheckTempChange

                if (!realTempratureArray.ContainsKey(GlobalParameters.CurrentTemp.ToString().Trim().ToUpper()))
                {
                    logoStr += logger.AdapterLogString(0, "Step3...TempChanged Read tempratureADC");
                    for (byte i = 0; i < GlobalParameters.TotalTempCount; i++)
                    {
                        realTempratureArray.Add(GlobalParameters.CurrentTemp.ToString().Trim().ToUpper() + i.ToString().ToUpper().Trim(), GlobalParameters.CurrentTemp.ToString().Trim());
                        logoStr += logger.AdapterLogString(1, "realtemprature=" + i.ToString() + GlobalParameters.CurrentTemp.ToString());
                        UInt16 tempratureADC;
                        dut.ReadTempADC(out tempratureADC, (byte)(i + 1));
                        logoStr += logger.AdapterLogString(1, "tempratureADC" + i.ToString() + tempratureADC.ToString());
                        tempratureADCArray.Add(GlobalParameters.CurrentTemp.ToString().Trim().ToUpper() + i.ToString().ToUpper().Trim(), tempratureADC.ToString().Trim());
                    }
                }
                #endregion
                int tempCount = 0;
                tempCount = Math.Min(tempratureADCArray.Count / GlobalParameters.TotalTempCount, realTempratureArray.Count / GlobalParameters.TotalTempCount);
                double[,] tempTempAdcArray   = new double[GlobalParameters.TotalTempCount, tempCount];
                double[,] tempTempValueArray = new double[GlobalParameters.TotalTempCount, tempCount];
                logoStr += logger.AdapterLogString(0, "Step4...Start Fitting Curve");
                if (tempCount >= 2)
                {
                    for (byte i = 0; i < GlobalParameters.TotalTempCount; i++)
                    {
                        int tempcount1 = 0;
                        for (byte j = 0; j < Math.Min(realTempratureArray.Count, tempratureADCArray.Count); j++)
                        {
                            int    tempstr2   = tempratureADCArray.Keys[j].ToUpper().Length;
                            string tempstring = tempratureADCArray.Keys[j].ToUpper().Substring(tempratureADCArray.Keys[j].ToUpper().Length - 1, 1);
                            string iStr       = i.ToString().ToUpper().Trim();
                            if (tempstring == iStr)
                            {
                                tempTempAdcArray[i, tempcount1]   = double.Parse(tempratureADCArray.Values[j]);
                                tempTempValueArray[i, tempcount1] = double.Parse(realTempratureArray.Values[j]);
                                tempcount1++;
                            }
                        }
                    }
                    for (byte i = 0; i < GlobalParameters.TotalTempCount; i++)
                    {
                        for (byte j = 0; j < tempCount; j++)
                        {
                            tempTempValueArray[i, j] = tempTempValueArray[i, j] * 256;
                        }
                    }
                    double[] adcArray  = new double[tempCount];
                    double[] realArray = new double[tempCount];
                    if (calTempDmiStruct.is1Stor2StorPid == 2)
                    {
                        for (byte i = 0; i < GlobalParameters.TotalTempCount; i++)
                        {
                            for (byte j = 0; j < tempCount; j++)
                            {
                                adcArray[j]  = tempTempAdcArray[i, j];
                                realArray[j] = tempTempValueArray[i, j];
                            }
                            double[] coefArray = algorithm.MultiLine(adcArray, realArray, tempCount, 2);
                            tempDmiCoefC = (float)coefArray[0];
                            tempDmiCoefB = (float)coefArray[1];
                            tempDmiCoefA = (float)coefArray[2];

                            tempDmiCoefArray = ArrayList.Adapter(coefArray);
                            tempDmiCoefArray.Reverse();
                            for (byte k = 0; k < tempDmiCoefArray.Count; k++)
                            {
                                logoStr += logger.AdapterLogString(1, "tempDmiCoefArray[" + k.ToString() + "]=" + tempDmiCoefArray[k].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(tempDmiCoefArray[k])));
                            }
                            logoStr += logger.AdapterLogString(0, "Step5...WriteCoef");
                            #region W&R Tempcoefc
                            isWriteCoefCOk = dut.SetTempcoefc(tempDmiCoefC.ToString(), (byte)(i + 1));
                            if (isWriteCoefCOk)
                            {
                                isWriteCoefCOk = true;
                                logoStr       += logger.AdapterLogString(1, "WritetempDmiCoefC:" + isWriteCoefCOk.ToString());
                            }
                            else
                            {
                                isWriteCoefCOk = false;
                                logoStr       += logger.AdapterLogString(3, "WritetempDmiCoefC:" + isWriteCoefCOk.ToString());
                            }
                            #endregion
                            #region W&R Tempcoefb
                            isWriteCoefBOk = dut.SetTempcoefb(tempDmiCoefB.ToString(), (byte)(i + 1));
                            if (isWriteCoefBOk)
                            {
                                isWriteCoefBOk = true;
                                logoStr       += logger.AdapterLogString(1, "WritetempDmiCoefB:" + isWriteCoefBOk.ToString());
                            }
                            else
                            {
                                isWriteCoefBOk = false;
                                logoStr       += logger.AdapterLogString(3, "WritetempDmiCoefB:" + isWriteCoefBOk.ToString());
                            }
                            #endregion
                            #region W&R Tempcoefa
                            //isWriteCoefAOk = dut.SetTempcoefa(tempDmiCoefA.ToString(), i + 1);
                            if (isWriteCoefAOk)
                            {
                                isWriteCoefAOk = true;
                                logoStr       += logger.AdapterLogString(1, "WritetempDmiCoefA:" + isWriteCoefAOk.ToString());
                            }
                            else
                            {
                                isWriteCoefAOk = false;
                                logoStr       += logger.AdapterLogString(3, "WritetempDmiCoefA:" + isWriteCoefAOk.ToString());
                            }
                            #endregion
                            if (isWriteCoefAOk & isWriteCoefBOk & isWriteCoefCOk)
                            {
                                isCalTempDmiOk = true;
                                logoStr       += logger.AdapterLogString(1, "isCalTempDmiOk:" + isCalTempDmiOk.ToString());
                            }
                            else
                            {
                                isCalTempDmiOk = false;
                                logoStr       += logger.AdapterLogString(3, "isCalTempDmiOk:" + isCalTempDmiOk.ToString());
                            }
                        }
                    }
                    else if (calTempDmiStruct.is1Stor2StorPid == 1)
                    {
                        for (byte i = 0; i < GlobalParameters.TotalTempCount; i++)
                        {
                            for (byte j = 0; j < tempCount; j++)
                            {
                                adcArray[j]  = tempTempAdcArray[i, j];
                                realArray[j] = tempTempValueArray[i, j];
                            }
                            double[] coefArray = algorithm.MultiLine(adcArray, realArray, tempCount, 1);
                            tempDmiCoefC = (float)coefArray[0];
                            tempDmiCoefB = (float)coefArray[1];
                            double[] tempCoefArray = new double[2] {
                                tempDmiCoefC, tempDmiCoefB
                            };

                            tempDmiCoefArray = ArrayList.Adapter(tempCoefArray);
                            tempDmiCoefArray.Reverse();
                            for (byte k = 0; k < tempDmiCoefArray.Count; k++)
                            {
                                logoStr += logger.AdapterLogString(1, "tempDmiCoefArray[" + k.ToString() + "]=" + tempDmiCoefArray[k].ToString() + " " + algorithm.ByteArraytoString(2, ",", algorithm.INT16To2Bytes(tempDmiCoefArray[k])));
                            }
                            logoStr += logger.AdapterLogString(0, "Step5...WriteCoef");

                            #region W&R Tempcoefc
                            isWriteCoefCOk = dut.SetTempcoefc(tempDmiCoefC.ToString(), (byte)(i + 1));
                            if (isWriteCoefCOk)
                            {
                                isWriteCoefCOk = true;
                                logoStr       += logger.AdapterLogString(1, "WritetempDmiCoefC:" + isWriteCoefCOk.ToString());
                            }
                            else
                            {
                                isWriteCoefCOk = false;
                                logoStr       += logger.AdapterLogString(3, "WritetempDmiCoefC:" + isWriteCoefCOk.ToString());
                            }
                            #endregion
                            #region W&R Tempcoefb
                            isWriteCoefBOk = dut.SetTempcoefb(tempDmiCoefB.ToString(), (byte)(i + 1));
                            if (isWriteCoefBOk)
                            {
                                isWriteCoefBOk = true;
                                logoStr       += logger.AdapterLogString(1, "WritetempDmiCoefB:" + isWriteCoefBOk.ToString());
                            }
                            else
                            {
                                isWriteCoefBOk = false;
                                logoStr       += logger.AdapterLogString(3, "WritetempDmiCoefB:" + isWriteCoefBOk.ToString());
                            }
                            #endregion
                            if (isWriteCoefBOk & isWriteCoefCOk)
                            {
                                isCalTempDmiOk = true;
                                logoStr       += logger.AdapterLogString(1, "isCalTempDmiOk:" + isCalTempDmiOk.ToString());
                            }
                            else
                            {
                                isCalTempDmiOk = false;
                                logoStr       += logger.AdapterLogString(3, "isCalTempDmiOk:" + isCalTempDmiOk.ToString());
                            }
                        }
                    }
                }
                else
                {
                    logoStr       += logger.AdapterLogString(0, "TempCount<2:");
                    isCalTempDmiOk = true;
                }
            }
            else
            {
                logoStr       += logger.AdapterLogString(4, "Equipments is not enough!");
                isCalTempDmiOk = false;
                logger.FlushLogBuffer();
                return(isCalTempDmiOk);
            }
            AnalysisOutputParameters(outputParameters);
            logger.FlushLogBuffer();
            return(isCalTempDmiOk);
        }
Ejemplo n.º 9
0
 protected override bool StartTest()
 {
     logger.FlushLogBuffer();
     logoStr = "";
     if (AnalysisInputParameters(inputParameters) == false)
     {
         logger.FlushLogBuffer();
         return(false);
     }
     if (PrepareEnvironment(selectedEquipList) == false)
     {
         logger.FlushLogBuffer();
         return(false);
     }
     if (selectedEquipList["SCOPE"] != null && selectedEquipList["DUT"] != null && selectedEquipList["POWERSUPPLY"] != null)
     {
         Powersupply tempps    = (Powersupply)selectedEquipList["POWERSUPPLY"];
         Scope       tempScope = (Scope)selectedEquipList["SCOPE"];
         // open apc
         string apcstring = null;
         dut.APCStatus(out apcstring);
         if (apcstring == "OFF" || apcstring == "FF")
         {
             logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");
             dut.APCON();
             logoStr += logger.AdapterLogString(0, "Power off");
             tempps.Switch(false);
             Thread.Sleep(200);
             logoStr += logger.AdapterLogString(0, "Power on");
             tempps.Switch(true);
             Thread.Sleep(200);
             bool isOpen = dut.APCStatus(out apcstring);
             if (apcstring == "ON")
             {
                 logoStr += logger.AdapterLogString(1, "APC ON");
             }
             else
             {
                 logoStr += logger.AdapterLogString(3, "APC NOT ON");
             }
         }
         // open apc
         logoStr      += logger.AdapterLogString(0, "Step3...Read DCA TxPower");
         txDCAPowerDmi = tempScope.GetAveragePowerdbm();
         logoStr      += logger.AdapterLogString(1, "txDCAPowerDmi:" + txDCAPowerDmi.ToString());
         logoStr      += logger.AdapterLogString(0, "Step4...Read DUT Txpower");
         txPowerDmi    = dut.ReadDmiTxp();
         logoStr      += logger.AdapterLogString(1, "txPowerDmi:" + txPowerDmi.ToString());
         txDmiPowerErr = txPowerDmi - txDCAPowerDmi;
         logoStr      += logger.AdapterLogString(1, "txDmiPowerErr:" + txDmiPowerErr.ToString());
         AnalysisOutputParameters(outputParameters);
         logger.FlushLogBuffer();
         return(true);
     }
     else
     {
         logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
         logger.FlushLogBuffer();
         return(false);
     }
 }
Ejemplo n.º 10
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            if (selectedEquipList["DUT"] != null && selectedEquipList["ATTEN"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                Attennuator tempAtt = (Attennuator)selectedEquipList["ATTEN"];
                Powersupply tempps  = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // close apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "ON" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start close apc");
                    dut.APCOFF();
                    logoStr += logger.AdapterLogString(0, "Power off");

                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isclosed = dut.APCStatus(out apcstring);
                    if (apcstring == "OFF")
                    {
                        logoStr += logger.AdapterLogString(1, "APC OFF");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT OFF");
                    }
                }
                // close apc
                logoStr += logger.AdapterLogString(0, "Step3...Start Adjust LosA");
                if (adjustLosStruct.islosalosdcombin)
                {
                    logoStr += logger.AdapterLogString(1, "Set LosA RxPower:" + adjustLosStruct.LosAInputPower.ToString());
                    tempAtt.AttnValue(adjustLosStruct.LosAInputPower.ToString());
                    isLosA   = LosAEqualLosDAdjust(adjustLosStruct.LosAVoltageStartValue, adjustLosStruct.LosAVoltageTuneStep, adjustLosStruct.LosAVoltageUperLimit, adjustLosStruct.LosAVoltageLowLimit, dut, adjustLosStruct.LosToleranceStep, out targetLosAac);
                    logoStr += logger.AdapterLogString(1, "targetLosADac=" + targetLosDac.ToString());
                    logoStr += logger.AdapterLogString(1, isLosA.ToString());
                }
                else
                {
                    logoStr += logger.AdapterLogString(1, "Set LosA RxPower:" + adjustLosStruct.LosAInputPower.ToString());

                    tempAtt.AttnValue(adjustLosStruct.LosAInputPower.ToString());
                    isLosA   = OneSectionMethodLosAdjust(adjustLosStruct.LosAVoltageStartValue, adjustLosStruct.LosAVoltageTuneStep, adjustLosStruct.LosAVoltageUperLimit, adjustLosStruct.LosAVoltageLowLimit, dut, adjustLosStruct.LosToleranceStep, out targetLosDac);
                    logoStr += logger.AdapterLogString(1, "targetLosADac=" + targetLosDac.ToString());
                    logoStr += logger.AdapterLogString(1, isLosA.ToString());
                    logoStr += logger.AdapterLogString(0, "Step4...Start Adjust LosD");
                    logoStr += logger.AdapterLogString(1, "Set LosD RxPower:" + adjustLosStruct.LosDInputPower.ToString());

                    tempAtt.AttnValue(adjustLosStruct.LosDInputPower.ToString());
                    isLosD = OneSectionMethodLosDAdjust(adjustLosStruct.LosDVoltageStartValue, adjustLosStruct.LosDVoltageTuneStep, adjustLosStruct.LosDVoltageUperLimit, adjustLosStruct.LosDVoltageLowLimit, dut, adjustLosStruct.LosToleranceStep, out targetLosDac);

                    logoStr += logger.AdapterLogString(1, "targetLosDDac=" + targetLosDac.ToString());
                    logoStr += logger.AdapterLogString(1, isLosD.ToString());
                }

                AnalysisOutputParameters(outputParameters);
                if (adjustLosStruct.islosalosdcombin)
                {
                    logger.FlushLogBuffer();
                    return(isLosA);
                }
                else
                {
                    logger.FlushLogBuffer();
                    return(isLosA == true && isLosD == true);
                }
            }
            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }
Ejemplo n.º 11
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            bool   isLosA = false;
            bool   isLosD = true;
            double tempRxPoint;

            tempRxPoint = testRXLosADStruct.LosAMax;
            if (selectedEquipList["DUT"] != null && selectedEquipList["ATTEN"] != null && selectedEquipList["POWERSUPPLY"] != null)
            {
                Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];
                // open apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "OFF" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");
                    dut.APCON();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isOpen = dut.APCStatus(out apcstring);
                    if (apcstring == "ON")
                    {
                        logoStr += logger.AdapterLogString(0, "APC ON");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT ON");
                    }
                }
                // open apc
                Attennuator tempAtten = (Attennuator)selectedEquipList["ATTEN"];
                logoStr += logger.AdapterLogString(0, "Step3...TestLosA");
                if (testRXLosADStruct.isLosDetail)
                {
                    isLosA = LOSADetailTest(tempAtten, tempRxPoint, false);
                }
                else
                {
                    isLosA = LOSAQuickTest(tempAtten, testRXLosADStruct.LosAMin, false);
                }

                if (isLosA == false)
                {
                    logoStr += logger.AdapterLogString(3, "losA=" + isLosA.ToString());
                    return(false);
                }
                tempRxPoint = losA;
                logoStr    += logger.AdapterLogString(1, "losA=" + losA.ToString());
                logoStr    += logger.AdapterLogString(0, "Step5...TestLosD");
                if (testRXLosADStruct.isLosDetail)
                {
                    isLosD = LOSDDetailTest(tempAtten, tempRxPoint, true);
                }
                else
                {
                    isLosD = LOSDQuickTest(tempAtten, testRXLosADStruct.LosDMax, true);
                }

                if (isLosD == false)
                {
                    logoStr += logger.AdapterLogString(3, "losD=" + (!isLosD).ToString());
                    return(false);
                }
                losH     = losD - losA;
                logoStr += logger.AdapterLogString(1, "losD=" + losD.ToString() + "losH=" + losH.ToString());
                AnalysisOutputParameters(outputParameters);
                logger.FlushLogBuffer();
                return((isLosD == true) && (isLosA == true));
            }
            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }
Ejemplo n.º 12
0
        protected override bool StartTest()
        {
            logger.FlushLogBuffer();
            logoStr = "";
            //// 是否要测试需要添加判定

            if (AnalysisInputParameters(inputParameters) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            if (PrepareEnvironment(selectedEquipList) == false)
            {
                logger.FlushLogBuffer();
                return(false);
            }
            if (selectedEquipList["POWERSUPPLY"] != null && selectedEquipList["SCOPE"] != null)
            {
                Powersupply tempps = (Powersupply)selectedEquipList["POWERSUPPLY"];

                // open apc
                string apcstring = null;
                dut.APCStatus(out apcstring);
                if (apcstring == "OFF" || apcstring == "FF")
                {
                    logoStr += logger.AdapterLogString(0, "Step2...Start Open apc");

                    dut.APCON();
                    logoStr += logger.AdapterLogString(0, "Power off");
                    tempps.Switch(false);
                    Thread.Sleep(200);
                    logoStr += logger.AdapterLogString(0, "Power on");
                    tempps.Switch(true);
                    Thread.Sleep(200);
                    bool isOpen = dut.APCStatus(out apcstring);
                    if (apcstring == "ON")
                    {
                        logoStr += logger.AdapterLogString(1, "APC ON");
                    }
                    else
                    {
                        logoStr += logger.AdapterLogString(3, "APC NOT ON");
                    }
                }
                // open apc
                logoStr += logger.AdapterLogString(0, "Step3...StartTestOptical Eye");
                if (testEyeStruct.isOpticalEyeORElecEye)
                {
                    logoStr += logger.AdapterLogString(0, "OpticalEyeTest");
                    OpticalTest();
                }
                else
                {
                    logoStr += logger.AdapterLogString(0, "ElecEyeTest");
                    ElecTest();
                }
                AnalysisOutputParameters(outputParameters);//test
                logger.FlushLogBuffer();
                return(true);
            }
            else
            {
                logoStr += logger.AdapterLogString(4, "Equipments is not enough!");
                logger.FlushLogBuffer();
                return(false);
            }
        }