You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
6.2 KiB

  1. using JT808.Protocol.Formatters;
  2. using JT808.Protocol.Interfaces;
  3. using JT808.Protocol.MessageBody;
  4. using JT808.Protocol.MessagePack;
  5. using System.Collections.Generic;
  6. using System.Text.Json;
  7. namespace JT808.Protocol.Extensions.JT1078.MessageBody
  8. {
  9. /// <summary>
  10. ///终端休眠模式唤醒设置
  11. /// 0x8103_0x007C
  12. /// </summary>
  13. public class JT808_0x8103_0x007C_TimerWakeDayParamter:IJT808MessagePackFormatter<JT808_0x8103_0x007C_TimerWakeDayParamter>, IJT808Analyze
  14. {
  15. /// <summary>
  16. /// 定时唤醒启用标志
  17. /// </summary>
  18. public byte TimerWakeEnableFlag { get; set; }
  19. /// <summary>
  20. /// 时间段1唤醒时间
  21. /// 2
  22. /// </summary>
  23. public string TimePeriod1WakeTime { get; set; }
  24. /// <summary>
  25. /// 时间段1关闭时间
  26. /// 2
  27. /// </summary>
  28. public string TimePeriod1CloseTime { get; set; }
  29. /// <summary>
  30. /// 时间段2唤醒时间
  31. /// 2
  32. /// </summary>
  33. public string TimePeriod2WakeTime { get; set; }
  34. /// <summary>
  35. /// 时间段2关闭时间
  36. /// 2
  37. /// </summary>
  38. public string TimePeriod2CloseTime { get; set; }
  39. /// <summary>
  40. /// 时间段3唤醒时间
  41. /// 2
  42. /// </summary>
  43. public string TimePeriod3WakeTime { get; set; }
  44. /// <summary>
  45. /// 时间段3关闭时间
  46. /// 2
  47. /// </summary>
  48. public string TimePeriod3CloseTime { get; set; }
  49. /// <summary>
  50. /// 时间段4唤醒时间
  51. /// 2
  52. /// </summary>
  53. public string TimePeriod4WakeTime { get; set; }
  54. /// <summary>
  55. /// 时间段4关闭时间
  56. /// 2
  57. /// </summary>
  58. public string TimePeriod4CloseTime { get; set; }
  59. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  60. {
  61. JT808_0x8103_0x007C_TimerWakeDayParamter value = new JT808_0x8103_0x007C_TimerWakeDayParamter();
  62. value.TimerWakeEnableFlag = reader.ReadByte();
  63. writer.WriteString($"[{value.TimerWakeEnableFlag.ReadNumber()}]定时唤醒启用标志", TimerWakeEnableFlagDisplay(value.TimerWakeEnableFlag));
  64. value.TimePeriod1WakeTime = reader.ReadBCD(4);
  65. writer.WriteString($"[{value.TimePeriod1WakeTime}]时间段1唤醒时间", value.TimePeriod1WakeTime);
  66. value.TimePeriod1CloseTime = reader.ReadBCD(4);
  67. writer.WriteString($"[{value.TimePeriod1CloseTime}]时间段1关闭时间", value.TimePeriod1CloseTime);
  68. value.TimePeriod2WakeTime = reader.ReadBCD(4);
  69. writer.WriteString($"[{value.TimePeriod2WakeTime}]时间段2唤醒时间", value.TimePeriod2WakeTime);
  70. value.TimePeriod2CloseTime = reader.ReadBCD(4);
  71. writer.WriteString($"[{value.TimePeriod2CloseTime}]时间段2关闭时间", value.TimePeriod2CloseTime);
  72. value.TimePeriod3WakeTime = reader.ReadBCD(4);
  73. writer.WriteString($"[{value.TimePeriod3WakeTime}]时间段3唤醒时间", value.TimePeriod3WakeTime);
  74. value.TimePeriod3CloseTime = reader.ReadBCD(4);
  75. writer.WriteString($"[{value.TimePeriod3CloseTime}]时间段3关闭时间", value.TimePeriod3CloseTime);
  76. value.TimePeriod4WakeTime = reader.ReadBCD(4);
  77. writer.WriteString($"[{value.TimePeriod4WakeTime}]时间段4唤醒时间", value.TimePeriod4WakeTime);
  78. value.TimePeriod4CloseTime = reader.ReadBCD(4);
  79. writer.WriteString($"[{value.TimePeriod4CloseTime}]时间段4关闭时间", value.TimePeriod4CloseTime);
  80. string TimerWakeEnableFlagDisplay(byte TimerWakeEnableFlag) {
  81. string timerWakeEnableFlagDisplay = string.Empty;
  82. timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段1唤醒时间启用" : "";
  83. timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段2唤醒时间启用" : "";
  84. timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段3唤醒时间启用" : "";
  85. timerWakeEnableFlagDisplay += (TimerWakeEnableFlag & 0x01) == 1 ? ",时间段4唤醒时间启用" : "";
  86. return timerWakeEnableFlagDisplay.Length > 0 ? timerWakeEnableFlagDisplay.Substring(1) : "";
  87. }
  88. }
  89. public JT808_0x8103_0x007C_TimerWakeDayParamter Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  90. {
  91. JT808_0x8103_0x007C_TimerWakeDayParamter jT808_0x8103_0x007C_TimerWakeDayParamter = new JT808_0x8103_0x007C_TimerWakeDayParamter();
  92. jT808_0x8103_0x007C_TimerWakeDayParamter.TimerWakeEnableFlag = reader.ReadByte();
  93. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod1WakeTime = reader.ReadBCD(4);
  94. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod1CloseTime = reader.ReadBCD(4);
  95. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod2WakeTime = reader.ReadBCD(4);
  96. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod2CloseTime = reader.ReadBCD(4);
  97. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod3WakeTime = reader.ReadBCD(4);
  98. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod3CloseTime = reader.ReadBCD(4);
  99. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod4WakeTime = reader.ReadBCD(4);
  100. jT808_0x8103_0x007C_TimerWakeDayParamter.TimePeriod4CloseTime = reader.ReadBCD(4);
  101. return jT808_0x8103_0x007C_TimerWakeDayParamter;
  102. }
  103. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x007C_TimerWakeDayParamter value, IJT808Config config)
  104. {
  105. writer.WriteByte(value.TimerWakeEnableFlag);
  106. writer.WriteBCD(value.TimePeriod1WakeTime, 4);
  107. writer.WriteBCD(value.TimePeriod1CloseTime, 4);
  108. writer.WriteBCD(value.TimePeriod2WakeTime, 4);
  109. writer.WriteBCD(value.TimePeriod2CloseTime, 4);
  110. writer.WriteBCD(value.TimePeriod3WakeTime, 4);
  111. writer.WriteBCD(value.TimePeriod3CloseTime, 4);
  112. writer.WriteBCD(value.TimePeriod4WakeTime, 4);
  113. writer.WriteBCD(value.TimePeriod4CloseTime, 4);
  114. }
  115. }
  116. }