您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

101 行
3.5 KiB

  1. using JT808.Protocol.Formatters;
  2. using JT808.Protocol.Interfaces;
  3. using JT808.Protocol.MessagePack;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Text.Json;
  8. namespace JT808.Protocol.Extensions.JT1078.MessageBody
  9. {
  10. /// <summary>
  11. /// 红外补光控制
  12. /// </summary>
  13. public class JT808_0x9305 : JT808MessagePackFormatter<JT808_0x9305>, JT808Bodies, IJT808Analyze
  14. {
  15. /// <summary>
  16. /// 红外补光控制
  17. /// </summary>
  18. public string Description => "红外补光控制";
  19. /// <summary>
  20. ///
  21. /// </summary>
  22. public bool SkipSerialization => false;
  23. /// <summary>
  24. /// 0x9305
  25. /// </summary>
  26. public ushort MsgId => 0x9305;
  27. /// <summary>
  28. /// 逻辑通道号
  29. /// </summary>
  30. public byte ChannelNo { get; set; }
  31. /// <summary>
  32. /// 启停标识
  33. /// </summary>
  34. public byte StartOrStop { get; set; }
  35. /// <summary>
  36. ///
  37. /// </summary>
  38. /// <param name="reader"></param>
  39. /// <param name="writer"></param>
  40. /// <param name="config"></param>
  41. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  42. {
  43. JT808_0x9305 value = new JT808_0x9305();
  44. value.ChannelNo = reader.ReadByte();
  45. writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo));
  46. value.StartOrStop = reader.ReadByte();
  47. writer.WriteString($"[{value.StartOrStop.ReadNumber()}]启停标识", value.StartOrStop == 0 ? "停止" : "启动");
  48. static string LogicalChannelNoDisplay(byte LogicalChannelNo)
  49. {
  50. return LogicalChannelNo switch
  51. {
  52. 1 => "驾驶员",
  53. 2 => "车辆正前方",
  54. 3 => "车前门",
  55. 4 => "车厢前部",
  56. 5 => "车厢后部",
  57. 7 => "行李舱",
  58. 8 => "车辆左侧",
  59. 9 => "车辆右侧",
  60. 10 => "车辆正后方",
  61. 11 => "车厢中部",
  62. 12 => "车中门",
  63. 13 => "驾驶席车门",
  64. 33 => "驾驶员",
  65. 36 => "车厢前部",
  66. 37 => "车厢后部",
  67. _ => "预留",
  68. };
  69. }
  70. }
  71. /// <summary>
  72. ///
  73. /// </summary>
  74. /// <param name="reader"></param>
  75. /// <param name="config"></param>
  76. /// <returns></returns>
  77. public override JT808_0x9305 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  78. {
  79. var jT808_0x9305 = new JT808_0x9305();
  80. jT808_0x9305.ChannelNo = reader.ReadByte();
  81. jT808_0x9305.StartOrStop = reader.ReadByte();
  82. return jT808_0x9305;
  83. }
  84. /// <summary>
  85. ///
  86. /// </summary>
  87. /// <param name="writer"></param>
  88. /// <param name="value"></param>
  89. /// <param name="config"></param>
  90. /// <returns></returns>
  91. public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x9305 value, IJT808Config config)
  92. {
  93. writer.WriteByte(value.ChannelNo);
  94. writer.WriteByte(value.StartOrStop);
  95. }
  96. #pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释
  97. }
  98. }