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 | |||
uses: actions/setup-dotnet@master | |||
with: | |||
dotnet-version: 6.0.100 | |||
dotnet-version: 6.0.201 | |||
- name: dotnet info | |||
run: dotnet --info | |||
- name: dotnet restore | |||
@@ -0,0 +1,5 @@ | |||
{ | |||
"sdk": { | |||
"version": "6.0.201" | |||
} | |||
} |
@@ -1,6 +1,6 @@ | |||
<Project> | |||
<PropertyGroup> | |||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0;</TargetFrameworks> | |||
<TargetFrameworks>netstandard2.0;netstandard2.1;net6.0;</TargetFrameworks> | |||
<LangVersion>10.0</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi(Koike)</Authors> | |||
@@ -8,7 +8,7 @@ | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl> | |||
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> | |||
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | |||
<Version>2.4.5</Version> | |||
<Version>2.4.6-preview1</Version> | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | |||
<AnalysisLevel>latest</AnalysisLevel> | |||
@@ -7,7 +7,7 @@ | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" 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.runner.visualstudio" Version="2.4.3"> | |||
<PrivateAssets>all</PrivateAssets> | |||
@@ -35,25 +35,25 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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 | |||
}); | |||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||
{ | |||
VideoSignalLoseAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||
{ | |||
VideoSignalOcclusionAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||
{ | |||
StorageFaultAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.BasicLocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||
jT808UploadLocationRequest.CustomLocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||
{ | |||
AbnormalDrivingBehaviorAlarmType = 100, | |||
FatigueLevel = 88 | |||
@@ -73,12 +73,12 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
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] | |||
@@ -36,9 +36,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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.其他视频设备故障报警) | |||
}); | |||
@@ -57,7 +57,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
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] | |||
@@ -80,9 +80,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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 | |||
}); | |||
@@ -101,7 +101,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
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] | |||
@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 视频相关报警 | |||
/// 0x0200_0x14 | |||
/// </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> | |||
/// | |||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 视频信号丢失报警状态 | |||
/// 0x0200_0x15 | |||
/// </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> | |||
/// | |||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 视频信号遮挡报警状态 | |||
/// 0x0200_0x16 | |||
/// </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> | |||
/// | |||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 存储器故障报警状态 | |||
/// 0x0200_0x17 | |||
/// </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> | |||
/// | |||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 异常驾驶行为报警详细描述 | |||
/// 0x0200_0x18 | |||
/// </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> | |||
/// | |||
@@ -8,7 +8,7 @@ | |||
<ItemGroup> | |||
<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.runner.visualstudio" Version="2.4.3"> | |||
<PrivateAssets>all</PrivateAssets> | |||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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, | |||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | |||
@@ -66,7 +66,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
public void Deserialize() | |||
{ | |||
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; | |||
Assert.Equal(1u, jT808_0X0200_0X64.AlarmId); | |||
Assert.Equal(2, jT808_0X0200_0X64.AlarmIdentification.AttachCount); | |||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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, | |||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | |||
@@ -63,7 +63,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
public void Deserialize() | |||
{ | |||
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; | |||
Assert.Equal(1u, jT808_0X0200_0X65.AlarmId); | |||
Assert.Equal(2, jT808_0X0200_0X65.AlarmIdentification.AttachCount); | |||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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, | |||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | |||
@@ -77,7 +77,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
public void Deserialize() | |||
{ | |||
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; | |||
Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | |||
Assert.Equal(2, jT808_0X0200_0X66.AlarmIdentification.AttachCount); | |||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
Speed = 60, | |||
Direction = 0, | |||
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, | |||
AlarmIdentification = new Metadata.AlarmIdentificationProperty | |||
@@ -61,7 +61,7 @@ namespace JT808.Protocol.Extensions.SuBiao.Test | |||
public void Deserialize() | |||
{ | |||
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; | |||
Assert.Equal(1u, jT808_0X0200_0X67.AlarmId); | |||
Assert.Equal(2, jT808_0X0200_0X67.AlarmIdentification.AttachCount); | |||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||
/// <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> | |||
/// 高级驾驶辅助系统报警信息Id | |||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||
/// <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> | |||
/// 驾驶员状态监测系统报警信息Id | |||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||
/// <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> | |||
/// 胎压监测系统报警信息Id | |||
@@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody | |||
/// <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> | |||
/// 盲区监测系统报警信息Id | |||
@@ -8,13 +8,13 @@ | |||
<ItemGroup> | |||
<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.runner.visualstudio" Version="2.4.3"> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
<PrivateAssets>all</PrivateAssets> | |||
</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> | |||
<PrivateAssets>all</PrivateAssets> | |||
</PackageReference> | |||
@@ -108,7 +108,7 @@ | |||
</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="Newtonsoft.Json" Version="13.0.1" /> | |||
<PackageReference Include="System.Drawing.Common" Version="6.0.0" /> | |||
@@ -403,6 +403,96 @@ namespace JT808.Protocol.Test.MessageBody | |||
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] | |||
public void Test_all_attcahids() | |||
{ | |||
@@ -637,7 +727,7 @@ namespace JT808.Protocol.Test.MessageBody | |||
public void Test_JT808_0x0200_0x07_2() | |||
{ | |||
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]; | |||
Assert.Equal((byte)(4 + (4 * 4 + 4 * 3 + 4 * 2 + 4)), jT808_0x0200_0x07.AttachInfoLength); | |||
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(-12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
} | |||
[Fact] | |||
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(-12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
} | |||
[Fact] | |||
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(-12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
} | |||
[Fact] | |||
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(-12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
} | |||
[Fact] | |||
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(12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(-132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); //402653184 | |||
} | |||
[Fact] | |||
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(12222222, jT808UploadLocationRequest.Lat); | |||
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.Memory" Version="4.5.4" /> | |||
<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="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | |||
<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="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
</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' "> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | |||
@@ -3872,6 +3872,17 @@ | |||
<param name="fieldName"></param> | |||
<param name="fixedLength"></param> | |||
</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"> | |||
<summary> | |||
终端控制 命令参数扩展 | |||
@@ -120,7 +120,7 @@ namespace JT808.Protocol.MessageBody | |||
jT808_0X0200.Lat = reader.ReadInt32(); | |||
} | |||
if (((jT808_0X0200.StatusFlag >> 27) & 1) == 1) | |||
{ //西经 134217728 0x8000000 | |||
{ //西经 134217728 0x8000000 | |||
jT808_0X0200.Lng = (int)reader.ReadUInt32(); | |||
} | |||
else | |||
@@ -150,7 +150,7 @@ namespace JT808.Protocol.MessageBody | |||
byte attachId = reader.ReadVirtualByte(); | |||
//自定义标准附加Id2、自定义标准附加Id3 | |||
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)) | |||
{ | |||
@@ -234,7 +234,8 @@ namespace JT808.Protocol.MessageBody | |||
int remainLength = reader.ReadCurrentRemainContentLength(); | |||
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 | |||
{ | |||
@@ -282,7 +283,7 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteUInt32(value.AlarmFlag); | |||
writer.WriteUInt32(value.StatusFlag); | |||
//0x10000000 南纬 134217728 | |||
//0x8000000 西经 268435456 | |||
//0x8000000 西经 268435456 | |||
//0x18000000 南纬-西经 134217728+268435456 | |||
if (((value.StatusFlag >> 28) & 1) == 1) | |||
{ | |||
@@ -497,7 +498,7 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteNumber($"[{value.Lat.ReadNumber()}]纬度", value.Lat); | |||
} | |||
if (((value.StatusFlag >> 27) & 1) == 1) | |||
{ //西经 134217728 0x8000000 | |||
{ //西经 134217728 0x8000000 | |||
value.Lng = (int)reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.Lng.ReadNumber()}]经度", value.Lng); | |||
} | |||
@@ -533,7 +534,7 @@ namespace JT808.Protocol.MessageBody | |||
byte attachId = reader.ReadVirtualByte(); | |||
//自定义标准附加Id2、自定义标准附加Id3 | |||
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)) | |||
{ | |||
@@ -640,7 +641,7 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteNumber($"[{attachLen.ReadNumber()}]未知附加信息长度", attachLen); | |||
if ((attachLen+2) > remainLength) | |||
{ | |||
writer.WriteString($"未知附加信息", reader.ReadArray(remainLength).ToArray().ToHexString()); | |||
writer.WriteString($"未知附加信息[异常解析]", reader.ReadArray(remainLength).ToArray().ToHexString()); | |||
} | |||
else | |||
{ | |||