private void button3_Click(object sender, EventArgs e) { int Y_Start = 5; int Y_now = 1; Y_now = Y_Start; OpenFileDialog openOutputData = new OpenFileDialog(); if (openOutputData.ShowDialog() != DialogResult.OK) { return; } output_path = openOutputData.FileName; MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("AC timing"); //設定條件 //送Data for (int i = Y_Start; i < 180 + Y_Start; i++) { Auto_Control.Write_Excel_cell(i, 19, "123"); } Auto_Control.Save_Excel(); Auto_Control.Close_Excel(); }
public int Video_BR_Analysis() { int count; int x_start = 2, y_start = 1; bool temp1 = false, temp2 = false, temp3 = false; List <string> Video_Reslut = new List <string>(); MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("Video mode RAW"); Video_Reslut = Auto_Control.Read_Excel_Column(x_start, y_start); for (count = 0; count < Video_Reslut.Count; count++) { temp1 = temp2; temp2 = temp3; temp3 = (Video_Reslut[count] == "pass") ? false : true; if (temp1 & temp2 & temp3) { Auto_Control.Close_Excel(); return(count - 2); } } Auto_Control.Close_Excel(); return(count); }
private void Auto_Skew_Task() { MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("Skew"); int x_start = 18; int y_start = 3; int x_now = x_start; int y_now = y_start; int ui_step = 100; float ui = 1 / (Test_Condition.bitrate); float ui_step_unit = ui / ui_step; for (int i = 0; i < 4; i++) { for (int j = 0; j < ui_step; j++) { /*設定條件*/ /*送出Data*/ /*取得回傳值*/ /*寫入excel*/ Auto_Control.Write_Excel_cell(y_now, x_now + j, (ui_step_unit * j).ToString()); } y_now++; x_now = x_start; } Auto_Control.Save_Excel(); Auto_Control.Close_Excel(); }
private void Auto_Swing_Task() { MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("HS_Swing"); float[,] swing_item = new float[, ] { { 0.29F, -0.15F }, { 0.14F, 0F }, { 0.59F, 0.07F }, { 0.4F, 0.26F } }; int x_start = 3; int y_start = 19; int x_now = x_start; int y_now = y_start; for (int i = 0; i < swing_item.GetLength(0); i++) { for (float bitrate = 100; bitrate <= Test_Condition.bitrate; bitrate += 50) { //設定PG //送Command //Read back //寫入excel Auto_Control.Write_Excel_cell(y_now, x_now, bitrate.ToString() + swing_item[i, 0].ToString() + swing_item[i, 1].ToString()); y_now++; } y_now = y_start; x_now++; } Auto_Control.Save_Excel(); Auto_Control.Close_Excel(); }
private void Auto_HS_Task() { MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("HS performace"); int x_start = 18, y_start = 5; //驗證報告actiming部分表格的起始點 }
/// <summary> /// 從預設Excel格式取得測試條件 /// </summary> /// <param name="filepath"></param> public void Get_Test_Condition_From_Excel() { MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("outline"); Test_Condition.bitrate = Convert.ToInt32(Auto_Control.Read_Excel_cell(14, 3)); Test_Condition.lane = Convert.ToInt32(Auto_Control.Read_Excel_cell(13, 3)); Test_Condition.hact = Convert.ToInt32(Auto_Control.Read_Excel_cell(7, 3)); Test_Condition.vact = Convert.ToInt32(Auto_Control.Read_Excel_cell(8, 3)); Test_Condition.vsa = Convert.ToInt32(Auto_Control.Read_Excel_cell(9, 3)); Test_Condition.vbp = Convert.ToInt32(Auto_Control.Read_Excel_cell(10, 3)); Test_Condition.vfp = Convert.ToInt32(Auto_Control.Read_Excel_cell(11, 3)); Test_Condition.framerate = Convert.ToInt32(Auto_Control.Read_Excel_cell(12, 3)); Auto_Control.Close_Excel(); }
public void Video_Auto_thread(int start_X) { PGRemoteRPCClient client = new PGRemoteRPCClient(); int rc = client.Connect("", 2799); string errMsg = ""; string statusMsg = ""; byte[] DUTResp = new byte[0]; if (rc < 0) { return; } MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); int excel_X = start_X, excel_Y = 1; Auto_Control.Excel_open(output_path, 2); PG_Setting_Value.lane = Test_Condition.lane; PG_Setting_Value.hsa = Test_Condition.hsa; PG_Setting_Value.hbp = Test_Condition.hbp; PG_Setting_Value.hfp = Test_Condition.hfp; PG_Setting_Value.hact = Test_Condition.hact; PG_Setting_Value.vsa = Test_Condition.vsa; PG_Setting_Value.vbp = Test_Condition.vbp; PG_Setting_Value.vfp = Test_Condition.vfp; PG_Setting_Value.vact = Test_Condition.vact; PG_Setting_Value.framerate = Test_Condition.framerate; PG_Setting_Value.bbp = Test_Condition.bbp; PG_Setting_Value.Calculate_bitrate(); while (PG_Setting_Value.bitrate < Test_Condition.bitrate) { client.PGRemoteCmd(RPCCmds.START_EDIT_CONFIG, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_LP_FREQ, (float)18e+6, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_HS_FREQ, (PG_Setting_Value.bitrate) / 2 + 1, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.END_EDIT_CONFIG, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_HSYNC, PG_Setting_Value.hsa, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_HBPORCH, PG_Setting_Value.hbp, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_HFPORCH, PG_Setting_Value.hfp, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_HACTIVE, PG_Setting_Value.hact, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_VSYNC, PG_Setting_Value.vsa, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_VBPORCH, PG_Setting_Value.vbp, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_VFPORCH, PG_Setting_Value.vfp, ref errMsg, ref statusMsg); client.PGRemoteCmd(RPCCmds.SET_TIMING_VACTIVE, PG_Setting_Value.vact, ref errMsg, ref statusMsg); client.MIPICmd(RPCDefs.PACKED_PIXEL_STREAM_888, 0, false, RPCDefs.DT_HS, 0, 1, 0, 0, Test_Condition.picture_path, null, ref errMsg, ref statusMsg); client.MIPICmd(RPCDefs.BTA, 0, false, RPCDefs.DT_LP, 0, 0, 0, 0, "", null, ref errMsg, ref statusMsg); Thread.Sleep(5000); client.MIPICmd(RPCDefs.BTA, 0, false, RPCDefs.DT_LP, 0, 0, 0, 0, "", null, ref errMsg, ref statusMsg); client.PGRemoteQuery(RPCCmds.GET_DUT_RESPONSE, 0, ref DUTResp, ref errMsg, ref statusMsg); Auto_Control.Write_Excel_cell(excel_Y, excel_X, "HFP " + PG_Setting_Value.hfp + "HBP " + PG_Setting_Value.hbp + "HSA " + PG_Setting_Value.hsa + "Bit Rate " + (PG_Setting_Value.bitrate) / 1000000); Auto_Control.Write_Excel_cell(excel_Y, excel_X + 1, BitConverter.ToString(DUTResp)); excel_Y++; client.PGRemoteCmd(RPCCmds.PG_ABORT, ref errMsg, ref statusMsg); PG_Setting_Value.hsa += 16; PG_Setting_Value.hbp += 16; PG_Setting_Value.hfp += 16; PG_Setting_Value.Calculate_bitrate(); } client.Disconnect(true); Auto_Control.Save_Excel(); Auto_Control.Close_Excel(); }
private void Auto_Actiming_Task() { StreamWriter sw = new StreamWriter(@"D:\ttt.txt"); DSITiming ACtiming_Auto = new DSITiming(); MIPI_Auto_Test Auto_Control = new MIPI_Auto_Test(); Auto_Control.Excel_open(output_path, 1); Auto_Control.EXcel_sheet_select("AC timing"); int x_start = 18, y_start = 5; //驗證報告actiming部分表格的起始點 for (float bitrate_now = 100; bitrate_now < Test_Condition.bitrate; bitrate_now += 100) { ACtiming_Auto.set_bitrate(bitrate_now); sw.Write("defalut\t" + ACtiming_Auto.get_timing_setting()); //clk post max ACtiming_Auto.get_clk_post_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); //send command //確認回傳值 sw.Write("clk_post_max\t" + ACtiming_Auto.get_timing_setting()); //clk pre min ACtiming_Auto.get_clk_pre_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_pre_min\t" + ACtiming_Auto.get_timing_setting()); //clk prepare min ACtiming_Auto.get_clk_prepare_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_prepare_min\t" + ACtiming_Auto.get_timing_setting()); //clk prepare max ACtiming_Auto.get_clk_prepare_max_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_prepare_max\t" + ACtiming_Auto.get_timing_setting()); //clk trail min ACtiming_Auto.get_clk_trail_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_trail_min\t" + ACtiming_Auto.get_timing_setting()); //clk prepare + zero min ACtiming_Auto.get_clk_prepare_zero_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_prepare+clk_zero_min\t" + ACtiming_Auto.get_timing_setting()); //clk trail max ACtiming_Auto.get_clk_trail_max_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("clk_trail_max\t" + ACtiming_Auto.get_timing_setting()); //data trail max ACtiming_Auto.get_hs_trail_max_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("hs_trail_max\t" + ACtiming_Auto.get_timing_setting()); //hs prepare min ACtiming_Auto.get_hsprepare_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("hs_prepare_min\t" + ACtiming_Auto.get_timing_setting()); //hs prepare max ACtiming_Auto.get_hsprepare_max_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("hs_prepare_max\t" + ACtiming_Auto.get_timing_setting()); //hs prepare + zero min ACtiming_Auto.get_hsprepare_zero_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("hs_prepare+hs_zero\t" + ACtiming_Auto.get_timing_setting()); //hs trail min ACtiming_Auto.get_hs_trail_min_setting(); //Send_Timing_To_PG(ACtiming_Auto); sw.Write("hs_trail_min\t" + ACtiming_Auto.get_timing_setting()); } sw.Close(); }