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_0x9202 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { public override string Description => "平台下发远程录像回放控制"; public override ushort MsgId => 0x9202; /// /// 音视频通道号 /// public byte AVChannelNo { get; set; } /// /// 回放控制 /// public byte PlayBackControl { get; set; } /// /// 快进或快退倍数 /// public byte FastForwardOrFastRewindMultiples { get; set; } /// /// 拖动回放位置 /// public DateTime DragPlaybackPosition { get; set; } public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9202 value = new JT808_0x9202(); value.AVChannelNo = reader.ReadByte(); writer.WriteString($"[{value.AVChannelNo.ReadNumber()}]音视频通道号", AVChannelNoDisplay(value.AVChannelNo)); value.PlayBackControl = reader.ReadByte(); writer.WriteString($"[{value.PlayBackControl.ReadNumber()}]回放控制", PlayBackControlDisplay(value.PlayBackControl)); value.FastForwardOrFastRewindMultiples = reader.ReadByte(); writer.WriteString($"[{value.FastForwardOrFastRewindMultiples.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.FastForwardOrFastRewindMultiples)); value.DragPlaybackPosition = reader.ReadDateTime6(); writer.WriteString($"[{value.DragPlaybackPosition.ToString("yyMMddHHmmss")}]拖动回放位置", value.DragPlaybackPosition.ToString("yyyy-MM-dd HH:mm:ss")); string AVChannelNoDisplay(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 PlayBackControlDisplay(byte PlayBackControl) { switch (PlayBackControl) { case 0: return "开始回放"; case 1: return "暂停回放"; case 2: return "结束回放"; case 3: return "快进回放"; case 4: return "关键帧快退回放"; case 5: return "拖动回放"; case 6: return "关键帧播放"; default: return "未知"; } } string FastForwardOrFastRewindMultiplesDisplay(byte FastForwardOrFastRewindMultiples) { switch (FastForwardOrFastRewindMultiples) { case 0: return "无效"; case 1: return "1倍"; case 2: return "2倍"; case 3: return "4倍"; case 4: return "8倍"; case 5: return "16倍"; default: return "未知"; } } } public JT808_0x9202 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x9202 jT808_0x9202 = new JT808_0x9202(); jT808_0x9202.AVChannelNo = reader.ReadByte(); jT808_0x9202.PlayBackControl = reader.ReadByte(); jT808_0x9202.FastForwardOrFastRewindMultiples = reader.ReadByte(); jT808_0x9202.DragPlaybackPosition = reader.ReadDateTime6(); return jT808_0x9202; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9202 value, IJT808Config config) { writer.WriteByte(value.AVChannelNo); writer.WriteByte(value.PlayBackControl); writer.WriteByte(value.FastForwardOrFastRewindMultiples); writer.WriteDateTime6(value.DragPlaybackPosition); } } }