Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

94 linhas
3.8 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_0x0079
  12. /// </summary>
  13. public class JT808_0x8103_0x0079 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0079>, IJT808Analyze
  14. {
  15. /// <summary>
  16. ///
  17. /// </summary>
  18. public override uint ParamId { get; set; } = 0x0079;
  19. /// <summary>
  20. /// 数据 长度
  21. /// </summary>
  22. public override byte ParamLength { get; set; } = 3;
  23. /// <summary>
  24. /// 特殊报警录像存储阈值
  25. /// </summary>
  26. public byte StorageThresholds { get; set; }
  27. /// <summary>
  28. /// 特殊报警录像持续时间
  29. /// </summary>
  30. public byte Duration { get; set; }
  31. /// <summary>
  32. /// 特殊报警标识起始时间
  33. /// 分钟min
  34. /// </summary>
  35. public byte BeginMinute { get; set; }
  36. /// <summary>
  37. /// 特殊报警录像参数设置
  38. /// </summary>
  39. public override string Description => "特殊报警录像参数设置";
  40. /// <summary>
  41. ///
  42. /// </summary>
  43. /// <param name="reader"></param>
  44. /// <param name="writer"></param>
  45. /// <param name="config"></param>
  46. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  47. {
  48. JT808_0x8103_0x0079 value = new JT808_0x8103_0x0079();
  49. value.ParamId = reader.ReadUInt32();
  50. writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数 ID", value.ParamId);
  51. value.ParamLength = reader.ReadByte();
  52. writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]数据长度", value.ParamLength);
  53. value.StorageThresholds = reader.ReadByte();
  54. writer.WriteNumber($"[{value.StorageThresholds.ReadNumber()}]特殊报警录像存储阈值(百分比)", value.StorageThresholds);
  55. value.Duration = reader.ReadByte();
  56. writer.WriteNumber($"[{value.Duration.ReadNumber()}]特殊报警录像持续时间(分钟)", value.Duration);
  57. value.BeginMinute = reader.ReadByte();
  58. writer.WriteNumber($"[{value.BeginMinute.ReadNumber()}]特殊报警标识起始时间(分钟)", value.BeginMinute);
  59. }
  60. /// <summary>
  61. ///
  62. /// </summary>
  63. /// <param name="reader"></param>
  64. /// <param name="config"></param>
  65. /// <returns></returns>
  66. public JT808_0x8103_0x0079 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  67. {
  68. JT808_0x8103_0x0079 jT808_0x8103_0x0079 = new JT808_0x8103_0x0079();
  69. jT808_0x8103_0x0079.ParamId = reader.ReadUInt32();
  70. jT808_0x8103_0x0079.ParamLength = reader.ReadByte();
  71. jT808_0x8103_0x0079.StorageThresholds = reader.ReadByte();
  72. jT808_0x8103_0x0079.Duration = reader.ReadByte();
  73. jT808_0x8103_0x0079.BeginMinute = reader.ReadByte();
  74. return jT808_0x8103_0x0079;
  75. }
  76. /// <summary>
  77. ///
  78. /// </summary>
  79. /// <param name="writer"></param>
  80. /// <param name="value"></param>
  81. /// <param name="config"></param>
  82. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0079 value, IJT808Config config)
  83. {
  84. writer.WriteUInt32(value.ParamId);
  85. writer.WriteByte(value.ParamLength);
  86. writer.WriteByte(value.StorageThresholds);
  87. writer.WriteByte(value.Duration);
  88. writer.WriteByte(value.BeginMinute);
  89. }
  90. }
  91. }