add - 实时接收三种报文并分析然后插入数据库

master
wangsr 1 year ago
parent 3822a56b41
commit 94649b9419

@ -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;
/// <summary>
/// 心跳报文分析
/// </summary>
/// <param name="bytes"></param>
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("心跳报文编号数值转换出现错误!");
}
}
/// <summary>
@ -39,16 +44,60 @@ namespace HighWayIot.TouchSocket
/// <param name="bytes"></param>
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("设备状态报文编号数值转换出现错误!");
}
}
/// <summary>
/// RFID发送条码
/// </summary>
/// <param name="bytes"></param>
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("条码发送报文编号数值转换出现错误!");
}
}
/// <summary>

Loading…
Cancel
Save