using HH.WCS.JuShi.api; using HH.WCS.JuShi.device; using HH.WCS.JuShi.dispatch; using HH.WCS.JuShi.util; using HH.WCS.JuShi.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using static HH.WCS.JuShi.LISTA.process.HttpModel; namespace HH.WCS.JuShi.process { /// /// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的 /// internal class DeviceProcess { 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); } //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); } } // //if (data.Length >= 6) //{ // //去掉消息头3F 00 // data = data.Substring(4); // //Console.WriteLine($"{ip}-{data}"); // var plc = Settings.deviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault(); // if (plc != null) // { // if (plc.deviceType == 1) // { // if (data == "") // { // Traystacker(plc); // } // } // } // else // { // Console.WriteLine($"TCP信号处理:未查询到IP为{ip}的数据,请检查deviceInfo配置中心是否存在该IP的数据!"); // } //} } internal static void Traffic(string forkliftNo, string lockNo, bool v) { } } }