using System; using System.Linq; using HH.WCS.Mobox3.RiDong.generalMethod; using HH.WCS.Mobox3.RiDong.models; using HH.WCS.Mobox3.RiDong.util; namespace HH.WCS.Mobox3.RiDong.process; /// /// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的 /// internal class DeviceProcess { internal static void Analysis(string data, string ip) { 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) { } else if (plc.deviceType == 2) { //出库缓存位的光电信息 //如果有缓存位是空的状态,我们先判断有没有任务终点分配到这里,如果没有,就找一条出库任务,终点是虚拟点的任务,分配到这个空位 //修改任务终点 } } else { Console.WriteLine($"TCP信号处理:未查询到IP为{ip}的数据,请检查deviceInfo配置中心是否存在该IP的数据!"); } } } /// /// 充电门交互 /// /// 车号 /// 门号 /// internal static void Traffic(string forkliftNo, string lockNo, int state) { var conveyorLinesInfo = AdoSqlMethod.QueryFirst(p => p.ENABLE == 1 && p.CODE == lockNo && p.PURPOSE == "充电门"); if (conveyorLinesInfo != null) { // 开门信号 if (state == 1023) { // 初始信号 if (conveyorLinesInfo.CONTROLDOOR == 0) { // 修改状态为1 conveyorLinesInfo.CONTROLDOOR = 1; AdoSqlMethod.UpdateFirst(conveyorLinesInfo, p => new { p.CONTROLDOOR }); } // 开门信号为3,通知小车进去充电 else if (conveyorLinesInfo.CONTROLDOOR == 3) { TaskHelper.Traffic(lockNo); } } // 通知关门 else if (state == 1025) { conveyorLinesInfo.CONTROLDOOR = 4; AdoSqlMethod.UpdateFirst(conveyorLinesInfo, p => new { p.CONTROLDOOR }); } } } }