No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

51 líneas
2.1 KiB

  1. using JT808.Protocol.Attributes;
  2. using JT808.Protocol.Extensions;
  3. using JT808.Protocol.Formatters;
  4. using JT808.Protocol.Interfaces;
  5. using JT808.Protocol.MessagePack;
  6. using System.Text.Json;
  7. namespace JT808.Protocol.MessageBody
  8. {
  9. /// <summary>
  10. /// 胎压
  11. /// 2019版本
  12. /// </summary>
  13. public class JT808_0x0200_0x05 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x05>, IJT808Analyze, IJT808_2019_Version
  14. {
  15. /// <summary>
  16. /// 胎压
  17. /// </summary>
  18. public byte[] TirePressure { get; set; }
  19. public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x05;
  20. public override byte AttachInfoLength { get; set; } = 30;
  21. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  22. {
  23. JT808_0x0200_0x05 value = new JT808_0x0200_0x05();
  24. value.AttachInfoId = reader.ReadByte();
  25. writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId);
  26. value.AttachInfoLength = reader.ReadByte();
  27. writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength);
  28. value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray();
  29. writer.WriteString($"胎压", value.TirePressure.ToHexString());
  30. }
  31. public JT808_0x0200_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  32. {
  33. JT808_0x0200_0x05 value = new JT808_0x0200_0x05();
  34. value.AttachInfoId = reader.ReadByte();
  35. value.AttachInfoLength = reader.ReadByte();
  36. value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray();
  37. return value;
  38. }
  39. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x05 value, IJT808Config config)
  40. {
  41. writer.WriteByte(value.AttachInfoId);
  42. writer.WriteByte(value.AttachInfoLength);
  43. writer.WriteArray(value.TirePressure);
  44. }
  45. }
  46. }