Exemple #1
0
        public static int MeasMode(uint ascanNum, uint ascanPort, DGateType type, MeasMode mode)
        {
            int  error_code;
            int  gateNum = (int)type;
            uint attr    = DaqAttrType.dGate[gateNum].MeasMode;
            uint val     = (uint)mode;

            if (ascanNum < ascanNumMin || ascanNum > ascanNumMax)
            {
                error_code = -1;
                return(error_code);
            }

            if (type < gateTypeMin || type > gateTypeMax)
            {
                error_code = -1;
                return(error_code);
            }

            error_code = DAQ.daqSet(ascanNum, ascanPort, attr, val);
            if (error_code != (int)PDAQ_ERR.GOOD)
            {
                MessageShow.show("Error:Set measurement mode of double gate failed!", "错误:设置门的测量模式失败!");
            }

            return(error_code);
        }
Exemple #2
0
        /**gate measment mode, pls see MeasMode Enum for part of list*/
        public static int MeasMode(uint ascanNum, GateType type, ref MeasMode mode)
        {
            int  error_code;
            int  gateNum = (int)type;
            uint attr    = DaqAttrType.gate[gateNum].MeasMode;
            uint val     = 0;

            if (ascanNum < ascanNumMin || ascanNum > ascanNumMax)
            {
                error_code = -1;
                return(error_code);
            }

            if (type < gateTypeMin || type > gateTypeMax)
            {
                error_code = -1;
                return(error_code);
            }

            error_code = DAQ.daqGet(ascanNum, attr, ref val);
            if (error_code != (int)PDAQ_ERR.GOOD)
            {
                MessageShow.show("Error:Get the Gate measment mode failed!", "错误:获取Gate measment mode失败!");
            }
            mode = (MeasMode)val;
            return(error_code);
        }
Exemple #3
0
        public override void Single()
        {
            foreach (PIMTestTrace tr in ItemList)
            {
                (tr.TestResult as XYTraceResult).ResultData.Clear();
            }

            if (GeneTestSetup.Instance.IsSimulated)
            {
                switch (CalType)
                {
                case PIMCalType.Point:
                    foreach (PIMTestTrace tr in ItemList)
                    {
                        (tr.TestResult as XYTraceResult).ResultData.Clear();
                        if (tr.TypeName == PIMTestTraceType.PIMTrace1)
                        {
                            (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                X = 0, Y = GeneFun.GetRand(-140, -100)
                            });
                        }
                        if (tr.TypeName == PIMTestTraceType.PIMTrace2)
                        {
                            (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                X = 0, Y = GeneFun.GetRand(-140, -100)
                            });
                        }
                    }

                    PIMPower1 = GeneFun.GetRand(42, 44);
                    PIMPower2 = GeneFun.GetRand(42, 44);
                    break;

                case PIMCalType.Sweep:
                    foreach (PIMTestTrace tr in ItemList)
                    {
                        (tr.TestResult as XYTraceResult).ResultData.Clear();
                        if (tr.SweepSource == PIMSweepSourceEnum.F1)
                        {
                            double[] freqList = GeneFun.GenerateIndexedArray(StartFreq1, StopFreq1, points1);
                            foreach (var freq in freqList)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = freq, Y = GeneFun.GetRand(-140, -100)
                                });
                            }
                        }
                        if (tr.SweepSource == PIMSweepSourceEnum.F2)
                        {
                            double[] freqList = GeneFun.GenerateIndexedArray(StartFreq2, StopFreq2, points2);
                            foreach (var freq in freqList)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = freq, Y = GeneFun.GetRand(-140, -100)
                                });
                            }
                        }
                    }

                    PIMPower1 = GeneFun.GetRand(42, 44);
                    PIMPower2 = GeneFun.GetRand(42, 44);
                    break;

                case PIMCalType.TimeDomain:
                    int    num    = PIMOrder / 2;
                    double dblIMF = (((num + 1) * CWFreq1) - (num * CWFreq2));

                    foreach (PIMTestTrace tr in ItemList)
                    {
                        (tr.TestResult as XYTraceResult).ResultData.Clear();
                        if (tr.SweepSource == PIMSweepSourceEnum.F1)
                        {
                            for (int i = 0; i < 50; i++)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = i, Y = GeneFun.GetRand(-140, -100)
                                });
                            }
                        }
                        if (tr.SweepSource == PIMSweepSourceEnum.F2)
                        {
                            for (int i = 0; i < 50; i++)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = i, Y = GeneFun.GetRand(-140, -100)
                                });
                            }
                        }
                    }

                    PIMPower1 = GeneFun.GetRand(42, 44);
                    PIMPower2 = GeneFun.GetRand(42, 44);
                    break;

                default:
                    break;
                }
            }
            else
            {
                //setting to instru
                MeasInfo.InstruInfoList[0].InstruDriver.Reset();

                PIMTester.setFreq(CWFreq1, CWFreq2);

                PIMTester.setPow(CWPOW1, CWPOW2);

                PIMTester.setMeasMode(MeasMode.ToString());

                PIMTester.setUnit(ResultUnit.ToString());

                PIMTester.setIMOrder(PIMOrder);

                PIMTester.setPort(PortName.ToString());

                if (CalType == PIMCalType.Point)
                {
                    int    num    = PIMOrder / 2;
                    double dblIMF = ((num + 1) * CWFreq1) - (num * CWFreq2);

                    PIMTester.setModeStandard(dblIMF);

                    PIMTester.setPowOn(true, true);

                    List <XYData> lstRes = new List <XYData>();

                    double[] strRes = new double[3];
                    if (ResultUnit == ResultUnit.dBm)
                    {
                        strRes = PIMTester.getPointIMPow(0);
                    }
                    else
                    {
                        strRes = PIMTester.getPointIMPow(CWPOW1);
                    }

                    PIMPower1 = strRes[0];
                    PIMPower2 = strRes[1];

                    //XYData xyData = new XYData();
                    ////赋值
                    //xyData.X = dblIMF;
                    //xyData.Y = strRes[2];

                    //lstRes.Add(xyData);

                    //PIMTestResult1 = (XYDataArr)lstRes;

                    foreach (PIMTestTrace tr in ItemList)
                    {
                        if (tr.TypeName == PIMTestTraceType.PIMTrace1)
                        {
                            (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                X = dblIMF, Y = strRes[2]
                            });
                        }
                        if (tr.TypeName == PIMTestTraceType.PIMTrace2)
                        {
                            (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                X = dblIMF, Y = strRes[2]
                            });
                        }
                    }
                }
                else if (CalType == PIMCalType.Sweep)
                {
                    SweepFlag = PIMTester.getSweepFlag();

                    //int number = (PIMOrder / 2);
                    //double dblTestStep1 = TestStepper * (number + 1f);
                    //double dblTestStep2 = TestStepper * number;

                    int intTotalCount1 = (SweepFlag == "F1UP" ? (int)((StopFreq1 - StartFreq1) / TestStepper) : (int)((StopFreq2 - StartFreq2) / TestStepper));
                    int intTotalCount2 = (SweepFlag == "F1UP" ? (int)((StopFreq2 - StartFreq2) / TestStepper) : (int)((StopFreq1 - StartFreq1) / TestStepper));

                    PIMTester.setModeSweepTx(TestStepper, CWFreq1, CWFreq2);
                    PIMTester.setPowOn(true, true);

                    double newData1 = -200;
                    double newData2 = -200;
                    double dblIMF1  = 0;
                    double dblIMF2  = 0;

                    for (int i = 0; i < (intTotalCount1 + intTotalCount2 + 2); i++)
                    {
                        bool bRunState = GetRunState();
                        if (!bRunState)
                        {
                            PIMTester.setPowOn(false, false);

                            foreach (PIMTestTrace tr in ItemList)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Clear();
                            }

                            return;
                        }

                        double dblNowFreq1 = 0;
                        double dblNowFreq2 = 0;

                        int j = 0;
                        if (i <= intTotalCount1)
                        {
                            j = i;

                            dblNowFreq1 = (SweepFlag == "F1UP" ? (StartFreq1 + i * TestStepper) : StartFreq1);
                            dblNowFreq2 = (SweepFlag == "F1UP" ? StopFreq2 : (StopFreq2 - j * TestStepper));
                        }
                        else
                        {
                            j = (i - intTotalCount1 - 1);

                            dblNowFreq1 = (SweepFlag == "F1UP" ? StartFreq1 : (StartFreq1 + i * TestStepper));
                            dblNowFreq2 = (SweepFlag == "F1UP" ? (StopFreq2 - j * TestStepper) : StopFreq2);
                        }

                        PIMTester.setPowATT("CARR1", CWPOW1);
                        PIMTester.setPowATT("CARR2", CWPOW2);

                        double[] strRes = new double[4];
                        if (ResultUnit == ResultUnit.dBm)
                        {
                            strRes = PIMTester.getSweepIMPow(PIMOrder, dblNowFreq1, dblNowFreq2, 0);
                        }
                        else
                        {
                            strRes = PIMTester.getSweepIMPow(PIMOrder, dblNowFreq1, dblNowFreq2, CWPOW1);
                        }

                        PIMPower1 = strRes[0];
                        PIMPower2 = strRes[1];

                        if (i <= intTotalCount1)
                        {
                            if (SweepFlag == "F1UP")
                            {
                                foreach (PIMTestTrace tr in ItemList)
                                {
                                    if (tr.TypeName == PIMTestTraceType.PIMTrace1)
                                    {
                                        (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                            X = strRes[2], Y = strRes[3]
                                        });
                                    }
                                }
                                if (newData1 < strRes[3])
                                {
                                    dblIMF1  = strRes[2];
                                    newData1 = strRes[3];
                                }
                            }
                            else
                            {
                                foreach (PIMTestTrace tr in ItemList)
                                {
                                    if (tr.TypeName == PIMTestTraceType.PIMTrace2)
                                    {
                                        (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                            X = strRes[2], Y = strRes[3]
                                        });
                                    }
                                }
                                if (newData2 < strRes[3])
                                {
                                    dblIMF2  = strRes[2];
                                    newData2 = strRes[3];
                                }
                            }
                        }
                        else
                        {
                            if (SweepFlag == "F1UP")
                            {
                                foreach (PIMTestTrace tr in ItemList)
                                {
                                    if (tr.TypeName == PIMTestTraceType.PIMTrace2)
                                    {
                                        (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                            X = strRes[2], Y = strRes[3]
                                        });
                                    }
                                }
                                if (newData2 < strRes[3])
                                {
                                    dblIMF2  = strRes[2];
                                    newData2 = strRes[3];
                                }
                            }
                            else
                            {
                                foreach (PIMTestTrace tr in ItemList)
                                {
                                    if (tr.TypeName == PIMTestTraceType.PIMTrace1)
                                    {
                                        (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                            X = strRes[2], Y = strRes[3]
                                        });
                                    }
                                }
                                if (newData1 < strRes[3])
                                {
                                    dblIMF1  = strRes[2];
                                    newData1 = strRes[3];
                                }
                            }
                        }
                    }
                }
                else
                {
                    int    num    = PIMOrder / 2;
                    double dblIMF = (((num + 1) * CWFreq1) - (num * CWFreq2));

                    PIMTester.setModeStandard(dblIMF);

                    PIMTester.setPowOn(true, true);

                    List <XYData> lstRes = new List <XYData>();

                    DateTime TimeOld = System.DateTime.Now;

                    int i = 0;
                    while (System.DateTime.Now.Subtract(TimeOld).TotalSeconds < TestTime)
                    {
                        bool bRunState = GetRunState();
                        if (!bRunState)
                        {
                            PIMTester.setPowOn(false, false);
                            return;
                        }

                        PIMTester.setPowATT("CARR1", CWPOW1);
                        PIMTester.setPowATT("CARR2", CWPOW2);

                        double[] strRes = new double[3];
                        if (ResultUnit == ResultUnit.dBm)
                        {
                            strRes = PIMTester.getPointIMPow(0);
                        }
                        else
                        {
                            strRes = PIMTester.getPointIMPow(CWPOW1);
                        }


                        PIMPower1 = strRes[0];
                        PIMPower2 = strRes[1];

                        foreach (PIMTestTrace tr in ItemList)
                        {
                            if (tr.TypeName == PIMTestTraceType.PIMTrace1)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = i, Y = strRes[2]
                                });
                            }
                            if (tr.TypeName == PIMTestTraceType.PIMTrace2)
                            {
                                (tr.TestResult as XYTraceResult).ResultData.Add(new XYData {
                                    X = i, Y = strRes[2]
                                });
                            }
                        }
                        i++;
                    }
                }

                PIMTester.setPowOn(false, false);
            }

            SingleDBTime = DataUtils.StaticInfo.DBTime;
        }