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.

46 line
1.7 KiB

  1. using JT808.Protocol.Formatters;
  2. using JT808.Protocol.Interfaces;
  3. using JT808.Protocol.MessagePack;
  4. namespace JT808.Protocol.MessageBody
  5. {
  6. /// <summary>
  7. /// 终端补传分包请求
  8. /// 2019版本
  9. /// </summary>
  10. public class JT808_0x0005 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0005>, IJT808_2019_Version
  11. {
  12. public override ushort MsgId { get; } = 0x0005;
  13. /// <summary>
  14. /// 原始消息流水号
  15. /// 对应要求补传的原始消息第一包的消息流水号
  16. /// </summary>
  17. public ushort OriginalMsgNum { get; set; }
  18. /// <summary>
  19. /// 重传包总数
  20. /// n
  21. /// </summary>
  22. public byte AgainPackageCount { get; set; }
  23. /// <summary>
  24. /// 重传包 ID 列表
  25. /// BYTE[2*n]
  26. /// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。
  27. /// </summary>
  28. public byte[] AgainPackageData { get; set; }
  29. public JT808_0x0005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  30. {
  31. JT808_0x0005 value = new JT808_0x0005();
  32. value.OriginalMsgNum = reader.ReadUInt16();
  33. value.AgainPackageCount = reader.ReadByte();
  34. value.AgainPackageData = reader.ReadArray(value.AgainPackageCount * 2).ToArray();
  35. return value;
  36. }
  37. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0005 value, IJT808Config config)
  38. {
  39. writer.WriteUInt16(value.OriginalMsgNum);
  40. writer.WriteByte((byte)(value.AgainPackageData.Length / 2));
  41. writer.WriteArray(value.AgainPackageData);
  42. }
  43. }
  44. }