@@ -12,7 +12,7 @@ jobs: | |||
- name: Setup .NET Core | |||
uses: actions/setup-dotnet@master | |||
with: | |||
dotnet-version: 5.0.100 | |||
dotnet-version: 6.0.100 | |||
- name: dotnet info | |||
run: dotnet --info | |||
- name: dotnet restore | |||
@@ -301,23 +301,23 @@ public class JT809_2019_Config : JT809GlobalConfigBase | |||
``` ini | |||
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.630 (2004/?/20H1) | |||
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22000 | |||
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores | |||
.NET Core SDK=5.0.100 | |||
[Host] : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT | |||
Job-VIMLSX : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT | |||
.NET SDK=6.0.101 | |||
[Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT | |||
Job-GLUSZL : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT | |||
Platform=AnyCpu Server=False Toolchain=.NET Core 5.0 | |||
Platform=AnyCpu Server=False Toolchain=.NET 6.0 | |||
``` | |||
| Method | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |||
|---------------------------------------- |------- |-------------:|------------:|-------------:|-----------:|------:|------:|-------------:| | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **466.5 μs** | **2.08 μs** | **1.85 μs** | **16.6016** | **-** | **-** | **103.13 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 100 | 202.8 μs | 3.98 μs | 4.09 μs | 14.6484 | - | - | 90.63 KB | | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **10000** | **46,739.4 μs** | **230.36 μs** | **179.85 μs** | **1636.3636** | **-** | **-** | **10312.53 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 10000 | 19,994.5 μs | 155.11 μs | 129.53 μs | 1468.7500 | - | - | 9062.51 KB | | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100000** | **479,053.9 μs** | **9,378.79 μs** | **11,518.00 μs** | **16000.0000** | **-** | **-** | **103125.28 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 100000 | 205,928.8 μs | 2,074.26 μs | 1,940.26 μs | 14000.0000 | - | - | 90625.28 KB | | |||
| Method | N | Mean | Error | StdDev | Gen 0 | Allocated | | |||
|---------------------------------------- |------- |-------------:|------------:|------------:|-----------:|-----------:| | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100** | **518.6 μs** | **4.07 μs** | **3.40 μs** | **16.6016** | **103 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 100 | 182.1 μs | 1.60 μs | 1.34 μs | 14.6484 | 91 KB | | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **10000** | **50,367.9 μs** | **477.53 μs** | **446.68 μs** | **1600.0000** | **10,313 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 10000 | 18,303.2 μs | 176.25 μs | 164.87 μs | 1468.7500 | 9,063 KB | | |||
| **JT809_0x9400_0x9401_Package_Deserialize** | **100000** | **502,960.6 μs** | **2,001.44 μs** | **1,774.22 μs** | **16000.0000** | **103,129 KB** | | |||
| JT809_0x9400_0x9401_Package_Serialize | 100000 | 182,137.2 μs | 1,709.29 μs | 1,598.87 μs | 14000.0000 | 90,626 KB | | |||
## JT809协议消息对照表 | |||
@@ -1,14 +1,14 @@ | |||
<Project> | |||
<PropertyGroup> | |||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;</TargetFrameworks> | |||
<LangVersion>9.0</LangVersion> | |||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks> | |||
<LangVersion>10.0</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi(Koike)</Authors> | |||
<RepositoryUrl>https://github.com/SmallChi/JT809</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl> | |||
<license>https://github.com/SmallChi/JT809/blob/master/LICENSE</license> | |||
<licenseUrl>https://github.com/SmallChi/JT809/blob/master/LICENSE</licenseUrl> | |||
<Version>2.2.1-preview1</Version> | |||
<Version>2.2.1-preview2</Version> | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | |||
<AnalysisLevel>latest</AnalysisLevel> | |||
@@ -16,8 +16,8 @@ | |||
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> | |||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | |||
<PackageReadmeFile>README.md</PackageReadmeFile> | |||
<DebugSymbols>true</DebugSymbols> | |||
<DebugType>embedded</DebugType> | |||
<DebugSymbols>true</DebugSymbols> | |||
<DebugType>embedded</DebugType> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> | |||
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild> | |||
@@ -26,6 +26,6 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/> | |||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/> | |||
</ItemGroup> | |||
</Project> |
@@ -2,11 +2,11 @@ | |||
<PropertyGroup> | |||
<OutputType>Exe</OutputType> | |||
<TargetFramework>net5.0</TargetFramework> | |||
<TargetFramework>net6.0</TargetFramework> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BenchmarkDotNet" Version="0.12.1" /> | |||
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" /> | |||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | |||
<PackageReference Include="System.Memory" Version="4.5.4" /> | |||
</ItemGroup> | |||
@@ -87,7 +87,7 @@ namespace JT809.Protocol.Benchmark | |||
{ | |||
public JT809SerializerContextConfig() | |||
{ | |||
AddJob(Job.Default.WithGcServer(false).WithToolchain(CsProjCoreToolchain.NetCoreApp50).WithPlatform(Platform.AnyCpu)); | |||
AddJob(Job.Default.WithGcServer(false).WithToolchain(CsProjCoreToolchain.NetCoreApp60).WithPlatform(Platform.AnyCpu)); | |||
} | |||
} | |||
} |
@@ -1,7 +1,7 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>net5.0</TargetFramework> | |||
<TargetFramework>net6.0</TargetFramework> | |||
<IsPackable>false</IsPackable> | |||
<NoWarn>1701;1702;1591</NoWarn> | |||
</PropertyGroup> | |||
@@ -11,9 +11,9 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="JT808" Version="2.4.4" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" /> | |||
<PackageReference Include="JT808" Version="2.4.5" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> | |||
<PackageReference Include="xunit" Version="2.4.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | |||
<PrivateAssets>all</PrivateAssets> | |||
@@ -41,8 +41,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Alarm = 1 | |||
}, | |||
LensID = 123, | |||
SizeType = JT809__0x9502_SizeType._320x240, | |||
Type = JT809__0x9502_ImageType.jpg, | |||
SizeType = JT809_0x9502_SizeType._320x240, | |||
Type = JT809_0x9502_ImageType.jpg, | |||
}; | |||
var hex = JT809Serializer.Serialize(jT809_0x1500_0x1502).ToHexString(); | |||
//"01 00 13 07 07 DC 0F 0F 0F 07 EF 4D 80 01 70 18 40 00 35 00 2D 00 00 04 D2 00 2D 00 2D 00 00 00 01 00 00 00 01 7B 00 00 00 00 01 01" | |||
@@ -74,8 +74,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal((uint)1, vehiclePosition.State); | |||
Assert.Equal((uint)1, vehiclePosition.Alarm); | |||
Assert.Equal(123, jT809_0x1500_0x1502.LensID); | |||
Assert.Equal(JT809__0x9502_SizeType._320x240, jT809_0x1500_0x1502.SizeType); | |||
Assert.Equal(JT809__0x9502_ImageType.jpg, jT809_0x1500_0x1502.Type); | |||
Assert.Equal(JT809_0x9502_SizeType._320x240, jT809_0x1500_0x1502.SizeType); | |||
Assert.Equal(JT809_0x9502_ImageType.jpg, jT809_0x1500_0x1502.Type); | |||
} | |||
} | |||
} |
@@ -19,7 +19,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
JT809_0x9500_0x9502 jT809_0X9500_0X9502 = new JT809_0x9500_0x9502 | |||
{ | |||
LensID=0x09, | |||
SizeType= Enums.JT809__0x9502_SizeType._320x240 | |||
SizeType= Enums.JT809_0x9502_SizeType._320x240 | |||
}; | |||
var hex = JT809Serializer.Serialize(jT809_0X9500_0X9502).ToHexString(); | |||
Assert.Equal("0901", hex); | |||
@@ -5,14 +5,18 @@ using System.Text; | |||
namespace JT809.Protocol.Enums | |||
{ | |||
/// <summary> | |||
/// 车辆颜色,按照 JT/T415-2006 中5.4.12 的规定 | |||
/// 车辆颜色,按照 JT/T 415-2021 中5.4.12 的规定 | |||
/// </summary> | |||
public enum JT809VehicleColorType:byte | |||
public enum JT809VehicleColorType : byte | |||
{ | |||
蓝色=0x01, | |||
黄色=0x02, | |||
蓝色 = 0x01, | |||
黄色 = 0x02, | |||
黑色 = 0x03, | |||
白色 = 0x04, | |||
其他 =0x09, | |||
其他 = 0x09, | |||
农黄色 = 91, | |||
农绿色 = 92, | |||
黄绿色 = 93, | |||
渐变绿 = 94, | |||
} | |||
} |
@@ -4,7 +4,7 @@ using System.Text; | |||
namespace JT809.Protocol.Enums | |||
{ | |||
public enum JT809__0x9502_ImageType | |||
public enum JT809_0x9502_ImageType | |||
{ | |||
jpg=0x01, | |||
gif=0x02, |
@@ -4,7 +4,7 @@ using System.Text; | |||
namespace JT809.Protocol.Enums | |||
{ | |||
public enum JT809__0x9502_SizeType | |||
public enum JT809_0x9502_SizeType | |||
{ | |||
_320x240=0x01, | |||
_640x480=0x02, |
@@ -31,8 +31,8 @@ | |||
<None Remove="Enums\**" /> | |||
<None Remove="Escape\**" /> | |||
<None Remove="ProtocolPacket\**" /> | |||
<None Include="..\..\README.md" Pack="true" PackagePath=""/> | |||
<None Include="..\..\LICENSE" Pack="true" PackagePath=""/> | |||
<None Include="..\..\README.md" Pack="true" PackagePath="" /> | |||
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
@@ -84,24 +84,37 @@ | |||
<Compile Include="Enums\JT809_9401_SupervisionLevel.cs" /> | |||
<Compile Include="Enums\JT809_LinkType.cs" /> | |||
<Compile Include="Enums\JT809_VehiclePositionEncrypt.cs" /> | |||
<Compile Include="Enums\JT809__0x9502_ImageType.cs" /> | |||
<Compile Include="Enums\JT809__0x9502_SizeType.cs" /> | |||
<Compile Include="Enums\JT809_0x9502_ImageType.cs" /> | |||
<Compile Include="Enums\JT809_0x9502_SizeType.cs" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.6.0" /> | |||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | |||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | |||
<PackageReference Include="System.Memory" Version="4.5.4" /> | |||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | |||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | |||
<PackageReference Include="System.Memory" Version="4.5.4" /> | |||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
<PackageReference Include="System.Text.Json" Version="6.0.0" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> | |||
<PackageReference Include="System.Text.Json" Version="5.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||
<PackageReference Include="System.Text.Json" Version="6.0.0" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'net5.0' "> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' "> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Compile Update="Extensions\JT809PackageExtensionsTemplate.cs"> | |||
@@ -4369,7 +4369,7 @@ | |||
</member> | |||
<member name="T:JT809.Protocol.Enums.JT809VehicleColorType"> | |||
<summary> | |||
车辆颜色,按照 JT/T415-2006 中5.4.12 的规定 | |||
车辆颜色,按照 JT/T 415-2021 中5.4.12 的规定 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Enums.JT809WarnSrc"> | |||
@@ -45,11 +45,11 @@ namespace JT809.Protocol.SubMessageBody | |||
/// <summary> | |||
/// 图片大小 | |||
/// </summary> | |||
public JT809__0x9502_SizeType SizeType { get; set; } | |||
public JT809_0x9502_SizeType SizeType { get; set; } | |||
/// <summary> | |||
/// 图像格式 | |||
/// </summary> | |||
public JT809__0x9502_ImageType Type { get; set; } | |||
public JT809_0x9502_ImageType Type { get; set; } | |||
/// <summary> | |||
/// 图片内容 | |||
/// </summary> | |||
@@ -72,9 +72,9 @@ namespace JT809.Protocol.SubMessageBody | |||
writer.WriteNumber($"[{value.LensID}]镜头ID", value.LensID); | |||
value.PhotoLen = reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.PhotoLen}]图片长度", value.PhotoLen); | |||
value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte(); | |||
value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte(); | |||
writer.WriteString($"[{value.SizeType.ToByteValue()}]图片大小", value.SizeType.ToString()); | |||
value.Type = (JT809__0x9502_ImageType)reader.ReadByte(); | |||
value.Type = (JT809_0x9502_ImageType)reader.ReadByte(); | |||
writer.WriteString($"[{value.Type.ToByteValue()}]图像格式", value.Type.ToString()); | |||
if (value.PhotoLen > 0) | |||
{ | |||
@@ -97,8 +97,8 @@ namespace JT809.Protocol.SubMessageBody | |||
} | |||
value.LensID = reader.ReadByte(); | |||
value.PhotoLen = reader.ReadUInt32(); | |||
value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte(); | |||
value.Type = (JT809__0x9502_ImageType)reader.ReadByte(); | |||
value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte(); | |||
value.Type = (JT809_0x9502_ImageType)reader.ReadByte(); | |||
if (value.PhotoLen > 0) | |||
{ | |||
value.Photo = reader.ReadArray((int)value.PhotoLen).ToArray(); | |||
@@ -32,14 +32,14 @@ namespace JT809.Protocol.SubMessageBody | |||
/// 0x07:704x288[HALF D]; | |||
/// Ox08:704x576[DI] | |||
/// </summary> | |||
public JT809__0x9502_SizeType SizeType { get; set; } | |||
public JT809_0x9502_SizeType SizeType { get; set; } | |||
public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | |||
{ | |||
JT809_0x9500_0x9502 value = new JT809_0x9500_0x9502(); | |||
value.LensID = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.LensID.ReadNumber() }]镜头ID", value.LensID); | |||
value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte(); | |||
value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte(); | |||
writer.WriteString($"[{value.SizeType.ToByteValue()}]图片大小", value.SizeType.ToString()); | |||
} | |||
@@ -47,7 +47,7 @@ namespace JT809.Protocol.SubMessageBody | |||
{ | |||
JT809_0x9500_0x9502 value = new JT809_0x9500_0x9502(); | |||
value.LensID = reader.ReadByte(); | |||
value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte(); | |||
value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte(); | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9500_0x9502 value, IJT809Config config) | |||