From bc7db435d5bf901a983a61b231f7457c9a332493 Mon Sep 17 00:00:00 2001 From: waterliu99 Date: Sun, 19 Jan 2020 10:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0jt808json=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MessageBody/JT808_0x8800Test.cs | 34 ++++++++++++++----- .../MessageBody/JT808_0x8801Test.cs | 6 ++++ .../MessageBody/JT808_0x8802Test.cs | 6 ++++ .../MessageBody/JT808_0x8803Test.cs | 6 ++++ .../MessageBody/JT808_0x8804Test.cs | 6 ++++ .../MessageBody/JT808_0x8805Test.cs | 6 ++++ .../MessageBody/JT808_0x8900Test.cs | 6 ++++ .../MessageBody/JT808_0x8A00Test.cs | 6 ++++ .../Extensions/JT808HexExtensions.cs | 2 +- .../MessageBody/JT808_0x8800.cs | 2 +- .../MessageBody/JT808_0x8805.cs | 2 +- .../MessageBody/JT808_0x8A00.cs | 2 +- 12 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8800Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8800Test.cs index 74016c4..0ddc96a 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8800Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8800Test.cs @@ -1,4 +1,5 @@ -using JT808.Protocol.Extensions; +using JT808.Protocol.Enums; +using JT808.Protocol.Extensions; using JT808.Protocol.MessageBody; using Xunit; @@ -10,23 +11,40 @@ namespace JT808.Protocol.Test.MessageBody [Fact] public void Test1() { - JT808_0x8800 jT808_0X8800 = new JT808_0x8800 + JT808Package jT808Package = new JT808Package { - MultimediaId = 129, - RetransmitPackageIds = new byte[] { 0x01, 0x02, 0x03, 0x04 } + Header = new JT808Header + { + MsgId= (ushort)JT808MsgId.多媒体数据上传应答, + TerminalPhoneNo="123456789", + }, + Bodies = new JT808_0x8800 + { + MultimediaId = 129, + RetransmitPackageIds = new byte[] { 0x01, 0x02, 0x03, 0x04 } + } + }; - string hex = JT808Serializer.Serialize(jT808_0X8800).ToHexString(); - Assert.Equal("000000810201020304", hex); + string hex = JT808Serializer.Serialize(jT808Package).ToHexString(); + Assert.Equal("7E8800000900012345678900010000008102010203048E7E", hex); } [Fact] public void Test2() { - byte[] bytes = "000000810201020304".ToHexBytes(); - JT808_0x8800 jT808_0X8800 = JT808Serializer.Deserialize(bytes); + byte[] bytes = "7E8800000900012345678900010000008102010203048E7E".ToHexBytes(); + var jt808Package = JT808Serializer.Deserialize(bytes); + JT808_0x8800 jT808_0X8800 = jt808Package.Bodies as JT808_0x8800; Assert.Equal((uint)129, jT808_0X8800.MultimediaId); Assert.Equal(2, jT808_0X8800.RetransmitPackageCount); Assert.Equal(new byte[] { 0x01, 0x02, 0x03, 0x04 }, jT808_0X8800.RetransmitPackageIds); } + + [Fact] + public void Test3() + { + byte[] bytes = "7E8800000900012345678900010000008102010203048E7E".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8801Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8801Test.cs index fa2c576..acf185a 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8801Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8801Test.cs @@ -43,5 +43,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal(9, jT808_0X8801.VideoQuality); Assert.Equal(2686, jT808_0X8801.VideoTime); } + [Fact] + public void Test3() + { + byte[] bytes = "8000000A7E010809EB7E78F5".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8802Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8802Test.cs index 9afb41f..5ef2f47 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8802Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8802Test.cs @@ -35,5 +35,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal(DateTime.Parse("2018-11-16 21:00:08"), jT808_0X8802.StartTime); Assert.Equal(DateTime.Parse("2018-11-16 22:00:08"), jT808_0X8802.EndTime); } + [Fact] + public void Test3() + { + byte[] bytes = "027B03181116210008181116220008".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8803Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8803Test.cs index 3bb3d9b..a3fd42e 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8803Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8803Test.cs @@ -37,5 +37,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal(DateTime.Parse("2018-11-16 22:00:21"), jT808_0X8803.StartTime); Assert.Equal(DateTime.Parse("2018-11-16 23:00:21"), jT808_0X8803.EndTime); } + [Fact] + public void Test3() + { + byte[] bytes = "00800018111622002118111623002101".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8804Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8804Test.cs index 5f74506..a9878fe 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8804Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8804Test.cs @@ -33,5 +33,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal(JT808RecordSave.实时上传, jT808_0X8804.RecordSave); Assert.Equal(1, jT808_0X8804.AudioSampleRate); } + [Fact] + public void Test3() + { + byte[] bytes = "00001E0001".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8805Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8805Test.cs index a5787b0..24c9e84 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8805Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8805Test.cs @@ -27,5 +27,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal(Enums.JT808MultimediaDeleted.保留.ToByteValue(), jT808_0X8805.MultimediaDeleted); Assert.Equal((uint)10000, jT808_0X8805.MultimediaId); } + [Fact] + public void Test3() + { + byte[] bytes = "0000271000".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8900Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8900Test.cs index e539c1c..7763816 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8900Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8900Test.cs @@ -44,5 +44,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal((uint)12345, jT808_0X8900_Test_BodiesImpl.Id); Assert.Equal(0x01, jT808_0X8900_Test_BodiesImpl.Sex); } + [Fact] + public void Test3() + { + byte[] bytes = "0B0000303901".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8A00Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8A00Test.cs index 450dc49..a473f69 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8A00Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8A00Test.cs @@ -36,5 +36,11 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal((uint)128, jT808_0X8A00.E); Assert.Equal(N, jT808_0X8A00.N); } + [Fact] + public void Test3() + { + byte[] bytes = "00000080000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F".ToHexBytes(); + string json = JT808Serializer.Analyze(bytes); + } } } diff --git a/src/JT808.Protocol/Extensions/JT808HexExtensions.cs b/src/JT808.Protocol/Extensions/JT808HexExtensions.cs index 5d5ad72..055e494 100644 --- a/src/JT808.Protocol/Extensions/JT808HexExtensions.cs +++ b/src/JT808.Protocol/Extensions/JT808HexExtensions.cs @@ -71,7 +71,7 @@ namespace JT808.Protocol.Extensions return hex; } - public static string ReadNumber(this byte value, string format = "X1") + public static string ReadNumber(this byte value, string format = "X2") { return value.ToString(format); } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8800.cs b/src/JT808.Protocol/MessageBody/JT808_0x8800.cs index d9ddf83..bb219ab 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x8800.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x8800.cs @@ -59,7 +59,7 @@ namespace JT808.Protocol.MessageBody ReadOnlySpan tmp = value.RetransmitPackageIds; for(int i=0; i< value.RetransmitPackageCount; i++) { - writer.WriteString($"ID{i+1}", tmp.Slice(i * 2, 2).ToArray().ToHexString()); + writer.WriteStringValue($"{tmp.Slice(i*2 , 2).ToArray().ToHexString()}"); } writer.WriteEndArray(); } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8805.cs b/src/JT808.Protocol/MessageBody/JT808_0x8805.cs index dd8eed8..5fd70b8 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x8805.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x8805.cs @@ -43,7 +43,7 @@ namespace JT808.Protocol.MessageBody jT808_0X8805.MultimediaId = reader.ReadUInt32(); jT808_0X8805.MultimediaDeleted = reader.ReadByte(); writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]多媒体ID", jT808_0X8805.MultimediaId); - writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]删除标志", jT808_0X8805.MultimediaDeleted); + writer.WriteNumber($"[{jT808_0X8805.MultimediaDeleted.ReadNumber()}]删除标志", jT808_0X8805.MultimediaDeleted); } } } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8A00.cs b/src/JT808.Protocol/MessageBody/JT808_0x8A00.cs index 57a032a..56fc9ea 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x8A00.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x8A00.cs @@ -50,7 +50,7 @@ namespace JT808.Protocol.MessageBody jT808_0X8A00.E = reader.ReadUInt32(); jT808_0X8A00.N = reader.ReadArray(128).ToArray(); writer.WriteNumber($"[{jT808_0X8A00.E.ReadNumber()}]RSA公钥e", jT808_0X8A00.E); - writer.WriteString($"RSA公钥n", jT808_0X8A00.N.ToHexString()); + writer.WriteString($"RSA公钥N", jT808_0X8A00.N.ToHexString()); } } }