@@ -198,8 +198,8 @@ JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息. | |||||
{ | { | ||||
VehicleNo = "粤A12345", | VehicleNo = "粤A12345", | ||||
VehicleColor = JT809VehicleColorType.黄色, | VehicleColor = JT809VehicleColorType.黄色, | ||||
SubBusinessType = JT809SubBusinessType.报警督办请求.ToUInt16Value(), | |||||
SubBodies = JT809SubBusinessType.报警督办请求.Create_报警督办请求( | |||||
SubBusinessType = JT809SubBusinessType.报警督办请求消息.ToUInt16Value(), | |||||
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求消息( | |||||
new JT809_0x9400_0x9401 | new JT809_0x9400_0x9401 | ||||
{ | { | ||||
WarnSrc = JT809WarnSrc.车载终端, | WarnSrc = JT809WarnSrc.车载终端, | ||||
@@ -250,21 +250,21 @@ static void Main(string[] args) | |||||
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.18363 | BenchmarkDotNet=v0.12.0, OS=Windows 10.0.18363 | ||||
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores | Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores | ||||
.NET Core SDK=3.1.100 | |||||
[Host] : .NET Core 3.1.0 (CoreCLR 4.700.19.56402, CoreFX 4.700.19.56404), X64 RyuJIT | |||||
Job-RQJOPV : .NET Core 3.1.0 (CoreCLR 4.700.19.56402, CoreFX 4.700.19.56404), X64 RyuJIT | |||||
.NET Core SDK=3.1.201 | |||||
[Host] : .NET Core 3.1.3 (CoreCLR 4.700.20.11803, CoreFX 4.700.20.12001), X64 RyuJIT | |||||
Job-BAIJRX : .NET Core 3.1.3 (CoreCLR 4.700.20.11803, CoreFX 4.700.20.12001), X64 RyuJIT | |||||
Platform=AnyCpu Server=False Toolchain=.NET Core 3.1 | Platform=AnyCpu Server=False Toolchain=.NET Core 3.1 | ||||
``` | ``` | ||||
| Method | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |||||
|---------------------------------------- |------- |-------------:|-------------:|------------:|-----------:|------:|------:|-------------:| | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **629.9 us** | **11.09 us** | **9.83 us** | **15.6250** | **-** | **-** | **100.79 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100 | 501.0 us | 8.63 us | 8.07 us | 13.1836 | - | - | 83.59 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **10000** | **63,018.0 us** | **954.14 us** | **845.82 us** | **1625.0000** | **-** | **-** | **10078.74 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 10000 | 48,890.0 us | 1,107.12 us | 1,136.93 us | 1363.6364 | - | - | 8359.38 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100000** | **623,675.9 us** | **10,185.67 us** | **9,527.68 us** | **16000.0000** | **-** | **-** | **100787.23 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100000 | 486,690.2 us | 6,158.00 us | 5,458.90 us | 13000.0000 | - | - | 83595.03 KB | | |||||
| Method | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |||||
|---------------------------------------- |------- |-------------:|------------:|------------:|-----------:|------:|------:|-------------:| | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **509.5 us** | **2.50 us** | **2.22 us** | **15.6250** | **-** | **-** | **100.78 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100 | 203.6 us | 1.95 us | 1.82 us | 13.4277 | - | - | 83.59 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **10000** | **48,343.9 us** | **580.83 us** | **543.31 us** | **1636.3636** | **-** | **-** | **10078.13 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 10000 | 20,705.0 us | 165.58 us | 154.88 us | 1343.7500 | - | - | 8359.38 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100000** | **476,503.3 us** | **4,965.19 us** | **4,401.51 us** | **16000.0000** | **-** | **-** | **100781.25 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100000 | 207,481.3 us | 1,467.56 us | 1,372.76 us | 13333.3333 | - | - | 83594.04 KB | | |||||
## JT809协议消息对照表 | ## JT809协议消息对照表 | ||||
@@ -10,9 +10,9 @@ namespace JT809.Protocol.Test.JT1078 | |||||
public static IJT809Builder AddJT1078Configure(this IJT809Builder builder) | public static IJT809Builder AddJT1078Configure(this IJT809Builder builder) | ||||
{ | { | ||||
builder.Config.Register(Assembly.GetExecutingAssembly()); | builder.Config.Register(Assembly.GetExecutingAssembly()); | ||||
builder.Config.BusinessTypeFactory.SetMap<JT808_JT1078_0x1700>(0x1700); | |||||
#warning 不知道是不是jt1078协议的809结构有问题,先按交换的格式(少了数据交换的头部) | |||||
builder.Config.SubBusinessTypeFactory.SetMap<JT808_JT1078_0x1700_0x1701>(0x1701); | |||||
builder.Config.BusinessTypeFactory.SetMap<JT808_JT1078_0x1700>(); | |||||
//#warning 不知道是不是jt1078协议的809结构有问题,先按交换的格式(少了数据交换的头部) | |||||
builder.Config.SubBusinessTypeFactory.SetMap<JT808_JT1078_0x1700_0x1701>(); | |||||
return builder; | return builder; | ||||
} | } | ||||
} | } | ||||
@@ -1,16 +1,74 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | |||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
namespace JT809.Protocol.Test.JT1078 | namespace JT809.Protocol.Test.JT1078 | ||||
{ | { | ||||
public class JT808_JT1078_0x1700 : JT809ExchangeMessageBodies | |||||
public class JT808_JT1078_0x1700 : JT809ExchangeMessageBodies,IJT809MessagePackFormatter<JT808_JT1078_0x1700> | |||||
{ | { | ||||
public override ushort MsgId => throw new NotImplementedException(); | |||||
public override ushort MsgId => 0x1700; | |||||
public override JT809_LinkType LinkType => throw new NotImplementedException(); | |||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | |||||
public override string Description => throw new NotImplementedException(); | |||||
public override string Description => "0x1700"; | |||||
public JT808_JT1078_0x1700 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT808_JT1078_0x1700 jT808_JT1078_0X1700 = new JT808_JT1078_0x1700(); | |||||
jT808_JT1078_0X1700.VehicleNo = reader.ReadString(21); | |||||
jT808_JT1078_0X1700.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
jT808_JT1078_0X1700.SubBusinessType = reader.ReadUInt16(); | |||||
jT808_JT1078_0X1700.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(jT808_JT1078_0X1700.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
jT808_JT1078_0X1700.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT808_JT1078_0X1700.SubBusinessType.ToString()}"); | |||||
} | |||||
return jT808_JT1078_0X1700; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT808_JT1078_0x1700 value, IJT809Config config) | |||||
{ | |||||
try | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,10 +1,12 @@ | |||||
using System; | |||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
namespace JT809.Protocol.Test.JT1078 | namespace JT809.Protocol.Test.JT1078 | ||||
{ | { | ||||
public class JT808_JT1078_0x1700_0x1701 : JT809SubBodies | |||||
public class JT808_JT1078_0x1700_0x1701 : JT809SubBodies, IJT809MessagePackFormatter<JT808_JT1078_0x1700_0x1701> | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 企业视频监控平台唯一编码,平台所属企业行政区域代码+平台公共编号 | /// 企业视频监控平台唯一编码,平台所属企业行政区域代码+平台公共编号 | ||||
@@ -22,5 +24,21 @@ namespace JT809.Protocol.Test.JT1078 | |||||
public override ushort SubMsgId => 0x1701; | public override ushort SubMsgId => 0x1701; | ||||
public override string Description => "测试"; | public override string Description => "测试"; | ||||
public JT808_JT1078_0x1700_0x1701 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT808_JT1078_0x1700_0x1701 jT808_JT1078_0X1701 = new JT808_JT1078_0x1700_0x1701(); | |||||
jT808_JT1078_0X1701.PlateFormId = reader.ReadArray(11).ToArray(); | |||||
jT808_JT1078_0X1701.AuthorizeCode1 = reader.ReadArray(64).ToArray(); | |||||
jT808_JT1078_0X1701.AuthorizeCode2 = reader.ReadArray(64).ToArray(); | |||||
return jT808_JT1078_0X1701; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT808_JT1078_0x1700_0x1701 value, IJT809Config config) | |||||
{ | |||||
writer.WriteArray(value.PlateFormId); | |||||
writer.WriteArray(value.AuthorizeCode1); | |||||
writer.WriteArray(value.AuthorizeCode2); | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,24 +0,0 @@ | |||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.Test.JT1078 | |||||
{ | |||||
public class JT808_JT1078_0x1700_0x1701_Formatter : IJT809MessagePackFormatter<JT808_JT1078_0x1700_0x1701> | |||||
{ | |||||
public JT808_JT1078_0x1700_0x1701 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT808_JT1078_0x1700_0x1701 jT808_JT1078_0X1701 = new JT808_JT1078_0x1700_0x1701(); | |||||
jT808_JT1078_0X1701.PlateFormId = reader.ReadArray(11).ToArray(); | |||||
jT808_JT1078_0X1701.AuthorizeCode1 = reader.ReadArray(64).ToArray(); | |||||
jT808_JT1078_0X1701.AuthorizeCode2 = reader.ReadArray(64).ToArray(); | |||||
return jT808_JT1078_0X1701; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT808_JT1078_0x1700_0x1701 value, IJT809Config config) | |||||
{ | |||||
writer.WriteArray(value.PlateFormId); | |||||
writer.WriteArray(value.AuthorizeCode1); | |||||
writer.WriteArray(value.AuthorizeCode2); | |||||
} | |||||
} | |||||
} |
@@ -1,50 +0,0 @@ | |||||
using JT809.Protocol.Enums; | |||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | |||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
using System; | |||||
namespace JT809.Protocol.Test.JT1078 | |||||
{ | |||||
public class JT808_JT1078_0x1700_Formatter : IJT809MessagePackFormatter<JT808_JT1078_0x1700> | |||||
{ | |||||
public JT808_JT1078_0x1700 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT808_JT1078_0x1700 jT808_JT1078_0X1700 = new JT808_JT1078_0x1700(); | |||||
jT808_JT1078_0X1700.SubBusinessType = reader.ReadUInt16(); | |||||
try | |||||
{ | |||||
Type jT809SubBodiesImplType = config.SubBusinessTypeFactory.GetSubBodiesImplTypeBySubBusinessType(jT808_JT1078_0X1700.SubBusinessType); | |||||
if (jT809SubBodiesImplType != null) | |||||
jT808_JT1078_0X1700.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809SubBodiesImplType), | |||||
ref reader, config); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT808_JT1078_0X1700.SubBusinessType.ToString()}"); | |||||
} | |||||
return jT808_JT1078_0X1700; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT808_JT1078_0x1700 value, IJT809Config config) | |||||
{ | |||||
try | |||||
{ | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
config.GetMessagePackFormatterByType(value.SubBodies.GetType()), | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -69,7 +69,7 @@ namespace JT809.Protocol.Test.JT809Extensions | |||||
VehicleNo = "粤A12345", | VehicleNo = "粤A12345", | ||||
VehicleColor = JT809VehicleColorType.黄色, | VehicleColor = JT809VehicleColorType.黄色, | ||||
SubBusinessType = JT809SubBusinessType.报警督办请求消息.ToUInt16Value(), | SubBusinessType = JT809SubBusinessType.报警督办请求消息.ToUInt16Value(), | ||||
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求( | |||||
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求消息( | |||||
new JT809_0x9400_0x9401 | new JT809_0x9400_0x9401 | ||||
{ | { | ||||
WarnSrc = JT809WarnSrc.车载终端, | WarnSrc = JT809WarnSrc.车载终端, | ||||
@@ -85,6 +85,8 @@ namespace JT809.Protocol.Test.JT809Extensions | |||||
} | } | ||||
); | ); | ||||
var hex = JT809Serializer.Serialize(jT809Package).ToHexString(); | var hex = JT809Serializer.Serialize(jT809Package).ToHexString(); | ||||
//5B0000007C0000068294000133EFB8010000000000270F94010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000A6565D | |||||
//5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D | |||||
Assert.Equal("5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D", hex); | Assert.Equal("5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D", hex); | ||||
} | } | ||||
} | } | ||||
@@ -1,11 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | using JT809.Protocol.Exceptions; | ||||
using JT809.Protocol.Formatters; | using JT809.Protocol.Formatters; | ||||
using JT809.Protocol.Interfaces; | |||||
using System; | using System; | ||||
using System.Collections.Concurrent; | using System.Collections.Concurrent; | ||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT809.Protocol | namespace JT809.Protocol | ||||
{ | { | ||||
@@ -188,16 +188,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.MessageBody.JT809_0x1007>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x1007>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_下级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008 bodies) | |||||
public static JT809Package Create_下级平台主动关闭主从链路通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x1008>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x1008>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1008 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1008 bodies) | ||||
@@ -206,24 +206,24 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_下级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1008 bodies) | |||||
public static JT809Package Create_下级平台主动关闭主从链路通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1008 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x1008>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x1008>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_EXG_MSG - 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_主链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200 bodies) | |||||
public static JT809Package Create_主链路车辆动态信息交换业务(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x1200>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x1200>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_EXG_MSG - 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1200 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1200 bodies) | ||||
@@ -232,10 +232,10 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// UP_EXG_MSG - 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_主链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1200 bodies) | |||||
public static JT809Package Create_主链路车辆动态信息交换业务(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1200 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x1200>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x1200>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
@@ -370,16 +370,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.MessageBody.JT809_0x9001>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9001>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
/// DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路连接应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002 bodies) | |||||
public static JT809Package Create_从链路连接应答信息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9002>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9002>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
/// DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9002 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9002 bodies) | ||||
@@ -388,10 +388,10 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
/// DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路连接应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9002 bodies) | |||||
public static JT809Package Create_从链路连接应答信息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9002 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9002>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9002>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
@@ -552,16 +552,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.MessageBody.JT809_0x9008>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9008>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_接收定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101 bodies) | |||||
public static JT809Package Create_接收车辆定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9101>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9101>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9101 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9101 bodies) | ||||
@@ -570,24 +570,24 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_接收定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9101 bodies) | |||||
public static JT809Package Create_接收车辆定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9101 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9101>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9101>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200 bodies) | |||||
public static JT809Package Create_从链路车辆动态信息交换业务(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9200>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9200>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9200 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9200 bodies) | ||||
@@ -596,24 +596,24 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9200 bodies) | |||||
public static JT809Package Create_从链路车辆动态信息交换业务(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9200 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9200>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9200>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300 bodies) | |||||
public static JT809Package Create_从链路平台间信息交互业务(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9300>(jT809BusinessType,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9300>(jT809BusinessType,bodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9300 bodies) | public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9300 bodies) | ||||
@@ -622,10 +622,10 @@ namespace JT809.Protocol.Extensions | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809Package Create_从链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9300 bodies) | |||||
public static JT809Package Create_从链路平台间信息交互业务(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9300 bodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.MessageBody.JT809_0x9300>(jT809BusinessType,jT809Header,bodies); | return Create<JT809.Protocol.MessageBody.JT809_0x9300>(jT809BusinessType,jT809Header,bodies); | ||||
} | } | ||||
@@ -11,7 +11,7 @@ namespace JT809.Protocol.Extensions | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_REGISTER - 上传车辆注册信息 | /// UP_EXG_MSG_REGISTER - 上传车辆注册信息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -20,7 +20,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息 | /// UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -29,43 +29,43 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 Create_车辆定位信息自动补报(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 Create_车辆定位信息自动补报请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 Create_启动车辆定位信息交换应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 Create_启动车辆定位信息交换应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 Create_结束车辆定位信息交换应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 Create_结束车辆定位信息交换应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 Create_申请交换指定车辆定位信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 Create_申请交换指定车辆定位信息请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求 | /// UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -74,7 +74,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求 | /// UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -83,34 +83,34 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报车辆驾驶员身份识别信息应答 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报驾驶员身份识别信息应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A Create_上报车辆驾驶员身份识别信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A Create_上报驾驶员身份识别信息应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B Create_上报车辆电子运单应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B Create_上报车辆电子运单应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C Create_主动上报驾驶员身份信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C Create_主动上报驾驶员身份信息消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路动态信息交换消息 | |||||
/// 4608 | |||||
/// UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息 | /// UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -119,43 +119,43 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路平台间信息交互消息 | |||||
/// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答 | |||||
/// 4864 | |||||
/// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 Create_平台查岗应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 Create_平台查岗应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路平台间信息交互消息 | |||||
/// UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答 | |||||
/// 4864 | |||||
/// UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 Create_下发平台间报文应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 Create_下发平台间报文应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路报警信息交互消息 | |||||
/// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答 | |||||
/// 5120 | |||||
/// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 Create_报警督办应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 Create_报警督办应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路报警信息交互消息 | |||||
/// UP_WARN_MSG_ADPT_INFO - 上报报警信息 | |||||
/// 5120 | |||||
/// UP_WARN_MSG_ADPT_INFO - 上报报警信息消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 Create_上报报警信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 Create_上报报警信息消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路报警信息交互消息 | |||||
/// 5120 | |||||
/// UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息 | /// UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -164,7 +164,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路车辆监管消息 | |||||
/// 5376 | |||||
/// UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答 | /// UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -173,7 +173,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路车辆监管消息 | |||||
/// 5376 | |||||
/// UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答 | /// UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -182,25 +182,25 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路车辆监管消息 | |||||
/// UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答 | |||||
/// 5376 | |||||
/// UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 Create_下发车辆报文应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 Create_下发车辆报文应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路车辆监管消息 | |||||
/// UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答 | |||||
/// 5376 | |||||
/// UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 Create_上报车辆行驶记录应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 Create_上报车辆行驶记录应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路车辆监管消息 | |||||
/// 5376 | |||||
/// UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息 | /// UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -209,7 +209,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主链路静态信息交换消息 | |||||
/// 5632 | |||||
/// UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答 | /// UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -218,43 +218,43 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 Create_交换车辆定位信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 Create_交换车辆定位信息消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 Create_车辆定位信息交换补发(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 Create_车辆定位信息交换补发消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 Create_交换车辆静态信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 Create_交换车辆静态信息消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 Create_启动车辆定位信息交换请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 Create_启动车辆定位信息交换请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求 | /// DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -263,7 +263,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答 | /// DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -272,7 +272,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答 | /// DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -281,7 +281,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答 | /// DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -290,7 +290,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求 | /// DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -299,16 +299,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路动态信息交换消息 | |||||
/// DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求 | |||||
/// 37376 | |||||
/// DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B Create_上报车辆电子运单请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B Create_上报车辆电子运单请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路平台间信息交互消息 | |||||
/// 37632 | |||||
/// DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求 | /// DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -317,7 +317,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路平台间信息交互消息 | |||||
/// 37632 | |||||
/// DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求 | /// DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -326,16 +326,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路报警信息交互消息 | |||||
/// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求 | |||||
/// 37888 | |||||
/// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 Create_报警督办请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 Create_报警督办请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路报警信息交互消息 | |||||
/// 37888 | |||||
/// DOWN_WARN_MSG_INFORM_TIPS - 报警预警 | /// DOWN_WARN_MSG_INFORM_TIPS - 报警预警 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -344,7 +344,7 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路报警信息交互消息 | |||||
/// 37888 | |||||
/// DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息 | /// DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -353,25 +353,25 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路车辆监管消息 | |||||
/// DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求 | |||||
/// 38144 | |||||
/// DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 Create_车辆单向监听请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 Create_车辆单向监听请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路车辆监管消息 | |||||
/// DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求 | |||||
/// 38144 | |||||
/// DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 Create_车辆拍照请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 Create_车辆拍照请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路车辆监管消息 | |||||
/// 38144 | |||||
/// DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求 | /// DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -380,16 +380,16 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路车辆监管消息 | |||||
/// DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求 | |||||
/// 38144 | |||||
/// DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 Create_上报车辆行驶记录请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 Create_上报车辆行驶记录请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路车辆监管消息 | |||||
/// 38144 | |||||
/// DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息 | /// DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息 | ||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
@@ -398,11 +398,11 @@ namespace JT809.Protocol.Extensions | |||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 从链路静态信息交换消息 | |||||
/// DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求 | |||||
/// 38400 | |||||
/// DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求消息 | |||||
/// auto-generated | /// auto-generated | ||||
/// </summary> | /// </summary> | ||||
public static JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 Create_补报车辆静态信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 subBodies) | |||||
public static JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 Create_补报车辆静态信息请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 subBodies) | |||||
{ | { | ||||
return Create<JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601>(jT809SubBusinessType,subBodies); | return Create<JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601>(jT809SubBusinessType,subBodies); | ||||
} | } | ||||
@@ -1,74 +0,0 @@ | |||||
using JT809.Protocol.Attributes; | |||||
using JT809.Protocol.Enums; | |||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | |||||
using System; | |||||
using System.Buffers; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using JT809.Protocol.Internal; | |||||
using JT809.Protocol.Interfaces; | |||||
using JT809.Protocol.MessagePack; | |||||
using JT809.Protocol.MessageBody; | |||||
namespace JT809.Protocol.Formatters | |||||
{ | |||||
public class JT809BodiesFormatter<TJT809Bodies> : IJT809MessagePackFormatter<TJT809Bodies> | |||||
where TJT809Bodies: JT809ExchangeMessageBodies, new () | |||||
{ | |||||
public readonly static JT809BodiesFormatter<JT809_0x1200> Instance_0x1200 = new JT809BodiesFormatter<JT809_0x1200>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x1400> Instance_0x1400 = new JT809BodiesFormatter<JT809_0x1400>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x1500> Instance_0x1500 = new JT809BodiesFormatter<JT809_0x1500>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x1600> Instance_0x1600 = new JT809BodiesFormatter<JT809_0x1600>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x9200> Instance_0x9200 = new JT809BodiesFormatter<JT809_0x9200>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x9400> Instance_0x9400 = new JT809BodiesFormatter<JT809_0x9400>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x9500> Instance_0x9500 = new JT809BodiesFormatter<JT809_0x9500>(); | |||||
public readonly static JT809BodiesFormatter<JT809_0x9600> Instance_0x9600 = new JT809BodiesFormatter<JT809_0x9600>(); | |||||
public TJT809Bodies Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
TJT809Bodies jT809Bodies = new TJT809Bodies(); | |||||
jT809Bodies.VehicleNo = reader.ReadString(21); | |||||
jT809Bodies.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
jT809Bodies.SubBusinessType = reader.ReadUInt16(); | |||||
jT809Bodies.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
Type jT809SubBodiesImplType = config.SubBusinessTypeFactory.GetSubBodiesImplTypeBySubBusinessType(jT809Bodies.SubBusinessType); | |||||
if (jT809SubBodiesImplType != null) | |||||
jT809Bodies.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809SubBodiesImplType), | |||||
ref reader, config); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809Bodies.SubBusinessType.ToString()}"); | |||||
} | |||||
return jT809Bodies; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, TJT809Bodies value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
config.GetMessagePackFormatterByType(value.SubBodies.GetType()), | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition()- subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -1,17 +1,12 @@ | |||||
using System; | using System; | ||||
using System.Collections.Generic; | |||||
namespace JT809.Protocol.Interfaces | namespace JT809.Protocol.Interfaces | ||||
{ | { | ||||
public interface IJT809BusinessTypeFactory | |||||
public interface IJT809BusinessTypeFactory : IJT809ExternalRegister | |||||
{ | { | ||||
Type GetBodiesImplTypeByBusinessType(ushort businessType, uint msgGNSSCENTERID); | |||||
IJT809BusinessTypeFactory SetMap<TJT809Bodies>(ushort businessType) | |||||
where TJT809Bodies : JT809Bodies; | |||||
IJT809BusinessTypeFactory SetMap(ushort businessType,Type bodiesImplType); | |||||
IJT809BusinessTypeFactory ReplaceMap<TJT809Bodies>(ushort businessType) | |||||
where TJT809Bodies : JT809Bodies; | |||||
IJT809BusinessTypeFactory CustomSetMap<TJT809Bodies>(ushort businessType, uint msgGNSSCENTERID) | |||||
where TJT809Bodies : JT809Bodies; | |||||
IJT809BusinessTypeFactory CustomSetMap(ushort businessType,uint msgGNSSCENTERID,Type bodiesImplType); | |||||
IDictionary<ushort, object> Map { get; } | |||||
bool TryGetValue(ushort msgId, out object instance); | |||||
IJT809BusinessTypeFactory SetMap<TJT809Bodies>() where TJT809Bodies : JT809Bodies; | |||||
} | } | ||||
} | } |
@@ -1,17 +1,12 @@ | |||||
using System; | using System; | ||||
using System.Collections.Generic; | |||||
namespace JT809.Protocol.Interfaces | namespace JT809.Protocol.Interfaces | ||||
{ | { | ||||
public interface IJT809SubBusinessTypeFactory | |||||
public interface IJT809SubBusinessTypeFactory : IJT809ExternalRegister | |||||
{ | { | ||||
Type GetSubBodiesImplTypeBySubBusinessType(ushort subBusinessType); | |||||
IJT809SubBusinessTypeFactory SetMap<TJT809SubBodies>(ushort subBusinessType) | |||||
where TJT809SubBodies : JT809SubBodies; | |||||
IJT809SubBusinessTypeFactory SetMap(ushort subBusinessType,Type subBodiesImplType); | |||||
IJT809SubBusinessTypeFactory ReplaceMap<TJT809SubBodies>(ushort subBusinessType) | |||||
where TJT809SubBodies : JT809SubBodies; | |||||
IJT809SubBusinessTypeFactory CustomSetMap<TJT809SubBodies>(ushort subBusinessType) | |||||
where TJT809SubBodies : JT809SubBodies; | |||||
IJT809SubBusinessTypeFactory CustomSetMap(ushort subBusinessType,Type subBodiesImplType); | |||||
IDictionary<ushort, object> Map { get; } | |||||
bool TryGetValue(ushort msgId, out object instance); | |||||
IJT809SubBusinessTypeFactory SetMap<TJT809SubBodies>() where TJT809SubBodies : JT809SubBodies; | |||||
} | } | ||||
} | } |
@@ -5,123 +5,74 @@ using JT809.Protocol.Extensions; | |||||
using JT809.Protocol.Interfaces; | using JT809.Protocol.Interfaces; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | |||||
using System.Reflection; | |||||
namespace JT808.Protocol.Internal | namespace JT808.Protocol.Internal | ||||
{ | { | ||||
internal class JT809BusinessTypeFactory : IJT809BusinessTypeFactory | internal class JT809BusinessTypeFactory : IJT809BusinessTypeFactory | ||||
{ | { | ||||
private readonly Dictionary<ushort, Type> map; | |||||
private readonly Dictionary<uint, Dictionary<ushort, Type>> customMap; | |||||
public IDictionary<ushort, object> Map { get; } | |||||
internal JT809BusinessTypeFactory() | internal JT809BusinessTypeFactory() | ||||
{ | { | ||||
map = new Dictionary<ushort, Type>(); | |||||
customMap = new Dictionary<uint, Dictionary<ushort, Type>>(); | |||||
InitMap(); | |||||
Map = new Dictionary<ushort, object>(); | |||||
InitMap(Assembly.GetExecutingAssembly()); | |||||
} | } | ||||
private void InitMap() | |||||
private void InitMap(Assembly assembly) | |||||
{ | { | ||||
foreach (var item in Enum.GetNames(typeof(JT809BusinessType))) | |||||
// var types = assembly.GetTypes().Where(w => w.BaseType == typeof(JT809Bodies)).Where(w=>w != typeof(JT809ExchangeMessageBodies)).ToList(); | |||||
var types = assembly.GetTypes() | |||||
.Where(w => w.BaseType == typeof(JT809Bodies) || w.BaseType == typeof(JT809ExchangeMessageBodies)).ToList(); | |||||
foreach (var type in types) | |||||
{ | { | ||||
JT809BusinessType businessType = item.ToEnum<JT809BusinessType>(); | |||||
if (!map.ContainsKey((ushort)businessType)) | |||||
if (type.Name == nameof(JT809ExchangeMessageBodies)) continue; | |||||
var instance = Activator.CreateInstance(type); | |||||
ushort msgId = 0; | |||||
try | |||||
{ | { | ||||
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = businessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||||
if (jT809BodiesTypeAttribute != null) | |||||
{ | |||||
map.Add((ushort)businessType, jT809BodiesTypeAttribute.JT809BodiesType); | |||||
} | |||||
msgId = (ushort)type.GetProperty(nameof(JT809Bodies.MsgId)).GetValue(instance); | |||||
} | } | ||||
} | |||||
} | |||||
public Type GetBodiesImplTypeByBusinessType(ushort businessType, uint msgGNSSCENTERID) | |||||
{ | |||||
//判断有无自定义消息Id类型 | |||||
if (customMap.TryGetValue(msgGNSSCENTERID, out var dict)) | |||||
{ | |||||
if (dict != null) | |||||
catch (Exception ex) | |||||
{ | { | ||||
return dict.TryGetValue(businessType, out Type bodiesImptType)? bodiesImptType:null; | |||||
continue; | |||||
} | |||||
if (Map.ContainsKey(msgId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {msgId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(msgId, instance); | |||||
} | } | ||||
} | } | ||||
return map.TryGetValue(businessType, out Type type) ? type : null; | |||||
} | |||||
public IJT809BusinessTypeFactory SetMap<TJT809Bodies>(ushort businessType) | |||||
where TJT809Bodies : JT809Bodies | |||||
{ | |||||
if (!map.ContainsKey(businessType)) | |||||
{ | |||||
map.Add(businessType, typeof(TJT809Bodies)); | |||||
} | |||||
return this; | |||||
} | } | ||||
public IJT809BusinessTypeFactory SetMap(ushort businessType, Type bodiesImplType) | |||||
public bool TryGetValue(ushort msgId, out object instance) | |||||
{ | { | ||||
if (!map.ContainsKey(businessType)) | |||||
{ | |||||
map.Add(businessType, bodiesImplType); | |||||
} | |||||
return this; | |||||
return Map.TryGetValue(msgId, out instance); | |||||
} | } | ||||
public IJT809BusinessTypeFactory ReplaceMap<TJT809Bodies>(ushort businessType) where TJT809Bodies : JT809Bodies | |||||
public IJT809BusinessTypeFactory SetMap<TJT809Bodies>() where TJT809Bodies : JT809Bodies | |||||
{ | { | ||||
if (!map.ContainsKey(businessType)) | |||||
Type type = typeof(TJT809Bodies); | |||||
var instance = Activator.CreateInstance(type); | |||||
var msgId = (ushort)type.GetProperty(nameof(JT809Bodies.MsgId)).GetValue(instance); | |||||
if (Map.ContainsKey(msgId)) | |||||
{ | { | ||||
map.Add(businessType, typeof(TJT809Bodies)); | |||||
throw new ArgumentException($"{type.FullName} {msgId} An element with the same key already exists."); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
map[businessType] = typeof(TJT809Bodies); | |||||
Map.Add(msgId, instance); | |||||
} | } | ||||
return this; | return this; | ||||
} | } | ||||
public IJT809BusinessTypeFactory CustomSetMap<TJT809Bodies>(ushort businessType, uint msgGNSSCENTERID) where TJT809Bodies : JT809Bodies | |||||
{ | |||||
if (!customMap.TryGetValue(msgGNSSCENTERID, out var dict)) | |||||
{ | |||||
if (dict == null) | |||||
{ | |||||
Dictionary<ushort, Type> tmp = new Dictionary<ushort, Type>(); | |||||
tmp.Add(businessType, typeof(TJT809Bodies)); | |||||
customMap.Add(businessType, tmp); | |||||
} | |||||
else | |||||
{ | |||||
if (!dict.ContainsKey(businessType)) | |||||
{ | |||||
dict.Add(businessType, typeof(TJT809Bodies)); | |||||
} | |||||
} | |||||
} | |||||
return this; | |||||
} | |||||
public IJT809BusinessTypeFactory CustomSetMap(ushort businessType, uint msgGNSSCENTERID, Type bodiesImplType) | |||||
public void Register(Assembly externalAssembly) | |||||
{ | { | ||||
if (!customMap.TryGetValue(msgGNSSCENTERID, out var dict)) | |||||
{ | |||||
if (dict == null) | |||||
{ | |||||
Dictionary<ushort, Type> tmp = new Dictionary<ushort, Type>(); | |||||
tmp.Add(businessType, bodiesImplType); | |||||
customMap.Add(businessType, tmp); | |||||
} | |||||
else | |||||
{ | |||||
if (!dict.ContainsKey(businessType)) | |||||
{ | |||||
dict.Add(businessType, bodiesImplType); | |||||
} | |||||
} | |||||
} | |||||
return this; | |||||
InitMap(externalAssembly); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -33,6 +33,10 @@ namespace JT809.Protocol.Internal | |||||
var genericImplType = firstType.GetGenericArguments().FirstOrDefault(); | var genericImplType = firstType.GetGenericArguments().FirstOrDefault(); | ||||
if (genericImplType != null) | if (genericImplType != null) | ||||
{ | { | ||||
if (genericImplType.GUID == Guid.Empty) | |||||
{ | |||||
continue; | |||||
} | |||||
if (!FormatterDict.ContainsKey(genericImplType.GUID)) | if (!FormatterDict.ContainsKey(genericImplType.GUID)) | ||||
{ | { | ||||
FormatterDict.Add(genericImplType.GUID, Activator.CreateInstance(genericImplType)); | FormatterDict.Add(genericImplType.GUID, Activator.CreateInstance(genericImplType)); | ||||
@@ -5,91 +5,71 @@ using JT809.Protocol.Extensions; | |||||
using JT809.Protocol.Interfaces; | using JT809.Protocol.Interfaces; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | |||||
using System.Reflection; | |||||
namespace JT808.Protocol.Internal | namespace JT808.Protocol.Internal | ||||
{ | { | ||||
internal class JT809SubBusinessTypeFactory : IJT809SubBusinessTypeFactory | internal class JT809SubBusinessTypeFactory : IJT809SubBusinessTypeFactory | ||||
{ | { | ||||
private readonly Dictionary<ushort, Type> map; | |||||
public IDictionary<ushort, object> Map { get; } | |||||
internal JT809SubBusinessTypeFactory() | internal JT809SubBusinessTypeFactory() | ||||
{ | { | ||||
map = new Dictionary<ushort, Type>(); | |||||
InitMap(); | |||||
Map = new Dictionary<ushort, object>(); | |||||
InitMap(Assembly.GetExecutingAssembly()); | |||||
} | } | ||||
private void InitMap() | |||||
private void InitMap(Assembly assembly) | |||||
{ | { | ||||
foreach (var item in Enum.GetNames(typeof(JT809SubBusinessType))) | |||||
var types = assembly.GetTypes().Where(w => w.BaseType == typeof(JT809SubBodies)).ToList(); | |||||
foreach (var type in types) | |||||
{ | { | ||||
JT809SubBusinessType subBusinessType = item.ToEnum<JT809SubBusinessType>(); | |||||
if (!map.ContainsKey((ushort)subBusinessType)) | |||||
var instance = Activator.CreateInstance(type); | |||||
ushort msgId = 0; | |||||
try | |||||
{ | { | ||||
JT809BodiesTypeAttribute jT809BodiesTypeAttribute = subBusinessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||||
if (jT809BodiesTypeAttribute != null) | |||||
{ | |||||
map.Add((ushort)subBusinessType, jT809BodiesTypeAttribute.JT809BodiesType); | |||||
} | |||||
msgId = (ushort)type.GetProperty(nameof(JT809SubBodies.SubMsgId)).GetValue(instance); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
continue; | |||||
} | |||||
if (Map.ContainsKey(msgId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {msgId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(msgId, instance); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
public Type GetSubBodiesImplTypeBySubBusinessType(ushort subBusinessType) | |||||
{ | |||||
return map.TryGetValue(subBusinessType, out Type type) ? type : null; | |||||
} | |||||
public IJT809SubBusinessTypeFactory SetMap<TJT809SubBodies>(ushort subBusinessType) | |||||
where TJT809SubBodies : JT809SubBodies | |||||
{ | |||||
if (!map.ContainsKey(subBusinessType)) | |||||
{ | |||||
map.Add(subBusinessType, typeof(TJT809SubBodies)); | |||||
} | |||||
return this; | |||||
} | |||||
public IJT809SubBusinessTypeFactory SetMap(ushort subBusinessType, Type subBodiesImplType) | |||||
{ | |||||
if (!map.ContainsKey(subBusinessType)) | |||||
{ | |||||
map.Add(subBusinessType, subBodiesImplType); | |||||
} | |||||
return this; | |||||
} | |||||
public IJT809SubBusinessTypeFactory ReplaceMap<TJT809SubBodies>(ushort subBusinessType) where TJT809SubBodies : JT809SubBodies | |||||
public bool TryGetValue(ushort msgId, out object instance) | |||||
{ | { | ||||
if (!map.ContainsKey(subBusinessType)) | |||||
{ | |||||
map.Add(subBusinessType, typeof(TJT809SubBodies)); | |||||
} | |||||
else | |||||
{ | |||||
map[subBusinessType] = typeof(TJT809SubBodies); | |||||
} | |||||
return this; | |||||
return Map.TryGetValue(msgId, out instance); | |||||
} | } | ||||
public IJT809SubBusinessTypeFactory CustomSetMap<TJT809SubBodies>(ushort subBusinessType) where TJT809SubBodies : JT809SubBodies | |||||
public IJT809SubBusinessTypeFactory SetMap<TJT809SubBodies>() where TJT809SubBodies : JT809SubBodies | |||||
{ | { | ||||
if (!map.ContainsKey(subBusinessType)) | |||||
Type type = typeof(TJT809SubBodies); | |||||
var instance = Activator.CreateInstance(type); | |||||
var msgId = (ushort)type.GetProperty(nameof(JT809SubBodies.SubMsgId)).GetValue(instance); | |||||
if (Map.ContainsKey(msgId)) | |||||
{ | { | ||||
map.Add(subBusinessType, typeof(TJT809SubBodies)); | |||||
throw new ArgumentException($"{type.FullName} {msgId} An element with the same key already exists."); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
map[subBusinessType] = typeof(TJT809SubBodies); | |||||
Map.Add(msgId, instance); | |||||
} | } | ||||
return this; | return this; | ||||
} | } | ||||
public IJT809SubBusinessTypeFactory CustomSetMap(ushort subBusinessType, Type subBodiesImplType) | |||||
public void Register(Assembly externalAssembly) | |||||
{ | { | ||||
if (!map.ContainsKey(subBusinessType)) | |||||
{ | |||||
map.Add(subBusinessType, subBodiesImplType); | |||||
} | |||||
return this; | |||||
InitMap(externalAssembly); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -144,4 +144,8 @@ | |||||
</Compile> | </Compile> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -292,39 +292,39 @@ | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_下级平台主动关闭链路通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_下级平台主动关闭主从链路通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008)"> | |||||
<summary> | <summary> | ||||
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008)"> | ||||
<summary> | <summary> | ||||
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_下级平台主动关闭链路通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x1008)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_下级平台主动关闭主从链路通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x1008)"> | |||||
<summary> | <summary> | ||||
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息 | |||||
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_主链路动态信息交换消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_主链路车辆动态信息交换业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200)"> | |||||
<summary> | <summary> | ||||
UP_EXG_MSG - 主链路动态信息交换消息 | |||||
UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200)"> | ||||
<summary> | <summary> | ||||
UP_EXG_MSG - 主链路动态信息交换消息 | |||||
UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_主链路动态信息交换消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x1200)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_主链路车辆动态信息交换业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x1200)"> | |||||
<summary> | <summary> | ||||
UP_EXG_MSG - 主链路动态信息交换消息 | |||||
UP_EXG_MSG - 主链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -418,21 +418,21 @@ | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路连接应答消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路连接应答信息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002)"> | |||||
<summary> | <summary> | ||||
DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002)"> | ||||
<summary> | <summary> | ||||
DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路连接应答消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9002)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路连接应答信息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9002)"> | |||||
<summary> | <summary> | ||||
DOWN_CONNECT_RSP - 从链路连接应答消息 | |||||
DOWN_CONNECT_RSP - 从链路连接应答信息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -544,57 +544,57 @@ | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_接收定位信息数量通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_接收车辆定位信息数量通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101)"> | |||||
<summary> | <summary> | ||||
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101)"> | ||||
<summary> | <summary> | ||||
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_接收定位信息数量通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9101)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_接收车辆定位信息数量通知消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9101)"> | |||||
<summary> | <summary> | ||||
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息 | |||||
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路动态信息交换消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路车辆动态信息交换业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200)"> | |||||
<summary> | <summary> | ||||
DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200)"> | ||||
<summary> | <summary> | ||||
DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路动态信息交换消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9200)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路车辆动态信息交换业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9200)"> | |||||
<summary> | <summary> | ||||
DOWN_EXG_MSG - 从链路动态信息交换消息 | |||||
DOWN_EXG_MSG - 从链路车辆动态信息交换业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路平台间信息交互消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路平台间信息交互业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300)"> | |||||
<summary> | <summary> | ||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300)"> | <member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300)"> | ||||
<summary> | <summary> | ||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路平台间信息交互消息(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9300)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create_从链路平台间信息交互业务(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.JT809Header,JT809.Protocol.MessageBody.JT809_0x9300)"> | |||||
<summary> | <summary> | ||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息 | |||||
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -660,312 +660,317 @@ | |||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上传车辆注册信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上传车辆注册信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201)"> | ||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
4608 | |||||
UP_EXG_MSG_REGISTER - 上传车辆注册信息 | UP_EXG_MSG_REGISTER - 上传车辆注册信息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时上传车辆定位信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时上传车辆定位信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202)"> | ||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
4608 | |||||
UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息 | UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆定位信息自动补报(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆定位信息自动补报请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报 | |||||
4608 | |||||
UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_启动车辆定位信息交换应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_启动车辆定位信息交换应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答 | |||||
4608 | |||||
UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_结束车辆定位信息交换应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_结束车辆定位信息交换应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答 | |||||
4608 | |||||
UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_申请交换指定车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_申请交换指定车辆定位信息请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求 | |||||
4608 | |||||
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208)"> | ||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
4608 | |||||
UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求 | UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209)"> | ||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
4608 | |||||
UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求 | UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆驾驶员身份识别信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报驾驶员身份识别信息应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报车辆驾驶员身份识别信息应答 | |||||
4608 | |||||
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报驾驶员身份识别信息应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆电子运单应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆电子运单应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答 | |||||
4608 | |||||
UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报驾驶员身份信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报驾驶员身份信息消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C)"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息 | |||||
4608 | |||||
UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报车辆电子运单信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报车辆电子运单信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D)"> | ||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | |||||
4608 | |||||
UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息 | UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_平台查岗应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_平台查岗应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301)"> | |||||
<summary> | <summary> | ||||
主链路平台间信息交互消息 | |||||
UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答 | |||||
4864 | |||||
UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发平台间报文应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发平台间报文应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302)"> | |||||
<summary> | <summary> | ||||
主链路平台间信息交互消息 | |||||
UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答 | |||||
4864 | |||||
UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警督办应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警督办应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401)"> | |||||
<summary> | <summary> | ||||
主链路报警信息交互消息 | |||||
UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答 | |||||
5120 | |||||
UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报报警信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报报警信息消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402)"> | |||||
<summary> | <summary> | ||||
主链路报警信息交互消息 | |||||
UP_WARN_MSG_ADPT_INFO - 上报报警信息 | |||||
5120 | |||||
UP_WARN_MSG_ADPT_INFO - 上报报警信息消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报报警处理结果信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报报警处理结果信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403)"> | ||||
<summary> | <summary> | ||||
主链路报警信息交互消息 | |||||
5120 | |||||
UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息 | UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆单向监听应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆单向监听应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501)"> | ||||
<summary> | <summary> | ||||
主链路车辆监管消息 | |||||
5376 | |||||
UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答 | UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆拍照应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆拍照应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502)"> | ||||
<summary> | <summary> | ||||
主链路车辆监管消息 | |||||
5376 | |||||
UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答 | UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发车辆报文应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发车辆报文应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503)"> | |||||
<summary> | <summary> | ||||
主链路车辆监管消息 | |||||
UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答 | |||||
5376 | |||||
UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆行驶记录应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆行驶记录应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504)"> | |||||
<summary> | <summary> | ||||
主链路车辆监管消息 | |||||
UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答 | |||||
5376 | |||||
UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505)"> | ||||
<summary> | <summary> | ||||
主链路车辆监管消息 | |||||
5376 | |||||
UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息 | UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补报车辆静态信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补报车辆静态信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601)"> | ||||
<summary> | <summary> | ||||
主链路静态信息交换消息 | |||||
5632 | |||||
UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答 | UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_交换车辆定位信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_交换车辆定位信息消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202)"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息 | |||||
37376 | |||||
DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆定位信息交换补发(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆定位信息交换补发消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203)"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发 | |||||
37376 | |||||
DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_交换车辆静态信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_交换车辆静态信息消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204)"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息 | |||||
37376 | |||||
DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_启动车辆定位信息交换请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_启动车辆定位信息交换请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205)"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求 | |||||
37376 | |||||
DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_结束车辆定位信息交换请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_结束车辆定位信息交换请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206)"> | ||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
37376 | |||||
DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求 | DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_申请交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_申请交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207)"> | ||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
37376 | |||||
DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答 | DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208)"> | ||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
37376 | |||||
DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答 | DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209)"> | ||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
37376 | |||||
DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答 | DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆驾驶员身份识别信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆驾驶员身份识别信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A)"> | ||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
37376 | |||||
DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求 | DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆电子运单请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆电子运单请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B)"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求 | |||||
37376 | |||||
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_平台查岗请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_平台查岗请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301)"> | ||||
<summary> | <summary> | ||||
从链路平台间信息交互消息 | |||||
37632 | |||||
DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求 | DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发平台间报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发平台间报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302)"> | ||||
<summary> | <summary> | ||||
从链路平台间信息交互消息 | |||||
37632 | |||||
DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求 | DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警督办请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警督办请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401)"> | |||||
<summary> | <summary> | ||||
从链路报警信息交互消息 | |||||
DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求 | |||||
37888 | |||||
DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警预警(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警预警(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402)"> | ||||
<summary> | <summary> | ||||
从链路报警信息交互消息 | |||||
37888 | |||||
DOWN_WARN_MSG_INFORM_TIPS - 报警预警 | DOWN_WARN_MSG_INFORM_TIPS - 报警预警 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时交换报警信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时交换报警信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403)"> | ||||
<summary> | <summary> | ||||
从链路报警信息交互消息 | |||||
37888 | |||||
DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息 | DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆单向监听请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆单向监听请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501)"> | |||||
<summary> | <summary> | ||||
从链路车辆监管消息 | |||||
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求 | |||||
38144 | |||||
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆拍照请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆拍照请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502)"> | |||||
<summary> | <summary> | ||||
从链路车辆监管消息 | |||||
DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求 | |||||
38144 | |||||
DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发车辆报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发车辆报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503)"> | ||||
<summary> | <summary> | ||||
从链路车辆监管消息 | |||||
38144 | |||||
DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求 | DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆行驶记录请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆行驶记录请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504)"> | |||||
<summary> | <summary> | ||||
从链路车辆监管消息 | |||||
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求 | |||||
38144 | |||||
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505)"> | <member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505)"> | ||||
<summary> | <summary> | ||||
从链路车辆监管消息 | |||||
38144 | |||||
DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息 | DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息 | ||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补报车辆静态信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601)"> | |||||
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补报车辆静态信息请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601)"> | |||||
<summary> | <summary> | ||||
从链路静态信息交换消息 | |||||
DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求 | |||||
38400 | |||||
DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求消息 | |||||
auto-generated | auto-generated | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT809.Protocol.Interfaces.IJT809_2019_Version"> | |||||
<summary> | |||||
只用来标识2019版本增删改情况 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT809.Protocol.IJT809Config.MsgSNDistributed"> | <member name="P:JT809.Protocol.IJT809Config.MsgSNDistributed"> | ||||
<summary> | <summary> | ||||
消息流水号 | 消息流水号 | ||||
@@ -1005,6 +1010,13 @@ | |||||
<param name="externalAssemblies"></param> | <param name="externalAssemblies"></param> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="P:JT809.Protocol.JT809Bodies.SkipSerialization"> | |||||
<summary> | |||||
跳过数据体序列化 | |||||
默认不跳过 | |||||
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT809.Protocol.JT809Constants.DateLimitYear"> | <member name="F:JT809.Protocol.JT809Constants.DateLimitYear"> | ||||
<summary> | <summary> | ||||
日期限制于2000年 | 日期限制于2000年 | ||||
@@ -1147,6 +1159,13 @@ | |||||
子业务数据体 | 子业务数据体 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT809.Protocol.JT809SubBodies.SkipSerialization"> | |||||
<summary> | |||||
跳过数据体序列化 | |||||
默认不跳过 | |||||
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT809.Protocol.MessageBody.JT809_0x1001"> | <member name="T:JT809.Protocol.MessageBody.JT809_0x1001"> | ||||
<summary> | <summary> | ||||
主链路登录请求消息 | 主链路登录请求消息 | ||||
@@ -1765,7 +1784,7 @@ | |||||
</member> | </member> | ||||
<member name="T:JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208"> | <member name="T:JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208"> | ||||
<summary> | <summary> | ||||
取消交换指定车辆定位信息请 | |||||
取消交换指定车辆定位信息请求 | |||||
<para>子业务类型标识:UP_EXG_MSG_APPLY_F0R_MONIOR_END</para> | <para>子业务类型标识:UP_EXG_MSG_APPLY_F0R_MONIOR_END</para> | ||||
<para>描述:下级平台上传该命令给上级平台,取消之前申请监控的特殊车辆</para> | <para>描述:下级平台上传该命令给上级平台,取消之前申请监控的特殊车辆</para> | ||||
</summary> | </summary> | ||||
@@ -2198,7 +2217,7 @@ | |||||
</member> | </member> | ||||
<member name="T:JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209"> | <member name="T:JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209"> | ||||
<summary> | <summary> | ||||
取消交换指定车辆定位信息应答 | |||||
补发车辆定位信息应答 | |||||
<para>子业务类型标识:DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK</para> | <para>子业务类型标识:DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK</para> | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2802,9 +2821,9 @@ | |||||
UP_DISCONNECT_INFORM | UP_DISCONNECT_INFORM | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.下级平台主动关闭链路通知消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.下级平台主动关闭主从链路通知消息"> | |||||
<summary> | <summary> | ||||
下级平台主动关闭链路通知消息 | |||||
下级平台主动关闭主从链路通知消息 | |||||
UP_CLOSELINK_INFORM | UP_CLOSELINK_INFORM | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2814,9 +2833,9 @@ | |||||
DOWN_CONNECT_REQ | DOWN_CONNECT_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路连接应答消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路连接应答信息"> | |||||
<summary> | <summary> | ||||
从链路连接应答消息 | |||||
从链路连接应答信息 | |||||
DOWN_CONNECT_RSP | DOWN_CONNECT_RSP | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2856,21 +2875,21 @@ | |||||
DOWN_CLOSELINK_INFORM | DOWN_CLOSELINK_INFORM | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.接收定位信息数量通知消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.接收车辆定位信息数量通知消息"> | |||||
<summary> | <summary> | ||||
接收定位信息数量通知消息 | |||||
接收车辆定位信息数量通知消息 | |||||
DOWN_TOTAL_RECV_BACK_MSG | DOWN_TOTAL_RECV_BACK_MSG | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.主链路动态信息交换消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.主链路车辆动态信息交换业务"> | |||||
<summary> | <summary> | ||||
主链路动态信息交换消息 | 主链路动态信息交换消息 | ||||
UP_EXG_MSG | UP_EXG_MSG | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路动态信息交换消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路车辆动态信息交换业务"> | |||||
<summary> | <summary> | ||||
从链路动态信息交换消息 | |||||
从链路车辆动态信息交换业务 | |||||
DOWN_EXG_MSG | DOWN_EXG_MSG | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2880,9 +2899,9 @@ | |||||
UP_PLATFORM_MSG | UP_PLATFORM_MSG | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路平台间信息交互消息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路平台间信息交互业务"> | |||||
<summary> | <summary> | ||||
从链路平台间信息交互消息 | |||||
从链路平台间信息交互业务 | |||||
DOWN_PLATFORM_MSG | DOWN_PLATFORM_MSG | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2939,25 +2958,25 @@ | |||||
UP_EXG_MSG_REAL_LOCATION | UP_EXG_MSG_REAL_LOCATION | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息自动补报"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息自动补报请求消息"> | |||||
<summary> | <summary> | ||||
车辆定位信息自动补报 | |||||
车辆定位信息自动补报请求消息 | |||||
UP_EXG_MSG_HISTORY_LOCATION | UP_EXG_MSG_HISTORY_LOCATION | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换应答消息"> | |||||
<summary> | <summary> | ||||
启动车辆定位信息交换应答 | |||||
启动车辆定位信息交换应答消息 | |||||
UP_EXG_MSG_RETURN_STARTUP_ACK | UP_EXG_MSG_RETURN_STARTUP_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.结束车辆定位信息交换应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.结束车辆定位信息交换应答消息"> | |||||
<summary> | <summary> | ||||
结束车辆定位信息交换应答 | 结束车辆定位信息交换应答 | ||||
UP_EXG_MSG_RETURN_END_ACK | UP_EXG_MSG_RETURN_END_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.申请交换指定车辆定位信息请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.申请交换指定车辆定位信息请求消息"> | |||||
<summary> | <summary> | ||||
申请交换指定车辆定位信息请求 | 申请交换指定车辆定位信息请求 | ||||
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP | UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP | ||||
@@ -2975,21 +2994,21 @@ | |||||
UP_EXG_MSG_APPLY_HISGNSSDATA_REQ | UP_EXG_MSG_APPLY_HISGNSSDATA_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆驾驶员身份识别信息应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报驾驶员身份识别信息应答消息"> | |||||
<summary> | <summary> | ||||
上报车辆驾驶员身份识别信息应答 | 上报车辆驾驶员身份识别信息应答 | ||||
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK | UP_EXG_MSG_REPORT_DRIVER_INFO_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单应答消息"> | |||||
<summary> | <summary> | ||||
上报车辆电子运单应答 | 上报车辆电子运单应答 | ||||
UP_EXG_MSG_TAKE_EWAYBILL_ACK | UP_EXG_MSG_TAKE_EWAYBILL_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.主动上报驾驶员身份信息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.主动上报驾驶员身份信息消息"> | |||||
<summary> | <summary> | ||||
主动上报驾驶员身份信息 | |||||
主动上报驾驶员身份信息消息 | |||||
UP_EXG_MSG_REPORT_DRIVER_INFO | UP_EXG_MSG_REPORT_DRIVER_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -2999,27 +3018,27 @@ | |||||
UP_EXG_MSG_REPORT_EWAYBILL_INFO | UP_EXG_MSG_REPORT_EWAYBILL_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆定位信息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆定位信息消息"> | |||||
<summary> | <summary> | ||||
交换车辆定位信息 | 交换车辆定位信息 | ||||
DOWN_EXG_MSG_CAR_LOCATION | DOWN_EXG_MSG_CAR_LOCATION | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息交换补发"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息交换补发消息"> | |||||
<summary> | <summary> | ||||
车辆定位信息交换补发 | 车辆定位信息交换补发 | ||||
DOWN_EXG_MSG_HISTORY_ARCOSSAREA | DOWN_EXG_MSG_HISTORY_ARCOSSAREA | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆静态信息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆静态信息消息"> | |||||
<summary> | <summary> | ||||
交换车辆静态信息 | 交换车辆静态信息 | ||||
DOWN_EXG_MSG_CAR_INFO | DOWN_EXG_MSG_CAR_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换请求消息"> | |||||
<summary> | <summary> | ||||
启动车辆定位信息交换请求 | |||||
启动车辆定位信息交换请求消息 | |||||
DOWN_EXG_MSG_RETURN_STARTUP | DOWN_EXG_MSG_RETURN_STARTUP | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3052,21 +3071,21 @@ | |||||
DOWN_EXG_MSG_REPORT_DRIVER_INFO | DOWN_EXG_MSG_REPORT_DRIVER_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单请求消息"> | |||||
<summary> | <summary> | ||||
上报车辆电子运单请求 | 上报车辆电子运单请求 | ||||
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ | DOWN_EXG_MSG_TAKE_EWAYBILL_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.平台查岗应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.平台查岗应答消息"> | |||||
<summary> | <summary> | ||||
平台查岗应答 | |||||
平台查岗应答消息 | |||||
UP_PLATFORM_MSG_POST_QUERY_ACK | UP_PLATFORM_MSG_POST_QUERY_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发平台间报文应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发平台间报文应答消息"> | |||||
<summary> | <summary> | ||||
下发平台间报文应答 | |||||
下发平台间报文应答消息 | |||||
UP_PLATFORM_MSG_INFO_ACK | UP_PLATFORM_MSG_INFO_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3082,15 +3101,15 @@ | |||||
DOWN_PLATFORM_MSG_INFO_REQ | DOWN_PLATFORM_MSG_INFO_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办应答消息"> | |||||
<summary> | <summary> | ||||
报警督办应答 | |||||
报警督办应答消息 | |||||
UP_WARN_MSG_URGE_TODO_ACK | UP_WARN_MSG_URGE_TODO_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报报警信息"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报报警信息消息"> | |||||
<summary> | <summary> | ||||
上报报警信息 | |||||
上报报警信息消息 | |||||
UP_WARN_MSG_ADPT_INFO | UP_WARN_MSG_ADPT_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3100,9 +3119,9 @@ | |||||
UP_WARN_MSG_ADPT_TODO_INFO | UP_WARN_MSG_ADPT_TODO_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办请求消息"> | |||||
<summary> | <summary> | ||||
报警督办请求 | |||||
报警督办请求消息 | |||||
DOWN_WARN_MSG_URGE_TODO_REQ | DOWN_WARN_MSG_URGE_TODO_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3130,15 +3149,15 @@ | |||||
UP_CTRL_MSG_TAKE_PHOTO_ACK | UP_CTRL_MSG_TAKE_PHOTO_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发车辆报文应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发车辆报文应答消息"> | |||||
<summary> | <summary> | ||||
下发车辆报文应答 | |||||
下发车辆报文应答消息 | |||||
UP_CTRL_MSG_TEXT_INFO_ACK | UP_CTRL_MSG_TEXT_INFO_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录应答"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录应答消息"> | |||||
<summary> | <summary> | ||||
上报车辆行驶记录应答 | |||||
上报车辆行驶记录应答消息 | |||||
UP_CTRL_MSG_TAKE_TRAVEL_ACK | UP_CTRL_MSG_TAKE_TRAVEL_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3148,15 +3167,15 @@ | |||||
UP_CTRL_MSG_EMERGENCY_MONITORING_ACK | UP_CTRL_MSG_EMERGENCY_MONITORING_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆单向监听请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆单向监听请求消息"> | |||||
<summary> | <summary> | ||||
车辆单向监听请求 | |||||
车辆单向监听请求消息 | |||||
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ | DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆拍照请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆拍照请求消息"> | |||||
<summary> | <summary> | ||||
车辆拍照请求 | |||||
车辆拍照请求消息 | |||||
DOWN_CTRL_MSG_TAKE_PHOTO_REQ | DOWN_CTRL_MSG_TAKE_PHOTO_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3166,9 +3185,9 @@ | |||||
DOWN_CTRL_MSG_TEXT_INFO | DOWN_CTRL_MSG_TEXT_INFO | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录请求消息"> | |||||
<summary> | <summary> | ||||
上报车辆行驶记录请求 | |||||
上报车辆行驶记录请求消息 | |||||
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ | DOWN_CTRL_MSG_TAKE_TRAVEL_REQ | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3184,9 +3203,9 @@ | |||||
UP_BASE_MSG_VEHICLE_ADDED_ACK | UP_BASE_MSG_VEHICLE_ADDED_ACK | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.补报车辆静态信息请求"> | |||||
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.补报车辆静态信息请求消息"> | |||||
<summary> | <summary> | ||||
补报车辆静态信息请求 | |||||
补报车辆静态信息请求消息 | |||||
DOWN_BASE_MSG_VEHICLE_ADDED | DOWN_BASE_MSG_VEHICLE_ADDED | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
@@ -3305,6 +3324,21 @@ | |||||
错误代码 | 错误代码 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT809.Protocol.Enums.JT809_LinkType"> | |||||
<summary> | |||||
链路类型 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT809.Protocol.Enums.JT809_LinkType.main"> | |||||
<summary> | |||||
主链路 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT809.Protocol.Enums.JT809_LinkType.subordinate"> | |||||
<summary> | |||||
从链路 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT809.Protocol.Enums.JT809_VehiclePositionEncrypt"> | <member name="T:JT809.Protocol.Enums.JT809_VehiclePositionEncrypt"> | ||||
<summary> | <summary> | ||||
定位信息是否使用国家测绘局批准的地图保密插件进行加密。 | 定位信息是否使用国家测绘局批准的地图保密插件进行加密。 | ||||
@@ -40,8 +40,7 @@ namespace JT809.Protocol | |||||
// 3.初始化消息头 | // 3.初始化消息头 | ||||
try | try | ||||
{ | { | ||||
//todo:JT809HeaderFormatter | |||||
//jT809Package.Header = JT809HeaderFormatter.Instance.Deserialize(ref reader, config); | |||||
jT809Package.Header = config.GetMessagePackFormatter<JT809Header>().Deserialize(ref reader, config); | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
@@ -69,7 +68,7 @@ namespace JT809.Protocol | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex); | |||||
throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex); | |||||
} | } | ||||
} | } | ||||
jT809Package.CRCCode = reader.CalculateCheckXorCode; | jT809Package.CRCCode = reader.CalculateCheckXorCode; | ||||
@@ -47,45 +47,39 @@ namespace JT809.Protocol | |||||
// 3.初始化消息头 | // 3.初始化消息头 | ||||
try | try | ||||
{ | { | ||||
//todo:JT809HeaderFormatter | |||||
//jT809Package.Header = JT809HeaderFormatter.Instance.Deserialize(ref reader, config); | |||||
jT809Package.Header = config.GetMessagePackFormatter<JT809Header>().Deserialize(ref reader, config); | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex); | |||||
} | |||||
throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex); | |||||
} | |||||
// 5.数据体处理 | // 5.数据体处理 | ||||
// 5.1 判断是否有数据体(总长度-固定长度)> 0 | // 5.1 判断是否有数据体(总长度-固定长度)> 0 | ||||
if ((jT809Package.Header.MsgLength - JT809Package.FixedByteLength) > 0) | |||||
if ((jT809Package.Header.MsgLength - FixedByteLength) > 0) | |||||
{ | { | ||||
try | |||||
if (config.BusinessTypeFactory.TryGetValue(jT809Package.Header.BusinessType, out object instance)) | |||||
{ | { | ||||
Type jT809BodiesImplType = config.BusinessTypeFactory.GetBodiesImplTypeByBusinessType(jT809Package.Header.BusinessType, jT809Package.Header.MsgGNSSCENTERID); | |||||
if (jT809BodiesImplType != null) | |||||
try | |||||
{ | { | ||||
// 5.2 是否加密 | // 5.2 是否加密 | ||||
switch (jT809Package.Header.EncryptFlag) | switch (jT809Package.Header.EncryptFlag) | ||||
{ | { | ||||
case JT809Header_Encrypt.None: | case JT809Header_Encrypt.None: | ||||
// 5.3 处理消息体 | // 5.3 处理消息体 | ||||
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809BodiesImplType), | |||||
ref reader, config); | |||||
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(instance,ref reader, config); | |||||
break; | break; | ||||
case JT809Header_Encrypt.Common: | case JT809Header_Encrypt.Common: | ||||
// 5.4. 处理加密消息体 | // 5.4. 处理加密消息体 | ||||
byte[] bodiesData = config.Encrypt.Decrypt(reader.ReadContent(), config.EncryptOptions, jT809Package.Header.EncryptKey); | byte[] bodiesData = config.Encrypt.Decrypt(reader.ReadContent(), config.EncryptOptions, jT809Package.Header.EncryptKey); | ||||
JT809MessagePackReader bodiesReader = new JT809MessagePackReader(bodiesData); | JT809MessagePackReader bodiesReader = new JT809MessagePackReader(bodiesData); | ||||
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809BodiesImplType), | |||||
ref bodiesReader, config); | |||||
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(instance,ref bodiesReader, config); | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex); | |||||
catch (Exception ex) | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex); | |||||
} | |||||
} | } | ||||
} | } | ||||
jT809Package.CRCCode = reader.CalculateCheckXorCode; | jT809Package.CRCCode = reader.CalculateCheckXorCode; | ||||
@@ -120,10 +114,7 @@ namespace JT809.Protocol | |||||
// 3.2.写入数据对应数据体 | // 3.2.写入数据对应数据体 | ||||
if (value.Bodies != null) | if (value.Bodies != null) | ||||
{ | { | ||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
config.GetMessagePackFormatterByType(value.Bodies.GetType()), | |||||
ref writer, value.Bodies, | |||||
config); | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize(value.Bodies,ref writer, value.Bodies,config); | |||||
} | } | ||||
// 3.3.记录当前结束位置 | // 3.3.记录当前结束位置 | ||||
int endIndex = writer.GetCurrentPosition(); | int endIndex = writer.GetCurrentPosition(); | ||||
@@ -17,17 +17,16 @@ namespace JT809.Protocol | |||||
public class JT809Serializer | public class JT809Serializer | ||||
{ | { | ||||
private readonly IJT809Config jT809Config; | private readonly IJT809Config jT809Config; | ||||
private static readonly JT809Package jT809Package = new JT809Package(); | |||||
private static readonly JT809HeaderPackage jT809HeaderPackage = new JT809HeaderPackage(); | |||||
public JT809Serializer(IJT809Config jT809Config) | public JT809Serializer(IJT809Config jT809Config) | ||||
{ | { | ||||
this.jT809Config = jT809Config; | this.jT809Config = jT809Config; | ||||
} | } | ||||
public JT809Serializer():this(new DefaultGlobalConfig()) | public JT809Serializer():this(new DefaultGlobalConfig()) | ||||
{ | { | ||||
} | } | ||||
public string SerializerId => jT809Config.ConfigId; | public string SerializerId => jT809Config.ConfigId; | ||||
public byte[] Serialize(JT809Package jT809Package, int minBufferSize = 4096) | public byte[] Serialize(JT809Package jT809Package, int minBufferSize = 4096) | ||||
{ | { | ||||
@@ -35,8 +34,7 @@ namespace JT809.Protocol | |||||
try | try | ||||
{ | { | ||||
JT809MessagePackWriter jT809MessagePackWriter = new JT809MessagePackWriter(buffer); | JT809MessagePackWriter jT809MessagePackWriter = new JT809MessagePackWriter(buffer); | ||||
//todo:JT809PackageFormatter | |||||
//JT809PackageFormatter.Instance.Serialize(ref jT809MessagePackWriter,jT809Package, jT809Config); | |||||
jT809Package.Serialize(ref jT809MessagePackWriter,jT809Package, jT809Config); | |||||
return jT809MessagePackWriter.FlushAndGetEncodingArray(); | return jT809MessagePackWriter.FlushAndGetEncodingArray(); | ||||
} | } | ||||
finally | finally | ||||
@@ -44,7 +42,6 @@ namespace JT809.Protocol | |||||
JT809ArrayPool.Return(buffer); | JT809ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
public JT809Package Deserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | public JT809Package Deserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | ||||
@@ -52,29 +49,24 @@ namespace JT809.Protocol | |||||
{ | { | ||||
JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); | JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); | ||||
jT809MessagePackReader.Decode(buffer); | jT809MessagePackReader.Decode(buffer); | ||||
//todo:JT809PackageFormatter | |||||
return default; | |||||
//return JT809PackageFormatter.Instance.Deserialize(ref jT809MessagePackReader, jT809Config); | |||||
return jT809Package.Deserialize(ref jT809MessagePackReader, jT809Config); | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
JT809ArrayPool.Return(buffer); | JT809ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
private static bool CheckPackageType(Type type) | private static bool CheckPackageType(Type type) | ||||
{ | { | ||||
return type == typeof(JT809Package) || type == typeof(JT809HeaderPackage); | return type == typeof(JT809Package) || type == typeof(JT809HeaderPackage); | ||||
} | } | ||||
public byte[] Serialize<T>(T obj,int minBufferSize = 4096) | public byte[] Serialize<T>(T obj,int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | ||||
try | try | ||||
{ | { | ||||
JT809MessagePackWriter jT809MessagePackWriter = new JT809MessagePackWriter(buffer); | JT809MessagePackWriter jT809MessagePackWriter = new JT809MessagePackWriter(buffer); | ||||
//todo:JT809MessagePackFormatterExtensions | |||||
//JT809MessagePackFormatterExtensions.GetFormatter<T>().Serialize(ref jT809MessagePackWriter, obj,jT809Config); | |||||
JT809MessagePackFormatterExtensions.GetMessagePackFormatter<T>(jT809Config).Serialize(ref jT809MessagePackWriter, obj,jT809Config); | |||||
return jT809MessagePackWriter.FlushAndGetEncodingArray(); | return jT809MessagePackWriter.FlushAndGetEncodingArray(); | ||||
} | } | ||||
finally | finally | ||||
@@ -82,7 +74,6 @@ namespace JT809.Protocol | |||||
JT809ArrayPool.Return(buffer); | JT809ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
public T Deserialize<T>(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | public T Deserialize<T>(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | ||||
@@ -91,15 +82,13 @@ namespace JT809.Protocol | |||||
JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); | JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); | ||||
if (CheckPackageType(typeof(T))) | if (CheckPackageType(typeof(T))) | ||||
jT809MessagePackReader.Decode(buffer); | jT809MessagePackReader.Decode(buffer); | ||||
return default; | |||||
//return JT809MessagePackFormatterExtensions.GetFormatter<T>().Deserialize(ref jT809MessagePackReader, jT809Config); | |||||
return JT809MessagePackFormatterExtensions.GetMessagePackFormatter<T>(jT809Config).Deserialize(ref jT809MessagePackReader, jT809Config); | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
JT809ArrayPool.Return(buffer); | JT809ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
public JT809HeaderPackage HeaderDeserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | public JT809HeaderPackage HeaderDeserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | byte[] buffer = JT809ArrayPool.Rent(minBufferSize); | ||||
@@ -107,9 +96,7 @@ namespace JT809.Protocol | |||||
{ | { | ||||
JT809MessagePackReader jT808MessagePackReader = new JT809MessagePackReader(bytes); | JT809MessagePackReader jT808MessagePackReader = new JT809MessagePackReader(bytes); | ||||
jT808MessagePackReader.Decode(buffer); | jT808MessagePackReader.Decode(buffer); | ||||
//todo:JT809HeaderPackageFormatter | |||||
return default; | |||||
//return JT809HeaderPackageFormatter.Instance.Deserialize(ref jT808MessagePackReader, jT809Config); | |||||
return jT809HeaderPackage.Deserialize(ref jT808MessagePackReader, jT809Config); | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
@@ -1,6 +1,9 @@ | |||||
| | ||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:UP_EXG_MSG</para> | /// <para>业务数据类型标识:UP_EXG_MSG</para> | ||||
/// <para>描述:下级平台向上级平台发送车辆动态信息交换业务数据包</para> | /// <para>描述:下级平台向上级平台发送车辆动态信息交换业务数据包</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x1200: JT809ExchangeMessageBodies | |||||
public class JT809_0x1200: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1200> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.主链路车辆动态信息交换业务.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.主链路车辆动态信息交换业务.ToUInt16Value(); | ||||
public override string Description => "主链路车辆动态信息交换业务"; | public override string Description => "主链路车辆动态信息交换业务"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
public JT809_0x1200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x1200 value = new JT809_0x1200(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,39 +21,51 @@ namespace JT809.Protocol.MessageBody | |||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
public JT809_0x1300 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | public JT809_0x1300 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | ||||
{ | { | ||||
JT809_0x1300 jT809_0X1300 = new JT809_0x1300(); | |||||
jT809_0X1300.SubBusinessType = reader.ReadUInt16(); | |||||
jT809_0X1300.DataLength = reader.ReadUInt32(); | |||||
JT809_0x1300 value = new JT809_0x1300(); | |||||
//value.VehicleNo = reader.ReadString(21); | |||||
//value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | try | ||||
{ | { | ||||
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性 | |||||
Type jT809SubBodiesImplType = config.SubBusinessTypeFactory.GetSubBodiesImplTypeBySubBusinessType(jT809_0X1300.SubBusinessType); | |||||
if (jT809SubBodiesImplType != null) | |||||
jT809_0X1300.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809SubBodiesImplType), | |||||
ref reader, config); | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | } | ||||
catch | catch | ||||
{ | { | ||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X1300.SubBusinessType.ToString()}"); | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | } | ||||
return jT809_0X1300; | |||||
return value; | |||||
} | } | ||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300 value, IJT809Config config) | public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300 value, IJT809Config config) | ||||
{ | { | ||||
//writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
//writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | writer.WriteUInt16(value.SubBusinessType); | ||||
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性 | |||||
try | try | ||||
{ | { | ||||
// 先写入内容,然后在根据内容反写内容长度 | // 先写入内容,然后在根据内容反写内容长度 | ||||
writer.Skip(4, out int subContentLengthPosition); | writer.Skip(4, out int subContentLengthPosition); | ||||
if (value.SubBodies != null) | if (value.SubBodies != null) | ||||
{ | { | ||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
config.GetMessagePackFormatterByType(value.SubBodies.GetType()), | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | } | ||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | ||||
} | } | ||||
@@ -1,5 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:UP_WARN_MSG</para> | /// <para>业务数据类型标识:UP_WARN_MSG</para> | ||||
/// <para>描述:下级平台向上级平台发送车辆报警信息业务</para> | /// <para>描述:下级平台向上级平台发送车辆报警信息业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x1400: JT809ExchangeMessageBodies | |||||
public class JT809_0x1400: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1400> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.主链路报警信息交互消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.主链路报警信息交互消息.ToUInt16Value(); | ||||
public override string Description => "主链路报警信息交互消息"; | public override string Description => "主链路报警信息交互消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
public JT809_0x1400 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x1400 value = new JT809_0x1400(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1400 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -10,10 +13,65 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:UP_CTRL_MSG</para> | /// <para>业务数据类型标识:UP_CTRL_MSG</para> | ||||
/// <para>描述:下级平台向上级平台发送车辆监管业务</para> | /// <para>描述:下级平台向上级平台发送车辆监管业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x1500: JT809ExchangeMessageBodies | |||||
public class JT809_0x1500: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1500> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.主链路车辆监管消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.主链路车辆监管消息.ToUInt16Value(); | ||||
public override string Description => "主链路车辆监管消息"; | public override string Description => "主链路车辆监管消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
public JT809_0x1500 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x1500 value = new JT809_0x1500(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1500 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -10,10 +13,66 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>消息方向:下级平台往上级平台</para> | /// <para>消息方向:下级平台往上级平台</para> | ||||
/// <para>描述:下级平台向上级平台发送车辆睁态信息交换业务</para> | /// <para>描述:下级平台向上级平台发送车辆睁态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x1600: JT809ExchangeMessageBodies | |||||
public class JT809_0x1600: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1600> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.主链路静态信息交换消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.主链路静态信息交换消息.ToUInt16Value(); | ||||
public override string Description => "主链路静态信息交换消息"; | public override string Description => "主链路静态信息交换消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
public JT809_0x1600 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x1600 value = new JT809_0x1600(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1600 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -10,10 +13,66 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:DOWN_EXG_MSG</para> | /// <para>业务数据类型标识:DOWN_EXG_MSG</para> | ||||
/// <para>描述:上级平台作为客户端向下级平台服务端发送车辆动态信息交换业务</para> | /// <para>描述:上级平台作为客户端向下级平台服务端发送车辆动态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x9200: JT809ExchangeMessageBodies | |||||
public class JT809_0x9200: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9200> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.从链路车辆动态信息交换业务.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.从链路车辆动态信息交换业务.ToUInt16Value(); | ||||
public override string Description => "从链路车辆动态信息交换业务"; | public override string Description => "从链路车辆动态信息交换业务"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | ||||
public JT809_0x9200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x9200 value = new JT809_0x9200(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9200 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,39 +21,51 @@ namespace JT809.Protocol.MessageBody | |||||
public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | ||||
public JT809_0x9300 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | public JT809_0x9300 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | ||||
{ | { | ||||
JT809_0x9300 jT809_0X9300 = new JT809_0x9300(); | |||||
jT809_0X9300.SubBusinessType = reader.ReadUInt16(); | |||||
jT809_0X9300.DataLength = reader.ReadUInt32(); | |||||
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性 | |||||
JT809_0x9300 value = new JT809_0x9300(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | try | ||||
{ | { | ||||
Type jT809SubBodiesImplType = config.SubBusinessTypeFactory.GetSubBodiesImplTypeBySubBusinessType(jT809_0X9300.SubBusinessType); | |||||
if (jT809SubBodiesImplType != null) | |||||
jT809_0X9300.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
config.GetMessagePackFormatterByType(jT809SubBodiesImplType), | |||||
ref reader, config); | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | } | ||||
catch | catch | ||||
{ | { | ||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X9300.SubBusinessType.ToString()}"); | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | } | ||||
return jT809_0X9300; | |||||
return value; | |||||
} | } | ||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9300 value, IJT809Config config) | public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9300 value, IJT809Config config) | ||||
{ | { | ||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | writer.WriteUInt16(value.SubBusinessType); | ||||
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性 | |||||
try | try | ||||
{ | { | ||||
// 先写入内容,然后在根据内容反写内容长度 | // 先写入内容,然后在根据内容反写内容长度 | ||||
writer.Skip(4, out int subContentLengthPosition); | writer.Skip(4, out int subContentLengthPosition); | ||||
if (value.SubBodies != null) | if (value.SubBodies != null) | ||||
{ | { | ||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
config.GetMessagePackFormatterByType(value.SubBodies.GetType()), | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | } | ||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | ||||
} | } | ||||
@@ -1,6 +1,9 @@ | |||||
| | ||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -11,10 +14,65 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:DOWN_WARN_MSG</para> | /// <para>业务数据类型标识:DOWN_WARN_MSG</para> | ||||
/// <para>描述:上级平台向下级平台发送报瞥信息业务</para> | /// <para>描述:上级平台向下级平台发送报瞥信息业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x9400: JT809ExchangeMessageBodies | |||||
public class JT809_0x9400: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9400> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.从链路报警信息交互消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.从链路报警信息交互消息.ToUInt16Value(); | ||||
public override string Description => "从链路报警信息交互消息"; | public override string Description => "从链路报警信息交互消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | ||||
public JT809_0x9400 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x9400 value = new JT809_0x9400(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -10,10 +13,65 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:DOWN_CTRL_MSG</para> | /// <para>业务数据类型标识:DOWN_CTRL_MSG</para> | ||||
/// <para>描述:上级平台向下级平台发送车辆监监管业务</para> | /// <para>描述:上级平台向下级平台发送车辆监监管业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x9500: JT809ExchangeMessageBodies | |||||
public class JT809_0x9500: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9500> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.从链路车辆监管消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.从链路车辆监管消息.ToUInt16Value(); | ||||
public override string Description => "从链路车辆监管消息"; | public override string Description => "从链路车辆监管消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | ||||
public JT809_0x9500 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x9500 value = new JT809_0x9500(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9500 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -1,6 +1,9 @@ | |||||
| | ||||
using JT809.Protocol.Enums; | using JT809.Protocol.Enums; | ||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.Extensions; | using JT809.Protocol.Extensions; | ||||
using JT809.Protocol.Formatters; | |||||
using JT809.Protocol.MessagePack; | |||||
namespace JT809.Protocol.MessageBody | namespace JT809.Protocol.MessageBody | ||||
{ | { | ||||
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody | |||||
/// <para>业务数据类型标识:DOWN_BASE_MSG</para> | /// <para>业务数据类型标识:DOWN_BASE_MSG</para> | ||||
/// <para>描述:上级平台向下级平台发送车辆静态信息交换业务</para> | /// <para>描述:上级平台向下级平台发送车辆静态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
public class JT809_0x9600: JT809ExchangeMessageBodies | |||||
public class JT809_0x9600: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9600> | |||||
{ | { | ||||
public override ushort MsgId => JT809BusinessType.从链路静态信息交换消息.ToUInt16Value(); | public override ushort MsgId => JT809BusinessType.从链路静态信息交换消息.ToUInt16Value(); | ||||
public override string Description => "从链路静态信息交换消息"; | public override string Description => "从链路静态信息交换消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | public override JT809_LinkType LinkType => JT809_LinkType.subordinate; | ||||
public JT809_0x9600 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||||
{ | |||||
JT809_0x9600 value = new JT809_0x9600(); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
value.SubBusinessType = reader.ReadUInt16(); | |||||
value.DataLength = reader.ReadUInt32(); | |||||
try | |||||
{ | |||||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||||
{ | |||||
if (instance is JT809SubBodies subBodies) | |||||
{ | |||||
if (!subBodies.SkipSerialization) | |||||
{ | |||||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||||
instance, | |||||
ref reader, config); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9600 value, IJT809Config config) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
writer.WriteUInt16(value.SubBusinessType); | |||||
try | |||||
{ | |||||
// 先写入内容,然后在根据内容反写内容长度 | |||||
writer.Skip(4, out int subContentLengthPosition); | |||||
if (value.SubBodies != null) | |||||
{ | |||||
if (!value.SubBodies.SkipSerialization) | |||||
{ | |||||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||||
value.SubBodies, | |||||
ref writer, value.SubBodies, | |||||
config); | |||||
} | |||||
} | |||||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||||
} | |||||
catch | |||||
{ | |||||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -44,9 +44,8 @@ namespace JT809.Protocol.SubMessageBody | |||||
try | try | ||||
{ | { | ||||
JT809MessagePackReader jT809_0x1200_0x1202Reader = new JT809MessagePackReader(reader.ReadArray(36)); | JT809MessagePackReader jT809_0x1200_0x1202Reader = new JT809MessagePackReader(reader.ReadArray(36)); | ||||
//todo:JT809_0x1200_0x1202_Formatter | |||||
//var jT809_0x1200_0x1202 = JT809_0x1200_0x1202_Formatter.Instance.Deserialize(ref jT809_0x1200_0x1202Reader, config); | |||||
//jT809_0X1200_0X1203.GNSS.Add(jT809_0x1200_0x1202); | |||||
var jT809_0x1200_0x1202 = config.GetMessagePackFormatter<JT809_0x1200_0x1202>().Deserialize(ref jT809_0x1200_0x1202Reader, config); | |||||
jT809_0X1200_0X1203.GNSS.Add(jT809_0x1200_0x1202); | |||||
} | } | ||||
catch (Exception) | catch (Exception) | ||||
{ | { | ||||
@@ -64,8 +63,7 @@ namespace JT809.Protocol.SubMessageBody | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
//todo:JT809_0x1200_0x1202_Formatter | |||||
//JT809_0x1200_0x1202_Formatter.Instance.Serialize(ref writer, item, config); | |||||
item.Serialize(ref writer, item, config); | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
@@ -38,9 +38,8 @@ namespace JT809.Protocol.SubMessageBody | |||||
try | try | ||||
{ | { | ||||
JT809MessagePackReader jT809_0x9200_0x9202Reader = new JT809MessagePackReader(reader.ReadArray(36)); | JT809MessagePackReader jT809_0x9200_0x9202Reader = new JT809MessagePackReader(reader.ReadArray(36)); | ||||
//todo:JT809_0x9200_0x9202 | |||||
//JT809_0x9200_0x9202 jT809_0x1200_0x1202 = JT809_0x9200_0x9202_Formatter.Instance.Deserialize(ref jT809_0x9200_0x9202Reader, config); | |||||
//jT809_0X1200_0x9203.GNSS.Add(jT809_0x1200_0x1202); | |||||
JT809_0x9200_0x9202 jT809_0x1200_0x1202 = config.GetMessagePackFormatter<JT809_0x9200_0x9202>().Deserialize(ref jT809_0x9200_0x9202Reader, config); | |||||
jT809_0X1200_0x9203.GNSS.Add(jT809_0x1200_0x1202); | |||||
} | } | ||||
catch (Exception) | catch (Exception) | ||||
{ | { | ||||
@@ -57,8 +56,7 @@ namespace JT809.Protocol.SubMessageBody | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
//todo:JT809_0x9200_0x9202 | |||||
//JT809_0x9200_0x9202_Formatter.Instance.Serialize(ref writer, item, config); | |||||
item.Serialize(ref writer, item, config); | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
@@ -70,7 +70,7 @@ namespace JT809.Protocol.SubMessageBody | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400_0x9401 value, IJT809Config config) | public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400_0x9401 value, IJT809Config config) | ||||
{ | { | ||||
writer.WriteByte((byte)value.WarnSrc); | writer.WriteByte((byte)value.WarnSrc); | ||||
writer.WriteUInt16((ushort)value.WarnType); | |||||
writer.WriteUInt16(value.WarnType); | |||||
writer.WriteUTCDateTime(value.WarnTime); | writer.WriteUTCDateTime(value.WarnTime); | ||||
writer.WriteHex(value.SupervisionID, 4); | writer.WriteHex(value.SupervisionID, 4); | ||||
writer.WriteUTCDateTime(value.SupervisionEndTime); | writer.WriteUTCDateTime(value.SupervisionEndTime); | ||||