|
|
using HighWayIot.Log4net;
|
|
|
using HighWayIot.Repository.domain;
|
|
|
using HighWayIot.Repository.service.Impl;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows.Forms;
|
|
|
using static System.Windows.Forms.AxHost;
|
|
|
|
|
|
namespace HighWayIot.TouchSocket
|
|
|
{
|
|
|
public class BufferAnalysis
|
|
|
{
|
|
|
private static LogHelper logHelper = LogHelper.Instance;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 心跳报文分析
|
|
|
/// </summary>
|
|
|
/// <param name="bytes"></param>
|
|
|
public static void HeartbeatSocket(string ip)
|
|
|
{
|
|
|
BaseHeartbeatServiceImpl sql = new BaseHeartbeatServiceImpl();
|
|
|
|
|
|
if (sql.UpdateHeartbeatInfo(ip) == 0)
|
|
|
{
|
|
|
RFIDHeartbeat heartbeat = new RFIDHeartbeat()
|
|
|
{
|
|
|
IP = ip,
|
|
|
BeatTime = DateTime.Now,
|
|
|
};
|
|
|
sql.AddHeartbeatInfo(heartbeat);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// RFID发送设备状态
|
|
|
/// </summary>
|
|
|
/// <param name="bytes"></param>
|
|
|
public static void RFIDStatusSocket(string ip)
|
|
|
{
|
|
|
BaseStateServiceImpl sql = new BaseStateServiceImpl();
|
|
|
RFIDState rFIDState = new RFIDState()
|
|
|
{
|
|
|
IP = ip,
|
|
|
LogTime = DateTime.Now,
|
|
|
};
|
|
|
sql.AddStateInfo(rFIDState);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// RFID发送条码
|
|
|
/// </summary>
|
|
|
/// <param name="bytes"></param>
|
|
|
public static void RFIDCodeSocket(JObject obj, string ip)
|
|
|
{
|
|
|
BaseContentServiceImpl sql = new BaseContentServiceImpl();
|
|
|
RFIDContent content;
|
|
|
if (obj["status"].Value<string>() == "GR")
|
|
|
{
|
|
|
JArray jArray = obj["epc"] as JArray;
|
|
|
List<string> list = new List<string>();
|
|
|
foreach(var item in jArray)
|
|
|
{
|
|
|
list.Add(item.Value<string>());
|
|
|
}
|
|
|
string epc = "";
|
|
|
for (int i = 0; i < list.Count; i++)
|
|
|
{
|
|
|
if (i == 0)
|
|
|
{
|
|
|
epc = list[i];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
epc += "_" + list[i];
|
|
|
}
|
|
|
}
|
|
|
content = new RFIDContent()
|
|
|
{
|
|
|
IP = ip,
|
|
|
SN = obj["sn"].Value<string>(),
|
|
|
Length = obj["length"].Value<int>(),
|
|
|
Interval = obj["interval"].Value<int>(),
|
|
|
Status = obj["status"].Value<string>(),
|
|
|
EPC = epc,
|
|
|
Tips = obj["tips"].Value<string>(),
|
|
|
LogTime = DateTime.Now,
|
|
|
};
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
content = new RFIDContent()
|
|
|
{
|
|
|
IP = ip,
|
|
|
SN = obj["sn"].Value<string>(),
|
|
|
Length = obj["length"].Value<int>(),
|
|
|
Interval = obj["interval"].Value<int>(),
|
|
|
Status = obj["status"].Value<string>(),
|
|
|
EPC = "",
|
|
|
Tips = obj["tips"].Value<string>(),
|
|
|
LogTime = DateTime.Now,
|
|
|
};
|
|
|
}
|
|
|
sql.AddContentInfo(content);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 将一个数组拆成另外一个数组
|
|
|
/// </summary>
|
|
|
/// <param name="originbyte">原始数组,被拆分的数组</param>
|
|
|
/// <param name="oringinstartindex">从原始数组第几个元素开始</param>
|
|
|
/// <param name="destbytelength">目标数组的长度</param>
|
|
|
/// <param name="destbytestartindex">目标数组开始的元素序号,默认为0</param>
|
|
|
/// <returns></returns>
|
|
|
public static byte[] SplitByteArray(byte[] originbyte, int oringinstartindex, int destbytelength, int destbytestartindex = 0)
|
|
|
{
|
|
|
byte[] result = new byte[destbytelength];
|
|
|
System.Array.Copy(originbyte, oringinstartindex, result, destbytestartindex, destbytelength);
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|