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 });
}
}
}
}