/// <summary> /// 将Mes数据写入到文件 /// </summary> /// <param name="mesTxtPath">文件的路径</param> /// <returns>如果写入成功返回true,否则返回false</returns> public bool WriteMesTxtToFile(string mesTxtPath, EV_MSTR EvData) { try { if ((EvData == null) || (Arr_ME_MSTR == null)) { LogHelper.Info("成员对象为空,生成Mes数据失败"); return(false); } bool result = true; foreach (ME_MSTR me in Arr_ME_MSTR)//所有步骤的状态为Pass或Done,则最终结果为Pass { result = result && me.Step_Status.In("Passed", "Done"); } EvData.TestStatus = result ? "Passed" : "Failed"; StringBuilder strResult = new StringBuilder(); strResult.AppendLine("UUT_Order|UUT_SOURCE|DeviceA2C|EquipmentFunction|SerialNumber|StationName||||ProductTime|TestStandName|LoginName|ExecutionTime|TestScoket|BatchSerialNumber|Error Code|Error Message||||||||||||||TestStatus|"); strResult.AppendLine($"{EvData.UUT_Order}|{EvData.UUT_SOURCE}|{EvData.DeviceA2C}|{EvData.EquipmentFunction}|{EvData.SerialNumber}|{EvData.StationName}||||{EvData.ProductTime}|{EvData.TestStandName}|{EvData.LoginName}|{EvData.ExecutionTime}|{EvData.TestSocket}|{EvData.BatchSerialNumber}||||||||||||||||{EvData.TestStatus}|"); strResult.AppendLine(); strResult.AppendLine("Step_Order|Step_Source|ProductionTime|ErrorCode|ErrorMessage|TotalTime|StepName|Step_Status|ReportText|Num_Loops|Num_Passed|Num_Failed|StepGroup|StepType|Step_PassFail|Multiple_SubName|Units|Comp|Limit.Step_Data|Limit.Low|Limit.High|Result_String|Limits_String|"); foreach (ME_MSTR me in Arr_ME_MSTR) { strResult.AppendLine($"{me.Step_Order}|{me.Step_Source}|{me.ProductionTime}|{me.ErrorCode}|{me.ErrorMessage}|{me.TotalTime}|{me.StepName}|{me.Step_Status}|{me.ReportText}|{me.Num_Loops}|{me.Num_Passed}|{me.Num_Failed}|{me.Step_Group}|{me.StepType}|{me.Step_PassFail}|{me.Multiple_SubName}|{me.Units}|{me.Comp}|{me.LimitStep_Data}|{me.limitLow}|{me.limitHigh}|{me.Result_String}|{me.limits_String}|"); } //LogHelper.Info("生成Mes数据成功"); return(FileHelper.WriteAllText(mesTxtPath, strResult.ToString())); } catch (System.Exception ex) { LogHelper.Debug("生成Mes数据失败", ex); return(false); } }
/// <summary> /// 通过工站3扫描PCB2查询PCB1是否在工站2绑定及在工站1PCB1是否有数据上传Pass /// </summary> public string CheckedPCB1FromFCB2Result(EV_MSTR EvData, string SN, string pcb1StationID, string pcb2StationID) { string strResult = "Error"; using (SqlConnection conn_HZHE015A = new SqlConnection()) { string connectionString; connectionString = @"Password=PedTest@rn_radio;User ID=TE_RN;Initial Catalog=" + EvData.DatabaseName + ";Data Source=HZHE015A"; conn_HZHE015A.ConnectionString = connectionString; string queryStr = "SELECT(SELECT TOP 1[UUT_STATUS]" + "FROM[" + EvData.DatabaseName + "].[dbo].[UUT_RESULT]" + "WHERE STATION_ID = '" + pcb1StationID + "'" + " AND UUT_SERIAL_NUMBER = (SELECT TOP 1[BATCH_SERIAL_NUMBER]" + "FROM[" + EvData.DatabaseName + "].[dbo].[UUT_RESULT]" + " WHERE UUT_SERIAL_NUMBER = '" + SN + "'" + "AND STATION_ID = '" + pcb2StationID + "'" + "AND UUT_ERROR_MESSAGE <> 'ReWork' ORDER BY START_DATE_TIME DESC)" + "AND UUT_ERROR_MESSAGE <> 'ReWork' AND TEST_SOCKET_INDEX = '-1'" + " ORDER BY START_DATE_TIME DESC)"; DataTable dt = ReadOrderData(connectionString, queryStr); try { strResult = dt.Rows[0][0].ToString(); LogHelper.Info(SN + ",SN查询结果:" + strResult); } catch (Exception ex) { LogHelper.Error(SN + ",查询异常" + ex); } } return(strResult); }
/// <summary> /// MES_SplitSN_64 C#开发DLL /// </summary> public short MES_SplitSN_64(string SerialNumber, string SplitSerialNumber, EV_MSTR EvData) { string[] InputString = new string[4]; InputString[0] = SerialNumber; //SN InputString[1] = SplitSerialNumber; //SplitSN InputString[2] = EvData.SW_User; //Employee InputString[3] = "False"; //HideWindow short SplitSNResult = MES_Interlock_DLL_EDCMESASS_64_Class.SplitSN(String.Join(",", InputString)); LogHelper.Info(SplitSerialNumber + ",SplitSNResult_64=" + SplitSNResult); return(SplitSNResult); }
/// <summary> /// MES_BindingSN labview dll /// </summary> /// <param name="SerialNumber"></param> /// <param name="bindingSerialNumber"></param> /// <param name="mes"></param> /// <returns></returns> public short MES_BindingSN(string SerialNumber, string bindingSerialNumber, EV_MSTR EvData) { string[] InputString = new string[4]; InputString[0] = SerialNumber; //SN InputString[1] = bindingSerialNumber; InputString[2] = EvData.SW_User; //Employee InputString[3] = "False"; //HideWindow short bindingSNResult = BindingSN(String.Join(",", InputString)); LogHelper.Info(bindingSerialNumber + ",bindingSNResult=" + bindingSNResult); return(bindingSNResult); }
/// <summary> /// MES_MoveIn_64 C#开发DLL /// </summary> public short MES_MoveIn_64(string SerialNumber, EV_MSTR EvData) { string[] InputString = new string[5]; InputString[0] = SerialNumber; //SN InputString[1] = EvData.StationID; //Station InputString[2] = ""; //Spec InputString[3] = EvData.LoginName; //Employee InputString[4] = "False"; //HideWindow short MoveInResult = MES_Interlock_DLL_EDCMESASS_64_Class.MoveIn(String.Join(",", InputString)); LogHelper.Info(SerialNumber + ",MoveInResult_64=" + MoveInResult); return(MoveInResult); }
/// <summary> /// MES_MoveStd_64 C#开发DLL /// </summary> public short MES_MoveStd_64(string SerialNumber, string TestResult, EV_MSTR EvData) { string[] InputString = new string[6]; InputString[0] = SerialNumber; //SN InputString[1] = EvData.StationID; //Station InputString[2] = string.Format("{0:yyyy-MM-ddTHH:mm:ss}", DateTime.Now); //Time InputString[3] = TestResult; //TestResult InputString[4] = EvData.SW_User; //Employee InputString[5] = "False"; //HideWindow short MoveStdResult = MES_Interlock_DLL_EDCMESASS_64_Class.MoveStd(String.Join(",", InputString)); LogHelper.Info(SerialNumber + ",MoveStdResult_64=" + MoveStdResult); return(MoveStdResult); }
public bool AppendTestValuesRoCsvFile(EV_MSTR EvData, string csvFilePath) { try { string[] testValues = new string[Arr_ME_MSTR.Length]; string[] colNames = new string[Arr_ME_MSTR.Length]; for (int i = 0; i < Arr_ME_MSTR.Length; i++) { colNames[i] = Arr_ME_MSTR[i].StepName; switch (Arr_ME_MSTR[i].StepType) { case "Record": case "NumericLimitTest": testValues[i] = Arr_ME_MSTR[i].LimitStep_Data; break; case "StringValueTest": if (Arr_ME_MSTR[i].Step_Status == "Done") { testValues[i] = Arr_ME_MSTR[i].ReportText; break; } else { testValues[i] = Arr_ME_MSTR[i].Result_String; break; } case "PassFailTest": break; default: break; } } if (!File.Exists(csvFilePath))//如果文件不存在(即新文件,则增加列首) { FileHelper.WriteAllText(csvFilePath, "SN," + colNames.Join(",") + "\r\n", true); } FileHelper.WriteAllText(csvFilePath, EvData.SerialNumber + "," + testValues.Join(",") + "\r\n", true); return(true); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show($"{ex}"); return(false); throw; } }
/// <summary> /// SV_InterLocking(C#) /// </summary> /// <param name="SN"></param> /// <param name="sv"></param> /// <returns></returns> public int SV_Interlocking(string SN, EV_MSTR EvData) { //DSV互锁模式 string[] Information = new string[12]; Information[0] = EvData.DB_Password; //DB_Password Information[1] = EvData.DB_User; //DB_User Information[2] = EvData.DatabaseName; //DatabaseName Information[3] = EvData.ServerName; //ServerName Information[4] = SN; //SerialNumber Information[5] = EvData.StationID; //StationID Information[6] = EvData.LineGroup; //LineGroup Information[7] = EvData.LoginName; //SV_User Information[8] = EvData.Debug; //Debug Information[9] = EvData.ShowWindow; //ShowWindow Information[10] = "False"; //PassForNoDB Information[11] = EvData.Function; //Function int SVResult = sv_Interlocking_Main.sv_Interlocking_Main_Class.SV_Interlocking_Main(String.Join(",", Information)); LogHelper.Info(SN + ",SVResult=" + SVResult.ToString()); return(SVResult); }
/// <summary> /// 单独查询SN在上一个工位状态 Passed or Failed (注:也可以查询本工站SN状态,可防重测功能) /// </summary> /// public string SNStatus(string SN, string frontStationID, EV_MSTR EvData) { string strResult = "Error"; using (SqlConnection conn_HZHE015A = new SqlConnection()) { string constr = "Server=" + EvData.ServerName + ";" + "user="******";" + "pwd=" + EvData.DB_Password + ";" + "database=" + EvData.DatabaseName; conn_HZHE015A.ConnectionString = constr; string snOrder = "SELECT TOP 1 UUT_STATUS from UUT_RESULT where UUT_SERIAL_NUMBER = '" + SN + "' AND STATION_ID = '" + frontStationID + "'";//查询数据库数据结果 DataTable status = ReadOrderData(constr, snOrder); try { strResult = status.Rows[0][0].ToString(); LogHelper.Info(SN + ",SN查询结果:" + strResult); } catch (Exception ex) { LogHelper.Error(SN + ",查询异常" + ex); } } return(strResult); }
/// <summary> /// 获取服务器时间 /// </summary> /// public DateTime GetServerTime(EV_MSTR EvData) { DateTime servertime = new DateTime(); using (SqlConnection conn_HZHE015A = new SqlConnection()) { string constr = "Server=" + EvData.ServerName + ";" + "user="******";" + "pwd=" + EvData.DB_Password + ";" + "database=" + EvData.DatabaseName; conn_HZHE015A.ConnectionString = constr; string timeSearchOrder = "select getdate() as systemtimes"; DataTable time = ReadOrderData(constr, timeSearchOrder); int con = time.Rows.Count; if (con > 0) { string dt = time.Rows[0][0].ToString(); servertime = Convert.ToDateTime(Convert.ToDateTime(dt)); LogHelper.Info("服务器时间:" + servertime); } else { LogHelper.Error("服务器时间查询异常,默认时间" + servertime); } } return(servertime); }
/// <summary> /// 查询上一工站到本工站时间间隔 /// </summary> public DateTime Get_SN_time_interval(string SN, string frontStationID, EV_MSTR EvData) { DateTime enddatetime = new DateTime(); using (SqlConnection conn_HZHE015A = new SqlConnection()) { string constr = "Server=" + EvData.ServerName + ";" + "user="******";" + "pwd=" + EvData.DB_Password + ";" + "database=" + EvData.DatabaseName; conn_HZHE015A.ConnectionString = constr; string timeSearchOrder = "SELECT *FROM dbo.UUT_RESULT where UUT_SERIAL_NUMBER = '" + SN + "' And station_id = '" + frontStationID + "'And UUT_STATUS = 'PASSED'order by START_DATE_TIME desc"; DataTable time = ReadOrderData(constr, timeSearchOrder); int con = time.Rows.Count; if (con > 0) { string strResult = time.Rows[0][6].ToString(); enddatetime = Convert.ToDateTime(Convert.ToDateTime(strResult)); LogHelper.Info(SN + ",时间间隔:" + enddatetime); } else { LogHelper.Info(SN + ",查询不到数据,输出默认时间:" + enddatetime); } } return(enddatetime); }
/// <summary> /// MES_CreateEOL_SN labview dll /// </summary> public short MES_CreateEOL_SN(string SerialNumber, string CreateEOL_SerialNumber, EV_MSTR EvData) { string[] InputString = new string[4]; InputString[0] = SerialNumber; //SN InputString[1] = CreateEOL_SerialNumber; InputString[2] = EvData.SW_User; //Employee InputString[3] = "False"; //HideWindow short CreateEOL_SNResult = CreateEOL_SN(String.Join(",", InputString)); LogHelper.Info(CreateEOL_SerialNumber + ",CreateEOL_SNResult=" + CreateEOL_SNResult); return(CreateEOL_SNResult); }