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 {