using JT809.Protocol.Enums; using JT809.Protocol.Formatters; using JT809.Protocol.MessagePack; using JT809.Protocol.Metadata; using JT809.Protocol.Extensions; using JT809.Protocol.Interfaces; namespace JT809.Protocol.SubMessageBody { /// /// 实时上传车辆定位信息 /// 子业务类型标识:UP_EXG_MSG_REAL_LOCATION /// public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter,IJT809_2019_Version { public override ushort SubMsgId => JT809SubBusinessType.实时上传车辆定位信息.ToUInt16Value(); public override string Description => "实时上传车辆定位信息"; public JT809_0x1200_0x1202() { VehiclePosition = new JT809VehiclePositionProperties(); } /// /// 车辆定位信息 /// public JT809VehiclePositionProperties VehiclePosition { get; set; } public JT809VehiclePositionProperties_2019 GnssData { get; set; } public JT809_0x1200_0x1202 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) { JT809_0x1200_0x1202 value = new JT809_0x1200_0x1202(); if (config.Version == JT809Version.JTT2013) { value.VehiclePosition.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte(); value.VehiclePosition.Day = reader.ReadByte(); value.VehiclePosition.Month = reader.ReadByte(); value.VehiclePosition.Year = reader.ReadUInt16(); value.VehiclePosition.Hour = reader.ReadByte(); value.VehiclePosition.Minute = reader.ReadByte(); value.VehiclePosition.Second = reader.ReadByte(); value.VehiclePosition.Lon = reader.ReadUInt32(); value.VehiclePosition.Lat = reader.ReadUInt32(); value.VehiclePosition.Vec1 = reader.ReadUInt16(); value.VehiclePosition.Vec2 = reader.ReadUInt16(); value.VehiclePosition.Vec3 = reader.ReadUInt32(); value.VehiclePosition.Direction = reader.ReadUInt16(); value.VehiclePosition.Altitude = reader.ReadUInt16(); value.VehiclePosition.State = reader.ReadUInt32(); value.VehiclePosition.Alarm = reader.ReadUInt32(); } else { #warning JT809VehiclePositionProperties_2019 } return value; } public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x1202 value, IJT809Config config) { if (config.Version == JT809Version.JTT2013) { writer.WriteByte((byte)value.VehiclePosition.Encrypt); writer.WriteByte(value.VehiclePosition.Day); writer.WriteByte(value.VehiclePosition.Month); writer.WriteUInt16(value.VehiclePosition.Year); writer.WriteByte(value.VehiclePosition.Hour); writer.WriteByte(value.VehiclePosition.Minute); writer.WriteByte(value.VehiclePosition.Second); writer.WriteUInt32(value.VehiclePosition.Lon); writer.WriteUInt32(value.VehiclePosition.Lat); writer.WriteUInt16(value.VehiclePosition.Vec1); writer.WriteUInt16(value.VehiclePosition.Vec2); writer.WriteUInt32(value.VehiclePosition.Vec3); writer.WriteUInt16(value.VehiclePosition.Direction); writer.WriteUInt16(value.VehiclePosition.Altitude); writer.WriteUInt32(value.VehiclePosition.State); writer.WriteUInt32(value.VehiclePosition.Alarm); } else { #warning JT809VehiclePositionProperties_2019 } } } }