@@ -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,5 +1,5 @@ | |||||
{ | { | ||||
"sdk": { | "sdk": { | ||||
"version": "9.0.100" | |||||
"version": "9.0.201" | |||||
} | } | ||||
} | } |
@@ -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> | ||||
@@ -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,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,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> | ||||
@@ -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> | ||||
@@ -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> | ||||
/// | /// | ||||
@@ -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> | ||||
@@ -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> | ||||
/// | /// | ||||
@@ -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> | ||||
@@ -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); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -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> | ||||
@@ -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"> | ||||
@@ -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通信"); | ||||