From 745d1ce73a3b27d2a3507843c8060755a0c95765 Mon Sep 17 00:00:00 2001
From: quanzhou <quan.zhou@broconcentric.com>
Date: 星期二, 21 十月 2025 19:06:36 +0800
Subject: [PATCH] 打印机条码格式修改,增添一个点检功能方法
---
src/Bro.M141_AOI1.Process/AOI1Process.cs | 826 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 784 insertions(+), 42 deletions(-)
diff --git a/src/Bro.M141_AOI1.Process/AOI1Process.cs b/src/Bro.M141_AOI1.Process/AOI1Process.cs
index 139b24d..8d82bef 100644
--- a/src/Bro.M141_AOI1.Process/AOI1Process.cs
+++ b/src/Bro.M141_AOI1.Process/AOI1Process.cs
@@ -1,4 +1,5 @@
锘縰sing Bro.Common.Base;
+using Bro.Common.Factory;
using Bro.Common.Helper;
using Bro.Common.Interface;
using Bro.Common.Model;
@@ -6,12 +7,17 @@
using Bro.M141.Process;
using Bro.UI.Model.Winform;
using HalconDotNet;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using NPOI.OpenXmlFormats.Vml;
using NPOI.POIFS.Crypt.Dsig;
using NPOI.SS.Formula.Functions;
using NPOI.XSSF.Streaming.Values;
using System.Collections.Concurrent;
+using System.Collections.Generic;
using System.Net.Sockets;
using System.Text.RegularExpressions;
+using static Bro.Common.Helper.EnumHelper;
using static NPOI.HSSF.Util.HSSFColor;
using static Org.BouncyCastle.Crypto.Engines.SM2Engine;
using static Org.BouncyCastle.Math.EC.ECCurve;
@@ -28,19 +34,28 @@
#endregion
AOI1Config ConfigAOI1 => Config as AOI1Config;
- TcpClientWrapBase BarcodeScanner = null;
-
public override void Open()
{
+
+ //string configPath = @"C:\Users\30263\Desktop\666.txt";
+
+ //string _configBackupStr = "";
+ //using (StreamReader reader = new StreamReader(configPath, System.Text.Encoding.UTF8))
+ //{
+ // _configBackupStr = reader.ReadToEnd();
+
+ //}
+
+ //ProductModel p = JsonConvert.DeserializeObject<ProductModel>(_configBackupStr, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+
base.Open();
- BarcodeScanner = DeviceCollection.FirstOrDefault(u => u is TcpClientWrapBase) as TcpClientWrapBase;
}
+
[ProcessMethod("", "PositionCheck_P1", "宸ヤ綅1妫�娴�", InvokeType.TestInvoke)]
public ResponseMessage PositionCheck_P1(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
{
-
var positionSet = M141Config.WorkPositionCollection.Where(u => u.IsEnabled).FirstOrDefault(u => u.TriggerValue == "1#");
if (positionSet == null)
{
@@ -54,6 +69,7 @@
return msg;
}
+
[ProcessMethod("", "PositionCheck_P2", "宸ヤ綅2妫�娴�", InvokeType.TestInvoke)]
public ResponseMessage PositionCheck_P2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -71,6 +87,7 @@
return msg;
}
+
[ProcessMethod("", "PositionCheck_P3", "宸ヤ綅3妫�娴�", InvokeType.TestInvoke)]
public ResponseMessage PositionCheck_P3(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -90,6 +107,74 @@
}
+ [ProcessMethod("ImageCheck", "CheckProduction", "浜у搧鐐规", InvokeType.TestInvoke)]
+ public ResponseMessage CheckProduction(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+
+ if (config is IImageCheckOperationConfig opConfig)
+ {
+ var results1 = GetSpecListFromConfigSelection(opConfig.SpecCollection);
+ IImageSet imageSet = null;
+ string Head = "鏃堕棿,";
+ string data = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}T,";
+ try
+ {
+ var messure = M141Config.MeasureBindCollection_Check.FirstOrDefault(u => u.CameraId == invokeDevice.Id);
+ var camera = DeviceCollection.FirstOrDefault(u => u.Id == messure.CameraId) as CameraBase;
+ try
+ {
+ imageSet = CollectHImage(camera, messure.SnapshotOpConfig);
+ }
+ catch (Exception exx)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鐐规鍔熻兘鑾峰彇鍥惧儚澶辫触{exx.ToString()}");
+ }
+ var tool = GetHalconTool(null, "", opConfig.AlgorithemPath);
+ var ret = tool.RunProcedure(null, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", imageSet.HImage } }, new List<string>() { "OUTPUT_Results" }, null);
+ //var ret = tool.RunProcedure(null, null, new List<string>() { "OUTPUT_Results" }, null);
+ List<IShapeElement> eleList = new List<IShapeElement>();
+ TextDisplay text = new TextDisplay();
+ text.LineLimit = M141Config.LineLimit_p;
+ text.FontSize = M141Config.FontSize_p;
+ eleList.Add(text);
+ text.StartX = text.StartY = 0;
+ text.AddText("鐐规杩愯鎴愬姛", Color.Lime, Color.Transparent);
+ var b = ret.Item2["OUTPUT_Results"].HTupleToDouble();
+ if (ret != null&& results1.Count== b.Count())
+ {
+ var itemDict = results1.ToDictionary(u => u.OutputIndex);
+ b.ForEach(u =>
+ {
+ int index = b.IndexOf(u); // 鑾峰彇褰撳墠鍊肩殑绱㈠紩
+ if (itemDict.TryGetValue(index, out var item))
+ {
+ double diff = u - item.StandardValue;
+ bool isInTolerance = (diff - item.Tolrenance_Positive) *(diff - item.Tolrenance_Negative) <= 0;
+ text.AddText($"{item.Code} {u}", isInTolerance == true ? Color.Lime: Color.Red, Color.Transparent);
+ Head += $"{item.Code},";
+ data += $"{u},";
+ }
+ });
+ }
+ camera.SaveFitImage(eleList, imageSet);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鐐规鍔熻兘杩愯鎴愬姛");
+ }
+ catch (Exception ex)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鐐规鍔熻兘澶辫触,{ex.ToString()}");
+ }
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鐐规鍥剧墖寮�濮嬮噴鏀�");
+ imageSet.HImage?.Dispose();
+ imageSet.HImage = null;
+ imageSet.Dispose();
+ imageSet = null;
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鍥剧墖宸查噴鏀�");
+ //鎶ヨ〃杈撳嚭
+ CSVRecordAsync($"鐩告満{invokeDevice.Name}_鐐规鏁版嵁璁板綍.csv", data, Head);
+ }
+ return msg;
+ }
[ProcessMethod("ImageCheck", "ReadBarcode", "璇荤爜", InvokeType.TestInvoke)]
public ResponseMessage ReadBarcode(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -97,65 +182,210 @@
ResponseMessage msg = new ResponseMessage();
if (config is IImageCheckOperationConfig opConfig)
{
- var results = opConfig.Products.Select(u =>
+ if (invokeDevice is TcpClientWrapBase BarcodeScanner)
{
- DetectResult result = new DetectResult();
- result.PID = u.PID;
- result.Specs = GetSpecListFromConfigSelection(opConfig.SpecCollection);
- return result;
- }).ToList();
+ var results = opConfig.Products.Select(u =>
+ {
+ DetectResult result = new DetectResult();
+ result.PID = u.PID;
+ result.Specs = GetSpecListFromConfigSelection(opConfig.SpecCollection);
+ return result;
+ }).ToList();
- msg.DataObj = results;
+ msg.DataObj = results;
- string barcode = BarcodeScannerCommunicate();
+ string barcode = BarcodeScannerCommunicate(BarcodeScanner);
- List<double> ret = new List<double>();
- if ("NOREAD".Equals(barcode.ToUpper()))
- {
- ret.Add(999);
+ List<double> ret = new List<double>();
+ if ("NOREAD".Equals(barcode.ToUpper()))
+ {
+ ret.Add(999);
+ }
+ else
+ {
+ if (barcode.Split('-').Length > 5)
+ {
+ int mh = Plc1.Read(4000, 1, out _)[0];
+ string codestr = barcode.Split('-')[4];
+ if (codestr == "L")
+ {
+ codestr = "10";
+ }
+ if (codestr.Equals(mh.ToString()))
+ {
+ ret.Add(1);
+ }
+ else
+ {
+ ret.Add(2);
+ Plc1.WriteSingleAddress(4010, 1, out _);//缁檖lc鎶ヨ
+ }
+ }
+ else
+ {
+ ret.Add(999);
+ }
+ }
+
+ FillSpecResults(results[0].PID, results[0].Specs, ret, opConfig.Products[0].SEQUENCE);
+
+ opConfig.Products[0].SN = barcode;
+ opConfig.Products[0].PID = barcode + "_1";
+ opConfig.Products[0].Details.ForEach(u =>
+ {
+ u.SN = barcode;
+ u.PID = barcode + "_1";
+ u.ResultList.ForEach(x =>
+ {
+
+ x.PID = barcode + "_1";
+
+ });
+ });
+
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{opConfig.Products[0].PID}鏉$爜鑾峰彇涓簕barcode}");
}
- else
- {
- ret.Add(1);
- }
-
- FillSpecResults(results[0].PID, results[0].Specs, ret, opConfig.Products[0].SEQUENCE);
-
-
- opConfig.Products[0].SN = barcode;
- opConfig.Products[0].Details.ForEach(u => u.SN = barcode);
-
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{opConfig.Products[0].PID}鏉$爜鑾峰彇涓簕barcode}");
-
}
return msg;
}
+ [ProcessMethod("ImageCheck", "ReadBarcode2", "璇绘爮鍏风爜", InvokeType.TestInvoke)]
+ public ResponseMessage ReadBarcode2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+ if (invokeDevice is TcpClientWrapBase BarcodeScanner2)
+ {
+ string barcode = BarcodeScannerCommunicate(BarcodeScanner2);
+ if (string.IsNullOrEmpty(barcode) || "noread".Equals(barcode.ToLower()))
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏍忓叿鐮佽幏鍙栧け璐�");
+ Plc1.WriteSingleAddress(1524, 2, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ }
+ else
+ {
+ ConfigAOI1.basketcode = barcode;
+ int num = Plc1.Read(1577, 1, out _)[0];
- private string BarcodeScannerCommunicate()
+ if (ConfigAOI1.PlcAndBasketcodes.Count > 10)
+ {
+ ConfigAOI1.PlcAndBasketcodes.RemoveAt(0);
+ }
+
+ if (ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num))
+ {
+ ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code = barcode;
+ }
+ else
+ {
+ ConfigAOI1.PlcAndBasketcodes.Add(new PlcAndBasketcode
+ {
+ code = barcode,
+ id = num,
+ });
+ }
+
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鑾峰彇鍒版爮鍏风爜涓簕barcode}");
+
+ mysqlhelper.NewBasketcode(barcode);
+ RerefreshBasketcode();
+
+ if (ConfigAOI1.ISupMES)
+ {
+ //string zword = mqtt.MESForBasketAsync("2", "DS02217", barcode, "1", num.ToString()).Result;
+ string zwordstr = Task.Run(() => mqtt.MESForBasketAsync("2", "DS02217", barcode, "1", ConfigAOI1.mesnum2.ToString())).Result;
+
+ ConfigAOI1.mesnum2++;
+ if (ConfigAOI1.ISokMes)
+ {
+ Plc1.WriteSingleAddress(1524, 1, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插己鍒惰鏍忓叿鐮佽繍琛岃澶�");
+ }
+ else
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(zwordstr);
+ ConfigAOI1.zwoid = obj.zwoid;
+ if (!string.IsNullOrEmpty(obj.zwoid) && obj.zstatus == "200")
+ {
+ Plc1.WriteSingleAddress(1524, 1, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid鑾峰彇鎴愬姛 {obj.zstatus} {obj.zwoid} ");
+ }
+ else
+ {
+ try
+ {
+ if (zwordstr.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum2 = int.Parse(matches[0].Value)+1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum2 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ Plc1.WriteSingleAddress(1524, 2, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid鑾峰彇澶辫触 {zwordstr} ");
+ }
+ }
+ catch
+ {
+ Plc1.WriteSingleAddress(1524, 2, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ zwoid鑾峰彇寮傚父 杩斿洖鏁版嵁涓� {zwordstr} ");
+ }
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插叧闂璵es杩炴帴");
+ Plc1.WriteSingleAddress(1524, 1, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ }
+ SaveProcessConfig(ConfigAOI1);
+ }
+
+ }
+
+ return msg;
+ }
+
+ private string BarcodeScannerCommunicate(TcpClientWrapBase client)
{
string barcode = "";
for (int i = 0; i < 3; i++)
{
- if (BarcodeScanner.WriteAndRead("start", out string error, out barcode, true))
+ if (client.WriteAndRead("start", out string error, out barcode, true))
{
barcode = barcode.Trim(' ', '\r', '\n');
if (CheckBarcodeValid(barcode))
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{BarcodeScanner.Name}鎵爜瀹屾垚锛屽弽棣坽barcode}");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{client.Name}鎵爜瀹屾垚锛屽弽棣坽barcode}");
return barcode;
}
else
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{BarcodeScanner.Name}绗瑊i + 1}鎵爜瀹屾垚锛屽弽棣坽barcode}锛屼笉鏄悎娉曟潯鐮�");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{client.Name}绗瑊i + 1}鎵爜瀹屾垚锛屽弽棣坽barcode}锛屼笉鏄悎娉曟潯鐮�");
Thread.Sleep(200);
}
}
else
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{BarcodeScanner.Name}鎵爜澶辫触锛寋error}");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{client.Name}鎵爜澶辫触锛寋error}");
break;
}
}
@@ -172,11 +402,6 @@
}
return isBarcodeValid;
}
-
-
-
-
-
[ProcessMethod("ImageCheck", "CheckLineProfile", "妫�娴嬩骇鍝佺嚎杞粨搴�", InvokeType.TestInvoke)]
public ResponseMessage CheckLineProfile(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -208,8 +433,7 @@
LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"妫�娴嬩骇鍝佺嚎杞粨搴﹁緭鍏ョ偣鏁版嵁 {string.Join(',', pointdataF)}");
var tool = GetHalconTool(null, "", opConfig.AlgorithemPath);
- var ret = tool.RunProcedure(new Dictionary<string, HalconDotNet.HTuple>() { { "INPUT_Points", pointdataF.ToArray() } }, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results", "OUTPUT_PointZ" }, null);
-
+ var ret = tool.RunProcedure(new Dictionary<string, HalconDotNet.HTuple>() { { "INPUT_Points", pointdataF.ToArray() } }, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results", "OUTPUT_PointZ" }, null);
if (ret == null)
{
LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鑴氭湰{opConfig.AlgorithemPath}杩愯寮傚父锛岃繑鍥炲�间负null");
@@ -232,7 +456,8 @@
if (datasZ.Count == CheckPointList.Count)
{
string Postion = "P" + opConfig.TriggerStr.Split('#')[0];
- string csvhead = "Time,Pid,Postion";
+ string csvhead = "Time,Pid" +
+ ",Postion";
string csvdata = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}T,{results[0].PID},{Postion}";
for (int i = 0; i < CheckPointList.Count; i++)
@@ -295,6 +520,26 @@
else
{
item.ActualValue = retcal.Item2["OUTPUT_Results"].HTupleToDouble()[0];
+
+ if (item.IsEnableCompensation && item.CompensationValue.Count > 1)
+ {
+ string index = opConfig.TriggerStr.Split('#')[0];
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}杩涘叆鍙岄噸琛ュ伩{index}锛屽垵濮嬪�间负{item.ActualValue}");
+
+ if (index=="1")
+ {
+ item.ActualValue += item.CompensationValue[0];
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}杩涘叆鍙岄噸琛ュ伩,琛ュ伩鍊间负{item.CompensationValue[0]}锛屾渶缁堢粨鏋滀负{item.ActualValue}");
+ }
+ else
+ {
+ item.ActualValue += item.CompensationValue[1];
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}杩涘叆鍙岄噸琛ュ伩,琛ュ伩鍊间负{item.CompensationValue[1]}锛屾渶缁堢粨鏋滀负{item.ActualValue}");
+ }
+
+ }
+
+
LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{results[0].PID}鑾峰彇璁$畻鍏紡鏁版嵁{item.Code} {item.GetMeasureValueStr()}");
}
}
@@ -320,18 +565,515 @@
return msg;
}
+ [ProcessMethod("ImageCheck", "GetMatrix", "鑾峰彇鐭╅樀", InvokeType.TestInvoke)]
+ public ResponseMessage GetMatrix(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+ if (config is IImageCheckOperationConfig opConfig)
+ {
+ var tool = GetHalconTool(null, "", opConfig.AlgorithemPath);
+ var ret = tool.RunProcedure(null, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results" }, null);
+ if (ret == null)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鑴氭湰{opConfig.AlgorithemPath}杩愯寮傚父锛岃繑鍥炲�间负null");
+ }
+ else if (!ret.Item1)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鑴氭湰{opConfig.AlgorithemPath}杩愯寮傚父锛寋ret.Item4}");
+ }
+ else
+ {
+ List<double> datas = ret.Item2["OUTPUT_Results"].HTupleToDouble();
+ opConfig.Products[0].Centermatrix = datas;
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{opConfig.Products[0].PID}鐭╅樀鑾峰彇涓� {string.Join(',', datas)}");
+ }
+ }
+ return msg;
+ }
+
+ [ProcessMethod("", "MESupdata", "MES姝e父涓婁紶OK浜у搧鑾峰彇鏉$爜", InvokeType.TestInvoke)]
+ public ResponseMessage MESupdata(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+
+ Plc3 = invokeDevice as PLCBase;
+ ///浜у搧1涓婁紶
+ var plcnum = Plc3.Read(2100, 1, out _);
+ if (plcnum[0] != 0)
+ {
+ var plist = mysqlhelper.GetProductList(plcnum + "_1");
+ ProductModel newp = new ProductModel();
+ newp.SEQUENCE = plist[0].SEQUENCE;
+ newp.PID = plist[0].PID;
+ newp.BasketCode = plist[0].BasketCode;
+ newp.Zword = plist[0].Zword;
+ newp.Result = "OK";
+ newp.SN = plist[0].SN;
+
+ var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result;
+ M141Config.mesnum2++;
+ if (tems == null)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES寮傚父 杩斿洖鏁版嵁涓簄ull");
+ }
+ else
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacBarcodeQueueBak>(tems);
+ if (obj.zstatus == "200")
+ {
+ Plc1.WriteSingleAddress(2120, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES鎴愬姛 {tems}");
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ catch (Exception)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ ///浜у搧1涓婁紶
+ var plcnum1 = Plc3.Read(2102, 1, out _);
+ if (plcnum1[0] != 0)
+ {
+ var plist1 = mysqlhelper.GetProductList(plcnum1 + "_1");
+ ProductModel newp1 = new ProductModel();
+ newp1.SEQUENCE = plist[0].SEQUENCE;
+ newp1.PID = plist[0].PID;
+ newp1.BasketCode = plist[0].BasketCode;
+ newp1.Zword = plist[0].Zword;
+ newp1.Result = "OK";
+ newp1.SN = plist[0].SN;
+
+ var tems1 = Task.Run(() => mqtt.MESForProduceAsync(newp1, M141Config.mesnum2.ToString(), M141Config.numpro)).Result;
+ M141Config.mesnum2++;
+ if (tems1 == null)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES寮傚父 杩斿洖鏁版嵁涓簄ull");
+ }
+ else
+ {
+ try
+ {
+ var obj1 = JsonConvert.DeserializeObject<AutoLineMacBarcodeQueueBak>(tems1);
+ if (obj1.zstatus == "200")
+ {
+ Plc1.WriteSingleAddress(2120, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES鎴愬姛 {tems}");
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ catch (Exception)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ }
+
+ }
+ return msg;
+ }
+
+ [ProcessMethod("", "MESupFinallydata", "MES涓婁紶灏剧洏OK浜у搧鑾峰彇鏉$爜", InvokeType.TestInvoke)]
+ public ResponseMessage MESupFinallydata(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+
+ Plc3 = invokeDevice as PLCBase;
+ ///浜у搧1涓婁紶
+ var plcnum = Plc3.Read(2100, 1, out _);
+ var plist = mysqlhelper.GetProductList(plcnum+"_1");
+ ProductModel newp = new ProductModel();
+ newp.SEQUENCE = plist[0].SEQUENCE;
+ newp.PID = plist[0].PID;
+ newp.BasketCode = plist[0].BasketCode;
+ newp.Zword = plist[0].Zword;
+ newp.Result = "OK";
+ newp.SN = plist[0].SN;
+ //涓婁紶灏剧洏鏁版嵁
+ var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro,"Y")).Result;
+ M141Config.mesnum2 = 0;
+ if (tems == null)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES寮傚父 杩斿洖鏁版嵁涓簄ull");
+ }
+ else
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacBarcodeQueueBak>(tems);
+ if (obj.zstatus == "200")
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES鎴愬姛 {tems}");
+ //鎵撳嵃鑾峰彇鐨勬潯鐮�
+ if (M141Config.Isprint && !string.IsNullOrEmpty(obj.tary_label))
+ {
+ StartPrint(obj.tary_label);
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ catch (Exception)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{plist[0].PID}鏁版嵁涓婁紶MES澶辫触 {tems}");
+ }
+ }
+ return msg;
+ }
+ [ProcessMethod("", "MESup1", "MES涓婁紶杩涙枡鍙g┖绡�", InvokeType.TestInvoke)]
+ public ResponseMessage MESup1(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+
+ //int num = Plc1.Read(1575, 1, out _)[0];
+ //mqtt.Send("1", "DS02216", "", "0", num.ToString());
+ //Plc1.WriteSingleAddress(1590, 1, out _);
+ if (ConfigAOI1.ISupMES)
+ {
+ string Msg = Task.Run(() => mqtt.MESForBasketAsync("1", "DS02216", "", "0", ConfigAOI1.mesnum1.ToString())).Result;
+
+ if (ConfigAOI1.ISokMes)
+ {
+ ConfigAOI1.mesnum1++;
+ Plc1.WriteSingleAddress(1590, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"宸插己鍒禡ES涓婁紶杩涙枡鍙g┖绡�");
+ }
+ else
+ {
+ if (Msg != null)
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+ if (obj?.zstatus == "200")
+ {
+ ConfigAOI1.mesnum1++;
+ Plc1.WriteSingleAddress(1590, 1, out _);
+ }
+ else
+ {
+ try
+ {
+ if (Msg.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum1 = int.Parse(matches[0].Value)+ 1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum1 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ }
+ LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}");
+
+ }
+ catch
+ {
+
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} ");
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ }
+ }
+ else
+ {
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 鑾峰彇杩斿洖鍊煎け璐� 杩斿洖鏁版嵁null ");
+ }
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插叧闂璵es杩炴帴");
+ Plc1.WriteSingleAddress(1590, 1, out _);
+
+ }
+
+ return msg;
+ }
+ [ProcessMethod("", "MESup2", "MES涓婁紶杩涙枡鍙f弧杞�", InvokeType.TestInvoke)]
+ public ResponseMessage MESup2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+ //int num = Plc1.Read(1575, 1, out _)[0];
+
+ //mqtt.Send("1", "DS02216", "", "1", num.ToString());
+ //Plc1.WriteSingleAddress(1590, 1, out _);
+
+ if (ConfigAOI1.ISupMES)
+ {
+ string Msg = Task.Run(() => mqtt.MESForBasketAsync("1", "DS02216", "", "1", ConfigAOI1.mesnum1.ToString())).Result;
+ if (ConfigAOI1.ISokMes)
+ {
+ ConfigAOI1.mesnum1++;
+ Plc1.WriteSingleAddress(1590, 1, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"宸插己鍒禡ES涓婁紶杩涙枡鍙f弧杞�");
+ }
+ else
+ {
+ if (Msg != null)
+ {
+
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+ if (obj?.zstatus == "200")
+ {
+ ConfigAOI1.mesnum1++;
+ Plc1.WriteSingleAddress(1590, 1, out _);
+ }
+ else
+ {
+ try
+ {
+ if (Msg.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum1 = int.Parse(matches[0].Value) + 1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum1 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ }
+
+ LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}");
+ }
+ catch
+ {
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} ");
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null ");
+ Plc1.WriteSingleAddress(1590, 2, out _);
+ }
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插叧闂璵es杩炴帴");
+ Plc1.WriteSingleAddress(1590, 1, out _);
+ }
+ return msg;
+ }
+ [ProcessMethod("", "MESup3", "MES涓婁紶涓嬫枡鍙g┖绡�", InvokeType.TestInvoke)]
+ public ResponseMessage MESup3(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+ if (ConfigAOI1.ISupMES)
+ {
+ int num = Plc1.Read(1578, 1, out _)[0];
+ string Msg = Task.Run(() => mqtt.MESForBasketAsync("3", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "0", ConfigAOI1.mesnum3.ToString())).Result;
+ if (Msg != null)
+ {
+
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+ if (obj?.zstatus == "200")
+ {
+ ConfigAOI1.mesnum3++;
+ Plc1.WriteSingleAddress(1591, 1, out _);
+ }
+ else
+ {
+ try
+ {
+ if (Msg.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum3 = int.Parse(matches[0].Value)+1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum3 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙g┖绡� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}");
+
+ }
+ catch
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙g┖绡� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} ");
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙d笅鏂欏彛绌虹绌虹 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null ");
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插叧闂璵es杩炴帴");
+ Plc1.WriteSingleAddress(1591, 1, out _);
+ }
+
+ return msg;
+ }
+
+ [ProcessMethod("", "MESup4", "MES涓婁紶涓嬫枡鍙f弧杞�", InvokeType.TestInvoke)]
+ public ResponseMessage MESup4(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
+
+ if (ConfigAOI1.ISupMES)
+ {
+ int num = Plc1.Read(1578, 1, out _)[0];
+ //mqtt.Send("3", "DS02217", ConfigAOI1.Dicbasketcode.ContainsKey(num) ? ConfigAOI1.Dicbasketcode[num] : ConfigAOI1.basketcode, "2", num.ToString());
+
+ string Msg = Task.Run(() => mqtt.MESForBasketAsync("3", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "2", ConfigAOI1.mesnum3.ToString())).Result;
+ if (Msg != null)
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+ if (obj?.zstatus == "200")
+ {
+ ConfigAOI1.mesnum3++;
+ }
+ else
+ {
+ try
+ {
+ if (Msg.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum3 = int.Parse(matches[0].Value) + 1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum3 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+ LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}");
+ }
+ catch
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} ");
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null ");
+ }
+ Thread.Sleep(1000);
+ //mqtt.Send("4", "DS02217", ConfigAOI1.Dicbasketcode.ContainsKey(num) ? ConfigAOI1.Dicbasketcode[num] : ConfigAOI1.basketcode, "1", num.ToString());
+ Msg = Task.Run(() => mqtt.MESForBasketAsync("4", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "1", ConfigAOI1.mesnum4.ToString())).Result;
+ if (Msg != null)
+ {
+ try
+ {
+ var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+ if (obj?.zstatus == "200")
+ {
+ ConfigAOI1.mesnum4++;
+ Plc1.WriteSingleAddress(1591, 1, out _);
+ }
+ else
+ {
+ try
+ {
+ if (Msg.Contains("version閿欒"))
+ {
+ Regex reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2));
+ MatchCollection matches = reg.Matches(obj.zerrmsg);
+ if (matches[0] != null && matches.Count == 3)
+ {
+ ConfigAOI1.mesnum4 = int.Parse(matches[0].Value) + 1;
+ }
+ else
+ {
+ ConfigAOI1.mesnum4 = 0;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}");
+ }
+ catch
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} ");
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null ");
+ Plc1.WriteSingleAddress(1591, 2, out _);
+ }
+ }
+ else
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"宸插叧闂璵es杩炴帴");
+ Plc1.WriteSingleAddress(1591, 1, out _);
+ }
+ return msg;
+ }
}
}
--
Gitblit v1.8.0