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();
}