public void SaveImage(string fullpath) { try { this.Image1.WriteImage("bmp", 0, fullpath); GlobalVar.AddMessage("图片保存成功!"); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
public void OpenImage2(string fullpath) { try { Image2?.Dispose(); Image2 = new HImage(); Image2.ReadImage(fullpath); GlobalVar.hWndCtrl.addIconicVar(Image2); GlobalVar.hWndCtrl.repaint(); GlobalVar.AddMessage("打开图片2"); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
public void CloseCamera() { try { GlobalVar.AddMessage("相机关闭中..."); HOperatorSet.CloseAllFramegrabbers(); GlobalVar.AddMessage("相机关闭!"); CCDStatus = false; } catch (Exception ex) { CCDStatus = false; GlobalVar.AddMessage(ex.Message); } }
public async void ReUploadAction() { Task UploadBarcode = Task.Run(() => { try { string configPath = System.Environment.CurrentDirectory + "\\ReUpdateData.config"; if (File.Exists(configPath)) { try { //进程锁住,防止与正在上传的操作冲突 lock (GlobalVar.obj2) { FileStream fileStream = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read); BinaryFormatter mBinFmat = new BinaryFormatter(); UploadData Ud = mBinFmat.Deserialize(fileStream) as UploadData; fileStream.Close(); foreach (var item in Ud.ReUpdate) { lock (GlobalVar.obj2) { DataSet ds = webServiceSZ.ws.getDataFromSer("MAC", "MAC", GlobalVar.MachineID, "MWS01", "MWS_ZX01", item.Item1, item.Item2.ToString()); GlobalVar.AddMessage("重传信息;" + item.Item1); GlobalVar.AddMessage(ds.Tables[0].Rows[0].ItemArray[0].ToString()); if (ds.Tables[0].Rows[0].ItemArray[0].ToString().Contains("OK")) { Ud.ReUpdate.Remove(item); } } System.Threading.Thread.Sleep(1000); } fileStream = new FileStream(configPath, FileMode.Create); BinaryFormatter b = new BinaryFormatter(); b.Serialize(fileStream, Ud); fileStream.Close(); } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } } } catch { } }); await UploadBarcode; }
//C:/Program Files/MVTec/HALCON-13.0/procedures/ public Vision() { try { InitSaveImageFilePath(); string path = System.Environment.CurrentDirectory + "\\Programs"; //视觉引擎加载过程 myEngine.SetProcedurePath(path); //视觉脚本程序加载 HDevProgram myProgram = new HDevProgram(path + "\\Main.hdev"); //将过程挂载到视觉脚本 //cam1ProcedureCall1 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage")); cam1ProcedureCall2 = new HDevProcedureCall(new HDevProcedure(myProgram, "HS9Operate")); //cam1ProcedureCall3 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage3")); OpenCameraAsync(); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } }
public void OpenCamera() { try { GlobalVar.AddMessage("相机打开中..."); //Image Acquisition 01: Code generated by Image Acquisition 01 Framegrabber1 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default", -1, "default", -1, "false", "default", "CAM1", 0, -1); Framegrabber2 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default", -1, "default", -1, "false", "default", "CAM2", 0, -1); Framegrabber3 = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default", -1, "default", -1, "false", "default", "CAM3", 0, -1); //Framegrabber = new HFramegrabber("GigEVision", 0, 0, 0, 0, 0, 0, "default", // -1, "default", -1, "false", "default", "cam1", 0, -1); GlobalVar.AddMessage("相机打开成功!"); CCDStatus = true; } catch (Exception ex) { CCDStatus = false; GlobalVar.AddMessage(ex.Message); } }
private void InitSaveImageFilePath() { try { if (!Directory.Exists(@"E:\images")) { Directory.CreateDirectory(@"E:\images"); } string[] imagefilenames = Directory.GetFiles(@"E:\images"); if (imagefilenames.Length >= 200) { for (int i = 0; i < imagefilenames.Length; i++) { File.Delete(imagefilenames[i]); } GlobalVar.AddMessage("清理照片"); } } catch (Exception ex) { GlobalVar.AddMessage(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); } }
public async void UploadBarcode() { Task UploadBarcode = Task.Run(() => { try { int index = 1; foreach (string item in result_barcode.SArr) { System.Threading.Thread.Sleep(1000); GlobalVar.AddMessage(item); { if (item != "error") { SaveCSVfileBarcode(item, index); } index++; } } } catch { } }); await UploadBarcode; }
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); } }
public void ProcessImage() { Result_etch = new bool[6]; Result_blue = new bool[6]; Result_barcode = new bool[6]; try { if (Image1 != null && Image2 != null) { TiledImage?.Dispose(); TiledImage = Image1.ConcatObj(Image2).TileImages(1, "vertical"); GlobalVar.hWndCtrl.addIconicVar(TiledImage); GlobalVar.hWndCtrl.repaint(); cam1ProcedureCall2.SetInputIconicParamObject("Image", TiledImage);//传入图像 cam1ProcedureCall2.Execute(); HRegion Rectangle10 = cam1ProcedureCall2.GetOutputIconicParamRegion("Rectangle10"); HRegion Rectangle11 = cam1ProcedureCall2.GetOutputIconicParamRegion("Rectangle11"); window1.SetColor("red"); window1.DispRegion(Rectangle10); window1.SetColor("red"); window1.DispRegion(Rectangle11); HTuple result_etch = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_etch"); HTuple result_blue = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_blue"); //HTuple result_barcode = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_barcode"); result_barcode = cam1ProcedureCall2.GetOutputCtrlParamTuple("Result_barcode"); GlobalVar.AddMessage("蚀刻:"); foreach (long item in result_etch.LArr) { if (item == 0) { GlobalVar.AddMessage(item.ToString() + "OK"); } else { GlobalVar.AddMessage(item.ToString() + "NG"); } } GlobalVar.AddMessage("条码:"); try { int index = 0; foreach (string item in result_barcode.SArr) { if (item != "error") { Result_barcode[index] = false; } else { Result_barcode[index] = true; } index++; } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } UploadBarcode(); try { foreach (string item in result_barcode.SArr) { System.Threading.Thread.Sleep(1000); GlobalVar.AddMessage(item); //SaveCSVfileBarcode(item); } } catch { } GlobalVar.AddMessage("蓝膜:"); foreach (long item in result_blue.LArr) { if (item == 1) { GlobalVar.AddMessage(item.ToString() + "NG"); } else { GlobalVar.AddMessage(item.ToString() + "OK"); } } GlobalVar.AddMessage("图像处理完成"); for (int i = 0; i < result_etch.LArr.Length; i++)// i < Result_etch.Length && i < result_etch.LArr.Length && i < result_blue.LArr.Length; i++) { Result_etch[i] = result_etch[i]; //Result_blue[i] = result_blue[i]; } } else { GlobalVar.AddMessage("无图像"); } } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } //GC.Collect(); }
async void PlcRun() { short QuestCycle = 100; bool state1 = false; bool first = true; AlarmTuple[] AlarmTupleArray = new AlarmTuple[200]; int alramItemsCount = 0; string alarmconfigfile = System.Environment.CurrentDirectory + "\\CA9报警.xlsx"; try { alramItemsCount = UpdateAlarmFromExcel(alarmconfigfile, AlarmTupleArray); GlobalVar.AddMessage("加载报警项:" + alramItemsCount.ToString()); } catch (Exception ex) { GlobalVar.AddMessage(ex.Message); } while (true) { await Task.Delay(QuestCycle); if (DateTime.Now.Hour % 2 == 0) { if (DateTime.Now.Hour != ReUpdateHour) { ReUpdateHour = DateTime.Now.Hour; Inifile.INIWriteValue(iniParameterPath, "System", "ReUpdateHour", ReUpdateHour.ToString()); GlobalVar.plc.vision.ReUploadAction(); } } Task task = Task.Run(() => { try { state1 = plc.ReadM(STATE, "M1000"); if (state1) { //拍照1 System.Threading.Thread.Sleep(20); if (plc.ReadM(STATE, "M3000")) { plc.PLCWrite(STATE, "M3100", "0000"); GlobalVar.AddMessage("触发拍照1"); System.Threading.Thread.Sleep(20); plc.PLCWrite(STATE, "M3000", "0000"); System.Threading.Thread.Sleep(20); plc.PLCWrite(STATE, "M3002", "0000"); GlobalVar.plc.vision.GetImage1(); plc.PLCWrite(STATE, "M3002", "FF00"); } //拍照2 System.Threading.Thread.Sleep(20); if (plc.ReadM(STATE, "M3001")) { GlobalVar.AddMessage("触发拍照2"); System.Threading.Thread.Sleep(20); plc.PLCWrite(STATE, "M3001", "0000"); System.Threading.Thread.Sleep(20); plc.PLCWrite(STATE, "M3003", "0000"); GlobalVar.plc.vision.GetImage2(); plc.PLCWrite(STATE, "M3003", "FF00"); GlobalVar.plc.vision.ProcessImage(); string Str_Result_etch = GetCoilStr(GlobalVar.plc.vision.Result_etch); System.Threading.Thread.Sleep(20); plc.PLCWriteBit(STATE, "M3101", "0006", Str_Result_etch); GlobalVar.AddMessage("蚀刻信息已写入PLC"); //string Str_Result_blue = GetCoilStr(GlobalVar.plc.vision.Result_blue); //System.Threading.Thread.Sleep(20); //plc.PLCWriteBit(STATE, "M121", "000A", Str_Result_blue); string Str_Result_barcode = GetCoilStr(GlobalVar.plc.vision.Result_barcode); System.Threading.Thread.Sleep(20); plc.PLCWriteBit(STATE, "M3111", "0006", Str_Result_barcode); GlobalVar.AddMessage("扫码信息已写入PLC"); plc.PLCWrite(STATE, "M3100", "FF00"); GlobalVar.AddMessage("本次处理完成"); } //if (plc.ReadM(STATE, "M260")) //{ // GlobalVar.AddMessage("触发扫码"); // System.Threading.Thread.Sleep(20); // plc.PLCWrite(STATE, "M260", "0000"); // System.Threading.Thread.Sleep(20); // plc.PLCWrite(STATE, "M262", "0000"); // System.Threading.Thread.Sleep(20); // plc.PLCWrite(STATE, "M264", "0000"); // ScanC.GetBarCode(PLCScanBCallback); //} //报警 for (int i = 0; i < alramItemsCount; i++) { AlarmTupleArray[i].CoilStatus = plc.ReadM(STATE, AlarmTupleArray[i].CoilName); if (AlarmTupleArray[i].LastCoilStatus != AlarmTupleArray[i].CoilStatus) { AlarmTupleArray[i].LastCoilStatus = AlarmTupleArray[i].CoilStatus; if (AlarmTupleArray[i].CoilStatus && !first) { AlarmTableItem _alarmTableItem = new AlarmTableItem(); _alarmTableItem.AlarmDate = DateTime.Now.ToString(); _alarmTableItem.AlarmMessage = AlarmTupleArray[i].AlarmContent; _alarmTableItem.MachineID = GlobalVar.MachineID; _alarmTableItem.UserID = GlobalVar.UserID; lock (GlobalVar.obj) GlobalVar.AlarmRecordQueue.Enqueue(_alarmTableItem); SaveCSVfileAlarm(_alarmTableItem.AlarmMessage); //记录报警 } } } first = false; } QuestCycle = 100; } catch (Exception ex) { Console.WriteLine(ex.Message); state1 = false; QuestCycle = 1000; } }); await task; Connect = state1; } }