private void ReadRecordFromFile() { if (File.Exists("D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv")) { DataTable dt = new DataTable(); dt.Columns.Add("日期", typeof(string)); dt.Columns.Add("班次", typeof(string)); dt.Columns.Add("机台号", typeof(string)); dt.Columns.Add("机台穴号", typeof(string)); dt.Columns.Add("产品barcode", typeof(string)); DataTable dt1 = Csvfile.GetFromCsv("D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv", 1, dt); if (dt1.Rows.Count > 0) { foreach (DataRow item in dt1.Rows) { RecordItem ri = new RecordItem(); ri.日期 = item["日期"].ToString(); ri.班次 = item["班次"].ToString(); ri.机台号 = item["机台号"].ToString(); ri.机台穴号 = item["机台穴号"].ToString(); ri.产品barcode = item["产品barcode"].ToString(); lock (LockObject) { recordItemList.Add(ri); } } } } else { MsgText = AddMessage("本地记录不存在"); } }
private async void ReUpLoad() { DataTable dt = new DataTable(); DataTable dt1; dt.Columns.Add("BLDATE", typeof(string)); dt.Columns.Add("BLID", typeof(string)); dt.Columns.Add("BLNAME", typeof(string)); dt.Columns.Add("BLUID", typeof(string)); dt.Columns.Add("BLMID", typeof(string)); dt.Columns.Add("Bar", typeof(string)); string filename = @"D:\NotUpdate.csv"; UpdateCount = 0; if (File.Exists(filename)) { dt1 = Csvfile.GetFromCsv(filename, 1, dt); if (dt1.Rows.Count > 0) { File.Delete(filename); foreach (DataRow item in dt1.Rows) { DP6SQLROW dP6SQLROW = new DP6SQLROW(); dP6SQLROW.BLDATE = item[0].ToString(); dP6SQLROW.BLID = item[1].ToString(); dP6SQLROW.BLMID = item[4].ToString(); dP6SQLROW.BLNAME = item[2].ToString(); dP6SQLROW.BLUID = item[3].ToString(); dP6SQLROW.Bar = item[5].ToString(); bool r; using (var releaser = await m_lock.LockAsync()) { r = await Update_A_Row(dP6SQLROW); } if (r)//更具是否上传成功,写入不同的记录文档 { lock (DisEq) { _BarcodeRecord.Enqueue(dP6SQLROW); } WriteRecordtoExcel(dP6SQLROW, true); UpdateCount++; //上传成功 } else { WriteRecordtoExcel(dP6SQLROW, false); //上传失败 } } } } LastReUpdateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Inifile.INIWriteValue(iniParameterPath, "ReUpLoad", "LastReUpdateStr", LastReUpdateStr); }
private void ReadBarcodeRecordfromCSV() { //"Date", "Barcode", "MachineID", "UserID", "ProductName", "MachineName", "FactoryArea", "FactorySeparation" string filepath = "D:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv"; DataTable dt = new DataTable(); DataTable dt1; dt.Columns.Add("Date", typeof(string)); dt.Columns.Add("Barcode", typeof(string)); dt.Columns.Add("MachineID", typeof(string)); dt.Columns.Add("UserID", typeof(string)); dt.Columns.Add("ProductName", typeof(string)); dt.Columns.Add("MachineName", typeof(string)); dt.Columns.Add("FactoryArea", typeof(string)); dt.Columns.Add("FactorySeparation", typeof(string)); dt.Columns.Add("ZhiJuClass", typeof(string)); dt.Columns.Add("Barcodeproofing", typeof(string)); dt.Columns.Add("scancodetype", typeof(string)); dt.Columns.Add("CCD", typeof(string)); dt.Columns.Add("NNNN", typeof(string)); try { if (File.Exists(filepath)) { dt1 = Csvfile.GetFromCsv(filepath, 1, dt); if (dt1.Rows.Count > 0) { foreach (DataRow item in dt1.Rows) { MESDataItem tr = new MESDataItem() { Date = item[0].ToString(), Index = item[1].ToString(), Barcode = item[2].ToString(), MachineID = item[3].ToString(), UserID = item[4].ToString(), ProductName = item[5].ToString(), MachineName = item[6].ToString(), FactoryArea = item[7].ToString(), FactorySeparation = item[8].ToString() }; lock (GlobalVar.obj1) { //GlobalVar.AlarmRecord.Add(tr); GlobalVar.MESDataRecordQueue.Enqueue(tr); } } GlobalVar.AddMessage("读取条码记录完成"); } } else { GlobalVar.AddMessage("条码记录不存在"); } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
private void LoadBarCsvFromFile() { DataTable dt = new DataTable(); DataTable dt1; dt.Columns.Add("BLDATE", typeof(string)); dt.Columns.Add("BLID", typeof(string)); dt.Columns.Add("BLNAME", typeof(string)); dt.Columns.Add("BLUID", typeof(string)); dt.Columns.Add("BLMID", typeof(string)); dt.Columns.Add("Bar", typeof(string)); string bcstr = GetBanci(); string filename = @"D:\Record\" + bcstr + ".csv"; try { if (File.Exists(filename)) { dt1 = Csvfile.GetFromCsv(filename, 1, dt); if (dt1.Rows.Count > 0) { foreach (DataRow item in dt1.Rows) { DP6SQLROW dp6 = new DP6SQLROW(); dp6.BLDATE = item[0].ToString(); dp6.BLID = item[1].ToString(); dp6.BLNAME = item[2].ToString(); dp6.BLUID = item[3].ToString(); dp6.BLMID = item[4].ToString(); dp6.Bar = item[5].ToString(); lock (DisEq) { _BarcodeRecord.Enqueue(dp6); } } } } } catch (Exception ex) { MsgText = AddMessage(ex.Message); } }
private void ReadAlarmRecordfromCSV() { string filepath = "D:\\报警记录\\报警记录" + GlobalVar.GetBanci() + ".csv"; DataTable dt = new DataTable(); DataTable dt1; dt.Columns.Add("AlarmDate", typeof(string)); dt.Columns.Add("MachineID", typeof(string)); dt.Columns.Add("UserID", typeof(string)); dt.Columns.Add("AlarmMessage", typeof(string)); try { if (File.Exists(filepath)) { dt1 = Csvfile.GetFromCsv(filepath, 1, dt); if (dt1.Rows.Count > 0) { foreach (DataRow item in dt1.Rows) { AlarmTableItem tr = new AlarmTableItem() { AlarmDate = item[0].ToString(), MachineID = item[1].ToString(), UserID = item[2].ToString(), AlarmMessage = item[3].ToString() }; lock (GlobalVar.obj) { //GlobalVar.AlarmRecord.Add(tr); GlobalVar.AlarmRecordQueue.Enqueue(tr); } } GlobalVar.AddMessage("读取报警记录完成"); } } else { GlobalVar.AddMessage("报警记录不存在"); } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
void Scan1GetBarcodeCallback(string barcode) { AddMessage(barcode); if (barcode != "Error") { try { //载具码、盖片码、产品码 string[] barcodes = barcode.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); BP04 = barcodes[0]; Inifile.INIWriteValue(iniParameterPath, "System", "BP04", BP04); BP11 = barcodes[1]; Inifile.INIWriteValue(iniParameterPath, "System", "BP11", BP11); BPPNL = barcodes[2]; Inifile.INIWriteValue(iniParameterPath, "System", "BPPNL", BPPNL); if (!Directory.Exists(Path.Combine(System.Environment.CurrentDirectory, GetBanci()))) { Directory.CreateDirectory(Path.Combine(System.Environment.CurrentDirectory, GetBanci())); } string path = Path.Combine(System.Environment.CurrentDirectory, GetBanci(), "Barcode.csv"); Csvfile.savetocsv(path, new string[] { DateTime.Now.ToString(), BP04, BP11, BPPNL }); SXJLibrary.Oracle oracle = new SXJLibrary.Oracle("qddb07.eavarytech.com", "mesdb07", "sfcabar", "sfcabar*168"); if (oracle.isConnect()) { string stm = string.Format("INSERT INTO SFCDATA.BARAUTPNL (LOCATIONID,FACTORYID,BPDATE,BPTIME,BPEMPID,BPWORKNO,BPLINE,BPIP,BPPNL,BP01,BP04,BP11) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')" , LOCATIONID, FACTORYID, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), BPEMPID, BPWORKNO, BPLINE, BPIP, BPPNL, BP01, BP04, BP11); int rst = oracle.executeNonQuery(stm); AddMessage("插入数据" + rst.ToString()); } oracle.disconnect(); } catch (Exception ex) { AddMessage(ex.Message); } } else { //扫码失败 } }
public void InitBarcodeList() { string filepath = TestRecordSavePath + "\\" + GetBanci() + ".csv"; if (File.Exists(filepath)) { DataTable dt = new DataTable(); DataTable dt1; dt.Columns.Add("Time", typeof(string)); dt.Columns.Add("Barcode", typeof(string)); dt.Columns.Add("Result", typeof(string)); dt.Columns.Add("Cycle", typeof(string)); dt.Columns.Add("Index", typeof(string)); try { dt1 = Csvfile.csv2dt(filepath, 1, dt); if (dt1.Rows.Count > 0) { foreach (DataRow item in dt1.Rows) { Testerwith4item.BarcodeList.Add(item["Barcode"].ToString()); } ModelPrint("读取本地条码记录完成"); } else { ModelPrint("本地文件无条码记录"); } } catch (Exception ex) { Log.Default.Error("InitBarcodeList", ex.Message); } } else { ModelPrint("无当日本地记录文件"); } }
private void SaveCSVfileRecord(string TestTime, string Barcode, string TestResult, string TestCycleTime, string Index) { string filepath = "D:\\生产记录\\生产记录" + GlobalVars.GetBanci() + ".csv"; if (!Directory.Exists("D:\\生产记录")) { Directory.CreateDirectory("D:\\生产记录"); } try { if (!File.Exists(filepath)) { string[] heads = { "Time", "Barcode", "Result", "Cycle", "Index" }; Csvfile.savetocsv(filepath, heads); } string[] conte = { TestTime, Barcode, TestResult, TestCycleTime, Index }; Csvfile.savetocsv(filepath, conte); } catch (Exception ex) { ModelPrint(ex.Message); } }
//void PLCScanBCallback(string bar) //{ // GlobalVar.AddMessage(bar); // if (bar != "Error") // { // plc.PLCWrite(STATE, "M262", "FF00"); // } // else // { // plc.PLCWrite(STATE, "M264", "FF00"); // } // SaveCSVfileBarcode(bar); //} //private void SaveCSVfileBarcode(string bar) //{ // string filepath = "D:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv"; // if (!Directory.Exists("D:\\生产记录")) // { // Directory.CreateDirectory("D:\\生产记录"); // } // try // { // if (!File.Exists(filepath)) // { // string[] heads = { "Date", "Barcode"}; // Csvfile.AddNewLine(filepath, heads); // } // string[] conte = { System.DateTime.Now.ToString(), bar }; // Csvfile.AddNewLine(filepath, conte); // } // catch (Exception ex) // { // GlobalVar.AddMessage(ex.Message); // } //} private void SaveCSVfileAlarm(string alrstr) { string filepath = "D:\\报警记录\\报警记录" + GlobalVar.GetBanci() + ".csv"; if (!Directory.Exists("D:\\报警记录")) { Directory.CreateDirectory("D:\\报警记录"); } try { if (!File.Exists(filepath)) { string[] heads = { "AlarmDate", "MachineID", "UserID", "AlarmMessage" }; Csvfile.AddNewLine(filepath, heads); } string[] conte = { System.DateTime.Now.ToString(), GlobalVar.MachineID, GlobalVar.UserID, alrstr }; Csvfile.AddNewLine(filepath, conte); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
private void DispatcherTimerAction(Object sender, EventArgs e) { if (!File.Exists(@"D:\Maintain.csv")) { string[] heads = { "时间", "机台号", "触发次数", "扫码次数", "上传次数" }; Csvfile.AddNewLine(@"D:\Maintain.csv", heads); } if (LastCleanRecordFlag != GetBanciDate() + GetBanci()) { LastCleanRecordFlag = GetBanciDate() + GetBanci(); Inifile.INIWriteValue(ParameterIniPath, "Record", "LastCleanRecordFlag", LastCleanRecordFlag); if (!Directory.Exists("D:\\" + LastCleanRecordFlag)) { Directory.CreateDirectory("D:\\" + LastCleanRecordFlag); } string[] count = { DateTime.Now.ToString(), JiTaiHao, TrigerTimes.ToString(), ScanTimes.ToString(), UpdateTimes.ToString() }; Csvfile.AddNewLine(@"D:\Maintain.csv", count); TrigerTimes = 0; ScanTimes = 0; UpdateTimes = 0; Inifile.INIWriteValue(ParameterIniPath, "Times", "TrigerTimes", TrigerTimes.ToString()); Inifile.INIWriteValue(ParameterIniPath, "Times", "ScanTimes", ScanTimes.ToString()); Inifile.INIWriteValue(ParameterIniPath, "Times", "UpdateTimes", UpdateTimes.ToString()); MsgText = AddMessage("记录清空"); } if (recordItemList.Count > 0) { lock (LockObject) { foreach (RecordItem item in recordItemList) { RecordCollection.Add(item); } recordItemList.Clear(); } } }
private void SaveStartBarcodetoCSV(string bar, int index_ii) { if (!Directory.Exists(TestRecordSavePath + @"\Barcode\" + GetBanci())) { Directory.CreateDirectory(TestRecordSavePath + @"\Barcode\" + GetBanci()); } string filepath = TestRecordSavePath + @"\Barcode\" + GetBanci() + @"\Tester" + index_ii.ToString() + GetBanciShort().Replace("/", "") + ".csv"; try { if (!File.Exists(filepath)) { string[] heads = { "DateTime", "TesterBarcode" }; Csvfile.savetocsv(filepath, heads); } string[] conte = { System.DateTime.Now.ToString(), bar }; Csvfile.savetocsv(filepath, conte); } catch (Exception ex) { //Msg = messagePrint.AddMessage("写入CSV文件失败"); Log.Default.Error("写入CSV文件失败", ex.Message); } }
private void WriteRecordtoExcel(DP6SQLROW dP6SQLROW, bool flag) { string bcstr = GetBanci(); string filename = @"D:\Record\" + bcstr + ".csv"; if (!flag) { filename = @"D:\NotUpdate.csv"; } try { if (!File.Exists(filename)) { string[] heads = { "BLDATE", "BLID", "BLNAME", "BLUID", "BLMID", "Bar" }; Csvfile.AddNewLine(filename, heads); } string[] conte = { dP6SQLROW.BLDATE, dP6SQLROW.BLID, dP6SQLROW.BLNAME, dP6SQLROW.BLUID, dP6SQLROW.BLMID, dP6SQLROW.Bar }; Csvfile.AddNewLine(filename, conte); } catch (Exception ex) { MsgText = AddMessage(ex.Message); } }
public void PlcRun() { bool first = true; bool scanFlag = false; Random rd = new Random(); while (true) { System.Threading.Thread.Sleep(10); if (Xinjie == null) { System.Threading.Thread.Sleep(1000); } else { try { PLCConnect = Xinjie.ReadM(24576); if (PLCConnect) { PlcIn = Xinjie.ReadMultiMCoil(1500); Xinjie.WritMultiMCoil(1800, PlcOut); Xinjie.WriteW(150, rd.Next(0, 999).ToString()); dd8170 = Xinjie.ReadD(16554); dd4208 = Xinjie.ReadD(4208); RotalAngle = (dd8170 - dd4208) / 91776 * 360; //扫码 if (scanFlag != PlcIn[0]) { scanFlag = PlcIn[0]; if (scanFlag) { Abarcode_f = false; Bbarcode_f = false; PlcOut[0] = false; PlcOut[1] = false; PlcOut[2] = false; Xinjie.WritMultiMCoil(1800, PlcOut); ScanA.GetBarCode(ScanActionCallback1); ScanB.GetBarCode(ScanActionCallback2); TrigerTimes++; Inifile.INIWriteValue(ParameterIniPath, "Times", "TrigerTimes", TrigerTimes.ToString()); } else { PlcOut[0] = false; } } if (Abarcode_f && Bbarcode_f) { Abarcode_f = false; Bbarcode_f = false; PlcOut[0] = true; PlcOut[1] = Abarcode_s; PlcOut[2] = Bbarcode_s; if (Abarcode_s && Bbarcode_s) { ScanTimes++; Inifile.INIWriteValue(ParameterIniPath, "Times", "ScanTimes", ScanTimes.ToString()); } RecordItem recordItem = new RecordItem(); recordItem.日期 = GetBanciDate(); recordItem.班次 = GetBanci(); recordItem.机台号 = JiTaiHao; recordItem.产品barcode = Abarcode; recordItem.机台穴号 = Bbarcode; lock (LockObject) { recordItemList.Add(recordItem); } if (Directory.Exists("D:\\" + GetBanciDate() + GetBanci())) { string filename = "D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv"; if (File.Exists(filename)) { string[] heads = { "日期", "班次", "机台号", "机台穴号", "产品barcode" }; Csvfile.AddNewLine(filename, heads); } string[] count = { recordItem.日期, recordItem.班次, recordItem.机台号, recordItem.机台穴号, recordItem.产品barcode }; Csvfile.AddNewLine(filename, count); } } } else { if (first) { first = false; } else { MsgText = AddMessage("PLC断线,重新连接..."); } Xinjie.ModbusDisConnect(); System.Threading.Thread.Sleep(1000); Xinjie.ModbusInit(PLCPortCom, 19200, System.IO.Ports.Parity.Even, 8, System.IO.Ports.StopBits.One); Xinjie.ModbusConnect(); } } catch (Exception ex) { MsgText = AddMessage(ex.Message); PLCConnect = false; } } } }
private async void Run() { string alarmCode, _alarmCode = "-1"; while (true) { try { D300 = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Machine", "State", "-1")); alarmCode = Inifile.INIGetStringValue(iniParameterPath, "AlarmCommand", "Code", "-1"); if (_alarmCode != alarmCode) { AlarmData alarmData = AlarmList.FirstOrDefault(s => s.Code == alarmCode); if (alarmData != null) { AddMessage($"{alarmData.Code}:{alarmData.Content} 发生"); AlarmRecordViewModel newrow = new AlarmRecordViewModel { Time = DateTime.Now, Code = alarmData.Code, Content = alarmData.Content }; AlarmRecord.Add(newrow); string banci = GetBanci(); if (!File.Exists(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"))) { string[] heads = new string[] { "时间", "报警代码", "报警内容" }; Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), heads); } string[] conts = new string[] { DateTime.Now.ToString(), alarmData.Code, alarmData.Content }; Csvfile.savetocsv(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + banci + ".csv"), conts); } _alarmCode = alarmCode; } } catch (Exception ex) { AddMessage(ex.Message); } #region 换班 if (LastBanci != GetBanci()) { try { WriteStatetoExcel(Path.Combine("D:\\报警记录", "时间统计" + LastBanci + ".xlsx")); MachineStateA.Clean(); WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json")); LastBanci = GetBanci(); Inifile.INIWriteValue(iniParameterPath, "Summary", "LastBanci", LastBanci); AddMessage(LastBanci + " 换班数据清零"); } catch (Exception ex) { AddMessage(ex.Message); } } #endregion await Task.Delay(100); } }
private async void UIRun() { int oldMinute = -1; string CurrentAlarm = ""; if (!Directory.Exists("D:\\报警记录")) { Directory.CreateDirectory("D:\\报警记录"); } while (true) { #region 报警记录 await Task.Delay(100); try { //读报警 bool[] M300 = await Task.Run <bool[]>(() => { return(h3u.ReadMultiM("M300", (ushort)AlarmList.Count)); }); if (M300 != null && StatusPLC) { for (int i = 0; i < AlarmList.Count; i++) { if (M300[i] != AlarmList[i].State && AlarmList[i].Content != "Null") { AlarmList[i].State = M300[i]; if (AlarmList[i].State) { AlarmList[i].Start = DateTime.Now; AlarmList[i].End = DateTime.Now; AddMessage(AlarmList[i].Code + AlarmList[i].Content + "发生"); if (CurrentAlarm != AlarmList[i].Content) { var nowAlarm = AlarmReportForm.FirstOrDefault(s => s.Code == AlarmList[i].Code); if (nowAlarm == null) { AlarmReportFormViewModel newAlarm = new AlarmReportFormViewModel() { Code = AlarmList[i].Code, Content = AlarmList[i].Content, Count = 1, TimeSpan = AlarmList[i].End - AlarmList[i].Start }; AlarmReportForm.Add(newAlarm); } else { nowAlarm.Count++; } WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json")); #region 写报警记录 string banci = GetBanci(); if (!File.Exists(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv"))) { string[] heads = new string[] { "时间", "内容" }; Csvfile.savetocsv(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv"), heads); } string[] conts = new string[] { AlarmList[i].Start.ToString(), AlarmList[i].Content }; Csvfile.savetocsv(Path.Combine("D:\\报警记录", "VPP报警记录" + banci + ".csv"), conts); #endregion #region string Banci = (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20) ? "D" : "N"; SZRFUI.Models.Mysql mysql = new Mysql(); if (mysql.Connect()) { string stm = "insert into TED_WARN_DATA (WORKSTATION,PARTNUM,MACID,LOADID,PETID,TDATE,TTIME,CLASS,WARNID,DETAILID,WARNNUM,FL01,FL02,FL03,FL04,FL05,FL06,FL07,FL08,FL09,FL10,SUPPLIER,WARNVER) value('" + TestStation + "','" + ProgramName + "','" + MachineNumber + "','" + MachineNumber + "','','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','" + Banci + "','" + AlarmList[i].Content + "','','1','','','','','','','','','','','" + Supplier + "','" + WARNVER + "')"; mysql.executeQuery(stm); } mysql.DisConnect(); #endregion CurrentAlarm = AlarmList[i].Content; } } else { AlarmList[i].End = DateTime.Now; AddMessage(AlarmList[i].Code + AlarmList[i].Content + "解除"); var nowAlarm = AlarmReportForm.FirstOrDefault(s => s.Code == AlarmList[i].Code); if (nowAlarm != null) { nowAlarm.TimeSpan += AlarmList[i].End - AlarmList[i].Start; WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json")); } } } } } } catch (Exception ex) { AddMessage(ex.Message); } #endregion #region 心跳 await Task.Run(() => { if (DateTime.Now.Minute != oldMinute) { oldMinute = DateTime.Now.Minute; #region 心跳 try { int item = h3u.ReadD("D300"); string Status = ""; switch (item) { case 1: Status = "R"; break; case 2: Status = "H"; break; case 3: Status = "A"; break; default: break; } if (item > 0 && item < 4) { Mysql mysql = new Mysql(); if (mysql.Connect()) { string stm = "insert into TED_HEART_DATA (TestStation,MachineNumber,TestDate,TestTime,AlarmCode,Status,ProgramName,Barcode,SystemDate,SystemTime,SUPPLIER) value('" + TestStation + "','" + MachineNumber + "','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','NA','" + Status + "','" + ProgramName + "','NA','" + DateTime.Now.ToString("yyyyMMdd") + "','" + DateTime.Now.ToString("HHmmss") + "','" + Supplier + "')"; mysql.executeQuery(stm); } mysql.DisConnect(); AddMessage("上传心跳:" + Status); } else { AddMessage("读取心跳值异常" + item.ToString()); } } catch (Exception ex) { AddMessage(ex.Message); } #endregion } }); #endregion #region 换班 if (LastBanci != GetBanci()) { try { WriteAlarmtoExcel(Path.Combine("D:\\报警记录", "RF报警统计" + LastBanci + ".xlsx")); AlarmReportForm.Clear(); WriteToJson(AlarmReportForm, System.IO.Path.Combine(System.Environment.CurrentDirectory, "AlarmReportForm.json")); LastBanci = GetBanci(); Inifile.INIWriteValue(iniParameterPath, "Summary", "LastBanci", LastBanci); AddMessage(LastBanci + " 换班数据清零"); } catch (Exception ex) { AddMessage(ex.Message); } } #endregion await Task.Delay(200); } }
async void CheckSam() { try { int ngItemCount = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItemCount", "3")); int nGItemLimit = int.Parse(Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItemLimit", "99")); string MNO = Inifile.INIGetStringValue(iniParameterPath, "System", "MachineID", "X1621_1"); Oracle oraDB = new Oracle("qddb04.eavarytech.com", "mesdb04", "ictdata", "ictdata*168"); if (oraDB.isConnect()) { for (int i = 0; i < ngItemCount; i++) { for (int j = 0; j < 4; j++) { string flexid = Inifile.INIGetStringValue(iniFilepath, "A", "id" + (j + 1).ToString(), "99999"); string ngitem = Inifile.INIGetStringValue(iniParameterPath, "Sample", "NGItem" + i.ToString(), "Null"); string stm = String.Format("Select * from fluke_data WHERE FL04 = '{0}' AND FL01 = '{1}' AND ITSDATE = '{2}' ORDER BY ITSDATE DESC, ITSTIME DESC", flexid, ngitem, DateTime.Now.ToString("yyyyMMdd")); DataSet s = oraDB.executeQuery(stm); DataTable dt = s.Tables[0]; if (dt.Rows.Count > 0) { string datestr = (string)dt.Rows[0]["ITSDATE"]; string timestr = (string)dt.Rows[0]["ITSTIME"]; if (datestr.Length == 8 && (timestr.Length == 5 || timestr.Length == 6)) { if (timestr.Length == 5) { timestr = "0" + timestr; } string datetimestr = string.Empty; datetimestr = string.Format("{0}/{1}/{2} {3}:{4}:{5}", datestr.Substring(0, 4), datestr.Substring(4, 2), datestr.Substring(6, 2), timestr.Substring(0, 2), timestr.Substring(2, 2), timestr.Substring(4, 2)); DateTime updatetime = Convert.ToDateTime(datetimestr); TimeSpan sp = updatetime - SamStart; if (sp.TotalSeconds > 0) { stm = String.Format("Select * from barsaminfo WHERE BARCODE = '{0}'", (string)dt.Rows[0]["BARCODE"]); DataSet s1 = oraDB.executeQuery(stm); DataTable dt1 = s1.Tables[0]; if (dt1.Rows.Count > 0) { try { //插入样本记录 string parnum = Inifile.INIGetStringValue(iniFilepath, "Other", "pn", "FHAPHS9"); string tres = ngitem.Length > 20 ? ngitem.Substring(0, 20) : ngitem; stm = String.Format("INSERT INTO BARSAMREC (PARTNUM,SITEM,BARCODE,NGITEM,TRES,MNO,CDATE,CTIME,SR01) VALUES ('{0}','FLUKE','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", parnum, (string)dt.Rows[0]["BARCODE"], (string)dt1.Rows[0]["NGITEM"], tres, MNO, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), flexid); oraDB.executeNonQuery(stm); string filepath = "D:\\样本记录\\样本记录" + GlobalVars.GetBanci() + ".csv"; if (!Directory.Exists("D:\\样本记录")) { Directory.CreateDirectory("D:\\样本记录"); } if (!File.Exists(filepath)) { string[] heads = { "DateTime", "PARTNUM", "SITEM", "BARCODE", "NGITEM", "TRES", "MNO", "CDATE", "CTIME", "SR01" }; Csvfile.savetocsv(filepath, heads); } string[] conte = { System.DateTime.Now.ToString(), parnum, "FLUKE", (string)dt.Rows[0]["BARCODE"], (string)dt1.Rows[0]["NGITEM"], tres, MNO, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"), flexid }; Csvfile.savetocsv(filepath, conte); stm = String.Format("Select * from BARSAMREC WHERE BARCODE = '{0}'", (string)dt.Rows[0]["BARCODE"]); DataSet samtimesds = oraDB.executeQuery(stm); ModelPrint("插入样本记录 " + (string)dt.Rows[0]["BARCODE"] + " " + samtimesds.Tables[0].Rows.Count.ToString()); if (samtimesds.Tables[0].Rows.Count > nGItemLimit) { ModelPrint((string)dt.Rows[0]["BARCODE"] + "样本记录" + samtimesds.Tables[0].Rows.Count.ToString() + " > " + nGItemLimit.ToString()); sampleContent[i][j] = "Limit"; } } catch (Exception ex) { ModelPrint(ex.Message); } if (((string)dt1.Rows[0]["NGITEM"]).ToUpper() == ngitem.ToUpper()) { sampleContent[i][j] = "OK"; } else { sampleContent[i][j] = (string)dt1.Rows[0]["NGITEM"]; } } else { sampleContent[i][j] = "NoSam"; } } else { sampleContent[i][j] = "NotNew"; } } else { ModelPrint("时间格式错误"); sampleContent[i][j] = "Error"; } } else { sampleContent[i][j] = "NoRecord"; } } } //回复样本结果 ModelPrint("UpdateCheckSam"); bool resut = true; for (int i = 0; i < ngItemCount; i++) { for (int j = 0; j < 4; j++) { if (sampleContent[i][j] != "OK") { string resultString = "RestartSample;" + j.ToString() + ";" + i.ToString(); if (TestSendStatus) { await TestSentNet.SendAsync(resultString); } resut = false; } } } if (resut) { ModelPrint("EndSample"); await TestSentNet.SendAsync("EndSample"); } } else { ModelPrint("样本查询Error:数据库连接失败"); } oraDB.disconnect(); } catch (Exception ex) { ModelPrint("样本查询Error:" + ex.Message); } }
private void SaveCSVfileBarcode(string bar, int index) { string filepath = "F:\\生产记录\\条码" + GlobalVar.GetBanci() + ".csv"; if (!Directory.Exists("F:\\生产记录")) { Directory.CreateDirectory("F:\\生产记录"); } try { if (!File.Exists(filepath)) { string[] heads = { "Date", "Index", "Barcode", "MachineID", "UserID", "ProductName", "MachineName", "FactoryArea", "FactorySeparation", "ZhijuClass", "Barcodeproofing", "scancodetype", "CCD", "NNNN", }; Csvfile.AddNewLine(filepath, heads); } string[] conte = { System.DateTime.Now.ToString(), index.ToString(), bar, GlobalVar.MachineID, GlobalVar.UserID, GlobalVar.ProductName, GlobalVar.MachineName, GlobalVar.FactoryArea, GlobalVar.FactorySeparation, GlobalVar.ZhijuClass, GlobalVar.Barcodeproofing, GlobalVar.scancodetype, GlobalVar.CCD, GlobalVar.NNNN, }; Csvfile.AddNewLine(filepath, conte); MESDataItem tr = new MESDataItem() { Date = System.DateTime.Now.ToString(), Index = index.ToString(), Barcode = bar, MachineID = GlobalVar.MachineID, UserID = GlobalVar.UserID, ProductName = GlobalVar.ProductName, MachineName = GlobalVar.MachineName, FactoryArea = GlobalVar.FactoryArea, FactorySeparation = GlobalVar.FactorySeparation, ZhijuClass = GlobalVar.ZhijuClass, Barcodeproofing = GlobalVar.Barcodeproofing, scancodetype = GlobalVar.scancodetype, CCD = GlobalVar.CCD, NNNN = GlobalVar.NNNN, }; lock (GlobalVar.obj1) { // GlobalVar.AlarmRecord.Add(tr); GlobalVar.MESDataRecordQueue.Enqueue(tr); } string para1 = GlobalVar.MAC + "|" + GlobalVar.CCD + "," + GlobalVar.NNNN + "," + GlobalVar.ProductName + "," + GlobalVar.MachineID + "," + GlobalVar.UserID + "," + GlobalVar.MachineName + "," + GlobalVar.ZhijuClass + "," + GlobalVar.Barcodeproofing + "," + GlobalVar.FactoryArea + "," + GlobalVar.FactorySeparation + "," + GlobalVar.scancodetype + "," + bar; //进程锁住,防止与自动重传操作冲突 lock (GlobalVar.obj2) { DataSet ds = webServiceSZ.ws.getDataFromSer("MAC", "MAC", GlobalVar.MachineID, "MWS01", "MWS_ZX01", para1, System.DateTime.Now.ToShortDateString()); GlobalVar.AddMessage("上传信息;" + para1); GlobalVar.AddMessage(ds.Tables[0].Rows[0].ItemArray[0].ToString()); if (!ds.Tables[0].Rows[0].ItemArray[0].ToString().Contains("OK")) { string configPath = System.Environment.CurrentDirectory + "\\ReUpdateData.config"; if (File.Exists(configPath)) { try { //如果文件存在则先读出来 FileStream fileStream = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read); BinaryFormatter mBinFmat = new BinaryFormatter(); UploadData Ud = mBinFmat.Deserialize(fileStream) as UploadData; fileStream.Close(); //追加记录,并覆盖原文件 Ud.ReUpdate.Add(new Tuple <string, DateTime>(para1, DateTime.Now)); fileStream = new FileStream(configPath, FileMode.Create); BinaryFormatter b = new BinaryFormatter(); b.Serialize(fileStream, Ud); fileStream.Close(); GlobalVar.AddMessage(bar + " 上传失败,保存到本地"); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } } else { try { //如果文件不存在则直接创建 UploadData Ud = new UploadData(); Ud.ReUpdate.Add(new Tuple <string, DateTime>(para1, DateTime.Now)); FileStream fileStream = new FileStream(configPath, FileMode.Create); BinaryFormatter b = new BinaryFormatter(); b.Serialize(fileStream, Ud); fileStream.Close(); GlobalVar.AddMessage(bar + " 上传失败,保存到本地"); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } } } } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
private bool CreateODBC(string DataDir, string DeviceName, string ConnectString) { OdbcCommand sql_cmd = new OdbcCommand(); OdbcTransaction trans; OdbcConnection con = new OdbcConnection(ConnectString); DataSet dds = new DataSet(); List <string> UploadList = new List <string>(); List <string> SendCmd = new List <string>(); int count = 0; string table = ""; string LastDate = ""; string DBLocation = SQLiteDB.Text.Replace(@"\\", @"\\\"); System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); if (bDbInitialized == false) { //Create db file when SQLite enable if (Mode == (int)DB.SQLite) //SQLite DB not define { if (!File.Exists(DBLocation + @"\" + mInfo.DBName)) { SQLiteConnection.CreateFile(DBLocation + @"\" + mInfo.DBName); } } //Create db table for (int i = 0; i < TitleArray.Length; i++) { string tmptable = ""; if (i == 0) { tmptable = string.Format("CREATE TABLE {0}([{1}][{2}]({3}) NULL,", mInfo.TableName, TitleArray[i], Dataformat[i], MAX_SIZE); } else if (i == TitleArray.Length - 1) { if (Dataformat[i].IndexOf("char") >= 0) //Format is char { tmptable = string.Format("[{0}][{1}]({2}) NULL);", TitleArray[i], Dataformat[i], MAX_SIZE, mInfo.TableName); } else { tmptable = string.Format("[{0}][{1}] NULL);", TitleArray[i], Dataformat[i]); } } else { if (Dataformat[i].IndexOf("char") >= 0) //Format is char { tmptable = string.Format("[{0}][{1}]({2}) NULL,", TitleArray[i], Dataformat[i], MAX_SIZE); } else { tmptable = string.Format("[{0}][{1}] NULL,", TitleArray[i], Dataformat[i]); } } table += tmptable; } } try { con.Open(); if (bDbInitialized == false) { sql_cmd.CommandText = table; sql_cmd.Connection = con; sql_cmd.ExecuteNonQuery(); sql_cmd.Parameters.Add(sql_cmd.CreateParameter()); } } catch (Exception eee) { Console.Write(eee.Message); if (eee.Message.ToString().IndexOf("already") < 0) //table or object already exists, ignore { MessageBox.Show(eee.Message, "SQL Server Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } sw.Stop(); sw.Reset(); if (bDbInitialized == false) { Console.Write("Done, Create data table, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\n\r"); } //DB table is created bDbInitialized = true; sw.Start(); //Read ini file to get the last upload time string IniName = DataDir + @"\" + DeviceName + @".ini"; try { if (!File.Exists(IniName)) { //Create ini file and set the last upload time var mfile = File.Create(IniName); LastDate = default(DateTime).ToString(); SQL_Data = 0; mfile.Close(); } else { //Read the record from the previous log collection string[] Content = File.ReadAllLines(IniName); if (Content.Count() == 0) //No data { LastDate = default(DateTime).ToString(); } else { LastDate = Content[0]; if (this.InvokeRequired) { this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, LogType, Content[0], Col.LastTime, (int)PrintType.re_write); this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, LogType, Content[1], Col.TotalData, (int)PrintType.re_write); } else { PrintToList(DeviceName, LogType, Content[0], (int)Col.LastTime, (int)PrintType.re_write); PrintToList(DeviceName, LogType, Content[1], (int)Col.TotalData, (int)PrintType.re_write); } if (int.Parse(Content[1]) >= 0) { SQL_Data = int.Parse(Content[1]); } } } } catch (OdbcException e) { Console.Write(e.Message); MessageBox.Show(e.Message, "ODBC Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } //Collect all the data rows of csv file in the same path var di = new DirectoryInfo(DataDir); var directories = di.GetDirectories().OrderBy(d => d.CreationTime).Select(d => d.FullName).ToList(); //Sorting dir according to dir create time foreach (string FileDir in directories) { di = new DirectoryInfo(FileDir); var files = di.GetFiles().OrderBy(f => f.LastWriteTime).Select(f => f.FullName).ToList(); //Sorting file according to the last write time foreach (string Csvfile in files) { //Check file format, if format is .csv, parsing the content of csv file if (Csvfile.ToLower().IndexOf(".csv") > 0 && (DateTime.Compare(DateTime.Parse(LastDate), File.GetLastWriteTime(Csvfile)) < 0) && LastDate.IndexOf(File.GetLastWriteTime(Csvfile).ToString("yyyy/MM/dd HH:mm:ss")) < 0) { DateTime test1 = File.GetLastWriteTime(Csvfile); bool test = DateTime.Equals(DateTime.Parse(LastDate), File.GetLastWriteTime(Csvfile)); //Process csv file then generate SQL command SendCmd = TxtConvertToSQLite(Csvfile, mInfo.TableName, Path.GetFileNameWithoutExtension(DataDir).ToString(), ",", count, DeviceName); UploadList.AddRange(SendCmd); count++; LastDate = File.GetLastWriteTime(Csvfile).ToString("yyyy/MM/dd HH:mm:ss"); } } } sw.Stop(); Console.Write("Done, Marge data, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\n\r"); sw.Reset(); sw.Start(); //Upload data to db if (SQL_Data > 0) { try { count = 0; trans = con.BeginTransaction(); foreach (string Upload in UploadList) { sql_cmd.CommandType = CommandType.Text; sql_cmd.CommandText = Upload; sql_cmd.Connection = con; sql_cmd.Transaction = trans; sql_cmd.ExecuteNonQuery(); count++; } trans.Commit(); //Update the last upload time if (this.InvokeRequired) { //Console.Write(Path.GetFileNameWithoutExtension(DataDir).ToString()); this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, Path.GetFileNameWithoutExtension(DataDir).ToString(), SQL_Data.ToString(), Col.TotalData, (int)PrintType.re_write); this.BeginInvoke(new DelegatePrintToList(this.PrintToList), DeviceName, Path.GetFileNameWithoutExtension(DataDir).ToString(), LastDate, Col.LastTime, (int)PrintType.re_write); } } catch (Exception SQLEX) { //trans.Rollback(); // <------------------- //throw; // <------------------- Console.Write(SQLEX.Message); MessageBox.Show(SQLEX.Message, "SQL Server Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } UploadList.Clear(); } sw.Stop(); Console.Write("Done, Upload " + SQL_Data + " data, spend: " + sw.Elapsed.TotalMilliseconds.ToString() + "ms\r\n"); Console.Write("Done\r\n"); //Write the last upload time and data count into ini file try { if (!File.Exists(IniName)) { File.Create(IniName); } string[] Result = { LastDate, SQL_Data.ToString() }; File.WriteAllLines(IniName, Result); //close connection con.Close(); } catch (Exception e) { Console.Write(e.Message); MessageBox.Show(e.Message, "ODBC Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(true); }
public MainWindowViewModel() { #region 初始化参数 Version = "20201011"; MessageStr = ""; HomePageVisibility = "Visible"; AlarmPageVisibility = "Collapsed"; try { using (StreamReader reader = new StreamReader(System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json"))) { string json = reader.ReadToEnd(); MachineStateA = JsonConvert.DeserializeObject <MachineStateViewModel>(json); } } catch (Exception ex) { MachineStateA = new MachineStateViewModel() { DaiLiao = 0, YangBen = 0, TesterAlarm = 0, Down = 0, UploaderAlarm = 0, Run = 0 }; WriteToJson(MachineStateA, System.IO.Path.Combine(System.Environment.CurrentDirectory, "MachineStateA.json")); AddMessage(ex.Message); } AlarmRecord = new ObservableCollection <AlarmRecordViewModel>(); try { if (!Directory.Exists(@"D:\报警记录")) { Directory.CreateDirectory(@"D:\报警记录"); } DataTable dt; Csvfile.csv2dt(System.IO.Path.Combine(@"D:\报警记录", "AlarmRecord" + GetBanci() + ".csv"), 1, out dt); for (int i = 0; i < dt.Rows.Count; i++) { AlarmRecordViewModel newrow = new AlarmRecordViewModel { Time = Convert.ToDateTime(dt.Rows[i][0]), Code = (string)dt.Rows[i][1], Content = (string)dt.Rows[i][2] }; AlarmRecord.Add(newrow); } } catch (Exception ex) { AddMessage(ex.Message); } dispatcherTimer.Interval = new TimeSpan(0, 0, 1); dispatcherTimer.Tick += DispatcherTimer_Tick; dispatcherTimer.Start(); LastBanci = Inifile.INIGetStringValue(iniParameterPath, "Summary", "LastBanci", "null"); #endregion // If you use EPPlus in a noncommercial context // according to the Polyform Noncommercial license: ExcelPackage.LicenseContext = LicenseContext.NonCommercial; #region 报警文档 try { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; string alarmExcelPath = Path.Combine(System.Environment.CurrentDirectory, "报警.xlsx"); if (File.Exists(alarmExcelPath)) { FileInfo existingFile = new FileInfo(alarmExcelPath); using (ExcelPackage package = new ExcelPackage(existingFile)) { // get the first worksheet in the workbook ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; for (int i = 1; i <= worksheet.Dimension.End.Row; i++) { AlarmData ad = new AlarmData(); ad.Code = worksheet.Cells["A" + i.ToString()].Value == null ? "Null" : worksheet.Cells["A" + i.ToString()].Value.ToString(); ad.Content = worksheet.Cells["B" + i.ToString()].Value == null ? "Null" : worksheet.Cells["B" + i.ToString()].Value.ToString(); ad.Type = worksheet.Cells["C" + i.ToString()].Value == null ? "Null" : worksheet.Cells["C" + i.ToString()].Value.ToString(); ad.Start = DateTime.Now; ad.End = DateTime.Now; ad.State = false; AlarmList.Add(ad); } AddMessage("读取到" + worksheet.Dimension.End.Row.ToString() + "条报警"); } } else { AddMessage("VPP报警.xlsx 文件不存在"); } } catch (Exception ex) { AddMessage(ex.Message); } #endregion AppLoadedEventCommand = new DelegateCommand(new Action(this.AppLoadedEventCommandExecute)); OperateButtonCommand = new DelegateCommand <object>(new Action <object>(this.OperateButtonCommandExecute)); MenuActionCommand = new DelegateCommand <object>(new Action <object>(this.MenuActionCommandExecute)); }