From 839cd7bba832638a5ba1fb2d3e4e0619e33651e3 Mon Sep 17 00:00:00 2001
From: zxx <Zxx@HanInfo>
Date: 星期一, 19 五月 2025 17:33:28 +0800
Subject: [PATCH] 主动绑定接口 rgv安全交互

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/DeviceProcess.cs |  143 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 100 insertions(+), 43 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/DeviceProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/DeviceProcess.cs
index 688b6da..7945429 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/DeviceProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/DeviceProcess.cs
@@ -9,6 +9,7 @@
 using System.Linq;
 using System.Threading;
 using static HH.WCS.JuShi.LISTA.process.HttpModel;
+using static HH.WCS.JuShi.util.Settings;
 
 namespace HH.WCS.JuShi.process
 {
@@ -17,57 +18,113 @@
     /// </summary>
     internal class DeviceProcess
     {
+        public static string rgvSafeInteraction = null;
         internal static void Analysis(string data, string ip)
         {
-            //鏀�-            //3A 00 01 00 01 05 73 00 02 01 01 B8
-            //鍙�-            //2A 00 01 00 01 05 73 00 02 01 01 A8
             if (data != null)
             {
-                //鏁版嵁搴忓彿
-                data = data.Substring(16, 2);
-                //鏍规嵁ip鎵惧埌璧风偣/缁堢偣璐т綅
-                var plc = Settings.deviceInfos.Where(a => a.address == ip).FirstOrDefault();
-                var loc = plc.TN_Location;
-                //1鍏ュ簱2甯歌閫佹3绱ф�閫佹4涓夊绌烘墭5鍏绌烘墭
-                bool result = false;
-                if (data.Equals("01"))
-                {
-                    var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "RGV搴撳尯").FirstOrDefault();
-                    result= TaskProcess.tcpOffline(loc, reservoirs.areaCode);
-                }
-                else if (data.Equals("02"))
-                {
-                    var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "甯歌閫佹鍖�).FirstOrDefault();
-                    result = TaskProcess.tcpOffline(loc, reservoirs.areaCode);
-                }
-                else if (data.Equals("03"))
-                {
-                    var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "绱ф�閫佹鍖�).FirstOrDefault();
-                    result = TaskProcess.tcpOffline(loc, reservoirs.areaCode);
-                }
-                else if (data.Equals("04"))
-                {
-                    var reservoirs = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault();
-                    result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc);
-                }
-                else if (data.Equals("05"))
-                {
-                    var reservoirs = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault();
-                    result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc);
-                }
+                //鎸夐挳鐩�+                //鏀�+                //3A 00 01 00 01 05 73 00 02 01 01 B8
+                //鍙�                 //2A 00 01 00 01 05 73 00 02 01 01 A8
-                // 杈撳叆鐨勫崄鍏繘鍒跺瓧绗︿覆鏁扮粍
-                string[] hexValues = { "2A", "00", "01", "00", "01", "05", "73", "00", "02", data, "01" };
-                // 璁$畻鎬诲拰
-                int sum = hexValues.Sum(hex => Convert.ToInt32(hex, 16));
-                string returndata= hexValues.ToString()+ sum;
-                if (result)
+                if (data.Substring(0, 2) == "3A")
                 {
-                    PlcHelper.SendHex(ip, returndata);
+                    //鏁版嵁搴忓彿
+                    data = data.Substring(16, 2);
+                    //鏍规嵁ip鎵惧埌璧风偣/缁堢偣璐т綅
+                    var plc = Settings.deviceInfos.Where(a => a.address == ip).FirstOrDefault();
+                    var loc = plc.TN_Location;
+                    //1鍏ュ簱2甯歌閫佹3绱ф�閫佹4涓夊绌烘墭5鍏绌烘墭
+                    bool result = false;
+                    if (data.Equals("01"))
+                    {
+                        var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "RGV搴撳尯").FirstOrDefault();
+                        result = TaskProcess.tcpOffline(loc, reservoirs.areaCode);
+                    }
+                    else if (data.Equals("02"))
+                    {
+                        var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "甯歌閫佹鍖�).FirstOrDefault();
+                        result = TaskProcess.tcpOffline(loc, reservoirs.areaCode);
+                    }
+                    else if (data.Equals("03"))
+                    {
+                        var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "绱ф�閫佹鍖�).FirstOrDefault();
+                        result = TaskProcess.tcpOffline(loc, reservoirs.areaCode);
+                    }
+                    else if (data.Equals("04"))
+                    {
+                        var reservoirs = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault();
+                        result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc);
+                    }
+                    else if (data.Equals("05"))
+                    {
+                        var reservoirs = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault();
+                        result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc);
+                    }
+                    //2A 00 01 00 01 05 73 00 02 01 01 A8
+                    // 杈撳叆鐨勫崄鍏繘鍒跺瓧绗︿覆鏁扮粍
+                    string[] hexValues = { "2A", "00", "01", "00", "01", "05", "73", "00", "02", data, "01" };
+                    // 璁$畻鎬诲拰
+                    int sum = hexValues.Sum(hex => Convert.ToInt32(hex, 16));
+                    string returndata = hexValues.ToString() + sum;
+                    if (result)
+                    {
+                        PlcHelper.SendHex(ip, returndata);
+                    }
                 }
+                //rgv瀹夊叏浜や簰
+                else if (data.Substring(0, 4) == "3F00")
+                {
+                    //鏃犱俊鍙蜂笉绠�+                    if (data.Trim() != "3F00102030400D0A")
+                    {
+                        LogHelper.Info($"RGV瀹夊叏浜や簰鎺ユ敹淇″彿{data}");
+                        var reservoirs = Settings.SafeInteractions.Where(s => s.ip == ip).FirstOrDefault();
+                        //1鍏佽鍗歌揣  2鍗歌揣瀹屾垚纭
+                        string datastr = "";
+                        if (reservoirs.pointCode == "RGV1")
+                        {
+                            datastr = data.Substring(5, 1);
+                        }
+                        else if (reservoirs.pointCode == "RGV2")
+                        {
+                            datastr = data.Substring(7, 1);
+                        }
+                        else if (reservoirs.pointCode == "RGV3")
+                        {
+                            datastr = data.Substring(9, 1);
+                        }
+                        else if (reservoirs.pointCode == "RGV4")
+                        {
+                            datastr = data.Substring(11, 1);
+                        }
 
+                        //鎺ュ彈淇″彿瀛樺埌鍐呭瓨
+                        if (rgvSafeInteraction != null)
+                        {
+                            //string杞垚list
+                            var jsonList = JsonConvert.DeserializeObject<List<SafeInteraction>>(rgvSafeInteraction);
+                            var list = jsonList.Where(s => s.ip == ip).First();
+                            if (list != null)
+                            {
+                                //涓嶄负绌哄氨鍏堝垹鍐嶅姞涓�+                                jsonList.Remove(list);
+                            }
+                            jsonList.Add(new SafeInteraction { ip = ip, data = datastr });
+                            rgvSafeInteraction = JsonConvert.SerializeObject(jsonList);
+                        }
+                        else
+                        {
+                            //绗竴娆¤繘
+                            var safeInteractions = new List<SafeInteraction>{new SafeInteraction { ip = ip, data = datastr }};
+                            rgvSafeInteraction = JsonConvert.SerializeObject(safeInteractions);
+                        }
+                        LogHelper.Info($"RGV瀹夊叏浜や簰 瀛樺叆鍐呭瓨鍙傛暟{rgvSafeInteraction}");
+                    }
+
+
+                }
             }
 
 

--
Gitblit v1.9.1