Browse Source

809兼容

tags/v2.2.0
TK 5 years ago
parent
commit
c5c4479f63
3 changed files with 84 additions and 51 deletions
  1. +32
    -15
      src/JT809.Protocol/Enums/JT809WarnType.cs
  2. +2
    -1
      src/JT809.Protocol/JT809Header.cs
  3. +50
    -35
      src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs

+ 32
- 15
src/JT809.Protocol/Enums/JT809WarnType.cs View File

@@ -7,21 +7,38 @@ namespace JT809.Protocol.Enums
/// <summary>
/// 报警类型
/// </summary>
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,
}
}

+ 2
- 1
src/JT809.Protocol/JT809Header.cs View File

@@ -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<JT809Header>
public class JT809Header: IJT809MessagePackFormatter<JT809Header>,IJT809_2019_Version
{
/// <summary>
/// 固定为22个字节长度


+ 50
- 35
src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs View File

@@ -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
/// 实时上传车辆定位信息
/// <para>子业务类型标识:UP_EXG_MSG_REAL_LOCATION</para>
/// </summary>
public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1200_0x1202>
public class JT809_0x1200_0x1202:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1200_0x1202>,IJT809_2019_Version
{
public override ushort SubMsgId => JT809SubBusinessType.实时上传车辆定位信息.ToUInt16Value();

@@ -24,46 +25,60 @@ namespace JT809.Protocol.SubMessageBody
/// </summary>
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 {
}
}
}
}

Loading…
Cancel
Save