From 023713cc6266044bda9d96ba6883df59dfef804c Mon Sep 17 00:00:00 2001 From: TK Date: Tue, 28 Apr 2020 23:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JT809MessageBody/JT809_0x1200Test.cs | 8 +-- .../JT809_0x1200_0x1201Test.cs | 8 +-- .../JT809_0x1200_0x1202Test.cs | 25 +++++++- .../JT809_0x1200_0x1203Test.cs | 59 +++++++++++++++++++ .../JT809_0x1400_0x1402Test.cs | 12 ++-- .../JT809_0x1400_0x1403Test.cs | 12 ++-- .../JT809_0x9400_0x9402Test.cs | 12 ++-- .../JT809_0x9400_0x9403Test.cs | 12 ++-- .../MessageBody/JT809_0x1200.cs | 3 +- .../SubMessageBody/JT809_0x1200_0x1201.cs | 34 +++++------ .../SubMessageBody/JT809_0x1200_0x1202.cs | 14 ++--- .../SubMessageBody/JT809_0x1400_0x1402.cs | 8 +-- 12 files changed, 144 insertions(+), 63 deletions(-) diff --git a/src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs b/src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs index aeeb00b..754ebd6 100644 --- a/src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs +++ b/src/JT809.Protocol.Test/JT809MessageBody/JT809_0x1200Test.cs @@ -43,7 +43,7 @@ namespace JT809.Protocol.Test.JT809MessageBody //00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 //00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32 //D4C1413132333435000000000000000000000000000112010000003D00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232 - Assert.Equal("D4C1413132333435000000000000000000000000000112010000003D00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); + Assert.Equal("D4C1413132333435000000000000000000000000000112010000003D31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); //"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" //"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 61 61 32 32 32 32 32 32 32 32 32 32 32 32" } @@ -51,7 +51,7 @@ namespace JT809.Protocol.Test.JT809MessageBody [Fact] public void Test2() { - var bytes = "D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32".ToHexBytes(); + var bytes = "D4C1413132333435000000000000000000000000000112010000003D31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232".ToHexBytes(); JT809_0x1200 jT809_0X9001 = JT809Serializer.Deserialize(bytes); Assert.Equal("粤A12345", jT809_0X9001.VehicleNo); Assert.Equal(JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); @@ -84,13 +84,13 @@ namespace JT809.Protocol.Test.JT809MessageBody }; jT809_0X1200.SubBodies = jT809_0X1200_0X1201; var hex = JT809_2019_Serializer.Serialize(jT809_0X1200).ToHexString(); - Assert.Equal("D4C1413132333435000000000000000000000000000112010000006E00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232", hex); + Assert.Equal("D4C1413132333435000000000000000000000000000112010000006E3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200", hex); } [Fact] public void Test_2019_2() { - var bytes = "D4C1413132333435000000000000000000000000000112010000006E00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232".ToHexBytes(); + var bytes = "D4C1413132333435000000000000000000000000000112010000006E3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200".ToHexBytes(); JT809_0x1200 jT809_0X9001 = JT809_2019_Serializer.Deserialize(bytes); Assert.Equal("粤A12345", jT809_0X9001.VehicleNo); Assert.Equal(JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs index 6c7cd04..45abc62 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs @@ -31,13 +31,13 @@ namespace JT809.Protocol.Test.JT809SubMessageBody }; var hex = JT809Serializer.Serialize(jT809_0X1200_0X1201).ToHexString(); //"00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" - Assert.Equal("00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232",hex); + Assert.Equal("31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); } [Fact] public void Test2() { - var bytes = "00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32".ToHexBytes(); + var bytes = "31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232".ToHexBytes(); JT809_0x1200_0x1201 jT809_0X1200_0X1201 = JT809Serializer.Deserialize(bytes); Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); @@ -59,13 +59,13 @@ namespace JT809.Protocol.Test.JT809SubMessageBody IMIEId="123456789" }; var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1201).ToHexString(); - Assert.Equal("00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232", hex); + Assert.Equal("3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200", hex); } [Fact] public void Test_2019_2() { - var bytes = "00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232".ToHexBytes(); + var bytes = "3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200".ToHexBytes(); JT809_0x1200_0x1201 jT809_0X1200_0X1201 = JT809_2019_Serializer.Deserialize(bytes); Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs index 3353fbc..f10736b 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs @@ -22,6 +22,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody public void Test1() { JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); jT809_0X1200_0X1202.VehiclePosition.Day = 19; jT809_0X1200_0X1202.VehiclePosition.Month = 7; jT809_0X1200_0X1202.VehiclePosition.Year = 2012; @@ -66,13 +67,33 @@ namespace JT809.Protocol.Test.JT809SubMessageBody [Fact] public void Test_2019_1() { - // todo:JT809VehiclePositionProperties_2019 + JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); + jT809_0X1200_0X1202.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; + //jT809_0X1200_0X1202.GNSSData.GnssData = new byte[20]; + jT809_0X1200_0X1202.GNSSData.PlatformId1 = "11111111111"; + jT809_0X1200_0X1202.GNSSData.Alarm1 = 1; + jT809_0X1200_0X1202.GNSSData.PlatformId2 = "22222222222"; + jT809_0X1200_0X1202.GNSSData.Alarm2 = 2; + jT809_0X1200_0X1202.GNSSData.PlatformId3 = "33333333333"; + jT809_0X1200_0X1202.GNSSData.Alarm3 = 3; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1202).ToHexString(); + Assert.Equal("0100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003", hex); + } [Fact] public void Test_2019_2() { - // todo:JT809VehiclePositionProperties_2019 + var bytes = "0100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003".ToHexBytes(); + JT809_0x1200_0x1202 jT809_0X1200_0X1202 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal( JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1202.GNSSData.Encrypt); + Assert.Equal("11111111111", jT809_0X1200_0X1202.GNSSData.PlatformId1); + Assert.Equal(1u, jT809_0X1200_0X1202.GNSSData.Alarm1); + Assert.Equal("22222222222", jT809_0X1200_0X1202.GNSSData.PlatformId2); + Assert.Equal(2u, jT809_0X1200_0X1202.GNSSData.Alarm2); + Assert.Equal("33333333333", jT809_0X1200_0X1202.GNSSData.PlatformId3); + Assert.Equal(3u, jT809_0X1200_0X1202.GNSSData.Alarm3); } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1203Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1203Test.cs index 263b10c..c5aaca9 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1203Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1203Test.cs @@ -7,12 +7,15 @@ 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_0x1200_0x1203Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -20,6 +23,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody jT809_0X1200_0X1203.GNSS = new List(); JT809_0x1200_0x1202 jT809_0X1200_0X1202_1 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202_1.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); jT809_0X1200_0X1202_1.VehiclePosition.Day = 19; jT809_0X1200_0X1202_1.VehiclePosition.Month = 7; jT809_0X1200_0X1202_1.VehiclePosition.Year = 2012; @@ -37,6 +41,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody jT809_0X1200_0X1202_1.VehiclePosition.Alarm = 257; JT809_0x1200_0x1202 jT809_0X1200_0X1202_2 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202_2.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); jT809_0X1200_0X1202_2.VehiclePosition.Day = 19; jT809_0X1200_0X1202_2.VehiclePosition.Month = 7; jT809_0X1200_0X1202_2.VehiclePosition.Year = 2012; @@ -54,6 +59,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody jT809_0X1200_0X1202_2.VehiclePosition.Alarm = 257; JT809_0x1200_0x1202 jT809_0X1200_0X1202_3 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202_3.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); jT809_0X1200_0X1202_3.VehiclePosition.Day = 19; jT809_0X1200_0X1202_3.VehiclePosition.Month = 7; jT809_0X1200_0X1202_3.VehiclePosition.Year = 2012; @@ -134,5 +140,58 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal((uint)3, jT809_0X1200_0X1203.GNSS[2].VehiclePosition.State); Assert.Equal((uint)257, jT809_0X1200_0X1203.GNSS[2].VehiclePosition.Alarm); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1200_0x1203 jT809_0X1200_0X1203 = new JT809_0x1200_0x1203(); + jT809_0X1200_0X1203.GNSS = new List(); + JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); + jT809_0X1200_0X1202.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; + //jT809_0X1200_0X1202.GNSSData.GnssData = new byte[20]; + jT809_0X1200_0X1202.GNSSData.PlatformId1 = "11111111111"; + jT809_0X1200_0X1202.GNSSData.Alarm1 = 1; + jT809_0X1200_0X1202.GNSSData.PlatformId2 = "22222222222"; + jT809_0X1200_0X1202.GNSSData.Alarm2 = 2; + jT809_0X1200_0X1202.GNSSData.PlatformId3 = "33333333333"; + jT809_0X1200_0X1202.GNSSData.Alarm3 = 3; + jT809_0X1200_0X1203.GNSS.Add(jT809_0X1200_0X1202); + JT809_0x1200_0x1202 jT809_0X1200_0X1202_1 = new JT809_0x1200_0x1202(); + jT809_0X1200_0X1202_1.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); + jT809_0X1200_0X1202_1.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; + jT809_0X1200_0X1202_1.GNSSData.PlatformId1 = "11111111111"; + jT809_0X1200_0X1202_1.GNSSData.Alarm1 = 1; + jT809_0X1200_0X1202_1.GNSSData.PlatformId2 = "22222222222"; + jT809_0X1200_0X1202_1.GNSSData.Alarm2 = 2; + jT809_0X1200_0X1202_1.GNSSData.PlatformId3 = "33333333333"; + jT809_0X1200_0X1202_1.GNSSData.Alarm3 = 3; + jT809_0X1200_0X1203.GNSS.Add(jT809_0X1200_0X1202_1); + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1203).ToHexString(); + Assert.Equal("0201000000003131313131313131313131000000013232323232323232323232000000023333333333333333333333000000030100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003", hex); + + } + + [Fact] + public void Test_2019_2() + { + var bytes = "0201000000003131313131313131313131000000013232323232323232323232000000023333333333333333333333000000030100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003".ToHexBytes(); + JT809_0x1200_0x1203 jT809_0X1200_0X1203 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1203.GNSS[0].GNSSData.Encrypt); + Assert.Equal("11111111111", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId1); + Assert.Equal(1u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm1); + Assert.Equal("22222222222", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId2); + Assert.Equal(2u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm2); + Assert.Equal("33333333333", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId3); + Assert.Equal(3u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm3); + + Assert.Equal(JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1203.GNSS[1].GNSSData.Encrypt); + Assert.Equal("11111111111", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId1); + Assert.Equal(1u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm1); + Assert.Equal("22222222222", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId2); + Assert.Equal(2u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm2); + Assert.Equal("33333333333", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId3); + Assert.Equal(3u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm3); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs index 8ab0509..717f9ae 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs @@ -50,26 +50,26 @@ namespace JT809.Protocol.Test.JT809SubMessageBody { JT809_0x1400_0x1402 jT809_0x1400_0x1402 = new JT809_0x1400_0x1402 { - SourcePlatformId = "30313233343536373839", + SourcePlatformId = "12345678900", WarnType = JT809WarnType.偏离路线报警, WarnTime = DateTime.Parse("2020-04-23"), StartTime= DateTime.Parse("2020-04-23"), EndTime= DateTime.Parse("2020-04-24"), VehicleNo="粤A11111", VehicleColor= JT809VehicleColorType.蓝色, - DestinationPlatformId = "30313233343536373839", + DestinationPlatformId = "12345678900", InfoContent = "gfdf454553", }; var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1402).ToHexString(); - Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533", hex); + Assert.Equal("3132333435363738393030000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000013132333435363738393030000000000000000A67666466343534353533", hex); } [Fact] public void Test_2019_2() { - var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533".ToHexBytes(); + var bytes = "3132333435363738393030000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000013132333435363738393030000000000000000A67666466343534353533".ToHexBytes(); JT809_0x1400_0x1402 jT809_0x1400_0x1402 = JT809_2019_Serializer.Deserialize(bytes); - Assert.Equal("30313233343536373839", jT809_0x1400_0x1402.SourcePlatformId); + Assert.Equal("12345678900", jT809_0x1400_0x1402.SourcePlatformId); Assert.Equal("gfdf454553", jT809_0x1400_0x1402.InfoContent); Assert.Equal(JT809WarnType.偏离路线报警, jT809_0x1400_0x1402.WarnType); Assert.Equal((uint)10, jT809_0x1400_0x1402.InfoLength); @@ -78,7 +78,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(DateTime.Parse("2020-04-24"), jT809_0x1400_0x1402.EndTime); Assert.Equal("粤A11111", jT809_0x1400_0x1402.VehicleNo); Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x1400_0x1402.VehicleColor); - Assert.Equal("30313233343536373839", jT809_0x1400_0x1402.DestinationPlatformId); + Assert.Equal("12345678900", jT809_0x1400_0x1402.DestinationPlatformId); } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs index 6777c0f..f3658ac 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs @@ -43,27 +43,27 @@ namespace JT809.Protocol.Test.JT809SubMessageBody { JT809_0x1400_0x1403 jT809_0x1400_0x1403 = new JT809_0x1400_0x1403 { - SourcePlatformId = "30313233343536373839", + SourcePlatformId = "12345678900", WarnType = JT809WarnType.偏离路线报警, WarnTime = DateTime.Parse("2020-04-23"), StartTime = DateTime.Parse("2020-04-23"), EndTime = DateTime.Parse("2020-04-24"), VehicleNo = "粤A11111", VehicleColor = JT809VehicleColorType.蓝色, - DestinationPlatformId = "30313233343536373839", + DestinationPlatformId = "12345678900", InfoContent = "gfdf454553", DRVLineId=55 }; var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1403).ToHexString(); - Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533", hex); + Assert.Equal("00000000000002DFDC1C34000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C1413131313131000000000000000000000000000100000000000002DFDC1C34000000370000000A67666466343534353533", hex); } [Fact] public void Test_2019_2() { - var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533".ToHexBytes(); + var bytes = "00000000000002DFDC1C34000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C1413131313131000000000000000000000000000100000000000002DFDC1C34000000370000000A67666466343534353533".ToHexBytes(); JT809_0x1400_0x1403 jT809_0x1400_0x1403 = JT809_2019_Serializer.Deserialize(bytes); - Assert.Equal("30313233343536373839", jT809_0x1400_0x1403.SourcePlatformId); + Assert.Equal("12345678900", jT809_0x1400_0x1403.SourcePlatformId); Assert.Equal("gfdf454553", jT809_0x1400_0x1403.InfoContent); Assert.Equal(JT809WarnType.偏离路线报警, jT809_0x1400_0x1403.WarnType); Assert.Equal((uint)10, jT809_0x1400_0x1403.InfoLength); @@ -72,7 +72,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(DateTime.Parse("2020-04-24"), jT809_0x1400_0x1403.EndTime); Assert.Equal("粤A11111", jT809_0x1400_0x1403.VehicleNo); Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x1400_0x1403.VehicleColor); - Assert.Equal("30313233343536373839", jT809_0x1400_0x1403.DestinationPlatformId); + Assert.Equal("12345678900", jT809_0x1400_0x1403.DestinationPlatformId); Assert.Equal(55u, jT809_0x1400_0x1403.DRVLineId); } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9402Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9402Test.cs index cb549ff..bbc0560 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9402Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9402Test.cs @@ -47,25 +47,25 @@ namespace JT809.Protocol.Test.JT809SubMessageBody { JT809_0x9400_0x9402 jT809_0x9400_0x9402 = new JT809_0x9400_0x9402 { - SourcePlatformId = "30313233343536373839", + SourcePlatformId = "12345678901", WarnType = JT809WarnType.劫警, WarnTime = DateTime.Parse("2020-04-26 18:23:00"), StartTime = DateTime.Parse("2020-04-26 18:23:00"), EndTime = DateTime.Parse("2020-04-26 19:23:00"), VehicleNo= "粤A12345", VehicleColor= JT809VehicleColorType.蓝色, - DestinationPlatformId = "30313233343536373839", + DestinationPlatformId = "12345678901", DRVLineId=22, WarnContent = "劫警", }; var hex = JT809_2019_Serializer.Serialize(jT809_0x9400_0x9402).ToHexString(); - Assert.Equal("0000000000000000000000000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000000000000000000001600000004BDD9BEAF", hex); + Assert.Equal("00000000000002DFDC1C35000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000002DFDC1C350000001600000004BDD9BEAF", hex); } [Fact] public void Test_2019_2() { - var bytes = "0000000000000000000000000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000000000000000000001600000004BDD9BEAF".ToHexBytes(); + var bytes = "00000000000002DFDC1C35000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000002DFDC1C350000001600000004BDD9BEAF".ToHexBytes(); JT809_0x9400_0x9402 jT809_0x9400_0x9402 = JT809_2019_Serializer.Deserialize(bytes); Assert.Equal(JT809WarnType.劫警, jT809_0x9400_0x9402.WarnType); Assert.Equal(DateTime.Parse("2020-04-26 18:23:00"), jT809_0x9400_0x9402.WarnTime); @@ -74,8 +74,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(DateTime.Parse("2020-04-26 19:23:00"), jT809_0x9400_0x9402.EndTime); Assert.Equal("粤A12345", jT809_0x9400_0x9402.VehicleNo); Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x9400_0x9402.VehicleColor); - Assert.Equal("30313233343536373839", jT809_0x9400_0x9402.DestinationPlatformId); - Assert.Equal("30313233343536373839", jT809_0x9400_0x9402.SourcePlatformId); + Assert.Equal("12345678901", jT809_0x9400_0x9402.DestinationPlatformId); + Assert.Equal("12345678901", jT809_0x9400_0x9402.SourcePlatformId); Assert.Equal(22u, jT809_0x9400_0x9402.DRVLineId); Assert.Equal(4u, jT809_0x9400_0x9402.WarnLength); } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9403Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9403Test.cs index ddcecff..428121f 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9403Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x9400_0x9403Test.cs @@ -47,24 +47,24 @@ namespace JT809.Protocol.Test.JT809SubMessageBody { JT809_0x9400_0x9403 jT809_0x9400_0x9403 = new JT809_0x9400_0x9403 { - SourcePlatformId = "30313233343536373839", + SourcePlatformId = "12345678901", WarnType = JT809WarnType.疲劳驾驶报警, WarnTime = DateTime.Parse("2020-04-26 18:24:00"), StartTime = DateTime.Parse("2020-04-26 18:24:00"), EndTime = DateTime.Parse("2020-04-26 19:24:00"), VehicleNo = "粤A5647", VehicleColor = JT809VehicleColorType.黄色, - DestinationPlatformId = "30313233343536373839", + DestinationPlatformId = "12345678901", WarnContent = "疲劳驾驶报警", }; var hex = JT809_2019_Serializer.Serialize(jT809_0x9400_0x9403).ToHexString(); - Assert.Equal("00000000000000000000000002000000005EA56140000000005EA56140000000005EA56F50D4C141353634370000000000000000000000000000020000000000000000000000000000000000000CC6A3C0CDBCDDCABBB1A8BEAF", hex); + Assert.Equal("00000000000002DFDC1C350002000000005EA56140000000005EA56140000000005EA56F50D4C1413536343700000000000000000000000000000200000000000002DFDC1C35000000000000000CC6A3C0CDBCDDCABBB1A8BEAF", hex); } [Fact] public void Test_2019_2() { - var bytes = "00000000000000000000000002000000005EA56140000000005EA56140000000005EA56F50D4C141353634370000000000000000000000000000020000000000000000000000000000000000000CC6A3C0CDBCDDCABBB1A8BEAF".ToHexBytes(); + var bytes = "00000000000002DFDC1C350002000000005EA56140000000005EA56140000000005EA56F50D4C1413536343700000000000000000000000000000200000000000002DFDC1C35000000000000000CC6A3C0CDBCDDCABBB1A8BEAF".ToHexBytes(); JT809_0x9400_0x9403 jT809_0x9400_0x9403 = JT809_2019_Serializer.Deserialize(bytes); Assert.Equal(JT809WarnType.疲劳驾驶报警, jT809_0x9400_0x9403.WarnType); Assert.Equal(DateTime.Parse("2020-04-26 18:24:00"), jT809_0x9400_0x9403.WarnTime); @@ -72,8 +72,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(DateTime.Parse("2020-04-26 19:24:00"), jT809_0x9400_0x9403.EndTime); Assert.Equal("疲劳驾驶报警", jT809_0x9400_0x9403.WarnContent); Assert.Equal((uint)12, jT809_0x9400_0x9403.WarnLength); - Assert.Equal("30313233343536373839", jT809_0x9400_0x9403.DestinationPlatformId); - Assert.Equal("30313233343536373839", jT809_0x9400_0x9403.SourcePlatformId); + Assert.Equal("12345678901", jT809_0x9400_0x9403.DestinationPlatformId); + Assert.Equal("12345678901", jT809_0x9400_0x9403.SourcePlatformId); } } } diff --git a/src/JT809.Protocol/MessageBody/JT809_0x1200.cs b/src/JT809.Protocol/MessageBody/JT809_0x1200.cs index 57db2e5..d0e7315 100644 --- a/src/JT809.Protocol/MessageBody/JT809_0x1200.cs +++ b/src/JT809.Protocol/MessageBody/JT809_0x1200.cs @@ -4,6 +4,7 @@ using JT809.Protocol.Exceptions; using JT809.Protocol.Extensions; using JT809.Protocol.Formatters; using JT809.Protocol.MessagePack; +using System; namespace JT809.Protocol.MessageBody { @@ -70,7 +71,7 @@ namespace JT809.Protocol.MessageBody } writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); } - catch + catch(Exception ex) { throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1201.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1201.cs index 1e14c6f..fef1a73 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1201.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1201.cs @@ -49,21 +49,21 @@ namespace JT809.Protocol.SubMessageBody JT809_0x1200_0x1201 value = new JT809_0x1200_0x1201(); if(config.Version== JT809Version.JTT2011) { - value.PlateformId = reader.ReadBigNumber(11); - value.ProducerId = reader.ReadBigNumber(11); + value.PlateformId = reader.ReadString(11); + value.ProducerId = reader.ReadString(11); #warning 此处应该改成大端模式读取数据吧 - value.TerminalModelType = reader.ReadBigNumber(20); - value.TerminalId = reader.ReadBigNumber(7); + value.TerminalModelType = reader.ReadString(20); + value.TerminalId = reader.ReadString(7); value.TerminalId = value.TerminalId.ToUpper(); value.TerminalSimCode = reader.ReadString(12); } else { - value.PlateformId = reader.ReadBigNumber(11); - value.ProducerId = reader.ReadBigNumber(11); - value.TerminalModelType = reader.ReadBigNumber(30); + value.PlateformId = reader.ReadString(11); + value.ProducerId = reader.ReadString(11); + value.TerminalModelType = reader.ReadString(30); value.IMIEId = reader.ReadString(15); - value.TerminalId = reader.ReadBigNumber(30); + value.TerminalId = reader.ReadString(30); value.TerminalId = value.TerminalId.ToUpper(); value.TerminalSimCode = reader.ReadString(13); } @@ -74,21 +74,21 @@ namespace JT809.Protocol.SubMessageBody { if(config.Version== JT809Version.JTT2011) { - writer.WriteBigNumber(value.PlateformId, 11); - writer.WriteBigNumber(value.ProducerId, 11); + writer.WriteStringPadRight(value.PlateformId, 11); + writer.WriteStringPadRight(value.ProducerId, 11); #warning 此处应该改成大端模式读取数据吧 - writer.WriteBigNumber(value.TerminalModelType, 20); - writer.WriteBigNumber(value.TerminalId.ToUpper(), 7); + writer.WriteStringPadRight(value.TerminalModelType, 20); + writer.WriteStringPadRight(value.TerminalId.ToUpper(), 7); writer.WriteStringPadLeft(value.TerminalSimCode, 12); } else { - writer.WriteBigNumber(value.PlateformId, 11); - writer.WriteBigNumber(value.ProducerId, 11); - writer.WriteBigNumber(value.TerminalModelType, 30); + writer.WriteStringPadRight(value.PlateformId, 11); + writer.WriteStringPadRight(value.ProducerId, 11); + writer.WriteStringPadRight(value.TerminalModelType, 30); writer.WriteStringPadRight(value.IMIEId, 15); - writer.WriteBigNumber(value.TerminalId.ToUpper(), 30); - writer.WriteStringPadLeft(value.TerminalSimCode, 13); + writer.WriteStringPadRight(value.TerminalId.ToUpper(), 30); + writer.WriteStringPadRight(value.TerminalSimCode, 13); } } } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs index 97f2826..8dc03f8 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs @@ -54,11 +54,11 @@ namespace JT809.Protocol.SubMessageBody value.GNSSData.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte(); value.GNSSData.DataLength = reader.ReadUInt32(); value.GNSSData.GnssData = reader.ReadArray((int)value.GNSSData.DataLength).ToArray(); - value.GNSSData.PlatformId1 = reader.ReadBigNumber(11); + value.GNSSData.PlatformId1 = reader.ReadString(11); value.GNSSData.Alarm1 = reader.ReadUInt32(); - value.GNSSData.PlatformId2 = reader.ReadBigNumber(11); + value.GNSSData.PlatformId2 = reader.ReadString(11); value.GNSSData.Alarm2 = reader.ReadUInt32(); - value.GNSSData.PlatformId3 = reader.ReadBigNumber(11); + value.GNSSData.PlatformId3 = reader.ReadString(11); value.GNSSData.Alarm3 = reader.ReadUInt32(); } return value; @@ -90,13 +90,13 @@ namespace JT809.Protocol.SubMessageBody writer.WriteByte((byte)value.GNSSData.Encrypt); writer.Skip(4, out int position); writer.WriteArray(value.GNSSData.GnssData); - writer.WriteBigNumber(value.GNSSData.PlatformId1,11); + writer.WriteUInt32Return((uint)(writer.GetCurrentPosition() - position - 4), position); + writer.WriteStringPadRight(value.GNSSData.PlatformId1,11); writer.WriteUInt32(value.GNSSData.Alarm1); - writer.WriteBigNumber(value.GNSSData.PlatformId2,11); + writer.WriteStringPadRight(value.GNSSData.PlatformId2,11); writer.WriteUInt32(value.GNSSData.Alarm2); - writer.WriteBigNumber(value.GNSSData.PlatformId3,11); + writer.WriteStringPadRight(value.GNSSData.PlatformId3,11); writer.WriteUInt32(value.GNSSData.Alarm3); - writer.WriteUInt32Return((uint)(writer.GetCurrentPosition() - position - 4), position); } } } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs index e634239..87f2649 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs @@ -80,7 +80,7 @@ namespace JT809.Protocol.SubMessageBody } else { - value.SourcePlatformId = reader.ReadBigNumber(11); + value.SourcePlatformId = reader.ReadString(11); } value.WarnType = (JT809WarnType)reader.ReadUInt16(); value.WarnTime = reader.ReadUTCDateTime(); @@ -95,7 +95,7 @@ namespace JT809.Protocol.SubMessageBody #warning 此处车牌号文档长度有误,使用旧版长度21 value.VehicleNo = reader.ReadString(21); value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); - value.DestinationPlatformId = reader.ReadBigNumber(11); + value.DestinationPlatformId = reader.ReadString(11); value.DRVLineId = reader.ReadUInt32(); } value.InfoLength = reader.ReadUInt32(); @@ -111,7 +111,7 @@ namespace JT809.Protocol.SubMessageBody } else { - writer.WriteBigNumber(value.SourcePlatformId,11); + writer.WriteStringPadRight(value.SourcePlatformId,11); } writer.WriteUInt16((ushort)value.WarnType); writer.WriteUTCDateTime(value.WarnTime); @@ -125,7 +125,7 @@ namespace JT809.Protocol.SubMessageBody writer.WriteUTCDateTime(value.EndTime); writer.WriteStringPadRight(value.VehicleNo,21); writer.WriteByte((byte)value.VehicleColor); - writer.WriteBigNumber(value.DestinationPlatformId,11); + writer.WriteStringPadRight(value.DestinationPlatformId,11); writer.WriteUInt32(value.DRVLineId); } // 先计算内容长度(汉字为两个字节)