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