diff --git a/src/JT809.Protocol/Enums/JT809WarnType.cs b/src/JT809.Protocol/Enums/JT809WarnType.cs index 7316532..6fb53b7 100644 --- a/src/JT809.Protocol/Enums/JT809WarnType.cs +++ b/src/JT809.Protocol/Enums/JT809WarnType.cs @@ -7,21 +7,38 @@ namespace JT809.Protocol.Enums /// /// 报警类型 /// - public enum JT809WarnType:ushort + public enum JT809WarnType : ushort { - 超速报警=0x0001, - 疲劳驾驶报警=0x0002, - 紧急报警= 0x0003, - 进入指定区域报警= 0x0004, - 离开指定区域报警= 0x0005, - 路段赌赛报警= 0x0006, - 危险路段报警= 0x0007, - 越界报警= 0x0008, - 盗警= 0x0009, - 劫警= 0x000A, - 偏离路线报警= 0x000B, - 车辆移动报警= 0x000C, - 超时驾驶报警= 0x000D, - 其他报警= 0x000E + 超速报警 = 0x0001, + 疲劳驾驶报警 = 0x0002, + 紧急报警 = 0x0003, + 进入指定区域报警 = 0x0004, + 离开指定区域报警 = 0x0005, + 越界报警 = 0x0008, + 盗警 = 0x0009, + 劫警 = 0x000A, + 偏离路线报警 = 0x000B, + 车辆移动报警 = 0x000C, + 超时驾驶报警 = 0x000D, + 违规行驶报警 = 0x0010, + 前撞报警 = 0x0011, + 车道偏离报警 = 0x0012, + 胎压异常报警 = 0x0013, + 动态信息异常报警 = 0x0014, + 其他报警 = 0x000E, + + 超时停车=0xA001, + 车辆定位信息上报时间间隔异常 = 0xA002, + 车辆定位信息上报距离间隔异常 = 0xA003, + 下级平台异常断线 = 0xA004, + 下级平台数据传输异常 = 0xA005, + 路段堵塞报警 = 0xA006, + 危险路段报警 = 0xA007, + 雨雪天气报警 = 0xA008, + 驾驶员身份识别异常 = 0xA009, + 终端异常 = 0xA00A, + 平台接入异常 = 0xA00B, + 核心数据异常 = 0xA00C, + 其他报警1 = 0xA0FF, } } diff --git a/src/JT809.Protocol/JT809Header.cs b/src/JT809.Protocol/JT809Header.cs index 878da5b..d2e9e65 100644 --- a/src/JT809.Protocol/JT809Header.cs +++ b/src/JT809.Protocol/JT809Header.cs @@ -1,11 +1,12 @@ using JT809.Protocol.Enums; using JT809.Protocol.Formatters; +using JT809.Protocol.Interfaces; using JT809.Protocol.MessagePack; using System; namespace JT809.Protocol { - public class JT809Header: IJT809MessagePackFormatter + public class JT809Header: IJT809MessagePackFormatter,IJT809_2019_Version { /// /// 固定为22个字节长度 diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs index efcc5dd..ce87a46 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs @@ -3,6 +3,7 @@ using JT809.Protocol.Formatters; using JT809.Protocol.MessagePack; using JT809.Protocol.Metadata; using JT809.Protocol.Extensions; +using JT809.Protocol.Interfaces; namespace JT809.Protocol.SubMessageBody { @@ -10,7 +11,7 @@ namespace JT809.Protocol.SubMessageBody /// 实时上传车辆定位信息 /// 子业务类型标识:UP_EXG_MSG_REAL_LOCATION /// - public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter + public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter,IJT809_2019_Version { public override ushort SubMsgId => JT809SubBusinessType.实时上传车辆定位信息.ToUInt16Value(); @@ -24,46 +25,60 @@ namespace JT809.Protocol.SubMessageBody /// public JT809VehiclePositionProperties VehiclePosition { get; set; } + public JT809VehiclePositionProperties_2019 GnssData { get; set; } + public JT809_0x1200_0x1202 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) { - JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); - jT809_0X1200_0X1202.VehiclePosition.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Day = reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Month = reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Year = reader.ReadUInt16(); - jT809_0X1200_0X1202.VehiclePosition.Hour = reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Minute = reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Second = reader.ReadByte(); - jT809_0X1200_0X1202.VehiclePosition.Lon = reader.ReadUInt32(); - jT809_0X1200_0X1202.VehiclePosition.Lat = reader.ReadUInt32(); - jT809_0X1200_0X1202.VehiclePosition.Vec1 = reader.ReadUInt16(); - jT809_0X1200_0X1202.VehiclePosition.Vec2 = reader.ReadUInt16(); - jT809_0X1200_0X1202.VehiclePosition.Vec3 = reader.ReadUInt32(); - jT809_0X1200_0X1202.VehiclePosition.Direction = reader.ReadUInt16(); - jT809_0X1200_0X1202.VehiclePosition.Altitude = reader.ReadUInt16(); - jT809_0X1200_0X1202.VehiclePosition.State = reader.ReadUInt32(); - jT809_0X1200_0X1202.VehiclePosition.Alarm = reader.ReadUInt32(); - return jT809_0X1200_0X1202; + 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 { + + } + return value; } public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x1202 value, IJT809Config config) { - 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); + 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 { + + } } } }