@@ -12,7 +12,7 @@ jobs: | |||
- name: Setup .NET Core | |||
uses: actions/setup-dotnet@master | |||
with: | |||
dotnet-version: 3.1.101 | |||
dotnet-version: 3.1.401 | |||
- name: dotnet info | |||
run: dotnet --info | |||
- name: dotnet restore | |||
@@ -107,22 +107,22 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8"> | |||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
</PackageReference> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.0" /> | |||
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> | |||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> | |||
<PackageReference Include="System.Drawing.Common" Version="4.7.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.7" /> | |||
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" /> | |||
<PackageReference Include="xunit" Version="2.4.1" /> | |||
<PackageReference Include="xunit.runner.console" Version="2.4.1"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | |||
</PackageReference> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | |||
</PackageReference> | |||
@@ -110,6 +110,48 @@ namespace JT808.Protocol.Test.MessageBody | |||
{ | |||
byte[] bytes = "7E010040540100000000000123456789000A00280032303030303030303132333430303030303030303030303030303030303030736D616C6C63686931323330303030303030303030303030303030303030303030303043484931323301D4C1413132333435B27E".ToHexBytes(); | |||
string json = JT808Serializer.Analyze<JT808Package>(bytes); | |||
} | |||
[Fact] | |||
public void Test2019_4_1() | |||
{ | |||
var package = JT808MsgId.终端注册.Create2019("22222222222", new JT808_0x0100() | |||
{ | |||
PlateNo = "粤A12346", | |||
PlateColor = 2, | |||
AreaID = 0, | |||
CityOrCountyId = 0, | |||
MakerId = "Koike002", | |||
TerminalId = "Koike002", | |||
TerminalModel = "Koike002" | |||
}); | |||
var data = JT808Serializer.Serialize(package); | |||
var hex = data.ToHexString(); | |||
Assert.Equal("7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToUpper(), hex); | |||
} | |||
[Fact] | |||
public void Test2019_4_2() | |||
{ | |||
byte[] bytes = "7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToHexBytes(); | |||
JT808Package jT808_0X0100 = JT808Serializer.Deserialize<JT808Package>(bytes); | |||
Assert.Equal("22222222222", jT808_0X0100.Header.TerminalPhoneNo); | |||
Assert.Equal(1, jT808_0X0100.Header.ProtocolVersion); | |||
Assert.NotNull(jT808_0X0100.Bodies); | |||
JT808_0x0100 body = jT808_0X0100.Bodies as JT808_0x0100; | |||
Assert.Equal(0, body.AreaID); | |||
Assert.Equal(2, body.PlateColor); | |||
Assert.Equal(0, body.CityOrCountyId); | |||
Assert.Equal("粤A12346", body.PlateNo.TrimStart()); | |||
Assert.Equal("Koike002", body.MakerId.TrimStart('0')); | |||
Assert.Equal("Koike002", body.TerminalId.TrimStart('0')); | |||
Assert.Equal("Koike002", body.TerminalModel.TrimStart('0')); | |||
} | |||
[Fact] | |||
public void Test2019_4_3() | |||
{ | |||
byte[] bytes = "7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToHexBytes(); | |||
string json = JT808Serializer.Analyze<JT808Package>(bytes); | |||
} | |||
} | |||
} |
@@ -14,7 +14,7 @@ | |||
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> | |||
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | |||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | |||
<Version>2.2.10</Version> | |||
<Version>2.2.11</Version> | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> | |||
@@ -65,14 +65,14 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8"> | |||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
</PackageReference> | |||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.3" /> | |||
<PackageReference Include="System.Text.Json" Version="4.7.1" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.7" /> | |||
<PackageReference Include="System.Text.Json" Version="4.7.2" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
@@ -269,6 +269,7 @@ namespace JT808.Protocol | |||
writer.WriteNumber($"[{messageBodyPropertyReadOnlySpan.ToString()}]消息体属性", messageBodyPropertyValue); | |||
if (headerMessageBodyProperty.VersionFlag) | |||
{ | |||
reader.Version = JT808Version.JTT2019; | |||
writer.WriteNumber( "[bit15]保留", 0); | |||
writer.WriteBoolean("[bit14]协议版本标识", headerMessageBodyProperty.VersionFlag); | |||
writer.WriteBoolean("[bit13]是否分包", headerMessageBodyProperty.IsPackage); | |||
@@ -285,6 +286,7 @@ namespace JT808.Protocol | |||
} | |||
else | |||
{ | |||
reader.Version = JT808Version.JTT2013; | |||
writer.WriteNumber("[bit15]保留", 0); | |||
writer.WriteNumber("[bit14]保留", 0); | |||
writer.WriteBoolean("[bit13]是否分包", headerMessageBodyProperty.IsPackage); | |||
@@ -210,7 +210,7 @@ namespace JT808.Protocol.MessageBody | |||
{ | |||
JT808_0x0200 value = new JT808_0x0200(); | |||
value.AlarmFlag = reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag); | |||
writer.WriteNumber($"[{value.AlarmFlag.ReadBinary().ToString()}]报警标志", value.AlarmFlag); | |||
value.StatusFlag = reader.ReadUInt32(); | |||
var alarmFlagBits = Convert.ToString(value.AlarmFlag, 2).PadLeft(32, '0').AsSpan(); | |||
writer.WriteStartObject("报警标志对象"); | |||
@@ -261,7 +261,7 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteString($"[bit1]超速报警", $"{alarmFlagBits[1]}"); | |||
writer.WriteString($"[bit0]紧急报警,触动报警开关后触发", $"{alarmFlagBits[0]}"); | |||
writer.WriteEndObject(); | |||
writer.WriteNumber($"[{value.StatusFlag.ReadNumber()}]状态位标志", value.StatusFlag); | |||
writer.WriteNumber($"[{value.StatusFlag.ReadBinary().ToString()}]状态位标志", value.StatusFlag); | |||
var StatusFlagBits = Convert.ToString(value.StatusFlag, 2).PadLeft(32, '0').AsSpan(); | |||
writer.WriteStartObject("状态标志对象"); | |||
if (reader.Version == JT808Version.JTT2019) | |||