From dc7c1b327176918d0158ef9b0af2f47e874f2633 Mon Sep 17 00:00:00 2001 From: waterliu99 Date: Sat, 6 Nov 2021 15:28:11 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=E4=BB=A5=E6=8C=87=E5=AE=9A=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E7=89=88=E6=9C=AC=E4=B8=BA=E4=B8=BB=EF=BC=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=87=AA=E5=B8=A6=E7=89=88=E6=9C=AC=E6=A0=87=E8=AF=86?= =?UTF-8?q?=E4=B8=BA=E8=BE=85=E8=A7=A3=E6=9E=90=E5=8D=8F=E8=AE=AE=202.?= =?UTF-8?q?=E4=BC=98=E5=8C=96808=E5=8D=8F=E8=AE=AE=E5=A4=B4=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E6=96=B9=E6=B3=95=EF=BC=8C=E5=85=BC=E5=AE=B9?= =?UTF-8?q?2013/2019=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../MessageBody/JT808_0x8104Test.cs | 19 +++++++ src/JT808.Protocol/JT808HeaderPackage.cs | 57 +++++++------------ src/JT808.Protocol/JT808Package.cs | 31 +--------- 4 files changed, 43 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 99d9c94..188174f 100644 --- a/README.md +++ b/README.md @@ -551,7 +551,7 @@ serviceDescriptors1.AddJT808Configure() | :---: | :---: | :---: | :---: | :---| | 1 | 0x1210 | √ | √ | 报警附件信息消息 | | 2 | 0x1211 | √ | √ | 文件信息上传 | -| 3 | 0x1212 | √ | √ | 文件上传完成消息 | +| 3 | 0x1212 | √ | √ | 文件上传完成消息 | | 4 | 0x9208 | √ | √ | 报警附件上传指令 | | 5 | 0x9212 | √ | √ | 文件上传完成消息应答 | | 6 | 0x1FC4 | √ | √ | 终端升级进度上报 | diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8104Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8104Test.cs index 54a3a9a..8b5e05c 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x8104Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8104Test.cs @@ -32,5 +32,24 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal("12345678900", jT808Package.Header.TerminalPhoneNo); Assert.Null(jT808Package.Bodies); } + + [Fact] + public void Test3() + { + //用户示例 + var bytes = "7E81040000010000000001341990550700016B7E".ToHexBytes(); + var jT808Package = JT808Serializer.Deserialize(bytes, Enums.JT808Version.JTT2019); + var jT808HeaderPackage = JT808Serializer.HeaderDeserialize(bytes, Enums.JT808Version.JTT2019); + + + //demo示例 + var data2013 = JT808.Protocol.Enums.JT808MsgId.查询终端参数.Create("12345678900"); + var hex = JT808Serializer.Serialize(data2013, Enums.JT808Version.JTT2019); + + var jT808HeaderPackage1= JT808Serializer.HeaderDeserialize(hex, Enums.JT808Version.JTT2019); + Assert.Equal("12345678900", jT808HeaderPackage1.Header.TerminalPhoneNo); + var jT808Package1 = JT808Serializer.Deserialize(hex, Enums.JT808Version.JTT2019); + Assert.Equal("12345678900", jT808Package1.Header.TerminalPhoneNo); + } } } diff --git a/src/JT808.Protocol/JT808HeaderPackage.cs b/src/JT808.Protocol/JT808HeaderPackage.cs index 886024f..9ce4fc9 100644 --- a/src/JT808.Protocol/JT808HeaderPackage.cs +++ b/src/JT808.Protocol/JT808HeaderPackage.cs @@ -33,33 +33,7 @@ namespace JT808.Protocol /// /// 808版本号 /// - public JT808Version Version - { - get { - if (Header != null) - { - try - { - if (Header.MessageBodyProperty.VersionFlag) - { - return JT808Version.JTT2019; - } - else - { - return JT808Version.JTT2013; - } - } - catch - { - return JT808Version.JTT2013; - } - } - else - { - return JT808Version.JTT2013; - } - } - } + public JT808Version Version { get; set; } /// /// 原数据 /// @@ -90,21 +64,30 @@ namespace JT808.Protocol ushort messageBodyPropertyValue = reader.ReadUInt16(); // 3.2.1.解包消息体属性 this.Header.MessageBodyProperty = new JT808HeaderMessageBodyProperty(messageBodyPropertyValue); - if (this.Header.MessageBodyProperty.VersionFlag) + if (reader.Version == JT808Version.JTT2013Force) { - //2019版本 - // 3.3.读取协议版本号 - this.Header.ProtocolVersion = reader.ReadByte(); - // 3.4.读取终端手机号 - this.Header.TerminalPhoneNo = reader.ReadBCD(20, config.Trim); - reader.Version = JT808Version.JTT2019; + this.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); + reader.Version = JT808Version.JTT2013; } else { - //2013版本 - // 3.3.读取终端手机号 - this.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); + if (reader.Version == JT808Version.JTT2019 || this.Header.MessageBodyProperty.VersionFlag) + { + //2019版本 + // 3.3.读取协议版本号 + this.Header.ProtocolVersion = reader.ReadByte(); + // 3.4.读取终端手机号 + this.Header.TerminalPhoneNo = reader.ReadBCD(20, config.Trim); + reader.Version = JT808Version.JTT2019; + } + else + { + //2013版本 + // 3.3.读取终端手机号 + this.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); + } } + this.Version = reader.Version; // 3.4.读取消息流水号 this.Header.MsgNum = reader.ReadUInt16(); // 3.5.判断有无分包 diff --git a/src/JT808.Protocol/JT808Package.cs b/src/JT808.Protocol/JT808Package.cs index 992a34d..a1c27b7 100644 --- a/src/JT808.Protocol/JT808Package.cs +++ b/src/JT808.Protocol/JT808Package.cs @@ -50,34 +50,7 @@ namespace JT808.Protocol /// /// 808版本号 /// - public JT808Version Version - { - get - { - if (Header != null) - { - try - { - if (Header.MessageBodyProperty.VersionFlag) - { - return JT808Version.JTT2019; - } - else - { - return JT808Version.JTT2013; - } - } - catch - { - return JT808Version.JTT2013; - } - } - else - { - return JT808Version.JTT2013; - } - } - } + public JT808Version Version { get; set; } /// /// /// @@ -125,6 +98,7 @@ namespace JT808.Protocol jT808Package.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); } } + jT808Package.Version = reader.Version; // 3.4.读取消息流水号 jT808Package.Header.MsgNum = reader.ReadUInt16(); // 3.5.判断有无分包 @@ -200,6 +174,7 @@ namespace JT808.Protocol // 2.4.终端手机号 writer.WriteBCD(value.Header.TerminalPhoneNo, 20); writer.Version = JT808Version.JTT2019; + value.Header.MessageBodyProperty.VersionFlag = true; } else {