Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

87 linhas
3.8 KiB

  1. using JT809.Protocol.Enums;
  2. using JT809.Protocol.Formatters;
  3. using JT809.Protocol.MessagePack;
  4. using JT809.Protocol.Metadata;
  5. using JT809.Protocol.Extensions;
  6. using JT809.Protocol.Interfaces;
  7. namespace JT809.Protocol.SubMessageBody
  8. {
  9. /// <summary>
  10. /// 实时上传车辆定位信息
  11. /// <para>子业务类型标识:UP_EXG_MSG_REAL_LOCATION</para>
  12. /// </summary>
  13. public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1200_0x1202>,IJT809_2019_Version
  14. {
  15. public override ushort SubMsgId => JT809SubBusinessType.实时上传车辆定位信息.ToUInt16Value();
  16. public override string Description => "实时上传车辆定位信息";
  17. public JT809_0x1200_0x1202()
  18. {
  19. VehiclePosition = new JT809VehiclePositionProperties();
  20. }
  21. /// <summary>
  22. /// 车辆定位信息
  23. /// </summary>
  24. public JT809VehiclePositionProperties VehiclePosition { get; set; }
  25. public JT809VehiclePositionProperties_2019 GnssData { get; set; }
  26. public JT809_0x1200_0x1202 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
  27. {
  28. JT809_0x1200_0x1202 value = new JT809_0x1200_0x1202();
  29. if (config.Version == JT809Version.JTT2013)
  30. {
  31. value.VehiclePosition.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte();
  32. value.VehiclePosition.Day = reader.ReadByte();
  33. value.VehiclePosition.Month = reader.ReadByte();
  34. value.VehiclePosition.Year = reader.ReadUInt16();
  35. value.VehiclePosition.Hour = reader.ReadByte();
  36. value.VehiclePosition.Minute = reader.ReadByte();
  37. value.VehiclePosition.Second = reader.ReadByte();
  38. value.VehiclePosition.Lon = reader.ReadUInt32();
  39. value.VehiclePosition.Lat = reader.ReadUInt32();
  40. value.VehiclePosition.Vec1 = reader.ReadUInt16();
  41. value.VehiclePosition.Vec2 = reader.ReadUInt16();
  42. value.VehiclePosition.Vec3 = reader.ReadUInt32();
  43. value.VehiclePosition.Direction = reader.ReadUInt16();
  44. value.VehiclePosition.Altitude = reader.ReadUInt16();
  45. value.VehiclePosition.State = reader.ReadUInt32();
  46. value.VehiclePosition.Alarm = reader.ReadUInt32();
  47. }
  48. else
  49. {
  50. #warning JT809VehiclePositionProperties_2019
  51. }
  52. return value;
  53. }
  54. public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x1202 value, IJT809Config config)
  55. {
  56. if (config.Version == JT809Version.JTT2013)
  57. {
  58. writer.WriteByte((byte)value.VehiclePosition.Encrypt);
  59. writer.WriteByte(value.VehiclePosition.Day);
  60. writer.WriteByte(value.VehiclePosition.Month);
  61. writer.WriteUInt16(value.VehiclePosition.Year);
  62. writer.WriteByte(value.VehiclePosition.Hour);
  63. writer.WriteByte(value.VehiclePosition.Minute);
  64. writer.WriteByte(value.VehiclePosition.Second);
  65. writer.WriteUInt32(value.VehiclePosition.Lon);
  66. writer.WriteUInt32(value.VehiclePosition.Lat);
  67. writer.WriteUInt16(value.VehiclePosition.Vec1);
  68. writer.WriteUInt16(value.VehiclePosition.Vec2);
  69. writer.WriteUInt32(value.VehiclePosition.Vec3);
  70. writer.WriteUInt16(value.VehiclePosition.Direction);
  71. writer.WriteUInt16(value.VehiclePosition.Altitude);
  72. writer.WriteUInt32(value.VehiclePosition.State);
  73. writer.WriteUInt32(value.VehiclePosition.Alarm);
  74. }
  75. else
  76. {
  77. #warning JT809VehiclePositionProperties_2019
  78. }
  79. }
  80. }
  81. }