Selaa lähdekoodia

1.完善消息内容及测试

2.修改文档
tags/v2.2.0
SmallChi(Koike) 5 vuotta sitten
vanhempi
commit
2e9a9fd194
34 muutettua tiedostoa jossa 1078 lisäystä ja 722 poistoa
  1. +13
    -13
      README.md
  2. +3
    -3
      src/JT809.Protocol.Test/JT1078/JT1078DependencyInjectionExtensions.cs
  3. +62
    -4
      src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700.cs
  4. +20
    -2
      src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_0x1701.cs
  5. +0
    -24
      src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_0x1701_Formatter.cs
  6. +0
    -50
      src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_Formatter.cs
  7. +3
    -1
      src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs
  8. +0
    -3
      src/JT809.Protocol/Extensions/JT809ConfigExtensions.cs
  9. +30
    -30
      src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs
  10. +90
    -90
      src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs
  11. +0
    -74
      src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs
  12. +5
    -10
      src/JT809.Protocol/Interfaces/IJT809BusinessTypeFactory.cs
  13. +5
    -10
      src/JT809.Protocol/Interfaces/IJT809SubBusinessTypeFactory.cs
  14. +36
    -85
      src/JT809.Protocol/Internal/JT809BusinessTypeFactory.cs
  15. +4
    -0
      src/JT809.Protocol/Internal/JT809FormatterFactory.cs
  16. +36
    -56
      src/JT809.Protocol/Internal/JT809SubBusinessTypeFactory.cs
  17. +4
    -0
      src/JT809.Protocol/JT809.Protocol.csproj
  18. +205
    -171
      src/JT809.Protocol/JT809.Protocol.xml
  19. +2
    -3
      src/JT809.Protocol/JT809HeaderPackage.cs
  20. +13
    -22
      src/JT809.Protocol/JT809Package.cs
  21. +7
    -20
      src/JT809.Protocol/JT809Serializer.cs
  22. +60
    -1
      src/JT809.Protocol/MessageBody/JT809_0x1200.cs
  23. +28
    -16
      src/JT809.Protocol/MessageBody/JT809_0x1300.cs
  24. +60
    -1
      src/JT809.Protocol/MessageBody/JT809_0x1400.cs
  25. +59
    -1
      src/JT809.Protocol/MessageBody/JT809_0x1500.cs
  26. +60
    -1
      src/JT809.Protocol/MessageBody/JT809_0x1600.cs
  27. +60
    -1
      src/JT809.Protocol/MessageBody/JT809_0x9200.cs
  28. +28
    -16
      src/JT809.Protocol/MessageBody/JT809_0x9300.cs
  29. +59
    -1
      src/JT809.Protocol/MessageBody/JT809_0x9400.cs
  30. +59
    -1
      src/JT809.Protocol/MessageBody/JT809_0x9500.cs
  31. +60
    -1
      src/JT809.Protocol/MessageBody/JT809_0x9600.cs
  32. +3
    -5
      src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1203.cs
  33. +3
    -5
      src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9203.cs
  34. +1
    -1
      src/JT809.Protocol/SubMessageBody/JT809_0x9400_0x9401.cs

+ 13
- 13
README.md Näytä tiedosto

@@ -198,8 +198,8 @@ JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.
{
VehicleNo = "粤A12345",
VehicleColor = JT809VehicleColorType.黄色,
SubBusinessType = JT809SubBusinessType.报警督办请求.ToUInt16Value(),
SubBodies = JT809SubBusinessType.报警督办请求.Create_报警督办请求(
SubBusinessType = JT809SubBusinessType.报警督办请求消息.ToUInt16Value(),
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求消息(
new JT809_0x9400_0x9401
{
WarnSrc = JT809WarnSrc.车载终端,
@@ -250,21 +250,21 @@ static void Main(string[] args)

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
.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

```
| 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协议消息对照表



+ 3
- 3
src/JT809.Protocol.Test/JT1078/JT1078DependencyInjectionExtensions.cs Näytä tiedosto

@@ -10,9 +10,9 @@ namespace JT809.Protocol.Test.JT1078
public static IJT809Builder AddJT1078Configure(this IJT809Builder builder)
{
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;
}
}


+ 62
- 4
src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700.cs Näytä tiedosto

@@ -1,16 +1,74 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

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}");
}
}
}
}

+ 20
- 2
src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_0x1701.cs Näytä tiedosto

@@ -1,10 +1,12 @@
using System;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

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>
/// 企业视频监控平台唯一编码,平台所属企业行政区域代码+平台公共编号
@@ -22,5 +24,21 @@ namespace JT809.Protocol.Test.JT1078
public override ushort SubMsgId => 0x1701;

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);
}
}
}

+ 0
- 24
src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_0x1701_Formatter.cs Näytä tiedosto

@@ -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);
}
}
}

+ 0
- 50
src/JT809.Protocol.Test/JT1078/JT808_JT1078_0x1700_Formatter.cs Näytä tiedosto

@@ -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()}");
}
}
}
}

+ 3
- 1
src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs Näytä tiedosto

@@ -69,7 +69,7 @@ namespace JT809.Protocol.Test.JT809Extensions
VehicleNo = "粤A12345",
VehicleColor = JT809VehicleColorType.黄色,
SubBusinessType = JT809SubBusinessType.报警督办请求消息.ToUInt16Value(),
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求(
SubBodies = JT809SubBusinessType.报警督办请求消息.Create_报警督办请求消息(
new JT809_0x9400_0x9401
{
WarnSrc = JT809WarnSrc.车载终端,
@@ -85,6 +85,8 @@ namespace JT809.Protocol.Test.JT809Extensions
}
);
var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
//5B0000007C0000068294000133EFB8010000000000270F94010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000A6565D
//5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D
Assert.Equal("5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D", hex);
}
}


+ 0
- 3
src/JT809.Protocol/Extensions/JT809ConfigExtensions.cs Näytä tiedosto

@@ -1,11 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Formatters;
using JT809.Protocol.Interfaces;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;

namespace JT809.Protocol
{


+ 30
- 30
src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs Näytä tiedosto

@@ -188,16 +188,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.MessageBody.JT809_0x1007>(jT809BusinessType,jT809Header,bodies);
}
/// <summary>
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
/// auto-generated
/// </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);
}

/// <summary>
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1008 bodies)
@@ -206,24 +206,24 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
/// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
/// auto-generated
/// </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);
}
/// <summary>
/// UP_EXG_MSG - 主链路动态信息交换消息
/// UP_EXG_MSG - 主链路车辆动态信息交换业务
/// auto-generated
/// </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);
}

/// <summary>
/// UP_EXG_MSG - 主链路动态信息交换消息
/// UP_EXG_MSG - 主链路车辆动态信息交换业务
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1200 bodies)
@@ -232,10 +232,10 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// UP_EXG_MSG - 主链路动态信息交换消息
/// UP_EXG_MSG - 主链路车辆动态信息交换业务
/// auto-generated
/// </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);
}
@@ -370,16 +370,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.MessageBody.JT809_0x9001>(jT809BusinessType,jT809Header,bodies);
}
/// <summary>
/// DOWN_CONNECT_RSP - 从链路连接应答
/// DOWN_CONNECT_RSP - 从链路连接应答
/// auto-generated
/// </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);
}

/// <summary>
/// DOWN_CONNECT_RSP - 从链路连接应答
/// DOWN_CONNECT_RSP - 从链路连接应答
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9002 bodies)
@@ -388,10 +388,10 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// DOWN_CONNECT_RSP - 从链路连接应答
/// DOWN_CONNECT_RSP - 从链路连接应答
/// auto-generated
/// </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);
}
@@ -552,16 +552,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.MessageBody.JT809_0x9008>(jT809BusinessType,jT809Header,bodies);
}
/// <summary>
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
/// auto-generated
/// </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);
}

/// <summary>
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9101 bodies)
@@ -570,24 +570,24 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
/// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
/// auto-generated
/// </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);
}
/// <summary>
/// DOWN_EXG_MSG - 从链路动态信息交换消息
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务
/// auto-generated
/// </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);
}

/// <summary>
/// DOWN_EXG_MSG - 从链路动态信息交换消息
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9200 bodies)
@@ -596,24 +596,24 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// DOWN_EXG_MSG - 从链路动态信息交换消息
/// DOWN_EXG_MSG - 从链路车辆动态信息交换业务
/// auto-generated
/// </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);
}
/// <summary>
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
/// auto-generated
/// </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);
}

/// <summary>
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
/// auto-generated
/// </summary>
public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9300 bodies)
@@ -622,10 +622,10 @@ namespace JT809.Protocol.Extensions
}

/// <summary>
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
/// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
/// auto-generated
/// </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);
}


+ 90
- 90
src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs Näytä tiedosto

@@ -11,7 +11,7 @@ namespace JT809.Protocol.Extensions
{

/// <summary>
/// 主链路动态信息交换消息
/// 4608
/// UP_EXG_MSG_REGISTER - 上传车辆注册信息
/// auto-generated
/// </summary>
@@ -20,7 +20,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路动态信息交换消息
/// 4608
/// UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息
/// auto-generated
/// </summary>
@@ -29,43 +29,43 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报
/// 4608
/// UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答
/// 4608
/// UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答
/// 4608
/// UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求
/// 4608
/// UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// 4608
/// UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求
/// auto-generated
/// </summary>
@@ -74,7 +74,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路动态信息交换消息
/// 4608
/// UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求
/// auto-generated
/// </summary>
@@ -83,34 +83,34 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报车辆驾驶员身份识别信息应答
/// 4608
/// UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报驾驶员身份识别信息应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答
/// 4608
/// UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息
/// 4608
/// UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路动态信息交换消息
/// 4608
/// UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息
/// auto-generated
/// </summary>
@@ -119,43 +119,43 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路平台间信息交互消息
/// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答
/// 4864
/// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路平台间信息交互消息
/// UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答
/// 4864
/// UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路报警信息交互消息
/// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答
/// 5120
/// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路报警信息交互消息
/// UP_WARN_MSG_ADPT_INFO - 上报报警信息
/// 5120
/// UP_WARN_MSG_ADPT_INFO - 上报报警信息消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路报警信息交互消息
/// 5120
/// UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息
/// auto-generated
/// </summary>
@@ -164,7 +164,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路车辆监管消息
/// 5376
/// UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答
/// auto-generated
/// </summary>
@@ -173,7 +173,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路车辆监管消息
/// 5376
/// UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答
/// auto-generated
/// </summary>
@@ -182,25 +182,25 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路车辆监管消息
/// UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答
/// 5376
/// UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路车辆监管消息
/// UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答
/// 5376
/// UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答消息
/// auto-generated
/// </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);
}
/// <summary>
/// 主链路车辆监管消息
/// 5376
/// UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息
/// auto-generated
/// </summary>
@@ -209,7 +209,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 主链路静态信息交换消息
/// 5632
/// UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答
/// auto-generated
/// </summary>
@@ -218,43 +218,43 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息
/// 37376
/// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路动态信息交换消息
/// DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发
/// 37376
/// DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路动态信息交换消息
/// DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息
/// 37376
/// DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路动态信息交换消息
/// DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求
/// 37376
/// DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路动态信息交换消息
/// 37376
/// DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求
/// auto-generated
/// </summary>
@@ -263,7 +263,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// 37376
/// DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答
/// auto-generated
/// </summary>
@@ -272,7 +272,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// 37376
/// DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答
/// auto-generated
/// </summary>
@@ -281,7 +281,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// 37376
/// DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答
/// auto-generated
/// </summary>
@@ -290,7 +290,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// 37376
/// DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求
/// auto-generated
/// </summary>
@@ -299,16 +299,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路动态信息交换消息
/// DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求
/// 37376
/// DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路平台间信息交互消息
/// 37632
/// DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求
/// auto-generated
/// </summary>
@@ -317,7 +317,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路平台间信息交互消息
/// 37632
/// DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求
/// auto-generated
/// </summary>
@@ -326,16 +326,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路报警信息交互消息
/// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求
/// 37888
/// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路报警信息交互消息
/// 37888
/// DOWN_WARN_MSG_INFORM_TIPS - 报警预警
/// auto-generated
/// </summary>
@@ -344,7 +344,7 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路报警信息交互消息
/// 37888
/// DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息
/// auto-generated
/// </summary>
@@ -353,25 +353,25 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路车辆监管消息
/// DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求
/// 38144
/// DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路车辆监管消息
/// DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求
/// 38144
/// DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路车辆监管消息
/// 38144
/// DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求
/// auto-generated
/// </summary>
@@ -380,16 +380,16 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路车辆监管消息
/// DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求
/// 38144
/// DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求消息
/// auto-generated
/// </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);
}
/// <summary>
/// 从链路车辆监管消息
/// 38144
/// DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息
/// auto-generated
/// </summary>
@@ -398,11 +398,11 @@ namespace JT809.Protocol.Extensions
return Create<JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505>(jT809SubBusinessType,subBodies);
}
/// <summary>
/// 从链路静态信息交换消息
/// DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求
/// 38400
/// DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求消息
/// auto-generated
/// </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);
}


+ 0
- 74
src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs Näytä tiedosto

@@ -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()}");
}
}
}
}

+ 5
- 10
src/JT809.Protocol/Interfaces/IJT809BusinessTypeFactory.cs Näytä tiedosto

@@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;

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;
}
}

+ 5
- 10
src/JT809.Protocol/Interfaces/IJT809SubBusinessTypeFactory.cs Näytä tiedosto

@@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;

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;
}
}

+ 36
- 85
src/JT809.Protocol/Internal/JT809BusinessTypeFactory.cs Näytä tiedosto

@@ -5,123 +5,74 @@ using JT809.Protocol.Extensions;
using JT809.Protocol.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace JT808.Protocol.Internal
{
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()
{
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
{
map[businessType] = typeof(TJT809Bodies);
Map.Add(msgId, instance);
}
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);
}
}
}

+ 4
- 0
src/JT809.Protocol/Internal/JT809FormatterFactory.cs Näytä tiedosto

@@ -33,6 +33,10 @@ namespace JT809.Protocol.Internal
var genericImplType = firstType.GetGenericArguments().FirstOrDefault();
if (genericImplType != null)
{
if (genericImplType.GUID == Guid.Empty)
{
continue;
}
if (!FormatterDict.ContainsKey(genericImplType.GUID))
{
FormatterDict.Add(genericImplType.GUID, Activator.CreateInstance(genericImplType));


+ 36
- 56
src/JT809.Protocol/Internal/JT809SubBusinessTypeFactory.cs Näytä tiedosto

@@ -5,91 +5,71 @@ using JT809.Protocol.Extensions;
using JT809.Protocol.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace JT808.Protocol.Internal
{
internal class JT809SubBusinessTypeFactory : IJT809SubBusinessTypeFactory
{
private readonly Dictionary<ushort, Type> map;
public IDictionary<ushort, object> Map { get; }

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
{
map[subBusinessType] = typeof(TJT809SubBodies);
Map.Add(msgId, instance);
}
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);
}
}
}

+ 4
- 0
src/JT809.Protocol/JT809.Protocol.csproj Näytä tiedosto

@@ -144,4 +144,8 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>
</Project>

+ 205
- 171
src/JT809.Protocol/JT809.Protocol.xml Näytä tiedosto

@@ -292,39 +292,39 @@
auto-generated
</summary>
</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>
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008)">
<summary>
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
auto-generated
</summary>
</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>
UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息
auto-generated
</summary>
</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>
UP_EXG_MSG - 主链路动态信息交换消息
UP_EXG_MSG - 主链路车辆动态信息交换业务
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200)">
<summary>
UP_EXG_MSG - 主链路动态信息交换消息
UP_EXG_MSG - 主链路车辆动态信息交换业务
auto-generated
</summary>
</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>
UP_EXG_MSG - 主链路动态信息交换消息
UP_EXG_MSG - 主链路车辆动态信息交换业务
auto-generated
</summary>
</member>
@@ -418,21 +418,21 @@
auto-generated
</summary>
</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>
DOWN_CONNECT_RSP - 从链路连接应答
DOWN_CONNECT_RSP - 从链路连接应答
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002)">
<summary>
DOWN_CONNECT_RSP - 从链路连接应答
DOWN_CONNECT_RSP - 从链路连接应答
auto-generated
</summary>
</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>
DOWN_CONNECT_RSP - 从链路连接应答
DOWN_CONNECT_RSP - 从链路连接应答
auto-generated
</summary>
</member>
@@ -544,57 +544,57 @@
auto-generated
</summary>
</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>
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101)">
<summary>
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
auto-generated
</summary>
</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>
DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息
auto-generated
</summary>
</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>
DOWN_EXG_MSG - 从链路动态信息交换消息
DOWN_EXG_MSG - 从链路车辆动态信息交换业务
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200)">
<summary>
DOWN_EXG_MSG - 从链路动态信息交换消息
DOWN_EXG_MSG - 从链路车辆动态信息交换业务
auto-generated
</summary>
</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>
DOWN_EXG_MSG - 从链路动态信息交换消息
DOWN_EXG_MSG - 从链路车辆动态信息交换业务
auto-generated
</summary>
</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>
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809PackageExtensions.Create(JT809.Protocol.Enums.JT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300)">
<summary>
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
auto-generated
</summary>
</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>
DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
DOWN_PLATFORM_MSG - 从链路平台间信息交互业务
auto-generated
</summary>
</member>
@@ -660,312 +660,317 @@
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上传车辆注册信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201)">
<summary>
主链路动态信息交换消息
4608
UP_EXG_MSG_REGISTER - 上传车辆注册信息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时上传车辆定位信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202)">
<summary>
主链路动态信息交换消息
4608
UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报
4608
UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报请求消息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答
4608
UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答消息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答
4608
UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答消息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求
4608
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208)">
<summary>
主链路动态信息交换消息
4608
UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209)">
<summary>
主链路动态信息交换消息
4608
UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报车辆驾驶员身份识别信息应答
4608
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报驾驶员身份识别信息应答消息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答
4608
UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答消息
auto-generated
</summary>
</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>
主链路动态信息交换消息
UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息
4608
UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报车辆电子运单信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D)">
<summary>
主链路动态信息交换消息
4608
UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息
auto-generated
</summary>
</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>
主链路平台间信息交互消息
UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答
4864
UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答消息
auto-generated
</summary>
</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>
主链路平台间信息交互消息
UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答
4864
UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答消息
auto-generated
</summary>
</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>
主链路报警信息交互消息
UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答
5120
UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答消息
auto-generated
</summary>
</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>
主链路报警信息交互消息
UP_WARN_MSG_ADPT_INFO - 上报报警信息
5120
UP_WARN_MSG_ADPT_INFO - 上报报警信息消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_主动上报报警处理结果信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403)">
<summary>
主链路报警信息交互消息
5120
UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆单向监听应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501)">
<summary>
主链路车辆监管消息
5376
UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆拍照应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502)">
<summary>
主链路车辆监管消息
5376
UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答
auto-generated
</summary>
</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>
主链路车辆监管消息
UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答
5376
UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答消息
auto-generated
</summary>
</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>
主链路车辆监管消息
UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答
5376
UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台应答消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505)">
<summary>
主链路车辆监管消息
5376
UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补报车辆静态信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601)">
<summary>
主链路静态信息交换消息
5632
UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答
auto-generated
</summary>
</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>
从链路动态信息交换消息
DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息
37376
DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息消息
auto-generated
</summary>
</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>
从链路动态信息交换消息
DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发
37376
DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发消息
auto-generated
</summary>
</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>
从链路动态信息交换消息
DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息
37376
DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息消息
auto-generated
</summary>
</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>
从链路动态信息交换消息
DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求
37376
DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_结束车辆定位信息交换请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206)">
<summary>
从链路动态信息交换消息
37376
DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_申请交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207)">
<summary>
从链路动态信息交换消息
37376
DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_取消交换指定车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208)">
<summary>
从链路动态信息交换消息
37376
DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_补发车辆定位信息应答(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209)">
<summary>
从链路动态信息交换消息
37376
DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_上报车辆驾驶员身份识别信息请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A)">
<summary>
从链路动态信息交换消息
37376
DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求
auto-generated
</summary>
</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>
从链路动态信息交换消息
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求
37376
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_平台查岗请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301)">
<summary>
从链路平台间信息交互消息
37632
DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发平台间报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302)">
<summary>
从链路平台间信息交互消息
37632
DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求
auto-generated
</summary>
</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>
从链路报警信息交互消息
DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求
37888
DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_报警预警(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402)">
<summary>
从链路报警信息交互消息
37888
DOWN_WARN_MSG_INFORM_TIPS - 报警预警
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_实时交换报警信息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403)">
<summary>
从链路报警信息交互消息
37888
DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息
auto-generated
</summary>
</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>
从链路车辆监管消息
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求
38144
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求消息
auto-generated
</summary>
</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>
从链路车辆监管消息
DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求
38144
DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_下发车辆报文请求(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503)">
<summary>
从链路车辆监管消息
38144
DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求
auto-generated
</summary>
</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>
从链路车辆监管消息
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求
38144
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求消息
auto-generated
</summary>
</member>
<member name="M:JT809.Protocol.Extensions.JT809SubPackageExtensions.Create_车辆应急接入监管平台请求消息(JT809.Protocol.Enums.JT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505)">
<summary>
从链路车辆监管消息
38144
DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息
auto-generated
</summary>
</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>
从链路静态信息交换消息
DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求
38400
DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求消息
auto-generated
</summary>
</member>
<member name="T:JT809.Protocol.Interfaces.IJT809_2019_Version">
<summary>
只用来标识2019版本增删改情况
</summary>
</member>
<member name="P:JT809.Protocol.IJT809Config.MsgSNDistributed">
<summary>
消息流水号
@@ -1005,6 +1010,13 @@
<param name="externalAssemblies"></param>
<returns></returns>
</member>
<member name="P:JT809.Protocol.JT809Bodies.SkipSerialization">
<summary>
跳过数据体序列化
默认不跳过
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。
</summary>
</member>
<member name="F:JT809.Protocol.JT809Constants.DateLimitYear">
<summary>
日期限制于2000年
@@ -1147,6 +1159,13 @@
子业务数据体
</summary>
</member>
<member name="P:JT809.Protocol.JT809SubBodies.SkipSerialization">
<summary>
跳过数据体序列化
默认不跳过
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。
</summary>
</member>
<member name="T:JT809.Protocol.MessageBody.JT809_0x1001">
<summary>
主链路登录请求消息
@@ -1765,7 +1784,7 @@
</member>
<member name="T:JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208">
<summary>
取消交换指定车辆定位信息请
取消交换指定车辆定位信息请
<para>子业务类型标识:UP_EXG_MSG_APPLY_F0R_MONIOR_END</para>
<para>描述:下级平台上传该命令给上级平台,取消之前申请监控的特殊车辆</para>
</summary>
@@ -2198,7 +2217,7 @@
</member>
<member name="T:JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209">
<summary>
取消交换指定车辆定位信息应答
补发车辆定位信息应答
<para>子业务类型标识:DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK</para>
</summary>
</member>
@@ -2802,9 +2821,9 @@
UP_DISCONNECT_INFORM
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.下级平台主动关闭链路通知消息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.下级平台主动关闭主从链路通知消息">
<summary>
下级平台主动关闭链路通知消息
下级平台主动关闭主从链路通知消息
UP_CLOSELINK_INFORM
</summary>
</member>
@@ -2814,9 +2833,9 @@
DOWN_CONNECT_REQ
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路连接应答息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路连接应答息">
<summary>
从链路连接应答
从链路连接应答
DOWN_CONNECT_RSP
</summary>
</member>
@@ -2856,21 +2875,21 @@
DOWN_CLOSELINK_INFORM
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.接收定位信息数量通知消息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.接收车辆定位信息数量通知消息">
<summary>
接收定位信息数量通知消息
接收车辆定位信息数量通知消息
DOWN_TOTAL_RECV_BACK_MSG
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.主链路动态信息交换消息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.主链路车辆动态信息交换业务">
<summary>
主链路动态信息交换消息
UP_EXG_MSG
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路动态信息交换消息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路车辆动态信息交换业务">
<summary>
从链路动态信息交换消息
从链路车辆动态信息交换业务
DOWN_EXG_MSG
</summary>
</member>
@@ -2880,9 +2899,9 @@
UP_PLATFORM_MSG
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路平台间信息交互消息">
<member name="F:JT809.Protocol.Enums.JT809BusinessType.从链路平台间信息交互业务">
<summary>
从链路平台间信息交互消息
从链路平台间信息交互业务
DOWN_PLATFORM_MSG
</summary>
</member>
@@ -2939,25 +2958,25 @@
UP_EXG_MSG_REAL_LOCATION
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息自动补报">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息自动补报请求消息">
<summary>
车辆定位信息自动补报
车辆定位信息自动补报请求消息
UP_EXG_MSG_HISTORY_LOCATION
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换应答消息">
<summary>
启动车辆定位信息交换应答
启动车辆定位信息交换应答消息
UP_EXG_MSG_RETURN_STARTUP_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.结束车辆定位信息交换应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.结束车辆定位信息交换应答消息">
<summary>
结束车辆定位信息交换应答
UP_EXG_MSG_RETURN_END_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.申请交换指定车辆定位信息请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.申请交换指定车辆定位信息请求消息">
<summary>
申请交换指定车辆定位信息请求
UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP
@@ -2975,21 +2994,21 @@
UP_EXG_MSG_APPLY_HISGNSSDATA_REQ
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆驾驶员身份识别信息应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报驾驶员身份识别信息应答消息">
<summary>
上报车辆驾驶员身份识别信息应答
UP_EXG_MSG_REPORT_DRIVER_INFO_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单应答消息">
<summary>
上报车辆电子运单应答
UP_EXG_MSG_TAKE_EWAYBILL_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.主动上报驾驶员身份信息">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.主动上报驾驶员身份信息消息">
<summary>
主动上报驾驶员身份信息
主动上报驾驶员身份信息消息
UP_EXG_MSG_REPORT_DRIVER_INFO
</summary>
</member>
@@ -2999,27 +3018,27 @@
UP_EXG_MSG_REPORT_EWAYBILL_INFO
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆定位信息">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆定位信息消息">
<summary>
交换车辆定位信息
DOWN_EXG_MSG_CAR_LOCATION
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息交换补发">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆定位信息交换补发消息">
<summary>
车辆定位信息交换补发
DOWN_EXG_MSG_HISTORY_ARCOSSAREA
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆静态信息">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.交换车辆静态信息消息">
<summary>
交换车辆静态信息
DOWN_EXG_MSG_CAR_INFO
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.启动车辆定位信息交换请求消息">
<summary>
启动车辆定位信息交换请求
启动车辆定位信息交换请求消息
DOWN_EXG_MSG_RETURN_STARTUP
</summary>
</member>
@@ -3052,21 +3071,21 @@
DOWN_EXG_MSG_REPORT_DRIVER_INFO
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆电子运单请求消息">
<summary>
上报车辆电子运单请求
DOWN_EXG_MSG_TAKE_EWAYBILL_REQ
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.平台查岗应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.平台查岗应答消息">
<summary>
平台查岗应答
平台查岗应答消息
UP_PLATFORM_MSG_POST_QUERY_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发平台间报文应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发平台间报文应答消息">
<summary>
下发平台间报文应答
下发平台间报文应答消息
UP_PLATFORM_MSG_INFO_ACK
</summary>
</member>
@@ -3082,15 +3101,15 @@
DOWN_PLATFORM_MSG_INFO_REQ
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办应答消息">
<summary>
报警督办应答
报警督办应答消息
UP_WARN_MSG_URGE_TODO_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报报警信息">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报报警信息消息">
<summary>
上报报警信息
上报报警信息消息
UP_WARN_MSG_ADPT_INFO
</summary>
</member>
@@ -3100,9 +3119,9 @@
UP_WARN_MSG_ADPT_TODO_INFO
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.报警督办请求消息">
<summary>
报警督办请求
报警督办请求消息
DOWN_WARN_MSG_URGE_TODO_REQ
</summary>
</member>
@@ -3130,15 +3149,15 @@
UP_CTRL_MSG_TAKE_PHOTO_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发车辆报文应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.下发车辆报文应答消息">
<summary>
下发车辆报文应答
下发车辆报文应答消息
UP_CTRL_MSG_TEXT_INFO_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录应答">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录应答消息">
<summary>
上报车辆行驶记录应答
上报车辆行驶记录应答消息
UP_CTRL_MSG_TAKE_TRAVEL_ACK
</summary>
</member>
@@ -3148,15 +3167,15 @@
UP_CTRL_MSG_EMERGENCY_MONITORING_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆单向监听请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆单向监听请求消息">
<summary>
车辆单向监听请求
车辆单向监听请求消息
DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆拍照请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.车辆拍照请求消息">
<summary>
车辆拍照请求
车辆拍照请求消息
DOWN_CTRL_MSG_TAKE_PHOTO_REQ
</summary>
</member>
@@ -3166,9 +3185,9 @@
DOWN_CTRL_MSG_TEXT_INFO
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.上报车辆行驶记录请求消息">
<summary>
上报车辆行驶记录请求
上报车辆行驶记录请求消息
DOWN_CTRL_MSG_TAKE_TRAVEL_REQ
</summary>
</member>
@@ -3184,9 +3203,9 @@
UP_BASE_MSG_VEHICLE_ADDED_ACK
</summary>
</member>
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.补报车辆静态信息请求">
<member name="F:JT809.Protocol.Enums.JT809SubBusinessType.补报车辆静态信息请求消息">
<summary>
补报车辆静态信息请求
补报车辆静态信息请求消息
DOWN_BASE_MSG_VEHICLE_ADDED
</summary>
</member>
@@ -3305,6 +3324,21 @@
错误代码
</summary>
</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">
<summary>
定位信息是否使用国家测绘局批准的地图保密插件进行加密。


+ 2
- 3
src/JT809.Protocol/JT809HeaderPackage.cs Näytä tiedosto

@@ -40,8 +40,7 @@ namespace JT809.Protocol
// 3.初始化消息头
try
{
//todo:JT809HeaderFormatter
//jT809Package.Header = JT809HeaderFormatter.Instance.Deserialize(ref reader, config);
jT809Package.Header = config.GetMessagePackFormatter<JT809Header>().Deserialize(ref reader, config);
}
catch (Exception ex)
{
@@ -69,7 +68,7 @@ namespace JT809.Protocol
}
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;


+ 13
- 22
src/JT809.Protocol/JT809Package.cs Näytä tiedosto

@@ -47,45 +47,39 @@ namespace JT809.Protocol
// 3.初始化消息头
try
{
//todo:JT809HeaderFormatter
//jT809Package.Header = JT809HeaderFormatter.Instance.Deserialize(ref reader, config);
jT809Package.Header = config.GetMessagePackFormatter<JT809Header>().Deserialize(ref reader, config);
}
catch (Exception ex)
{
throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex);
}
throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex);
}
// 5.数据体处理
// 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 是否加密
switch (jT809Package.Header.EncryptFlag)
{
case JT809Header_Encrypt.None:
// 5.3 处理消息体
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(
config.GetMessagePackFormatterByType(jT809BodiesImplType),
ref reader, config);
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(instance,ref reader, config);
break;
case JT809Header_Encrypt.Common:
// 5.4. 处理加密消息体
byte[] bodiesData = config.Encrypt.Decrypt(reader.ReadContent(), config.EncryptOptions, jT809Package.Header.EncryptKey);
JT809MessagePackReader bodiesReader = new JT809MessagePackReader(bodiesData);
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(
config.GetMessagePackFormatterByType(jT809BodiesImplType),
ref bodiesReader, config);
jT809Package.Bodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(instance,ref bodiesReader, config);
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;
@@ -120,10 +114,7 @@ namespace JT809.Protocol
// 3.2.写入数据对应数据体
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.记录当前结束位置
int endIndex = writer.GetCurrentPosition();


+ 7
- 20
src/JT809.Protocol/JT809Serializer.cs Näytä tiedosto

@@ -17,17 +17,16 @@ namespace JT809.Protocol
public class JT809Serializer
{
private readonly IJT809Config jT809Config;

private static readonly JT809Package jT809Package = new JT809Package();
private static readonly JT809HeaderPackage jT809HeaderPackage = new JT809HeaderPackage();
public JT809Serializer(IJT809Config jT809Config)
{
this.jT809Config = jT809Config;
}

public JT809Serializer():this(new DefaultGlobalConfig())
{

}

public string SerializerId => jT809Config.ConfigId;
public byte[] Serialize(JT809Package jT809Package, int minBufferSize = 4096)
{
@@ -35,8 +34,7 @@ namespace JT809.Protocol
try
{
JT809MessagePackWriter jT809MessagePackWriter = new JT809MessagePackWriter(buffer);
//todo:JT809PackageFormatter
//JT809PackageFormatter.Instance.Serialize(ref jT809MessagePackWriter,jT809Package, jT809Config);
jT809Package.Serialize(ref jT809MessagePackWriter,jT809Package, jT809Config);
return jT809MessagePackWriter.FlushAndGetEncodingArray();
}
finally
@@ -44,7 +42,6 @@ namespace JT809.Protocol
JT809ArrayPool.Return(buffer);
}
}

public JT809Package Deserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096)
{
byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
@@ -52,29 +49,24 @@ namespace JT809.Protocol
{
JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes);
jT809MessagePackReader.Decode(buffer);
//todo:JT809PackageFormatter
return default;
//return JT809PackageFormatter.Instance.Deserialize(ref jT809MessagePackReader, jT809Config);
return jT809Package.Deserialize(ref jT809MessagePackReader, jT809Config);
}
finally
{
JT809ArrayPool.Return(buffer);
}
}

private static bool CheckPackageType(Type type)
{
return type == typeof(JT809Package) || type == typeof(JT809HeaderPackage);
}

public byte[] Serialize<T>(T obj,int minBufferSize = 4096)
{
byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
try
{
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();
}
finally
@@ -82,7 +74,6 @@ namespace JT809.Protocol
JT809ArrayPool.Return(buffer);
}
}

public T Deserialize<T>(ReadOnlySpan<byte> bytes, int minBufferSize = 4096)
{
byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
@@ -91,15 +82,13 @@ namespace JT809.Protocol
JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes);
if (CheckPackageType(typeof(T)))
jT809MessagePackReader.Decode(buffer);
return default;
//return JT809MessagePackFormatterExtensions.GetFormatter<T>().Deserialize(ref jT809MessagePackReader, jT809Config);
return JT809MessagePackFormatterExtensions.GetMessagePackFormatter<T>(jT809Config).Deserialize(ref jT809MessagePackReader, jT809Config);
}
finally
{
JT809ArrayPool.Return(buffer);
}
}

public JT809HeaderPackage HeaderDeserialize(ReadOnlySpan<byte> bytes, int minBufferSize = 4096)
{
byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
@@ -107,9 +96,7 @@ namespace JT809.Protocol
{
JT809MessagePackReader jT808MessagePackReader = new JT809MessagePackReader(bytes);
jT808MessagePackReader.Decode(buffer);
//todo:JT809HeaderPackageFormatter
return default;
//return JT809HeaderPackageFormatter.Instance.Deserialize(ref jT808MessagePackReader, jT809Config);
return jT809HeaderPackage.Deserialize(ref jT808MessagePackReader, jT809Config);
}
finally
{


+ 60
- 1
src/JT809.Protocol/MessageBody/JT809_0x1200.cs Näytä tiedosto

@@ -1,6 +1,9 @@

using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:UP_EXG_MSG</para>
/// <para>描述:下级平台向上级平台发送车辆动态信息交换业务数据包</para>
/// </summary>
public class JT809_0x1200: JT809ExchangeMessageBodies
public class JT809_0x1200: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1200>
{
public override ushort MsgId => JT809BusinessType.主链路车辆动态信息交换业务.ToUInt16Value();
public override string Description => "主链路车辆动态信息交换业务";
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()}");
}
}
}
}

+ 28
- 16
src/JT809.Protocol/MessageBody/JT809_0x1300.cs Näytä tiedosto

@@ -21,39 +21,51 @@ namespace JT809.Protocol.MessageBody
public override JT809_LinkType LinkType => JT809_LinkType.main;
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
{
//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
{
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)
{
//writer.WriteStringPadRight(value.VehicleNo, 21);
//writer.WriteByte((byte)value.VehicleColor);
writer.WriteUInt16(value.SubBusinessType);
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
try
{
// 先写入内容,然后在根据内容反写内容长度
writer.Skip(4, out int subContentLengthPosition);
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);
}


+ 60
- 1
src/JT809.Protocol/MessageBody/JT809_0x1400.cs Näytä tiedosto

@@ -1,5 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:UP_WARN_MSG</para>
/// <para>描述:下级平台向上级平台发送车辆报警信息业务</para>
/// </summary>
public class JT809_0x1400: JT809ExchangeMessageBodies
public class JT809_0x1400: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1400>
{
public override ushort MsgId => JT809BusinessType.主链路报警信息交互消息.ToUInt16Value();
public override string Description => "主链路报警信息交互消息";
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()}");
}
}
}
}

+ 59
- 1
src/JT809.Protocol/MessageBody/JT809_0x1500.cs Näytä tiedosto

@@ -1,5 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -10,10 +13,65 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:UP_CTRL_MSG</para>
/// <para>描述:下级平台向上级平台发送车辆监管业务</para>
/// </summary>
public class JT809_0x1500: JT809ExchangeMessageBodies
public class JT809_0x1500: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1500>
{
public override ushort MsgId => JT809BusinessType.主链路车辆监管消息.ToUInt16Value();
public override string Description => "主链路车辆监管消息";
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()}");
}
}
}
}

+ 60
- 1
src/JT809.Protocol/MessageBody/JT809_0x1600.cs Näytä tiedosto

@@ -1,5 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -10,10 +13,66 @@ namespace JT809.Protocol.MessageBody
/// <para>消息方向:下级平台往上级平台</para>
/// <para>描述:下级平台向上级平台发送车辆睁态信息交换业务</para>
/// </summary>
public class JT809_0x1600: JT809ExchangeMessageBodies
public class JT809_0x1600: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x1600>
{
public override ushort MsgId => JT809BusinessType.主链路静态信息交换消息.ToUInt16Value();
public override string Description => "主链路静态信息交换消息";
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()}");
}
}
}
}

+ 60
- 1
src/JT809.Protocol/MessageBody/JT809_0x9200.cs Näytä tiedosto

@@ -1,5 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -10,10 +13,66 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:DOWN_EXG_MSG</para>
/// <para>描述:上级平台作为客户端向下级平台服务端发送车辆动态信息交换业务</para>
/// </summary>
public class JT809_0x9200: JT809ExchangeMessageBodies
public class JT809_0x9200: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9200>
{
public override ushort MsgId => JT809BusinessType.从链路车辆动态信息交换业务.ToUInt16Value();
public override string Description => "从链路车辆动态信息交换业务";
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()}");
}
}
}
}

+ 28
- 16
src/JT809.Protocol/MessageBody/JT809_0x9300.cs Näytä tiedosto

@@ -21,39 +21,51 @@ namespace JT809.Protocol.MessageBody
public override JT809_LinkType LinkType => JT809_LinkType.subordinate;
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
{
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
{
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)
{
writer.WriteStringPadRight(value.VehicleNo, 21);
writer.WriteByte((byte)value.VehicleColor);
writer.WriteUInt16(value.SubBusinessType);
//JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
try
{
// 先写入内容,然后在根据内容反写内容长度
writer.Skip(4, out int subContentLengthPosition);
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);
}


+ 59
- 1
src/JT809.Protocol/MessageBody/JT809_0x9400.cs Näytä tiedosto

@@ -1,6 +1,9 @@

using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -11,10 +14,65 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:DOWN_WARN_MSG</para>
/// <para>描述:上级平台向下级平台发送报瞥信息业务</para>
/// </summary>
public class JT809_0x9400: JT809ExchangeMessageBodies
public class JT809_0x9400: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9400>
{
public override ushort MsgId => JT809BusinessType.从链路报警信息交互消息.ToUInt16Value();
public override string Description => "从链路报警信息交互消息";
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()}");
}
}
}
}

+ 59
- 1
src/JT809.Protocol/MessageBody/JT809_0x9500.cs Näytä tiedosto

@@ -1,5 +1,8 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -10,10 +13,65 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:DOWN_CTRL_MSG</para>
/// <para>描述:上级平台向下级平台发送车辆监监管业务</para>
/// </summary>
public class JT809_0x9500: JT809ExchangeMessageBodies
public class JT809_0x9500: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9500>
{
public override ushort MsgId => JT809BusinessType.从链路车辆监管消息.ToUInt16Value();
public override string Description => "从链路车辆监管消息";
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()}");
}
}
}
}

+ 60
- 1
src/JT809.Protocol/MessageBody/JT809_0x9600.cs Näytä tiedosto

@@ -1,6 +1,9 @@

using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
using JT809.Protocol.Formatters;
using JT809.Protocol.MessagePack;

namespace JT809.Protocol.MessageBody
{
@@ -11,10 +14,66 @@ namespace JT809.Protocol.MessageBody
/// <para>业务数据类型标识:DOWN_BASE_MSG</para>
/// <para>描述:上级平台向下级平台发送车辆静态信息交换业务</para>
/// </summary>
public class JT809_0x9600: JT809ExchangeMessageBodies
public class JT809_0x9600: JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_0x9600>
{
public override ushort MsgId => JT809BusinessType.从链路静态信息交换消息.ToUInt16Value();
public override string Description => "从链路静态信息交换消息";
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()}");
}
}
}
}

+ 3
- 5
src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1203.cs Näytä tiedosto

@@ -44,9 +44,8 @@ namespace JT809.Protocol.SubMessageBody
try
{
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)
{
@@ -64,8 +63,7 @@ namespace JT809.Protocol.SubMessageBody
{
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)
{


+ 3
- 5
src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9203.cs Näytä tiedosto

@@ -38,9 +38,8 @@ namespace JT809.Protocol.SubMessageBody
try
{
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)
{
@@ -57,8 +56,7 @@ namespace JT809.Protocol.SubMessageBody
{
try
{
//todo:JT809_0x9200_0x9202
//JT809_0x9200_0x9202_Formatter.Instance.Serialize(ref writer, item, config);
item.Serialize(ref writer, item, config);
}
catch (Exception ex)
{


+ 1
- 1
src/JT809.Protocol/SubMessageBody/JT809_0x9400_0x9401.cs Näytä tiedosto

@@ -70,7 +70,7 @@ namespace JT809.Protocol.SubMessageBody
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400_0x9401 value, IJT809Config config)
{
writer.WriteByte((byte)value.WarnSrc);
writer.WriteUInt16((ushort)value.WarnType);
writer.WriteUInt16(value.WarnType);
writer.WriteUTCDateTime(value.WarnTime);
writer.WriteHex(value.SupervisionID, 4);
writer.WriteUTCDateTime(value.SupervisionEndTime);


Ladataan…
Peruuta
Tallenna