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