From 94649b9419b4139e8e9db540e58b4d613cef9623 Mon Sep 17 00:00:00 2001 From: wangsr Date: Thu, 4 Jan 2024 14:11:46 +0800 Subject: [PATCH] =?UTF-8?q?add=20-=20=E5=AE=9E=E6=97=B6=E6=8E=A5=E6=94=B6?= =?UTF-8?q?=E4=B8=89=E7=A7=8D=E6=8A=A5=E6=96=87=E5=B9=B6=E5=88=86=E6=9E=90?= =?UTF-8?q?=E7=84=B6=E5=90=8E=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HighWayIot.TouchSocket/BufferAnalysis.cs | 65 +++++++++++++++++++++--- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/HighWayIot.TouchSocket/BufferAnalysis.cs b/HighWayIot.TouchSocket/BufferAnalysis.cs index 51f435a..4804e66 100644 --- a/HighWayIot.TouchSocket/BufferAnalysis.cs +++ b/HighWayIot.TouchSocket/BufferAnalysis.cs @@ -1,4 +1,5 @@ -using HighWayIot.Repository.domain; +using HighWayIot.Log4net; +using HighWayIot.Repository.domain; using HighWayIot.Repository.service.Impl; using System; using System.Collections.Generic; @@ -10,18 +11,18 @@ namespace HighWayIot.TouchSocket { public class BufferAnalysis { + private static LogHelper logHelper = LogHelper.Instance; + /// /// 心跳报文分析 /// /// public static void HeartbeatSocket(byte[] bytes) { - string a = Encoding.ASCII.GetString(bytes, 4, 4); - int deviceno; - if(int.TryParse(a, out deviceno)) + if (int.TryParse(Encoding.ASCII.GetString(bytes, 4, 4), out int deviceno)) { BaseHeartbeatServiceImpl sql = new BaseHeartbeatServiceImpl(); - if(sql.UpdateHeartbeatInfo(deviceno) == 0) + if (sql.UpdateHeartbeatInfo(deviceno) == 0) { RFIDHeartbeat heartbeat = new RFIDHeartbeat() { @@ -31,6 +32,10 @@ namespace HighWayIot.TouchSocket sql.AddHeartbeatInfo(heartbeat); } } + else + { + logHelper.Error("心跳报文编号数值转换出现错误!"); + } } /// @@ -39,16 +44,60 @@ namespace HighWayIot.TouchSocket /// public static void RFIDStatusSocket(byte[] bytes) { - + if (int.TryParse(Encoding.ASCII.GetString(bytes, 4, 4), out int deviceno) && + int.TryParse(Encoding.ASCII.GetString(bytes, 9, 1), out int state)) + { + BaseStateServiceImpl sql = new BaseStateServiceImpl(); + RFIDState rFIDState = new RFIDState() + { + DeviceNo = deviceno, + DeviceState = state == 1 ? true : false, + LogTime = DateTime.Now, + }; + sql.AddStateInfo(rFIDState); + } + else + { + logHelper.Error("设备状态报文编号数值转换出现错误!"); + } } /// /// RFID发送条码 /// /// - public static void RFIDCodeSocket(byte[] bytes) + public static void RFIDCodeSocket(byte[] bytes) { - + string readKind = Encoding.ASCII.GetString(bytes, 4, 2); + if (int.TryParse(Encoding.ASCII.GetString(bytes, 7, 4), out int deviceno)) + { + RFIDContent rFIDContent = new RFIDContent() + { + DeviceNo = deviceno, + ReadKind = readKind, + LogTime = DateTime.Now, + }; + string content = ""; + if (readKind == "NB") + { + content = Encoding.ASCII.GetString(bytes, 12, 16); + } + else if (readKind == "GR") + { + content = Encoding.ASCII.GetString(bytes, 12, 16); + } + else if (readKind == "MR") + { + content = Encoding.ASCII.GetString(bytes, 12, bytes.Length - 12 - 2); // 减去条码内容之前和之后内容的长度 + } + rFIDContent.Content = content; + BaseContentServiceImpl sql = new BaseContentServiceImpl(); + sql.AddContentInfo(rFIDContent); + } + else + { + logHelper.Error("条码发送报文编号数值转换出现错误!"); + } } ///