2.优化808协议头序列化方法,兼容2013/2019等tags/v2.4.5
@@ -551,7 +551,7 @@ serviceDescriptors1.AddJT808Configure() | |||||
| :---: | :---: | :---: | :---: | :---| | | :---: | :---: | :---: | :---: | :---| | ||||
| 1 | 0x1210 | √ | √ | 报警附件信息消息 | | | 1 | 0x1210 | √ | √ | 报警附件信息消息 | | ||||
| 2 | 0x1211 | √ | √ | 文件信息上传 | | | 2 | 0x1211 | √ | √ | 文件信息上传 | | ||||
| 3 | 0x1212 | √ | √ | 文件上传完成消息 | | |||||
| 3 | 0x1212 | √ | √ | 文件上传完成消息 | | |||||
| 4 | 0x9208 | √ | √ | 报警附件上传指令 | | | 4 | 0x9208 | √ | √ | 报警附件上传指令 | | ||||
| 5 | 0x9212 | √ | √ | 文件上传完成消息应答 | | | 5 | 0x9212 | √ | √ | 文件上传完成消息应答 | | ||||
| 6 | 0x1FC4 | √ | √ | 终端升级进度上报 | | | 6 | 0x1FC4 | √ | √ | 终端升级进度上报 | | ||||
@@ -32,5 +32,24 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal("12345678900", jT808Package.Header.TerminalPhoneNo); | Assert.Equal("12345678900", jT808Package.Header.TerminalPhoneNo); | ||||
Assert.Null(jT808Package.Bodies); | 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> | /// <summary> | ||||
/// 808版本号 | /// 808版本号 | ||||
/// </summary> | /// </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> | ||||
/// 原数据 | /// 原数据 | ||||
/// </summary> | /// </summary> | ||||
@@ -90,21 +64,30 @@ namespace JT808.Protocol | |||||
ushort messageBodyPropertyValue = reader.ReadUInt16(); | ushort messageBodyPropertyValue = reader.ReadUInt16(); | ||||
// 3.2.1.解包消息体属性 | // 3.2.1.解包消息体属性 | ||||
this.Header.MessageBodyProperty = new JT808HeaderMessageBodyProperty(messageBodyPropertyValue); | 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 | 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.读取消息流水号 | // 3.4.读取消息流水号 | ||||
this.Header.MsgNum = reader.ReadUInt16(); | this.Header.MsgNum = reader.ReadUInt16(); | ||||
// 3.5.判断有无分包 | // 3.5.判断有无分包 | ||||
@@ -50,34 +50,7 @@ namespace JT808.Protocol | |||||
/// <summary> | /// <summary> | ||||
/// 808版本号 | /// 808版本号 | ||||
/// </summary> | /// </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> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
@@ -125,6 +98,7 @@ namespace JT808.Protocol | |||||
jT808Package.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); | jT808Package.Header.TerminalPhoneNo = reader.ReadBCD(config.TerminalPhoneNoLength, config.Trim); | ||||
} | } | ||||
} | } | ||||
jT808Package.Version = reader.Version; | |||||
// 3.4.读取消息流水号 | // 3.4.读取消息流水号 | ||||
jT808Package.Header.MsgNum = reader.ReadUInt16(); | jT808Package.Header.MsgNum = reader.ReadUInt16(); | ||||
// 3.5.判断有无分包 | // 3.5.判断有无分包 | ||||
@@ -200,6 +174,7 @@ namespace JT808.Protocol | |||||
// 2.4.终端手机号 | // 2.4.终端手机号 | ||||
writer.WriteBCD(value.Header.TerminalPhoneNo, 20); | writer.WriteBCD(value.Header.TerminalPhoneNo, 20); | ||||
writer.Version = JT808Version.JTT2019; | writer.Version = JT808Version.JTT2019; | ||||
value.Header.MessageBodyProperty.VersionFlag = true; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||