#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}#读写器"; } } }