Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

80 rader
3.4 KiB

  1. using JT809.Protocol.Enums;
  2. using JT809.Protocol.Extensions;
  3. using JT809.Protocol.Formatters;
  4. using JT809.Protocol.Interfaces;
  5. using JT809.Protocol.MessagePack;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Text;
  9. using System.Text.Json;
  10. namespace JT809.Protocol.SubMessageBody
  11. {
  12. /// <summary>
  13. /// 启动车辆定位信息交换应答消息
  14. /// <para>子业务类型标识:UP_EXG_MSG_RETURN_STARTUP_ACK</para>
  15. /// <para>描述:本条消息是下级平台对上级平台下发的 DOWN_EXG_MSG_RETURN_STARTUP 消息的应答消息</para>
  16. /// </summary>
  17. public class JT809_0x1200_0x1205:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1200_0x1205>, IJT809Analyze, IJT809_2019_Version
  18. {
  19. public override ushort SubMsgId => JT809SubBusinessType.启动车辆定位信息交换应答消息.ToUInt16Value();
  20. public override string Description => "启动车辆定位信息交换应答消息";
  21. public override bool SkipSerialization => false;
  22. public override bool SkipDataLength => true;
  23. /// <summary>
  24. /// 子业务类型标识
  25. /// </summary>
  26. public ushort DataType { get; set; }
  27. /// <summary>
  28. /// 对应启动车辆定位信息交换请求消息源子业务类型标识
  29. /// </summary>
  30. public ushort SourceDataType { get; set; }
  31. /// <summary>
  32. /// 对应启动车辆定位信息交换请求消息源报文序列号
  33. /// </summary>
  34. public uint SourceMsgSN { get; set; }
  35. /// <summary>
  36. /// 后续数据长度 值为0x00
  37. /// </summary>
  38. public uint DataLength { get; set; } = 0x00;
  39. public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
  40. {
  41. var value = new JT809_0x1200_0x1205();
  42. if (config.Version == JT809Version.JTT2019)
  43. {
  44. value.SourceDataType = reader.ReadUInt16();
  45. writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
  46. value.SourceMsgSN = reader.ReadUInt32();
  47. writer.WriteNumber($"[{value.SourceMsgSN.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSN);
  48. value.DataLength = reader.ReadUInt32();
  49. writer.WriteNumber($"[{value.DataLength.ReadNumber()}后续数据长度]", value.DataLength);
  50. }
  51. }
  52. public JT809_0x1200_0x1205 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
  53. {
  54. var value = new JT809_0x1200_0x1205();
  55. if (config.Version == JT809Version.JTT2019)
  56. {
  57. value.SourceDataType = reader.ReadUInt16();
  58. value.SourceMsgSN = reader.ReadUInt32();
  59. value.DataLength = reader.ReadUInt32();
  60. }
  61. return value;
  62. }
  63. public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x1205 value, IJT809Config config)
  64. {
  65. if (config.Version == JT809Version.JTT2019)
  66. {
  67. writer.WriteUInt16(value.SourceDataType);
  68. writer.WriteUInt32(value.SourceMsgSN);
  69. writer.WriteUInt32(value.DataLength);
  70. }
  71. }
  72. }
  73. }