Пример #1
0
 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() });
                     }
                 }
             }
         }
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
        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;
        }