2.优化808协议头序列化方法,兼容2013/2019等tags/v2.4.5
@@ -551,7 +551,7 @@ serviceDescriptors1.AddJT808Configure() | |||
| :---: | :---: | :---: | :---: | :---| | |||
| 1 | 0x1210 | √ | √ | 报警附件信息消息 | | |||
| 2 | 0x1211 | √ | √ | 文件信息上传 | | |||
| 3 | 0x1212 | √ | √ | 文件上传完成消息 | | |||
| 3 | 0x1212 | √ | √ | 文件上传完成消息 | | |||
| 4 | 0x9208 | √ | √ | 报警附件上传指令 | | |||
| 5 | 0x9212 | √ | √ | 文件上传完成消息应答 | | |||
| 6 | 0x1FC4 | √ | √ | 终端升级进度上报 | | |||
@@ -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<JT808Package>(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); | |||
} | |||
} | |||
} |
@@ -33,33 +33,7 @@ namespace JT808.Protocol | |||
/// <summary> | |||
/// 808版本号 | |||
/// </summary> | |||
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; } | |||
/// <summary> | |||
/// 原数据 | |||
/// </summary> | |||
@@ -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.判断有无分包 | |||
@@ -50,34 +50,7 @@ namespace JT808.Protocol | |||
/// <summary> | |||
/// 808版本号 | |||
/// </summary> | |||
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; } | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
@@ -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 | |||
{ | |||