Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

62 wiersze
2.6 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_0x007B
  12. /// </summary>
  13. public class JT808_0x8103_0x007B : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x007B>, IJT808Analyze
  14. {
  15. public override uint ParamId { get; set; } = 0x007B;
  16. /// <summary>
  17. /// 数据 长度
  18. /// </summary>
  19. public override byte ParamLength { get; set; } = 2;
  20. /// <summary>
  21. /// 车辆核载人数
  22. /// </summary>
  23. public byte NuclearLoadNumber { get; set; }
  24. /// <summary>
  25. /// 疲劳程度阈值
  26. /// </summary>
  27. public byte FatigueThreshold { get; set; }
  28. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  29. {
  30. JT808_0x8103_0x007B value = new JT808_0x8103_0x007B();
  31. value.ParamId = reader.ReadUInt32();
  32. writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数 ID", value.ParamId);
  33. value.ParamLength = reader.ReadByte();
  34. writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]数据长度", value.ParamLength);
  35. value.NuclearLoadNumber = reader.ReadByte();
  36. writer.WriteNumber($"[{value.NuclearLoadNumber.ReadNumber()}]车辆核载人数", value.NuclearLoadNumber);
  37. value.FatigueThreshold = reader.ReadByte();
  38. writer.WriteNumber($"[{value.FatigueThreshold.ReadNumber()}]疲劳程度阈值", value.FatigueThreshold);
  39. }
  40. public JT808_0x8103_0x007B Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  41. {
  42. JT808_0x8103_0x007B jT808_0x8103_0x007B = new JT808_0x8103_0x007B();
  43. jT808_0x8103_0x007B.ParamId = reader.ReadUInt32();
  44. jT808_0x8103_0x007B.ParamLength = reader.ReadByte();
  45. jT808_0x8103_0x007B.NuclearLoadNumber = reader.ReadByte();
  46. jT808_0x8103_0x007B.FatigueThreshold = reader.ReadByte();
  47. return jT808_0x8103_0x007B;
  48. }
  49. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x007B value, IJT808Config config)
  50. {
  51. writer.WriteUInt32(value.ParamId);
  52. writer.WriteByte(value.ParamLength);
  53. writer.WriteByte(value.NuclearLoadNumber);
  54. writer.WriteByte(value.FatigueThreshold);
  55. }
  56. }
  57. }