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.

83 lines
3.5 KiB

  1. using JT808.Protocol.Formatters;
  2. using JT808.Protocol.Interfaces;
  3. using JT808.Protocol.MessageBody;
  4. using JT808.Protocol.MessagePack;
  5. using System.Text.Json;
  6. namespace JT808.Protocol.Extensions.YueBiao.MessageBody
  7. {
  8. /// <summary>
  9. /// 盲区监测系统参数
  10. /// </summary>
  11. public class JT808_0x8103_0xF367 : JT808MessagePackFormatter<JT808_0x8103_0xF367>, JT808_0x8103_BodyBase, IJT808Analyze, IJT808_2019_Version
  12. {
  13. /// <summary>
  14. /// 盲区监测系统参数Id
  15. /// </summary>
  16. public uint ParamId { get; set; } = JT808_YueBiao_Constants.JT808_0X8103_0xF367;
  17. /// <summary>
  18. /// 盲区监测系统参数长度
  19. /// </summary>
  20. public byte ParamLength { get; set; } = 2;
  21. /// <summary>
  22. /// 后方接近报警时间阈值
  23. /// </summary>
  24. public byte RearApproachAlarmTimeThreshold { get; set; }
  25. /// <summary>
  26. /// 侧后方接近报警时间阈值
  27. /// </summary>
  28. public byte LateralRearApproachAlarmTimeThreshold { get; set; }
  29. /// <summary>
  30. /// 盲区监测系统参数
  31. /// </summary>
  32. public string Description => "盲区监测系统参数";
  33. /// <summary>
  34. ///
  35. /// </summary>
  36. /// <param name="reader"></param>
  37. /// <param name="writer"></param>
  38. /// <param name="config"></param>
  39. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  40. {
  41. JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367();
  42. value.ParamId = reader.ReadUInt32();
  43. value.ParamLength = reader.ReadByte();
  44. writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
  45. writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
  46. value.RearApproachAlarmTimeThreshold = reader.ReadByte();
  47. writer.WriteNumber($"[{value.RearApproachAlarmTimeThreshold.ReadNumber()}]后方接近报警时间阈值", value.RearApproachAlarmTimeThreshold);
  48. value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
  49. writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold);
  50. }
  51. /// <summary>
  52. ///
  53. /// </summary>
  54. /// <param name="reader"></param>
  55. /// <param name="config"></param>
  56. /// <returns></returns>
  57. public override JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  58. {
  59. JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367();
  60. value.ParamId = reader.ReadUInt32();
  61. value.ParamLength = reader.ReadByte();
  62. value.RearApproachAlarmTimeThreshold = reader.ReadByte();
  63. value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
  64. return value;
  65. }
  66. /// <summary>
  67. ///
  68. /// </summary>
  69. /// <param name="writer"></param>
  70. /// <param name="value"></param>
  71. /// <param name="config"></param>
  72. public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config)
  73. {
  74. writer.WriteUInt32(value.ParamId);
  75. writer.WriteByte(2);
  76. writer.WriteByte(value.RearApproachAlarmTimeThreshold);
  77. writer.WriteByte(value.LateralRearApproachAlarmTimeThreshold);
  78. }
  79. }
  80. }