using JT808.Protocol.Attributes; using JT808.Protocol.Formatters; using JT808.Protocol.MessagePack; namespace JT808.Protocol.MessageBody { /// /// 多媒体数据上传 /// 0x0801 /// public class JT808_0x0801 : JT808Bodies, IJT808MessagePackFormatter { public override ushort MsgId { get; } = 0x0801; /// /// 多媒体 ID /// public uint MultimediaId { get; set; } /// /// 多媒体类型 /// /// public byte MultimediaType { get; set; } /// /// 多媒体格式编码 /// 0:JPEG;1:TIF;2:MP3;3:WAV;4:WMV;其他保留 /// /// public byte MultimediaCodingFormat { get; set; } /// /// 事件项编码 /// /// public byte EventItemCoding { get; set; } /// /// 通道 ID /// public byte ChannelId { get; set; } /// /// 位置信息汇报(0x0200)消息体 /// 表示拍摄或录制的起始时刻的位置基本信息数据 /// public JT808_0x0200 Position { get; set; } /// /// 多媒体数据包 /// public byte[] MultimediaDataPackage { get; set; } public JT808_0x0801 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0801 jT808_0X0801 = new JT808_0x0801(); jT808_0X0801.MultimediaId = reader.ReadUInt32(); jT808_0X0801.MultimediaType = reader.ReadByte(); jT808_0X0801.MultimediaCodingFormat = reader.ReadByte(); jT808_0X0801.EventItemCoding = reader.ReadByte(); jT808_0X0801.ChannelId = reader.ReadByte(); JT808MessagePackReader positionReader = new JT808MessagePackReader(reader.ReadArray(28)); jT808_0X0801.Position = config.GetMessagePackFormatter().Deserialize(ref positionReader, config); jT808_0X0801.MultimediaDataPackage = reader.ReadContent().ToArray(); return jT808_0X0801; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0801 value, IJT808Config config) { writer.WriteUInt32(value.MultimediaId); writer.WriteByte(value.MultimediaType); writer.WriteByte(value.MultimediaCodingFormat); writer.WriteByte(value.EventItemCoding); writer.WriteByte(value.ChannelId); config.GetMessagePackFormatter().Serialize(ref writer, value.Position, config); writer.WriteArray(value.MultimediaDataPackage); } } }