zxx
2025-05-27 cdf20a4525a2ff9f6fe2c1e9b69fa2854c5848fd
HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/device/TcpServer.cs
@@ -1,4 +1,5 @@
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
@@ -22,6 +23,7 @@
                socket.Listen(30);
                //开始接受客户端连接请求
                socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);
                //Console.ReadLine();
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
@@ -30,7 +32,11 @@
        public static Dictionary<string, Socket> clients = new Dictionary<string, Socket>();
        public static Dictionary<string, byte[]> buffers = new Dictionary<string, byte[]>();
        public static void ClientAccepted(IAsyncResult ar) {
            //try
            //{
            Console.WriteLine("ClientAccepted================");
            var socket = ar.AsyncState as Socket;
            var client = socket.EndAccept(ar);
            string remote_ip = ((System.Net.IPEndPoint)client.RemoteEndPoint).Address.ToString();
@@ -55,11 +61,19 @@
            }
            //准备接受下一个客户端请求
            socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine($"ClientAccepted 异常: {ex.ToString()}");
            //}
        }
        public static void ReceiveMessage(IAsyncResult ar) {
            try {
                //Console.WriteLine("ReceiveMessage================");
                var socket = ar.AsyncState as Socket;
                string remote_ip = ((System.Net.IPEndPoint)socket.RemoteEndPoint).Address.ToString();
                var length = socket.EndReceive(ar);
@@ -80,10 +94,12 @@
                    if (buffers.Keys.Contains(remote_ip)) {
                        //读取出来消息内容
                        var message = GetHexString(buffers[remote_ip], length);//16   10
                        Console.WriteLine(message);
                        Console.WriteLine($"ReceiveMessage接收信号:{message}");
                        LogHelper.Info($"ReceiveMessage接收信号:{message}");
                        //Console.WriteLine(message);
                        //3A 00 01 00 01 05 73 00 02 01 01 B8
                        //按钮盒
                        if (message.Substring(0, 2) == "3A") {
                        if (message.Substring(0, 2) == "3a") {
                            //显示消息
                            if (length != 24) {
                                message = message.Substring(0, 24);
@@ -91,14 +107,14 @@
                            PlcHelper.Receive(remote_ip, message);
                            Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer
                        }
                        //3F 00 10 20 30 40 0D 0A
                        //3F 00 10 20 30 40 50 60 0D 0A
                        //安全交互
                        else if (message.Substring(0, 4) == "3F00")
                        else if (message.Substring(0, 4) == "3f00")
                        {
                            //显示消息
                            if (length != 16)
                            if (length != 20)
                            {
                                message = message.Substring(0, 16);
                                message = message.Substring(0, 20);
                            }
                            PlcHelper.Receive(remote_ip, message);
                            Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer