using JT808.Protocol.Formatters; using JT808.Protocol.Interfaces; using JT808.Protocol.MessageBody; using JT808.Protocol.MessagePack; using System.Collections.Generic; using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// ///终端休眠模式唤醒设置 /// 0x8103_0x007C /// public class JT808_0x8103_0x007C_TimerWakeDayParamter:IJT808MessagePackFormatter, IJT808Analyze { /// /// 定时唤醒启用标志 /// public byte TimerWakeEnableFlag { get; set; } /// /// 时间段1唤醒时间 /// 2 /// public string TimePeriod1WakeTime { get; set; } /// /// 时间段1关闭时间 /// 2 /// public string TimePeriod1CloseTime { get; set; } /// /// 时间段2唤醒时间 /// 2 /// public string TimePeriod2WakeTime { get; set; } /// /// 时间段2关闭时间 /// 2 /// public string TimePeriod2CloseTime { get; set; } /// /// 时间段3唤醒时间 /// 2 /// public string TimePeriod3WakeTime { get; set; } /// /// 时间段3关闭时间 /// 2 /// public string TimePeriod3CloseTime { get; set; } /// /// 时间段4唤醒时间 /// 2 /// public string TimePeriod4WakeTime { get; set; } /// /// 时间段4关闭时间 /// 2 /// public string TimePeriod4CloseTime { get; set; } public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8103_0x007C_TimerWakeDayParamter value = new JT808_0x8103_0x007C_TimerWakeDayParamter(); value.TimerWakeEnableFlag = reader.ReadByte(); writer.WriteString($"[{value.TimerWakeEnableFlag.ReadNumber()}]定时唤醒启用标志", TimerWakeEnableFlagDisplay(value.TimerWakeEnableFlag)); value.TimePeriod1WakeTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod1WakeTime}]时间段1唤醒时间", value.TimePeriod1WakeTime); value.TimePeriod1CloseTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod1CloseTime}]时间段1关闭时间", value.TimePeriod1CloseTime); value.TimePeriod2WakeTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod2WakeTime}]时间段2唤醒时间", value.TimePeriod2WakeTime); value.TimePeriod2CloseTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod2CloseTime}]时间段2关闭时间", value.TimePeriod2CloseTime); value.TimePeriod3WakeTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod3WakeTime}]时间段3唤醒时间", value.TimePeriod3WakeTime); value.TimePeriod3CloseTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod3CloseTime}]时间段3关闭时间", value.TimePeriod3CloseTime); value.TimePeriod4WakeTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod4WakeTime}]时间段4唤醒时间", value.TimePeriod4WakeTime); value.TimePeriod4CloseTime = reader.ReadBCD(4); writer.WriteString($"[{value.TimePeriod4CloseTime}]时间段4关闭时间", value.TimePeriod4CloseTime); string TimerWakeEnableFlagDisplay(byte TimerWakeEnableFlag) { string timerWakeEnableFlagDisplay = string.Empty; timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段1唤醒时间启用" : ""; timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段2唤醒时间启用" : ""; timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段3唤醒时间启用" : ""; timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段4唤醒时间启用" : ""; return timerWakeEnableFlagDisplay.Length > 0 ? timerWakeEnableFlagDisplay.Substring(1) : ""; } } public JT808_0x8103_0x007C_TimerWakeDayParamter Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8103_0x007C_TimerWakeDayParamter jT808_0x8103_0x007C_TimerWakeDayParamter = new JT808_0x8103_0x007C_TimerWakeDayParamter(); jT808_0x8103_0x007C_TimerWakeDayParamter.TimerWakeEnableFlag = reader.ReadByte(); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod1WakeTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod1CloseTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod2WakeTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod2CloseTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod3WakeTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod3CloseTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod4WakeTime = reader.ReadBCD(4); jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod4CloseTime = reader.ReadBCD(4); return jT808_0x8103_0x007C_TimerWakeDayParamter; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x007C_TimerWakeDayParamter value, IJT808Config config) { writer.WriteByte(value.TimerWakeEnableFlag); writer.WriteBCD(value.TimePeriod1WakeTime, 4); writer.WriteBCD(value.TimePeriod1CloseTime, 4); writer.WriteBCD(value.TimePeriod2WakeTime, 4); writer.WriteBCD(value.TimePeriod2CloseTime, 4); writer.WriteBCD(value.TimePeriod3WakeTime, 4); writer.WriteBCD(value.TimePeriod3CloseTime, 4); writer.WriteBCD(value.TimePeriod4WakeTime, 4); writer.WriteBCD(value.TimePeriod4CloseTime, 4); } } }