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("条码发送报文编号数值转换出现错误!"); + } } ///