@@ -300,23 +300,23 @@ public class JT809_2019_Config : JT809GlobalConfigBase | |||||
``` ini | ``` ini | ||||
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.18363 | |||||
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.836 (1909/November2018Update/19H2) | |||||
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores | Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores | ||||
.NET Core SDK=3.1.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 | |||||
.NET Core SDK=3.1.300 | |||||
[Host] : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT | |||||
Job-WFPAJY : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT | |||||
Platform=AnyCpu Server=False Toolchain=.NET Core 3.1 | Platform=AnyCpu Server=False Toolchain=.NET Core 3.1 | ||||
``` | ``` | ||||
| Method | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |||||
|---------------------------------------- |------- |-------------:|------------:|------------:|-----------:|------:|------:|-------------:| | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **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 | | |||||
| Method | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |||||
|---------------------------------------- |------- |-------------:|------------:|------------:|-----------:|------:|------:|-----------:| | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **494.2 μs** | **5.09 μs** | **4.76 μs** | **16.6016** | **-** | **-** | **103.13 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100 | 220.0 μs | 2.24 μs | 2.09 μs | 14.6484 | - | - | 90.63 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **10000** | **49,835.5 μs** | **456.53 μs** | **404.71 μs** | **1636.3636** | **-** | **-** | **10312.5 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 10000 | 21,843.2 μs | 161.08 μs | 142.80 μs | 1468.7500 | - | - | 9062.5 KB | | |||||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100000** | **486,411.6 μs** | **5,499.89 μs** | **5,144.60 μs** | **16000.0000** | **-** | **-** | **103125 KB** | | |||||
| JT809_0x9400_0x9401_Package_Serialize | 100000 | 218,839.3 μs | 1,665.04 μs | 1,476.02 μs | 14666.6667 | - | - | 90625 KB | | |||||
## JT809协议消息对照表 | ## JT809协议消息对照表 | ||||
@@ -6,7 +6,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BenchmarkDotNet" Version="0.12.0" /> | |||||
<PackageReference Include="BenchmarkDotNet" Version="0.12.1" /> | |||||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | <PackageReference Include="System.Buffers" Version="4.5.1" /> | ||||
<PackageReference Include="System.Memory" Version="4.5.4" /> | <PackageReference Include="System.Memory" Version="4.5.4" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -12,8 +12,8 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="JT808" Version="2.2.10" /> | <PackageReference Include="JT808" Version="2.2.10" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.4" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | <PackageReference Include="xunit" Version="2.4.1" /> | ||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
@@ -7,14 +7,14 @@ | |||||
<Authors>SmallChi</Authors> | <Authors>SmallChi</Authors> | ||||
<PackageId>JT809</PackageId> | <PackageId>JT809</PackageId> | ||||
<Product>JT809</Product> | <Product>JT809</Product> | ||||
<Description>JT809协议、GB809协议、道路运输车辆卫星定位系统平台数据交换协议</Description> | |||||
<PackageReleaseNotes>JT809协议、GB809协议、道路运输车辆卫星定位系统平台数据交换协议</PackageReleaseNotes> | |||||
<Description>JT809协议、GB809协议、道路运输车辆卫星定位系统-平台数据交换协议(支持2011、2019版本) </Description> | |||||
<PackageReleaseNotes>JT809协议、GB809协议、道路运输车辆卫星定位系统-平台数据交换协议(支持2011、2019版本) </PackageReleaseNotes> | |||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | ||||
<RepositoryUrl>https://github.com/SmallChi/JT809</RepositoryUrl> | <RepositoryUrl>https://github.com/SmallChi/JT809</RepositoryUrl> | ||||
<PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl> | <PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl> | ||||
<license>https://github.com/SmallChi/JT809/blob/master/LICENSE</license> | <license>https://github.com/SmallChi/JT809/blob/master/LICENSE</license> | ||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | <GeneratePackageOnBuild>false</GeneratePackageOnBuild> | ||||
<Version>2.1.4-preview3</Version> | |||||
<Version>2.1.4-preview4</Version> | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
@@ -111,9 +111,9 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | <PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | ||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.3" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.7.1" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.4" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.7.2" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -1159,6 +1159,12 @@ | |||||
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT809.Protocol.JT809Bodies.ReplaceInternalMsgId"> | |||||
<summary> | |||||
当外部注册的扩展809的消息Id跟国标的消息Id冲突时可以使用该字段替换国标的消息Id | |||||
默认是false,不替换 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT809.Protocol.JT809Constants.DateLimitYear"> | <member name="F:JT809.Protocol.JT809Constants.DateLimitYear"> | ||||
<summary> | <summary> | ||||
日期限制于2000年 | 日期限制于2000年 | ||||
@@ -1327,6 +1333,12 @@ | |||||
当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT809.Protocol.JT809SubBodies.ReplaceInternalSubMsgId"> | |||||
<summary> | |||||
当外部注册的扩展809的消息Id跟国标的消息Id冲突时可以使用该字段替换国标的消息Id | |||||
默认是false,不替换 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT809.Protocol.MessageBody.JT809_0x1001"> | <member name="T:JT809.Protocol.MessageBody.JT809_0x1001"> | ||||
<summary> | <summary> | ||||
主链路登录请求消息 | 主链路登录请求消息 | ||||
@@ -24,26 +24,53 @@ namespace JT809.Protocol.MessageBody | |||||
public override string Description => "从链路断开通知消息"; | public override string Description => "从链路断开通知消息"; | ||||
public override JT809_LinkType LinkType => JT809_LinkType.main; | public override JT809_LinkType LinkType => JT809_LinkType.main; | ||||
/// <summary> | /// <summary> | ||||
/// 错误代码 | |||||
/// 错误代码 2019版本 | |||||
/// </summary> | /// </summary> | ||||
public JT809_0x1007_ErrorCode ErrorCode { get; set; } | public JT809_0x1007_ErrorCode ErrorCode { get; set; } | ||||
/// <summary> | |||||
/// 错误代码 | |||||
/// </summary> | |||||
public JT809_0x9007_ReasonCode ReasonCode { get; set; } | |||||
public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | ||||
{ | { | ||||
JT809_0x9007 value = new JT809_0x9007(); | JT809_0x9007 value = new JT809_0x9007(); | ||||
value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte(); | |||||
writer.WriteString($"[{value.ErrorCode.ToByteValue()}]错误代码", value.ErrorCode.ToString()); | |||||
if(config.Version== JT809Version.JTT2019) | |||||
{ | |||||
value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte(); | |||||
writer.WriteString($"[{value.ErrorCode.ToByteValue()}]错误代码", value.ErrorCode.ToString()); | |||||
} | |||||
else | |||||
{ | |||||
value.ReasonCode = (JT809_0x9007_ReasonCode)reader.ReadByte(); | |||||
writer.WriteString($"[{value.ReasonCode.ToByteValue()}]错误代码", value.ReasonCode.ToString()); | |||||
} | |||||
} | } | ||||
public JT809_0x9007 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | public JT809_0x9007 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | ||||
{ | { | ||||
JT809_0x9007 value = new JT809_0x9007(); | JT809_0x9007 value = new JT809_0x9007(); | ||||
value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte(); | |||||
if (config.Version == JT809Version.JTT2019) | |||||
{ | |||||
value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte(); | |||||
} | |||||
else | |||||
{ | |||||
value.ReasonCode = (JT809_0x9007_ReasonCode)reader.ReadByte(); | |||||
} | |||||
return value; | return value; | ||||
} | } | ||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9007 value, IJT809Config config) | public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9007 value, IJT809Config config) | ||||
{ | { | ||||
writer.WriteByte((byte)value.ErrorCode); | |||||
if (config.Version == JT809Version.JTT2019) | |||||
{ | |||||
writer.WriteByte((byte)value.ErrorCode); | |||||
} | |||||
else | |||||
{ | |||||
writer.WriteByte((byte)value.ReasonCode); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |