using JT808.Protocol.Extensions; using JT808.Protocol.Formatters; using JT808.Protocol.MessagePack; using System; namespace JT808.Protocol.MessageBody { /// /// 电子运单上报 /// 0x0701 /// public class JT808_0x0701 : JT808Bodies, IJT808MessagePackFormatter { /// /// 电子运单长度 /// public uint ElectronicWaybillLength { get; set; } public byte[] ElectronicContent { get; set; } /// /// 电子运单内容 /// 注意:需要具体的实现 /// public JT808_0x0701_CustomBodyBase ElectronicContentObj { get; set; } public JT808_0x0701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0701 jT808_0X0701 = new JT808_0x0701(); jT808_0X0701.ElectronicWaybillLength = reader.ReadUInt32(); jT808_0X0701.ElectronicContent = reader.ReadArray((int)jT808_0X0701.ElectronicWaybillLength).ToArray(); return jT808_0X0701; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0701 value, IJT808Config config) { writer.Skip(4, out int skipPosition); object obj = config.GetMessagePackFormatterByType(value.ElectronicContentObj.GetType()); JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.ElectronicContentObj, config); int contentLength = writer.GetCurrentPosition() - skipPosition - 4; writer.WriteInt32Return(contentLength, skipPosition); } } }