using HH.WCS.Mobox3.NFLZ.device;
using HH.WCS.Mobox3.NFLZ.dispatch;
using HH.WCS.Mobox3.NFLZ.util;
using HH.WCS.Mobox3.NFLZ.wms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace HH.WCS.Mobox3.NFLZ.process
{
///
/// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
///
internal class DeviceProcess
{
private static Dictionary LineState = new Dictionary();
public class statemodel
{
public string status { get; set; }
public DateTime modify { get; set; }
}
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) {
LinZhiAnalysisDeviceChange(data, plc);
}
else {
Console.WriteLine($"TCP信号处理:未查询到IP为{ip}的数据,请检查deviceInfo配置中心是否存在该IP的数据!");
}
}
}
///
/// 农夫林芝不同项目设备特殊处理
///
///
///
///
private static void LinZhiAnalysisDeviceChange(string data, Settings.deviceInfo plc)
{
if (plc.deviceType == 1) AnalysisDoor(data, plc);//自动门处理
//if (plc.deviceType == 2) LinJiangAnalysisProductLine(data, plc);//输送线处理 -- 成品下线
//if (plc.deviceType == 3) LinJiangAnalysisProductLine(data, plc);//输送线处理 -- 空托上线
if (plc.deviceType == 4) LinZhiAnalysisPreform(data, plc);//瓶坯机
if (plc.deviceType == 5) LinZhiAnalysisPGDump(data, plc);//瓶盖翻斗机
if (plc.deviceType == 6) LinZhiAnalysisPPDump(data, plc);//瓶坯翻斗机
}
///
/// 瓶坯翻斗机空托下线
///
///
///
///
private static void LinZhiAnalysisPPDump(string data, Settings.deviceInfo plc)
{
LogHelper.Info($"瓶坯翻斗机,查询任务终点:{plc.TN_Location[0]}");
if (LineState.Keys.Contains(plc.TN_Location[0]))
{
LogHelper.Info("瓶坯翻斗机包含该任务终点");
LineState[plc.TN_Location[0]].status = data;
LineState[plc.TN_Location[0]].modify = DateTime.Now;
}
else
{
LogHelper.Info("瓶坯翻斗机未包含该任务终点");
LineState.Add(plc.TN_Location[0], new statemodel { status = data, modify = DateTime.Now });
}
LogHelper.Info($"{plc.deviceName}-{plc.address}-{data}", "瓶坯翻斗机");
var db = new SqlHelper