#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* 版权所有 (c) 2026 WenJY 保留所有权利。
* CLR版本:4.0.30319.42000
* 机器名称:Mr.Wen's MacBook Pro
* 命名空间:Sln.IntelliBelt.Business.base
* 唯一标识:6DE5D45A-D61B-4F49-ABE8-C98677E1CB69
*
* 创建者:WenJY
* 电子邮箱:
* 创建时间:2026-04-24 16:09:42
* 版本:V1.0.0
* 描述:
*
*--------------------------------------------------------------------
* 修改人:
* 时间:
* 修改说明:
*
* 版本:V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using Newtonsoft.Json.Linq;
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.@base;
public abstract class BaseBusiness
{
public SerilogHelper _logger;
public AppConfig _appConfig;
public StringChange _stringChange;
public WebSocketHelper _webSocket;
public BaseBusiness(SerilogHelper logger,AppConfig appConfig,StringChange stringChange, WebSocketHelper webSocket)
{
_logger = logger;
_appConfig = appConfig;
_stringChange = stringChange;
_webSocket = webSocket;
}
///
/// 指令解析方法
///
///
///
public abstract void BufferAnalysis(TcpSessionClient client,BufferRequestInfo requestInfo,long bodyLength);
///
/// 应答响应
///
///
///
public abstract void ResponseHandle(TcpSessionClient client,BufferRequestInfo requestInfo);
///
/// 封装回复指令
///
///
///
public byte[] GetMessagePack(ref ResponsePack packInfo)
{
int bufferLength = packInfo.contentLen + 10 ;
int index = 0;
byte[] buffer = new byte[bufferLength];
buffer[index++] = packInfo.header ;
buffer[index++] = packInfo.terminalType ;
Array.Copy(packInfo.terminalAddr, 0, buffer, index, 2);
index += 2;
buffer[index++] = packInfo.serialNumber ;
buffer[index++] = packInfo.identCode ;
buffer[index++] = packInfo.objType ;
buffer[index++] = packInfo.contentLen ;
Array.Copy(packInfo.content, 0, buffer, index, packInfo.contentLen);
index += packInfo.contentLen;
Byte[] checkBitBytes = new Byte[bufferLength-2];
Array.Copy(buffer, 0, checkBitBytes, 0, checkBitBytes.Length);
buffer[index++] = _stringChange.CalculateChecksum(checkBitBytes);
buffer[index++] = packInfo.tail ;
return buffer;
}
public void GetJsonStr(string clientId, BufferRequestInfo requestInfo,out string jsonStr)
{
// {
// "terminalAddr": "0001", //终端地址
// "identCode":30 //功能标识码
// "objType": 0, //对象类型:0-终端;1-1#读写器;2-2#读写器
// "content": "123456789ABC", //读写器指令
// "clientId": "01-00-00-00" //客户端Id(终端链接后的 Id)
// }
JObject jObj = new JObject();
jObj["clientId"] = clientId;
jObj["terminalAddr"] = requestInfo.terminalAddr;
jObj["identCode"] = requestInfo.identCode;
jObj["objType"] = requestInfo.objType;
jObj["contentLen"] = requestInfo.contentLen;
jObj["content"] = requestInfo.content;
jsonStr = jObj.ToString();
}
///
/// 对象类别
///
///
///
public void GetObjectTypeStr(int objTypeByte,out string objTypeStr)
{
if (objTypeByte == 0x00)
{
objTypeStr = "终端设备";
}
else
{
objTypeStr = $"{(int)objTypeByte}#读写器";
}
}
}