public bool StartTest() { dtCurrentTestModelTestData.Clear(); dtCurrentConditionResultData.Clear(); dtCurrentTestModelList.Clear(); dtCurrentTestModeParameterlList.Clear(); //----------------------------------- //pEnvironmentcontroll.Clear(); //MyTestModelManage.Clear(); pGlobalParameters.VccOffset = Vccoffset; pGlobalParameters.Iccoffset = Iccoffset; pGlobalParameters.TotalTempCount = TotalTempCount; pGlobalParameters.TotalVccCount = TotalVccCount; TotalTestData.Clear(); if (TotalTestData.Columns.Count == 0) { TotalTestData.Columns.Add("Temp"); TotalTestData.Columns.Add("Vcc"); TotalTestData.Columns.Add("Channel"); TotalTestData.Columns.Add("ItemName"); TotalTestData.Columns.Add("Value"); TotalTestData.Columns.Add("DefaultUpperLimit"); TotalTestData.Columns.Add("DefaultLowLimit"); TotalTestData.Columns.Add("ItemSpecific"); TotalTestData.Columns.Add("LogRecord"); //Failbreak;DataRecord TotalTestData.Columns.Add("Failbreak"); TotalTestData.Columns.Add("DataRecord"); TotalTestData.Columns.Add("Result"); } prosess = 0; StopFlag = false; MyTestModelManage.SetDutObject(pDut, MyLogManager); QueueShow.Enqueue("Start Testing........"); buildConditionList(); // MyTestModelList = new TestModelList(); MyTestModelList.Clear(); try { #region Condition 遍历Conditions for (int ConditionSEQ = 0; ConditionSEQ < DtMyConditionDataTable.Rows.Count; ConditionSEQ++)//遍历测试环境条件 { CurrentConditionResultflag = true; dtCurrentConditionResultData.Clear(); dtCurrentTestModelList.Clear(); dtCurrentTestModeParameterlList.Clear(); if (dtCurrentConditionResultData.Columns.Count == 0) { for (int i = 0; i < TotalTestData.Columns.Count; i++)// Add Colums { dtCurrentConditionResultData.Columns.Add(TotalTestData.Columns[i].ColumnName); } } // DateTime now = DateTime.Now; String StrStartTime = MyDataio.GetCurrTime().ToString("yyyy/MM/dd HH:mm:ss"); drCondition = DtMyConditionDataTable.Rows[ConditionSEQ]; CurrentConditionId = Convert.ToInt32(drCondition["ID"]);// 记录当前ConditionID号码 StrSqlLog = ""; ReadyforReadflag = false; string ss = drCondition["SEQ"].ToString(); CurrentChannel = Convert.ToByte(drCondition["Channel"]); StrCurrentTemp = Convert.ToDouble(drCondition["Temp"]); StrCurrentVcc = Convert.ToDouble(drCondition["Vcc"]); StrCurrentConditionName = drCondition["ItemName"].ToString(); QueueShow.Enqueue("Change Environment....." + "Temp= " + StrCurrentTemp + " ** VCC= " + StrCurrentVcc + " ** Channel=" + CurrentChannel); // if (StrCurrentTemp != "25") goto Error; pEnvironmentcontroll.SelectEquipment(MyEquipList); string StrEnvironmentAuxAttribles = drCondition["AuxAttribles"].ToString(); if (!pEnvironmentcontroll.ConfigEnvironmental(Convert.ToDouble(StrCurrentTemp), Convert.ToDouble(StrCurrentVcc), Convert.ToByte(CurrentChannel), StrEnvironmentAuxAttribles))// 设定当前的环境 以及告诉DUT 当前为通道几 { MessageBox.Show("环境切换的时候出错```"); FlagFlowControllEnd = true; return(false); } QueueInterfaceLog.Enqueue("Temp= " + StrCurrentTemp + " ** VCC= " + StrCurrentVcc + " ** Channel=" + CurrentChannel + "****" + StrCurrentConditionName); // QueueSqlLog.Enqueue( "Temp= " + StrCurrentTemp + " ** VCC= " + StrCurrentVcc + " ** Channel=" + StrCurrentChannel + "****" + StrCurrentConditionName ); StrSqlLog += "Temp= " + StrCurrentTemp + " ** VCC= " + StrCurrentVcc + " ** Channel=" + CurrentChannel + "****" + StrCurrentConditionName + "**"; #region TestModel 运行当前Condition中的所有TestModel string StrTestModelTableName = "TopoTestModel"; string StrTestModelSelectconditions = "select * from " + StrTestModelTableName + " where PID=" + CurrentConditionId + " order by SEQ ASC"; dtCurrentTestModelList = MyDataio.GetDataTable(StrTestModelSelectconditions, StrTestModelTableName); // 获得环境的DataTable for (int TestModelNo = 0; TestModelNo < dtCurrentTestModelList.Rows.Count; TestModelNo++) // 遍历Condition中的TestModel { Thread.Sleep(200); StrInputLog = ""; StrOutputLog = ""; // CurrentConditionResultflag = false; CurrentTestModelResultflag = true; // pWriteTxt.Write("Temp=" + StrCurrentTemp + "**" + "VCC=" + StrCurrentVcc + "**" + "Channel=" + StrCurrentChannel ); MyLogManager.AdapterLogString(1, "Temp=" + StrCurrentTemp + "**" + "VCC=" + StrCurrentVcc + "**" + "Channel=" + CurrentChannel); drTestModel = dtCurrentTestModelList.Rows[TestModelNo]; string CurrentTestModelId = drTestModel["ID"].ToString(); string StrTestModelName = drTestModel["ItemName"].ToString(); MyLogManager.AdapterLogString(1, StrTestModelName + "TestModelID=" + CurrentTestModelId); // pWriteTxt.Write(StrTestModelName + "TestModelID="+CurrentTestModelId); QueueInterfaceLog.Enqueue("Temp=" + StrCurrentTemp + "**" + "VCC=" + StrCurrentVcc + "**" + "Channel=" + CurrentChannel + "**" + StrTestModelName); Thread.Sleep(1000); try { if (!RunTestModel(StrTestModelName, CurrentTestModelId)) { CurrentConditionResultflag = false; } } catch (Exception EE) { CurrentConditionResultflag = false; MyLogManager.AdapterLogString(1, StrTestModelName + EE.Message); } finally { //MyLogManager.AdapterLogString(1, StrTestModelName+"Code Error!"); } } #endregion Error: for (int i = 0; i < dtCurrentConditionResultData.Rows.Count; i++) { DataRow dr = TotalTestData.NewRow(); for (int Colum = 0; Colum < dtCurrentConditionResultData.Columns.Count; Colum++) { dr[dtCurrentConditionResultData.Columns[Colum].ColumnName] = dtCurrentConditionResultData.Rows[i][dtCurrentConditionResultData.Columns[Colum].ColumnName]; } TotalTestData.Rows.Add(dr); if (dtCurrentConditionResultData.Rows[i]["LogRecord"].ToString() == "1") { string s1 = dtCurrentConditionResultData.Rows[i]["ItemName"].ToString() + ":" + dtCurrentConditionResultData.Rows[i]["Value"].ToString(); StrSqlLog += dtCurrentConditionResultData.Rows[i]["ItemName"].ToString() + ":" + dtCurrentConditionResultData.Rows[i]["Value"].ToString() + "\r\n";; } } //now = DateTime.Now; string strEndTime = MyDataio.GetCurrTime().ToString("yyyy/MM/dd HH:mm:ss"); // dtCurrentTestModelTestData //MyDataio.WriterLog(CurrentConditionId,StrSqlLog,SerialNO, StrStartTime, strEndTime, out CurrentLogId); MyDataio.WriterLog(CurrentConditionId, SNID, StrSqlLog, StrStartTime, strEndTime, CurrentChannel, CurrentConditionResultflag, out CurrentLogId); // QueueSqlLog.Enqueue(StrSqlLog); //ReadyforReadflag = true; Thread.Sleep(3000); if (dtCurrentConditionResultData.Rows.Count > 0) { MyDataio.WriteResult(CurrentLogId, dtCurrentConditionResultData); } prosess = (ConditionSEQ + 1) * 100 / DtMyConditionDataTable.Rows.Count; GC.Collect(); } #endregion WriterEndTimeToSNTable(); // MessageBox.Show("FlowControl End"); pEnvironmentcontroll.Dispose(); MyLogManager.AdapterLogString(1, "Test End------------------------"); FlagFlowControllEnd = true; return(true); } catch { WriterEndTimeToSNTable(); // MessageBox.Show("FlowControl End"); pEnvironmentcontroll.Dispose(); MyLogManager.AdapterLogString(1, "Test End------------------------"); FlagFlowControllEnd = true; return(false); } }
private void button_Test_Click(object sender, EventArgs e) { richInterfaceLog.Focus(); labelResult.Text = ""; labelResult.Refresh(); dataGridViewTotalData.DataSource = null; for (int i = 0; i < pflowControl.EquipmenNameArray.Count; i++) { // TestModeEquipmentParameters[] CurrentEquipmentStruct = GetCurrentEquipmentInf(EquipmenNameArray.Values[i].ToString()); string[] List = pflowControl.EquipmenNameArray.Keys[i].ToString().Split('_'); string CurrentEquipmentName = List[0]; string CurrentEquipmentID = List[1]; string CurrentEquipmentType = List[2]; if (pflowControl.EquipmenNameArray.Keys[i].Contains("POWERSUPPLY")) { pflowControl.MyEquipList[pflowControl.EquipmenNameArray.Keys[i].ToString()].Switch(true); } } if (pflowControl.TotalTestData != null) { pflowControl.TotalTestData.Clear(); } TestStartTime = pflowControl.MyDataio.GetCurrTime().ToString("yyyy/MM/dd HH:mm:ss"); textBoxSN.Text = ""; try { textBoxSN.Text = pflowControl.pDut.ReadSn(); } catch { MessageBox.Show("We Cant't Get SN"); } textBoxSN.Refresh(); pflowControl.SerialNO = textBoxSN.Text; if (textBoxSN.Text != "") { if (FlagEquipmentConfigOK) { pflowControl.FlagFlowControllEnd = false; progress.Value = 0; progress.Refresh(); labelShow.Text = " Test Start--------------------------"; labelShow.Refresh(); plogManager.AdapterLogString(1, "A New Record---------------------------"); plogManager.AdapterLogString(1, pflowControl.SerialNO); pflowControl.MyDataio.WriterSN(pflowControl.TestPlanId, pflowControl.SerialNO, out pflowControl.SNID); dataGridViewTotalData.DataSource = pflowControl.TotalTestData; richInterfaceLog.Text = ""; richInterfaceLog.Refresh(); button_Test.BackColor = Color.Yellow; button_Test.Refresh(); TestThread = new Thread(Test); TestThread.Start(); TestThread.Priority = ThreadPriority.Highest; // timer1.Enabled = true; RefreshThread = new Thread(RefreshRichBOX); RefreshThread.Start(); //RefreshThread.Priority = ThreadPriority.Lowest; button_Test.BackColor = Color.White; button_Test.Refresh(); } else { MessageBox.Show("PLS Config Equipment"); } } else { MessageBox.Show("SN 号码未获得~~~~"); } }