Esempio n. 1
0
        /// <summary>
        /// 下一个测试温度设置及测试完成的数据保存
        /// </summary>
        private void btnNext_Click(object sender, EventArgs e)
        {
            TestData.Test_end_time = DateTime.Now.ToLongTimeString();

            //添加一条测试数据到TestDataCommon
            TestDataCommon.Pf = true & TestData.Pf;
            TestDataCommon.lstTestData.Add(TestData);

            //保存上一次的眼图图片
            SaveEyeImage();
            //当前测试结果为fail,且Test plan设置fail后不继续测试,则disable 眼图仪操作按钮,同时将TEC设置回常温
            if (TestData.Pf == false && lstTecTempNote[TecTempIndex].ToUpper().Contains("FALSE") && TecTempIndex != TECTempCount - 1)
            {
                strMsg = $"{lstTecTemp[TecTempIndex]}℃下测试Fail,根据TestPlan的设置,余下的温度无需测试!";
                ShowMsg(strMsg, true);
                MessageBox.Show(strMsg, "Caution", MessageBoxButtons.OK, MessageBoxIcon.Information);
                FinishedTest();
                return;
            }
            TecTempIndex++;
            if (TecTempIndex >= TECTempCount)
            {
                FinishedTest();
            }
            else
            {
                TC720.WriteTemperature(Channel.CH1, lstTecTemp[TecTempIndex]);
                TickCountTotal = 0;

                TecTimer.Start();
                ShowMsg($"将TEC的温度设置为{lstTecTemp[TecTempIndex]}", true);
            }
            this.btnNext.Enabled = false;
        }
Esempio n. 2
0
 private void btnRestTemp_Click(object sender, EventArgs e)
 {
     if (lstTecTemp != null)
     {
         TecTempIndex = 0;
         TC720.WriteTemperature(Channel.CH1, lstTecTemp[TecTempIndex]);//测试完成,将TEC设置回常温
         TickCountTotal = 0;
         TecTimer.Start();
         ShowMsg($"环境温度重置为{lstTecTemp[TecTempIndex]}...", true);
     }
     else
     {
         ShowMsg("请先选择PN!", false);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 测试结束的操作,环境温度设回常温,保存测试数据到数据库
        /// </summary>
        private void FinishedTest()
        {
            try
            {
                TecTempIndex = 0;
                TC720.WriteTemperature(Channel.CH1, lstTecTemp[TecTempIndex]);//测试完成,将TEC设置回常温
                TickCountTotal = 0;
                TecTimer.Start();
                ShowMsg($"当前产品测试已完成,环境温度设回{lstTecTemp[TecTempIndex]}...", true);

                //保存数据
                if (DialogResult.Yes == MessageBox.Show("测试已完成,是否需要保存数据到数据库?", "保存数据", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
                {
                    ShowMsg("保存数据到数据库...", true);
                    db.SaveTestData(TestDataCommon);
                    //MES 数据上传
                    SaveMesData();
                    ShowMsg("数据上传完成!", true);
                }
                //TOSA 断电
                if (!DP832A.SetOutput(DP832A.CHANNEL.CH2, false))
                {
                    ShowMsg(string.Format("关闭通道{0}失败", DP832A.CHANNEL.CH2.ToString()), false);
                }
                var task = new Task(() =>
                {
                    while (!TemperatureIsTimeOut)
                    {
                        if (TemperatureIsOk)
                        {
                            strMsg = $"测试完成,温度已经设置到{lstTecTemp[TecTempIndex]},请装卸产品!";
                            ShowMsg(strMsg, true);
                            MessageBox.Show(strMsg, "测试完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            break;
                        }
                    }
                    if (TemperatureIsTimeOut)
                    {
                        ShowMsg("温度未正常设置回常温,装卸产品请注意!", false);
                    }
                });
                task.Start();
            }
            catch (Exception ex)
            {
                ShowMsg(ex.Message, false);
            }
        }
Esempio n. 4
0
 private void TECTimer_Tick(object sender, EventArgs e)
 {
     TickCountTotal++;
     if (RealTimeTemperature >= lstTecTemp[TecTempIndex] - TC720.TempSpan && RealTimeTemperature <= lstTecTemp[TecTempIndex] + TC720.TempSpan)
     {
         if (++TickCount > TC720.StablizaitonTime)
         {
             TemperatureIsOk = true;
             TickCount       = TC720.StablizaitonTime + 1; //防止一直加
         }
         else
         {
             TemperatureIsOk = false;
         }
     }
     else
     {
         TickCount            = 0;
         TemperatureIsOk      = false;
         TemperatureIsTimeOut = false;
         if (TickCountTotal > TC720.TimeOut)
         {
             TecTimer.Stop();
             TemperatureIsTimeOut = true;
             if (DialogResult.Yes == MessageBox.Show($"温度设置已经超过{TC720.TimeOut}s,还未达到设定温度{lstTecTemp[TecTempIndex]},是否继续测试?", "控温超时", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
             {
                 TemperatureIsOk = true;
                 ShowMsg($"温度设置未达到设定值{TC720.TimeOut}℃,但可以继续进行测试!", true);
             }
             else
             {
                 TickCountTotal = 0;
                 ShowMsg($"温度设置未达到设定值{TC720.TimeOut}℃,不可以继续进行测试!", false);
             }
         }
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Set devices according to test plan file
        /// </summary>
        /// <param name="pn"> product name,also is sheet name in excel</param>
        private void ReadTestPlan(string pn)
        {
            lstTecTemp     = new List <double>();
            lstTecTempNote = new List <string>();
            strMsg         = "正在获取test plan 的内容,并根据其内容进行初始设置,请稍等...";
            ShowMsg(strMsg, true);

            var task1 = new Task(() =>
            {
                string TestPlanFile        = $"{ Directory.GetCurrentDirectory()}\\config\\PAM4 TOSA TEST PLAN.xlsx";
                Excel.Application excelApp = new Excel.Application
                {
                    Visible = false
                };
                Excel.Workbook workbook   = excelApp.Workbooks.Open(TestPlanFile);
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets.get_Item(pn);
                Excel.Range excelCell     = worksheet.UsedRange;
                try
                {
                    //Bert paras
                    TestDataCommon.Ppg_data_rate = excelCell[4, 2].value;
                    TestDataCommon.Ppg_channel   = Convert.ToInt32(excelCell[5, 2].value);
                    TestDataCommon.Ppg_pattern   = Convert.ToString(excelCell[6, 2].value);
                    TestDataCommon.Pre_cursor    = excelCell[7, 2].value;
                    TestDataCommon.Main_cursor   = excelCell[8, 2].value;
                    TestDataCommon.Post_cursor   = excelCell[9, 2].value;
                    TestDataCommon.Inner_1       = excelCell[10, 2].value;
                    TestDataCommon.Inner_2       = excelCell[11, 2].value;
                    //DP832A paras
                    TestDataCommon.Vcc1 = excelCell[14, 2].value;
                    TestDataCommon.Vcc2 = excelCell[15, 2].value;
                    //Driver Board paras
                    TestDataCommon.TxTEC  = Convert.ToUInt16(excelCell[18, 2].value);
                    TestDataCommon.TxVB   = Convert.ToUInt16(excelCell[19, 2].value);
                    TestDataCommon.TxVEA  = Convert.ToUInt16(excelCell[20, 2].value);
                    TestDataCommon.TxVG   = Convert.ToUInt16(excelCell[21, 2].value);
                    TestDataCommon.LDBias = Convert.ToUInt16(excelCell[22, 2].value);
                    //N1092 paras
                    kesight_N1902D.Channel           = Convert.ToString(excelCell[25, 2].value);
                    kesight_N1902D.Filter_rate       = Convert.ToString(excelCell[26, 2].value);
                    kesight_N1902D.Channel_bandWidth = Convert.ToString(excelCell[27, 2].value);
                    kesight_N1902D.DCA_Offset        = excelCell[28, 2].value;
                    //Tec Paras
                    lstTecTemp.Add(excelCell[31, 2].value);
                    lstTecTemp.Add(excelCell[32, 2].value);
                    lstTecTemp.Add(excelCell[33, 2].value);
                    lstTecTempNote.Add(Convert.ToString(excelCell[31, 3].value));
                    lstTecTempNote.Add(Convert.ToString(excelCell[32, 3].value));
                    lstTecTempNote.Add(Convert.ToString(excelCell[33, 3].value));
                    TC720.TempSpan         = excelCell[34, 2].value;
                    TC720.StablizaitonTime = Convert.ToInt32(excelCell[35, 2].value);
                    TC720.TimeOut          = Convert.ToInt32(excelCell[36, 2].value);
                    TECTempCount           = lstTecTemp.Count;
                }
                catch (Exception ex)
                {
                    ShowMsg($"读取Test plan 出错,{ex.Message}", false);
                    return;
                }
                finally
                {
                    workbook.Close();
                    excelApp.Quit();
                    IntPtr t = new IntPtr(excelApp.Hwnd);
                    int kill = 0;
                    GetWindowThreadProcessId(t, out kill);
                    System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(kill);
                    p.Kill();
                }
            });

            task1.Start();
            task1.Wait();
            //TEC 的初始设置
            try
            {
                TecTempIndex = 0;
                TC720.WriteTemperature(0, lstTecTemp[TecTempIndex]);
                ShowMsg($"将TEC的温度设置为{lstTecTemp[TecTempIndex]}", true);
                TickCountTotal = 0;
                TecTimer.Start();
            }
            catch (Exception ex)
            {
                ShowMsg($"根据test plan对TEC进行初始设置时出错,{ex.Message}", false);
                return;
            }
            //Bert的初始设置
            try
            {
                BertChannel = TestDataCommon.Ppg_channel - 1;

                Inst_PAM4_Bert.setTimebase(TestDataCommon.Ppg_data_rate);                  // set rate

                Inst_PAM4_Bert.ppgOutputControl(BertChannel, true);                        //Enable PPG CH1
                Inst_PAM4_Bert.setPPGSignalType(BertChannel, "PAM");                       //Set PPG signal as PAM for CH1
                Inst_PAM4_Bert.setPPGpatternType(BertChannel, "PBRS");                     //设置patternType 为[PRBS| SSPRQ |JP03A|JP03B|SQWV|LINEAR|FIXED|CJT

                Inst_PAM4_Bert.setPPGPRBSpattern(BertChannel, TestDataCommon.Ppg_pattern); //
                Inst_PAM4_Bert.setPpgprbsMode(BertChannel, "COMBINE");                     //设置信号发生器PRBS 为combine或者MSB LSB模式
                Inst_PAM4_Bert.setPretap(BertChannel, TestDataCommon.Pre_cursor);
                this.TrackBarPre_Cursor.ValueChanged -= this.TrackBarPre_Cursor_ValueChanged;
                this.TrackBarPre_Cursor.Value         = Convert.ToInt32(TestDataCommon.Pre_cursor);
                this.lblPre_Cursor.Text = TestDataCommon.Pre_cursor.ToString();
                this.txtPre_Cursor.Text = TestDataCommon.Pre_cursor.ToString();
                this.TrackBarPre_Cursor.ValueChanged += this.TrackBarPre_Cursor_ValueChanged;


                Inst_PAM4_Bert.setMaintap(BertChannel, TestDataCommon.Main_cursor);
                this.TrackBarMain_Cursor.ValueChanged -= this.TrackBarMain_Cursor_ValueChanged;
                this.TrackBarMain_Cursor.Value         = Convert.ToInt32(TestDataCommon.Main_cursor);
                this.lblMain_Cursor.Text = TestDataCommon.Main_cursor.ToString();
                this.txtMain_Cursor.Text = TestDataCommon.Main_cursor.ToString();
                this.TrackBarMain_Cursor.ValueChanged += this.TrackBarMain_Cursor_ValueChanged;

                Inst_PAM4_Bert.setPosttap(BertChannel, TestDataCommon.Post_cursor);
                this.TrackBarPost_Cursor.ValueChanged -= this.TrackBarPost_Cursor_ValueChanged;
                this.TrackBarPost_Cursor.Value         = Convert.ToInt32(TestDataCommon.Post_cursor);
                this.lblPost_Cursor.Text = TestDataCommon.Post_cursor.ToString();
                this.txtPost_Cursor.Text = TestDataCommon.Post_cursor.ToString();
                this.TrackBarPost_Cursor.ValueChanged += this.TrackBarPost_Cursor_ValueChanged;

                Inst_PAM4_Bert.setInner1(BertChannel, TestDataCommon.Inner_1);
                this.TrackBarInner_1.ValueChanged -= this.TrackBarInner_1_ValueChanged;
                this.TrackBarInner_1.Value         = Convert.ToInt32(TestDataCommon.Inner_1);
                this.lblInner_1.Text = TestDataCommon.Inner_1.ToString();
                this.txtInner_1.Text = TestDataCommon.Inner_1.ToString();
                this.TrackBarInner_1.ValueChanged += this.TrackBarInner_1_ValueChanged;

                Inst_PAM4_Bert.setInner2(BertChannel, TestDataCommon.Inner_2);
                this.TrackBarInner_2.ValueChanged -= this.TrackBarInner_2_ValueChanged;
                this.TrackBarInner_2.Value         = Convert.ToInt32(TestDataCommon.Inner_2);
                this.lblInner_2.Text = TestDataCommon.Inner_2.ToString();
                this.txtInner_2.Text = TestDataCommon.Inner_2.ToString();
                this.TrackBarInner_2.ValueChanged += this.TrackBarInner_2_ValueChanged;
            }
            catch (Exception ex)
            {
                ShowMsg($"根据test plan对Bert进行初始设置时出错,{ex.Message}", false);
                return;
            }

            //DP832A的初始设置
            try
            {
                if (!DP832A.SetOutput(DP832A.CHANNEL.CH1, true))
                {
                    ShowMsg(string.Format("打开通道{0}失败", DP832A.CHANNEL.CH1.ToString()), false);
                }
                DP832A.SetVoltLevel(DP832A.CHANNEL.CH1, TestDataCommon.Vcc1);

                if (!DP832A.SetOutput(DP832A.CHANNEL.CH2, true))
                {
                    ShowMsg(string.Format("打开通道{0}失败", DP832A.CHANNEL.CH2.ToString()), false);
                }
                DP832A.SetVoltLevel(DP832A.CHANNEL.CH2, TestDataCommon.Vcc2);
            }
            catch (Exception ex)
            {
                ShowMsg($"根据test plan对DP832进行初始设置时出错,{ex.Message}", false);
                //  return;
            }
            //Driver Board AAB的初始设置
            try
            {
                AAB = new AAB();

                AAB.SetTxTEC(TestDataCommon.TxTEC);
                this.txtTxTEC.Text = TestDataCommon.TxTEC.ToString();
                AAB.SetTxVB(TestDataCommon.TxVB);
                this.txtTxVB.Text = TestDataCommon.TxVB.ToString();
                AAB.SetTxVEA(TestDataCommon.TxVEA);
                this.txtTxVEA.Text = TestDataCommon.TxVEA.ToString();
                AAB.SetTxVG(TestDataCommon.TxVG);
                this.txtTxVG.Text = TestDataCommon.TxVG.ToString();
                AAB.SetLDiBias(TestDataCommon.LDBias);
                this.txtLDiBias.Text = TestDataCommon.LDBias.ToString();
            }
            catch (Exception ex)
            {
                ShowMsg($"根据test plan对AAB进行初始设置时出错,{ex.Message}", false);
                return;
            }
            //N1092A 的初始设置
            try
            {
                kesight_N1902D.SetN1092();
            }
            catch (Exception ex)
            {
                ShowMsg($"根据test plan对N1092A进行初始设置时出错,{ex.Message}", false);
            }
        }