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;
|
|
/// <summary>
|
/// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
|
/// </summary>
|
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的数据!");
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// 充电门交互
|
/// </summary>
|
/// <param name="forkliftNo">车号</param>
|
/// <param name="lockNo">门号</param>
|
/// <param name="state"></param>
|
internal static void Traffic(string forkliftNo, string lockNo, int state)
|
{
|
var conveyorLinesInfo =
|
AdoSqlMethod<ConveyorLinesInfo>.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<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.CONTROLDOOR });
|
}
|
// 开门信号为3,通知小车进去充电
|
else if (conveyorLinesInfo.CONTROLDOOR == 3)
|
{
|
TaskHelper.Traffic(lockNo);
|
}
|
}
|
// 通知关门
|
else if (state == 1025)
|
{
|
conveyorLinesInfo.CONTROLDOOR = 4;
|
AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.CONTROLDOOR });
|
}
|
}
|
}
|
}
|