zxx
2025-05-15 380b269f623092f371d46f718a4cdf72817d0489
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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;
 
namespace HH.WCS.JuShi.process
{
    /// <summary>
    /// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
    /// </summary>
    internal class DeviceProcess
    {
        internal static void Analysis(string data, string ip)
        {
            //收
            //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 != null)
            {
                //数据序号
                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 == "RGV库区").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);
                }
 
            }
 
 
            //
            //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)
        {
 
        }
    }
}