ソースを参照

通过大兄弟提供的809的2019版本的9201测试数据进行协议修复

tags/v2.2.0
SmallChi(Koike) 4年前
コミット
6880a819af
5個のファイルの変更71行の追加13行の削除
  1. +1
    -1
      .github/workflows/dotnetcore.yml
  2. +2
    -2
      src/JT809.Protocol.Test/JT809.Protocol.Test.csproj
  3. +41
    -0
      src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9200_0x9201Test.cs
  4. +1
    -1
      src/JT809.Protocol/JT809.Protocol.csproj
  5. +26
    -9
      src/JT809.Protocol/MessageBody/JT809_0x9200.cs

+ 1
- 1
.github/workflows/dotnetcore.yml ファイルの表示

@@ -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


+ 2
- 2
src/JT809.Protocol.Test/JT809.Protocol.Test.csproj ファイルの表示

@@ -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>


+ 41
- 0
src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9200_0x9201Test.cs ファイルの表示

@@ -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);
}
}
}

+ 1
- 1
src/JT809.Protocol/JT809.Protocol.csproj ファイルの表示

@@ -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>


+ 26
- 9
src/JT809.Protocol/MessageBody/JT809_0x9200.cs ファイルの表示

@@ -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
{


読み込み中…
キャンセル
保存