diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml index 51fa38b..44b83d3 100755 --- a/.github/workflows/dotnetcore.yml +++ b/.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.401 - name: dotnet info run: dotnet --info - name: dotnet restore diff --git a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj index 5f65789..d64dcd8 100644 --- a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj +++ b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj @@ -107,22 +107,22 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + all runtime; build; native; contentfiles; analyzers - + all runtime; build; native; contentfiles; analyzers diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs index 446b33f..8925a07 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs @@ -110,6 +110,48 @@ namespace JT808.Protocol.Test.MessageBody { byte[] bytes = "7E010040540100000000000123456789000A00280032303030303030303132333430303030303030303030303030303030303030736D616C6C63686931323330303030303030303030303030303030303030303030303043484931323301D4C1413132333435B27E".ToHexBytes(); string json = JT808Serializer.Analyze(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(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(bytes); } } } diff --git a/src/JT808.Protocol/JT808.Protocol.csproj b/src/JT808.Protocol/JT808.Protocol.csproj index 6a6691c..794fef9 100644 --- a/src/JT808.Protocol/JT808.Protocol.csproj +++ b/src/JT808.Protocol/JT808.Protocol.csproj @@ -14,7 +14,7 @@ https://github.com/SmallChi/JT808/blob/master/LICENSE https://github.com/SmallChi/JT808/blob/master/LICENSE false - 2.2.10 + 2.2.11 LICENSE @@ -65,14 +65,14 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + diff --git a/src/JT808.Protocol/JT808Package.cs b/src/JT808.Protocol/JT808Package.cs index 55d3414..bce4ae7 100644 --- a/src/JT808.Protocol/JT808Package.cs +++ b/src/JT808.Protocol/JT808Package.cs @@ -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); diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs index 370fc3c..70201e8 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs @@ -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)