using HybirdFrameworkDriver.Common; namespace Service.Charger.Msg; public abstract class APCI : IToBytes { /// /// 报文长度 /// public ushort PackLen { get; set; } /// /// 控制域 /// public uint CtlArea { get; set; } /// /// 目标地址 /// public byte[]? DestAddr { get; set; } /// /// 源地址 /// public uint SrcAddr { get; set; } public byte[] ToBytes() { var bodyBytes = GetBytes(); var list = new List(); list.AddRange(Client.PlcConst.StartChar); //TODO::将字节长度16-》12,目前Plc长度不符合报文 所以改成16 list.AddRange(BitConverter.GetBytes((ushort)(bodyBytes.Length + 12))); list.AddRange(BitConverter.GetBytes(CtlArea)); if (DestAddr != null) { list.AddRange(DestAddr); } else { DestAddr=new byte[4]; list.AddRange(DestAddr); } list.AddRange(BitConverter.GetBytes(SrcAddr)); list.AddRange(bodyBytes); return list.ToArray(); } public abstract byte[] GetBytes(); }