Example #1
0
        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);
            }
        }
Example #2
0
        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 号码未获得~~~~");
            }
        }