diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs index 2d51c4c..6c7cd04 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1201Test.cs @@ -7,12 +7,17 @@ using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using JT809.Protocol.Exceptions; using JT809.Protocol.SubMessageBody; +using JT809.Protocol.Internal; +using JT809.Protocol.Enums; namespace JT809.Protocol.Test.JT809SubMessageBody { public class JT809_0x1200_0x1201Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version= JT809Version.JTT2019}); + [Fact] public void Test1() { @@ -40,5 +45,34 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal("11111111", jT809_0X1200_0X1201.TerminalModelType); Assert.Equal("222222222222", jT809_0X1200_0X1201.TerminalSimCode); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1200_0x1201 jT809_0X1200_0X1201 = new JT809_0x1200_0x1201 + { + PlateformId = "1111111111", + ProducerId = "1111111111", + TerminalId = "11111AA", + TerminalModelType = "11111111", + TerminalSimCode = "222222222222", + IMIEId="123456789" + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1201).ToHexString(); + Assert.Equal("00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232".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); + Assert.Equal("11111AA", jT809_0X1200_0X1201.TerminalId); + Assert.Equal("11111111", jT809_0X1200_0X1201.TerminalModelType); + Assert.Equal("222222222222", jT809_0X1200_0X1201.TerminalSimCode); + Assert.Equal("123456789", jT809_0X1200_0X1201.IMIEId); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs index 4e68615..3353fbc 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x1202Test.cs @@ -7,12 +7,17 @@ using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using JT809.Protocol.Exceptions; using JT809.Protocol.SubMessageBody; +using JT809.Protocol.Internal; +using JT809.Protocol.Enums; namespace JT809.Protocol.Test.JT809SubMessageBody { public class JT809_0x1200_0x1202Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); + [Fact] public void Test1() { @@ -57,5 +62,18 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal((uint)3, jT809_0X1200_0X1202.VehiclePosition.State); Assert.Equal((uint)257, jT809_0X1200_0X1202.VehiclePosition.Alarm); } + + [Fact] + public void Test_2019_1() + { + // todo:JT809VehiclePositionProperties_2019 + } + + [Fact] + public void Test_2019_2() + { + // todo:JT809VehiclePositionProperties_2019 + } + } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120ATest.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120ATest.cs index f83de94..498504d 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120ATest.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120ATest.cs @@ -7,12 +7,16 @@ 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_0x120ATest { private JT809Serializer JT809Serializer = new JT809Serializer(); + + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -38,5 +42,38 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal("abcdef123456789", jT809_0X1200_0X120A.Licence); Assert.Equal("www123456789", jT809_0X1200_0X120A.OrgName); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1200_0x120A jT809_0X1200_0X120A = new JT809_0x1200_0x120A + { + DriverID = "123456789123456789", + DriverName = "smallchi", + Licence = "abcdef123456789", + OrgName = "www123456789", + ValidDate = DateTime.Parse("2020-04-23 22:22:22"), + SourceDataType=0x02, + SourceMsgSn=1 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X120A).ToHexString(); + + Assert.Equal("000200000001736D616C6C63686900000000000000003132333435363738393132333435363738390000616263646566313233343536373839000000000000000000000000000000000000000000000000007777773132333435363738390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EA1A49E", hex); + + } + + [Fact] + public void Test_2019_2() + { + var bytes = "000200000001736D616C6C63686900000000000000003132333435363738393132333435363738390000616263646566313233343536373839000000000000000000000000000000000000000000000000007777773132333435363738390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EA1A49E".ToHexBytes(); + JT809_0x1200_0x120A jT809_0X1200_0X120A = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal("123456789123456789", jT809_0X1200_0X120A.DriverID); + Assert.Equal("smallchi", jT809_0X1200_0X120A.DriverName); + Assert.Equal("abcdef123456789", jT809_0X1200_0X120A.Licence); + Assert.Equal("www123456789", jT809_0X1200_0X120A.OrgName); + Assert.Equal(DateTime.Parse("2020-04-23 22:22:22"), jT809_0X1200_0X120A.ValidDate); + Assert.Equal(0x02, jT809_0X1200_0X120A.SourceDataType); + Assert.Equal(1u, jT809_0X1200_0X120A.SourceMsgSn); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120BTest.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120BTest.cs index bd2f59e..9002815 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120BTest.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120BTest.cs @@ -7,12 +7,15 @@ using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using JT809.Protocol.Exceptions; using JT809.Protocol.SubMessageBody; +using JT809.Protocol.Internal; +using JT809.Protocol.Enums; namespace JT809.Protocol.Test.JT809SubMessageBody { public class JT809_0x1200_0x120BTest { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -33,5 +36,29 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal("asd123456asd", jT809_0X1200_0X120B.EwaybillInfo); Assert.Equal((uint)12, jT809_0X1200_0X120B.EwaybillLength); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1200_0x120B jT809_0X1200_0X120B = new JT809_0x1200_0x120B + { + EwaybillInfo = "asd123456asd", + SourceDataType=0x02, + SourceMsgSn=1 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X120B).ToHexString(); + Assert.Equal("0002000000010000000C617364313233343536617364", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "0002000000010000000C617364313233343536617364".ToHexBytes(); + JT809_0x1200_0x120B jT809_0X1200_0X120B = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal("asd123456asd", jT809_0X1200_0X120B.EwaybillInfo); + Assert.Equal((uint)12, jT809_0X1200_0X120B.EwaybillLength); + Assert.Equal(0x02, jT809_0X1200_0X120B.SourceDataType); + Assert.Equal(1u, jT809_0X1200_0X120B.SourceMsgSn); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120CTest.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120CTest.cs index ea95d5f..90f9980 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120CTest.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1200_0x120CTest.cs @@ -7,12 +7,15 @@ using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using JT809.Protocol.Exceptions; using JT809.Protocol.SubMessageBody; +using JT809.Protocol.Internal; +using JT809.Protocol.Enums; namespace JT809.Protocol.Test.JT809SubMessageBody { public class JT809_0x1200_0x120CTest { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -37,5 +40,32 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal("3210987654321", jT809_0X1200_0X120C.Licence); Assert.Equal("gov", jT809_0X1200_0X120C.OrgName); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1200_0x120C jT809_0X1200_0X120C = new JT809_0x1200_0x120C + { + DriverID = "1234567890123", + DriverName = "smallchi", + Licence = "3210987654321", + OrgName = "gov", + ValidDate=DateTime.Parse("2020-04-23 21:51:11") + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X120C).ToHexString(); + Assert.Equal("736D616C6C6368690000000000000000313233343536373839303132330000000000000033323130393837363534333231000000000000000000000000000000000000000000000000000000676F760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EA19D4F", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "736D616C6C6368690000000000000000313233343536373839303132330000000000000033323130393837363534333231000000000000000000000000000000000000000000000000000000676F760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EA19D4F".ToHexBytes(); + JT809_0x1200_0x120C jT809_0X1200_0X120C = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal("1234567890123", jT809_0X1200_0X120C.DriverID); + Assert.Equal("smallchi", jT809_0X1200_0X120C.DriverName); + Assert.Equal("3210987654321", jT809_0X1200_0X120C.Licence); + Assert.Equal("gov", jT809_0X1200_0X120C.OrgName); + Assert.Equal(DateTime.Parse("2020-04-23 21:51:11"), jT809_0X1200_0X120C.ValidDate); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1301Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1301Test.cs index ca8da94..cfc3d16 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1301Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1301Test.cs @@ -8,12 +8,14 @@ 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_0x1300_0x1301Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -39,5 +41,38 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal((uint)1234, jT809_0x1300_0x1301.InfoID); Assert.Equal(JT809_0x1301_ObjectType.当前连接的下级平台, jT809_0x1300_0x1301.ObjectType); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1300_0x1301 jT809_0x1300_0x1301 = new JT809_0x1300_0x1301 + { + ObjectID = "111", + InfoContent = "22ha22", + InfoID = 1234, + ObjectType = JT809_0x1301_ObjectType.当前连接的下级平台, + SourceMsgSn=99, + ResponderTel="12345678901", + SourceDataType=111, + Responder="smallchi" + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0x1300_0x1301).ToHexString(); + Assert.Equal("01736D616C6C636869000000000000000031323334353637383930310000000000000000003131310000000000000000000000000000000000006F0000006300000006323268613232", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "01736D616C6C636869000000000000000031323334353637383930310000000000000000003131310000000000000000000000000000000000006F0000006300000006323268613232".ToHexBytes(); + JT809_0x1300_0x1301 jT809_0x1300_0x1301 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal("111", jT809_0x1300_0x1301.ObjectID); + Assert.Equal("22ha22", jT809_0x1300_0x1301.InfoContent); + Assert.Equal(0u, jT809_0x1300_0x1301.InfoID); + Assert.Equal(JT809_0x1301_ObjectType.当前连接的下级平台, jT809_0x1300_0x1301.ObjectType); + Assert.Equal(99u, jT809_0x1300_0x1301.SourceMsgSn); + Assert.Equal("12345678901", jT809_0x1300_0x1301.ResponderTel); + Assert.Equal(111, jT809_0x1300_0x1301.SourceDataType); + Assert.Equal("smallchi", jT809_0x1300_0x1301.Responder); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1302Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1302Test.cs index e1ecf5a..cb091fa 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1302Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1300_0x1302Test.cs @@ -7,12 +7,15 @@ using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using JT809.Protocol.Exceptions; using JT809.Protocol.SubMessageBody; +using JT809.Protocol.Internal; +using JT809.Protocol.Enums; namespace JT809.Protocol.Test.JT809SubMessageBody { public class JT809_0x1300_0x1302Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -31,5 +34,28 @@ namespace JT809.Protocol.Test.JT809SubMessageBody JT809_0x1300_0x1302 jT809_0x1300_0x1302 = JT809Serializer.Deserialize(bytes); Assert.Equal((uint)1234, jT809_0x1300_0x1302.InfoID); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1300_0x1302 jT809_0x1300_0x1302 = new JT809_0x1300_0x1302 + { + InfoID = 1234, + SourceDataType=0x99, + SourceMsgSn=11 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0x1300_0x1302).ToHexString(); + Assert.Equal("00990000000B", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "00990000000B".ToHexBytes(); + JT809_0x1300_0x1302 jT809_0x1300_0x1302 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(0u, jT809_0x1300_0x1302.InfoID); + Assert.Equal(0x99, jT809_0x1300_0x1302.SourceDataType); + Assert.Equal(11u, jT809_0x1300_0x1302.SourceMsgSn); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs index 9f79a75..b463336 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1402Test.cs @@ -8,12 +8,14 @@ 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_0x1400_0x1402Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -42,5 +44,41 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal((uint)10, jT809_0x1400_0x1402.InfoLength); Assert.Equal(DateTime.Parse("2018-09-26"), jT809_0x1400_0x1402.WarnTime); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1400_0x1402 jT809_0x1400_0x1402 = new JT809_0x1400_0x1402 + { + SourcePlatformId = new byte[11], + 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 = new byte[11], + InfoContent = "gfdf454553", + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1402).ToHexString(); + Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533".ToHexBytes(); + JT809_0x1400_0x1402 jT809_0x1400_0x1402 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(new byte[11], 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); + Assert.Equal(DateTime.Parse("2020-04-23"), jT809_0x1400_0x1402.WarnTime); + Assert.Equal(DateTime.Parse("2020-04-23"), jT809_0x1400_0x1402.StartTime); + 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(new byte[11], 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 c9a65ca..2d6ee86 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1400_0x1403Test.cs @@ -8,12 +8,14 @@ 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_0x1400_0x1403Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -35,5 +37,43 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(JT809_0x1403_Result.将来处理, jT809_0x1400_0x1403.Result); Assert.Equal((uint)3344, jT809_0x1400_0x1403.InfoID); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1400_0x1403 jT809_0x1400_0x1403 = new JT809_0x1400_0x1403 + { + SourcePlatformId = new byte[11], + 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 = new byte[11], + InfoContent = "gfdf454553", + DRVLineId=55 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1403).ToHexString(); + Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533".ToHexBytes(); + JT809_0x1400_0x1403 jT809_0x1400_0x1403 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(new byte[11], 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); + Assert.Equal(DateTime.Parse("2020-04-23"), jT809_0x1400_0x1403.WarnTime); + Assert.Equal(DateTime.Parse("2020-04-23"), jT809_0x1400_0x1403.StartTime); + 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(new byte[11], jT809_0x1400_0x1403.DestinationPlatformId); + Assert.Equal(55u, jT809_0x1400_0x1403.DRVLineId); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1501Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1501Test.cs index 48b9947..fac27bd 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1501Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1501Test.cs @@ -8,12 +8,14 @@ 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_0x1500_0x1501Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + [Fact] public void Test1() { diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1503Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1503Test.cs index f4aa123..9e81861 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1503Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1503Test.cs @@ -8,12 +8,15 @@ 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_0x1500_0x1503Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); + [Fact] public void Test1() { @@ -34,5 +37,28 @@ namespace JT809.Protocol.Test.JT809SubMessageBody Assert.Equal(JT809_0x1503_Result.下发成功, jT809_0X1500_0X1503.Result); Assert.Equal((uint)9999, jT809_0X1500_0X1503.MsgID); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1500_0x1503 jT809_0X1500_0X1503 = new JT809_0x1500_0x1503 + { + SourceDataType=99, + SourceMsgSn=11, + Result= JT809_0x1503_Result.下发成功 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1500_0X1503).ToHexString(); + Assert.Equal("00630000000B00", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "00630000000B00".ToHexBytes(); + JT809_0x1500_0x1503 jT809_0X1500_0X1503 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(99, jT809_0X1500_0X1503.SourceDataType); + Assert.Equal(11u, jT809_0X1500_0X1503.SourceMsgSn); + Assert.Equal(JT809_0x1503_Result.下发成功, jT809_0X1500_0X1503.Result); + } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs index c8e178d..7b70c5f 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs @@ -8,32 +8,60 @@ 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_0x1500_0x1504Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { - JT809_0x1400_0x1403 jT809_0x1400_0x1403 = new JT809_0x1400_0x1403 + JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504 { - Result = JT809_0x1403_Result.将来处理, - InfoID = 3344, + CommandType= JT809CommandType.记录仪唯一性编号, + TraveldataInfo="123456", }; - var hex = JT809Serializer.Serialize(jT809_0x1400_0x1403).ToHexString(); - // "00 00 0D 10 03" - Assert.Equal("00000D1003",hex); + var hex = JT809Serializer.Serialize(jT809_0x1500_0x1504).ToHexString(); + Assert.Equal("0700000006313233343536", hex); } [Fact] public void Test2() { - var bytes = "00 00 0D 10 03".ToHexBytes(); - JT809_0x1400_0x1403 jT809_0x1400_0x1403 = JT809Serializer.Deserialize(bytes); - Assert.Equal(JT809_0x1403_Result.将来处理, jT809_0x1400_0x1403.Result); - Assert.Equal((uint)3344, jT809_0x1400_0x1403.InfoID); + var bytes = "0700000006313233343536".ToHexBytes(); + JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809Serializer.Deserialize(bytes); + Assert.Equal(JT809CommandType.记录仪唯一性编号, jT809_0x1500_0x1504.CommandType); + Assert.Equal("123456", jT809_0x1500_0x1504.TraveldataInfo); + Assert.Equal(6u, jT809_0x1500_0x1504.TraveldataLength); + } + + [Fact] + public void Test_2019_1() + { + JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504 + { + CommandType = JT809CommandType.记录仪唯一性编号, + TraveldataInfo = "123456", + SourceMsgSn = 1, + SourceDataType = 12, + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0x1500_0x1504).ToHexString(); + Assert.Equal("000C000000010700000006313233343536", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "000C000000010700000006313233343536".ToHexBytes(); + JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(JT809CommandType.记录仪唯一性编号, jT809_0x1500_0x1504.CommandType); + Assert.Equal("123456", jT809_0x1500_0x1504.TraveldataInfo); + Assert.Equal(6u, jT809_0x1500_0x1504.TraveldataLength); + Assert.Equal(1u, jT809_0x1500_0x1504.SourceMsgSn); + Assert.Equal(12, jT809_0x1500_0x1504.SourceDataType); } } } diff --git a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1505Test.cs b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1505Test.cs index 574f626..7fd3683 100644 --- a/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1505Test.cs +++ b/src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1505Test.cs @@ -8,12 +8,14 @@ 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_0x1500_0x1505Test { private JT809Serializer JT809Serializer = new JT809Serializer(); + private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); [Fact] public void Test1() { @@ -32,5 +34,28 @@ namespace JT809.Protocol.Test.JT809SubMessageBody JT809_0x1500_0x1505 jT809_0X1500_0X1505 = JT809Serializer.Deserialize(bytes); Assert.Equal(JT809_0x1505_Result.无该车辆, jT809_0X1500_0X1505.Result); } + + [Fact] + public void Test_2019_1() + { + JT809_0x1500_0x1505 jT809_0X1500_0X1505 = new JT809_0x1500_0x1505 + { + Result = JT809_0x1505_Result.无该车辆, + SourceDataType=5, + SourceMsgSn=1 + }; + var hex = JT809_2019_Serializer.Serialize(jT809_0X1500_0X1505).ToHexString(); + Assert.Equal("00050000000101", hex); + } + + [Fact] + public void Test_2019_2() + { + var bytes = "00050000000101".ToHexBytes(); + JT809_0x1500_0x1505 jT809_0X1500_0X1505 = JT809_2019_Serializer.Deserialize(bytes); + Assert.Equal(JT809_0x1505_Result.无该车辆, jT809_0X1500_0X1505.Result); + Assert.Equal(5, jT809_0X1500_0X1505.SourceDataType); + Assert.Equal(1u, jT809_0X1500_0X1505.SourceMsgSn); + } } } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs index ce87a46..0016c9f 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1200_0x1202.cs @@ -49,8 +49,9 @@ namespace JT809.Protocol.SubMessageBody value.VehiclePosition.State = reader.ReadUInt32(); value.VehiclePosition.Alarm = reader.ReadUInt32(); } - else { - + else + { +#warning JT809VehiclePositionProperties_2019 } return value; } @@ -76,8 +77,9 @@ namespace JT809.Protocol.SubMessageBody writer.WriteUInt32(value.VehiclePosition.State); writer.WriteUInt32(value.VehiclePosition.Alarm); } - else { - + else + { +#warning JT809VehiclePositionProperties_2019 } } } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1301.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1301.cs index 512c8de..339e299 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1301.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1301.cs @@ -30,14 +30,11 @@ namespace JT809.Protocol.SubMessageBody public string ResponderTel { get; set; } /// /// 查岗对象的ID + /// 2013:12位 + /// 2019:20位 /// public string ObjectID { get; set; } /// - /// 查岗对象的ID - /// 20位 - /// - public string ObjectID_2019 { get; set; } - /// /// 对应平台查岗请求消息源子业务类型标识 /// public ushort SourceDataType { get; set; } @@ -69,7 +66,7 @@ namespace JT809.Protocol.SubMessageBody else { value.Responder = reader.ReadString(16); value.ResponderTel = reader.ReadString(20); - value.ObjectID_2019 = reader.ReadString(20); + value.ObjectID = reader.ReadString(20); value.SourceDataType = reader.ReadUInt16(); value.SourceMsgSn = reader.ReadUInt32(); } @@ -89,7 +86,7 @@ namespace JT809.Protocol.SubMessageBody else { writer.WriteStringPadRight(value.Responder, 16); writer.WriteStringPadRight(value.ResponderTel, 20); - writer.WriteStringPadRight(value.ObjectID_2019, 20); + writer.WriteStringPadRight(value.ObjectID, 20); writer.WriteUInt16(value.SourceDataType); writer.WriteUInt32(value.SourceMsgSn); } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs index 362af58..6471feb 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1402.cs @@ -77,7 +77,8 @@ namespace JT809.Protocol.SubMessageBody { value.WarnSrc = (JT809WarnSrc)reader.ReadByte(); } - else { + else + { value.SourcePlatformId = reader.ReadArray(11).ToArray(); } value.WarnType = (JT809WarnType)reader.ReadUInt16(); @@ -107,7 +108,8 @@ namespace JT809.Protocol.SubMessageBody { writer.WriteByte((byte)value.WarnSrc); } - else { + else + { writer.WriteArray(value.SourcePlatformId); } writer.WriteUInt16((ushort)value.WarnType); @@ -116,7 +118,8 @@ namespace JT809.Protocol.SubMessageBody { writer.WriteUInt32(value.InfoID); } - else { + else + { writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteStringPadRight(value.VehicleNo,21); diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1403.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1403.cs index 3eb7c35..c328c72 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1403.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1400_0x1403.cs @@ -81,7 +81,8 @@ namespace JT809.Protocol.SubMessageBody value.InfoID = reader.ReadUInt32(); value.Result = (JT809_0x1403_Result)reader.ReadByte(); } - else { + else + { value.SourcePlatformId = reader.ReadArray(11).ToArray(); value.WarnType = (JT809WarnType)reader.ReadUInt16(); value.WarnTime = reader.ReadUTCDateTime(); @@ -105,7 +106,8 @@ namespace JT809.Protocol.SubMessageBody writer.WriteUInt32(value.InfoID); writer.WriteByte((byte)value.Result); } - else { + else + { writer.WriteArray(value.SourcePlatformId); writer.WriteUInt16((ushort)value.WarnType); writer.WriteUTCDateTime(value.WarnTime); @@ -119,7 +121,6 @@ namespace JT809.Protocol.SubMessageBody writer.Skip(4, out int lengthPosition); writer.WriteString(value.InfoContent); writer.WriteInt32Return(writer.GetCurrentPosition() - lengthPosition - 4, lengthPosition); - } } } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1503.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1503.cs index 3340f56..5caaa4d 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1503.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1503.cs @@ -45,7 +45,6 @@ namespace JT809.Protocol.SubMessageBody { value.MsgID = reader.ReadUInt32(); } - value.Result = (JT809_0x1503_Result)reader.ReadByte(); return value; } diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs index 4e06a61..6c1eb3d 100644 --- a/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs +++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs @@ -47,7 +47,6 @@ namespace JT809.Protocol.SubMessageBody value.CommandType = (JT809CommandType)reader.ReadByte(); value.TraveldataLength = reader.ReadUInt32(); value.TraveldataInfo = reader.ReadString((int)value.TraveldataLength); - return value; }