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;
using static HH.WCS.JuShi.util.Settings;
namespace HH.WCS.JuShi.process
{
///
/// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
///
internal class DeviceProcess
{
public static string rgvSafeInteraction = null;
internal static void Analysis(string data, string ip)
{
if (data != null)
{
//按钮盒
//收
//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.Substring(0, 2) == "3a")
{
//数据序号
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 == "立库入库区").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);
}
}
//rgv安全交互
else if (data.Substring(0, 4) == "3f00")
{
////无信号不管
//if (data.Trim() != "3f001020304050600d0a")
//{
LogHelper.Info($"RGV安全交互接收信号{data}");
rgvSafeInteraction = data.Substring(4,12);
//var reservoirs = Settings.SafeInteractions.Where(s => s.ip == ip).FirstOrDefault();
////1允许卸货 2卸货完成确认
//string datastr = "";
//switch (reservoirs.pointCode)
//{
// case "RGV1":
// datastr = data.Substring(5, 1);
// break;
// case "RGV2":
// datastr = data.Substring(7, 1);
// break;
// case "RGV3":
// datastr = data.Substring(9, 1);
// break;
// case "RGV4":
// datastr = data.Substring(11, 1);
// break;
// case "RGV5":
// datastr = data.Substring(13, 1);
// break;
// case "RGV6":
// datastr = data.Substring(15, 1);
// break;
//}
////接受信号存到内存
//if (rgvSafeInteraction != null)
//{
// //string转成list
// var jsonList = JsonConvert.DeserializeObject>(rgvSafeInteraction);
// var list = jsonList.Where(s => s.ip == ip).First();
// if (list != null)
// {
// //不为空就先删再加上
// jsonList.Remove(list);
// }
// jsonList.Add(new SafeInteraction { ip = ip, data = datastr });
// rgvSafeInteraction = JsonConvert.SerializeObject(jsonList);
//}
//else
//{
// //第一次进
// var safeInteractions = new List{new SafeInteraction { ip = ip, data = datastr }};
// rgvSafeInteraction = JsonConvert.SerializeObject(safeInteractions);
//}
//LogHelper.Info($"RGV安全交互 存入内存参数{rgvSafeInteraction}");
//}
}
}
//
//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)
{
}
}
}