From 6a4463810e276b62356d77c88509fa6fa7af65cf Mon Sep 17 00:00:00 2001
From: kingno <30263@KINGNO>
Date: 星期三, 23 七月 2025 15:46:33 +0800
Subject: [PATCH] mes数据逻辑上传完善,缺陷代码完善,添加S4工位的S2结果上传Plc的通信日志mes优化

---
 src/Bro.M141_AOI1.Process/AOI1Process.cs |  330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 327 insertions(+), 3 deletions(-)

diff --git a/src/Bro.M141_AOI1.Process/AOI1Process.cs b/src/Bro.M141_AOI1.Process/AOI1Process.cs
index 823c420..5e34210 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;
@@ -7,6 +8,7 @@
 using Bro.UI.Model.Winform;
 using HalconDotNet;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using NPOI.POIFS.Crypt.Dsig;
 using NPOI.SS.Formula.Functions;
 using NPOI.XSSF.Streaming.Values;
@@ -48,6 +50,7 @@
             base.Open();
         }
 
+
         [ProcessMethod("", "PositionCheck_P1", "宸ヤ綅1妫�娴�", InvokeType.TestInvoke)]
         public ResponseMessage PositionCheck_P1(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
         {
@@ -64,6 +67,7 @@
 
             return msg;
         }
+
 
         [ProcessMethod("", "PositionCheck_P2", "宸ヤ綅2妫�娴�", InvokeType.TestInvoke)]
         public ResponseMessage PositionCheck_P2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
@@ -82,6 +86,7 @@
             return msg;
         }
 
+
         [ProcessMethod("", "PositionCheck_P3", "宸ヤ綅3妫�娴�", InvokeType.TestInvoke)]
         public ResponseMessage PositionCheck_P3(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
         {
@@ -98,7 +103,6 @@
 
             return msg;
         }
-
 
 
         [ProcessMethod("ImageCheck", "ReadBarcode", "璇荤爜", InvokeType.TestInvoke)]
@@ -193,11 +197,71 @@
                 }
                 else
                 {
-                    Plc1.WriteSingleAddress(1524, 1, out _);
-                    Plc1.WriteSingleAddress(1514, 1, out _);
                     ConfigAOI1.basketcode = barcode;
+                    int num = Plc1.Read(1577, 1, out _)[0];
+
+                    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++;
+
+                        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
+                            {
+                                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
+                    {
+                        Plc1.WriteSingleAddress(1524, 1, out _);
+                        Plc1.WriteSingleAddress(1514, 1, out _);
+                    }
+                    SaveProcessConfig(ConfigAOI1);
                 }
+
             }
 
             return msg;
@@ -233,6 +297,7 @@
 
             return "NOREAD";
         }
+
 
         private bool CheckBarcodeValid(string barcode)
         {
@@ -388,6 +453,265 @@
         }
 
 
+        [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("", "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 (Msg != null)
+                {
+                    try
+                    {
+                        var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+                        if (obj?.zstatus == "200")
+                        {
+                            ConfigAOI1.mesnum1++;
+                            Plc1.WriteSingleAddress(1590, 1, out _);
+                        }
+                        else
+                        {
+                            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
+            {
+                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 (Msg != null)
+                {
+
+                    try
+                    {
+                        var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg);
+                        if (obj?.zstatus == "200")
+                        {
+                            ConfigAOI1.mesnum1++;
+                            Plc1.WriteSingleAddress(1590, 1, out _);
+                        }
+                        else
+                        {
+                            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
+            {
+                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
+                        {
+                            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
+            {
+                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++;
+                        }
+                        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
+                        {
+                            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
+            {
+                Plc1.WriteSingleAddress(1591, 1, out _);
+            }
+            return msg;
+        }
+
+
+
+
 
     }
 }

--
Gitblit v1.8.0