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.

46 líneas
1.6 KiB

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