private void getTRTestItemTable(DataRow[] drs) { foreach (DataRow row in drs) { if (!string.IsNullOrWhiteSpace(row["IndexStr"].ToString())) { string[] strs = row["IndexStr"].ToString().Split(','); TRTestItem trTestItem = TestPlan.ManualConnectionList[Convert.ToInt32(strs[0])].TestStepList[Convert.ToInt32(strs[1])].ItemList[Convert.ToInt32(strs[2])] as TRTestItem; if (trTestItem != null) { for (int i = 0; i < trTestItem.Data.GetLength(0); i++) { for (int j = 0; j < trTestItem.Data.GetLength(1); j++) { int att = trTestItem.StateList[i].Att; int phase = trTestItem.StateList[i].Phase; string freq = (new FreqStringConverter()).Convert(trTestItem.FreqList[j], null, null, null).ToString(); string value = trTestItem.Data[i, j].ToDigits(GeneTestSetup.Instance.DataDisplayDigits); dt.Rows.Add(new object[] { row["类型名"].ToString(), row["门限类型"].ToString(), row["测试项名称"].ToString(), row["端口"].ToString(), row["测试条件(XDesc)"].ToString(), row["门限描述"].ToString(), att, phase, freq, value, row["PassFail"].ToString() }); } } } } } }
private DataTable TRTableConvert(DataTable dt) { string where = "全选='{0}'"; DataRow[] drs = vm.TestResultTable.Select(string.Format(where, true)); DataTable dtResult = ToDataTable(drs); List <string> AllDynamicColumn = new List <string>(); DataTable dtResultCopy = dtResult.Clone(); dtResultCopy.Columns.Add("Att"); dtResultCopy.Columns.Add("Phase"); foreach (DataRow dr in dt.DefaultView.ToTable(true, "freq").Rows) { if (dr["freq"] != null && !string.IsNullOrWhiteSpace(dr["freq"].ToString())) { dtResultCopy.Columns.Add((new FreqStringConverter()).Convert(dr["freq"].ToString(), null, null, null).ToString()); } } foreach (DataRow row in dtResult.Rows) { string[] strs = row["IndexStr"].ToString().Split(','); if (!string.IsNullOrWhiteSpace(row["IndexStr"].ToString())) { TRTestItem trTestItem = TestPlan.ManualConnectionList[Convert.ToInt32(strs[0])].TestStepList[Convert.ToInt32(strs[1])].ItemList[Convert.ToInt32(strs[2])] as TRTestItem; if (trTestItem != null) { for (int i = 0; i < trTestItem.Data.GetLength(0); i++) { DataRow datarow = dtResultCopy.NewRow(); int att = trTestItem.StateList[i].Att; int phase = trTestItem.StateList[i].Phase; for (int j = 0; j < trTestItem.Data.GetLength(1); j++) { string freq = (new FreqStringConverter()).Convert(trTestItem.FreqList[j], null, null, null).ToString(); string value = trTestItem.Data[i, j].ToDigits(GeneTestSetup.Instance.DataDisplayDigits); datarow[freq] = value; } datarow["SN"] = row["SN"]; datarow["类型名"] = row["类型名"]; datarow["门限类型"] = row["门限类型"]; datarow["测试项名称"] = row["测试项名称"]; datarow["端口"] = row["端口"]; datarow["测试条件(XDesc)"] = row["测试条件(XDesc)"]; datarow["门限描述"] = row["门限描述"]; datarow["PassFail"] = row["PassFail"]; datarow["Att"] = att; datarow["Phase"] = phase; dtResultCopy.Rows.Add(datarow); } } } } dtResultCopy.Columns.Remove("X"); dtResultCopy.Columns.Remove("IndexStr"); dtResultCopy.Columns.Remove("测试数据"); dtResultCopy.Columns.Remove("全选"); return(dtResultCopy); }
private void updateResultData(int stepIndex) { TestStep step = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].TestStepList[stepIndex]; if (step is LoopTestStep) { return; } for (int i = 0; i < step.ItemList.Count(); i++) { var item = step.ItemList[i]; string sn = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].SN; if (item is TestTrace) { TestTrace trace = item as TestTrace; if (trace.ResultData.Count() == 0) { continue; } double ymaxValue = trace.ResultData.Select(x => x.Y).Max(); double yminValue = trace.ResultData.Select(x => x.Y).Min(); double maxValue = Convert.ToDouble(ymaxValue.ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); double minValue = Convert.ToDouble(yminValue.ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); string xmaxValue = (new FreqStringConverter()).Convert(trace.ResultData.Find(x => x.Y == ymaxValue).X, null, null, null).ToString(); string xminValue = (new FreqStringConverter()).Convert(trace.ResultData.Find(x => x.Y == yminValue).X, null, null, null).ToString(); string tracePassFail = trace.PassFail == false ? "Fail" : "Pass"; for (int j = 0; j < TestPlan.TestSpecs.Count(); j++) { vm.TestResultTable.Rows.Add(new object[] { false, TestPlan.currentConnIndex + "," + stepIndex + "," + i, sn, trace.TypeName, TestPlan.TestSpecs[j].SpecName, trace.UserDefName, trace.TestConfigDesciption, trace.XDescription, trace.TestSpecList[j].LimitDescription, xmaxValue + "," + xminValue, maxValue + "," + minValue, tracePassFail }); foreach (XYTestMarker marker in trace.TestSpecList[j].TestMarkerList) { string markerPassFail = marker.PassFail == false ? "Fail" : "Pass"; double valueY = Convert.ToDouble(marker.MarkerResult[0].Y.ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); string valueX = (new FreqStringConverter()).Convert(marker.MarkerResult[0].X, null, null, null).ToString(); vm.TestResultTable.Rows.Add(new object[] { false, "", sn, "Marker", TestPlan.TestSpecs[j].SpecName, marker.UserDefName, marker.TestConfigDesciption, marker.XDescription, trace.TestSpecList[j].LimitDescription, valueX, valueY, markerPassFail }); } } } else if (item is PointTestItem) { PointTestItem pointItem = item as PointTestItem; double valueY = Convert.ToDouble(pointItem.Y.ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); string valueX = (new FreqStringConverter()).Convert(pointItem.X, null, null, null).ToString(); string pointItemPassFail = pointItem.PassFail == false ? "Fail" : "Pass"; for (int j = 0; j < TestPlan.TestSpecs.Count(); j++) { vm.TestResultTable.Rows.Add(new object[] { false, "", sn, pointItem.TypeName, TestPlan.TestSpecs[j].SpecName, pointItem.UserDefName, pointItem.TestConfigDesciption, pointItem.XDescription, pointItem.TestSpecList[j].LimitDescription, valueX, valueY, pointItemPassFail }); } } else if (item is TRTestItem) { TRTestItem trTestItem = item as TRTestItem; if (trTestItem.Data == null) { return; } if (trTestItem.FreqList == null || trTestItem.FreqList.Count() == 0) { return; } if (trTestItem.StateList == null || trTestItem.StateList.Count() == 0) { return; } double?maxValue; double?minValue; int maxRowIndex; int maxColumnIndex; int minRowIndex; int minColumnIndex; GeneFun.GetArrayMax(out maxRowIndex, out maxColumnIndex, out maxValue, trTestItem.Data); GeneFun.GetArrayMin(out minRowIndex, out minColumnIndex, out minValue, trTestItem.Data); maxValue = Convert.ToDouble(Convert.ToDouble(maxValue).ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); minValue = Convert.ToDouble(Convert.ToDouble(minValue).ToDigits(GeneTestSetup.Instance.DataDisplayDigits)); int maxAtt = trTestItem.StateList[maxRowIndex].Att; int maxPhase = trTestItem.StateList[maxRowIndex].Phase; double maxFreq = trTestItem.FreqList[maxColumnIndex]; int minAtt = trTestItem.StateList[minRowIndex].Att; int minPhase = trTestItem.StateList[minRowIndex].Phase; double minFreq = trTestItem.FreqList[minColumnIndex]; for (int j = 0; j < TestPlan.TestSpecs.Count(); j++) { string maxValueStr = "最大值:att =" + maxAtt + "phase = " + maxPhase + "freq = " + maxFreq; string minValueStr = "最小值:att =" + minAtt + "phase = " + minPhase + "freq = " + minFreq; string trTestItemPassFail = trTestItem.TestSpecList[j].PassFail == false ? "Fail" : "Pass"; vm.TestResultTable.Rows.Add(new object[] { false, TestPlan.currentConnIndex + "," + stepIndex + "," + i, sn, trTestItem.TypeName, TestPlan.TestSpecs[j].SpecName, trTestItem.UserDefName, trTestItem.TestConfigDesciption, trTestItem.XDescription, trTestItem.TestSpecList[j].LimitDescription, maxValueStr + "\r\n" + minValueStr, maxValue + "," + minValue, trTestItemPassFail }); } } } this.Dispatcher.Invoke(new Action(() => { bindGridControl(); })); }
public void OnTestStepRunCompleted(int stepIndex) { TestStep step = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].TestStepList[stepIndex]; if (step is LoopTestStep) { return; } for (int k = 0; k < step.ItemList.Count; k++) { if (step.ItemList[k] as TestTrace != null) { TestTrace tc = step.ItemList[k] as TestTrace; for (int j = 0; j < tc.TestSpecList.Count; j++) { TestTraceSpec tp = tc.TestSpecList[j]; for (int p = 0; p < tp.TestMarkerList.Count; p++) { TestMarker tm = tp.TestMarkerList[p]; if (tm as XYTestMarker != null) { XYTestMarker xyM = tm as XYTestMarker; foreach (XYData xyData in xyM.MarkerResult) { if (vm.XYMarkerDisplist.Count <= j) { ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>(); vm.XYMarkerDisplist.Add(XYMarkerDisps); } if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).Count() == 0) { vm.XYMarkerDisplist[j].Add(new XYMarkerDisp() { ConnIndex = TestPlan.currentConnIndex, StepIndex = stepIndex, TraceIndex = k, MarkerIndex = p, PortName = xyM.TestConfigDesciption, UserDefName = xyM.UserDefName, Freq = xyData.X, TestResult = xyData.Y, PassFail = xyM.PassFail, LimitDescription = xyM.LimitDescription, XDescription = xyM.XDescription }); } else { var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).First(); item.Freq = xyData.X; item.TestResult = xyData.Y; item.PassFail = xyM.PassFail; } } } } } } else if (step.ItemList[k] as TRTestItem != null) { TRTestItem tt = step.ItemList[k] as TRTestItem; for (int j = 0; j < tt.TestSpecList.Count; j++) { TRTestItemSpec tp = tt.TestSpecList[j]; for (int p = 0; p < tp.TestMarkerList.Count; p++) { TestMarker tm = tp.TestMarkerList[p]; if (tm as XYTestMarker != null) { XYTestMarker xyM = tm as XYTestMarker; foreach (XYData xyData in xyM.MarkerResult) { if (vm.XYMarkerDisplist.Count <= j) { ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>(); vm.XYMarkerDisplist.Add(XYMarkerDisps); } if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).Count() == 0) { vm.XYMarkerDisplist[j].Add(new XYMarkerDisp() { ConnIndex = TestPlan.currentConnIndex, StepIndex = stepIndex, TraceIndex = k, MarkerIndex = p, PortName = xyM.TestConfigDesciption, UserDefName = xyM.UserDefName, Freq = xyData.X, TestResult = xyData.Y, PassFail = xyM.PassFail, LimitDescription = xyM.LimitDescription, XDescription = xyM.XDescription }); } else { var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).First(); item.Freq = xyData.X; item.TestResult = xyData.Y; item.PassFail = xyM.PassFail; } } } } } } else if (step.ItemList[k] is PointTestItem) { PointTestItem pTestItem = step.ItemList[k] as PointTestItem; for (int j = 0; j < pTestItem.TestSpecList.Count; j++) { if (vm.XYMarkerDisplist.Count <= j) { ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>(); vm.XYMarkerDisplist.Add(XYMarkerDisps); } if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == 0).Count() == 0) { vm.XYMarkerDisplist[j].Add(new XYMarkerDisp() { ConnIndex = TestPlan.currentConnIndex, StepIndex = stepIndex, TraceIndex = k, MarkerIndex = 0, PortName = pTestItem.TestConfigDesciption, UserDefName = pTestItem.UserDefName, Freq = pTestItem.X, TestResult = pTestItem.Y, PassFail = pTestItem.PassFail, LimitDescription = pTestItem.TestSpecList[j].LimitDescription, XDescription = pTestItem.XDescription }); } else { var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == 0).First(); item.Freq = pTestItem.X; item.TestResult = pTestItem.Y; item.PassFail = pTestItem.PassFail; } } } else if (step.ItemList[k] is BoolTestItem) { BoolTestItem bTestItem = step.ItemList[k] as BoolTestItem; int resultData = bTestItem.ResultData == true ? 1 : 0; vm.XYMarkerDisplist[0].Add(new XYMarkerDisp() { TestResult = Convert.ToDouble(resultData), UserDefName = bTestItem.UserDefName }); } } this.Dispatcher.Invoke(new Action(() => { gridControl.ItemsSource = vm.XYMarkerDisplist[0]; })); // gridControl.ItemsSource = vm.XYMarkerDisplist; }