瀏覽代碼

1.增加业务类型及子业务类型特性;

2.修改业务类型为对应中文显示;
tags/v1.3.0
SmallChi 6 年之前
父節點
當前提交
748e408d4f
共有 17 個文件被更改,包括 331 次插入211 次删除
  1. +9
    -9
      README.md
  2. +2
    -2
      src/JT809.Protocol.Benchmark/JT809SerializerContext.cs
  3. +2
    -2
      src/JT809.Protocol.Test/JT809HeaderTest.cs
  4. +2
    -2
      src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs
  5. +2
    -2
      src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1300Test.cs
  6. +2
    -2
      src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1600Test.cs
  7. +2
    -2
      src/JT809.Protocol.Test/JT809Packages/JT809_0x1001EncryptPackageTest.cs
  8. +2
    -2
      src/JT809.Protocol.Test/JT809Packages/JT809_0x1001PackageTest.cs
  9. +6
    -6
      src/JT809.Protocol.Test/JT809Packages/JT809_0x9400_0x9401PackageTest.cs
  10. +20
    -0
      src/JT809.Protocol/JT809Attributes/JT809BusinessTypeDescriptionAttribute.cs
  11. +24
    -0
      src/JT809.Protocol/JT809Attributes/JT809SubBusinessTypeDescriptionAttribute.cs
  12. +95
    -41
      src/JT809.Protocol/JT809Enums/JT809BusinessType.cs
  13. +136
    -50
      src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs
  14. +22
    -86
      src/JT809.Protocol/JT809Extensions/JT809PackageExtensions.cs
  15. +2
    -2
      src/JT809.Protocol/JT809Formatters/JT809HeaderFormatter.cs
  16. +2
    -2
      src/JT809.Protocol/JT809Formatters/JT809PackageFormatter.cs
  17. +1
    -1
      src/JT809.Protocol/JT809Header.cs

+ 9
- 9
README.md 查看文件

@@ -29,11 +29,11 @@

|数据长度|报文序列号|业务数据类型|下级平台接入码|协议版本号标识|报文加密标识位|数据加密的密匙|
|:------:|:------:|:------:|:------:|:------:|:------:|:------:|
| MsgLength | MsgSN | MsgID | MsgGNSSCENTERID | Version |EncryptFlag | EncryptKey |
| MsgLength | MsgSN | BusinessType | MsgGNSSCENTERID | Version |EncryptFlag | EncryptKey |

### 数据体[JT809Bodies]

> 根据对应业务数据类型:MsgID
> 根据对应业务数据类型:BusinessType

|车牌号|车辆颜色|子业务类型标识|后续数据长度|子业务数据体
|:------:|:------:|:------:|:------:|:------:|
@@ -58,7 +58,7 @@

#### 1.组包:

> 业务数据类型 MsgID:从链路报警信息交互消息
> 业务数据类型 BusinessType:从链路报警信息交互消息
>
> 子业务类型标识 SubBusinessType:报警督办请求消息

@@ -71,7 +71,7 @@ jT809Package.Header = new JT809Header
EncryptKey = 9999,
EncryptFlag= JT809Header_Encrypt.None,
Version = new JT809Header_Version(1, 0, 0),
MsgID = JT809Enums.JT809BusinessType.DOWN_WARN_MSG,
BusinessType = JT809Enums.JT809BusinessType.从链路报警信息交互消息,
MsgGNSSCENTERID = 20180920,
};

@@ -79,7 +79,7 @@ jT809Package.Bodies = new JT809_0x9400
{
VehicleNo="粤A12345",
VehicleColor= JT809Enums.JT809VehicleColorType.黄色,
SubBusinessType= JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
SubBusinessType= JT809Enums.JT809SubBusinessType.报警督办请求消息,
};

JT809_0x9400_0x9401 jT809_0x9400_0x9401 = new JT809_0x9400_0x9401
@@ -160,14 +160,14 @@ Assert.Equal((uint)1666, jT809Package.Header.MsgSN);
Assert.Equal((uint)9999, jT809Package.Header.EncryptKey);
Assert.Equal(JT809Header_Encrypt.None, jT809Package.Header.EncryptFlag);
Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
Assert.Equal(JT809Enums.JT809BusinessType.DOWN_WARN_MSG, jT809Package.Header.MsgID);
Assert.Equal(JT809Enums.JT809BusinessType.从链路报警信息交互消息, jT809Package.Header.BusinessType);
Assert.Equal(new JT809Header_Version(1, 0, 0).ToString(), jT809Package.Header.Version.ToString());

//4.数据包体
JT809_0x9400 jT809_0X400 = (JT809_0x9400)jT809Package.Bodies;
Assert.Equal("粤A12345", jT809_0X400.VehicleNo);
Assert.Equal(JT809Enums.JT809VehicleColorType.黄色, jT809_0X400.VehicleColor);
Assert.Equal(JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ, jT809_0X400.SubBusinessType);
Assert.Equal(JT809Enums.JT809SubBusinessType.报警督办请求消息, jT809_0X400.SubBusinessType);
Assert.Equal((uint)92, jT809_0X400.DataLength);

//5.子数据包体
@@ -194,11 +194,11 @@ JT809GlobalConfig.Instance.SetHeaderOptions(new JT809Configs.JT809HeaderOptions
});

// 根据业务类型创建对应包
JT809Package jT809Package = JT809BusinessType.DOWN_WARN_MSG.Create(new JT809_0x9400
JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.Create(new JT809_0x9400
{
VehicleNo = "粤A12345",
VehicleColor = JT809Enums.JT809VehicleColorType.黄色,
SubBusinessType = JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
SubBusinessType = JT809Enums.JT809SubBusinessType.报警督办请求消息,
JT809SubBodies = new JT809_0x9400_0x9401
{
WarnSrc = JT809WarnSrc.车载终端,


+ 2
- 2
src/JT809.Protocol.Benchmark/JT809SerializerContext.cs 查看文件

@@ -51,7 +51,7 @@ namespace JT809.Protocol.Benchmark
EncryptKey = 9999,
EncryptFlag = JT809Header_Encrypt.None,
Version = new JT809Header_Version(1, 0, 0),
MsgID = JT809Enums.JT809BusinessType.DOWN_WARN_MSG,
BusinessType = JT809Enums.JT809BusinessType.从链路报警信息交互消息,
MsgGNSSCENTERID = 20180920,
};

@@ -59,7 +59,7 @@ namespace JT809.Protocol.Benchmark
{
VehicleNo = "粤A12345",
VehicleColor = JT809Enums.JT809VehicleColorType.黄色,
SubBusinessType = JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
SubBusinessType = JT809Enums.JT809SubBusinessType.报警督办请求,
};

JT809_0x9400_0x9401 jT809_0x9400_0x9401 = new JT809_0x9400_0x9401


+ 2
- 2
src/JT809.Protocol.Test/JT809HeaderTest.cs 查看文件

@@ -17,7 +17,7 @@ namespace JT809.Protocol.Test
JT809Header jT809Header = new JT809Header();
jT809Header.MsgLength = 24;
jT809Header.MsgSN = 1024;
jT809Header.MsgID = JT809Enums.JT809BusinessType.DOWN_BASE_MSG;
jT809Header.BusinessType = JT809Enums.JT809BusinessType.从链路静态信息交换消息;
jT809Header.MsgGNSSCENTERID = 1200;
jT809Header.Version = new JT809Header_Version();
jT809Header.EncryptFlag = JT809Header_Encrypt.None;
@@ -33,7 +33,7 @@ namespace JT809.Protocol.Test
JT809Header jT809Header= JT809Serializer.Deserialize<JT809Header>(bytes);
Assert.Equal((uint)24, jT809Header.MsgLength);
Assert.Equal((uint)1024, jT809Header.MsgSN);
Assert.Equal(JT809Enums.JT809BusinessType.DOWN_BASE_MSG, jT809Header.MsgID);
Assert.Equal(JT809Enums.JT809BusinessType.从链路静态信息交换消息, jT809Header.BusinessType);
Assert.Equal((uint)1200, jT809Header.MsgGNSSCENTERID);
Assert.Equal(new JT809Header_Version().ToString(), jT809Header.Version.ToString());
Assert.Equal(JT809Header_Encrypt.None, jT809Header.EncryptFlag);


+ 2
- 2
src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs 查看文件

@@ -18,7 +18,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
JT809_0x1200 jT809_0X1200 = new JT809_0x1200();
jT809_0X1200.VehicleNo= "粤A12345";
jT809_0X1200.VehicleColor = JT809Enums.JT809VehicleColorType.蓝色;
jT809_0X1200.SubBusinessType = JT809Enums.JT809SubBusinessType.UP_EXG_MSG_REGISTER;
jT809_0X1200.SubBusinessType = JT809Enums.JT809SubBusinessType.上传车辆注册信息;
jT809_0X1200.DataLength = 61;
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = new JT809_0x1200_0x1201
{
@@ -41,7 +41,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
JT809_0x1200 jT809_0X9001 = JT809Serializer.Deserialize<JT809_0x1200>(bytes);
Assert.Equal("粤A12345", jT809_0X9001.VehicleNo);
Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor);
Assert.Equal(JT809Enums.JT809SubBusinessType.UP_EXG_MSG_REGISTER, jT809_0X9001.SubBusinessType);
Assert.Equal(JT809Enums.JT809SubBusinessType.上传车辆注册信息, jT809_0X9001.SubBusinessType);
Assert.Equal((ushort)61, jT809_0X9001.DataLength);
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = jT809_0X9001.JT809SubBodies as JT809_0x1200_0x1201;
Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId);


+ 2
- 2
src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1300Test.cs 查看文件

@@ -16,7 +16,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
public void Test1()
{
JT809_0x1300 jT809Bodies = new JT809_0x1300();
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.UP_PLATFORM_MSG_POST_QUERY_ACK;
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.平台查岗应答;
jT809Bodies.JT809SubBodies = new JT809_0x1300_0x1301
{
ObjectID="111",
@@ -33,7 +33,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
{
var bytes = "13 01 00 00 00 1B 01 31 31 31 00 00 00 00 00 00 00 00 00 00 00 04 D2 00 00 00 06 32 32 68 61 32 32".ToHexBytes();
JT809_0x1300 jT809Bodies = JT809Serializer.Deserialize<JT809_0x1300>(bytes);
Assert.Equal(JT809Enums.JT809SubBusinessType.UP_PLATFORM_MSG_POST_QUERY_ACK, jT809Bodies.SubBusinessType);
Assert.Equal(JT809Enums.JT809SubBusinessType.平台查岗应答, jT809Bodies.SubBusinessType);
JT809_0x1300_0x1301 jT809SubBodies = (JT809_0x1300_0x1301)jT809Bodies.JT809SubBodies;
Assert.Equal("111", jT809SubBodies.ObjectID);
Assert.Equal("22ha22", jT809SubBodies.InfoContent);


+ 2
- 2
src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1600Test.cs 查看文件

@@ -18,7 +18,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
JT809_0x1600 jT809Bodies = new JT809_0x1600();
jT809Bodies.VehicleNo = "粤A12345";
jT809Bodies.VehicleColor = JT809Enums.JT809VehicleColorType.蓝色;
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.UP_BASE_MSG_VEHICLE_ADDED_ACK;
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.补报车辆静态信息应答;
jT809Bodies.JT809SubBodies = new JT809_0x1600_0x1601
{
CarInfo = "什么鬼"
@@ -34,7 +34,7 @@ namespace JT809.Protocol.Test.JT809MessageBody
JT809_0x1600 jT809Bodies = JT809Serializer.Deserialize<JT809_0x1600>(bytes);
Assert.Equal("粤A12345", jT809Bodies.VehicleNo);
Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809Bodies.VehicleColor);
Assert.Equal(JT809Enums.JT809SubBusinessType.UP_BASE_MSG_VEHICLE_ADDED_ACK, jT809Bodies.SubBusinessType);
Assert.Equal(JT809Enums.JT809SubBusinessType.补报车辆静态信息应答, jT809Bodies.SubBusinessType);
Assert.Equal("什么鬼", ((JT809_0x1600_0x1601)jT809Bodies.JT809SubBodies).CarInfo);
}
}


+ 2
- 2
src/JT809.Protocol.Test/JT809Packages/JT809_0x1001EncryptPackageTest.cs 查看文件

@@ -31,7 +31,7 @@ namespace JT809.Protocol.Test.JT809Packages
EncryptFlag= JT809Header_Encrypt.Common,
MsgSN= 133,
EncryptKey=5819,
MsgID= JT809Enums.JT809BusinessType.UP_CONNECT_REQ,
BusinessType= JT809Enums.JT809BusinessType.主链路登录请求消息,
MsgGNSSCENTERID= 20180920,
};
JT809_0x1001 jT809_0X1001 = new JT809_0x1001();
@@ -55,7 +55,7 @@ namespace JT809.Protocol.Test.JT809Packages
Assert.Equal((uint)133, jT809Package.Header.MsgSN);
Assert.Equal((uint)5819, jT809Package.Header.EncryptKey);
Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
Assert.Equal(JT809Enums.JT809BusinessType.UP_CONNECT_REQ, jT809Package.Header.MsgID);
Assert.Equal(JT809Enums.JT809BusinessType.主链路登录请求消息, jT809Package.Header.BusinessType);
Assert.Equal(new JT809Header_Version().ToString(), jT809Package.Header.Version.ToString());
JT809_0x1001 jT809_0X1001 = (JT809_0x1001)jT809Package.Bodies;
Assert.Equal((uint)20180920, jT809_0X1001.UserId);


+ 2
- 2
src/JT809.Protocol.Test/JT809Packages/JT809_0x1001PackageTest.cs 查看文件

@@ -18,7 +18,7 @@ namespace JT809.Protocol.Test.JT809Packages
{
MsgSN= 133,
EncryptKey=9999,
MsgID= JT809Enums.JT809BusinessType.UP_CONNECT_REQ,
BusinessType= JT809Enums.JT809BusinessType.主链路登录请求消息,
MsgGNSSCENTERID= 20180920,
};
JT809_0x1001 jT809_0X1001 = new JT809_0x1001();
@@ -53,7 +53,7 @@ namespace JT809.Protocol.Test.JT809Packages
Assert.Equal((uint)133, jT809Package.Header.MsgSN);
Assert.Equal((uint)9999, jT809Package.Header.EncryptKey);
Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
Assert.Equal(JT809Enums.JT809BusinessType.UP_CONNECT_REQ, jT809Package.Header.MsgID);
Assert.Equal(JT809Enums.JT809BusinessType.主链路登录请求消息, jT809Package.Header.BusinessType);
Assert.Equal(new JT809Header_Version().ToString(), jT809Package.Header.Version.ToString());
JT809_0x1001 jT809_0X1001 = (JT809_0x1001)jT809Package.Bodies;
Assert.Equal((uint)20180920, jT809_0X1001.UserId);


+ 6
- 6
src/JT809.Protocol.Test/JT809Packages/JT809_0x9400_0x9401PackageTest.cs 查看文件

@@ -23,7 +23,7 @@ namespace JT809.Protocol.Test.JT809Packages
EncryptKey = 9999,
EncryptFlag= JT809Header_Encrypt.None,
Version = new JT809Header_Version(1, 0, 0),
MsgID = JT809Enums.JT809BusinessType.DOWN_WARN_MSG,
BusinessType = JT809Enums.JT809BusinessType.从链路报警信息交互消息,
MsgGNSSCENTERID = 20180920,
};

@@ -31,7 +31,7 @@ namespace JT809.Protocol.Test.JT809Packages
{
VehicleNo="粤A12345",
VehicleColor= JT809Enums.JT809VehicleColorType.黄色,
SubBusinessType= JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
SubBusinessType= JT809Enums.JT809SubBusinessType.报警督办请求,
};

JT809_0x9400_0x9401 jT809_0x9400_0x9401 = new JT809_0x9400_0x9401
@@ -63,13 +63,13 @@ namespace JT809.Protocol.Test.JT809Packages
Assert.Equal((uint)9999, jT809Package.Header.EncryptKey);
Assert.Equal(JT809Header_Encrypt.None, jT809Package.Header.EncryptFlag);
Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
Assert.Equal(JT809Enums.JT809BusinessType.DOWN_WARN_MSG, jT809Package.Header.MsgID);
Assert.Equal(JT809Enums.JT809BusinessType.从链路报警信息交互消息, jT809Package.Header.BusinessType);
Assert.Equal(new JT809Header_Version().ToString(), jT809Package.Header.Version.ToString());

JT809_0x9400 jT809_0X400 = (JT809_0x9400)jT809Package.Bodies;
Assert.Equal("粤A12345", jT809_0X400.VehicleNo);
Assert.Equal(JT809Enums.JT809VehicleColorType.黄色, jT809_0X400.VehicleColor);
Assert.Equal(JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ, jT809_0X400.SubBusinessType);
Assert.Equal(JT809Enums.JT809SubBusinessType.报警督办请求, jT809_0X400.SubBusinessType);
Assert.Equal((uint)92, jT809_0X400.DataLength);

JT809_0x9400_0x9401 jT809_0x9400_0x9401 = (JT809_0x9400_0x9401)jT809_0X400.JT809SubBodies;
@@ -92,11 +92,11 @@ namespace JT809.Protocol.Test.JT809Packages
EncryptKey= 9999,
MsgGNSSCENTERID= 20180920
});
JT809Package jT809Package = JT809BusinessType.DOWN_WARN_MSG.Create(new JT809_0x9400
JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.Create(new JT809_0x9400
{
VehicleNo = "粤A12345",
VehicleColor = JT809Enums.JT809VehicleColorType.黄色,
SubBusinessType = JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
SubBusinessType = JT809Enums.JT809SubBusinessType.报警督办请求,
JT809SubBodies = new JT809_0x9400_0x9401
{
WarnSrc = JT809WarnSrc.车载终端,


+ 20
- 0
src/JT809.Protocol/JT809Attributes/JT809BusinessTypeDescriptionAttribute.cs 查看文件

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace JT809.Protocol.JT809Attributes
{
[AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)]
public sealed class JT809BusinessTypeDescriptionAttribute : Attribute
{
public string Code { get; set; }

public string Name { get; set; }

public JT809BusinessTypeDescriptionAttribute(string code,string name)
{
Code = code;
Name = name;
}
}
}

+ 24
- 0
src/JT809.Protocol/JT809Attributes/JT809SubBusinessTypeDescriptionAttribute.cs 查看文件

@@ -0,0 +1,24 @@
using JT809.Protocol.JT809Enums;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT809.Protocol.JT809Attributes
{
[AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)]
public sealed class JT809SubBusinessTypeDescriptionAttribute : Attribute
{
public JT809BusinessType BusinessType { get; set; }

public string Code { get; set; }

public string Name { get; set; }

public JT809SubBusinessTypeDescriptionAttribute(string code,string name, JT809BusinessType businessType)
{
Code = code;
Name = name;
BusinessType = businessType;
}
}
}

+ 95
- 41
src/JT809.Protocol/JT809Enums/JT809BusinessType.cs 查看文件

@@ -14,179 +14,233 @@ namespace JT809.Protocol.JT809Enums
{
#region 链路管理类
///<summary>
///主链路登录请求消息
///主链路登录请求消息
///UP_CONNECT_REQ
///</summary>
[Description("主链路登录请求消息")]
[JT809BodiesType(typeof(JT809_0x1001))]
UP_CONNECT_REQ = 0x1001,
[JT809BusinessTypeDescription("UP_CONNECT_REQ", "主链路登录请求消息")]
主链路登录请求消息 = 0x1001,
///<summary>
///主链路登录应答消息
///UP_CONNECT_RSP
///</summary>
[Description("主链路登录应答消息")]
[JT809BusinessTypeDescription("UP_CONNECT_RSP", "主链路登录应答消息")]
[JT809BodiesType(typeof(JT809_0x1002))]
UP_CONNECT_RSP = 0x1002,
主链路登录应答消息 = 0x1002,
///<summary>
///主链路注销请求消息
///主链路注销请求消息
///UP_DISCONNECT_REQ
///</summary>
[Description("主链路注销请求消息")]
[JT809BusinessTypeDescription("UP_DISCONNECT_REQ", "主链路注销请求消息")]
[JT809BodiesType(typeof(JT809_0x1003))]
UP_DISCONNECT_REQ = 0x1003,
主链路注销请求消息 = 0x1003,
///<summary>
///主链路注销应答消息
///主链路注销应答消息
///UP_DISCONNECT_RSP
///</summary>
[Description("主链路注销应答消息")]
[JT809BodiesType(typeof(JT809_0x1004))]
UP_DISCONNECT_RSP = 0x1004,
[JT809BusinessTypeDescription("UP_DISCONNECT_RSP", "主链路注销应答消息")]
主链路注销应答消息 = 0x1004,
///<summary>
///主链路连接保持请求消息
///UP_LINKTEST_REQ
///</summary>
[Description("主链路连接保持请求消息")]
[JT809BodiesType(typeof(JT809_0x1005))]
UP_LINKTEST_REQ = 0x1005,
[JT809BusinessTypeDescription("UP_LINKTEST_REQ", "主链路连接保持请求消息")]
主链路连接保持请求消息 = 0x1005,
///<summary>
///主链路连接保持应答消息
///UP_LINKTEST_RSP
///</summary>
[Description("主链路连接保持应答消息")]
[JT809BodiesType(typeof(JT809_0x1006))]
UP_LINKTEST_RSP = 0x1006,
[JT809BusinessTypeDescription("UP_LINKTEST_RSP", "主链路连接保持应答消息")]
主链路连接保持应答消息 = 0x1006,
///<summary>
///主链路断开通知消息
///主链路断开通知消息
///UP_DISCONNECT_INFORM
///</summary>
[Description("主链路断开通知消息")]
[JT809BodiesType(typeof(JT809_0x1007))]
UP_DISCONNECT_INFORM = 0x1007,
[JT809BusinessTypeDescription("UP_DISCONNECT_INFORM", "主链路断开通知消息")]
主链路断开通知消息 = 0x1007,
///<summary>
///下级平台主动关闭链路通知消息
///UP_CLOSELINK_INFORM
///</summary>
[Description("下级平台主动关闭链路通知消息")]
[JT809BodiesType(typeof(JT809_0x1008))]
UP_CLOSELINK_INFORM = 0x1008,
[JT809BusinessTypeDescription("UP_CLOSELINK_INFORM", "下级平台主动关闭链路通知消息")]
下级平台主动关闭链路通知消息 = 0x1008,
///<summary>
///从链路连接请求消息
///DOWN_CONNECT_REQ
///</summary>
[Description("从链路连接请求消息")]
[JT809BodiesType(typeof(JT809_0x9001))]
DOWN_CONNECT_REQ = 0x9001,
[JT809BusinessTypeDescription("DOWN_CONNECT_REQ", "从链路连接请求消息")]
从链路连接请求消息 = 0x9001,
///<summary>
///从链路连接应答消息
///从链路连接应答消息
///DOWN_CONNECT_RSP
///</summary>
[Description("从链路连接应答消息")]
[JT809BodiesType(typeof(JT809_0x9002))]
DOWN_CONNECT_RSP = 0x9002,
[JT809BusinessTypeDescription("DOWN_CONNECT_RSP", "从链路连接应答消息")]
从链路连接应答消息 = 0x9002,
///<summary>
///从链路注销请求消息
///DOWN_DISCONNECT_REQ
///</summary>
[Description("从链路注销请求消息")]
[JT809BodiesType(typeof(JT809_0x9003))]
DOWN_DISCONNECT_REQ = 0x9003,
[JT809BusinessTypeDescription("DOWN_DISCONNECT_REQ", "从链路注销请求消息")]
从链路注销请求消息 = 0x9003,
///<summary>
///从链路注销应答消息
///DOWN_DISCONNECT_RSP
///</summary>
[Description("从链路注销应答消息")]
[JT809BodiesType(typeof(JT809_0x9004))]
DOWN_DISCONNECT_RSP = 0x9004,
[JT809BusinessTypeDescription("DOWN_DISCONNECT_RSP", "从链路注销应答消息")]
从链路注销应答消息 = 0x9004,
///<summary>
///从链路连接保持请求消息
///DOWN_LINKTEST_REQ
///</summary>
[Description("从链路连接保持请求消息")]
[JT809BodiesType(typeof(JT809_0x9005))]
DOWN_LINKTEST_REQ = 0x9005,
[JT809BusinessTypeDescription("DOWN_LINKTEST_REQ", "从链路连接保持请求消息")]
从链路连接保持请求消息 = 0x9005,
///<summary>
///从链路连接保持应答消息
///从链路连接保持应答消息
///DOWN_LINKTEST_RSP
///</summary>
[Description("从链路连接保持应答消息")]
[JT809BodiesType(typeof(JT809_0x9006))]
DOWN_LINKTEST_RSP = 0x9006,
[JT809BusinessTypeDescription("DOWN_LINKTEST_RSP", "从链路连接保持应答消息")]
从链路连接保持应答消息 = 0x9006,
///<summary>
///从链路断开通知消息
///DOWN_DISCONNECT_INFORM
///</summary>
[Description("从链路断开通知消息")]
[JT809BodiesType(typeof(JT809_0x9007))]
DOWN_DISCONNECT_INFORM = 0x9007,
[JT809BusinessTypeDescription("DOWN_DISCONNECT_INFORM", "从链路断开通知消息")]
从链路断开通知消息 = 0x9007,
///<summary>
///上级平台主动关闭链路通知消息
///上级平台主动关闭链路通知消息
///DOWN_CLOSELINK_INFORM
///</summary>
[Description("上级平台主动关闭链路通知消息")]
[JT809BodiesType(typeof(JT809_0x9008))]
DOWN_CLOSELINK_INFORM = 0x9008,
[JT809BusinessTypeDescription("DOWN_CLOSELINK_INFORM", "上级平台主动关闭链路通知消息")]
上级平台主动关闭链路通知消息 = 0x9008,
#endregion
#region 信息统计类
///<summary>
///接收定位信息数量通知消息
///接收定位信息数量通知消息
///DOWN_TOTAL_RECV_BACK_MSG
///</summary>
[Description("接收定位信息数量通知消息")]
[JT809BodiesType(typeof(JT809_0x9101))]
DOWN_TOTAL_RECV_BACK_MSG = 0x9101,
[JT809BusinessTypeDescription("DOWN_TOTAL_RECV_BACK_MSG", "接收定位信息数量通知消息")]
接收定位信息数量通知消息 = 0x9101,
#endregion
#region 车辆动态信息交换
///<summary>
///主链路动态信息交换消息
///主链路动态信息交换消息
///UP_EXG_MSG
///</summary>
[Description("主链路动态信息交换消息")]
[JT809BodiesType(typeof(JT809_0x1200))]
UP_EXG_MSG = 0x1200,
[JT809BusinessTypeDescription("UP_EXG_MSG", "主链路动态信息交换消息")]
主链路动态信息交换消息 = 0x1200,
///<summary>
///从链路动态信息交换消息
///DOWN_EXG_MSG
///</summary>
[Description("从链路动态信息交换消息")]
[JT809BodiesType(typeof(JT809_0x9200))]
DOWN_EXG_MSG = 0x9200,
[JT809BusinessTypeDescription("DOWN_EXG_MSG", "从链路动态信息交换消息")]
从链路动态信息交换消息 = 0x9200,
#endregion
#region 平台间信息交互类
///<summary>
///主链路平台间信息交互消息
///UP_PLATFORM_MSG
///</summary>
[Description("主链路平台间信息交互消息")]
[JT809BodiesType(typeof(JT809_0x1300))]
UP_PLATFORM_MSG = 0x1300,
[JT809BusinessTypeDescription("UP_PLATFORM_MSG", "主链路平台间信息交互消息")]
主链路平台间信息交互消息 = 0x1300,
///<summary>
///从链路平台间信息交互消息
///DOWN_PLATFORM_MSG
///</summary>
[Description("从链路平台间信息交互消息")]
[JT809BodiesType(typeof(JT809_0x9300))]
DOWN_PLATFORM_MSG = 0x9300,
[JT809BusinessTypeDescription("DOWN_PLATFORM_MSG", "从链路平台间信息交互消息")]
从链路平台间信息交互消息 = 0x9300,
#endregion
#region 车辆报警信息交互类
///<summary>
///主链路报警信息交互消息
///UP_WARN_MSG
///</summary>
[Description("主链路报警信息交互消息")]
[JT809BodiesType(typeof(JT809_0x1400))]
UP_WARN_MSG = 0x1400,
[JT809BusinessTypeDescription("UP_WARN_MSG", "主链路报警信息交互消息")]
主链路报警信息交互消息 = 0x1400,
///<summary>
///从链路报警信息交互消息
///从链路报警信息交互消息
///DOWN_WARN_MSG
///</summary>
[Description("从链路报警信息交互消息")]
[JT809BodiesType(typeof(JT809_0x9400))]
DOWN_WARN_MSG = 0x9400,
[JT809BusinessTypeDescription("DOWN_WARN_MSG", "从链路报警信息交互消息")]
从链路报警信息交互消息 = 0x9400,
#endregion
#region 车辆监管类
///<summary>
///主链路车辆监管消息
///主链路车辆监管消息
///UP_CTRL_MSG
///</summary>
[Description("主链路车辆监管消息")]
[JT809BodiesType(typeof(JT809_0x1500))]
UP_CTRL_MSG = 0x1500,
[JT809BusinessTypeDescription("UP_CTRL_MSG", "主链路车辆监管消息")]
主链路车辆监管消息 = 0x1500,
///<summary>
///从链路车辆监管消息
///从链路车辆监管消息
///DOWN_CTRL_MSG
///</summary>
[Description("从链路车辆监管消息")]
[JT809BodiesType(typeof(JT809_0x9500))]
DOWN_CTRL_MSG = 0x9500,
[JT809BusinessTypeDescription("DOWN_CTRL_MSG", "从链路车辆监管消息")]
从链路车辆监管消息 = 0x9500,
#endregion
#region 车辆静态信息交换类
///<summary>
///主链路静态信息交换消息
///主链路静态信息交换消息
///UP_BASE_MSG
///</summary>
[Description("主链路静态信息交换消息")]
[JT809BodiesType(typeof(JT809_0x1600))]
UP_BASE_MSG = 0x1600,
[JT809BusinessTypeDescription("UP_BASE_MSG", "主链路静态信息交换消息")]
主链路静态信息交换消息 = 0x1600,
///<summary>
///从链路静态信息交换消息
///从链路静态信息交换消息
///DOWN_BASE_MSG
///</summary>
[Description("从链路静态信息交换消息")]
[JT809BodiesType(typeof(JT809_0x9600))]
DOWN_BASE_MSG = 0x9600,
[JT809BusinessTypeDescription("DOWN_BASE_MSG", "从链路静态信息交换消息")]
从链路静态信息交换消息 = 0x9600,
#endregion
}
}

+ 136
- 50
src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs 查看文件

@@ -13,169 +13,220 @@ namespace JT809.Protocol.JT809Enums
#region 主链路动态信息交换消息 UP_EXG_MSG
/// <summary>
/// 上传车辆注册信息
/// UP_EXG_MSG_REGISTER
/// </summary>
[Description("上传车辆注册信息")]
[JT809BodiesType(typeof(JT809_0x1200_0x1201))]
UP_EXG_MSG_REGISTER = 0x1201,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_REGISTER", "上传车辆注册信息", JT809BusinessType.主链路动态信息交换消息)]
上传车辆注册信息 = 0x1201,
///<summary>
///实时上传车辆定位信息
///UP_EXG_MSG_REAL_LOCATION
///</summary>
[Description("实时上传车辆定位信息")]
[JT809BodiesType(typeof(JT809_0x1200_0x1202))]
UP_EXG_MSG_REAL_LOCATION = 0x1202,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_REAL_LOCATION", "实时上传车辆定位信息", JT809BusinessType.主链路动态信息交换消息)]
实时上传车辆定位信息 = 0x1202,
///<summary>
///车辆定位信息自动补报
///车辆定位信息自动补报
///UP_EXG_MSG_HISTORY_LOCATION
///</summary>
[Description("车辆定位信息自动补报")]
[JT809BodiesType(typeof(JT809_0x1200_0x1203))]
UP_EXG_MSG_HISTORY_LOCATION = 0x1203,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_HISTORY_LOCATION", "车辆定位信息自动补报", JT809BusinessType.主链路动态信息交换消息)]
车辆定位信息自动补报 = 0x1203,
///<summary>
///启动车辆定位信息交换应答
///UP_EXG_MSG_RETURN_STARTUP_ACK
///</summary>
[Description("启动车辆定位信息交换应答")]
[JT809BodiesType(typeof(JT809_0x1200_0x1205))]
UP_EXG_MSG_RETURN_STARTUP_ACK = 0x1205,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_RETURN_STARTUP_ACK", "启动车辆定位信息交换应答", JT809BusinessType.主链路动态信息交换消息)]
启动车辆定位信息交换应答 = 0x1205,
///<summary>
///结束车辆定位信息交换应答
///UP_EXG_MSG_RETURN_END_ACK
///</summary>
[Description("结束车辆定位信息交换应答")]
[JT809BodiesType(typeof(JT809_0x1200_0x1206))]
UP_EXG_MSG_RETURN_END_ACK = 0x1206,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_RETURN_END_ACK", "结束车辆定位信息交换应答", JT809BusinessType.主链路动态信息交换消息)]
结束车辆定位信息交换应答 = 0x1206,
///<summary>
///申请交换指定车辆定位信息请求
///UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP
///</summary>
[Description("申请交换指定车辆定位信息请求")]
[JT809BodiesType(typeof(JT809_0x1200_0x1207))]
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP = 0x1207,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP", "申请交换指定车辆定位信息请求", JT809BusinessType.主链路动态信息交换消息)]
申请交换指定车辆定位信息请求 = 0x1207,
///<summary>
///取消交换指定车辆定位信息请求
///取消交换指定车辆定位信息请求
///UP_EXG_MSG_APPLY_FOR_MONITOR_END
///</summary>
[Description("取消交换指定车辆定位信息请求")]
[JT809BodiesType(typeof(JT809_0x1200_0x1208))]
UP_EXG_MSG_APPLY_FOR_MONITOR_END = 0x1208,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_APPLY_FOR_MONITOR_END", "取消交换指定车辆定位信息请求", JT809BusinessType.主链路动态信息交换消息)]
取消交换指定车辆定位信息请求 = 0x1208,
///<summary>
///补发车辆定位信息请求
///补发车辆定位信息请求
///UP_EXG_MSG_APPLY_HISGNSSDATA_REQ
///</summary>
[Description("补发车辆定位信息请求")]
[JT809BodiesType(typeof(JT809_0x1200_0x1209))]
UP_EXG_MSG_APPLY_HISGNSSDATA_REQ = 0x1209,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_APPLY_HISGNSSDATA_REQ", "补发车辆定位信息请求", JT809BusinessType.主链路动态信息交换消息)]
补发车辆定位信息请求 = 0x1209,
///<summary>
///上报车辆驾驶员身份识别信息应答
///上报车辆驾驶员身份识别信息应答
///UP_EXG_MSG_REPORT_DRIVER_INFO_ACK
///</summary>
[Description("上报车辆驾驶员身份识别信息应答")]
[JT809BodiesType(typeof(JT809_0x1200_0x120A))]
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK = 0x120A,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_REPORT_DRIVER_INFO_ACK", "上报车辆驾驶员身份识别信息应答", JT809BusinessType.主链路动态信息交换消息)]
上报车辆驾驶员身份识别信息应答 = 0x120A,
///<summary>
///上报车辆电子运单应答
///UP_EXG_MSG_TAKE_EWAYBILL_ACK
///</summary>
[Description("上报车辆电子运单应答")]
[JT809BodiesType(typeof(JT809_0x1200_0x120B))]
UP_EXG_MSG_TAKE_EWAYBILL_ACK = 0x120B,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_TAKE_EWAYBILL_ACK", "上报车辆电子运单应答", JT809BusinessType.主链路动态信息交换消息)]
上报车辆电子运单应答 = 0x120B,
///<summary>
///主动上报驾驶员身份信息
///UP_EXG_MSG_REPORT_DRIVER_INFO
///</summary>
[Description("主动上报驾驶员身份信息")]
[JT809BodiesType(typeof(JT809_0x1200_0x120C))]
UP_EXG_MSG_REPORT_DRIVER_INFO = 0x120C,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_REPORT_DRIVER_INFO", "主动上报驾驶员身份信息", JT809BusinessType.主链路动态信息交换消息)]
主动上报驾驶员身份信息 = 0x120C,
///<summary>
///主动上报车辆电子运单信息
///UP_EXG_MSG_REPORT_EWAYBILL_INFO
///</summary>
[Description("主动上报车辆电子运单信息")]
[JT809BodiesType(typeof(JT809_0x1200_0x120D))]
UP_EXG_MSG_REPORT_EWAYBILL_INFO = 0x120D,
[JT809SubBusinessTypeDescription("UP_EXG_MSG_REPORT_EWAYBILL_INFO", "主动上报车辆电子运单信息", JT809BusinessType.主链路动态信息交换消息)]
主动上报车辆电子运单信息 = 0x120D,
#endregion

#region 从链路动态信息交换消息 DOWN_EXG_MSG
///<summary>
///交换车辆定位信息
///DOWN_EXG_MSG_CAR_LOCATION
///</summary>
[Description("交换车辆定位信息")]
[JT809BodiesType(typeof(JT809_0x9200_0x9202))]
DOWN_EXG_MSG_CAR_LOCATION = 0x9202,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_CAR_LOCATION", "交换车辆定位信息", JT809BusinessType.从链路动态信息交换消息)]
交换车辆定位信息 = 0x9202,
///<summary>
///车辆定位信息交换补发
///DOWN_EXG_MSG_HISTORY_ARCOSSAREA
///</summary>
[Description("车辆定位信息交换补发")]
[JT809BodiesType(typeof(JT809_0x9200_0x9203))]
DOWN_EXG_MSG_HISTORY_ARCOSSAREA = 0x9203,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_HISTORY_ARCOSSAREA", "车辆定位信息交换补发", JT809BusinessType.从链路动态信息交换消息)]
车辆定位信息交换补发 = 0x9203,
///<summary>
///交换车辆静态信息
///交换车辆静态信息
///DOWN_EXG_MSG_CAR_INFO
///</summary>
[Description("交换车辆静态信息")]
[JT809BodiesType(typeof(JT809_0x9200_0x9204))]
DOWN_EXG_MSG_CAR_INFO = 0x9204,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_CAR_INFO", "交换车辆静态信息", JT809BusinessType.从链路动态信息交换消息)]
交换车辆静态信息 = 0x9204,
///<summary>
///启动车辆定位信息交换请求
///启动车辆定位信息交换请求
///DOWN_EXG_MSG_RETURN_STARTUP
///</summary>
[Description("启动车辆定位信息交换请求")]
[JT809BodiesType(typeof(JT809_0x9200_0x9205))]
DOWN_EXG_MSG_RETURN_STARTUP = 0x9205,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_RETURN_STARTUP", "启动车辆定位信息交换请求", JT809BusinessType.从链路动态信息交换消息)]
启动车辆定位信息交换请求 = 0x9205,
///<summary>
///结束车辆定位信息交换请求
///</summary>
[Description("结束车辆定位信息交换请求")]
[JT809BodiesType(typeof(JT809_0x9200_0x9206))]
DOWN_EXG_MSG_RETURN_END = 0x9206,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_RETURN_END", "结束车辆定位信息交换请求", JT809BusinessType.从链路动态信息交换消息)]
结束车辆定位信息交换请求 = 0x9206,
///<summary>
///申请交换指定车辆定位信息应答
///DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK
///</summary>
[Description("申请交换指定车辆定位信息应答")]
[JT809BodiesType(typeof(JT809_0x9200_0x9207))]
DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK = 0x9207,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK", "申请交换指定车辆定位信息应答", JT809BusinessType.从链路动态信息交换消息)]
申请交换指定车辆定位信息应答 = 0x9207,
///<summary>
///取消交换指定车辆定位信息应答
///DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK
///</summary>
[Description("取消交换指定车辆定位信息应答")]
[JT809BodiesType(typeof(JT809_0x9200_0x9208))]
DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK = 0x9208,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK", "取消交换指定车辆定位信息应答", JT809BusinessType.从链路动态信息交换消息)]
取消交换指定车辆定位信息应答 = 0x9208,
///<summary>
///补发车辆定位信息应答
///DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK
///</summary>
[Description("补发车辆定位信息应答")]
[JT809BodiesType(typeof(JT809_0x9200_0x9209))]
DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK = 0x9209,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK", "补发车辆定位信息应答", JT809BusinessType.从链路动态信息交换消息)]
补发车辆定位信息应答 = 0x9209,
///<summary>
///上报车辆驾驶员身份识别信息请求
///DOWN_EXG_MSG_REPORT_DRIVER_INFO
///</summary>
[Description("上报车辆驾驶员身份识别信息请求")]
[JT809BodiesType(typeof(JT809_0x9200_0x920A))]
DOWN_EXG_MSG_REPORT_DRIVER_INFO = 0x920A,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_REPORT_DRIVER_INFO", "上报车辆驾驶员身份识别信息请求", JT809BusinessType.从链路动态信息交换消息)]
上报车辆驾驶员身份识别信息请求 = 0x920A,
///<summary>
///上报车辆电子运单请求
///DOWN_EXG_MSG_TAKE_EWAYBILL_REQ
///</summary>
[Description("上报车辆电子运单请求")]
[JT809BodiesType(typeof(JT809_0x9200_0x920B))]
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ = 0x920B,
[JT809SubBusinessTypeDescription("DOWN_EXG_MSG_TAKE_EWAYBILL_REQ", "上报车辆电子运单请求", JT809BusinessType.从链路动态信息交换消息)]
上报车辆电子运单请求 = 0x920B,
#endregion

#region 主链路平台信息交互消息 UP_PLATFORM_MSG
///<summary>
///平台查岗应答
///UP_PLATFORM_MSG_POST_QUERY_ACK
///</summary>
[Description("平台查岗应答")]
[JT809BodiesType(typeof(JT809_0x1300_0x1301))]
UP_PLATFORM_MSG_POST_QUERY_ACK = 0x1301,
[JT809SubBusinessTypeDescription("UP_PLATFORM_MSG_POST_QUERY_ACK", "平台查岗应答", JT809BusinessType.主链路平台间信息交互消息)]
平台查岗应答 = 0x1301,
///<summary>
///下发平台间报文应答
///UP_PLATFORM_MSG_INFO_ACK
///</summary>
[Description("下发平台间报文应答")]
[JT809BodiesType(typeof(JT809_0x1300_0x1302))]
UP_PLATFORM_MSG_INFO_ACK = 0x1302,
[JT809SubBusinessTypeDescription("UP_PLATFORM_MSG_INFO_ACK", "下发平台间报文应答", JT809BusinessType.主链路平台间信息交互消息)]
下发平台间报文应答 = 0x1302,
#endregion

#region 从链路平台信息交互消息 DOWN_PLATFORM_MSG
///<summary>
///平台查岗请求
///DOWN_PLATFORM_MSG_POST_QUERY_REQ
///</summary>
[Description("平台查岗请求")]
[JT809BodiesType(typeof(JT809_0x9300_0x9301))]
DOWN_PLATFORM_MSG_POST_QUERY_REQ = 0x9301,
[JT809SubBusinessTypeDescription("DOWN_PLATFORM_MSG_POST_QUERY_REQ", "平台查岗请求", JT809BusinessType.从链路平台间信息交互消息)]
平台查岗请求 = 0x9301,
///<summary>
///下发平台间报文请求
///DOWN_PLATFORM_MSG_INFO_REQ
///</summary>
[Description("下发平台间报文请求")]
[JT809BodiesType(typeof(JT809_0x9300_0x9302))]
DOWN_PLATFORM_MSG_INFO_REQ = 0x9302,
[JT809SubBusinessTypeDescription("DOWN_PLATFORM_MSG_INFO_REQ", "下发平台间报文请求", JT809BusinessType.从链路平台间信息交互消息)]
下发平台间报文请求 = 0x9302,
#endregion

#region 主链路报警信息交互消息 UP_WARN_MSG
@@ -184,124 +235,159 @@ namespace JT809.Protocol.JT809Enums
///</summary>
[Description("报警督办应答")]
[JT809BodiesType(typeof(JT809_0x1400_0x1401))]
[JT809SubBusinessTypeDescription("DOWN_PLATFORM_MSG_INFO_REQ", "下发平台间报文请求", JT809BusinessType.主链路报警信息交互消息)]
UP_WARN_MSG_URGE_TODO_ACK = 0x1401,
///<summary>
///上报报警信息
///UP_WARN_MSG_ADPT_INFO
///</summary>
[Description("上报报警信息")]
[JT809BodiesType(typeof(JT809_0x1400_0x1402))]
UP_WARN_MSG_ADPT_INFO = 0x1402,
[JT809SubBusinessTypeDescription("UP_WARN_MSG_ADPT_INFO", "上报报警信息", JT809BusinessType.主链路报警信息交互消息)]
上报报警信息 = 0x1402,
///<summary>
///主动上报报警处理结果信息
///UP_WARN_MSG_ADPT_TODO_INFO
///</summary>
[Description("主动上报报警处理结果信息")]
[JT809BodiesType(typeof(JT809_0x1400_0x1403))]
UP_WARN_MSG_ADPT_TODO_INFO = 0x1403,
[JT809SubBusinessTypeDescription("UP_WARN_MSG_ADPT_TODO_INFO", "主动上报报警处理结果信息", JT809BusinessType.主链路报警信息交互消息)]
主动上报报警处理结果信息 = 0x1403,
#endregion

#region 从链路报警信息交互消息 DOWN_WARN_MSG
///<summary>
///报警督办请求
///DOWN_WARN_MSG_URGE_TODO_REQ
///</summary>
[Description("报警督办请求")]
[JT809BodiesType(typeof(JT809_0x9400_0x9401))]
DOWN_WARN_MSG_URGE_TODO_REQ = 0x9401,
[JT809SubBusinessTypeDescription("DOWN_WARN_MSG_URGE_TODO_REQ", "报警督办请求", JT809BusinessType.从链路报警信息交互消息)]
报警督办请求 = 0x9401,
///<summary>
///报警预警
///DOWN_WARN_MSG_INFORM_TIPS
///</summary>
[Description("报警预警")]
[JT809BodiesType(typeof(JT809_0x9400_0x9402))]
DOWN_WARN_MSG_INFORM_TIPS = 0x9402,
[JT809SubBusinessTypeDescription("DOWN_WARN_MSG_INFORM_TIPS", "报警预警", JT809BusinessType.从链路报警信息交互消息)]
报警预警 = 0x9402,
///<summary>
///实时交换报警信息
///DOWN_WARN_MSG_EXG_INFORM
///</summary>
[Description("实时交换报警信息")]
[JT809BodiesType(typeof(JT809_0x9400_0x9403))]
DOWN_WARN_MSG_EXG_INFORM = 0x9403,
[JT809SubBusinessTypeDescription("DOWN_WARN_MSG_EXG_INFORM", "实时交换报警信息", JT809BusinessType.从链路报警信息交互消息)]
实时交换报警信息 = 0x9403,
#endregion

#region 主链路车辆监管消息 UP_CTRL_MSG
///<summary>
///车辆单向监听应答
///UP_CTRL_MSG_MONITOR_VEHICLE_ACK
///</summary>
[Description("车辆单向监听应答")]
[JT809BodiesType(typeof(JT809_0x1500_0x1501))]
UP_CTRL_MSG_MONITOR_VEHICLE_ACK = 0x1501,
[JT809SubBusinessTypeDescription("UP_CTRL_MSG_MONITOR_VEHICLE_ACK", "车辆单向监听应答", JT809BusinessType.主链路车辆监管消息)]
车辆单向监听应答 = 0x1501,
///<summary>
///车辆拍照应答
///UP_CTRL_MSG_TAKE_PHOTO_ACK
///</summary>
[Description("车辆拍照应答")]
[JT809BodiesType(typeof(JT809_0x1500_0x1502))]
UP_CTRL_MSG_TAKE_PHOTO_ACK = 0x1502,
[JT809SubBusinessTypeDescription("UP_CTRL_MSG_TAKE_PHOTO_ACK", "车辆拍照应答", JT809BusinessType.主链路车辆监管消息)]
车辆拍照应答 = 0x1502,
///<summary>
///下发车辆报文应答
///UP_CTRL_MSG_TEXT_INFO_ACK
///</summary>
[Description("下发车辆报文应答")]
[JT809BodiesType(typeof(JT809_0x1500_0x1503))]
UP_CTRL_MSG_TEXT_INFO_ACK = 0x1503,
[JT809SubBusinessTypeDescription("UP_CTRL_MSG_TEXT_INFO_ACK", "下发车辆报文应答", JT809BusinessType.主链路车辆监管消息)]
下发车辆报文应答 = 0x1503,
///<summary>
///上报车辆行驶记录应答
///UP_CTRL_MSG_TAKE_TRAVEL_ACK
///</summary>
[Description("上报车辆行驶记录应答")]
[JT809BodiesType(typeof(JT809_0x1500_0x1504))]
UP_CTRL_MSG_TAKE_TRAVEL_ACK = 0x1504,
[JT809SubBusinessTypeDescription("UP_CTRL_MSG_TAKE_TRAVEL_ACK", "上报车辆行驶记录应答", JT809BusinessType.主链路车辆监管消息)]
上报车辆行驶记录应答 = 0x1504,
///<summary>
///车辆应急接入监管平台应答消息
///UP_CTRL_MSG_EMERGENCY_MONITORING_ACK
///</summary>
[Description("车辆应急接入监管平台应答消息")]
[JT809BodiesType(typeof(JT809_0x1500_0x1505))]
UP_CTRL_MSG_EMERGENCY_MONITORING_ACK = 0x1505,
[JT809SubBusinessTypeDescription("UP_CTRL_MSG_EMERGENCY_MONITORING_ACK", "车辆应急接入监管平台应答消息", JT809BusinessType.主链路车辆监管消息)]
车辆应急接入监管平台应答消息 = 0x1505,
#endregion

#region 从链路车辆监管消息 DOWN_CTRL_MSG
///<summary>
///车辆单向监听请求
///DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ
///</summary>
[Description("车辆单向监听请求")]
[JT809BodiesType(typeof(JT809_0x9500_0x9501))]
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ = 0x9501,
[JT809SubBusinessTypeDescription("DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ", "车辆单向监听请求", JT809BusinessType.从链路车辆监管消息)]
车辆单向监听请求 = 0x9501,
///<summary>
///车辆拍照请求
///DOWN_CTRL_MSG_TAKE_PHOTO_REQ
///</summary>
[Description("车辆拍照请求")]
[JT809BodiesType(typeof(JT809_0x9500_0x9502))]
DOWN_CTRL_MSG_TAKE_PHOTO_REQ = 0x9502,
[JT809SubBusinessTypeDescription("DOWN_CTRL_MSG_TAKE_PHOTO_REQ", "车辆拍照请求", JT809BusinessType.从链路车辆监管消息)]
车辆拍照请求 = 0x9502,
///<summary>
///下发车辆报文请求
///DOWN_CTRL_MSG_TEXT_INFO
///</summary>
[Description("下发车辆报文请求")]
[JT809BodiesType(typeof(JT809_0x9500_0x9503))]
DOWN_CTRL_MSG_TEXT_INFO = 0x9503,
[JT809SubBusinessTypeDescription("DOWN_CTRL_MSG_TEXT_INFO", "下发车辆报文请求", JT809BusinessType.从链路车辆监管消息)]
下发车辆报文请求 = 0x9503,
///<summary>
///上报车辆行驶记录请求
///DOWN_CTRL_MSG_TAKE_TRAVEL_REQ
///</summary>
[Description("上报车辆行驶记录请求")]
[JT809BodiesType(typeof(JT809_0x9500_0x9504))]
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ = 0x9504,
[JT809SubBusinessTypeDescription("DOWN_CTRL_MSG_TAKE_TRAVEL_REQ", "上报车辆行驶记录请求", JT809BusinessType.从链路车辆监管消息)]
上报车辆行驶记录请求 = 0x9504,
///<summary>
///车辆应急接入监管平台请求消息
///DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ
///</summary>
[Description("车辆应急接入监管平台请求消息")]
[JT809BodiesType(typeof(JT809_0x9500_0x9505))]
DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ = 0x9505,
[JT809SubBusinessTypeDescription("DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ", "车辆应急接入监管平台请求消息", JT809BusinessType.从链路车辆监管消息)]
车辆应急接入监管平台请求消息 = 0x9505,
#endregion

#region 主链路静态信息交换消息 UP_BASE_MSG
///<summary>
///补报车辆静态信息应答
///UP_BASE_MSG_VEHICLE_ADDED_ACK
///</summary>
[Description("补报车辆静态信息应答")]
[JT809BodiesType(typeof(JT809_0x1600_0x1601))]
UP_BASE_MSG_VEHICLE_ADDED_ACK = 0x1601,
[JT809SubBusinessTypeDescription("UP_BASE_MSG_VEHICLE_ADDED_ACK", "补报车辆静态信息应答", JT809BusinessType.主链路静态信息交换消息)]
补报车辆静态信息应答 = 0x1601,
#endregion

#region 从链路静态信息交换消息 DOWN_BASE_MSG
///<summary>
///补报车辆静态信息请求
///补报车辆静态信息请求
///DOWN_BASE_MSG_VEHICLE_ADDED
///</summary>
[Description("补报车辆静态信息请求")]
[JT809BodiesType(typeof(JT809_0x9600_0x9601))]
DOWN_BASE_MSG_VEHICLE_ADDED = 0x9601,
[JT809SubBusinessTypeDescription("DOWN_BASE_MSG_VEHICLE_ADDED", "补报车辆静态信息请求", JT809BusinessType.从链路静态信息交换消息)]
补报车辆静态信息请求 = 0x9601,
#endregion
}
}

+ 22
- 86
src/JT809.Protocol/JT809Extensions/JT809PackageExtensions.cs 查看文件

@@ -8,103 +8,20 @@ namespace JT809.Protocol.JT809Extensions
public static class JT809PackageExtensions
{
/// <summary>
/// 创建JT809Package对应的数据体:
/// <list type="TJT809Bodies">
/// <item>
/// <description>JT809_0x1001</description>
/// </item>
/// <item>
/// <description>JT809_0x1002</description>
/// </item>
/// <item>
/// <description>JT809_0x1003</description>
/// </item>
/// <item>
/// <description>JT809_0x1004</description>
/// </item>
/// <item>
/// <description>JT809_0x1005</description>
/// </item>
/// <item>
/// <description>JT809_0x1006</description>
/// </item>
/// <item>
/// <description>JT809_0x1007</description>
/// </item>
/// <item>
/// <description>JT809_0x1008</description>
/// </item>
/// <item>
/// <description>JT809_0x1200</description>
/// </item>
/// <item>
/// <description>JT809_0x1300</description>
/// </item>
/// <item>
/// <description>JT809_0x1400</description>
/// </item>
/// <item>
/// <description>JT809_0x1500</description>
/// </item>
/// <item>
/// <description>JT809_0x1600</description>
/// </item>
/// <item>
/// <description>JT809_0x9001</description>
/// </item>
/// <item>
/// <description>JT809_0x9002</description>
/// </item>
/// <item>
/// <description>JT809_0x9003</description>
/// </item>
/// <item>
/// <description>JT809_0x9004</description>
/// </item>
/// <item>
/// <description>JT809_0x9005</description>
/// </item>
/// <item>
/// <description>JT809_0x9006</description>
/// </item>
/// <item>
/// <description>JT809_0x9007</description>
/// </item>
/// <item>
/// <description>JT809_0x9008</description>
/// </item>
/// <item>
/// <description>JT809_0x9101</description>
/// </item>
/// <item>
/// <description>JT809_0x9200</description>
/// </item>
/// <item>
/// <description>JT809_0x9300</description>
/// </item>
/// <item>
/// <description>JT809_0x9400</description>
/// </item>
/// <item>
/// <description>JT809_0x9500</description>
/// </item>
/// <item>
/// <description>JT809_0x9600</description>
/// </item>
/// </list>
/// 创建JT809Package对应的数据体
/// </summary>
/// <typeparam name="TJT809Bodies"></typeparam>
/// <param name="msgID"></param>
/// <param name="jT809Bodies"></param>
/// <returns></returns>
public static JT809Package Create<TJT809Bodies>(this JT809BusinessType msgID, TJT809Bodies jT809Bodies)
public static JT809Package Create<TJT809Bodies>(this JT809BusinessType jT809BusinessType, TJT809Bodies jT809Bodies)
where TJT809Bodies: JT809Bodies
{
JT809Package jT809Package = new JT809Package();
jT809Package.Bodies = jT809Bodies;
jT809Package.Header = new JT809Header()
{
MsgID = msgID,
BusinessType = jT809BusinessType,
MsgSN = JT809GlobalConfig.Instance.MsgSNDistributed.Increment(),
EncryptFlag = JT809GlobalConfig.Instance.HeaderOptions.EncryptFlag,
EncryptKey = JT809GlobalConfig.Instance.HeaderOptions.EncryptKey,
@@ -113,5 +30,24 @@ namespace JT809.Protocol.JT809Extensions
};
return jT809Package;
}
/// <summary>
/// 创建JT809Package对应的数据体
/// </summary>
/// <param name="jt809BusinessType"></param>
/// <returns></returns>
public static JT809Package Create(this JT809BusinessType jT809BusinessType)
{
JT809Package jT809Package = new JT809Package();
jT809Package.Header = new JT809Header()
{
BusinessType = jT809BusinessType,
MsgSN = JT809GlobalConfig.Instance.MsgSNDistributed.Increment(),
EncryptFlag = JT809GlobalConfig.Instance.HeaderOptions.EncryptFlag,
EncryptKey = JT809GlobalConfig.Instance.HeaderOptions.EncryptKey,
MsgGNSSCENTERID = JT809GlobalConfig.Instance.HeaderOptions.MsgGNSSCENTERID,
Version = JT809GlobalConfig.Instance.HeaderOptions.Version
};
return jT809Package;
}
}
}

+ 2
- 2
src/JT809.Protocol/JT809Formatters/JT809HeaderFormatter.cs 查看文件

@@ -15,7 +15,7 @@ namespace JT809.Protocol.JT809Formatters
JT809Header jT809Header = new JT809Header();
jT809Header.MsgLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
jT809Header.MsgSN= JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
jT809Header.MsgID = (JT809BusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset);
jT809Header.BusinessType = (JT809BusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset);
jT809Header.MsgGNSSCENTERID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
jT809Header.Version = new JT809Header_Version(JT809BinaryExtensions.ReadBytesLittle(bytes, ref offset, JT809Header_Version.FixedByteLength));
jT809Header.EncryptFlag= (JT809Header_Encrypt)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset);
@@ -28,7 +28,7 @@ namespace JT809.Protocol.JT809Formatters
{
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.MsgLength);
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.MsgSN);
offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.MsgID);
offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.BusinessType);
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.MsgGNSSCENTERID);
offset += JT809BinaryExtensions.WriteBytesLittle(memoryOwner, offset, value.Version.Buffer);
offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.EncryptFlag);


+ 2
- 2
src/JT809.Protocol/JT809Formatters/JT809PackageFormatter.cs 查看文件

@@ -52,7 +52,7 @@ namespace JT809.Protocol.JT809Formatters
if ((jT809Package.Header.MsgLength - JT809Package.FixedByteLength) > 0)
{
//JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809Package.Header.MsgID.GetAttribute<JT809BodiesTypeAttribute>();
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809Package.Header.BusinessType.GetAttribute<JT809BodiesTypeAttribute>();
if (jT809BodiesTypeAttribute != null)
{
try
@@ -85,7 +85,7 @@ namespace JT809.Protocol.JT809Formatters
{
// 1. 先序列化数据体,根据数据体的长度赋值给头部,在序列化头部。
int messageBodyOffset = 0;
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = value.Header.MsgID.GetAttribute<JT809BodiesTypeAttribute>();
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = value.Header.BusinessType.GetAttribute<JT809BodiesTypeAttribute>();
if (jT809BodiesTypeAttribute != null)
{
if (value.Bodies != null)


+ 1
- 1
src/JT809.Protocol/JT809Header.cs 查看文件

@@ -29,7 +29,7 @@ namespace JT809.Protocol
/// <summary>
/// 业务数据类型
/// </summary>
public JT809BusinessType MsgID { get; set; }
public JT809BusinessType BusinessType { get; set; }
/// <summary>
/// 下级平台接入码,上级平台给下级平台分配唯一标识码。
/// </summary>


Loading…
取消
儲存