diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml index 6adf8b3..c83fde7 100755 --- a/.github/workflows/dotnetcore.yml +++ b/.github/workflows/dotnetcore.yml @@ -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 diff --git a/global.json b/global.json new file mode 100644 index 0000000..726ce1b --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "6.0.201" + } +} \ No newline at end of file diff --git a/src/Info.props b/src/Info.props index 0752620..810f778 100644 --- a/src/Info.props +++ b/src/Info.props @@ -1,6 +1,6 @@  - netstandard2.0;netstandard2.1;net5.0;net6.0; + netstandard2.0;netstandard2.1;net6.0; 10.0 Copyright 2018. SmallChi(Koike) @@ -8,7 +8,7 @@ https://github.com/SmallChi/JT808 https://github.com/SmallChi/JT808/blob/master/LICENSE https://github.com/SmallChi/JT808/blob/master/LICENSE - 2.4.5 + 2.4.6-preview1 LICENSE true latest diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj index b492c23..b3ca42d 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808.Protocol.Extensions.JT1078.Test.csproj @@ -7,7 +7,7 @@ - + all diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs index 634bf8a..800d5df 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs @@ -35,25 +35,25 @@ namespace JT808.Protocol.Extensions.JT1078.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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] diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808_0x0200Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808_0x0200Test.cs index 85513ea..d579e3e 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808_0x0200Test.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078.Test/JT808_0x0200Test.cs @@ -36,9 +36,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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() + CustomLocationAttachData = new Dictionary() }; - 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] diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs index 07f94de..1ce43c8 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs @@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 视频相关报警 /// 0x0200_0x14 /// - public class JT808_0x0200_0x14 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter,IJT808Analyze + public class JT808_0x0200_0x14 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter,IJT808Analyze { /// /// diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs index 00e1eb0..4d65c40 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs @@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 视频信号丢失报警状态 /// 0x0200_0x15 /// - public class JT808_0x0200_0x15 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x15 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs index 0989f42..ac27f0d 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs @@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 视频信号遮挡报警状态 /// 0x0200_0x16 /// - public class JT808_0x0200_0x16 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x16 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs index 5183308..7422308 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs @@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 存储器故障报警状态 /// 0x0200_0x17 /// - public class JT808_0x0200_0x17 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x17 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs index 8a203e3..a2df1a3 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs @@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 异常驾驶行为报警详细描述 /// 0x0200_0x18 /// - public class JT808_0x0200_0x18 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x18 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj index e90beb2..21cb343 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808.Protocol.Extensions.SuBiao.Test.csproj @@ -8,7 +8,7 @@ - + all diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x64_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x64_Test.cs index d0d81c1..b7c3489 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x64_Test.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x64_Test.cs @@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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("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); diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x65_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x65_Test.cs index 21ff0b3..78de17b 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x65_Test.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x65_Test.cs @@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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("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); diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x66_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x66_Test.cs index 56fbb5a..3a3ae3a 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x66_Test.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x66_Test.cs @@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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("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); diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x67_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x67_Test.cs index 2ba1912..865944f 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x67_Test.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao.Test/JT808_0x0200_0x67_Test.cs @@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions.SuBiao.Test Speed = 60, Direction = 0, StatusFlag = 2, - BasicLocationAttachData = new Dictionary() + CustomLocationAttachData = new Dictionary() }; - 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("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); diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x64.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x64.cs index 1bc5fd7..f0f6655 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x64.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x64.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody /// /// 高级驾驶辅助系统报警信息 /// - public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x64 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// 高级驾驶辅助系统报警信息Id diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x65.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x65.cs index 3158eea..990c62c 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x65.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x65.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody /// /// 驾驶员状态监测系统报警信息 /// - public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x65 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// 驾驶员状态监测系统报警信息Id diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x66.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x66.cs index 4b65974..9809cee 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x66.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x66.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody /// /// 胎压监测系统报警信息 /// - public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x66 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// 胎压监测系统报警信息Id diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs index 237ddfa..51b15ff 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x0200_0x67.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody /// /// 盲区监测系统报警信息 /// - public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x0200_0x67 : JT808_0x0200_CustomBodyBase, IJT808MessagePackFormatter, IJT808Analyze { /// /// 盲区监测系统报警信息Id diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj index 0adc375..026eea1 100644 --- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj +++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808.Protocol.Extensions.YueBiao.Test.csproj @@ -8,13 +8,13 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj index 27a360a..f563a55 100644 --- a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj +++ b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj @@ -108,7 +108,7 @@ - + diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs index 5700aa2..3e571e7 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs @@ -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(bytes); + var jT808_0X0200 = JT808Serializer.Deserialize(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 } } } diff --git a/src/JT808.Protocol/Extensions/JT808_0X0200_FactoryExtensions.cs b/src/JT808.Protocol/Extensions/JT808_0X0200_FactoryExtensions.cs new file mode 100644 index 0000000..c29322e --- /dev/null +++ b/src/JT808.Protocol/Extensions/JT808_0X0200_FactoryExtensions.cs @@ -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 +{ + /// + /// 0200扩展 + /// + public static class JT808_0X0200_FactoryExtensions + { + /// + /// 根据不同的版本号进行附加保留位判断 + /// + /// + 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; + } + } + } +} diff --git a/src/JT808.Protocol/JT808.Protocol.csproj b/src/JT808.Protocol/JT808.Protocol.csproj index 685cb02..702ee1b 100644 --- a/src/JT808.Protocol/JT808.Protocol.csproj +++ b/src/JT808.Protocol/JT808.Protocol.csproj @@ -56,23 +56,18 @@ - + - + - - - - - diff --git a/src/JT808.Protocol/JT808.Protocol.xml b/src/JT808.Protocol/JT808.Protocol.xml index 1090f9e..2f3ceb6 100644 --- a/src/JT808.Protocol/JT808.Protocol.xml +++ b/src/JT808.Protocol/JT808.Protocol.xml @@ -3872,6 +3872,17 @@ + + + 0200扩展 + + + + + 根据不同的版本号进行附加保留位判断 + + + 终端控制 命令参数扩展 diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs index 452ba14..f96bc14 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs @@ -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 {