@@ -64,7 +64,7 @@ JT808Package jT808Package = new JT808Package(); | |||||
jT808Package.Header = new JT808Header | jT808Package.Header = new JT808Header | ||||
{ | { | ||||
MsgId = Enums.JT808MsgId._0x0200, | |||||
MsgId = (ushort)JT808.Protocol.Enums.JT808MsgId._0x0200, | |||||
ManualMsgNum = 126, | ManualMsgNum = 126, | ||||
TerminalPhoneNo = "123456789012" | TerminalPhoneNo = "123456789012" | ||||
}; | }; | ||||
@@ -64,7 +64,7 @@ JT808Package jT808Package = new JT808Package(); | |||||
jT808Package.Header = new JT808Header | jT808Package.Header = new JT808Header | ||||
{ | { | ||||
MsgId = Enums.JT808MsgId._0x0200, | |||||
MsgId = (ushort)JT808.Protocol.Enums.JT808MsgId._0x0200, | |||||
ManualMsgNum = 126, | ManualMsgNum = 126, | ||||
TerminalPhoneNo = "123456789012" | TerminalPhoneNo = "123456789012" | ||||
}; | }; | ||||
@@ -1,14 +1,14 @@ | |||||
<Project> | <Project> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFrameworks>net7.0;</TargetFrameworks> | |||||
<LangVersion>11.0</LangVersion> | |||||
<TargetFrameworks>net7.0;netstandard2.0;</TargetFrameworks> | |||||
<LangVersion>latest</LangVersion> | |||||
<Copyright>Copyright 2018.</Copyright> | <Copyright>Copyright 2018.</Copyright> | ||||
<Authors>SmallChi(Koike)</Authors> | <Authors>SmallChi(Koike)</Authors> | ||||
<RepositoryUrl>https://github.com/SmallChi/JT808</RepositoryUrl> | <RepositoryUrl>https://github.com/SmallChi/JT808</RepositoryUrl> | ||||
<PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl> | <PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl> | ||||
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> | <licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> | ||||
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | <license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | ||||
<Version>2.6.1</Version> | |||||
<Version>2.6.2-preview4</Version> | |||||
<ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | ||||
@@ -554,6 +554,11 @@ | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1003.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1003.Description"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1003.Description"> | ||||
<summary> | <summary> | ||||
@@ -593,6 +598,11 @@ | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1005.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1005.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1005.MsgId"> | ||||
<summary> | <summary> | ||||
@@ -657,6 +667,11 @@ | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1205.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1205.MsgNum"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1205.MsgNum"> | ||||
<summary> | <summary> | ||||
流水号 | 流水号 | ||||
@@ -775,6 +790,11 @@ | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1206.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1206.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x1206.MsgId"> | ||||
<summary> | <summary> | ||||
@@ -1536,6 +1556,11 @@ | |||||
实时音视频传输请求 | 实时音视频传输请求 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9101.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9101.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9101.MsgId"> | ||||
<summary> | <summary> | ||||
0x9101 | 0x9101 | ||||
@@ -1618,6 +1643,11 @@ | |||||
音视频实时传输控制 | 音视频实时传输控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9102.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9102.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9102.MsgId"> | ||||
<summary> | <summary> | ||||
0x9102 | 0x9102 | ||||
@@ -1690,6 +1720,11 @@ | |||||
实时音视频传输状态通知 | 实时音视频传输状态通知 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9105.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9105.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9105.MsgId"> | ||||
<summary> | <summary> | ||||
0x9105 | 0x9105 | ||||
@@ -1740,6 +1775,11 @@ | |||||
平台下发远程录像回放请求 | 平台下发远程录像回放请求 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9201.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9201.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9201.MsgId"> | ||||
<summary> | <summary> | ||||
0x9201 | 0x9201 | ||||
@@ -1861,6 +1901,11 @@ | |||||
平台下发远程录像回放控制 | 平台下发远程录像回放控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9202.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9202.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9202.MsgId"> | ||||
<summary> | <summary> | ||||
0x9202 | 0x9202 | ||||
@@ -1933,6 +1978,11 @@ | |||||
查询资源列表 | 查询资源列表 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9205.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9205.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9205.MsgId"> | ||||
<summary> | <summary> | ||||
0x9205 | 0x9205 | ||||
@@ -2017,6 +2067,11 @@ | |||||
文件上传指令 | 文件上传指令 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.MsgId"> | ||||
<summary> | <summary> | ||||
0x9206 | 0x9206 | ||||
@@ -2141,6 +2196,11 @@ | |||||
文件上传控制 | 文件上传控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9207.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9207.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9207.MsgId"> | ||||
<summary> | <summary> | ||||
0x9207 | 0x9207 | ||||
@@ -2190,6 +2250,11 @@ | |||||
云台旋转 | 云台旋转 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9301.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9301.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9301.MsgId"> | ||||
<summary> | <summary> | ||||
0x9301 | 0x9301 | ||||
@@ -2250,6 +2315,11 @@ | |||||
云台调整焦距控制 | 云台调整焦距控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9302.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9302.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9302.MsgId"> | ||||
<summary> | <summary> | ||||
0x9302 | 0x9302 | ||||
@@ -2299,6 +2369,11 @@ | |||||
云台调整光圈控制 | 云台调整光圈控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9303.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9303.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9303.MsgId"> | ||||
<summary> | <summary> | ||||
0x9303 | 0x9303 | ||||
@@ -2348,6 +2423,11 @@ | |||||
云台雨刷控制 | 云台雨刷控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9304.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9304.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9304.MsgId"> | ||||
<summary> | <summary> | ||||
0x9304 | 0x9304 | ||||
@@ -2397,6 +2477,11 @@ | |||||
红外补光控制 | 红外补光控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9305.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9305.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9305.MsgId"> | ||||
<summary> | <summary> | ||||
0x9305 | 0x9305 | ||||
@@ -2447,6 +2532,11 @@ | |||||
云台变倍控制 | 云台变倍控制 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9306.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9306.MsgId"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9306.MsgId"> | ||||
<summary> | <summary> | ||||
0x9306 | 0x9306 | ||||
@@ -56,6 +56,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public string Description => "终端上传音视频属性"; | public string Description => "终端上传音视频属性"; | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -20,6 +20,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public ushort MsgId => 0x1005; | public ushort MsgId => 0x1005; | ||||
/// <summary> | /// <summary> | ||||
/// 起始时间 | /// 起始时间 | ||||
@@ -23,6 +23,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x1205; | public ushort MsgId => 0x1205; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 流水号 | /// 流水号 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgNum { get; set; } | public ushort MsgNum { get; set; } | ||||
@@ -34,6 +38,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 音视频资源列表 | /// 音视频资源列表 | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_0x1205_AVResouce> AVResouces { get; set; } | public List<JT808_0x1205_AVResouce> AVResouces { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
@@ -20,6 +20,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public ushort MsgId => 0x1206; | public ushort MsgId => 0x1206; | ||||
/// <summary> | /// <summary> | ||||
/// 流水号 | /// 流水号 | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "实时音视频传输请求"; | public string Description => "实时音视频传输请求"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9101 | /// 0x9101 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9101; | public ushort MsgId => 0x9101; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "音视频实时传输控制"; | public string Description => "音视频实时传输控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9102 | /// 0x9102 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9102; | public ushort MsgId => 0x9102; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "实时音视频传输状态通知"; | public string Description => "实时音视频传输状态通知"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9105 | /// 0x9105 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9105; | public ushort MsgId => 0x9105; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "平台下发远程录像回放请求"; | public string Description => "平台下发远程录像回放请求"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9201 | /// 0x9201 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9201; | public ushort MsgId => 0x9201; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "平台下发远程录像回放控制"; | public string Description => "平台下发远程录像回放控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9202 | /// 0x9202 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9202; | public ushort MsgId => 0x9202; | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 查询资源列表 | /// 查询资源列表 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "查询资源列表"; | public string Description => "查询资源列表"; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | /// <summary> | ||||
/// 0x9205 | /// 0x9205 | ||||
/// </summary> | /// </summary> | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传指令"; | public string Description => "文件上传指令"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9206 | /// 0x9206 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9206; | public ushort MsgId => 0x9206; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传控制"; | public string Description => "文件上传控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9207 | /// 0x9207 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9207; | public ushort MsgId => 0x9207; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "云台旋转"; | public string Description => "云台旋转"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9301 | /// 0x9301 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9301; | public ushort MsgId => 0x9301; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "云台调整焦距控制"; | public string Description => "云台调整焦距控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9302 | /// 0x9302 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9302; | public ushort MsgId => 0x9302; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "云台调整光圈控制"; | public string Description => "云台调整光圈控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9303 | /// 0x9303 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9303; | public ushort MsgId => 0x9303; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "云台雨刷控制"; | public string Description => "云台雨刷控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9304 | /// 0x9304 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9304; | public ushort MsgId => 0x9304; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "红外补光控制"; | public string Description => "红外补光控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9305 | /// 0x9305 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9305; | public ushort MsgId => 0x9305; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "云台变倍控制"; | public string Description => "云台变倍控制"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 0x9306 | /// 0x9306 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x9306; | public ushort MsgId => 0x9306; | ||||
@@ -860,6 +860,11 @@ | |||||
报警附件信息消息 | 报警附件信息消息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1210.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1210.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | <member name="M:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1210.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | ||||
<summary> | <summary> | ||||
@@ -920,6 +925,11 @@ | |||||
文件信息上传Id | 文件信息上传Id | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1211.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1211.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | <member name="M:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1211.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | ||||
<summary> | <summary> | ||||
@@ -954,6 +964,11 @@ | |||||
文件上传完成消息 | 文件上传完成消息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1212.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1212.FileNameLength"> | <member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x1212.FileNameLength"> | ||||
<summary> | <summary> | ||||
文件名称长度 | 文件名称长度 | ||||
@@ -1740,6 +1755,11 @@ | |||||
Description | Description | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9208.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9208.AttachmentServerIPLength"> | <member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9208.AttachmentServerIPLength"> | ||||
<summary> | <summary> | ||||
服务IP地址长度 | 服务IP地址长度 | ||||
@@ -1815,6 +1835,11 @@ | |||||
文件上传完成消息应答 | 文件上传完成消息应答 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9212.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9212.FileNameLength"> | <member name="P:JT808.Protocol.Extensions.SuBiao.MessageBody.JT808_0x9212.FileNameLength"> | ||||
<summary> | <summary> | ||||
文件名称长度 | 文件名称长度 | ||||
@@ -53,6 +53,10 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | /// <param name="reader"></param> | ||||
/// <param name="writer"></param> | /// <param name="writer"></param> | ||||
/// <param name="config"></param> | /// <param name="config"></param> | ||||
@@ -38,6 +38,10 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | /// <param name="reader"></param> | ||||
/// <param name="writer"></param> | /// <param name="writer"></param> | ||||
/// <param name="config"></param> | /// <param name="config"></param> | ||||
@@ -15,6 +15,10 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传完成消息"; | public string Description => "文件上传完成消息"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 文件名称长度 | /// 文件名称长度 | ||||
/// </summary> | /// </summary> | ||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "报警附件上传指令"; | public string Description => "报警附件上传指令"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 服务IP地址长度 | /// 服务IP地址长度 | ||||
/// </summary> | /// </summary> | ||||
public byte AttachmentServerIPLength { get; set; } | public byte AttachmentServerIPLength { get; set; } | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传完成消息应答"; | public string Description => "文件上传完成消息应答"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 文件名称长度 | /// 文件名称长度 | ||||
/// </summary> | /// </summary> | ||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
@@ -1032,6 +1032,11 @@ | |||||
报警附件信息消息 | 报警附件信息消息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1210.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1210.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | <member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1210.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | ||||
<summary> | <summary> | ||||
@@ -1066,6 +1071,11 @@ | |||||
文件信息上传 | 文件信息上传 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1211.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1211.FileNameLength"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1211.FileNameLength"> | ||||
<summary> | <summary> | ||||
文件名称长度 | 文件名称长度 | ||||
@@ -1126,6 +1136,11 @@ | |||||
文件上传完成消息 | 文件上传完成消息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1212.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1212.FileNameLength"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1212.FileNameLength"> | ||||
<summary> | <summary> | ||||
文件名称长度 | 文件名称长度 | ||||
@@ -1186,6 +1201,11 @@ | |||||
终端升级进度上报 | 终端升级进度上报 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1FC4.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1FC4.MsgId"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x1FC4.MsgId"> | ||||
<summary> | <summary> | ||||
终端升级进度上报 | 终端升级进度上报 | ||||
@@ -2167,6 +2187,11 @@ | |||||
Description | Description | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9208.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9208.AttachmentServerIPLength"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9208.AttachmentServerIPLength"> | ||||
<summary> | <summary> | ||||
服务IP地址长度 | 服务IP地址长度 | ||||
@@ -2242,6 +2267,11 @@ | |||||
文件上传完成消息应答 | 文件上传完成消息应答 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9212.SkipSerialization"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9212.FileNameLength"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x9212.FileNameLength"> | ||||
<summary> | <summary> | ||||
文件名称长度 | 文件名称长度 | ||||
@@ -53,6 +53,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | /// <param name="reader"></param> | ||||
/// <param name="writer"></param> | /// <param name="writer"></param> | ||||
/// <param name="config"></param> | /// <param name="config"></param> | ||||
@@ -15,6 +15,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件信息上传"; | public string Description => "文件信息上传"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 文件名称长度 | /// 文件名称长度 | ||||
/// </summary> | /// </summary> | ||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
@@ -15,6 +15,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传完成消息"; | public string Description => "文件上传完成消息"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 文件名称长度 | /// 文件名称长度 | ||||
/// </summary> | /// </summary> | ||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "终端升级进度上报"; | public string Description => "终端升级进度上报"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端升级进度上报 | /// 终端升级进度上报 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => JT808_YueBiao_MsgId.terminal_upgrade_progress_reported.ToUInt16Value(); | public ushort MsgId => JT808_YueBiao_MsgId.terminal_upgrade_progress_reported.ToUInt16Value(); | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "报警附件上传指令"; | public string Description => "报警附件上传指令"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 服务IP地址长度 | /// 服务IP地址长度 | ||||
/// </summary> | /// </summary> | ||||
public byte AttachmentServerIPLength { get; set; } | public byte AttachmentServerIPLength { get; set; } | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "文件上传完成消息应答"; | public string Description => "文件上传完成消息应答"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 文件名称长度 | /// 文件名称长度 | ||||
/// </summary> | /// </summary> | ||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
public byte Sex { get; set; } | public byte Sex { get; set; } | ||||
public ushort MsgId => 0x9999; | public ushort MsgId => 0x9999; | ||||
public bool SkipSerialization => false; | |||||
public string Description => "自定义消息"; | public string Description => "自定义消息"; | ||||
public override JT808_0x9999 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public override JT808_0x9999 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
@@ -91,6 +91,7 @@ namespace JT808.Protocol.Test.Simples | |||||
/// 0x0001 | /// 0x0001 | ||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0001; | public ushort MsgId => 0x0001; | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | /// <summary> | ||||
/// 终端通用应答 | /// 终端通用应答 | ||||
/// </summary> | /// </summary> | ||||
@@ -151,6 +151,7 @@ namespace JT808.Protocol.Test.Simples | |||||
public ushort MsgId => 0x91; | public ushort MsgId => 0x91; | ||||
public string Description =>"DT1Demo6"; | public string Description =>"DT1Demo6"; | ||||
public bool SkipSerialization => false; | |||||
public override DT1Demo6 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public override DT1Demo6 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
@@ -170,6 +171,7 @@ namespace JT808.Protocol.Test.Simples | |||||
public class DT2Demo6 : JT808MessagePackFormatter<DT2Demo6>,JT808Bodies | public class DT2Demo6 : JT808MessagePackFormatter<DT2Demo6>,JT808Bodies | ||||
{ | { | ||||
public ushort MsgId => 0x91; | public ushort MsgId => 0x91; | ||||
public bool SkipSerialization => false; | |||||
public byte Sex2 { get; set; } | public byte Sex2 { get; set; } | ||||
public ushort Age2 { get; set; } | public ushort Age2 { get; set; } | ||||
@@ -58,7 +58,7 @@ namespace JT808.Protocol.Test.Simples | |||||
public ushort Age1 { get; set; } | public ushort Age1 { get; set; } | ||||
public ushort MsgId => 0x93; | public ushort MsgId => 0x93; | ||||
public bool SkipSerialization => false; | |||||
public string Description => "DT1Demo8"; | public string Description => "DT1Demo8"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -33,7 +33,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.Extensions.S | |||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.Extensions.SuBiao.Test", "JT808.Protocol.Extensions\JT808.Protocol.Extensions.SuBiao.Test\JT808.Protocol.Extensions.SuBiao.Test.csproj", "{BEE2E12D-C123-4682-AB7E-210C2BF564B3}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.Extensions.SuBiao.Test", "JT808.Protocol.Extensions\JT808.Protocol.Extensions.SuBiao.Test\JT808.Protocol.Extensions.SuBiao.Test.csproj", "{BEE2E12D-C123-4682-AB7E-210C2BF564B3}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.Protocol.DependencyInjection", "JT808.Protocol.Extensions\JT808.Protocol.DependencyInjection\JT808.Protocol.DependencyInjection.csproj", "{7EB01F74-DFDB-4733-8F15-5785A9ED7DBD}" | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.DependencyInjection", "JT808.Protocol.Extensions\JT808.Protocol.DependencyInjection\JT808.Protocol.DependencyInjection.csproj", "{7EB01F74-DFDB-4733-8F15-5785A9ED7DBD}" | |||||
EndProject | EndProject | ||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
@@ -4,7 +4,6 @@ namespace JT808.Protocol.Extensions | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t" | |||||
/// </summary> | /// </summary> | ||||
public static partial class JT808BinaryExtensions | public static partial class JT808BinaryExtensions | ||||
{ | { | ||||
@@ -15,7 +14,7 @@ namespace JT808.Protocol.Extensions | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public static string ToHexString(this byte[] source) | public static string ToHexString(this byte[] source) | ||||
{ | { | ||||
return Convert.ToHexString(source, 0, source.Length); | |||||
return HexUtil.DoHexDump(source, 0, source.Length).ToUpper(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -26,7 +25,16 @@ namespace JT808.Protocol.Extensions | |||||
public static byte[] ToHexBytes(this string hexString) | public static byte[] ToHexBytes(this string hexString) | ||||
{ | { | ||||
hexString = hexString.Replace(" ", ""); | hexString = hexString.Replace(" ", ""); | ||||
return Convert.FromHexString(hexString); | |||||
byte[] buf = new byte[hexString.Length / 2]; | |||||
ReadOnlySpan<char> readOnlySpan = hexString.AsSpan(); | |||||
for (int i = 0; i < hexString.Length; i++) | |||||
{ | |||||
if (i % 2 == 0) | |||||
{ | |||||
buf[i / 2] = Convert.ToByte(readOnlySpan.Slice(i, 2).ToString(), 16); | |||||
} | |||||
} | |||||
return buf; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -38,7 +46,7 @@ namespace JT808.Protocol.Extensions | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public static string ReadHexStringLittle(ReadOnlySpan<byte> read, ref int offset, int len) | public static string ReadHexStringLittle(ReadOnlySpan<byte> read, ref int offset, int len) | ||||
{ | { | ||||
string hex = Convert.ToHexString(read.Slice(offset, len)); | |||||
string hex = HexUtil.DoHexDump(read, offset, len); | |||||
offset += len; | offset += len; | ||||
return hex; | return hex; | ||||
} | } | ||||
@@ -189,5 +197,68 @@ namespace JT808.Protocol.Extensions | |||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(8, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(8, '0').AsSpan(); | ||||
} | } | ||||
/// <summary> | |||||
/// ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t" | |||||
/// </summary> | |||||
public static class HexUtil | |||||
{ | |||||
static readonly char[] HexdumpTable = new char[256 * 4]; | |||||
static HexUtil() | |||||
{ | |||||
char[] digits = "0123456789ABCDEF".ToCharArray(); | |||||
for (int i = 0; i < 256; i++) | |||||
{ | |||||
HexdumpTable[i << 1] = digits[(int)((uint)i >> 4 & 0x0F)]; | |||||
HexdumpTable[(i << 1) + 1] = digits[i & 0x0F]; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="buffer"></param> | |||||
/// <param name="fromIndex"></param> | |||||
/// <param name="length"></param> | |||||
/// <returns></returns> | |||||
public static string DoHexDump(ReadOnlySpan<byte> buffer, int fromIndex, int length) | |||||
{ | |||||
if (length == 0) | |||||
{ | |||||
return ""; | |||||
} | |||||
int endIndex = fromIndex + length; | |||||
var buf = new char[length << 1]; | |||||
int srcIdx = fromIndex; | |||||
int dstIdx = 0; | |||||
for (; srcIdx < endIndex; srcIdx++, dstIdx += 2) | |||||
{ | |||||
Array.Copy(HexdumpTable, buffer[srcIdx] << 1, buf, dstIdx, 2); | |||||
} | |||||
return new string(buf); | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="array"></param> | |||||
/// <param name="fromIndex"></param> | |||||
/// <param name="length"></param> | |||||
/// <returns></returns> | |||||
public static string DoHexDump(byte[] array, int fromIndex, int length) | |||||
{ | |||||
if (length == 0) | |||||
{ | |||||
return ""; | |||||
} | |||||
int endIndex = fromIndex + length; | |||||
var buf = new char[length << 1]; | |||||
int srcIdx = fromIndex; | |||||
int dstIdx = 0; | |||||
for (; srcIdx < endIndex; srcIdx++, dstIdx += 2) | |||||
{ | |||||
Array.Copy(HexdumpTable, (array[srcIdx] & 0xFF) << 1, buf, dstIdx, 2); | |||||
} | |||||
return new string(buf); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,9 +15,9 @@ namespace JT808.Protocol.Internal | |||||
/// </summary> | /// </summary> | ||||
private readonly ConcurrentDictionary<string, ConcurrentDictionary<ushort, List<(ushort index, byte[] data)>>> splitPackageDictionary = new(); | private readonly ConcurrentDictionary<string, ConcurrentDictionary<ushort, List<(ushort index, byte[] data)>>> splitPackageDictionary = new(); | ||||
private readonly ConcurrentDictionary<string, DateTime> timeoutDictionary = new(); | |||||
private readonly ConcurrentDictionary<string, DateTime> timeoutDictionary = new ConcurrentDictionary<string, DateTime>(); | |||||
private readonly TimeSpan cleanInterval = TimeSpan.FromSeconds(60); | private readonly TimeSpan cleanInterval = TimeSpan.FromSeconds(60); | ||||
private readonly CancellationTokenSource cts = new(); | |||||
private readonly CancellationTokenSource cts = new CancellationTokenSource(); | |||||
private bool disposed; | private bool disposed; | ||||
public DefaultMerger() | public DefaultMerger() | ||||
{ | { | ||||
@@ -27,7 +27,8 @@ namespace JT808.Protocol.Internal | |||||
{ | { | ||||
timeoutDictionary.ToList().ForEach(x => | timeoutDictionary.ToList().ForEach(x => | ||||
{ | { | ||||
var (key, datetime) = x; | |||||
var key = x.Key; | |||||
var datetime = x.Value; | |||||
if (datetime < DateTime.Now && TryParseKey(key, out var phoneNumber, out var messageId) && splitPackageDictionary.TryGetValue(phoneNumber, out var value) && value.TryRemove(messageId, out var caches) && value.Count == 0 && splitPackageDictionary.TryRemove(phoneNumber, out _)) | if (datetime < DateTime.Now && TryParseKey(key, out var phoneNumber, out var messageId) && splitPackageDictionary.TryGetValue(phoneNumber, out var value) && value.TryRemove(messageId, out var caches) && value.Count == 0 && splitPackageDictionary.TryRemove(phoneNumber, out _)) | ||||
{ | { | ||||
timeoutDictionary.TryRemove(key, out _); | timeoutDictionary.TryRemove(key, out _); | ||||
@@ -88,9 +89,10 @@ namespace JT808.Protocol.Internal | |||||
} | } | ||||
private bool CheckTimeout(string key) => !timeoutDictionary.TryGetValue(key, out var dateTime) || dateTime >= DateTime.Now; | private bool CheckTimeout(string key) => !timeoutDictionary.TryGetValue(key, out var dateTime) || dateTime >= DateTime.Now; | ||||
private const string keyJoiner = "-"; | |||||
private const char keyJoiner = '-'; | |||||
private const string keyJoinerNET7 = "-"; | |||||
private string GenerateKey(string phoneNumber, ushort messageId) => string.Join(keyJoiner, new[] { phoneNumber, messageId.ToString() }); | |||||
private string GenerateKey(string phoneNumber, ushort messageId) => string.Join(keyJoinerNET7, new[] { phoneNumber, messageId.ToString() }); | |||||
private bool TryParseKey(string key, out string phoneNumber, out ushort messageId) | private bool TryParseKey(string key, out string phoneNumber, out ushort messageId) | ||||
{ | { | ||||
@@ -41,10 +41,21 @@ | |||||
<Compile Remove="Metadata\JT808UploadLocationRequestProperty.cs" /> | <Compile Remove="Metadata\JT808UploadLocationRequestProperty.cs" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> | |||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | |||||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | |||||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | |||||
<PackageReference Include="System.Memory" Version="4.5.5" /> | |||||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="7.0.2" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net7' "> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<None Update="Extensions\JT808PackageExtensionsTemplate.tt"> | <None Update="Extensions\JT808PackageExtensionsTemplate.tt"> | ||||
<Generator>TextTemplatingFileGenerator</Generator> | <Generator>TextTemplatingFileGenerator</Generator> | ||||
@@ -12,7 +12,7 @@ namespace JT808.Protocol | |||||
/// 默认不跳过 | /// 默认不跳过 | ||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
bool SkipSerialization { get { return false; } } | |||||
bool SkipSerialization { get; } | |||||
/// <summary> | /// <summary> | ||||
/// 消息Id | /// 消息Id | ||||
/// </summary> | /// </summary> | ||||
@@ -16,6 +16,6 @@ namespace JT808.Protocol | |||||
/// 默认不跳过 | /// 默认不跳过 | ||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
bool SkipSerialization { get { return false; }} | |||||
bool SkipSerialization { get; } | |||||
} | } | ||||
} | } |
@@ -16,6 +16,6 @@ namespace JT808.Protocol | |||||
/// 默认不跳过 | /// 默认不跳过 | ||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
bool SkipSerialization { get { return false; } } | |||||
bool SkipSerialization { get; } | |||||
} | } | ||||
} | } |
@@ -40,6 +40,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
/// </summary> | /// </summary> | ||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | /// <param name="writer"></param> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="config"></param> | /// <param name="config"></param> | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_location_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_location_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的位置信息记录 | /// 符合条件的位置信息记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的位置信息记录"; | public string Description => "符合条件的位置信息记录"; | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_incident_suspect_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_incident_suspect_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的事故疑点记录 | /// 符合条件的事故疑点记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的事故疑点记录"; | public string Description => "符合条件的事故疑点记录"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_driving_overtime_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_driving_overtime_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的超时驾驶记录 | /// 符合条件的超时驾驶记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的超时驾驶记录"; | public string Description => "符合条件的超时驾驶记录"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_drivers_identification_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_drivers_identification_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的驾驶人登录退出记录 | /// 符合条件的驾驶人登录退出记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的驾驶人登录退出记录"; | public string Description => "符合条件的驾驶人登录退出记录"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_external_power_supply_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_external_power_supply_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的供电记录 | /// 符合条件的供电记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的供电记录"; | public string Description => "符合条件的供电记录"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_modify_parameters_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_modify_parameters_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的参数修改记录 | /// 符合条件的参数修改记录 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的参数修改记录"; | public string Description => "符合条件的参数修改记录"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_speed_status_logs.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_speed_status_logs.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 符合条件的速度状态日志 | /// 符合条件的速度状态日志 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "符合条件的速度状态日志"; | public string Description => "符合条件的速度状态日志"; | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.setting_vehicle_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.setting_vehicle_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 车辆识别代号 | /// 车辆识别代号 | ||||
/// </summary> | /// </summary> | ||||
public string Vin { get; set; } | public string Vin { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.set_first_install_date_recorder.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.set_first_install_date_recorder.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.set_state_quantity_configuration_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.set_state_quantity_configuration_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.set_recorder_time.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.set_recorder_time.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.set_pulse_coefficient_recorder.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.set_pulse_coefficient_recorder.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 当前时间 | /// 当前时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.set_init_mileage.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.set_init_mileage.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.enter_mileage_error_measurement.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.enter_mileage_error_measurement.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 记录仪唯一性编号 | /// 记录仪唯一性编号 | ||||
/// </summary> | /// </summary> | ||||
public string UniqueNumber { get; set; } | public string UniqueNumber { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_recorder_performs_standard_version.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_recorder_performs_standard_version.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 记录仪执行标准年号后 2 位 BCD 码 | /// 记录仪执行标准年号后 2 位 BCD 码 | ||||
/// 无应答则默认为 03 | /// 无应答则默认为 03 | ||||
/// </summary> | /// </summary> | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_driver.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_driver.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 | /// 机动车驾驶证号码 | ||||
/// 机动车驾驶证号码为 15 位时,后 3 位以 00H 补齐。驾驶人身份未知时以 00H 表示 | /// 机动车驾驶证号码为 15 位时,后 3 位以 00H 补齐。驾驶人身份未知时以 00H 表示 | ||||
/// </summary> | /// </summary> | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_realtime.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_realtime.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_accumulated_mileage.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_accumulated_mileage.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_recorder_pulse_coefficient.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_recorder_pulse_coefficient.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 当前时间 | /// 当前时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_vehicle_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_vehicle_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 车辆识别代号 | /// 车辆识别代号 | ||||
/// </summary> | /// </summary> | ||||
public string Vin { get; set; } | public string Vin { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_recorder_status_signal_configuration_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_recorder_status_signal_configuration_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 实时时间 | /// 实时时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime RealTime { get; set; } | public DateTime RealTime { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_recorder_unique_number.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_recorder_unique_number.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 生产厂 CCC 认证代码 7字节 | /// 生产厂 CCC 认证代码 7字节 | ||||
/// </summary> | /// </summary> | ||||
public string ProductionPlantCCCCertificationCode { get; set; } | public string ProductionPlantCCCCertificationCode { get; set; } | ||||
@@ -23,6 +23,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_recorder_specified_speed.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_recorder_specified_speed.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x08_SpeedPerMinute> JT808_CarDVR_Up_0x08_SpeedPerMinutes { get; set; } | public List<JT808_CarDVR_Up_0x08_SpeedPerMinute> JT808_CarDVR_Up_0x08_SpeedPerMinutes { get; set; } | ||||
@@ -23,6 +23,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_location_information.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_location_information.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x09_PositionPerHour> JT808_CarDVR_Up_0x09_PositionPerHours { get; set; } | public List<JT808_CarDVR_Up_0x09_PositionPerHour> JT808_CarDVR_Up_0x09_PositionPerHours { get; set; } | ||||
@@ -24,6 +24,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_incident_suspect_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_incident_suspect_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x10_AccidentSuspectin> JT808_CarDVR_Up_0x10_AccidentSuspectins { get; set; } | public List<JT808_CarDVR_Up_0x10_AccidentSuspectin> JT808_CarDVR_Up_0x10_AccidentSuspectins { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_driving_overtime_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_driving_overtime_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x11_DriveOverTime> JT808_CarDVR_Up_0x11_DriveOverTimes{ get; set; } | public List<JT808_CarDVR_Up_0x11_DriveOverTime> JT808_CarDVR_Up_0x11_DriveOverTimes{ get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_drivers_identification_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_drivers_identification_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x12_DriveLogin> JT808_CarDVR_Up_0x12_DriveLogins { get; set; } | public List<JT808_CarDVR_Up_0x12_DriveLogin> JT808_CarDVR_Up_0x12_DriveLogins { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_external_power_supply_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_external_power_supply_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x13_ExternalPowerSupply> JT808_CarDVR_Up_0x13_ExternalPowerSupplys { get; set; } | public List<JT808_CarDVR_Up_0x13_ExternalPowerSupply> JT808_CarDVR_Up_0x13_ExternalPowerSupplys { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_modify_parameters_records.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_modify_parameters_records.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x14_ParameterModify> JT808_CarDVR_Up_0x14_ParameterModifys { get; set; } | public List<JT808_CarDVR_Up_0x14_ParameterModify> JT808_CarDVR_Up_0x14_ParameterModifys { get; set; } | ||||
@@ -22,6 +22,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId => JT808CarDVRCommandID.collect_specified_speed_status_logs.ToByteValue(); | public byte CommandId => JT808CarDVRCommandID.collect_specified_speed_status_logs.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | /// 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
/// </summary> | /// </summary> | ||||
public List<JT808_CarDVR_Up_0x15_SpeedStatusLog> JT808_CarDVR_Up_0x15_SpeedStatusLogs { get; set; } | public List<JT808_CarDVR_Up_0x15_SpeedStatusLog> JT808_CarDVR_Up_0x15_SpeedStatusLogs { get; set; } | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0001; | public ushort MsgId => 0x0001; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端通用应答 | /// 终端通用应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "终端通用应答"; | public string Description => "终端通用应答"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0005; | public ushort MsgId => 0x0005; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端补传分包请求 | /// 终端补传分包请求 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "终端补传分包请求"; | public string Description => "终端补传分包请求"; | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0100; | public ushort MsgId => 0x0100; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端注册 | /// 终端注册 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "终端注册"; | public string Description => "终端注册"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0102; | public ushort MsgId => 0x0102; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端鉴权 | /// 终端鉴权 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "终端鉴权"; | public string Description => "终端鉴权"; | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0104; | public ushort MsgId => 0x0104; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 查询终端参数应答 | /// 查询终端参数应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "查询终端参数应答"; | public string Description => "查询终端参数应答"; | ||||
@@ -20,6 +20,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0107; | public ushort MsgId => 0x0107; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 查询终端属性应答 | /// 查询终端属性应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "查询终端属性应答"; | public string Description => "查询终端属性应答"; | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0108; | public ushort MsgId => 0x0108; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 终端升级结果通知 | /// 终端升级结果通知 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "终端升级结果通知"; | public string Description => "终端升级结果通知"; | ||||
@@ -26,6 +26,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public string Description => "位置信息汇报"; | public string Description => "位置信息汇报"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 报警标志 | /// 报警标志 | ||||
/// <see cref="JT808.Protocol.Enums.JT808Alarm"/> | /// <see cref="JT808.Protocol.Enums.JT808Alarm"/> | ||||
/// </summary> | /// </summary> | ||||
@@ -108,7 +112,7 @@ namespace JT808.Protocol.MessageBody | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public override JT808_0x0200 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public override JT808_0x0200 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200 jT808_0X0200 = new (); | |||||
JT808_0x0200 jT808_0X0200 = new JT808_0x0200(); | |||||
jT808_0X0200.AlarmFlag = reader.ReadUInt32(); | jT808_0X0200.AlarmFlag = reader.ReadUInt32(); | ||||
jT808_0X0200.StatusFlag = reader.ReadUInt32(); | jT808_0X0200.StatusFlag = reader.ReadUInt32(); | ||||
if (((jT808_0X0200.StatusFlag >> 28) & 1) == 1) | if (((jT808_0X0200.StatusFlag >> 28) & 1) == 1) | ||||
@@ -16,6 +16,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0201; | public ushort MsgId => 0x0201; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 位置信息查询应答 | /// 位置信息查询应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "位置信息查询应答"; | public string Description => "位置信息查询应答"; | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0301; | public ushort MsgId => 0x0301; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 事件报告 | /// 事件报告 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "事件报告"; | public string Description => "事件报告"; | ||||
@@ -20,6 +20,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0302; | public ushort MsgId => 0x0302; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 提问应答 | /// 提问应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "提问应答"; | public string Description => "提问应答"; | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0303; | public ushort MsgId => 0x0303; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 信息点播_取消 | /// 信息点播_取消 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "信息点播_取消"; | public string Description => "信息点播_取消"; | ||||
@@ -16,6 +16,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0500; | public ushort MsgId => 0x0500; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 车辆控制应答 | /// 车辆控制应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "车辆控制应答"; | public string Description => "车辆控制应答"; | ||||
@@ -17,6 +17,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0608; | public ushort MsgId => 0x0608; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 查询区域或线路数据应答 | /// 查询区域或线路数据应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "查询区域或线路数据应答"; | public string Description => "查询区域或线路数据应答"; | ||||
@@ -19,6 +19,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0700; | public ushort MsgId => 0x0700; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 行驶记录仪数据上传 | /// 行驶记录仪数据上传 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "行驶记录仪数据上传"; | public string Description => "行驶记录仪数据上传"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0701; | public ushort MsgId => 0x0701; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 电子运单上报 | /// 电子运单上报 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "电子运单上报"; | public string Description => "电子运单上报"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0702; | public ushort MsgId => 0x0702; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// Description | /// Description | ||||
/// </summary> | /// </summary> | ||||
public string Description => "驾驶员身份信息采集上报"; | public string Description => "驾驶员身份信息采集上报"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0704; | public ushort MsgId => 0x0704; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 定位数据批量上传 | /// 定位数据批量上传 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "定位数据批量上传"; | public string Description => "定位数据批量上传"; | ||||
@@ -21,6 +21,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0705; | public ushort MsgId => 0x0705; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// CAN总线数据上传 | /// CAN总线数据上传 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "CAN总线数据上传"; | public string Description => "CAN总线数据上传"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0800; | public ushort MsgId => 0x0800; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 多媒体事件信息上传 | /// 多媒体事件信息上传 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "多媒体事件信息上传"; | public string Description => "多媒体事件信息上传"; | ||||
@@ -18,6 +18,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0801; | public ushort MsgId => 0x0801; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 多媒体数据上传 | /// 多媒体数据上传 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "多媒体数据上传"; | public string Description => "多媒体数据上传"; | ||||
@@ -20,6 +20,10 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public ushort MsgId => 0x0802; | public ushort MsgId => 0x0802; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// </summary> | |||||
public bool SkipSerialization => false; | |||||
/// <summary> | |||||
/// 存储多媒体数据检索应答 | /// 存储多媒体数据检索应答 | ||||
/// </summary> | /// </summary> | ||||
public string Description => "存储多媒体数据检索应答"; | public string Description => "存储多媒体数据检索应答"; | ||||