Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }