Browse Source

v2.7.2

1.修复0x0107制造商ID为标准2019版本的解析规则
2.调整主动安全解析输出提示
3.时间起始年份动态计算
tags/v2.7.2
SmallChi(Koike) 1 month ago
parent
commit
f5da1e4cdc
15 changed files with 90 additions and 66 deletions
  1. +1
    -1
      .github/workflows/dotnetcore.yml
  2. +1
    -1
      global.json
  3. +2
    -2
      src/Info.props
  4. +2
    -2
      src/JT808.Protocol.Benchmark/JT808.Protocol.Benchmark.csproj
  5. +5
    -5
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.GPS51.Test/JT808.Protocol.Extensions.GPS51.Test.csproj
  6. +5
    -5
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj
  7. +4
    -4
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj
  8. +5
    -5
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs
  9. +5
    -5
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj
  10. +6
    -6
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs
  11. +6
    -6
      src/JT808.Protocol.Test/JT808.Protocol.Test.csproj
  12. +13
    -1
      src/JT808.Protocol.Test/MessageBody/JT808_0x0107Test.cs
  13. +12
    -7
      src/JT808.Protocol/JT808.Protocol.csproj
  14. +2
    -1
      src/JT808.Protocol/JT808.Protocol.xml
  15. +21
    -15
      src/JT808.Protocol/MessageBody/JT808_0x0107.cs

+ 1
- 1
.github/workflows/dotnetcore.yml View File

@@ -12,7 +12,7 @@ jobs:
- name: Setup .NET Core - name: Setup .NET Core
uses: actions/setup-dotnet@master uses: actions/setup-dotnet@master
with: with:
dotnet-version: 9.0.100
dotnet-version: 9.0.201
- name: dotnet info - name: dotnet info
run: dotnet --info run: dotnet --info
- name: dotnet restore - name: dotnet restore


+ 1
- 1
global.json View File

@@ -1,5 +1,5 @@
{ {
"sdk": { "sdk": {
"version": "9.0.100"
"version": "9.0.201"
} }
} }

+ 2
- 2
src/Info.props View File

@@ -1,6 +1,6 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net9.0;net8.0;netstandard2.0;</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0;net7.0;netstandard2.0;</TargetFrameworks>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Copyright>Copyright 2018.</Copyright> <Copyright>Copyright 2018.</Copyright>
<Authors>SmallChi(Koike)</Authors> <Authors>SmallChi(Koike)</Authors>
@@ -8,7 +8,7 @@
<PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl> <PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> <licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> <license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license>
<Version>2.7.1</Version>
<Version>2.7.2</Version>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>


+ 2
- 2
src/JT808.Protocol.Benchmark/JT808.Protocol.Benchmark.csproj View File

@@ -17,8 +17,8 @@
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" /> <PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.14.0" /> <PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.14.0" />
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> <PackageReference Include="NETStandard.Library" Version="2.0.3" />
<PackageReference Include="System.Buffers" Version="4.6.0" />
<PackageReference Include="System.Memory" Version="4.6.0" />
<PackageReference Include="System.Buffers" Version="4.6.1" />
<PackageReference Include="System.Memory" Version="4.6.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\JT808.Protocol\JT808.Protocol.csproj" /> <ProjectReference Include="..\JT808.Protocol\JT808.Protocol.csproj" />


+ 5
- 5
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.GPS51.Test/JT808.Protocol.Extensions.GPS51.Test.csproj View File

@@ -5,11 +5,11 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>


+ 5
- 5
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj View File

@@ -5,11 +5,11 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>


+ 4
- 4
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj View File

@@ -7,10 +7,10 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>


+ 5
- 5
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs View File

@@ -192,11 +192,11 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody
value.AlarmIdentification.SN = reader.ReadByte(); value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte(); value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte(); value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain);
writer.WriteString($"[{terminalIDHex}]报警标识号_终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]报警标识号_日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]报警标识号_序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]报警标识号_附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]报警标识号_预留", value.AlarmIdentification.Retain);
} }
/// <summary> /// <summary>
/// ///


+ 5
- 5
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj View File

@@ -7,14 +7,14 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PackageReference Include="coverlet.collector" Version="6.0.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>


+ 6
- 6
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs View File

@@ -149,12 +149,12 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
value.AlarmIdentification.AttachCount = reader.ReadByte(); value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain1 = reader.ReadByte(); value.AlarmIdentification.Retain1 = reader.ReadByte();
value.AlarmIdentification.Retain2 = reader.ReadByte(); value.AlarmIdentification.Retain2 = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalId);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain1.ReadNumber()}]预留1", value.AlarmIdentification.Retain1);
writer.WriteNumber($"[{value.AlarmIdentification.Retain2.ReadNumber()}]预留2", value.AlarmIdentification.Retain2);
writer.WriteString($"[{terminalIDHex}]报警标识号_终端ID", value.AlarmIdentification.TerminalId);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]报警标识号_日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]报警标识号_序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]报警标识号_附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain1.ReadNumber()}]报警标识号_预留1", value.AlarmIdentification.Retain1);
writer.WriteNumber($"[{value.AlarmIdentification.Retain2.ReadNumber()}]报警标识号_预留2", value.AlarmIdentification.Retain2);
} }
/// <summary> /// <summary>
/// ///


+ 6
- 6
src/JT808.Protocol.Test/JT808.Protocol.Test.csproj View File

@@ -108,17 +108,17 @@
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> <PackageReference Include="NETStandard.Library" Version="2.0.3" />
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="System.Drawing.Common" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" />
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" /> <PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.console" Version="2.9.2">
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.console" Version="2.9.3">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>


+ 13
- 1
src/JT808.Protocol.Test/MessageBody/JT808_0x0107Test.cs View File

@@ -68,9 +68,21 @@ namespace JT808.Protocol.Test.MessageBody
[Fact] [Fact]
public void Test4() public void Test4()
{ {
//2019版本JT808_0x0107解析制造商有误 #43
// 2013版本JT808_0x0107解析制造商有误 #43
// 属于2019版本 非标准的JT808协议,不支持解析
// 制造商ID
byte[] bytes = "7E010740660100000000010941000493000700FF3838383838434B31303043000000000000000000000000000000000000000000000000313030303439330000000000000000000000000000000000000000000000898603249475600329000748572D56322E350E434B313030432D4A542D5630323402209B7E".ToHexBytes(); byte[] bytes = "7E010740660100000000010941000493000700FF3838383838434B31303043000000000000000000000000000000000000000000000000313030303439330000000000000000000000000000000000000000000000898603249475600329000748572D56322E350E434B313030432D4A542D5630323402209B7E".ToHexBytes();
string json = JT808Serializer.Analyze(bytes); string json = JT808Serializer.Analyze(bytes);
}
[Fact]
public void Test5()
{
//2019版本JT808_0x0107解析制造商ID #52
byte[] bytes = "7E0107407F01000008686280748662930096000F00000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000008986083319233076050122454332303041455548415230314132364D31365F363936303939323035323131303606362E322E383403FFE97E".ToHexBytes();
string json = JT808Serializer.Analyze(bytes);
} }


} }
} }

+ 12
- 7
src/JT808.Protocol/JT808.Protocol.csproj View File

@@ -42,13 +42,18 @@
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="System.Buffers" Version="4.6.0" />
<PackageReference Include="System.Buffers" Version="4.6.1" />
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> <PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" />
<PackageReference Include="System.Memory" Version="4.6.0" />
<PackageReference Include="System.Memory" Version="4.6.2" />
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> <PackageReference Include="System.Reflection.Extensions" Version="4.3.0" />
<PackageReference Include="System.Text.Json" Version="9.0.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" />
<PackageReference Include="System.Text.Json" Version="9.0.3" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.3" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
<PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
</ItemGroup> </ItemGroup>


<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
@@ -57,8 +62,8 @@
</ItemGroup> </ItemGroup>


<ItemGroup Condition=" '$(TargetFramework)' == 'net9.0' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net9.0' ">
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.3" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


+ 2
- 1
src/JT808.Protocol/JT808.Protocol.xml View File

@@ -9443,7 +9443,8 @@
<member name="P:JT808.Protocol.MessageBody.JT808_0x0107.MakerId"> <member name="P:JT808.Protocol.MessageBody.JT808_0x0107.MakerId">
<summary> <summary>
制造商 ID 制造商 ID
2013版本 5 个字节,终端制造商编码
2013版本 5 个字节,终端制造商编码
2019版本 11 个字节,终端制造商编码
</summary> </summary>
</member> </member>
<member name="P:JT808.Protocol.MessageBody.JT808_0x0107.TerminalModel"> <member name="P:JT808.Protocol.MessageBody.JT808_0x0107.TerminalModel">


+ 21
- 15
src/JT808.Protocol/MessageBody/JT808_0x0107.cs View File

@@ -39,7 +39,8 @@ namespace JT808.Protocol.MessageBody
public ushort TerminalType { get; set; } public ushort TerminalType { get; set; }
/// <summary> /// <summary>
/// 制造商 ID /// 制造商 ID
/// 2013版本 5 个字节,终端制造商编码
/// 2013版本 5 个字节,终端制造商编码
/// 2019版本 11 个字节,终端制造商编码
/// </summary> /// </summary>
public string MakerId { get; set; } public string MakerId { get; set; }
/// <summary> /// <summary>
@@ -106,14 +107,15 @@ namespace JT808.Protocol.MessageBody
{ {
JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); JT808_0x0107 jT808_0X0107 = new JT808_0x0107();
jT808_0X0107.TerminalType = reader.ReadUInt16(); jT808_0X0107.TerminalType = reader.ReadUInt16();
jT808_0X0107.MakerId = reader.ReadString(5);
if (reader.Version == JT808Version.JTT2019) if (reader.Version == JT808Version.JTT2019)
{
{
jT808_0X0107.MakerId = reader.ReadString(11);
jT808_0X0107.TerminalModel = reader.ReadString(30); jT808_0X0107.TerminalModel = reader.ReadString(30);
jT808_0X0107.TerminalId = reader.ReadString(30); jT808_0X0107.TerminalId = reader.ReadString(30);
} }
else else
{
{
jT808_0X0107.MakerId = reader.ReadString(5);
jT808_0X0107.TerminalModel = reader.ReadString(20); jT808_0X0107.TerminalModel = reader.ReadString(20);
jT808_0X0107.TerminalId = reader.ReadString(7); jT808_0X0107.TerminalId = reader.ReadString(7);
} }
@@ -135,14 +137,15 @@ namespace JT808.Protocol.MessageBody
public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x0107 value, IJT808Config config) public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x0107 value, IJT808Config config)
{ {
writer.WriteUInt16(value.TerminalType); writer.WriteUInt16(value.TerminalType);
writer.WriteString(value.MakerId.PadRight(5, '\0').ValiString(nameof(value.MakerId), 5));
if (writer.Version == JT808Version.JTT2019) if (writer.Version == JT808Version.JTT2019)
{
{
writer.WriteString(value.MakerId.PadRight(11, '\0').ValiString(nameof(value.MakerId), 11));
writer.WriteString(value.TerminalModel.PadRight(30, '\0').ValiString(nameof(value.TerminalModel), 30)); writer.WriteString(value.TerminalModel.PadRight(30, '\0').ValiString(nameof(value.TerminalModel), 30));
writer.WriteString(value.TerminalId.PadRight(30, '\0').ValiString(nameof(value.TerminalId), 30)); writer.WriteString(value.TerminalId.PadRight(30, '\0').ValiString(nameof(value.TerminalId), 30));
} }
else else
{
{
writer.WriteString(value.MakerId.PadRight(5, '\0').ValiString(nameof(value.MakerId), 5));
writer.WriteString(value.TerminalModel.PadRight(20, '\0').ValiString(nameof(value.TerminalModel), 20)); writer.WriteString(value.TerminalModel.PadRight(20, '\0').ValiString(nameof(value.TerminalModel), 20));
writer.WriteString(value.TerminalId.PadRight(7, '\0').ValiString(nameof(value.TerminalId), 7)); writer.WriteString(value.TerminalId.PadRight(7, '\0').ValiString(nameof(value.TerminalId), 7));
} }
@@ -160,12 +163,12 @@ namespace JT808.Protocol.MessageBody
/// <param name="reader"></param> /// <param name="reader"></param>
/// <param name="writer"></param> /// <param name="writer"></param>
/// <param name="config"></param> /// <param name="config"></param>
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{ {
JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); JT808_0x0107 jT808_0X0107 = new JT808_0x0107();
jT808_0X0107.TerminalType = reader.ReadUInt16(); jT808_0X0107.TerminalType = reader.ReadUInt16();
writer.WriteNumber($"[{jT808_0X0107.TerminalType.ReadNumber()}]终端类型", jT808_0X0107.TerminalType); writer.WriteNumber($"[{jT808_0X0107.TerminalType.ReadNumber()}]终端类型", jT808_0X0107.TerminalType);
ReadOnlySpan<char> terminalTypeBits =string.Join("", Convert.ToString(jT808_0X0107.TerminalType, 2).PadLeft(16, '0').Reverse()).AsSpan();
ReadOnlySpan<char> terminalTypeBits = string.Join("", Convert.ToString(jT808_0X0107.TerminalType, 2).PadLeft(16, '0').Reverse()).AsSpan();
writer.WriteStartObject("终端类型"); writer.WriteStartObject("终端类型");
writer.WriteString("bit0", terminalTypeBits[0] == '0' ? "不适用客运车辆" : "适用客运车辆"); writer.WriteString("bit0", terminalTypeBits[0] == '0' ? "不适用客运车辆" : "适用客运车辆");
writer.WriteString("bit1", terminalTypeBits[1] == '0' ? "不适用危险品车辆" : "适用危险品车辆"); writer.WriteString("bit1", terminalTypeBits[1] == '0' ? "不适用危险品车辆" : "适用危险品车辆");
@@ -178,11 +181,11 @@ namespace JT808.Protocol.MessageBody
writer.WriteString("bit8", terminalTypeBits[8] == '0' ? "不适用挂车" : "适用挂车"); writer.WriteString("bit8", terminalTypeBits[8] == '0' ? "不适用挂车" : "适用挂车");
} }
writer.WriteEndObject(); writer.WriteEndObject();
ReadOnlySpan<byte> makerIdSpan = reader.ReadVirtualArray(5);
jT808_0X0107.MakerId = reader.ReadString(5);
writer.WriteString($"[{makerIdSpan.ToArray().ToHexString()}]制造商ID", jT808_0X0107.MakerId);
if (reader.Version == JT808Version.JTT2019) if (reader.Version == JT808Version.JTT2019)
{ {
ReadOnlySpan<byte> makerIdSpan = reader.ReadVirtualArray(11);
jT808_0X0107.MakerId = reader.ReadString(11);
writer.WriteString($"[{makerIdSpan.ToArray().ToHexString()}]制造商ID", jT808_0X0107.MakerId);
ReadOnlySpan<byte> terminalModelSpan = reader.ReadVirtualArray(30); ReadOnlySpan<byte> terminalModelSpan = reader.ReadVirtualArray(30);
jT808_0X0107.TerminalModel = reader.ReadString(30); jT808_0X0107.TerminalModel = reader.ReadString(30);
writer.WriteString($"[{terminalModelSpan.ToArray().ToHexString()}]终端型号", jT808_0X0107.TerminalModel); writer.WriteString($"[{terminalModelSpan.ToArray().ToHexString()}]终端型号", jT808_0X0107.TerminalModel);
@@ -191,7 +194,10 @@ namespace JT808.Protocol.MessageBody
writer.WriteString($"[{terminalIdSpan.ToArray().ToHexString()}]终端ID", jT808_0X0107.TerminalId); writer.WriteString($"[{terminalIdSpan.ToArray().ToHexString()}]终端ID", jT808_0X0107.TerminalId);
} }
else else
{
{
ReadOnlySpan<byte> makerIdSpan = reader.ReadVirtualArray(5);
jT808_0X0107.MakerId = reader.ReadString(5);
writer.WriteString($"[{makerIdSpan.ToArray().ToHexString()}]制造商ID", jT808_0X0107.MakerId);
ReadOnlySpan<byte> terminalModelSpan = reader.ReadVirtualArray(20); ReadOnlySpan<byte> terminalModelSpan = reader.ReadVirtualArray(20);
jT808_0X0107.TerminalModel = reader.ReadString(20); jT808_0X0107.TerminalModel = reader.ReadString(20);
writer.WriteString($"[{terminalModelSpan.ToArray().ToHexString()}]终端型号", jT808_0X0107.TerminalModel); writer.WriteString($"[{terminalModelSpan.ToArray().ToHexString()}]终端型号", jT808_0X0107.TerminalModel);
@@ -213,7 +219,7 @@ namespace JT808.Protocol.MessageBody
jT808_0X0107.Terminal_Firmware_Version_Num = reader.ReadString(jT808_0X0107.Terminal_Firmware_Version_Length); jT808_0X0107.Terminal_Firmware_Version_Num = reader.ReadString(jT808_0X0107.Terminal_Firmware_Version_Length);
writer.WriteString($"[{firmwareVersionNumSpan.ToArray().ToHexString()}]终端固件版本号", jT808_0X0107.Terminal_Firmware_Version_Num); writer.WriteString($"[{firmwareVersionNumSpan.ToArray().ToHexString()}]终端固件版本号", jT808_0X0107.Terminal_Firmware_Version_Num);
jT808_0X0107.GNSSModule = reader.ReadByte(); jT808_0X0107.GNSSModule = reader.ReadByte();
ReadOnlySpan<char> gNSSModuleBits =string.Join("", Convert.ToString(jT808_0X0107.GNSSModule, 2).PadLeft(8,'0').Reverse()).AsSpan();
ReadOnlySpan<char> gNSSModuleBits = string.Join("", Convert.ToString(jT808_0X0107.GNSSModule, 2).PadLeft(8, '0').Reverse()).AsSpan();
writer.WriteNumber($"[{jT808_0X0107.GNSSModule.ReadNumber()}]GNSS模块属性", jT808_0X0107.GNSSModule); writer.WriteNumber($"[{jT808_0X0107.GNSSModule.ReadNumber()}]GNSS模块属性", jT808_0X0107.GNSSModule);
writer.WriteStartObject("GNSS模块属性"); writer.WriteStartObject("GNSS模块属性");
writer.WriteString("bit0", gNSSModuleBits[0] == '0' ? "不支持GPS定位" : "支持GPS定位"); writer.WriteString("bit0", gNSSModuleBits[0] == '0' ? "不支持GPS定位" : "支持GPS定位");
@@ -222,7 +228,7 @@ namespace JT808.Protocol.MessageBody
writer.WriteString("bit3", gNSSModuleBits[3] == '0' ? "不支持Galileo定位" : "支持Galileo定位"); writer.WriteString("bit3", gNSSModuleBits[3] == '0' ? "不支持Galileo定位" : "支持Galileo定位");
writer.WriteEndObject(); writer.WriteEndObject();
jT808_0X0107.CommunicationModule = reader.ReadByte(); jT808_0X0107.CommunicationModule = reader.ReadByte();
ReadOnlySpan<char> communicationModuleBits=string.Join("",Convert.ToString(jT808_0X0107.CommunicationModule, 2).PadLeft(8, '0').Reverse()).AsSpan();
ReadOnlySpan<char> communicationModuleBits = string.Join("", Convert.ToString(jT808_0X0107.CommunicationModule, 2).PadLeft(8, '0').Reverse()).AsSpan();
writer.WriteNumber($"[{jT808_0X0107.CommunicationModule.ReadNumber()}]通信模块属性", jT808_0X0107.CommunicationModule); writer.WriteNumber($"[{jT808_0X0107.CommunicationModule.ReadNumber()}]通信模块属性", jT808_0X0107.CommunicationModule);
writer.WriteStartObject("通信模块属性"); writer.WriteStartObject("通信模块属性");
writer.WriteString("bit0", communicationModuleBits[0] == '0' ? "不支持GPRS通信" : "支持GPRS通信"); writer.WriteString("bit0", communicationModuleBits[0] == '0' ? "不支持GPRS通信" : "支持GPRS通信");


Loading…
Cancel
Save