using JT808.Protocol.Formatters; using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using System; using System.Collections.Generic; using System.Text; using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// /// 终端上传音视频资源列表 /// public class JT808_0x1205_AVResouce:IJT808MessagePackFormatter, IJT808Analyze { /// /// 逻辑通道号 /// public byte LogicChannelNo { get; set; } /// /// 开始时间 /// public DateTime BeginTime { get; set; } /// /// 结束时间 /// public DateTime EndTime { get; set; } /// /// 报警标志 /// public uint AlarmFlag { get; set; } /// /// 音视频资源类型 /// public byte AVResourceType { get; set; } /// /// 码流类型 /// public byte StreamType { get; set; } /// /// 存储器类型 /// public byte MemoryType { get; set; } /// /// 文件大小 /// public uint FileSize { get; set; } public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x1205_AVResouce value = new JT808_0x1205_AVResouce(); value.LogicChannelNo = reader.ReadByte(); writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); value.BeginTime = reader.ReadDateTime6(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]开始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.BeginTime = reader.ReadDateTime6(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]开始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.AlarmFlag = reader.ReadUInt32(); writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag);//此处的报警标志不是很明白 value.AVResourceType = reader.ReadByte(); writer.WriteString($"[{value.AVResourceType.ReadNumber()}]音视频资源类型", AVResourceTypeDisplay(value.AVResourceType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryType = reader.ReadByte(); writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemoryTypeDisplay(value.MemoryType)); value.FileSize = reader.ReadUInt32(); writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小(B)", value.FileSize); string LogicalChannelNoDisplay(byte LogicalChannelNo) { switch (LogicalChannelNo) { case 1: return "驾驶员"; case 2: return "车辆正前方"; case 3: return "车前门"; case 4: return "车厢前部"; case 5: return "车厢后部"; case 7: return "行李舱"; case 8: return "车辆左侧"; case 9: return "车辆右侧"; case 10: return "车辆正后方"; case 11: return "车厢中部"; case 12: return "车中门"; case 13: return "驾驶席车门"; case 33: return "驾驶员"; case 36: return "车厢前部"; case 37: return "车厢后部"; default: return "预留"; } } string AVResourceTypeDisplay(byte AVResourceType) { switch (AVResourceType) { case 0: return "音视频"; case 1: return "音频"; case 2: return "视频"; default: break; } return "未知"; } string StreamTypeDisplay(byte StreamType) { switch (StreamType) { case 1: return "主码流"; case 2: return "子码流"; default: return "未知"; } } string MemoryTypeDisplay(byte MemoryType) { switch (MemoryType) { case 1: return "主存储器"; case 2: return "灾备存储器"; default: return "未知"; } } } public JT808_0x1205_AVResouce Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x1205_AVResouce jT808_0x1205_AVResouce = new JT808_0x1205_AVResouce(); jT808_0x1205_AVResouce.LogicChannelNo = reader.ReadByte(); jT808_0x1205_AVResouce.BeginTime = reader.ReadDateTime6(); jT808_0x1205_AVResouce.EndTime = reader.ReadDateTime6(); jT808_0x1205_AVResouce.AlarmFlag = reader.ReadUInt32(); jT808_0x1205_AVResouce.AVResourceType = reader.ReadByte(); jT808_0x1205_AVResouce.StreamType = reader.ReadByte(); jT808_0x1205_AVResouce.MemoryType = reader.ReadByte(); jT808_0x1205_AVResouce.FileSize = reader.ReadUInt32(); return jT808_0x1205_AVResouce; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1205_AVResouce value, IJT808Config config) { writer.WriteByte(value.LogicChannelNo); writer.WriteDateTime6(value.BeginTime); writer.WriteDateTime6(value.EndTime); writer.WriteUInt32(value.AlarmFlag); writer.WriteByte(value.AVResourceType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemoryType); writer.WriteUInt32(value.FileSize); } } }