using JT808.Protocol.Enums; using JT808.Protocol.Extensions; using JT808.Protocol.Formatters; using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using System.Text.Json; namespace JT808.Protocol.MessageBody { /// /// 录音开始命令 /// public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { /// /// 0x8804 /// public override ushort MsgId { get; } = 0x8804; /// /// 录音开始命令 /// public override string Description => "录音开始命令"; /// /// 录音命令 /// 0:停止录音;0x01:开始录音; /// public JT808RecordCmd RecordCmd { get; set; } /// /// 单位为秒(s),0 表示一直录音 /// public ushort RecordTime { get; set; } /// /// 保存标志 /// 0:实时上传;1:保存 /// public JT808RecordSave RecordSave { get; set; } /// /// 音频采样率 /// 0:8K;1:11K;2:23K;3:32K;其他保留 /// public byte AudioSampleRate { get; set; } /// /// /// /// /// /// public JT808_0x8804 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8804 jT808_0X8804 = new JT808_0x8804(); jT808_0X8804.RecordCmd = (JT808RecordCmd)reader.ReadByte(); jT808_0X8804.RecordTime = reader.ReadUInt16(); jT808_0X8804.RecordSave = (JT808RecordSave)reader.ReadByte(); jT808_0X8804.AudioSampleRate = reader.ReadByte(); return jT808_0X8804; } /// /// /// /// /// /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8804 value, IJT808Config config) { writer.WriteByte((byte)value.RecordCmd); writer.WriteUInt16(value.RecordTime); writer.WriteByte((byte)value.RecordSave); writer.WriteByte(value.AudioSampleRate); } /// /// /// /// /// /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8804 value = new JT808_0x8804(); value.RecordCmd = (JT808RecordCmd)reader.ReadByte(); value.RecordTime = reader.ReadUInt16(); value.RecordSave = (JT808RecordSave)reader.ReadByte(); value.AudioSampleRate = reader.ReadByte(); writer.WriteNumber($"[{ ((byte)(value.RecordCmd)).ReadNumber()}]录音命令-{value.RecordCmd.ToString()}", (byte)value.RecordCmd); writer.WriteNumber($"[{value.RecordTime.ReadNumber()}]单位为秒(s)", value.RecordTime); writer.WriteNumber($"[{((byte)value.RecordSave).ReadNumber()}]保存标志-{value.RecordSave.ToString()}", (byte)value.RecordSave); switch (value.AudioSampleRate) { case 0: writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-8K", value.AudioSampleRate); break; case 1: writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-11K", value.AudioSampleRate); break; case 2: writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-23K", value.AudioSampleRate); break; case 3: writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-32K", value.AudioSampleRate); break; default: writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-保留", value.AudioSampleRate); break; } } } }