From d944fda9f2fbf27d83e8fdf880e8fe5267e1f541 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 04 六月 2025 17:24:13 +0800 Subject: [PATCH] 优化空托空箱入库兼容出库容器回库场景,修复货位容器绑定的类型丢失问题 --- device/TcpClientHelper.cs | 83 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 79 insertions(+), 4 deletions(-) diff --git a/device/TcpClientHelper.cs b/device/TcpClientHelper.cs index 740887e..bfdcc2c 100644 --- a/device/TcpClientHelper.cs +++ b/device/TcpClientHelper.cs @@ -64,7 +64,6 @@ lock (_linkLock) { try { - // 鑻ocket瀛樺湪浣嗗疄闄呭凡鏂紑锛屽己鍒舵竻鐞� if (_clientSocket != null && (_clientSocket.Poll(0, SelectMode.SelectRead) && _clientSocket.Available == 0)) { SafeCloseSocket(); @@ -72,13 +71,18 @@ // 鍘熸湁閫昏緫 if (_clientSocket != null && _clientSocket.Connected) { - LogHelper.Info($"鐢垫宸茶繛鎺ワ紝鏃犻渶閲嶈繛锛孖P锛歿ip}锛岀鍙o細{port}"); - return false; + //if (ip == _ip && port == _port) { + LogHelper.Info($"浜х嚎宸茶繛鎺ワ紝鏃犻渶閲嶈繛锛孖P锛歿ip}锛岀鍙o細{port}"); + return false; + //} + + //LogHelper.Info($"oldIP={_ip};newIP={ip};oldPort={_port};newPort={port}"); + //SafeCloseSocket(); } return Init(ip, port); } catch (Exception ex) { - LogHelper.Error($"鐢垫閲嶈繛澶辫触锛孖P锛歿ip}锛岀鍙o細{port}锛屽紓甯革細{ex.Message}", ex); + LogHelper.Error($"浜х嚎閲嶈繛澶辫触锛孖P锛歿ip}锛岀鍙o細{port}锛屽紓甯革細{ex.Message}", ex); return false; } } @@ -210,6 +214,77 @@ } } + /// <summary> + /// {\"item_code\":\"CG1001\",\"batch_no\":\"BN1001\",\"cntr_code\":\"CN2505111\"}<br/> + /// {"item_code":"CG1001","batch_no":"BN1001","cntr_code":"CN2505111"} + /// </summary> + /// <param name="read"></param> + /// <returns></returns> + public static bool TryReadProductionLine(out byte[] read) { + read = null; + try { + if (_clientSocket != null && _clientSocket?.Connected == true) { + if (!_receivedDataQueue.TryGetValue($"{_ip}:{_port}", out byte[] result)) { + LogHelper.Info($"璇讳骇绾挎墭鐩樹笅绾挎暟鎹け璐�); + //read = result; + return false; + } + LogHelper.Info($"璇讳骇绾挎墭鐩樹笅绾挎暟鎹垚鍔燂細{BitConverter.ToString(result)}"); + read = result; + return true; + } + else { + //LogHelper.Info($"_clientSocket={_clientSocket} connected={_clientSocket?.Connected}"); + Link(_ip, _port); + LogHelper.Info($"璇讳骇绾挎墭鐩樹笅绾挎暟鎹け璐ワ紙鏈繛鎺ワ級锛屽噯澶囬噸杩�); + return false; + } + } + catch (Exception ex) { + //LogHelper.Error($"璇讳骇绾挎墭鐩樹笅绾挎暟鎹け璐ワ紙鍙戠敓浜嗗紓甯革細{JsonConvert.SerializeObject(ex)}锛夛細{ex.Message}", ex); + LogHelper.InfoEx(ex); + return false; + /* 寮傚父澶勭悊 */ + } + + //return false; + } + + /// <summary> + /// 灏哅odbus瀵勫瓨鍣ㄦ暟缁勮浆鎹负瀛楄妭鏁扮粍 + /// </summary> + /// <param name="registers">Modbus瀵勫瓨鍣ㄦ暟缁�/param> + /// <returns>瀛楄妭鏁扮粍</returns> + public static byte[] ConvertRegistersToBytes(ushort[] registers) { + // 姣忎釜瀵勫瓨鍣ㄦ槸16浣�2瀛楄妭)锛屾墍浠ユ�瀛楄妭鏁版槸瀵勫瓨鍣ㄦ暟閲忕殑2鍊�+ byte[] bytes = new byte[registers.Length * 2]; + + for (int i = 0; i < registers.Length; i++) { + // Modbus浣跨敤澶х搴忥紝楂樹綅瀛楄妭鍦ㄥ墠 + bytes[i * 2] = (byte)(registers[i] >> 8); // 楂樹綅瀛楄妭 + bytes[i * 2 + 1] = (byte)(registers[i] & 0xFF); // 浣庝綅瀛楄妭 + } + + return bytes; + } + + /// <summary> + /// 灏嗗瓧鑺傛暟缁勮浆鎹负瀛楃涓�+ /// </summary> + /// <param name="bytes">瀛楄妭鏁扮粍</param> + /// <returns>杞崲鍚庣殑瀛楃涓�/returns> + public static string ConvertBytesToString(byte[] bytes) { + // 鏌ユ壘绗竴涓�x00瀛楄妭(瀛楃涓茬粨鏉熺)鐨勪綅缃�+ int length = Array.IndexOf(bytes, (byte)0); + if (length < 0) length = bytes.Length; // 濡傛灉娌℃湁缁撴潫绗︼紝浣跨敤鍏ㄩ儴瀛楄妭 + + // 鏍规嵁璁惧浣跨敤鐨勭紪鐮佽浆鎹�甯歌鐨勬湁ASCII鎴朥TF-8) + // 杩欓噷浣跨敤ASCII缂栫爜浣滀负绀轰緥锛屽疄闄呭簲鏍规嵁璁惧鏂囨。纭畾缂栫爜鏂瑰紡 + return Encoding.ASCII.GetString(bytes, 0, length); + + // 濡傛灉鏄疷TF-8缂栫爜锛屼娇鐢ㄤ笅闈㈣繖琛屼唬鏇夸笂闈㈤偅琛�+ // return Encoding.UTF8.GetString(bytes, 0, length); + } public static bool WriteElevatorDownOk(byte[] sends) { try { -- Gitblit v1.9.1