From 9141e72e1b31cef7f7e324abee2b2d7bd4faf638 Mon Sep 17 00:00:00 2001 From: waterliu99 Date: Thu, 24 Jun 2021 15:04:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B38103=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=8D=8F=E8=AE=AE=E6=9C=AA=E8=83=BD=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=A7=A3=E6=9E=90=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MessageBody/JT808_0x0104Test.cs | 16 ++++++++++++++++ src/JT808.Protocol/MessageBody/JT808_0x0104.cs | 8 +++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0104Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0104Test.cs index 4167e1f..234eac7 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0104Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0104Test.cs @@ -143,5 +143,21 @@ namespace JT808.Protocol.Test.MessageBody } } } + [Fact] + public void Test2_2() + { + byte[] bytes = "7E010400C604052458039503D800020100000077BE09010101002D1400000064000500141400000320001F020101002D0F00000064000500191900000840001F030101002D0F00000064000500191900000840001F040101002D0F00000064000500191900000840001F050101002D0F00000064010500191900000840001F060101002D0F00000064000500191900000840001F070101002D0F000000640103001919000004CE001F080101002D0F00000064000500191900000840001F090101000F0F000000C8010500191900000400001F127E".ToHexBytes(); + JT808Package jT808_0X8104 = JT808Serializer.Deserialize(bytes); + Assert.Equal(Enums.JT808MsgId.查询终端参数应答.ToUInt16Value(), jT808_0X8104.Header.MsgId); + Assert.Equal(0x03d8, jT808_0X8104.Header.MsgNum); + Assert.Equal("40524580395", jT808_0X8104.Header.TerminalPhoneNo); + + JT808_0x0104 JT808Bodies = (JT808_0x0104)jT808_0X8104.Bodies; + Assert.Equal(0x0002, JT808Bodies.MsgNum); + Assert.Equal(1, JT808Bodies.AnswerParamsCount); + Assert.Null(JT808Bodies.ParamList); + + + } } } \ No newline at end of file diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0104.cs b/src/JT808.Protocol/MessageBody/JT808_0x0104.cs index e44803c..9c312e7 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0104.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0104.cs @@ -57,9 +57,15 @@ namespace JT808.Protocol.MessageBody } else { - jT808_0x0104.ParamList = new List { JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config) }; + jT808_0x0104.ParamList = new List { JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config) }; } } + else { + //对于未能解析的自定义项,过滤其长度,以保证后续解析正常 + reader.Skip(4);//跳过参数id长度 + var len = reader.ReadByte();//获取协议长度 + reader.Skip(len);//跳过协议内容 + } } return jT808_0x0104; }