|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Serilog;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using TouchSocket.Sockets;
-
- namespace Rdh.SocketServer.Client.Models
- {
- public class EleMedKitData : IBetweenAndRequestInfo
- {
- private static readonly Byte[] _headBytes;
- private static readonly Byte[] _tailBytes;
- private static readonly Encoding _electronicMedicineKitEncoding;
- private String _message;
- private BaseEleMedKitProtocol _protocolDataInfo;
- private String _contentSource;
- public EleMedKitData()
- {
-
- }
- static EleMedKitData()
- {
- _electronicMedicineKitEncoding = Encoding.GetEncoding("gb2312");
- _headBytes = _electronicMedicineKitEncoding.GetBytes(EleMedKitProtocolFlags.Start);
- _tailBytes = _electronicMedicineKitEncoding.GetBytes(EleMedKitProtocolFlags.End);
- }
-
- public static Byte[] HeadBytes
- {
- get => _headBytes;
- }
-
- public static Byte[] TailBytes
- {
- get => _tailBytes;
- }
- public String? Message
- {
- get => _message;
- set
- {
- _message = value;
- }
- }
- public String? ContentSource
- {
- get => _contentSource;
- }
- public BaseEleMedKitProtocol? ProtocolDataInfo
- {
- get => _protocolDataInfo;
- }
- public void OnParsingBody(byte[] body)
- {
- if (body == null || body.Length == 0)
- {
- return;
- }
- try
- {
- _contentSource = _electronicMedicineKitEncoding.GetString(body).Replace("\u0000", String.Empty);
- Log.Debug("接收电子药箱消息:" + _contentSource);
- String[] lines = EleMedKitProtocolHelper.GetContentLines(_contentSource);
- BaseEleMedKitProtocol protocol = EleMedKitProtocolHelper.GetRequestEleMedKitProtocol(lines[0]);
- if (protocol.GetType() == typeof(UnSupportProtocol))
- {
- _message = "无效的数据";
- }
- else
- {
- if (protocol.ParseContent(lines))
- {
- _protocolDataInfo = protocol;
- }
- else
- {
- _message = "数据解析失败";
- }
- }
- }
- catch (Exception ex)
- {
- _message = "发生异常:" + ex.Message;
- }
- }
-
- public bool OnParsingEndCode(byte[] endCode)
- {
- return _tailBytes.SequenceEqual(endCode);
- }
-
- public bool OnParsingStartCode(byte[] startCode)
- {
- return _headBytes.SequenceEqual(startCode);
- }
- }
- }
|