You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.9 KiB
C#

#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2026 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.IntelliBelt.Business
* 35A6CB22-720D-4A7D-91D7-FF4D8A71B2A5
*
* WenJY
*
* 2026-04-24 16:08:18
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using Sln.IntelliBelt.Business.@base;
using Sln.IntelliBelt.Common;
using Sln.IntelliBelt.Config;
using Sln.IntelliBelt.Serilog;
using Sln.IntelliBelt.Socket.Adapter;
using Sln.IntelliBelt.WebSocket;
using TouchSocket.Core;
using TouchSocket.Sockets;
namespace Sln.IntelliBelt.Business;
public class ReaderStatusHandler:BaseBusiness
{
public ReaderStatusHandler(SerilogHelper logger, AppConfig appConfig, StringChange stringChange,WebSocketHelper webSocket) : base(logger, appConfig, stringChange,webSocket)
{
}
public override void BufferAnalysis(TcpSessionClient client, BufferRequestInfo requestInfo, long bodyLength)
{
_logger.Info($"{client.Id}链接收到终端{requestInfo.terminalAddr}上报的状态信息:{requestInfo.content}");
try
{
for (int i = 0; i < requestInfo.contentLen; i++)
{
int res = (int)requestInfo.body[i];
_logger.Info($"{i + 1}#读写器状态:{(res == 1 ? "线" : "线")}");
}
base.GetJsonStr(client.Id, requestInfo,out string jsonStr);
_webSocket.PushMsg(jsonStr);
if (client.Id != _appConfig.terminalCode)
{
_logger.Info($"更新连接 Id:{client.Id}==>{_appConfig.terminalCode}");
client.ResetIdAsync(_appConfig.terminalCode).Wait();
}
//this.ResponseHandle(client, requestInfo);
}
catch (Exception e)
{
_logger.Info($"终端状态信息处理异常");
}
}
public override void ResponseHandle(TcpSessionClient client, BufferRequestInfo requestInfo)
{
//throw new NotImplementedException();
ResponsePack responsePack = new ResponsePack()
{
terminalAddr = _stringChange.HexStrTorbytes(requestInfo.terminalAddr),
identCode = Convert.ToByte(requestInfo.identCode),
contentLen = 0x01,
content = new byte[] { 0x01 }
};
var messagePack = base.GetMessagePack(ref responsePack);
_logger.Info($"返回终端状态信息:{_stringChange.bytesToHexStr(messagePack,messagePack.Length)}");
client.SendAsync(messagePack);
}
}