public bool BeginTest() { try { Log.SaveLogToTxt("Begin to test..."); Log.SaveLogToTxt("Power on all equipments."); foreach (string key in this.usedEquipments.Keys) { this.usedEquipments[key].OutPutSwitch(true); } Log.SaveLogToTxt("Enable full function for module."); dut.FullFunctionEnable(); Log.SaveLogToTxt("Try to get test condition from server."); testItemsObject = new Dictionary <string, ITest>(); DataTable dataTable_Condition = this.BuildConditionTable(); //create testdata table if (TestPlanParaByPN.ItemName.Contains("TR")) { txoTable = new TxOTable(); rxoTable = new RxOTable(); } else if (TestPlanParaByPN.ItemName.Contains("TX")) { txoTable = new TxOTable(); } else if (TestPlanParaByPN.ItemName.Contains("RX")) { rxoTable = new RxOTable(); } else { Log.SaveLogToTxt("Test plan is not for function test."); } string beginTime = DateTime.Now.ToString(); for (int row = 0; row < dataTable_Condition.Rows.Count; row++)//遍历测试环境条件 { if (txoTable != null) { //create testdata table new row, set the default value for new row, excepte for ID column drOfTxOTable = txoTable.NewRow(); for (int i = 1; i < txoTable.Columns.Count; i++) { drOfTxOTable[i] = Algorithm.MyNaN; } } if (rxoTable != null) { drOfRxOTable = rxoTable.NewRow(); for (int i = 1; i < rxoTable.Columns.Count; i++) { drOfRxOTable[i] = Algorithm.MyNaN; } } DataRow dr = dataTable_Condition.Rows[row]; ConditionParaByTestPlan.SetValue(dr); Log.SaveLogToTxt("Begin to config environment."); Log.SaveLogToTxt("Temp = " + ConditionParaByTestPlan.Temp + " VCC = " + ConditionParaByTestPlan.VCC.ToString("f3") + " Channel = " + ConditionParaByTestPlan.Channel); //myDataIO.WriterLog(ctrlType_Condition, SNID, "", StrStartTime, StrStartTime, Convert.ToSingle(StrCurrentTemp), Convert.ToSingle(StrCurrentVcc), CurrentChannel, false, out CurrentLogId); if (!this.ConfigEnvironment(ConditionParaByTestPlan.Temp, ConditionParaByTestPlan.VCC, ConditionParaByTestPlan.Channel, ConditionParaByTestPlan.TempOffset, ConditionParaByTestPlan.TempWaitingTimes, GlobalParaByPN.OverLoadPoint)) { Log.SaveLogToTxt("Failed to config environment."); return(false); } ConditionParaByTestPlan.LastTemp = ConditionParaByTestPlan.Temp; Log.SaveLogToTxt("Try to get test model list under this condition."); string table = "TopoTestModel"; string expression = "select B.ItemName,A.*,C.* , A.ID AS TestmodelID,c.ItemName as AppType from TopoTestModel A,GlobalAllTestModelList B,GlobalAllAppModelList C where C.ID=B.PID AND A.PID=" + ConditionParaByTestPlan.ID + " and A.IgnoreFlag=0 AND A.GID=B.ID order by SEQ ASC"; DataTable dataTable_TestItems = myDataIO.GetDataTable(expression, table);// 获得TestModelList DataTable dataTable_TestItemsPara = GetCurrentConditionPrameter(dataTable_TestItems); if (ConditionParaByTestPlan.CtrlType == 2) { supply.OutPutSwitch(false); supply.OutPutSwitch(true); dut.FullFunctionEnable(); } for (int i = 0; i < dataTable_TestItems.Rows.Count; i++)// 遍历Condition中的TestModel { DataRow dr_TestItem = dataTable_TestItems.Rows[i]; string ID_TestItem = dr_TestItem["TestmodelID"].ToString(); string name_TestItem = dr_TestItem["ItemName"].ToString(); string type_TestItem = dr_TestItem["AppType"].ToString(); bool isFailedBreak_TestItem = Convert.ToBoolean(dr_TestItem["Failbreak"]); DataRow[] drs = dataTable_TestItemsPara.Select("TestmodelId='" + ID_TestItem + "'"); Dictionary <string, string> inPara_TestItem = new Dictionary <string, string>(); Log.SaveLogToTxt("Try to get test parameter for " + name_TestItem + "."); for (int j = 0; j < drs.Length; j++) { inPara_TestItem.Add(drs[j]["ItemName"].ToString().Trim().ToUpper(), drs[j]["ItemValue"].ToString().Trim().ToUpper()); Log.SaveLogToTxt(drs[j]["ItemName"].ToString() + " " + drs[j]["ItemValue"].ToString()); } Log.SaveLogToTxt("Test " + name_TestItem + "..."); if (!RunTestItem(name_TestItem, ID_TestItem, type_TestItem, inPara_TestItem)) { //bool result_TestItem = false; } GC.Collect(); } if (drOfTxOTable != null) { drOfTxOTable["Family"] = GlobalParaByPN.Family; drOfTxOTable["PartNumber"] = GlobalParaByPN.PN; drOfTxOTable["SerialNumber"] = TestPlanParaByPN.SN; drOfTxOTable["Channel"] = ConditionParaByTestPlan.Channel; drOfTxOTable["Temp"] = ConditionParaByTestPlan.Temp; drOfTxOTable["Station"] = "TXO"; drOfTxOTable["Time"] = beginTime; drOfTxOTable["Status"] = 0; txoTable.Rows.Add(drOfTxOTable); } if (drOfRxOTable != null) { drOfRxOTable["Family"] = GlobalParaByPN.Family; drOfRxOTable["PartNumber"] = GlobalParaByPN.PN; drOfRxOTable["SerialNumber"] = TestPlanParaByPN.SN; drOfRxOTable["Channel"] = ConditionParaByTestPlan.Channel; drOfRxOTable["Temp"] = ConditionParaByTestPlan.Temp; drOfRxOTable["Station"] = "RXO"; drOfRxOTable["Time"] = beginTime; drOfRxOTable["Status"] = 0; rxoTable.Rows.Add(drOfRxOTable); } drOfTxOTable = null; drOfRxOTable = null; } //Save test data to xml file if (txoTable != null) { txoTable.WriteXml("TxOData", FilePath.TxODataXml); } if (rxoTable != null) { rxoTable.WriteXml("RxOData", FilePath.RxODataXml); } txoTable = null; rxoTable = null; foreach (string key in testItemsObject.Keys) { if (!testItemsObject[key].SaveTestData()) { return(false); } } return(true); } catch (Exception ex) { Log.SaveLogToTxt(ex.Message); Log.SaveLogToTxt("Failed to test."); return(false); } }
public bool ReadyForTest(out string dut_SN, out string dut_FW) { dut_SN = ""; dut_FW = ""; string TestStartTime = myDataIO.GetCurrTime().ToString("yyyy/MM/dd HH:mm:ss"); try { supply = null; tempControl = null; attennuator = null; foreach (string key in usedEquipments.Keys) { if (key == "POWERSUPPLY") { supply = (PowerSupply)this.usedEquipments[key]; } if (key == "THERMOCONTROLLER") { tempControl = (Thermocontroller)this.usedEquipments[key]; } if (key == "ATTENNUATOR") { attennuator = (Attennuator)this.usedEquipments[key]; } } // 获得芯片control 地址信息 Log.SaveLogToTxt("Try to get chip control address from server."); string table = "GlobalManufactureChipsetControl"; string expression = "select * from " + table + " where PID= " + GlobalParaByPN.ID + " order by ID"; ChipControlByPN dataTable_ChipControlByPN = new ChipControlByPN(myDataIO.GetDataTable(expression, table)); // 获得芯片初始化赋值信息 Log.SaveLogToTxt("Try to get chip default value from server."); table = "GlobalManufactureChipsetInitialize"; expression = "select * from " + table + " where PID= " + GlobalParaByPN.ID + " order by ID"; ChipDefaultValueByPN dataTable_ChipDefaultValueByPN = new ChipDefaultValueByPN(myDataIO.GetDataTable(expression, table)); // 获得模块配置EEPROM初始化赋值信息 Log.SaveLogToTxt("Try to get EEPROM default value from server."); table = "TopoManufactureConfigInit"; expression = "select * from " + table + " where PID= " + TestPlanParaByPN.ID + " order by ID"; EEPROMDefaultValueByTestPlan dataTable_EEPROMDefaultValueByTestPlan = new EEPROMDefaultValueByTestPlan(myDataIO.GetDataTable(expression, table)); // 获得模块系数表信息 Log.SaveLogToTxt("Try to get module map from server."); table = "GlobalManufactureCoefficients"; expression = "select * from " + table + " where PID= " + GlobalParaByPN.MCoefsID + " order by ID"; DUTCoeffControlByPN dataTable_DUTCoeffControlByPN = new DUTCoeffControlByPN(myDataIO.GetDataTable(expression, table)); dut = myFactory.CreateDUT(GlobalParaByPN.Family); dut.Initial(dataTable_ChipControlByPN, dataTable_ChipDefaultValueByPN, dataTable_EEPROMDefaultValueByTestPlan, dataTable_DUTCoeffControlByPN); Log.SaveLogToTxt("Enable full function of module."); supply.OutPutSwitch(true); if (!dut.FullFunctionEnable()) { Log.SaveLogToTxt("Faield to enable full function of module."); return(false); } //check SN for (int i = 0; i < 3; i++) { dut_SN = dut.ReadSN(); if (Algorithm.CheckSerialNumberFormat(dut_SN)) { Log.SaveLogToTxt("Read module' serial number is " + dut_SN); break; } if (i == 2) { Log.SaveLogToTxt("Failed to read module' serial number."); return(false); } } //check FW for (int i = 0; i < 3; i++) { dut_FW = dut.ReadFW(); if (dut_FW.Length != 4) { Log.SaveLogToTxt("Failed to read module's firmware."); return(false); } if (dut_FW != "0000" && dut_FW != "FFFF") { if (TestPlanParaByPN.IsCheckFW) { if (dut_FW != TestPlanParaByPN.FwVersion) { Log.SaveLogToTxt("Module's firmware does not math."); break; } } break; } } return(true); } catch { Log.SaveLogToTxt("Failed to prepare to test. Please check network."); return(false); } }