@@ -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: 3.1.101 | |||||
dotnet-version: 3.1.302 | |||||
- name: dotnet info | - name: dotnet info | ||||
run: dotnet --info | run: dotnet --info | ||||
- name: dotnet restore | - name: dotnet restore | ||||
@@ -12,10 +12,10 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="JT808" Version="2.2.10" /> | <PackageReference Include="JT808" Version="2.2.10" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.4" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" /> | <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.2"> | |||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | ||||
</PackageReference> | </PackageReference> | ||||
@@ -0,0 +1,41 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Xunit; | |||||
using JT809.Protocol; | |||||
using JT809.Protocol.Extensions; | |||||
using JT809.Protocol.MessageBody; | |||||
using JT809.Protocol.Exceptions; | |||||
using JT809.Protocol.SubMessageBody; | |||||
using JT809.Protocol.Enums; | |||||
using JT809.Protocol.Internal; | |||||
namespace JT809.Protocol.Test.JT809SubMessageBody | |||||
{ | |||||
public class JT809_0x9200_0x9201Test | |||||
{ | |||||
private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); | |||||
/// <summary> | |||||
/// 1078qq群808432702:大兄弟提供的 | |||||
/// 由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过 | |||||
/// </summary> | |||||
[Fact] | |||||
public void Test1() | |||||
{ | |||||
var bytes = "5B0000002F000004579200000004570101010000000000000000004EBC924F9201000000070400000004000189DA5D".ToHexBytes(); | |||||
JT809Package jT809_0X9200_0X9201 = JT809_2019_Serializer.Deserialize(bytes); | |||||
} | |||||
/// <summary> | |||||
/// 1078qq群808432702:大兄弟提供的 | |||||
/// 由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过 | |||||
/// </summary> | |||||
[Fact] | |||||
public void Test2() | |||||
{ | |||||
var bytes = "5B0000002F000004579200000004570101010000000000000000004EBC924F9201000000070400000004000189DA5D".ToHexBytes(); | |||||
string json = JT809_2019_Serializer.Analyze(bytes); | |||||
} | |||||
} | |||||
} |
@@ -112,7 +112,7 @@ | |||||
<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.1" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.4" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.6" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.7.2" /> | <PackageReference Include="System.Text.Json" Version="4.7.2" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -24,11 +24,17 @@ namespace JT809.Protocol.MessageBody | |||||
public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | ||||
{ | { | ||||
JT809_0x9200 value = new JT809_0x9200(); | JT809_0x9200 value = new JT809_0x9200(); | ||||
var virtualHex = reader.ReadVirtualArray(21); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车牌号", value.VehicleNo); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
writer.WriteString($"[{value.VehicleColor.ToByteValue()}]车牌颜色", value.VehicleColor.ToString()); | |||||
//1078qq群808432702:大兄弟提供的 | |||||
//由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过 | |||||
var subBusinessType = reader.ReadVirtualUInt16(); | |||||
if (subBusinessType != JT809SubBusinessType.车辆注册信息应答消息.ToUInt16Value()) | |||||
{ | |||||
var virtualHex = reader.ReadVirtualArray(21); | |||||
value.VehicleNo = reader.ReadString(21); | |||||
writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车牌号", value.VehicleNo); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
writer.WriteString($"[{value.VehicleColor.ToByteValue()}]车牌颜色", value.VehicleColor.ToString()); | |||||
} | |||||
value.SubBusinessType = reader.ReadUInt16(); | value.SubBusinessType = reader.ReadUInt16(); | ||||
writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString()); | writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString()); | ||||
value.DataLength = reader.ReadUInt32(); | value.DataLength = reader.ReadUInt32(); | ||||
@@ -57,8 +63,14 @@ namespace JT809.Protocol.MessageBody | |||||
public JT809_0x9200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | public JT809_0x9200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | ||||
{ | { | ||||
JT809_0x9200 value = new JT809_0x9200(); | JT809_0x9200 value = new JT809_0x9200(); | ||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
var subBusinessType = reader.ReadVirtualUInt16(); | |||||
//1078qq群808432702:大兄弟提供的 | |||||
//由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过 | |||||
if (subBusinessType != JT809SubBusinessType.车辆注册信息应答消息.ToUInt16Value()) | |||||
{ | |||||
value.VehicleNo = reader.ReadString(21); | |||||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||||
} | |||||
value.SubBusinessType = reader.ReadUInt16(); | value.SubBusinessType = reader.ReadUInt16(); | ||||
value.DataLength = reader.ReadUInt32(); | value.DataLength = reader.ReadUInt32(); | ||||
try | try | ||||
@@ -85,8 +97,13 @@ namespace JT809.Protocol.MessageBody | |||||
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9200 value, IJT809Config config) | public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9200 value, IJT809Config config) | ||||
{ | { | ||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
//1078qq群808432702:大兄弟提供的 | |||||
//由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过 | |||||
if (value.SubBusinessType != JT809SubBusinessType.车辆注册信息应答消息.ToUInt16Value()) | |||||
{ | |||||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||||
writer.WriteByte((byte)value.VehicleColor); | |||||
} | |||||
writer.WriteUInt16(value.SubBusinessType); | writer.WriteUInt16(value.SubBusinessType); | ||||
try | try | ||||
{ | { | ||||