Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

71 lignes
3.0 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. public override uint ParamId { get; set; } = 0x0079;
  16. /// <summary>
  17. /// 数据 长度
  18. /// </summary>
  19. public override byte ParamLength { get; set; } = 3;
  20. /// <summary>
  21. /// 特殊报警录像存储阈值
  22. /// </summary>
  23. public byte StorageThresholds { get; set; }
  24. /// <summary>
  25. /// 特殊报警录像持续时间
  26. /// </summary>
  27. public byte Duration { get; set; }
  28. /// <summary>
  29. /// 特殊报警标识起始时间
  30. /// 分钟min
  31. /// </summary>
  32. public byte BeginMinute { get; set; }
  33. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  34. {
  35. JT808_0x8103_0x0079 value = new JT808_0x8103_0x0079();
  36. value.ParamId = reader.ReadUInt32();
  37. writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数 ID", value.ParamId);
  38. value.ParamLength = reader.ReadByte();
  39. writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]数据长度", value.ParamLength);
  40. value.StorageThresholds = reader.ReadByte();
  41. writer.WriteNumber($"[{value.StorageThresholds.ReadNumber()}]特殊报警录像存储阈值(百分比)", value.StorageThresholds);
  42. value.Duration = reader.ReadByte();
  43. writer.WriteNumber($"[{value.Duration.ReadNumber()}]特殊报警录像持续时间(分钟)", value.Duration);
  44. value.BeginMinute = reader.ReadByte();
  45. writer.WriteNumber($"[{value.BeginMinute.ReadNumber()}]特殊报警标识起始时间(分钟)", value.BeginMinute);
  46. }
  47. public JT808_0x8103_0x0079 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  48. {
  49. JT808_0x8103_0x0079 jT808_0x8103_0x0079 = new JT808_0x8103_0x0079();
  50. jT808_0x8103_0x0079.ParamId = reader.ReadUInt32();
  51. jT808_0x8103_0x0079.ParamLength = reader.ReadByte();
  52. jT808_0x8103_0x0079.StorageThresholds = reader.ReadByte();
  53. jT808_0x8103_0x0079.Duration = reader.ReadByte();
  54. jT808_0x8103_0x0079.BeginMinute = reader.ReadByte();
  55. return jT808_0x8103_0x0079;
  56. }
  57. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0079 value, IJT808Config config)
  58. {
  59. writer.WriteUInt32(value.ParamId);
  60. writer.WriteByte(value.ParamLength);
  61. writer.WriteByte(value.StorageThresholds);
  62. writer.WriteByte(value.Duration);
  63. writer.WriteByte(value.BeginMinute);
  64. }
  65. }
  66. }