| | |
| | | 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 |
| | | { |
| | |
| | | /// </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 == "拆托机1").FirstOrDefault(); |
| | | result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc); |
| | | } |
| | | else if (data.Equals("05")) |
| | | { |
| | | var reservoirs = Settings.linePlcInfos.Where(s => s.code == "拆托机2").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 == "立库入库区").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 == "拆托机1").FirstOrDefault(); |
| | | result = TaskProcess.tcpEmptyTray(reservoirs.outLoca, loc); |
| | | } |
| | | else if (data.Equals("05")) |
| | | { |
| | | var reservoirs = Settings.linePlcInfos.Where(s => s.code == "拆托机2").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() != "3f001020304050600d0a") |
| | | //{ |
| | | LogHelper.Info($"RGV安全交互接收信号{data}"); |
| | | rgvSafeInteraction = data.Substring(4,12); |
| | | //var reservoirs = Settings.SafeInteractions.Where(s => s.ip == ip).FirstOrDefault(); |
| | | ////1允许卸货 2卸货完成确认 |
| | | //string datastr = ""; |
| | | //switch (reservoirs.pointCode) |
| | | //{ |
| | | // case "RGV1": |
| | | // datastr = data.Substring(5, 1); |
| | | // break; |
| | | // case "RGV2": |
| | | // datastr = data.Substring(7, 1); |
| | | // break; |
| | | // case "RGV3": |
| | | // datastr = data.Substring(9, 1); |
| | | // break; |
| | | // case "RGV4": |
| | | // datastr = data.Substring(11, 1); |
| | | // break; |
| | | // case "RGV5": |
| | | // datastr = data.Substring(13, 1); |
| | | // break; |
| | | // case "RGV6": |
| | | // datastr = data.Substring(15, 1); |
| | | // break; |
| | | //} |
| | | |
| | | ////接受信号存到内存 |
| | | //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}"); |
| | | //} |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |