@@ -12,7 +12,7 @@ jobs: | |||
- name: Setup .NET Core | |||
uses: actions/setup-dotnet@master | |||
with: | |||
dotnet-version: 3.1.101 | |||
dotnet-version: 3.1.302 | |||
- name: dotnet info | |||
run: dotnet --info | |||
- name: dotnet restore | |||
@@ -12,10 +12,10 @@ | |||
<ItemGroup> | |||
<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="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> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | |||
</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> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||
<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" /> | |||
</ItemGroup> | |||
@@ -24,11 +24,17 @@ namespace JT809.Protocol.MessageBody | |||
public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) | |||
{ | |||
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(); | |||
writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString()); | |||
value.DataLength = reader.ReadUInt32(); | |||
@@ -57,8 +63,14 @@ namespace JT809.Protocol.MessageBody | |||
public JT809_0x9200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
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.DataLength = reader.ReadUInt32(); | |||
try | |||
@@ -85,8 +97,13 @@ namespace JT809.Protocol.MessageBody | |||
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); | |||
try | |||
{ | |||