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