diff --git a/src/JT809.Protocol/Formatters/JT809HeaderFormatter.cs b/src/JT809.Protocol/Formatters/JT809HeaderFormatter.cs
index b18233e..aea0357 100644
--- a/src/JT809.Protocol/Formatters/JT809HeaderFormatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809HeaderFormatter.cs
@@ -15,15 +15,17 @@ namespace JT809.Protocol.Formatters
public JT809Header Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
{
- JT809Header jT809Header = new JT809Header();
- jT809Header.MsgLength = reader.ReadUInt32();
- jT809Header.MsgSN = reader.ReadUInt32();
- jT809Header.BusinessType = reader.ReadUInt16();
- jT809Header.MsgGNSSCENTERID = reader.ReadUInt32();
- jT809Header.Version = new JT809Header_Version(reader.ReadArray(JT809Header_Version.FixedByteLength));
- jT809Header.EncryptFlag = (JT809Header_Encrypt)reader.ReadByte();
- jT809Header.EncryptKey = reader.ReadUInt32();
- jT809Header.Time = reader.ReadUTCDateTime();
+ JT809Header jT809Header = new JT809Header
+ {
+ MsgLength = reader.ReadUInt32(),
+ MsgSN = reader.ReadUInt32(),
+ BusinessType = reader.ReadUInt16(),
+ MsgGNSSCENTERID = reader.ReadUInt32(),
+ Version = new JT809Header_Version(reader.ReadArray(JT809Header_Version.FixedByteLength)),
+ EncryptFlag = (JT809Header_Encrypt)reader.ReadByte(),
+ EncryptKey = reader.ReadUInt32(),
+ Time = reader.ReadUTCDateTime()
+ };
return jT809Header;
}
diff --git a/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs b/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
index 3004c92..47391c1 100644
--- a/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
@@ -19,12 +19,14 @@ namespace JT809.Protocol.Formatters
// 1.2. 验证校验码
if (!reader.CheckXorCodeVali)
{
- throw new JT809Exception(JT809ErrorCode.CRC16CheckInvalid, $"{reader.CalculateCheckXorCode.ToString()}!={reader.RealCheckXorCode.ToString()}");
+ throw new JT809Exception(JT809ErrorCode.CRC16CheckInvalid, $"{reader.CalculateCheckXorCode}!={reader.RealCheckXorCode}");
}
}
- JT809HeaderPackage jT809Package = new JT809HeaderPackage();
- // 2.读取起始头
- jT809Package.BeginFlag = reader.ReadStart();
+ JT809HeaderPackage jT809Package = new JT809HeaderPackage
+ {
+ // 2.读取起始头
+ BeginFlag = reader.ReadStart()
+ };
// 3.初始化消息头
try
{
@@ -32,7 +34,7 @@ namespace JT809.Protocol.Formatters
}
catch (Exception ex)
{
- throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex);
+ throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex);
}
// 5.数据体处理
// 5.1 判断是否有数据体(总长度-固定长度)> 0
@@ -56,7 +58,7 @@ namespace JT809.Protocol.Formatters
}
catch (Exception ex)
{
- throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex);
+ throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex);
}
}
jT809Package.CRCCode = reader.CalculateCheckXorCode;
diff --git a/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs b/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
index 15a6e0b..01e91b8 100644
--- a/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
@@ -23,12 +23,14 @@ namespace JT809.Protocol.Formatters
// 1.2. 验证校验码
if (!reader.CheckXorCodeVali)
{
- throw new JT809Exception(JT809ErrorCode.CRC16CheckInvalid, $"{reader.CalculateCheckXorCode.ToString()}!={reader.RealCheckXorCode.ToString()}");
+ throw new JT809Exception(JT809ErrorCode.CRC16CheckInvalid, $"{reader.CalculateCheckXorCode}!={reader.RealCheckXorCode}");
}
}
- JT809Package jT809Package = new JT809Package();
- // 2.读取起始头
- jT809Package.BeginFlag = reader.ReadStart();
+ JT809Package jT809Package = new JT809Package
+ {
+ // 2.读取起始头
+ BeginFlag = reader.ReadStart()
+ };
// 3.初始化消息头
try
{
@@ -36,7 +38,7 @@ namespace JT809.Protocol.Formatters
}
catch (Exception ex)
{
- throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex);
+ throw new JT809Exception(JT809ErrorCode.HeaderParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex);
}
// 5.数据体处理
// 5.1 判断是否有数据体(总长度-固定长度)> 0
@@ -69,7 +71,7 @@ namespace JT809.Protocol.Formatters
}
catch (Exception ex)
{
- throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength().ToString()}", ex);
+ throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{reader.ReadCurrentRemainContentLength()}", ex);
}
}
jT809Package.CRCCode = reader.CalculateCheckXorCode;
@@ -98,6 +100,8 @@ namespace JT809.Protocol.Formatters
writer.WriteByte((byte)value.Header.EncryptFlag);
// 2.7.数据加密密钥
writer.WriteUInt32(value.Header.EncryptKey);
+ // 2.8 发送消息时系统UTC时间
+ writer.WriteUTCDateTime(value.Header.Time);
// 3.写入数据体
// 3.1.记录当前开始位置
int startIndex = writer.GetCurrentPosition();
diff --git a/src/JT809.Protocol/Formatters/MessageBodyFormatters/JT809_0x1001_Formatter.cs b/src/JT809.Protocol/Formatters/MessageBodyFormatters/JT809_0x1001_Formatter.cs
index d89c482..c637274 100644
--- a/src/JT809.Protocol/Formatters/MessageBodyFormatters/JT809_0x1001_Formatter.cs
+++ b/src/JT809.Protocol/Formatters/MessageBodyFormatters/JT809_0x1001_Formatter.cs
@@ -15,12 +15,14 @@ namespace JT809.Protocol.Formatters.MessageBodyFormatters
public JT809_0x1001 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
{
- JT809_0x1001 jT809_0X1001 = new JT809_0x1001();
- jT809_0X1001.UserId = reader.ReadUInt32();
- jT809_0X1001.Password = reader.ReadString(8);
- jT809_0X1001.MsgGNSSCENTERID = reader.ReadUInt32();
- jT809_0X1001.DownLinkIP = reader.ReadString(32);
- jT809_0X1001.DownLinkPort = reader.ReadUInt16();
+ JT809_0x1001 jT809_0X1001 = new JT809_0x1001
+ {
+ UserId = reader.ReadUInt32(),
+ Password = reader.ReadString(8),
+ MsgGNSSCENTERID = reader.ReadUInt32(),
+ DownLinkIP = reader.ReadString(32),
+ DownLinkPort = reader.ReadUInt16()
+ };
return jT809_0X1001;
}
diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj
index 91a34f3..f59742d 100644
--- a/src/JT809.Protocol/JT809.Protocol.csproj
+++ b/src/JT809.Protocol/JT809.Protocol.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT809
https://github.com/SmallChi/JT809/blob/master/LICENSE
true
- 2.1.4
+ 2.1.5
LICENSE
diff --git a/src/JT809.Protocol/JT809Header.cs b/src/JT809.Protocol/JT809Header.cs
index 944e594..9d8bbef 100644
--- a/src/JT809.Protocol/JT809Header.cs
+++ b/src/JT809.Protocol/JT809Header.cs
@@ -12,14 +12,14 @@ namespace JT809.Protocol
{
///
/// 固定为22个字节长度
- /// MSG LENGTH + MSG_SN + MSG_ID + MSG_GNSSCENTERID + VERSION_FLAG + ENCRYPT_FLAG + ENCRYPT_KEY
- /// 4 + 4 + 2 + 4 + 3 + 1 + 4 = 22
+ /// MSG LENGTH + MSG_SN + MSG_ID + MSG_GNSSCENTERID + VERSION_FLAG + ENCRYPT_FLAG + ENCRYPT_KEY + TIME
+ /// 4 + 4 + 2 + 4 + 3 + 1 + 4 + 8 = 30
///
- public const int FixedByteLength = 22;
+ public const int FixedByteLength = 30;
///
/// 数据长度(包括头标识、数据头、数据体和尾标识)
/// 头标识 + 数据头 + 数据体 + 尾标识
- /// 1 + 22 + n + 1
+ /// 1 + 30 + n + 1
///
public uint MsgLength { get; set; }
///