using HybirdFrameworkDriver.Common; using Service.Charger.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(ChargerConst.StartChar); 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(); }