From 461e3c3105ee8ccbb146a4b4d25efbbea8f63d5b Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Thu, 13 Aug 2020 09:59:34 +0800 Subject: [PATCH] =?UTF-8?q?v2.2.11=201.=E5=8D=87=E7=BA=A7core=E7=89=88?= =?UTF-8?q?=E6=9C=AC=202.=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E5=8C=85?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=99=A8=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E7=89=88=E6=9C=AC=203.=E5=AE=8C=E5=96=840200=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=99=A8=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dotnetcore.yml | 2 +- .../JT808.Protocol.Test.csproj | 8 ++-- .../MessageBody/JT808_0x0100Test.cs | 42 +++++++++++++++++++ src/JT808.Protocol/JT808.Protocol.csproj | 10 ++--- src/JT808.Protocol/JT808Package.cs | 2 + .../MessageBody/JT808_0x0200.cs | 4 +- 6 files changed, 56 insertions(+), 12 deletions(-) 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)