2.修改除808本身的位置附加信息使用JT808_0x0200_BodyBase继承,其余外部依赖统一使用JT808_0x0200_CustomBodyBase来处理,这样可以保留自身808协议的保留约束 3.调整0x0200位置附加信息解析错误的提示 4.升级808库去掉Net5tags/v2.4.6
@@ -12,7 +12,7 @@ jobs: | |||||
- name: Setup .NET Core | - name: Setup .NET Core | ||||
uses: actions/setup-dotnet@master | uses: actions/setup-dotnet@master | ||||
with: | with: | ||||
dotnet-version: 6.0.100 | |||||
dotnet-version: 6.0.201 | |||||
- name: dotnet info | - name: dotnet info | ||||
run: dotnet --info | run: dotnet --info | ||||
- name: dotnet restore | - name: dotnet restore | ||||
@@ -0,0 +1,5 @@ | |||||
{ | |||||
"sdk": { | |||||
"version": "6.0.201" | |||||
} | |||||
} |
@@ -1,6 +1,6 @@ | |||||
<Project> | <Project> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0;</TargetFrameworks> | |||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net6.0;</TargetFrameworks> | |||||
<LangVersion>10.0</LangVersion> | <LangVersion>10.0</LangVersion> | ||||
<Copyright>Copyright 2018.</Copyright> | <Copyright>Copyright 2018.</Copyright> | ||||
<Authors>SmallChi(Koike)</Authors> | <Authors>SmallChi(Koike)</Authors> | ||||
@@ -8,7 +8,7 @@ | |||||
<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.4.5</Version> | |||||
<Version>2.4.6-preview1</Version> | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | ||||
<AnalysisLevel>latest</AnalysisLevel> | <AnalysisLevel>latest</AnalysisLevel> | ||||
@@ -7,7 +7,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | <PackageReference Include="xunit" Version="2.4.1" /> | ||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
@@ -35,25 +35,25 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x14, new JT808_0x0200_0x14 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x14, new JT808_0x0200_0x14 | |||||
{ | { | ||||
VideoRelateAlarm = 100 | VideoRelateAlarm = 100 | ||||
}); | }); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||||
{ | { | ||||
VideoSignalLoseAlarmStatus = 100 | VideoSignalLoseAlarmStatus = 100 | ||||
}); | }); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||||
{ | { | ||||
VideoSignalOcclusionAlarmStatus = 100 | VideoSignalOcclusionAlarmStatus = 100 | ||||
}); | }); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||||
{ | { | ||||
StorageFaultAlarmStatus = 100 | StorageFaultAlarmStatus = 100 | ||||
}); | }); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||||
{ | { | ||||
AbnormalDrivingBehaviorAlarmType = 100, | AbnormalDrivingBehaviorAlarmType = 100, | ||||
FatigueLevel = 88 | FatigueLevel = 88 | ||||
@@ -73,12 +73,12 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | Assert.Equal(60, jT808UploadLocationRequest.Speed); | ||||
Assert.Equal(2u, jT808UploadLocationRequest.StatusFlag); | Assert.Equal(2u, jT808UploadLocationRequest.StatusFlag); | ||||
Assert.Equal(100u, ((JT808_0x0200_0x14)jT808UploadLocationRequest.BasicLocationAttachData[0x14]).VideoRelateAlarm); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.BasicLocationAttachData[0x15]).VideoSignalLoseAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x16)jT808UploadLocationRequest.BasicLocationAttachData[0x16]).VideoSignalOcclusionAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x17)jT808UploadLocationRequest.BasicLocationAttachData[0x17]).StorageFaultAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x18)jT808UploadLocationRequest.BasicLocationAttachData[0x18]).AbnormalDrivingBehaviorAlarmType); | |||||
Assert.Equal(88, ((JT808_0x0200_0x18)jT808UploadLocationRequest.BasicLocationAttachData[0x18]).FatigueLevel); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x14)jT808UploadLocationRequest.CustomLocationAttachData[0x14]).VideoRelateAlarm); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.CustomLocationAttachData[0x15]).VideoSignalLoseAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x16)jT808UploadLocationRequest.CustomLocationAttachData[0x16]).VideoSignalOcclusionAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x17)jT808UploadLocationRequest.CustomLocationAttachData[0x17]).StorageFaultAlarmStatus); | |||||
Assert.Equal(100u, ((JT808_0x0200_0x18)jT808UploadLocationRequest.CustomLocationAttachData[0x18]).AbnormalDrivingBehaviorAlarmType); | |||||
Assert.Equal(88, ((JT808_0x0200_0x18)jT808UploadLocationRequest.CustomLocationAttachData[0x18]).FatigueLevel); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
@@ -36,9 +36,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_JT1078_Constants.JT808_0X0200_0x14, new JT808_0x0200_0x14 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_JT1078_Constants.JT808_0X0200_0x14, new JT808_0x0200_0x14 | |||||
{ | { | ||||
VideoRelateAlarm = (uint)(VideoRelateAlarmType.视频信号遮挡报警 | VideoRelateAlarmType.其他视频设备故障报警) | VideoRelateAlarm = (uint)(VideoRelateAlarmType.视频信号遮挡报警 | VideoRelateAlarmType.其他视频设备故障报警) | ||||
}); | }); | ||||
@@ -57,7 +57,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | Assert.Equal(60, jT808UploadLocationRequest.Speed); | ||||
Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); | Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); | ||||
Assert.Equal((uint)(VideoRelateAlarmType.视频信号遮挡报警 | VideoRelateAlarmType.其他视频设备故障报警), ((JT808_0x0200_0x14)jT808UploadLocationRequest.BasicLocationAttachData[JT808_JT1078_Constants.JT808_0X0200_0x14]).VideoRelateAlarm); | |||||
Assert.Equal((uint)(VideoRelateAlarmType.视频信号遮挡报警 | VideoRelateAlarmType.其他视频设备故障报警), ((JT808_0x0200_0x14)jT808UploadLocationRequest.CustomLocationAttachData[JT808_JT1078_Constants.JT808_0X0200_0x14]).VideoRelateAlarm); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
@@ -80,9 +80,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_JT1078_Constants.JT808_0X0200_0x15, new JT808_0x0200_0x15 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_JT1078_Constants.JT808_0X0200_0x15, new JT808_0x0200_0x15 | |||||
{ | { | ||||
VideoSignalLoseAlarmStatus=3 | VideoSignalLoseAlarmStatus=3 | ||||
}); | }); | ||||
@@ -101,7 +101,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | Assert.Equal(60, jT808UploadLocationRequest.Speed); | ||||
Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); | Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); | ||||
Assert.Equal(3u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.BasicLocationAttachData[JT808_JT1078_Constants.JT808_0X0200_0x15]).VideoSignalLoseAlarmStatus); | |||||
Assert.Equal(3u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.CustomLocationAttachData[JT808_JT1078_Constants.JT808_0X0200_0x15]).VideoSignalLoseAlarmStatus); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 视频相关报警 | /// 视频相关报警 | ||||
/// 0x0200_0x14 | /// 0x0200_0x14 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x14 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x14>,IJT808Analyze | |||||
public class JT808_0x0200_0x14 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x14>,IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 视频信号丢失报警状态 | /// 视频信号丢失报警状态 | ||||
/// 0x0200_0x15 | /// 0x0200_0x15 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x15 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x15>, IJT808Analyze | |||||
public class JT808_0x0200_0x15 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x15>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 视频信号遮挡报警状态 | /// 视频信号遮挡报警状态 | ||||
/// 0x0200_0x16 | /// 0x0200_0x16 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x16 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x16>, IJT808Analyze | |||||
public class JT808_0x0200_0x16 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x16>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 存储器故障报警状态 | /// 存储器故障报警状态 | ||||
/// 0x0200_0x17 | /// 0x0200_0x17 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x17 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x17>, IJT808Analyze | |||||
public class JT808_0x0200_0x17 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x17>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||||
/// 异常驾驶行为报警详细描述 | /// 异常驾驶行为报警详细描述 | ||||
/// 0x0200_0x18 | /// 0x0200_0x18 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x18 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x18>, IJT808Analyze | |||||
public class JT808_0x0200_0x18 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x18>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -8,7 +8,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | <PackageReference Include="xunit" Version="2.4.1" /> | ||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x64, new JT808_0x0200_0x64 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x64, new JT808_0x0200_0x64 | |||||
{ | { | ||||
AlarmId = 1, | AlarmId = 1, | ||||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | AlarmIdentification = new Metadata.AlarmIdentificationProperty | ||||
@@ -66,7 +66,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x64, out var value); | |||||
jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x64, out var value); | |||||
JT808_0x0200_0x64 jT808_0X0200_0X64 = value as JT808_0x0200_0x64; | JT808_0x0200_0x64 jT808_0X0200_0X64 = value as JT808_0x0200_0x64; | ||||
Assert.Equal(1u, jT808_0X0200_0X64.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X64.AlarmId); | ||||
Assert.Equal(2, jT808_0X0200_0X64.AlarmIdentification.AttachCount); | Assert.Equal(2, jT808_0X0200_0X64.AlarmIdentification.AttachCount); | ||||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x65, new JT808_0x0200_0x65 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x65, new JT808_0x0200_0x65 | |||||
{ | { | ||||
AlarmId = 1, | AlarmId = 1, | ||||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | AlarmIdentification = new Metadata.AlarmIdentificationProperty | ||||
@@ -63,7 +63,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106520000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106520000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x65, out var value); | |||||
jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x65, out var value); | |||||
JT808_0x0200_0x65 jT808_0X0200_0X65 = value as JT808_0x0200_0x65; | JT808_0x0200_0x65 jT808_0X0200_0X65 = value as JT808_0x0200_0x65; | ||||
Assert.Equal(1u, jT808_0X0200_0X65.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X65.AlarmId); | ||||
Assert.Equal(2, jT808_0X0200_0X65.AlarmIdentification.AttachCount); | Assert.Equal(2, jT808_0X0200_0X65.AlarmIdentification.AttachCount); | ||||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x66, new JT808_0x0200_0x66 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x66, new JT808_0x0200_0x66 | |||||
{ | { | ||||
AlarmId = 1, | AlarmId = 1, | ||||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | AlarmIdentification = new Metadata.AlarmIdentificationProperty | ||||
@@ -77,7 +77,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes()); | var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes()); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x66, out var value); | |||||
jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x66, out var value); | |||||
JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66; | JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66; | ||||
Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | ||||
Assert.Equal(2, jT808_0X0200_0X66.AlarmIdentification.AttachCount); | Assert.Equal(2, jT808_0X0200_0X66.AlarmIdentification.AttachCount); | ||||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
Speed = 60, | Speed = 60, | ||||
Direction = 0, | Direction = 0, | ||||
StatusFlag = 2, | StatusFlag = 2, | ||||
BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||||
CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||||
}; | }; | ||||
jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x67, new JT808_0x0200_0x67 | |||||
jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x67, new JT808_0x0200_0x67 | |||||
{ | { | ||||
AlarmId = 1, | AlarmId = 1, | ||||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | AlarmIdentification = new Metadata.AlarmIdentificationProperty | ||||
@@ -61,7 +61,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010672A000000010C09081100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010672A000000010C09081100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); | ||||
jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x67, out var value); | |||||
jT808UploadLocationRequest.CustomLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x67, out var value); | |||||
JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67; | JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67; | ||||
Assert.Equal(1u, jT808_0X0200_0X67.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X67.AlarmId); | ||||
Assert.Equal(2, jT808_0X0200_0X67.AlarmIdentification.AttachCount); | Assert.Equal(2, jT808_0X0200_0X67.AlarmIdentification.AttachCount); | ||||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// 高级驾驶辅助系统报警信息 | /// 高级驾驶辅助系统报警信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>, IJT808Analyze | |||||
public class JT808_0x0200_0x64 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 高级驾驶辅助系统报警信息Id | /// 高级驾驶辅助系统报警信息Id | ||||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// 驾驶员状态监测系统报警信息 | /// 驾驶员状态监测系统报警信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x65>, IJT808Analyze | |||||
public class JT808_0x0200_0x65 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x65>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 驾驶员状态监测系统报警信息Id | /// 驾驶员状态监测系统报警信息Id | ||||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// 胎压监测系统报警信息 | /// 胎压监测系统报警信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x66>, IJT808Analyze | |||||
public class JT808_0x0200_0x66 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x66>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 胎压监测系统报警信息Id | /// 胎压监测系统报警信息Id | ||||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// 盲区监测系统报警信息 | /// 盲区监测系统报警信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x67>, IJT808Analyze | |||||
public class JT808_0x0200_0x67 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x67>, IJT808Analyze | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 盲区监测系统报警信息Id | /// 盲区监测系统报警信息Id | ||||
@@ -8,13 +8,13 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | <PackageReference Include="xunit" Version="2.4.1" /> | ||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> | ||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
</PackageReference> | </PackageReference> | ||||
<PackageReference Include="coverlet.collector" Version="3.1.0"> | |||||
<PackageReference Include="coverlet.collector" Version="3.1.2"> | |||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
</PackageReference> | </PackageReference> | ||||
@@ -108,7 +108,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" /> | |||||
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> | <PackageReference Include="NETStandard.Library" Version="2.0.3" /> | ||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | ||||
<PackageReference Include="System.Drawing.Common" Version="6.0.0" /> | <PackageReference Include="System.Drawing.Common" Version="6.0.0" /> | ||||
@@ -403,6 +403,96 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Single(jT808UploadLocationRequest.ExceptionLocationAttachOriginalData); | Assert.Single(jT808UploadLocationRequest.ExceptionLocationAttachOriginalData); | ||||
} | } | ||||
[Fact] | |||||
public void Test8() | |||||
{ | |||||
//7E | |||||
//0200 | |||||
//0085 | |||||
//011111111111 | |||||
//0AA2 | |||||
//00000000 | |||||
//000C0000 | |||||
//01F62E83 | |||||
//07147C92 | |||||
//001E | |||||
//0000 | |||||
//001E | |||||
//11 01 11 03 11 52 | |||||
//01 | |||||
// 04 | |||||
// 00 13 1A 34 | |||||
//03 | |||||
// 02 | |||||
// 00 00 | |||||
//05 | |||||
// 01 | |||||
// 00 | |||||
//06 | |||||
// 03 | |||||
// 02 05 90 | |||||
//07 | |||||
// 03 | |||||
// 03 81 20 | |||||
//25 | |||||
// 04 | |||||
// 00 00 00 00 | |||||
//2B | |||||
// 04 | |||||
// 00 00 00 F0 | |||||
//30 | |||||
// 01 | |||||
// 17 | |||||
//31 | |||||
// 01 | |||||
// 05 | |||||
//E0 | |||||
// 01 | |||||
// 3D | |||||
//E1 | |||||
// 08 | |||||
// 00 00 00 00 00 04 BC FD | |||||
//E2 | |||||
// 04 | |||||
// 00 00 00 00 | |||||
//E3 | |||||
// 04 | |||||
// 00 00 07 AC | |||||
//E4 | |||||
// 04 | |||||
// 00 00 00 00 | |||||
//E5 | |||||
// 0C | |||||
// 00 13 00 27 00 13 00 27 00 13 00 27 | |||||
//EA | |||||
// 04 | |||||
// 00 00 00 00 | |||||
//EB | |||||
// 04 | |||||
// 00 00 00 00 | |||||
//EE | |||||
// 01 | |||||
// 00 | |||||
//F6 | |||||
// 04 error | |||||
// 14 50 error | |||||
//E9 | |||||
//7E | |||||
byte[] bodys = "7E020000850111111111110AA200000000000C000001F62E8307147C92001E0000001E110111031152010400131A3403020000050100060302059007030381202504000000002B04000000F0300117310105E0013DE108000000000004BCFDE20400000000E304000007ACE40400000000E50C001300270013002700130027EA0400000000EB0400000000EE0100F6041450E97E".ToHexBytes(); | |||||
var package = JT808Serializer1.Deserialize(bodys); | |||||
JT808_0x0200 jT808UploadLocationRequest = (JT808_0x0200)package.Bodies; | |||||
Assert.Single(jT808UploadLocationRequest.ExceptionLocationAttachOriginalData); | |||||
Assert.Equal(0x6, jT808UploadLocationRequest.BasicLocationAttachData.Count); | |||||
Assert.Equal(0xc,jT808UploadLocationRequest.UnknownLocationAttachData.Count); | |||||
} | |||||
[Fact] | |||||
public void Test8_1() | |||||
{ | |||||
byte[] bodys = "7E020000850111111111110AA200000000000C000001F62E8307147C92001E0000001E110111031152010400131A3403020000050100060302059007030381202504000000002B04000000F0300117310105E0013DE108000000000004BCFDE20400000000E304000007ACE40400000000E50C001300270013002700130027EA0400000000EB0400000000EE0100F6041450E97E".ToHexBytes(); | |||||
var json = JT808Serializer1.Analyze(bodys); | |||||
} | |||||
[Fact] | [Fact] | ||||
public void Test_all_attcahids() | public void Test_all_attcahids() | ||||
{ | { | ||||
@@ -637,7 +727,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
public void Test_JT808_0x0200_0x07_2() | public void Test_JT808_0x0200_0x07_2() | ||||
{ | { | ||||
byte[] bytes = "000000010000000200BA7F0E07E4F11C0028003C0000210528181010072C0401030002020400050305000604050006030204000503050006040500060203050006040500060104050006".ToHexBytes(); | byte[] bytes = "000000010000000200BA7F0E07E4F11C0028003C0000210528181010072C0401030002020400050305000604050006030204000503050006040500060203050006040500060104050006".ToHexBytes(); | ||||
var jT808_0X0200 = JT808Serializer.Deserialize<JT808_0x0200>(bytes); | |||||
var jT808_0X0200 = JT808Serializer.Deserialize<JT808_0x0200>(bytes, JT808Version.JTT2019); | |||||
var jT808_0x0200_0x07=(JT808_0x0200_0x07)jT808_0X0200.BasicLocationAttachData[JT808Constants.JT808_0x0200_0x07]; | var jT808_0x0200_0x07=(JT808_0x0200_0x07)jT808_0X0200.BasicLocationAttachData[JT808Constants.JT808_0x0200_0x07]; | ||||
Assert.Equal((byte)(4 + (4 * 4 + 4 * 3 + 4 * 2 + 4)), jT808_0x0200_0x07.AttachInfoLength); | Assert.Equal((byte)(4 + (4 * 4 + 4 * 3 + 4 * 2 + 4)), jT808_0x0200_0x07.AttachInfoLength); | ||||
Assert.Equal(4, jT808_0x0200_0x07.BeiDou.Count); | Assert.Equal(4, jT808_0x0200_0x07.BeiDou.Count); | ||||
@@ -780,7 +870,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void LatLngTest2_1() | public void LatLngTest2_1() | ||||
@@ -810,7 +900,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void LatTest1_1() | public void LatTest1_1() | ||||
@@ -840,7 +930,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void LatTest2() | public void LatTest2() | ||||
@@ -890,7 +980,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(-12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void LngTest1_1() | public void LngTest1_1() | ||||
@@ -920,7 +1010,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void LngTest2() | public void LngTest2() | ||||
@@ -970,7 +1060,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | ||||
Assert.Equal(12222222, jT808UploadLocationRequest.Lat); | Assert.Equal(12222222, jT808UploadLocationRequest.Lat); | ||||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | ||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,79 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Interfaces; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using static JT808.Protocol.MessageBody.JT808_0x8105; | |||||
namespace JT808.Protocol.Extensions | |||||
{ | |||||
/// <summary> | |||||
/// 0200扩展 | |||||
/// </summary> | |||||
public static class JT808_0X0200_FactoryExtensions | |||||
{ | |||||
/// <summary> | |||||
/// 根据不同的版本号进行附加保留位判断 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
public static bool TryGetValue(this IJT808_0x0200_Factory factory, JT808Version version, byte attachId, out object attachInstance) | |||||
{ | |||||
if(factory == null) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
switch (version) | |||||
{ | |||||
case JT808Version.JTT2013: | |||||
case JT808Version.JTT2013Force: | |||||
//协议保留 | |||||
if (attachId>=0x5 && attachId <= 0x10) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
else if(attachId>=0x14 && attachId <= 0x24) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
else | |||||
{ | |||||
return factory.Map.TryGetValue(attachId, out attachInstance); | |||||
} | |||||
case JT808Version.JTT2011: | |||||
//协议保留 | |||||
if (attachId >= 0x4 && attachId <= 0xF) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
else | |||||
{ | |||||
return factory.Map.TryGetValue(attachId, out attachInstance); | |||||
} | |||||
case JT808Version.JTT2019: | |||||
//协议保留 | |||||
if (attachId >= 0x8 && attachId <= 0xF) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
else if (attachId >= 0x14 && attachId <= 0x24) | |||||
{ | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
else | |||||
{ | |||||
return factory.Map.TryGetValue(attachId, out attachInstance); | |||||
} | |||||
default: | |||||
attachInstance = default; | |||||
return false; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -56,23 +56,18 @@ | |||||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | <PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | ||||
<PackageReference Include="System.Memory" Version="4.5.4" /> | <PackageReference Include="System.Memory" Version="4.5.4" /> | ||||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | <PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | ||||
<PackageReference Include="System.Text.Json" Version="6.0.1" /> | |||||
<PackageReference Include="System.Text.Json" Version="6.0.3" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | ||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | <PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | ||||
<PackageReference Include="System.Text.Json" Version="6.0.1" /> | |||||
<PackageReference Include="System.Text.Json" Version="6.0.3" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net5.0' "> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" /> | |||||
</ItemGroup> | |||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' "> | <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' "> | ||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | ||||
@@ -3872,6 +3872,17 @@ | |||||
<param name="fieldName"></param> | <param name="fieldName"></param> | ||||
<param name="fixedLength"></param> | <param name="fixedLength"></param> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.Extensions.JT808_0X0200_FactoryExtensions"> | |||||
<summary> | |||||
0200扩展 | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.JT808_0X0200_FactoryExtensions.TryGetValue(JT808.Protocol.Interfaces.IJT808_0x0200_Factory,JT808.Protocol.Enums.JT808Version,System.Byte,System.Object@)"> | |||||
<summary> | |||||
根据不同的版本号进行附加保留位判断 | |||||
</summary> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Extensions.JT808_0x8105_CommandParameterExtensions"> | <member name="T:JT808.Protocol.Extensions.JT808_0x8105_CommandParameterExtensions"> | ||||
<summary> | <summary> | ||||
终端控制 命令参数扩展 | 终端控制 命令参数扩展 | ||||
@@ -120,7 +120,7 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X0200.Lat = reader.ReadInt32(); | jT808_0X0200.Lat = reader.ReadInt32(); | ||||
} | } | ||||
if (((jT808_0X0200.StatusFlag >> 27) & 1) == 1) | if (((jT808_0X0200.StatusFlag >> 27) & 1) == 1) | ||||
{ //西经 134217728 0x8000000 | |||||
{ //西经 134217728 0x8000000 | |||||
jT808_0X0200.Lng = (int)reader.ReadUInt32(); | jT808_0X0200.Lng = (int)reader.ReadUInt32(); | ||||
} | } | ||||
else | else | ||||
@@ -150,7 +150,7 @@ namespace JT808.Protocol.MessageBody | |||||
byte attachId = reader.ReadVirtualByte(); | byte attachId = reader.ReadVirtualByte(); | ||||
//自定义标准附加Id2、自定义标准附加Id3 | //自定义标准附加Id2、自定义标准附加Id3 | ||||
ushort attachId2_3 = reader.ReadVirtualUInt16(); | ushort attachId2_3 = reader.ReadVirtualUInt16(); | ||||
if (config.JT808_0X0200_Factory.Map.TryGetValue(attachId, out object attachInstance)) | |||||
if (config.JT808_0X0200_Factory.TryGetValue(reader.Version, attachId, out object attachInstance)) | |||||
{ | { | ||||
if (jT808_0X0200.BasicLocationAttachData.ContainsKey(attachId)) | if (jT808_0X0200.BasicLocationAttachData.ContainsKey(attachId)) | ||||
{ | { | ||||
@@ -234,7 +234,8 @@ namespace JT808.Protocol.MessageBody | |||||
int remainLength = reader.ReadCurrentRemainContentLength(); | int remainLength = reader.ReadCurrentRemainContentLength(); | ||||
if(remainLength < attachLen) | if(remainLength < attachLen) | ||||
{ | { | ||||
jT808_0X0200.ExceptionLocationAttachOriginalData.Add(reader.ReadArray(remainLength).ToArray()); | |||||
jT808_0X0200.ExceptionLocationAttachOriginalData.Add(reader.ReadArray(reader.ReaderCount - 2, remainLength+2).ToArray()); | |||||
reader.ReadArray(remainLength); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -282,7 +283,7 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteUInt32(value.AlarmFlag); | writer.WriteUInt32(value.AlarmFlag); | ||||
writer.WriteUInt32(value.StatusFlag); | writer.WriteUInt32(value.StatusFlag); | ||||
//0x10000000 南纬 134217728 | //0x10000000 南纬 134217728 | ||||
//0x8000000 西经 268435456 | |||||
//0x8000000 西经 268435456 | |||||
//0x18000000 南纬-西经 134217728+268435456 | //0x18000000 南纬-西经 134217728+268435456 | ||||
if (((value.StatusFlag >> 28) & 1) == 1) | if (((value.StatusFlag >> 28) & 1) == 1) | ||||
{ | { | ||||
@@ -497,7 +498,7 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{value.Lat.ReadNumber()}]纬度", value.Lat); | writer.WriteNumber($"[{value.Lat.ReadNumber()}]纬度", value.Lat); | ||||
} | } | ||||
if (((value.StatusFlag >> 27) & 1) == 1) | if (((value.StatusFlag >> 27) & 1) == 1) | ||||
{ //西经 134217728 0x8000000 | |||||
{ //西经 134217728 0x8000000 | |||||
value.Lng = (int)reader.ReadUInt32(); | value.Lng = (int)reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.Lng.ReadNumber()}]经度", value.Lng); | writer.WriteNumber($"[{value.Lng.ReadNumber()}]经度", value.Lng); | ||||
} | } | ||||
@@ -533,7 +534,7 @@ namespace JT808.Protocol.MessageBody | |||||
byte attachId = reader.ReadVirtualByte(); | byte attachId = reader.ReadVirtualByte(); | ||||
//自定义标准附加Id2、自定义标准附加Id3 | //自定义标准附加Id2、自定义标准附加Id3 | ||||
ushort attachId2_3 = reader.ReadVirtualUInt16(); | ushort attachId2_3 = reader.ReadVirtualUInt16(); | ||||
if (config.JT808_0X0200_Factory.Map.TryGetValue(attachId, out object attachInstance)) | |||||
if (config.JT808_0X0200_Factory.TryGetValue(reader.Version, attachId, out object attachInstance)) | |||||
{ | { | ||||
if (value.BasicLocationAttachData.ContainsKey(attachId)) | if (value.BasicLocationAttachData.ContainsKey(attachId)) | ||||
{ | { | ||||
@@ -640,7 +641,7 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{attachLen.ReadNumber()}]未知附加信息长度", attachLen); | writer.WriteNumber($"[{attachLen.ReadNumber()}]未知附加信息长度", attachLen); | ||||
if ((attachLen+2) > remainLength) | if ((attachLen+2) > remainLength) | ||||
{ | { | ||||
writer.WriteString($"未知附加信息", reader.ReadArray(remainLength).ToArray().ToHexString()); | |||||
writer.WriteString($"未知附加信息[异常解析]", reader.ReadArray(remainLength).ToArray().ToHexString()); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||