From adaa563151593a08921b2d59408f0cb6ea5dd4b7 Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Sat, 22 May 2021 14:04:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E4=B8=BB=E5=8A=A8=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E6=89=A9=E5=B1=95808=E7=9A=84=E9=A1=B9=E7=9B=AE=E7=A7=BB?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dotnetcore.yml | 6 +- README.md | 33 - ...ocol.Extensions.JTActiveSafety.Test.csproj | 30 - .../JT808_0x0200_0x64_Test.cs | 100 - .../JT808_0x0200_0x65_Test.cs | 94 - .../JT808_0x0200_0x66_Test.cs | 114 - .../JT808_0x0200_0x67_Test.cs | 89 - .../JT808_0x0900_Test.cs | 120 - .../JT808_0x1210_Test.cs | 81 - .../JT808_0x1211_Test.cs | 50 - .../JT808_0x1212_Test.cs | 44 - .../JT808_0x8103_0xF364_Test.cs | 139 -- .../JT808_0x8103_0xF365_Test.cs | 116 - .../JT808_0x8103_0xF366_Test.cs | 69 - .../JT808_0x8103_0xF367_Test.cs | 51 - .../JT808_0x8900_Test.cs | 46 - .../JT808_0x9208_Test.cs | 64 - .../JT808_0x9212_Test.cs | 66 - .../Enums/ActivePhotographyStrategyType.cs | 33 - .../Enums/JT808_JTActiveSafety_MsgId.cs | 33 - .../Enums/PhotoResolutionType.cs | 41 - .../Enums/USBIDType.cs | 29 - .../Enums/VideoRecordingResolutionType.cs | 45 - .../Enums/WorkingConditionType.cs | 33 - ....Protocol.Extensions.JTActiveSafety.csproj | 36 - ...808.Protocol.Extensions.JTActiveSafety.xml | 2028 ----------------- .../JT808_JTActiveSafety_Constants.cs | 53 - ...tiveSafetyDependencyInjectionExtensions.cs | 28 - .../MessageBody/JT808_0x0200_0x64.cs | 344 --- .../MessageBody/JT808_0x0200_0x65.cs | 295 --- .../MessageBody/JT808_0x0200_0x66.cs | 312 --- .../MessageBody/JT808_0x0200_0x67.cs | 279 --- .../MessageBody/JT808_0x0900_0xF7.cs | 122 - .../MessageBody/JT808_0x0900_0xF8.cs | 175 -- .../MessageBody/JT808_0x1210.cs | 175 -- .../MessageBody/JT808_0x1211.cs | 87 - .../MessageBody/JT808_0x1212.cs | 87 - .../MessageBody/JT808_0x8103_0xF364.cs | 456 ---- .../MessageBody/JT808_0x8103_0xF365.cs | 365 --- .../MessageBody/JT808_0x8103_0xF366.cs | 151 -- .../MessageBody/JT808_0x8103_0xF367.cs | 77 - .../MessageBody/JT808_0x8900_0xF7.cs | 89 - .../MessageBody/JT808_0x8900_0xF8.cs | 89 - .../MessageBody/JT808_0x9208.cs | 139 -- .../MessageBody/JT808_0x9212.cs | 139 -- .../Metadata/AlarmIdentificationProperty.cs | 34 - .../Metadata/AlarmOrEventProperty.cs | 33 - .../Metadata/AttachProperty.cs | 26 - .../Metadata/DataPackageProperty.cs | 21 - .../Metadata/JT808_0x0900_0xF7_USB.cs | 31 - .../Metadata/JT808_0x0900_0xF8_USB.cs | 72 - src/JTActiveSafety.sln | 12 - 52 files changed, 1 insertion(+), 7280 deletions(-) delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x66_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x67_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0900_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1212_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF364_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF365_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/ActivePhotographyStrategyType.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/JT808_JTActiveSafety_MsgId.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/PhotoResolutionType.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/VideoRecordingResolutionType.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Enums/WorkingConditionType.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/JTActiveSafetyDependencyInjectionExtensions.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmIdentificationProperty.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmOrEventProperty.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AttachProperty.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/DataPackageProperty.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml index 9f89175..f3cef7c 100644 --- a/.github/workflows/dotnetcore.yml +++ b/.github/workflows/dotnetcore.yml @@ -18,8 +18,4 @@ jobs: - name: dotnet restore run: dotnet restore ./src/JTActiveSafety.sln - name: dotnet JTActiveSafety.Protocol build - run: dotnet build ./src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj - - name: dotnet JT808.Protocol.Extensions.JTActiveSafety build - run: dotnet test ./src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj - - name: dotnet JT808.Protocol.Extensions.JTActiveSafety test - run: dotnet test ./src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj \ No newline at end of file + run: dotnet build ./src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj \ No newline at end of file diff --git a/README.md b/README.md index 52a9ffd..cfb6711 100644 --- a/README.md +++ b/README.md @@ -12,37 +12,4 @@ JTActiveSafety协议、道路运输车辆主动安全智能防控系统-主动 | Package Name | Version | Downloads| Remark | | --------------------- | -------------------------------------------------- | --------------------------------------------------- |--------------------------------------------------- | | Install-Package JTActiveSafety| ![JTActiveSafety](https://img.shields.io/nuget/v/JTActiveSafety.svg) | ![JT808](https://img.shields.io/nuget/dt/JTActiveSafety.svg) |主动安全的附件协议| -| Install-Package JT808 | ![JT808](https://img.shields.io/nuget/v/JT808.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.svg) |基础JT808协议| -| Install-Package JT808.Protocol.Extensions.JTActiveSafety| ![JT808.Protocol.Extensions.JTActiveSafety](https://img.shields.io/nuget/v/JT808.Protocol.Extensions.JTActiveSafety.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.Protocol.Extensions.JTActiveSafety.svg) |基于JT808扩展的JTActiveSafety消息协议| -### JT808扩展协议消息对照表 - -| 序号 | 消息ID | 完成情况 | 测试情况 | 消息体名称 | -| :---: | :---: | :---: | :---: | :---:| -| 1 | 0x1210 | √ | √ | 报警附件信息消息 | -| 2 | 0x1211 | √ | √ | 文件信息上传 | -| 3 | 0x1212 | √ | √ | 文件上传完成消息 | -| 4 | 0x9208 | √ | √ | 报警附件上传指令 | -| 5 | 0x9212 | √ | √ | 文件上传完成消息应答 | -| 6 | 0x0200_0x64 | √ | √ | 高级驾驶辅助系统报警信息 | -| 7 | 0x0200_0x65 | √ | √ | 驾驶员状态监测系统报警信息 | -| 8 | 0x0200_0x66 | √ | √ | 胎压监测系统报警信息 | -| 9 | 0x0200_0x67 | √ | √ | 盲区监测系统报警信息 | -| 10 | 0x8103_0xF364 | √ | √ | 高级驾驶辅助系统参数 | -| 11 | 0x8103_0xF365 | √ | √ | 驾驶员状态监测系统参数 | -| 12 | 0x8103_0xF366 | √ | √ | 胎压监测系统参数 | -| 13 | 0x8103_0xF367 | √ | √ | 盲区监测系统参数 | -| 14 | 0x0900 | √ | √ | 上传基本信息 | -| 15 | 0x0900_0xF7 | √ | √ | 外设工作状态 | -| 16 | 0x0900_0xF8 | √ | √ | 外设系统信息 | -| 17 | 0x8900 | √ | √ | 查询基本信息 | -| 18 | 0x8900_0xF7 | √ | √ | 外设工作状态 | -| 19 | 0x8900_0xF8 | √ | √ | 外设系统信息 | - -### 使用方法 - -```dotnet -IServiceCollection serviceDescriptors1 = new ServiceCollection(); -serviceDescriptors1.AddJT808Configure() - .AddJTActiveSafetyConfigure(); -``` diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj deleted file mode 100644 index c7ce9d9..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808.Protocol.Extensions.JTActiveSafety.Test.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net5.0 - - false - - - - - - True - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs deleted file mode 100644 index 91f92d8..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs +++ /dev/null @@ -1,100 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x0200_0x64_Test - { - JT808Serializer JT808Serializer; - public JT808_0x0200_0x64_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200 - { - AlarmFlag = 1, - Altitude = 40, - GPSTime = DateTime.Parse("2018-07-15 10:10:10"), - Lat = 12222222, - Lng = 132444444, - Speed = 60, - Direction = 0, - StatusFlag = 2, - JT808LocationAttachData = new Dictionary() - }; - jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808_JTActiveSafety_Constants.JT808_0X0200_0x64, new JT808_0x0200_0x64 - { - AlarmId = 1, - AlarmIdentification = new Metadata.AlarmIdentificationProperty - { - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AlarmLevel = 5, - AlarmOrEventType = 6, - AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), - Altitude = 7, - CarOrPedestrianDistanceAhead = 10, - DeviateType = 11, - FlagState = 12, - Latitude = 13, - Longitude = 14, - RoadSignIdentificationData = 15, - RoadSignIdentificationType = 16, - Speed = 17, - VehicleSpeed = 18, - VehicleState = 19 - }); - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_JTActiveSafety_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); - Assert.Equal(3, jT808_0X0200_0X64.AlarmIdentification.SN); - Assert.Equal("4444444", jT808_0X0200_0X64.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X64.AlarmIdentification.Time); - Assert.Equal(5, jT808_0X0200_0X64.AlarmLevel); - Assert.Equal(6, jT808_0X0200_0X64.AlarmOrEventType); - Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X64.AlarmTime); - Assert.Equal(7, jT808_0X0200_0X64.Altitude); - Assert.Equal(0x64, jT808_0X0200_0X64.AttachInfoId); - Assert.Equal(32, jT808_0X0200_0X64.AttachInfoLength); - Assert.Equal(10, jT808_0X0200_0X64.CarOrPedestrianDistanceAhead); - Assert.Equal(11, jT808_0X0200_0X64.DeviateType); - Assert.Equal(12, jT808_0X0200_0X64.FlagState); - Assert.Equal(13, jT808_0X0200_0X64.Latitude); - Assert.Equal(14, jT808_0X0200_0X64.Longitude); - Assert.Equal(15, jT808_0X0200_0X64.RoadSignIdentificationData); - Assert.Equal(16, jT808_0X0200_0X64.RoadSignIdentificationType); - Assert.Equal(17, jT808_0X0200_0X64.Speed); - Assert.Equal(18, jT808_0X0200_0X64.VehicleSpeed); - Assert.Equal(19, jT808_0X0200_0X64.VehicleState); - } - - [Fact] - public void Deserialize1() - { - var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs deleted file mode 100644 index ccef77b..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs +++ /dev/null @@ -1,94 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x0200_0x65_Test - { - JT808Serializer JT808Serializer; - public JT808_0x0200_0x65_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200 - { - AlarmFlag = 1, - Altitude = 40, - GPSTime = DateTime.Parse("2018-07-15 10:10:10"), - Lat = 12222222, - Lng = 132444444, - Speed = 60, - Direction = 0, - StatusFlag = 2, - JT808LocationAttachData = new Dictionary() - }; - jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808_JTActiveSafety_Constants.JT808_0X0200_0x65, new JT808_0x0200_0x65 - { - AlarmId = 1, - AlarmIdentification = new Metadata.AlarmIdentificationProperty - { - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AlarmLevel = 5, - AlarmOrEventType = 6, - AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), - Altitude = 7, - Retain=new byte[] { 1, 2, 3, 4 }, - FlagState = 12, - Latitude = 13, - Longitude = 14, - Speed = 17, - Fatigue=18, - VehicleState = 19 - }); - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010652F000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("000000010000000200BA7F0E07E4F11C0028003C00001807151010106520000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_JTActiveSafety_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); - Assert.Equal(3, jT808_0X0200_0X65.AlarmIdentification.SN); - Assert.Equal("4444444", jT808_0X0200_0X65.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X65.AlarmIdentification.Time); - Assert.Equal(5, jT808_0X0200_0X65.AlarmLevel); - Assert.Equal(6, jT808_0X0200_0X65.AlarmOrEventType); - Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X65.AlarmTime); - Assert.Equal(7, jT808_0X0200_0X65.Altitude); - Assert.Equal(0x65, jT808_0X0200_0X65.AttachInfoId); - Assert.Equal(32, jT808_0X0200_0X65.AttachInfoLength); - Assert.Equal(new byte[] { 1, 2, 3, 4 }.ToHexString(), jT808_0X0200_0X65.Retain.ToHexString()); - Assert.Equal(12, jT808_0X0200_0X65.FlagState); - Assert.Equal(13, jT808_0X0200_0X65.Latitude); - Assert.Equal(14, jT808_0X0200_0X65.Longitude); - Assert.Equal(17, jT808_0X0200_0X65.Speed); - Assert.Equal(18, jT808_0X0200_0X65.Fatigue); - Assert.Equal(19, jT808_0X0200_0X65.VehicleState); - } - - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C00001807151010106520000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x66_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x66_Test.cs deleted file mode 100644 index 76cb5ca..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x66_Test.cs +++ /dev/null @@ -1,114 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x0200_0x66_Test - { - JT808Serializer JT808Serializer; - public JT808_0x0200_0x66_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200 - { - AlarmFlag = 1, - Altitude = 40, - GPSTime = DateTime.Parse("2018-07-15 10:10:10"), - Lat = 12222222, - Lng = 132444444, - Speed = 60, - Direction = 0, - StatusFlag = 2, - JT808LocationAttachData = new Dictionary() - }; - jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808_JTActiveSafety_Constants.JT808_0X0200_0x66, new JT808_0x0200_0x66 - { - AlarmId = 1, - AlarmIdentification = new Metadata.AlarmIdentificationProperty - { - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), - Altitude = 7, - AlarmOrEventCount = 2, - AlarmOrEvents = new List { - new Metadata.AlarmOrEventProperty{ - AlarmOrEventType=1, - BatteryLevel=2, - TirePressure=3, - TirePressureAlarmPosition=4, - TireTemperature=5 - }, - new Metadata.AlarmOrEventProperty{ - AlarmOrEventType=6, - BatteryLevel=7, - TirePressure=8, - TirePressureAlarmPosition=9, - TireTemperature=10 - } - }, - FlagState = 12, - Latitude = 13, - Longitude = 14, - Speed = 17, - VehicleState = 19 - }); - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007", hex); - } - - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes()); - jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_JTActiveSafety_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); - Assert.Equal(3, jT808_0X0200_0X66.AlarmIdentification.SN); - Assert.Equal("4444444", jT808_0X0200_0X66.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X66.AlarmIdentification.Time); - Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X66.AlarmTime); - Assert.Equal(7, jT808_0X0200_0X66.Altitude); - Assert.Equal(2, jT808_0X0200_0X66.AlarmOrEventCount); - Assert.Equal(1, jT808_0X0200_0X66.AlarmOrEvents[0].AlarmOrEventType); - Assert.Equal(2, jT808_0X0200_0X66.AlarmOrEvents[0].BatteryLevel); - Assert.Equal(3, jT808_0X0200_0X66.AlarmOrEvents[0].TirePressure); - Assert.Equal(4, jT808_0X0200_0X66.AlarmOrEvents[0].TirePressureAlarmPosition); - Assert.Equal(5, jT808_0X0200_0X66.AlarmOrEvents[0].TireTemperature); - Assert.Equal(6, jT808_0X0200_0X66.AlarmOrEvents[1].AlarmOrEventType); - Assert.Equal(7, jT808_0X0200_0X66.AlarmOrEvents[1].BatteryLevel); - Assert.Equal(8, jT808_0X0200_0X66.AlarmOrEvents[1].TirePressure); - Assert.Equal(9, jT808_0X0200_0X66.AlarmOrEvents[1].TirePressureAlarmPosition); - Assert.Equal(10, jT808_0X0200_0X66.AlarmOrEvents[1].TireTemperature); - Assert.Equal(0x66, jT808_0X0200_0X66.AttachInfoId); - Assert.Equal(12, jT808_0X0200_0X66.FlagState); - Assert.Equal(13, jT808_0X0200_0X66.Latitude); - Assert.Equal(14, jT808_0X0200_0X66.Longitude); - Assert.Equal(17, jT808_0X0200_0X66.Speed); - Assert.Equal(19, jT808_0X0200_0X66.VehicleState); - } - - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x67_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x67_Test.cs deleted file mode 100644 index ac19c82..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x67_Test.cs +++ /dev/null @@ -1,89 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x0200_0x67_Test - { - JT808Serializer JT808Serializer; - public JT808_0x0200_0x67_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200 - { - AlarmFlag = 1, - Altitude = 40, - GPSTime = DateTime.Parse("2018-07-15 10:10:10"), - Lat = 12222222, - Lng = 132444444, - Speed = 60, - Direction = 0, - StatusFlag = 2, - JT808LocationAttachData = new Dictionary() - }; - jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808_JTActiveSafety_Constants.JT808_0X0200_0x67, new JT808_0x0200_0x67 - { - AlarmId = 1, - AlarmIdentification = new Metadata.AlarmIdentificationProperty - { - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), - Altitude = 7, - AlarmLevel=8, - AlarmOrEventType=9, - FlagState = 12, - Latitude = 13, - Longitude = 14, - Speed = 17, - VehicleState = 19 - }); - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010671A000000010C09081100070000000D0000000E191211183100001334343434343434191210183100030200", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("000000010000000200BA7F0E07E4F11C0028003C0000180715101010671A000000010C09081100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_JTActiveSafety_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); - Assert.Equal(3, jT808_0X0200_0X67.AlarmIdentification.SN); - Assert.Equal("4444444", jT808_0X0200_0X67.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X67.AlarmIdentification.Time); - Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X67.AlarmTime); - Assert.Equal(7, jT808_0X0200_0X67.Altitude); - Assert.Equal(8, jT808_0X0200_0X67.AlarmLevel); - Assert.Equal(9, jT808_0X0200_0X67.AlarmOrEventType); - Assert.Equal(0x67, jT808_0X0200_0X67.AttachInfoId); - Assert.Equal(26, jT808_0X0200_0X67.AttachInfoLength); - Assert.Equal(12, jT808_0X0200_0X67.FlagState); - Assert.Equal(13, jT808_0X0200_0X67.Latitude); - Assert.Equal(14, jT808_0X0200_0X67.Longitude); - Assert.Equal(17, jT808_0X0200_0X67.Speed); - Assert.Equal(19, jT808_0X0200_0X67.VehicleState); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C0000180715101010671A000000010C09081100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0900_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0900_Test.cs deleted file mode 100644 index 1cffc5e..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0900_Test.cs +++ /dev/null @@ -1,120 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x0900_Test - { - JT808Serializer JT808Serializer; - public JT808_0x0900_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - - [Fact] - public void Test_0xF7_1() - { - JT808_0x0900_0xF7 jT808_0x0900_0xF7 = new JT808_0x0900_0xF7 - { - USBMessageCount = 2, - USBMessages = new List { - new JT808_0x0900_0xF7_USB { - USBID = 1, - AlarmStatus = 1, - WorkingCondition = 2 - }, - new JT808_0x0900_0xF7_USB { - USBID = 2, - AlarmStatus = 1, - WorkingCondition = 2 - } - } - }; - var hex = JT808Serializer.Serialize(jT808_0x0900_0xF7).ToHexString(); - Assert.Equal("020105020000000102050200000001", hex); - } - - [Fact] - public void Test_0xF7_2() - { - var jT808_0x0900_0xF7 = JT808Serializer.Deserialize("020105020000000102050200000001".ToHexBytes()); - - Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7, jT808_0x0900_0xF7.PassthroughType); - Assert.Equal(2, jT808_0x0900_0xF7.USBMessageCount); - Assert.Equal(1, jT808_0x0900_0xF7.USBMessages[0].USBID); - Assert.Equal(5, jT808_0x0900_0xF7.USBMessages[0].MessageLength); - Assert.Equal(2, jT808_0x0900_0xF7.USBMessages[0].WorkingCondition); - Assert.Equal(1u, jT808_0x0900_0xF7.USBMessages[0].AlarmStatus); - - Assert.Equal(2, jT808_0x0900_0xF7.USBMessages[1].USBID); - Assert.Equal(5, jT808_0x0900_0xF7.USBMessages[1].MessageLength); - Assert.Equal(2, jT808_0x0900_0xF7.USBMessages[1].WorkingCondition); - Assert.Equal(1u, jT808_0x0900_0xF7.USBMessages[1].AlarmStatus); - } - - [Fact] - public void Test_0xF7_3() - { - var json = JT808Serializer.Analyze("020105020000000102050200000001".ToHexBytes()); - } - - [Fact] - public void Test_0xF8_1() - { - JT808_0x0900_0xF8 jT808_0x0900_0xF8 = new JT808_0x0900_0xF8 - { - USBMessageCount = 1, - USBMessages = new List { - new JT808_0x0900_0xF8_USB { - USBID = 1, - CompantName = "CompantName", - CustomerCode = "CustomerCode", - DevicesID = "DevicesID", - HardwareVersionNumber = "HardwareVersionNumber", - ProductModel = "ProductModel", - SoftwareVersionNumber = "SoftwareVersionNumber" - } - } - }; - var hex = JT808Serializer.Serialize(jT808_0x0900_0xF8).ToHexString(); - Assert.Equal("01015C0B436F6D70616E744E616D650C50726F647563744D6F64656C15486172647761726556657273696F6E4E756D62657215536F66747761726556657273696F6E4E756D626572094465766963657349440C437573746F6D6572436F6465", hex); - } - - [Fact] - public void Test_0xF8_2() - { - var jT808_0x0900_0xF8 = JT808Serializer.Deserialize("01015C0B436F6D70616E744E616D650C50726F647563744D6F64656C15486172647761726556657273696F6E4E756D62657215536F66747761726556657273696F6E4E756D626572094465766963657349440C437573746F6D6572436F6465".ToHexBytes()); - Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8, jT808_0x0900_0xF8.PassthroughType); - Assert.Equal(1, jT808_0x0900_0xF8.USBMessageCount); - Assert.Equal(1, jT808_0x0900_0xF8.USBMessages[0].USBID); - Assert.Equal("CompantName", jT808_0x0900_0xF8.USBMessages[0].CompantName); - Assert.Equal("CompantName".Length, jT808_0x0900_0xF8.USBMessages[0].CompantNameLength); - Assert.Equal("CustomerCode", jT808_0x0900_0xF8.USBMessages[0].CustomerCode); - Assert.Equal("CustomerCode".Length, jT808_0x0900_0xF8.USBMessages[0].CustomerCodeLength); - Assert.Equal("DevicesID", jT808_0x0900_0xF8.USBMessages[0].DevicesID); - Assert.Equal("DevicesID".Length, jT808_0x0900_0xF8.USBMessages[0].DevicesIDLength); - Assert.Equal("HardwareVersionNumber", jT808_0x0900_0xF8.USBMessages[0].HardwareVersionNumber); - Assert.Equal("HardwareVersionNumber".Length, jT808_0x0900_0xF8.USBMessages[0].HardwareVersionNumberLength); - Assert.Equal("ProductModel", jT808_0x0900_0xF8.USBMessages[0].ProductModel); - Assert.Equal("ProductModel".Length, jT808_0x0900_0xF8.USBMessages[0].ProductModelLength); - Assert.Equal("SoftwareVersionNumber", jT808_0x0900_0xF8.USBMessages[0].SoftwareVersionNumber); - Assert.Equal("SoftwareVersionNumber".Length, jT808_0x0900_0xF8.USBMessages[0].SoftwareVersionNumberLength); - } - - [Fact] - public void Test_0xF8_3() - { - var json = JT808Serializer.Analyze("01015C0B436F6D70616E744E616D650C50726F647563744D6F64656C15486172647761726556657273696F6E4E756D62657215536F66747761726556657273696F6E4E756D626572094465766963657349440C437573746F6D6572436F6465".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs deleted file mode 100644 index f250bf5..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs +++ /dev/null @@ -1,81 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x1210_Test - { - JT808Serializer JT808Serializer; - public JT808_0x1210_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x1210 jT808UploadLocationRequest = new JT808_0x1210 - { - AlarmId = "11111111111111111111111111111111", - AlarmIdentification = new Metadata.AlarmIdentificationProperty - { - Retain = 1, - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AttachInfos = new List { - new Metadata.AttachProperty{ - FileName="filename", - FileSize=9 - }, - new Metadata.AttachProperty{ - FileName="filename1", - FileSize=10 - } - }, - MakerID = "4444444", - InfoType = 0 - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("3434343434343434343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100020866696C656E616D65000000090966696C656E616D65310000000A", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("3434343434343434343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100020866696C656E616D65000000090966696C656E616D65310000000A".ToHexBytes()); - Assert.Equal("11111111111111111111111111111111", jT808UploadLocationRequest.AlarmId); - Assert.Equal(2, jT808UploadLocationRequest.AlarmIdentification.AttachCount); - Assert.Equal(3, jT808UploadLocationRequest.AlarmIdentification.SN); - Assert.Equal("4444444", jT808UploadLocationRequest.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808UploadLocationRequest.AlarmIdentification.Time); - Assert.Equal(2, jT808UploadLocationRequest.AttachCount); - - Assert.Equal("filename", jT808UploadLocationRequest.AttachInfos[0].FileName); - Assert.Equal(8, jT808UploadLocationRequest.AttachInfos[0].FileNameLength); - Assert.Equal(9u, jT808UploadLocationRequest.AttachInfos[0].FileSize); - - Assert.Equal("filename1", jT808UploadLocationRequest.AttachInfos[1].FileName); - Assert.Equal(9, jT808UploadLocationRequest.AttachInfos[1].FileNameLength); - Assert.Equal(10u, jT808UploadLocationRequest.AttachInfos[1].FileSize); - - Assert.Equal("4444444", jT808UploadLocationRequest.MakerID); - Assert.Equal(0, jT808UploadLocationRequest.InfoType); - - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("3434343434343434343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100020866696C656E616D65000000090966696C656E616D65310000000A".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs deleted file mode 100644 index 96f24a0..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs +++ /dev/null @@ -1,50 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x1211_Test - { - JT808Serializer JT808Serializer; - public JT808_0x1211_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x1211 jT808UploadLocationRequest = new JT808_0x1211 - { - FileName= "FileName", - FileSize=1, - FileType=2 - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("0846696C654E616D650200000001", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("0846696C654E616D650200000001".ToHexBytes()); - Assert.Equal("FileName", jT808UploadLocationRequest.FileName); - Assert.Equal(1u, jT808UploadLocationRequest.FileSize); - Assert.Equal(2, jT808UploadLocationRequest.FileType); - Assert.Equal("FileName".Length, jT808UploadLocationRequest.FileNameLength); - } - - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("0846696C654E616D650200000001".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1212_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1212_Test.cs deleted file mode 100644 index f91515f..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1212_Test.cs +++ /dev/null @@ -1,44 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x1212_Test - { - JT808Serializer JT808Serializer; - public JT808_0x1212_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x1212 jT808UploadLocationRequest = new JT808_0x1212 - { - FileName= "FileName", - FileSize=1, - FileType=2 - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("0846696C654E616D650200000001", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("0846696C654E616D650200000001".ToHexBytes()); - Assert.Equal("FileName", jT808UploadLocationRequest.FileName); - Assert.Equal(1u, jT808UploadLocationRequest.FileSize); - Assert.Equal(2, jT808UploadLocationRequest.FileType); - Assert.Equal("FileName".Length, jT808UploadLocationRequest.FileNameLength); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF364_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF364_Test.cs deleted file mode 100644 index d00b610..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF364_Test.cs +++ /dev/null @@ -1,139 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x8103_0xF364_Test - { - JT808Serializer JT808Serializer; - public JT808_0x8103_0xF364_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 - { - ParamList=new List { - new JT808_0x8103_0xF364{ - ActiveDistancePhotographyDistanceInterval=1, - ActivelyTimePhotoInterval=2, - ActivePhotographyStrategy=3, - AlarmEnable=4, - AlarmJudgeSpeedThreshold=5, - AlarmPhotoVehicleCloseDistance=6, - AlarmPhotoVehicleCloseDistanceInterval=7, - BarrierAlarmPhotographs=8, - DistanceThresholdObstacleAlarm=9, - EventEnable=10, - ForwardCollisionAlarmInterval=11, - ForwardCollisionAlarmPhotographs=12, - ForwardCollisionWarningTimeThreshold=13, - FrequentAlarmJudgmentNumberChannelChange=14, - FrequentChannelChangeAlarmJudgmentTimePeriod=15, - FrequentChannelChangeAlarmPhotos=16, - FrequentLaneChangeAlarmInterval=17, - GradedSpeedThresholdLaneDeviationAlarm=18, - HierarchicalSpeedThresholdForwardCollisionWarning=19, - HierarchicalSpeedThresholdFrequentChannelChangeAlarm=20, - HierarchicalSpeedThresholdObstacleAlarm=21, - LaneDepartureAlarmPhoto=22, - LaneDepartureAlarmPhotoInterval=23, - ObstacleAlarmInterval=24, - PedestrianCollisionAlarmEnablingSpeedThreshold=25, - PedestrianCollisionAlarmInterval=26, - PedestrianCollisionAlarmPhotos=27, - PedestrianCollisionAlarmTimeThreshold=28, - PhotoResolution=29, - Placeholder1=30, - Placeholder2=new byte[]{1,2,3,4 }, - RoadSignRecognitionPhotographs=32, - RoadSignRecognitionPhotographsInterval=33, - SingleInitiativePhotos=34, - SingleInitiativePhotosInterval=35, - VehicleDistanceMonitoringAlarmDistanceThreshold=36, - VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold=37, - VideoRecordingResolution=38, - VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity=39, - VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm=40, - VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm=41, - VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm=42, - VideoRecordingTimeBeforeAndAfterObstacleAlarm=43, - VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm=44, - WarningVolume=45 - } - } - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes()); - JT808_0x8103_0xF364 jT808_0X8103_0XF364 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF364; - Assert.Equal(1, jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval); - Assert.Equal(2, jT808_0X8103_0XF364.ActivelyTimePhotoInterval); - Assert.Equal(3, jT808_0X8103_0XF364.ActivePhotographyStrategy); - Assert.Equal(4u, jT808_0X8103_0XF364.AlarmEnable); - Assert.Equal(5, jT808_0X8103_0XF364.AlarmJudgeSpeedThreshold); - Assert.Equal(6, jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistance); - Assert.Equal(7, jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistanceInterval); - Assert.Equal(8, jT808_0X8103_0XF364.BarrierAlarmPhotographs); - Assert.Equal(9, jT808_0X8103_0XF364.DistanceThresholdObstacleAlarm); - Assert.Equal(10u, jT808_0X8103_0XF364.EventEnable); - Assert.Equal(11, jT808_0X8103_0XF364.ForwardCollisionAlarmInterval); - Assert.Equal(12, jT808_0X8103_0XF364.ForwardCollisionAlarmPhotographs); - Assert.Equal(13, jT808_0X8103_0XF364.ForwardCollisionWarningTimeThreshold); - Assert.Equal(14, jT808_0X8103_0XF364.FrequentAlarmJudgmentNumberChannelChange); - Assert.Equal(15, jT808_0X8103_0XF364.FrequentChannelChangeAlarmJudgmentTimePeriod); - Assert.Equal(16, jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos); - Assert.Equal(17, jT808_0X8103_0XF364.FrequentLaneChangeAlarmInterval); - Assert.Equal(18, jT808_0X8103_0XF364.GradedSpeedThresholdLaneDeviationAlarm); - Assert.Equal(19, jT808_0X8103_0XF364.HierarchicalSpeedThresholdForwardCollisionWarning); - Assert.Equal(20, jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); - Assert.Equal(21, jT808_0X8103_0XF364.HierarchicalSpeedThresholdObstacleAlarm); - Assert.Equal(22, jT808_0X8103_0XF364.LaneDepartureAlarmPhoto); - Assert.Equal(23, jT808_0X8103_0XF364.LaneDepartureAlarmPhotoInterval); - Assert.Equal(24, jT808_0X8103_0XF364.ObstacleAlarmInterval); - Assert.Equal(25, jT808_0X8103_0XF364.PedestrianCollisionAlarmEnablingSpeedThreshold); - Assert.Equal(26, jT808_0X8103_0XF364.PedestrianCollisionAlarmInterval); - Assert.Equal(27, jT808_0X8103_0XF364.PedestrianCollisionAlarmPhotos); - Assert.Equal(28, jT808_0X8103_0XF364.PedestrianCollisionAlarmTimeThreshold); - Assert.Equal(29, jT808_0X8103_0XF364.PhotoResolution); - Assert.Equal(30, jT808_0X8103_0XF364.Placeholder1); - Assert.Equal(new byte[] { 1, 2, 3, 4 }.ToHexString(), jT808_0X8103_0XF364.Placeholder2.ToHexString()); - Assert.Equal(32, jT808_0X8103_0XF364.RoadSignRecognitionPhotographs); - Assert.Equal(33, jT808_0X8103_0XF364.RoadSignRecognitionPhotographsInterval); - Assert.Equal(34, jT808_0X8103_0XF364.SingleInitiativePhotos); - Assert.Equal(35, jT808_0X8103_0XF364.SingleInitiativePhotosInterval); - Assert.Equal(36, jT808_0X8103_0XF364.VehicleDistanceMonitoringAlarmDistanceThreshold); - Assert.Equal(37, jT808_0X8103_0XF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); - Assert.Equal(38, jT808_0X8103_0XF364.VideoRecordingResolution); - Assert.Equal(39, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); - Assert.Equal(40, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm); - Assert.Equal(41, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); - Assert.Equal(42, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); - Assert.Equal(43, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterObstacleAlarm); - Assert.Equal(44, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); - Assert.Equal(45, jT808_0X8103_0XF364.WarningVolume); - Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364, jT808_0X8103_0XF364.ParamId); - } - - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF365_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF365_Test.cs deleted file mode 100644 index 9e1e511..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF365_Test.cs +++ /dev/null @@ -1,116 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x8103_0xF365_Test - { - JT808Serializer JT808Serializer; - public JT808_0x8103_0xF365_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 - { - ParamList=new List { - new JT808_0x8103_0xF365{ - ActiveDistancePhotographyDistanceInterval=1, - ActivelyTimePhotoInterval=2, - ActivePhotographyStrategy=3, - AlarmEnable=4, - AlarmJudgeSpeedThreshold=5, - EventEnable=10, - PhotoResolution=29, - SingleInitiativePhotos=34, - SingleInitiativePhotosInterval=35, - VideoRecordingResolution=38, - WarningVolume=45, - CallAlarmDetermineTimeInterval=46, - CallAlarmTakePicturesDriverFacialFeatures=47, - CallAlarmTakePicturesDriverFacialFeaturesInterval=48, - ClassifiedSpeedThresholdCallAlarm=49, - ClassifiedSpeedThresholdDistractedDrivingAlarm=50, - ClassifiedSpeedThresholdSmokingAlarm=51, - DistractedDrivingAlarmPhotography=52, - DistractedDrivingAlarmPhotographyInterval=53, - DriverIdentificationTrigger=54, - FatigueDrivingAlarmPhotograph=55, - FatigueDrivingAlarmPhotographInterval=56, - GradedSpeedThresholdFatigueDrivingAlarm=57, - PhotographsAbnormalDrivingBehavior=58, - PictureIntervalAbnormalDrivingBehavior=59, - Reserve=new byte[]{1,2,3 }, - Retain=new byte[]{5,6 }, - SmokingAlarmPhotographsDriverFaceCharacteristics=60, - SmokingAlarmPhotographsDriverFaceCharacteristicsInterval=61, - TimeIntervalSmokingAlarmJudgment=62, - VideoRecordingTimeAbnormalDrivingBehavior=63, - VideoRecordingTimeBeforeAndAfterCallAlarm=64, - VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm=65, - VideoRecordingTimeBeforeAndAfterSmokingAlarm=66 - } - } - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); - JT808_0x8103_0xF365 jT808_0X8103_0XF365 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF365; - Assert.Equal(1, jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval); - Assert.Equal(2, jT808_0X8103_0XF365.ActivelyTimePhotoInterval); - Assert.Equal(3, jT808_0X8103_0XF365.ActivePhotographyStrategy); - Assert.Equal(4u, jT808_0X8103_0XF365.AlarmEnable); - Assert.Equal(5, jT808_0X8103_0XF365.AlarmJudgeSpeedThreshold); - Assert.Equal(10u, jT808_0X8103_0XF365.EventEnable); - Assert.Equal(29, jT808_0X8103_0XF365.PhotoResolution); - Assert.Equal(34, jT808_0X8103_0XF365.SingleInitiativePhotos); - Assert.Equal(35, jT808_0X8103_0XF365.SingleInitiativePhotosInterval); - Assert.Equal(38, jT808_0X8103_0XF365.VideoRecordingResolution); - Assert.Equal(45, jT808_0X8103_0XF365.WarningVolume); - Assert.Equal(46, jT808_0X8103_0XF365.CallAlarmDetermineTimeInterval); - Assert.Equal(47, jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeatures); - Assert.Equal(48, jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeaturesInterval); - Assert.Equal(49, jT808_0X8103_0XF365.ClassifiedSpeedThresholdCallAlarm); - Assert.Equal(50, jT808_0X8103_0XF365.ClassifiedSpeedThresholdDistractedDrivingAlarm); - Assert.Equal(51, jT808_0X8103_0XF365.ClassifiedSpeedThresholdSmokingAlarm); - Assert.Equal(52, jT808_0X8103_0XF365.DistractedDrivingAlarmPhotography); - Assert.Equal(53, jT808_0X8103_0XF365.DistractedDrivingAlarmPhotographyInterval); - Assert.Equal(54, jT808_0X8103_0XF365.DriverIdentificationTrigger); - Assert.Equal(55, jT808_0X8103_0XF365.FatigueDrivingAlarmPhotograph); - Assert.Equal(56, jT808_0X8103_0XF365.FatigueDrivingAlarmPhotographInterval); - Assert.Equal(57, jT808_0X8103_0XF365.GradedSpeedThresholdFatigueDrivingAlarm); - Assert.Equal(58, jT808_0X8103_0XF365.PhotographsAbnormalDrivingBehavior); - Assert.Equal(59, jT808_0X8103_0XF365.PictureIntervalAbnormalDrivingBehavior); - Assert.Equal(new byte[] { 1, 2, 3 }.ToHexString(), jT808_0X8103_0XF365.Reserve.ToHexString()); - Assert.Equal(new byte[] { 5, 6 }.ToHexString(), jT808_0X8103_0XF365.Retain.ToHexString()); - Assert.Equal(60, jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristics); - Assert.Equal(61, jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); - Assert.Equal(62, jT808_0X8103_0XF365.TimeIntervalSmokingAlarmJudgment); - Assert.Equal(63, jT808_0X8103_0XF365.VideoRecordingTimeAbnormalDrivingBehavior); - Assert.Equal(64, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm); - Assert.Equal(65, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); - Assert.Equal(66, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm); - Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365, jT808_0X8103_0XF365.ParamId); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs deleted file mode 100644 index 68047b3..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs +++ /dev/null @@ -1,69 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x8103_0xF366_Test - { - JT808Serializer JT808Serializer; - public JT808_0x8103_0xF366_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 - { - ParamList=new List { - new JT808_0x8103_0xF366{ - HighTemperatureThreshold=1, - HighVoltageThreshold=2, - LowVoltageThreshold=3, - NormalFetalPressure=4, - Retain=new byte[]{1,2,3,4,5,6 }, - SlowLeakageThreshold=5, - ThresholdUnbalancedTirePressure=6, - TimedReportingInterval=7, - TyrePressureUnit=8, - TyreSpecificationType="999999999999", - VoltageThreshold=10 - } - } - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("010000F366243939393939393939393939390008000400060005000300020001000A0007010203040506", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("010000F366243939393939393939393939390008000400060005000300020001000A0007010203040506".ToHexBytes()); - JT808_0x8103_0xF366 jT808_0x8103_0xF366 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF366; - Assert.Equal(1, jT808_0x8103_0xF366.HighTemperatureThreshold); - Assert.Equal(2, jT808_0x8103_0xF366.HighVoltageThreshold); - Assert.Equal(3, jT808_0x8103_0xF366.LowVoltageThreshold); - Assert.Equal(4, jT808_0x8103_0xF366.NormalFetalPressure); - Assert.Equal(new byte[] { 1, 2, 3, 4, 5, 6 }.ToHexString(), jT808_0x8103_0xF366.Retain.ToHexString()); - Assert.Equal(5, jT808_0x8103_0xF366.SlowLeakageThreshold); - Assert.Equal(6, jT808_0x8103_0xF366.ThresholdUnbalancedTirePressure); - Assert.Equal(7, jT808_0x8103_0xF366.TimedReportingInterval); - Assert.Equal(8, jT808_0x8103_0xF366.TyrePressureUnit); - Assert.Equal("999999999999", jT808_0x8103_0xF366.TyreSpecificationType); - Assert.Equal(10, jT808_0x8103_0xF366.VoltageThreshold); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("010000F366243939393939393939393939390008000400060005000300020001000A0007010203040506".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs deleted file mode 100644 index 4f0867e..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs +++ /dev/null @@ -1,51 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x8103_0xF367_Test - { - JT808Serializer JT808Serializer; - public JT808_0x8103_0xF367_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 - { - ParamList=new List { - new JT808_0x8103_0xF367{ - LateralRearApproachAlarmTimeThreshold=1, - RearApproachAlarmTimeThreshold=2 - } - } - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("010000F367020201", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("010000F367020201".ToHexBytes()); - JT808_0x8103_0xF367 jT808_0x8103_0xF367 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF367; - Assert.Equal(1, jT808_0x8103_0xF367.LateralRearApproachAlarmTimeThreshold); - Assert.Equal(2, jT808_0x8103_0xF367.RearApproachAlarmTimeThreshold); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("010000F367020201".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs deleted file mode 100644 index 4061b7d..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs +++ /dev/null @@ -1,46 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x8900_Test - { - JT808Serializer JT808Serializer; - public JT808_0x8900_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x8900_0xF7 jT808UploadLocationRequest = new JT808_0x8900_0xF7 - { - USBCount=2, - MultipleUSB=new List {1,2 } - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("020102", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("020102".ToHexBytes()); - Assert.Equal(2, jT808UploadLocationRequest.USBCount); - Assert.Equal(new List { 1, 2 }.ToArray().ToHexString(), jT808UploadLocationRequest.MultipleUSB.ToArray().ToHexString()); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("020102".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs deleted file mode 100644 index f5bbd0a..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs +++ /dev/null @@ -1,64 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x9208_Test - { - JT808Serializer JT808Serializer; - public JT808_0x9208_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x9208 jT808UploadLocationRequest = new JT808_0x9208 - { - AlarmId="11111111111111111111111111111111", - AlarmIdentification=new Metadata.AlarmIdentificationProperty { - Retain=1, - AttachCount = 2, - SN = 3, - TerminalID = "4444444", - Time = Convert.ToDateTime("2019-12-10 18:31:00") - }, - AttachmentServerIP="192.168.1.1", - AttachmentServerIPTcpPort=5000, - AttachmentServerIPUdpPort=5001 - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("0B3139322E3136382E312E311388138934343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100000000000000000000000000000000", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("0B3139322E3136382E312E311388138934343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100000000000000000000000000000000".ToHexBytes()); - Assert.Equal("11111111111111111111111111111111", jT808UploadLocationRequest.AlarmId); - Assert.Equal(1, jT808UploadLocationRequest.AlarmIdentification.Retain); - Assert.Equal(2, jT808UploadLocationRequest.AlarmIdentification.AttachCount); - Assert.Equal(3, jT808UploadLocationRequest.AlarmIdentification.SN); - Assert.Equal("4444444", jT808UploadLocationRequest.AlarmIdentification.TerminalID); - Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808UploadLocationRequest.AlarmIdentification.Time); - Assert.Equal("192.168.1.1", jT808UploadLocationRequest.AttachmentServerIP); - Assert.Equal("192.168.1.1".Length, jT808UploadLocationRequest.AttachmentServerIPLength); - Assert.Equal(5000, jT808UploadLocationRequest.AttachmentServerIPTcpPort); - Assert.Equal(5001, jT808UploadLocationRequest.AttachmentServerIPUdpPort); - } - - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("0B3139322E3136382E312E311388138934343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100000000000000000000000000000000".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs deleted file mode 100644 index dc9a03a..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs +++ /dev/null @@ -1,66 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessageBody; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Text; -using Xunit; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Test -{ - public class JT808_0x9212_Test - { - JT808Serializer JT808Serializer; - public JT808_0x9212_Test() - { - ServiceCollection serviceDescriptors = new ServiceCollection(); - serviceDescriptors.AddJT808Configure() - .AddJTActiveSafetyConfigure(); - IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); - JT808Serializer = new JT808Serializer(jT808Config); - } - [Fact] - public void Serializer() - { - JT808_0x9212 jT808UploadLocationRequest = new JT808_0x9212 - { - DataPackageCount=2, - DataPackages=new List { - new Metadata.DataPackageProperty{ - Length=10, - Offset=20 - }, - new Metadata.DataPackageProperty{ - Length=30, - Offset=40 - } - }, - FileName= "FileName", - FileType=1, - UploadResult=2 - }; - var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("0846696C654E616D65010202000000140000000A000000280000001E", hex); - } - [Fact] - public void Deserialize() - { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("0846696C654E616D65010202000000140000000A000000280000001E".ToHexBytes()); - Assert.Equal(2, jT808UploadLocationRequest.DataPackageCount); - Assert.Equal("FileName", jT808UploadLocationRequest.FileName); - Assert.Equal(1, jT808UploadLocationRequest.FileType); - Assert.Equal(2, jT808UploadLocationRequest.UploadResult); - - Assert.Equal(10u, jT808UploadLocationRequest.DataPackages[0].Length); - Assert.Equal(20u, jT808UploadLocationRequest.DataPackages[0].Offset); - - Assert.Equal(30u, jT808UploadLocationRequest.DataPackages[1].Length); - Assert.Equal(40u, jT808UploadLocationRequest.DataPackages[1].Offset); - } - [Fact] - public void Json() - { - var json = JT808Serializer.Analyze("0846696C654E616D65010202000000140000000A000000280000001E".ToHexBytes()); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/ActivePhotographyStrategyType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/ActivePhotographyStrategyType.cs deleted file mode 100644 index e1c0367..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/ActivePhotographyStrategyType.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// 主动拍照策略 - /// - public enum ActivePhotographyStrategyType:byte - { - /// - /// 不开启 - /// - 不开启 = 0x00, - /// - /// 定时拍照 - /// - 定时拍照 = 0x01, - /// - /// 定距拍照 - /// - 定距拍照 = 0x02, - /// - /// 保留 - /// - 保留 = 0x03, - /// - /// 不修改参数 - /// - 不修改参数 = 0xFF - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/JT808_JTActiveSafety_MsgId.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/JT808_JTActiveSafety_MsgId.cs deleted file mode 100644 index e1167c8..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/JT808_JTActiveSafety_MsgId.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// 主动安全消息Id - /// - public enum JT808_JTActiveSafety_MsgId : ushort - { - /// - /// 报警附件信息消息 - /// - 报警附件信息消息 = 0x1210, - /// - /// 文件信息上传 - /// - 文件信息上传 = 0x1211, - /// - /// 文件上传完成消息 - /// - 文件上传完成消息 = 0x1212, - /// - /// 报警附件上传指令 - /// - 报警附件上传指令 = 0x9208, - /// - /// 文件上传完成消息应答 - /// - 文件上传完成消息应答 = 0x9212, - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/PhotoResolutionType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/PhotoResolutionType.cs deleted file mode 100644 index e9b4d17..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/PhotoResolutionType.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// 拍照分辨率 - /// - public enum PhotoResolutionType:byte - { - /// - /// 352x288 - /// - x352_288 = 0x01, - /// - /// 704x288 - /// - x704_288 = 0x02, - /// - /// 704x576 - /// - x704_576 = 0x03, - /// - /// 640x480 - /// - x640_480 = 0x04, - /// - /// 1280x720 - /// - x1280_720 = 0x05, - /// - /// 1920x1080 - /// - x1920_1080 = 0x06, - /// - /// 不修改参数 - /// - 不修改参数 = 0xFF - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs deleted file mode 100644 index 79b6b9f..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// USB编号类型 - /// - public enum USBIDType:byte - { - /// - /// 高级驾驶辅助系统 - /// - ADAS = 0x64, - /// - /// 驾驶员状态监控系统 - /// - DSM = 0x65, - /// - /// 轮胎气压监测系统 - /// - TPMS = 0x66, - /// - /// 盲点监测系统 - /// - BSD = 0x67 - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/VideoRecordingResolutionType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/VideoRecordingResolutionType.cs deleted file mode 100644 index 3d4026f..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/VideoRecordingResolutionType.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// 视频录制分辨率 - /// - public enum VideoRecordingResolutionType:byte - { - /// - /// CIF - /// - CIF = 0x01, - /// - /// HD1 - /// - HD1 = 0x02, - /// - /// D1 - /// - D1 = 0x03, - /// - /// WD1 - /// - WD1 = 0x04, - /// - /// VGA - /// - VGA = 0x05, - /// - /// 720P - /// - _720P = 0x06, - /// - /// 1080P - /// - _1080P = 0x07, - /// - /// 不修改参数 - /// - 不修改参数 = 0xFF - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/WorkingConditionType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/WorkingConditionType.cs deleted file mode 100644 index 724ae2d..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/WorkingConditionType.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Enums -{ - /// - /// 工作状态 - /// - public enum WorkingConditionType:byte - { - /// - /// 正常工作 - /// - 正常工作 = 0x01, - /// - /// 待机状态 - /// - 待机状态 = 0x02, - /// - /// 升级维护 - /// - 升级维护 = 0x03, - /// - /// 设备异常 - /// - 设备异常 = 0x04, - /// - /// 断开连接 - /// - 断开连接 = 0x10, - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj deleted file mode 100644 index 0156007..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj +++ /dev/null @@ -1,36 +0,0 @@ - - - - netstandard2.0;netstandard2.1;net5.0; - 9.0 - Copyright 2019. - SmallChi(Koike) - JT808.Protocol.Extensions.JTActiveSafety - JT808.Protocol.Extensions.JTActiveSafety - 基于JT808协议、GB808协议扩展的主动安全消息协议(苏标) - 基于JT808协议、GB808协议扩展的主动安全消息协议(苏标) - true - https://github.com/SmallChi/JTActiveSafety - https://github.com/SmallChi/JTActiveSafety - https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE - https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE - false - JT808.Protocol.Extensions.JTActiveSafety.xml - 1.1.7 - LICENSE - - - - - True - - - - - - - - - - - diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml deleted file mode 100644 index 8986e83..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml +++ /dev/null @@ -1,2028 +0,0 @@ - - - - JT808.Protocol.Extensions.JTActiveSafety - - - - - 主动拍照策略 - - - - - 不开启 - - - - - 定时拍照 - - - - - 定距拍照 - - - - - 保留 - - - - - 不修改参数 - - - - - 主动安全消息Id - - - - - 报警附件信息消息 - - - - - 文件信息上传 - - - - - 文件上传完成消息 - - - - - 报警附件上传指令 - - - - - 文件上传完成消息应答 - - - - - 拍照分辨率 - - - - - 352x288 - - - - - 704x288 - - - - - 704x576 - - - - - 640x480 - - - - - 1280x720 - - - - - 1920x1080 - - - - - 不修改参数 - - - - - USB编号类型 - - - - - 高级驾驶辅助系统 - - - - - 驾驶员状态监控系统 - - - - - 轮胎气压监测系统 - - - - - 盲点监测系统 - - - - - 视频录制分辨率 - - - - - CIF - - - - - HD1 - - - - - D1 - - - - - WD1 - - - - - VGA - - - - - 720P - - - - - 1080P - - - - - 不修改参数 - - - - - 工作状态 - - - - - 正常工作 - - - - - 待机状态 - - - - - 升级维护 - - - - - 设备异常 - - - - - 断开连接 - - - - - 主动安全常量 - - - - - 附加信息ID 高级驾驶辅助系统报警信息 - - - - - 附加信息ID 驾驶员状态监测系统报警信息 - - - - - 附加信息ID 胎压监测系统报警信息 - - - - - 附加信息ID 盲区监测系统报警信息 - - - - - 高级驾驶辅助系统参数设置 - - - - - 驾驶员状态监测系统参数设置 - - - - - 胎压监测系统参数设置 - - - - - 盲区监测系统参数设置 - - - - - 状态查询 - - - - - 信息查询 - - - - - 主动安全扩展 - - - - - 添加主动安全 - - - - - - - 高级驾驶辅助系统报警信息 - - - - - 高级驾驶辅助系统报警信息Id - - - - - 高级驾驶辅助系统报警信息附加长度 - - - - - 报警ID - - - - - 标志状态 - - - - - 报警/事件类型 - - - - - 报警/事件类型 - - - - - 前车车速 - - - - - 前车/行人距离 - - - - - 偏离类型 - - - - - 道路标志识别类型 - - - - - 道路标志识别类型 - - - - - 车速 - - - - - 高程 - - - - - 纬度 - - - - - 经度 - - - - - 日期时间 - YYMMDDhhmmss - BCD[6] - - - - - 车辆状态 - - - - - 报警标识号 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 驾驶员状态监测系统报警信息 - - - - - 驾驶员状态监测系统报警信息Id - - - - - 驾驶员状态监测系统报警信息长度 - - - - - 报警ID - - - - - 标志状态 - - - - - 报警/事件类型 - - - - - 报警级别 - - - - - 疲劳程度 - - - - - 预留 - - - - - 车速 - - - - - 高程 - - - - - 纬度 - - - - - 经度 - - - - - 日期时间 - YYMMDDhhmmss - BCD[6] - - - - - 车辆状态 - - - - - 报警标识号 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 胎压监测系统报警信息 - - - - - 胎压监测系统报警信息Id - - - - - 胎压监测系统报警信息长度 - - - - - 报警ID - - - - - 标志状态 - - - - - 车速 - - - - - 高程 - - - - - 纬度 - - - - - 经度 - - - - - 日期时间 - YYMMDDhhmmss - BCD[6] - - - - - 车辆状态 - - - - - 报警标识号 - - - - - 报警/事件列表总数 - - - - - 报警/事件信息列表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 盲区监测系统报警信息 - - - - - 盲区监测系统报警信息Id - - - - - 盲区监测系统报警信息长度 - - - - - 报警ID - - - - - 标志状态 - - - - - 报警/事件类型 - - - - - 报警/事件类型 - - - - - 车速 - - - - - 高程 - - - - - 纬度 - - - - - 经度 - - - - - 日期时间 - YYMMDDhhmmss - BCD[6] - - - - - 车辆状态 - - - - - 报警标识号 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 透传数据 - - - - - 透传类型 - - - - - 消息列表总数 - - - - - 消息列表数据 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 透传数据 - - - - - 透传类型 - - - - - 消息列表总数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 报警附件信息消息 - - - - - 制造商Id - 7 个字节,由大写字母和数字组成,此终端ID 由制造商自行定义,位数不足时,后补“0x00” - - - - - 报警标识号 - - - - - 平台给报警分配的唯一编号 - 32 - - - - - 信息类型 - 0x00:正常报警文件信息 - 0x01:补传报警文件信息 - - - - - 附件数量 - - - - - 附件信息列表 - - - - - 报警附件信息消息Id - - - - - 报警附件信息消息 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 文件信息上传 - - - - - 文件信息上传 - - - - - 文件名称长度 - - - - - 文件名称 - 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - - - - - 文件类型 - - - - - 文件大小 - - - - - 文件信息上传Id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 文件上传完成消息 - - - - - 文件上传完成消息 - - - - - 文件名称长度 - - - - - 文件名称 - 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - - - - - 文件类型 - - - - - 文件大小 - - - - - 文件上传完成消息 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 高级驾驶辅助系统参数 - - - - - 高级驾驶辅助系统参数 - - - - - 高级驾驶辅助系统参数长度 - - - - - 报警判断速度阈值 - - - - - 报警提示音量 - - - - - 主动拍照策略 - - - - - - 主动定时拍照时间间隔 - - - - - 主动定距拍照距离间隔 - - - - - 单次主动拍照张数 - - - - - 单次主动拍照时间间隔 - - - - - 拍照分辨率 - - - - - - 视频录制分辨率 - - - - - 报警使能 - - - - - 事件使能 - - - - - 预留字段 - - - - - 障碍物报警距离阈值 - - - - - 障碍物报警分级速度阈值 - - - - - 障碍物报警前后视频录制时间 - - - - - 障碍物报警拍照张数 - - - - - 障碍物报警拍照间隔 - - - - - 频繁变道报警判断时间段 - - - - - 频繁变道报警判断次数 - - - - - 频繁变道报警分级速度阈值 - - - - - 频繁变道报警前后视频录制时间 - - - - - 频繁变道报警拍照张数 - - - - - 频繁变道报警拍照间隔 - - - - - 车道偏离报警分级速度阈值 - - - - - 车道偏离报警前后视频录制时间 - - - - - 车道偏离报警拍照张数 - - - - - 车道偏离报警拍照间隔 - - - - - 前向碰撞报警时间阈值 - - - - - 前向碰撞报警分级速度阈值 - - - - - 前向碰撞报警前后视频录制时间 - - - - - 前向碰撞报警拍照张数 - - - - - 前向碰撞报警拍照间隔 - - - - - 行人碰撞报警时间阈值 - - - - - 行人碰撞报警使能速度阈值 - - - - - 行人碰撞报警前后视频录制时间 - - - - - 行人碰撞报警拍照张数 - - - - - 行人碰撞报警拍照间隔 - - - - - 车距监控报警距离阈值 - - - - - 车距监控报警分级速度阈值 - - - - - 车距过近报警前后视频录制时间 - - - - - 车距过近报警拍照张数 - - - - - 车距过近报警拍照间隔 - - - - - 道路标志识别拍照张数 - - - - - 道路标志识别拍照间隔 - - - - - 保留字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 驾驶员状态监测系统参数 - - - - - 驾驶员状态监测系统参数 - - - - - 驾驶员状态监测系统参数长度 - - - - - 报警判断速度阈值 - - - - - 报警提示音量 - - - - - 主动拍照策略 - - - - - 主动定时拍照时间间隔 - - - - - 主动定距拍照距离间隔 - - - - - 单次主动拍照张数 - - - - - 单次主动拍照时间间隔 - - - - - 拍照分辨率 - - - - - 视频录制分辨率 - - - - - 报警使能 - - - - - 事件使能 - - - - - 吸烟报警判断时间间隔 - - - - - 接打电话报警判断时间间隔 - - - - - 预留字段 - - - - - 疲劳驾驶报警分级速度阈值 - - - - - 疲劳驾驶报警前后视频录制时间 - - - - - 疲劳驾驶报警拍照张数 - - - - - 疲劳驾驶报警拍照间隔时间 - - - - - 接打电话报警分级速度阈值 - - - - - 接打电话报警前后视频录制时间 - - - - - 接打电话报警拍驾驶员面部特征照片张数 - - - - - 接打电话报警拍驾驶员面部特征照片间隔时间 - - - - - 抽烟报警分级车速阈值 - - - - - 抽烟报警前后视频录制时间 - - - - - 抽烟报警拍驾驶员面部特征照片张数 - - - - - 抽烟报警拍驾驶员面部特征照片间隔时间 - - - - - 分神驾驶报警分级车速阈值 - - - - - 分神驾驶报警拍照张数 - - - - - 分神驾驶报警拍照间隔时间 - - - - - 驾驶行为异常视频录制时间 - - - - - 驾驶行为异常抓拍照片张数 - - - - - 驾驶行为异常拍照间隔 - - - - - 驾驶员身份识别触发 - - - - - 保留字段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 胎压监测系统参数 - - - - - 胎压监测系统参数Id - - - - - 胎压监测系统参数长度 - - - - - 轮胎规格型号 12位 - - - - - 胎压单位 - - - - - 正常胎压值 - - - - - 胎压不平衡门限 - - - - - 慢漏气门限 - - - - - 低压阈值 - - - - - 高压阈值 - - - - - 高温阈值 - - - - - 电压阈值 - - - - - 定时上报时间间隔 - - - - - 保留项 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 盲区监测系统参数 - - - - - 盲区监测系统参数Id - - - - - 盲区监测系统参数长度 - - - - - 后方接近报警时间阈值 - - - - - 侧后方接近报警时间阈值 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 查询基本信息 - - - - - 查询基本信息类型 - - - - - 外设ID列表总数 - - - - - 外设ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 查询基本信息 - - - - - 查询基本信息透传类型 - - - - - 外设ID列表总数 - - - - - 外设ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 报警附件上传指令 - - - - - Description - - - - - 服务IP地址长度 - - - - - 服务IP地址 - - - - - TCP端口 - - - - - UDP端口 - - - - - 报警标识号 - - - - - 平台给报警分配的唯一编号 - 32 - - - - - 预留 - - - - - 报警附件上传指令Id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 文件上传完成消息应答 - - - - - 文件上传完成消息应答 - - - - - 文件名称长度 - - - - - 文件名称 - - - - - 文件类型 - - - - - 上传结果 - - - - - 补传数据包数量 - 需要补传的数据包数量,无补传时该值为0 - - - - - 补传数据包列表 - - - - - 文件上传完成消息应答Id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 报警标识号 - - - - - 终端ID - - - - - YY-MM-DD-hh-mm-ss - BCD[6] - - - - - 序号 - - - - - 附件数量 - - - - - 预留 - - - - - 胎压监测系统报警/事件信息 - - - - - 胎压报警位置 - - - - - 报警/事件类型 - - - - - 胎压 - - - - - 胎温 - - - - - 电池电量 - - - - - 附件信息 - - - - - 文件名称长度 - - - - - 文件名称 - 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - - - - - 文件大小 - - - - - 补传数据包信息 - - - - - 数据偏移量 - - - - - 数据长度 - - - - - - - - - - 外设ID - - - - - - 消息长度 - - - - - 工作状态 - - - - - - 报警状态 - - - - - - - - - - 外设ID - - - - - - 消息长度 - - - - - 公司名称长度 - - - - - 公司名称 - - - - - 产品型号长度 - - - - - 产品型号 - - - - - 硬件版本号长度 - - - - - 硬件版本号 - ASCII - - - - - 软件版本号长度 - - - - - 软件版本号 - ASCII - - - - - 设备ID长度 - - - - - 设备ID - - - - - 客户代码长度 - - - - - 客户代码 - - - - diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs deleted file mode 100644 index 9b8a148..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety -{ - /// - /// 主动安全常量 - /// - public static class JT808_JTActiveSafety_Constants - { - /// - /// 附加信息ID 高级驾驶辅助系统报警信息 - /// - public const byte JT808_0X0200_0x64 = 0x64; - /// - /// 附加信息ID 驾驶员状态监测系统报警信息 - /// - public const byte JT808_0X0200_0x65 = 0x65; - /// - /// 附加信息ID 胎压监测系统报警信息 - /// - public const byte JT808_0X0200_0x66 = 0x66; - /// - /// 附加信息ID 盲区监测系统报警信息 - /// - public const byte JT808_0X0200_0x67 = 0x67; - /// - /// 高级驾驶辅助系统参数设置 - /// - public const uint JT808_0X8103_0xF364 = 0xF364; - /// - /// 驾驶员状态监测系统参数设置 - /// - public const uint JT808_0X8103_0xF365 = 0xF365; - /// - /// 胎压监测系统参数设置 - /// - public const uint JT808_0X8103_0xF366 = 0xF366; - /// - /// 盲区监测系统参数设置 - /// - public const uint JT808_0X8103_0xF367 = 0xF367; - /// - /// 状态查询 - /// - public const byte JT808_0X0900_0xF7 = 0xF7; - /// - /// 信息查询 - /// - public const byte JT808_0X0900_0xF8 = 0xF8; - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JTActiveSafetyDependencyInjectionExtensions.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/JTActiveSafetyDependencyInjectionExtensions.cs deleted file mode 100644 index f066aa4..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JTActiveSafetyDependencyInjectionExtensions.cs +++ /dev/null @@ -1,28 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Enums; -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.Interfaces; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety -{ - /// - /// 主动安全扩展 - /// - public static class JTActiveSafetyDependencyInjectionExtensions - { - /// - /// 添加主动安全 - /// - /// - /// - public static IJT808Builder AddJTActiveSafetyConfigure(this IJT808Builder jT808Builder) - { - jT808Builder.Config.Register(Assembly.GetExecutingAssembly()); - return jT808Builder; - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs deleted file mode 100644 index eb195fe..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs +++ /dev/null @@ -1,344 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 高级驾驶辅助系统报警信息 - /// - public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 高级驾驶辅助系统报警信息Id - /// - public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x64; - /// - /// 高级驾驶辅助系统报警信息附加长度 - /// - public override byte AttachInfoLength { get; set; } = 32; - /// - /// 报警ID - /// - public uint AlarmId { get; set; } - /// - /// 标志状态 - /// - public byte FlagState { get; set; } - /// - /// 报警/事件类型 - /// - public byte AlarmOrEventType{ get; set; } - /// - /// 报警/事件类型 - /// - public byte AlarmLevel { get; set; } - /// - /// 前车车速 - /// - public byte VehicleSpeed { get; set; } - /// - /// 前车/行人距离 - /// - public byte CarOrPedestrianDistanceAhead { get; set; } - /// - /// 偏离类型 - /// - public byte DeviateType { get; set; } - /// - /// 道路标志识别类型 - /// - public byte RoadSignIdentificationType { get; set; } - /// - /// 道路标志识别类型 - /// - public byte RoadSignIdentificationData { get; set; } - /// - /// 车速 - /// - public byte Speed { get; set; } - /// - /// 高程 - /// - public ushort Altitude { get; set; } - /// - /// 纬度 - /// - public int Latitude { get; set; } - /// - /// 经度 - /// - public int Longitude { get; set; } - /// - /// 日期时间 - /// YYMMDDhhmmss - /// BCD[6] - /// - public DateTime AlarmTime { get; set; } - /// - /// 车辆状态 - /// - public ushort VehicleState { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); - value.AttachInfoId = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); - value.AttachInfoLength = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); - value.AlarmId = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmId.ReadNumber()}]报警ID", value.AlarmId); - value.FlagState = reader.ReadByte(); - string flagStateString = "未知"; - switch (value.FlagState) - { - case 0: - flagStateString = "不可用"; - break; - case 1: - flagStateString = "开始标志"; - break; - case 2: - flagStateString = "结束标志"; - break; - } - writer.WriteNumber($"[{value.FlagState.ReadNumber()}]标志状态-{flagStateString}", value.FlagState); - value.AlarmOrEventType = reader.ReadByte(); - string alarmOrEventTypeString = ""; - string vehicleSpeedString = "无效"; - string carOrPedestrianDistanceAheadString = "无效"; - string deviateTypeString = "无效"; - string roadSignIdentificationTypeString = "无效"; - switch (value.AlarmOrEventType) - { - case 0x01: - alarmOrEventTypeString = "前向碰撞报警"; - vehicleSpeedString = "有效"; - carOrPedestrianDistanceAheadString = "有效"; - break; - case 0x02: - alarmOrEventTypeString = "车道偏离报警"; - vehicleSpeedString = "有效"; - carOrPedestrianDistanceAheadString = "有效"; - deviateTypeString = "有效"; - break; - case 0x03: - alarmOrEventTypeString = "车距过近报警"; - break; - case 0x04: - alarmOrEventTypeString = "行人碰撞报警"; - vehicleSpeedString = "有效"; - break; - case 0x05: - alarmOrEventTypeString = "频繁变道报警"; - break; - case 0x06: - alarmOrEventTypeString = "道路标识超限报警"; - roadSignIdentificationTypeString = "有效"; - break; - case 0x07: - alarmOrEventTypeString = "障碍物报警"; - break; - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - alarmOrEventTypeString = "用户自定义"; - break; - case 0x10: - roadSignIdentificationTypeString = "有效"; - alarmOrEventTypeString = "道路标志识别事件"; - break; - case 0x11: - alarmOrEventTypeString = "主动抓拍事件"; - break; - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - alarmOrEventTypeString = "用户自定义"; - break; - } - writer.WriteNumber($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", value.AlarmOrEventType); - value.AlarmLevel = reader.ReadByte(); - string alarmLevelString = "未知"; - switch (value.AlarmLevel) - { - case 0x01: - alarmLevelString = "一级报警"; - break; - case 0x02: - alarmLevelString = "二级报警"; - break; - } - writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel); - value.VehicleSpeed = reader.ReadByte(); - writer.WriteNumber($"[{value.VehicleSpeed.ReadNumber()}]前车车速-{vehicleSpeedString}", value.VehicleSpeed); - value.CarOrPedestrianDistanceAhead = reader.ReadByte(); - writer.WriteNumber($"[{value.CarOrPedestrianDistanceAhead.ReadNumber()}]前车_行人距离-{carOrPedestrianDistanceAheadString}", value.CarOrPedestrianDistanceAhead); - value.DeviateType = reader.ReadByte(); - string deviateType = value.DeviateType == 0x01 ? "左侧偏离" : "右侧偏离"; - writer.WriteNumber($"[{value.DeviateType.ReadNumber()}]偏离类型-{deviateType}-{deviateTypeString}", value.DeviateType); - value.RoadSignIdentificationType = reader.ReadByte(); - string roadSignIdentificationType = "未知标志"; - if (value.RoadSignIdentificationType == 0x01) - { - roadSignIdentificationType = "限速标志"; - } - else if (value.RoadSignIdentificationType == 0x02) - { - roadSignIdentificationType = "限高标志"; - } - else if (value.RoadSignIdentificationType == 0x03) - { - roadSignIdentificationType = "限重标志"; - } - writer.WriteNumber($"[{value.RoadSignIdentificationType.ReadNumber()}]道路标志识别类型-{roadSignIdentificationType}-{roadSignIdentificationTypeString}", value.RoadSignIdentificationType); - value.RoadSignIdentificationData = reader.ReadByte(); - writer.WriteNumber($"[{value.RoadSignIdentificationData.ReadNumber()}]道路标志识别数据", value.RoadSignIdentificationData); - value.Speed = reader.ReadByte(); - writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); - value.Altitude = reader.ReadUInt16(); - writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude); - value.Latitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude); - value.Longitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude); - value.AlarmTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.AlarmTime.ToString("yyMMddHHmmss")}]日期时间", value.AlarmTime.ToString("yyyy-MM-dd HH:mm:ss")); - value.VehicleState = reader.ReadUInt16(); - writer.WriteNumber($"[{value.VehicleState.ReadNumber()}]车辆状态", value.VehicleState); - var vehicleStateBits = Convert.ToString(value.VehicleState, 2).PadLeft(16, '0'); - writer.WriteStartObject($"车辆状态对象[{vehicleStateBits}]"); - writer.WriteString($"[{vehicleStateBits[15]}]Bit0ACC状态", vehicleStateBits[15] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[14]}]Bit1左转向状态", vehicleStateBits[14] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[13]}]Bit2右转向状态", vehicleStateBits[13] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[12]}]Bit3雨刮器状态", vehicleStateBits[12] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[11]}]Bit4制动状态", vehicleStateBits[11] == '0' ? "未制动" : "制动"); - writer.WriteString($"[{vehicleStateBits[10]}]Bit5插卡状态", vehicleStateBits[10] == '0' ? "未插卡" : "已插卡"); - writer.WriteString($"[{vehicleStateBits[9]}]Bit6自定义", vehicleStateBits[9].ToString()); - writer.WriteString($"[{vehicleStateBits[8]}]Bit7自定义", vehicleStateBits[8].ToString()); - writer.WriteString($"[{vehicleStateBits[7]}]Bit8自定义", vehicleStateBits[7].ToString()); - writer.WriteString($"[{vehicleStateBits[6]}]Bit9自定义", vehicleStateBits[6].ToString()); - writer.WriteString($"[{vehicleStateBits[5]}]Bit10定位状态", vehicleStateBits[5] == '0' ? "未定位" : "已定位"); - writer.WriteString($"[{vehicleStateBits[4]}]Bit11自定义", vehicleStateBits[4].ToString()); - writer.WriteString($"[{vehicleStateBits[3]}]Bit12自定义", vehicleStateBits[3].ToString()); - writer.WriteString($"[{vehicleStateBits[2]}]Bit13自定义", vehicleStateBits[2].ToString()); - writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString()); - writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString()); - writer.WriteEndObject(); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - } - /// - /// - /// - /// - /// - /// - public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); - value.AttachInfoId = reader.ReadByte(); - value.AttachInfoLength = reader.ReadByte(); - value.AlarmId = reader.ReadUInt32(); - value.FlagState = reader.ReadByte(); - value.AlarmOrEventType = reader.ReadByte(); - value.AlarmLevel = reader.ReadByte(); - value.VehicleSpeed = reader.ReadByte(); - value.CarOrPedestrianDistanceAhead = reader.ReadByte(); - value.DeviateType = reader.ReadByte(); - value.RoadSignIdentificationType = reader.ReadByte(); - value.RoadSignIdentificationData = reader.ReadByte(); - value.Speed = reader.ReadByte(); - value.Altitude = reader.ReadUInt16(); - value.Latitude = (int)reader.ReadUInt32(); - value.Longitude = (int)reader.ReadUInt32(); - value.AlarmTime = reader.ReadDateTime6(); - value.VehicleState = reader.ReadUInt16(); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x64 value, IJT808Config config) - { - writer.WriteByte(value.AttachInfoId); - writer.WriteByte(value.AttachInfoLength); - writer.WriteUInt32(value.AlarmId); - writer.WriteByte(value.FlagState); - writer.WriteByte(value.AlarmOrEventType); - writer.WriteByte(value.AlarmLevel); - writer.WriteByte(value.VehicleSpeed); - writer.WriteByte(value.CarOrPedestrianDistanceAhead); - writer.WriteByte(value.DeviateType); - writer.WriteByte(value.RoadSignIdentificationType); - writer.WriteByte(value.RoadSignIdentificationData); - writer.WriteByte(value.Speed); - writer.WriteUInt16(value.Altitude); - writer.WriteUInt32((uint)value.Latitude); - writer.WriteUInt32((uint)value.Longitude); - writer.WriteDateTime6(value.AlarmTime); - writer.WriteUInt16(value.VehicleState); - if (value.AlarmIdentification == null) { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs deleted file mode 100644 index 95ec9da..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs +++ /dev/null @@ -1,295 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 驾驶员状态监测系统报警信息 - /// - public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 驾驶员状态监测系统报警信息Id - /// - public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x65; - /// - /// 驾驶员状态监测系统报警信息长度 - /// - public override byte AttachInfoLength { get; set; } = 47; - /// - /// 报警ID - /// - public uint AlarmId { get; set; } - /// - /// 标志状态 - /// - public byte FlagState { get; set; } - /// - /// 报警/事件类型 - /// - public byte AlarmOrEventType{ get; set; } - /// - /// 报警级别 - /// - public byte AlarmLevel { get; set; } - /// - /// 疲劳程度 - /// - public byte Fatigue { get; set; } - /// - /// 预留 - /// - public byte[] Retain { get; set; } = new byte[4]; - /// - /// 车速 - /// - public byte Speed { get; set; } - /// - /// 高程 - /// - public ushort Altitude { get; set; } - /// - /// 纬度 - /// - public int Latitude { get; set; } - /// - /// 经度 - /// - public int Longitude { get; set; } - /// - /// 日期时间 - /// YYMMDDhhmmss - /// BCD[6] - /// - public DateTime AlarmTime { get; set; } - /// - /// 车辆状态 - /// - public ushort VehicleState { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); - value.AttachInfoId = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); - value.AttachInfoLength = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); - value.AlarmId = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmId.ReadNumber()}]报警ID", value.AlarmId); - value.FlagState = reader.ReadByte(); - string flagStateString = "未知"; - switch (value.FlagState) - { - case 0: - flagStateString = "不可用"; - break; - case 1: - flagStateString = "开始标志"; - break; - case 2: - flagStateString = "结束标志"; - break; - } - writer.WriteNumber($"[{value.FlagState.ReadNumber()}]标志状态-{flagStateString}", value.FlagState); - value.AlarmOrEventType = reader.ReadByte(); - string alarmOrEventTypeString = ""; - switch (value.AlarmOrEventType) - { - case 0x01: - alarmOrEventTypeString = "疲劳驾驶报警"; - break; - case 0x02: - alarmOrEventTypeString = "接打电话报警"; - break; - case 0x03: - alarmOrEventTypeString = "抽烟报警"; - break; - case 0x04: - alarmOrEventTypeString = "分神驾驶报警"; - break; - case 0x05: - alarmOrEventTypeString = "驾驶员异常报警"; - break; - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - alarmOrEventTypeString = "用户自定义"; - break; - case 0x10: - alarmOrEventTypeString = "自动抓拍事件"; - break; - case 0x11: - alarmOrEventTypeString = "驾驶员变更事件"; - break; - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - alarmOrEventTypeString = "用户自定义"; - break; - } - writer.WriteNumber($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", value.AlarmOrEventType); - value.AlarmLevel = reader.ReadByte(); - string alarmLevelString = "未知"; - switch (value.AlarmLevel) - { - case 0x01: - alarmLevelString = "一级报警"; - break; - case 0x02: - alarmLevelString = "二级报警"; - break; - } - writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel); - value.Fatigue = reader.ReadByte(); - writer.WriteNumber($"[{value.Fatigue.ReadNumber()}]疲劳程度", value.Fatigue); - value.Retain = reader.ReadArray(4).ToArray(); - writer.WriteString("预留", value.Retain.ToHexString()); - value.Speed = reader.ReadByte(); - writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); - value.Altitude = reader.ReadUInt16(); - writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude); - value.Latitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude); - value.Longitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude); - value.AlarmTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.AlarmTime.ToString("yyMMddHHmmss")}]日期时间", value.AlarmTime.ToString("yyyy-MM-dd HH:mm:ss")); - value.VehicleState = reader.ReadUInt16(); - writer.WriteNumber($"[{value.VehicleState.ReadNumber()}]车辆状态", value.VehicleState); - var vehicleStateBits = Convert.ToString(value.VehicleState, 2).PadLeft(16, '0'); - writer.WriteStartObject($"车辆状态对象[{vehicleStateBits}]"); - writer.WriteString($"[{vehicleStateBits[15]}]Bit0ACC状态", vehicleStateBits[15] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[14]}]Bit1左转向状态", vehicleStateBits[14] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[13]}]Bit2右转向状态", vehicleStateBits[13] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[12]}]Bit3雨刮器状态", vehicleStateBits[12] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[11]}]Bit4制动状态", vehicleStateBits[11] == '0' ? "未制动" : "制动"); - writer.WriteString($"[{vehicleStateBits[10]}]Bit5插卡状态", vehicleStateBits[10] == '0' ? "未插卡" : "已插卡"); - writer.WriteString($"[{vehicleStateBits[9]}]Bit6自定义", vehicleStateBits[9].ToString()); - writer.WriteString($"[{vehicleStateBits[8]}]Bit7自定义", vehicleStateBits[8].ToString()); - writer.WriteString($"[{vehicleStateBits[7]}]Bit8自定义", vehicleStateBits[7].ToString()); - writer.WriteString($"[{vehicleStateBits[6]}]Bit9自定义", vehicleStateBits[6].ToString()); - writer.WriteString($"[{vehicleStateBits[5]}]Bit10定位状态", vehicleStateBits[5] == '0' ? "未定位" : "已定位"); - writer.WriteString($"[{vehicleStateBits[4]}]Bit11自定义", vehicleStateBits[4].ToString()); - writer.WriteString($"[{vehicleStateBits[3]}]Bit12自定义", vehicleStateBits[3].ToString()); - writer.WriteString($"[{vehicleStateBits[2]}]Bit13自定义", vehicleStateBits[2].ToString()); - writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString()); - writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString()); - writer.WriteEndObject(); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - } - /// - /// - /// - /// - /// - /// - public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); - value.AttachInfoId = reader.ReadByte(); - value.AttachInfoLength = reader.ReadByte(); - value.AlarmId = reader.ReadUInt32(); - value.FlagState = reader.ReadByte(); - value.AlarmOrEventType = reader.ReadByte(); - value.AlarmLevel = reader.ReadByte(); - value.Fatigue = reader.ReadByte(); - value.Retain = reader.ReadArray(4).ToArray(); - value.Speed = reader.ReadByte(); - value.Altitude = reader.ReadUInt16(); - value.Latitude = (int)reader.ReadUInt32(); - value.Longitude = (int)reader.ReadUInt32(); - value.AlarmTime = reader.ReadDateTime6(); - value.VehicleState = reader.ReadUInt16(); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x65 value, IJT808Config config) - { - writer.WriteByte(value.AttachInfoId); - writer.WriteByte(value.AttachInfoLength); - writer.WriteUInt32(value.AlarmId); - writer.WriteByte(value.FlagState); - writer.WriteByte(value.AlarmOrEventType); - writer.WriteByte(value.AlarmLevel); - writer.WriteByte(value.Fatigue); - if (value.Retain.Length != 4) - { - throw new ArgumentOutOfRangeException($"{nameof(JT808_0x0200_0x65.Retain)} length==4"); - } - writer.WriteArray(value.Retain); - writer.WriteByte(value.Speed); - writer.WriteUInt16(value.Altitude); - writer.WriteUInt32((uint)value.Latitude); - writer.WriteUInt32((uint)value.Longitude); - writer.WriteDateTime6(value.AlarmTime); - writer.WriteUInt16(value.VehicleState); - if (value.AlarmIdentification == null) - { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs deleted file mode 100644 index d42f267..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs +++ /dev/null @@ -1,312 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 胎压监测系统报警信息 - /// - public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 胎压监测系统报警信息Id - /// - public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x66; - /// - /// 胎压监测系统报警信息长度 - /// - public override byte AttachInfoLength { get; set; } - /// - /// 报警ID - /// - public uint AlarmId { get; set; } - /// - /// 标志状态 - /// - public byte FlagState { get; set; } - /// - /// 车速 - /// - public byte Speed { get; set; } - /// - /// 高程 - /// - public ushort Altitude { get; set; } - /// - /// 纬度 - /// - public int Latitude { get; set; } - /// - /// 经度 - /// - public int Longitude { get; set; } - /// - /// 日期时间 - /// YYMMDDhhmmss - /// BCD[6] - /// - public DateTime AlarmTime { get; set; } - /// - /// 车辆状态 - /// - public ushort VehicleState { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// 报警/事件列表总数 - /// - public byte AlarmOrEventCount { get; set; } - /// - /// 报警/事件信息列表 - /// - public List AlarmOrEvents { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); - value.AttachInfoId = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); - value.AttachInfoLength = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); - value.AlarmId = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmId.ReadNumber()}]报警ID", value.AlarmId); - value.FlagState = reader.ReadByte(); - string flagStateString = "未知"; - switch (value.FlagState) - { - case 0: - flagStateString = "不可用"; - break; - case 1: - flagStateString = "开始标志"; - break; - case 2: - flagStateString = "结束标志"; - break; - } - writer.WriteNumber($"[{value.FlagState.ReadNumber()}]标志状态-{flagStateString}", value.FlagState); - value.Speed = reader.ReadByte(); - writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); - value.Altitude = reader.ReadUInt16(); - writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude); - value.Latitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude); - value.Longitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude); - value.AlarmTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.AlarmTime.ToString("yyMMddHHmmss")}]日期时间", value.AlarmTime.ToString("yyyy-MM-dd HH:mm:ss")); - value.VehicleState = reader.ReadUInt16(); - writer.WriteNumber($"[{value.VehicleState.ReadNumber()}]车辆状态", value.VehicleState); - var vehicleStateBits = Convert.ToString(value.VehicleState, 2).PadLeft(16, '0'); - writer.WriteStartObject($"车辆状态对象[{vehicleStateBits}]"); - writer.WriteString($"[{vehicleStateBits[15]}]Bit0ACC状态", vehicleStateBits[15] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[14]}]Bit1左转向状态", vehicleStateBits[14] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[13]}]Bit2右转向状态", vehicleStateBits[13] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[12]}]Bit3雨刮器状态", vehicleStateBits[12] == '0' ? "关闭" : "打开"); - writer.WriteString($"[{vehicleStateBits[11]}]Bit4制动状态", vehicleStateBits[11] == '0' ? "未制动" : "制动"); - writer.WriteString($"[{vehicleStateBits[10]}]Bit5插卡状态", vehicleStateBits[10] == '0' ? "未插卡" : "已插卡"); - writer.WriteString($"[{vehicleStateBits[9]}]Bit6自定义", vehicleStateBits[9].ToString()); - writer.WriteString($"[{vehicleStateBits[8]}]Bit7自定义", vehicleStateBits[8].ToString()); - writer.WriteString($"[{vehicleStateBits[7]}]Bit8自定义", vehicleStateBits[7].ToString()); - writer.WriteString($"[{vehicleStateBits[6]}]Bit9自定义", vehicleStateBits[6].ToString()); - writer.WriteString($"[{vehicleStateBits[5]}]Bit10定位状态", vehicleStateBits[5] == '0' ? "未定位" : "已定位"); - writer.WriteString($"[{vehicleStateBits[4]}]Bit11自定义", vehicleStateBits[4].ToString()); - writer.WriteString($"[{vehicleStateBits[3]}]Bit12自定义", vehicleStateBits[3].ToString()); - writer.WriteString($"[{vehicleStateBits[2]}]Bit13自定义", vehicleStateBits[2].ToString()); - writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString()); - writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString()); - writer.WriteEndObject(); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - value.AlarmOrEventCount = reader.ReadByte(); - writer.WriteNumber($"[{value.AlarmOrEventCount.ReadNumber()}]报警_事件列表总数", value.AlarmOrEventCount); - if (value.AlarmOrEventCount > 0) - { - writer.WriteStartArray("报警_事件列表"); - for (int i = 0; i < value.AlarmOrEventCount; i++) - { - writer.WriteStartObject(); - AlarmOrEventProperty item = new AlarmOrEventProperty(); - item.TirePressureAlarmPosition = reader.ReadByte(); - writer.WriteNumber($"[{item.TirePressureAlarmPosition.ReadNumber()}]胎压报警位置", item.TirePressureAlarmPosition); - item.AlarmOrEventType = reader.ReadUInt16(); - string alarmOrEventTypeString = ""; - switch (item.AlarmOrEventType) - { - case 0x01: - alarmOrEventTypeString = "前向碰撞报警"; - break; - case 0x02: - alarmOrEventTypeString = "车道偏离报警"; - break; - case 0x03: - alarmOrEventTypeString = "车距过近报警"; - break; - case 0x04: - alarmOrEventTypeString = "行人碰撞报警"; - break; - case 0x05: - alarmOrEventTypeString = "频繁变道报警"; - break; - case 0x06: - alarmOrEventTypeString = "道路标识超限报警"; - break; - case 0x07: - alarmOrEventTypeString = "障碍物报警"; - break; - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - alarmOrEventTypeString = "用户自定义"; - break; - case 0x10: - alarmOrEventTypeString = "道路标志识别事件"; - break; - case 0x11: - alarmOrEventTypeString = "主动抓拍事件"; - break; - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - alarmOrEventTypeString = "用户自定义"; - break; - } - writer.WriteNumber($"[{item.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", item.AlarmOrEventType); - item.TirePressure = reader.ReadUInt16(); - writer.WriteNumber($"[{item.TirePressure.ReadNumber()}]胎压Kpa", item.TirePressure); - item.TireTemperature = reader.ReadUInt16(); - writer.WriteNumber($"[{item.TireTemperature.ReadNumber()}]胎温℃", item.TireTemperature); - item.BatteryLevel = reader.ReadUInt16(); - writer.WriteNumber($"[{item.BatteryLevel.ReadNumber()}]电池电量%", item.BatteryLevel); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x0200_0x66 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); - value.AttachInfoId = reader.ReadByte(); - value.AttachInfoLength = reader.ReadByte(); - value.AlarmId = reader.ReadUInt32(); - value.FlagState = reader.ReadByte(); - value.Speed = reader.ReadByte(); - value.Altitude = reader.ReadUInt16(); - value.Latitude = (int)reader.ReadUInt32(); - value.Longitude = (int)reader.ReadUInt32(); - value.AlarmTime = reader.ReadDateTime6(); - value.VehicleState = reader.ReadUInt16(); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - value.AlarmOrEventCount = reader.ReadByte(); - if (value.AlarmOrEventCount > 0) - { - value.AlarmOrEvents = new List(); - for (int i = 0; i < value.AlarmOrEventCount; i++) - { - AlarmOrEventProperty alarmOrEventProperty = new AlarmOrEventProperty(); - alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadByte(); - alarmOrEventProperty.AlarmOrEventType = reader.ReadUInt16(); - alarmOrEventProperty.TirePressure = reader.ReadUInt16(); - alarmOrEventProperty.TireTemperature = reader.ReadUInt16(); - alarmOrEventProperty.BatteryLevel = reader.ReadUInt16(); - value.AlarmOrEvents.Add(alarmOrEventProperty); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x66 value, IJT808Config config) - { - writer.WriteByte(value.AttachInfoId); - writer.Skip(1, out int AttachInfoLengthPosition); - writer.WriteUInt32(value.AlarmId); - writer.WriteByte(value.FlagState); - writer.WriteByte(value.Speed); - writer.WriteUInt16(value.Altitude); - writer.WriteUInt32((uint)value.Latitude); - writer.WriteUInt32((uint)value.Longitude); - writer.WriteDateTime6(value.AlarmTime); - writer.WriteUInt16(value.VehicleState); - if (value.AlarmIdentification == null) - { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - if (value.AlarmOrEvents.Count > 0) - { - writer.WriteByte((byte)value.AlarmOrEvents.Count); - foreach (var item in value.AlarmOrEvents) - { - writer.WriteByte(item.TirePressureAlarmPosition); - writer.WriteUInt16(item.AlarmOrEventType); - writer.WriteUInt16(item.TirePressure); - writer.WriteUInt16(item.TireTemperature); - writer.WriteUInt16(item.BatteryLevel); - } - } - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - AttachInfoLengthPosition - 1), AttachInfoLengthPosition); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs deleted file mode 100644 index c6c5d57..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs +++ /dev/null @@ -1,279 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 盲区监测系统报警信息 - /// - public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 盲区监测系统报警信息Id - /// - public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x67; - /// - /// 盲区监测系统报警信息长度 - /// - public override byte AttachInfoLength { get; set; } = 26; - /// - /// 报警ID - /// - public uint AlarmId { get; set; } - /// - /// 标志状态 - /// - public byte FlagState { get; set; } - /// - /// 报警/事件类型 - /// - public byte AlarmOrEventType{ get; set; } - /// - /// 报警/事件类型 - /// - public byte AlarmLevel { get; set; } - /// - /// 车速 - /// - public byte Speed { get; set; } - /// - /// 高程 - /// - public ushort Altitude { get; set; } - /// - /// 纬度 - /// - public int Latitude { get; set; } - /// - /// 经度 - /// - public int Longitude { get; set; } - /// - /// 日期时间 - /// YYMMDDhhmmss - /// BCD[6] - /// - public DateTime AlarmTime { get; set; } - /// - /// 车辆状态 - /// - public ushort VehicleState { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); - value.AttachInfoId = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); - value.AttachInfoLength = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); - value.AlarmId = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmId.ReadNumber()}]报警ID", value.AlarmId); - value.FlagState = reader.ReadByte(); - string flagStateString = "未知"; - switch (value.FlagState) - { - case 0: - flagStateString = "不可用"; - break; - case 1: - flagStateString = "开始标志"; - break; - case 2: - flagStateString = "结束标志"; - break; - } - writer.WriteNumber($"[{value.FlagState.ReadNumber()}]标志状态-{flagStateString}", value.FlagState); - value.AlarmOrEventType = reader.ReadByte(); - string alarmOrEventTypeString = ""; - switch (value.AlarmOrEventType) - { - case 0x01: - alarmOrEventTypeString = "前向碰撞报警"; - break; - case 0x02: - alarmOrEventTypeString = "车道偏离报警"; - break; - case 0x03: - alarmOrEventTypeString = "车距过近报警"; - break; - case 0x04: - alarmOrEventTypeString = "行人碰撞报警"; - break; - case 0x05: - alarmOrEventTypeString = "频繁变道报警"; - break; - case 0x06: - alarmOrEventTypeString = "道路标识超限报警"; - break; - case 0x07: - alarmOrEventTypeString = "障碍物报警"; - break; - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - alarmOrEventTypeString = "用户自定义"; - break; - case 0x10: - alarmOrEventTypeString = "道路标志识别事件"; - break; - case 0x11: - alarmOrEventTypeString = "主动抓拍事件"; - break; - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - alarmOrEventTypeString = "用户自定义"; - break; - } - writer.WriteNumber($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", value.AlarmOrEventType); - value.AlarmLevel = reader.ReadByte(); - string alarmLevelString = "未知"; - switch (value.AlarmLevel) - { - case 0x01: - alarmLevelString = "一级报警"; - break; - case 0x02: - alarmLevelString = "二级报警"; - break; - } - writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel); - value.Speed = reader.ReadByte(); - writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); - value.Altitude = reader.ReadUInt16(); - writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude); - value.Latitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude); - value.Longitude = (int)reader.ReadUInt32(); - writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude); - value.AlarmTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.AlarmTime.ToString("yyMMddHHmmss")}]日期时间", value.AlarmTime.ToString("yyyy-MM-dd HH:mm:ss")); - value.VehicleState = reader.ReadUInt16(); - writer.WriteNumber($"[{value.VehicleState.ReadNumber()}]车辆状态", value.VehicleState); - var vehicleStateBits=Convert.ToString(value.VehicleState, 2).PadLeft(16, '0'); - writer.WriteStartObject($"车辆状态对象[{vehicleStateBits}]"); - writer.WriteString($"[{vehicleStateBits[15]}]Bit0ACC状态", vehicleStateBits[15]=='0'?"关闭":"打开"); - writer.WriteString($"[{vehicleStateBits[14]}]Bit1左转向状态", vehicleStateBits[14]=='0'?"关闭":"打开"); - writer.WriteString($"[{vehicleStateBits[13]}]Bit2右转向状态", vehicleStateBits[13]=='0'?"关闭":"打开"); - writer.WriteString($"[{vehicleStateBits[12]}]Bit3雨刮器状态", vehicleStateBits[12]=='0'?"关闭":"打开"); - writer.WriteString($"[{vehicleStateBits[11]}]Bit4制动状态", vehicleStateBits[11] == '0' ? "未制动" : "制动"); - writer.WriteString($"[{vehicleStateBits[10]}]Bit5插卡状态", vehicleStateBits[10] == '0' ? "未插卡" : "已插卡"); - writer.WriteString($"[{vehicleStateBits[9]}]Bit6自定义", vehicleStateBits[9].ToString()); - writer.WriteString($"[{vehicleStateBits[8]}]Bit7自定义", vehicleStateBits[8].ToString()); - writer.WriteString($"[{vehicleStateBits[7]}]Bit8自定义", vehicleStateBits[7].ToString()); - writer.WriteString($"[{vehicleStateBits[6]}]Bit9自定义", vehicleStateBits[6].ToString()); - writer.WriteString($"[{vehicleStateBits[5]}]Bit10定位状态", vehicleStateBits[5] == '0' ? "未定位" : "已定位"); - writer.WriteString($"[{vehicleStateBits[4]}]Bit11自定义", vehicleStateBits[4].ToString()); - writer.WriteString($"[{vehicleStateBits[3]}]Bit12自定义", vehicleStateBits[3].ToString()); - writer.WriteString($"[{vehicleStateBits[2]}]Bit13自定义", vehicleStateBits[2].ToString()); - writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString()); - writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString()); - writer.WriteEndObject(); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - } - /// - /// - /// - /// - /// - /// - public JT808_0x0200_0x67 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); - value.AttachInfoId = reader.ReadByte(); - value.AttachInfoLength = reader.ReadByte(); - value.AlarmId = reader.ReadUInt32(); - value.FlagState = reader.ReadByte(); - value.AlarmOrEventType = reader.ReadByte(); - value.AlarmLevel = reader.ReadByte(); - value.Speed = reader.ReadByte(); - value.Altitude = reader.ReadUInt16(); - value.Latitude = (int)reader.ReadUInt32(); - value.Longitude = (int)reader.ReadUInt32(); - value.AlarmTime = reader.ReadDateTime6(); - value.VehicleState = reader.ReadUInt16(); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x67 value, IJT808Config config) - { - writer.WriteByte(value.AttachInfoId); - writer.WriteByte(value.AttachInfoLength); - writer.WriteUInt32(value.AlarmId); - writer.WriteByte(value.FlagState); - writer.WriteByte(value.AlarmOrEventType); - writer.WriteByte(value.AlarmLevel); - writer.WriteByte(value.Speed); - writer.WriteUInt16(value.Altitude); - writer.WriteUInt32((uint)value.Latitude); - writer.WriteUInt32((uint)value.Longitude); - writer.WriteDateTime6(value.AlarmTime); - writer.WriteUInt16(value.VehicleState); - if (value.AlarmIdentification == null) - { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs deleted file mode 100644 index b4c9888..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs +++ /dev/null @@ -1,122 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Enums; -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 透传数据 - /// - public class JT808_0x0900_0xF7 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 透传类型 - /// - public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; - /// - /// 消息列表总数 - /// - public byte USBMessageCount { get; set; } - /// - /// 消息列表数据 - /// - public List USBMessages { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); - value.USBMessageCount = reader.ReadByte(); - writer.WriteNumber($"[{value.USBMessageCount.ReadNumber()}]消息列表总数", value.USBMessageCount); - if (value.USBMessageCount > 0) - { - writer.WriteStartArray("消息列表"); - for (int i = 0; i < value.USBMessageCount; i++) - { - writer.WriteStartObject(); - JT808_0x0900_0xF7_USB item = new JT808_0x0900_0xF7_USB(); - item.USBID = reader.ReadByte(); - writer.WriteNumber($"[{item.USBID.ReadNumber()}]外设ID", item.USBID); - item.MessageLength = reader.ReadByte(); - writer.WriteNumber($"[{item.MessageLength.ReadNumber()}]消息长度", item.MessageLength); - item.WorkingCondition = reader.ReadByte(); - var workingCondition = (WorkingConditionType)item.WorkingCondition; - writer.WriteNumber($"[{item.WorkingCondition.ReadNumber()}]工作状态-{workingCondition.ToString()}", item.WorkingCondition); - item.AlarmStatus = reader.ReadUInt32(); - writer.WriteNumber($"[{item.AlarmStatus.ReadNumber()}]报警状态", item.AlarmStatus); - var alarmStatusBits = Convert.ToString(item.AlarmStatus, 2).PadLeft(32, '0').AsSpan(); - writer.WriteStartObject($"报警状态对象[{alarmStatusBits.ToString()}]"); - writer.WriteString($"[bit12~bit31]预留", alarmStatusBits.Slice(12).ToString()); - writer.WriteString($"]bit11]定位模块异常", alarmStatusBits[11].ToString()); - writer.WriteString($"[bit10]通讯模块异常", alarmStatusBits[10].ToString()); - writer.WriteString($"[bit6~bit9]预留", alarmStatusBits.Slice(6,4).ToString()); - writer.WriteString($"[bit5]电池异常", alarmStatusBits[5].ToString()); - writer.WriteString($"[bit4]扬声器异常", alarmStatusBits[4].ToString()); - writer.WriteString($"[bit3]红外补光异常", alarmStatusBits[3].ToString()); - writer.WriteString($"[bit2]辅存储器异常", alarmStatusBits[2].ToString()); - writer.WriteString($"[bit1]主存储器异常", alarmStatusBits[1].ToString()); - writer.WriteString($"[bit0]摄像头异常", alarmStatusBits[0].ToString()); - writer.WriteEndObject(); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x0900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); - value.USBMessageCount = reader.ReadByte(); - if (value.USBMessageCount > 0) - { - value.USBMessages = new List(); - for (int i = 0; i < value.USBMessageCount; i++) - { - JT808_0x0900_0xF7_USB item = new JT808_0x0900_0xF7_USB(); - item.USBID = reader.ReadByte(); - item.MessageLength = reader.ReadByte(); - item.WorkingCondition = reader.ReadByte(); - item.AlarmStatus = reader.ReadUInt32(); - value.USBMessages.Add(item); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF7 value, IJT808Config config) - { - if (value.USBMessages != null && value.USBMessages.Count > 0) - { - writer.WriteByte((byte)value.USBMessages.Count); - foreach (var item in value.USBMessages) - { - writer.WriteByte(item.USBID); - writer.WriteByte(5); - writer.WriteByte(item.WorkingCondition); - writer.WriteUInt32(item.AlarmStatus); - } - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs deleted file mode 100644 index 6198167..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs +++ /dev/null @@ -1,175 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 透传数据 - /// - public class JT808_0x0900_0xF8 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 透传类型 - /// - public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; - /// - /// 消息列表总数 - /// - public byte USBMessageCount { get; set; } - /// - /// - /// - public List USBMessages { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); - value.USBMessageCount = reader.ReadByte(); - writer.WriteNumber($"[{value.USBMessageCount.ReadNumber()}]消息列表总数", value.USBMessageCount); - if (value.USBMessageCount > 0) - { - writer.WriteStartArray("消息列表"); - for (int i = 0; i < value.USBMessageCount; i++) - { - writer.WriteStartObject(); - JT808_0x0900_0xF8_USB item = new JT808_0x0900_0xF8_USB(); - item.USBID = reader.ReadByte(); - writer.WriteNumber($"[{item.USBID.ReadNumber()}]外设ID", item.USBID); - item.MessageLength = reader.ReadByte(); - writer.WriteNumber($"[{item.MessageLength.ReadNumber()}]消息长度", item.MessageLength); - item.CompantNameLength = reader.ReadByte(); - writer.WriteNumber($"[{item.CompantNameLength.ReadNumber()}]公司名称长度", item.CompantNameLength); - - string compantNameHex = reader.ReadVirtualArray(item.CompantNameLength).ToArray().ToHexString(); - item.CompantName = reader.ReadString(item.CompantNameLength); - writer.WriteString($"[{compantNameHex}]公司名称", item.CompantName); - - item.ProductModelLength = reader.ReadByte(); - writer.WriteNumber($"[{item.ProductModelLength.ReadNumber()}]产品型号长度", item.ProductModelLength); - - string productModelHex = reader.ReadVirtualArray(item.ProductModelLength).ToArray().ToHexString(); - item.ProductModel = reader.ReadString(item.ProductModelLength); - writer.WriteString($"[{productModelHex}]产品型号", item.ProductModel); - - item.HardwareVersionNumberLength = reader.ReadByte(); - writer.WriteNumber($"[{item.HardwareVersionNumberLength.ReadNumber()}]硬件版本号长度", item.HardwareVersionNumberLength); - string hardwareVersionNumberHex = reader.ReadVirtualArray(item.HardwareVersionNumberLength).ToArray().ToHexString(); - item.HardwareVersionNumber = reader.ReadString(item.HardwareVersionNumberLength); - writer.WriteString($"[{hardwareVersionNumberHex}]硬件版本号", item.HardwareVersionNumber); - - item.SoftwareVersionNumberLength = reader.ReadByte(); - writer.WriteNumber($"[{item.SoftwareVersionNumberLength.ReadNumber()}]软件版本号长度", item.SoftwareVersionNumberLength); - string softwareVersionNumberHex = reader.ReadVirtualArray(item.SoftwareVersionNumberLength).ToArray().ToHexString(); - item.SoftwareVersionNumber = reader.ReadString(item.SoftwareVersionNumberLength); - writer.WriteString($"[{softwareVersionNumberHex}]软件版本号", item.SoftwareVersionNumber); - - item.DevicesIDLength = reader.ReadByte(); - writer.WriteNumber($"[{item.DevicesIDLength.ReadNumber()}]设备ID长度", item.DevicesIDLength); - string devicesIDHex = reader.ReadVirtualArray(item.DevicesIDLength).ToArray().ToHexString(); - item.DevicesID = reader.ReadString(item.DevicesIDLength); - writer.WriteString($"[{devicesIDHex}]设备ID", item.DevicesID); - - item.CustomerCodeLength = reader.ReadByte(); - writer.WriteNumber($"[{item.CustomerCodeLength.ReadNumber()}]客户代码长度", item.CustomerCodeLength); - string customerCodeHex = reader.ReadVirtualArray(item.CustomerCodeLength).ToArray().ToHexString(); - item.CustomerCode = reader.ReadString(item.CustomerCodeLength); - writer.WriteString($"[{customerCodeHex}]客户代码", item.CustomerCode); - - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x0900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); - value.USBMessageCount = reader.ReadByte(); - if (value.USBMessageCount > 0) - { - value.USBMessages = new List(); - for (int i = 0; i < value.USBMessageCount; i++) - { - JT808_0x0900_0xF8_USB item = new JT808_0x0900_0xF8_USB(); - item.USBID = reader.ReadByte(); - item.MessageLength = reader.ReadByte(); - item.CompantNameLength = reader.ReadByte(); - item.CompantName = reader.ReadString(item.CompantNameLength); - item.ProductModelLength = reader.ReadByte(); - item.ProductModel = reader.ReadString(item.ProductModelLength); - item.HardwareVersionNumberLength = reader.ReadByte(); - item.HardwareVersionNumber = reader.ReadString(item.HardwareVersionNumberLength); - item.SoftwareVersionNumberLength = reader.ReadByte(); - item.SoftwareVersionNumber = reader.ReadString(item.SoftwareVersionNumberLength); - item.DevicesIDLength = reader.ReadByte(); - item.DevicesID = reader.ReadString(item.DevicesIDLength); - item.CustomerCodeLength = reader.ReadByte(); - item.CustomerCode = reader.ReadString(item.CustomerCodeLength); - value.USBMessages.Add(item); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF8 value, IJT808Config config) - { - if (value.USBMessages != null && value.USBMessages.Count > 0) - { - writer.WriteByte((byte)value.USBMessages.Count); - foreach (var item in value.USBMessages) - { - writer.WriteByte(item.USBID); - writer.Skip(1,out int messageLengthPosition); - - writer.Skip(1, out int CompantNameLengthPosition); - writer.WriteString(item.CompantName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition); - - writer.Skip(1, out int ProductModelLengthPosition); - writer.WriteString(item.ProductModel); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition); - - writer.Skip(1, out int HardwareVersionNumberLengthPosition); - writer.WriteString(item.HardwareVersionNumber); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition); - - writer.Skip(1, out int SoftwareVersionNumberLengthPosition); - writer.WriteString(item.SoftwareVersionNumber); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition); - - writer.Skip(1, out int DevicesIDLengthPosition); - writer.WriteString(item.DevicesID); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition); - - writer.Skip(1, out int CustomerCodeLengthPosition); - writer.WriteString(item.CustomerCode); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CustomerCodeLengthPosition - 1), CustomerCodeLengthPosition); - - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - messageLengthPosition - 1), messageLengthPosition); - } - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs deleted file mode 100644 index 4a6d105..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs +++ /dev/null @@ -1,175 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 报警附件信息消息 - /// - public class JT808_0x1210: JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 制造商Id - /// 7 个字节,由大写字母和数字组成,此终端ID 由制造商自行定义,位数不足时,后补“0x00” - /// - public string MakerID { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// 平台给报警分配的唯一编号 - /// 32 - /// - public string AlarmId { get; set; } - /// - /// 信息类型 - /// 0x00:正常报警文件信息 - /// 0x01:补传报警文件信息 - /// - public byte InfoType { get; set; } - /// - /// 附件数量 - /// - public byte AttachCount { get; set; } - /// - /// 附件信息列表 - /// - public List AttachInfos { get; set; } - /// - /// 报警附件信息消息Id - /// - public override ushort MsgId => 0x1210; - /// - /// 报警附件信息消息 - /// - public override string Description => "报警附件信息消息"; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x1210 value = new JT808_0x1210(); - string makerIdHex=reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.MakerID = reader.ReadString(7); - writer.WriteString($"[{makerIdHex}]制造商Id", value.MakerID); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString(); - value.AlarmId = reader.ReadString(32); - writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId); - value.InfoType = reader.ReadByte(); - writer.WriteNumber($"[{value.InfoType.ReadNumber()}]信息类型", value.InfoType); - value.AttachCount = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachCount.ReadNumber()}]附件数量", value.AttachCount); - if (value.AttachCount > 0) - { - writer.WriteStartArray("附件信息列表"); - for (int i = 0; i < value.AttachCount; i++) - { - writer.WriteStartObject(); - AttachProperty attachProperty = new AttachProperty(); - attachProperty.FileNameLength = reader.ReadByte(); - writer.WriteNumber($"[{attachProperty.FileNameLength.ReadNumber()}]文件名称长度", attachProperty.FileNameLength); - string fileNameHex = reader.ReadVirtualArray(attachProperty.FileNameLength).ToArray().ToHexString(); - attachProperty.FileName = reader.ReadString(attachProperty.FileNameLength); - writer.WriteString($"[{fileNameHex}]文件名称", attachProperty.FileName); - attachProperty.FileSize = reader.ReadUInt32(); - writer.WriteNumber($"[{ attachProperty.FileSize.ReadNumber()}]文件大小", attachProperty.FileSize); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x1210 value = new JT808_0x1210(); - value.MakerID = reader.ReadString(7); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - value.AlarmId = reader.ReadString(32); - value.InfoType = reader.ReadByte(); - value.AttachCount = reader.ReadByte(); - if (value.AttachCount > 0) - { - value.AttachInfos = new List(); - for (int i = 0; i < value.AttachCount; i++) - { - AttachProperty attachProperty = new AttachProperty(); - attachProperty.FileNameLength = reader.ReadByte(); - attachProperty.FileName = reader.ReadString(attachProperty.FileNameLength); - attachProperty.FileSize = reader.ReadUInt32(); - value.AttachInfos.Add(attachProperty); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1210 value, IJT808Config config) - { - writer.WriteString(value.MakerID.PadRight(7, '\0')); - if (value.AlarmIdentification == null) - { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - writer.WriteString(value.AlarmId); - writer.WriteByte(value.InfoType); - if (value.AttachInfos != null && value.AttachInfos.Count > 0) - { - writer.WriteByte((byte)value.AttachInfos.Count); - foreach (var item in value.AttachInfos) - { - writer.Skip(1, out int FileNameLengthPosition); - writer.WriteString(item.FileName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition); - writer.WriteUInt32(item.FileSize); - } - } - else - { - writer.WriteByte(0); - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs deleted file mode 100644 index 8f071f2..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs +++ /dev/null @@ -1,87 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessagePack; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 文件信息上传 - /// - public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 文件信息上传 - /// - public override string Description => "文件信息上传"; - /// - /// 文件名称长度 - /// - public byte FileNameLength { get; set; } - /// - /// 文件名称 - /// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - /// - public string FileName { get; set; } - /// - /// 文件类型 - /// - public byte FileType { get; set; } - /// - /// 文件大小 - /// - public uint FileSize { get; set; } - /// - /// 文件信息上传Id - /// - public override ushort MsgId => 0x1211; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x1211 value = new JT808_0x1211(); - value.FileNameLength = reader.ReadByte(); - writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength); - string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString(); - value.FileName = reader.ReadString(value.FileNameLength); - writer.WriteString($"[{fileNameHex}]文件名称", value.FileName); - value.FileType = reader.ReadByte(); - writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType); - value.FileSize = reader.ReadUInt32(); - writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); - } - /// - /// - /// - /// - /// - /// - public JT808_0x1211 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x1211 value = new JT808_0x1211(); - value.FileNameLength = reader.ReadByte(); - value.FileName = reader.ReadString(value.FileNameLength); - value.FileType = reader.ReadByte(); - value.FileSize = reader.ReadUInt32(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1211 value, IJT808Config config) - { - writer.Skip(1, out int FileNameLengthPosition); - writer.WriteString(value.FileName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition); - writer.WriteByte(value.FileType); - writer.WriteUInt32(value.FileSize); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs deleted file mode 100644 index afbf5dd..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs +++ /dev/null @@ -1,87 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessagePack; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 文件上传完成消息 - /// - public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 文件上传完成消息 - /// - public override string Description => "文件上传完成消息"; - /// - /// 文件名称长度 - /// - public byte FileNameLength { get; set; } - /// - /// 文件名称 - /// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - /// - public string FileName { get; set; } - /// - /// 文件类型 - /// - public byte FileType { get; set; } - /// - /// 文件大小 - /// - public uint FileSize { get; set; } - /// - /// 文件上传完成消息 - /// - public override ushort MsgId => 0x1212; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x1212 value = new JT808_0x1212(); - value.FileNameLength = reader.ReadByte(); - writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength); - string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString(); - value.FileName = reader.ReadString(value.FileNameLength); - writer.WriteString($"[{fileNameHex}]文件名称", value.FileName); - value.FileType = reader.ReadByte(); - writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType); - value.FileSize = reader.ReadUInt32(); - writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); - } - /// - /// - /// - /// - /// - /// - public JT808_0x1212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x1212 value = new JT808_0x1212(); - value.FileNameLength = reader.ReadByte(); - value.FileName = reader.ReadString(value.FileNameLength); - value.FileType = reader.ReadByte(); - value.FileSize = reader.ReadUInt32(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1212 value, IJT808Config config) - { - writer.Skip(1, out int FileNameLengthPosition); - writer.WriteString(value.FileName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition); - writer.WriteByte(value.FileType); - writer.WriteUInt32(value.FileSize); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs deleted file mode 100644 index f5b2952..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs +++ /dev/null @@ -1,456 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Enums; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 高级驾驶辅助系统参数 - /// - public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 高级驾驶辅助系统参数 - /// - public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; - /// - /// 高级驾驶辅助系统参数长度 - /// - public override byte ParamLength { get; set; } - /// - /// 报警判断速度阈值 - /// - public byte AlarmJudgeSpeedThreshold { get; set; } - /// - /// 报警提示音量 - /// - public byte WarningVolume { get; set; } - /// - /// 主动拍照策略 - /// - /// - public byte ActivePhotographyStrategy { get; set; } - /// - /// 主动定时拍照时间间隔 - /// - public ushort ActivelyTimePhotoInterval { get; set; } - /// - /// 主动定距拍照距离间隔 - /// - public ushort ActiveDistancePhotographyDistanceInterval { get; set; } - /// - /// 单次主动拍照张数 - /// - public byte SingleInitiativePhotos { get; set; } - /// - /// 单次主动拍照时间间隔 - /// - public byte SingleInitiativePhotosInterval { get; set; } - /// - /// 拍照分辨率 - /// - /// - public byte PhotoResolution { get; set; } - /// - /// 视频录制分辨率 - /// - public byte VideoRecordingResolution { get; set; } - /// - /// 报警使能 - /// - public uint AlarmEnable { get; set; } - /// - /// 事件使能 - /// - public uint EventEnable { get; set; } - /// - /// 预留字段 - /// - public byte Placeholder1 { get; set; } - /// - /// 障碍物报警距离阈值 - /// - public byte DistanceThresholdObstacleAlarm { get; set; } - /// - /// 障碍物报警分级速度阈值 - /// - public byte HierarchicalSpeedThresholdObstacleAlarm { get; set; } - /// - /// 障碍物报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterObstacleAlarm { get; set; } - /// - /// 障碍物报警拍照张数 - /// - public byte BarrierAlarmPhotographs { get; set; } - /// - /// 障碍物报警拍照间隔 - /// - public byte ObstacleAlarmInterval { get; set; } - /// - /// 频繁变道报警判断时间段 - /// - public byte FrequentChannelChangeAlarmJudgmentTimePeriod { get; set; } - - /// - /// 频繁变道报警判断次数 - /// - public byte FrequentAlarmJudgmentNumberChannelChange { get; set; } - /// - /// 频繁变道报警分级速度阈值 - /// - public byte HierarchicalSpeedThresholdFrequentChannelChangeAlarm { get; set; } - /// - /// 频繁变道报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm { get; set; } - /// - /// 频繁变道报警拍照张数 - /// - public byte FrequentChannelChangeAlarmPhotos { get; set; } - /// - /// 频繁变道报警拍照间隔 - /// - public byte FrequentLaneChangeAlarmInterval { get; set; } - /// - /// 车道偏离报警分级速度阈值 - /// - public byte GradedSpeedThresholdLaneDeviationAlarm { get; set; } - /// - /// 车道偏离报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm { get; set; } - /// - /// 车道偏离报警拍照张数 - /// - public byte LaneDepartureAlarmPhoto { get; set; } - /// - /// 车道偏离报警拍照间隔 - /// - public byte LaneDepartureAlarmPhotoInterval { get; set; } - /// - /// 前向碰撞报警时间阈值 - /// - public byte ForwardCollisionWarningTimeThreshold { get; set; } - /// - /// 前向碰撞报警分级速度阈值 - /// - public byte HierarchicalSpeedThresholdForwardCollisionWarning { get; set; } - /// - /// 前向碰撞报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm { get; set; } - /// - /// 前向碰撞报警拍照张数 - /// - public byte ForwardCollisionAlarmPhotographs { get; set; } - /// - /// 前向碰撞报警拍照间隔 - /// - public byte ForwardCollisionAlarmInterval { get; set; } - /// - /// 行人碰撞报警时间阈值 - /// - public byte PedestrianCollisionAlarmTimeThreshold { get; set; } - /// - /// 行人碰撞报警使能速度阈值 - /// - public byte PedestrianCollisionAlarmEnablingSpeedThreshold { get; set; } - /// - /// 行人碰撞报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm { get; set; } - /// - /// 行人碰撞报警拍照张数 - /// - public byte PedestrianCollisionAlarmPhotos { get; set; } - /// - /// 行人碰撞报警拍照间隔 - /// - public byte PedestrianCollisionAlarmInterval { get; set; } - /// - /// 车距监控报警距离阈值 - /// - public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; } - /// - /// 车距监控报警分级速度阈值 - /// - public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; } - /// - /// 车距过近报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity { get; set; } - /// - /// 车距过近报警拍照张数 - /// - public byte AlarmPhotoVehicleCloseDistance { get; set; } - /// - /// 车距过近报警拍照间隔 - /// - public byte AlarmPhotoVehicleCloseDistanceInterval { get; set; } - /// - /// 道路标志识别拍照张数 - /// - public byte RoadSignRecognitionPhotographs { get; set; } - /// - /// 道路标志识别拍照间隔 - /// - public byte RoadSignRecognitionPhotographsInterval { get; set; } - /// - /// 保留字段 - /// - public byte[] Placeholder2 { get; set; } = new byte[4]; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId); - writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); - value.AlarmJudgeSpeedThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.AlarmJudgeSpeedThreshold.ReadNumber()}]报警判断速度阈值", value.AlarmJudgeSpeedThreshold); - value.WarningVolume = reader.ReadByte(); - writer.WriteNumber($"[{value.WarningVolume.ReadNumber()}]报警提示音量", value.WarningVolume); - value.ActivePhotographyStrategy = reader.ReadByte(); - var activePhotographyStrategy = (ActivePhotographyStrategyType)ActivePhotographyStrategy; - writer.WriteNumber($"[{value.ActivePhotographyStrategy.ReadNumber()}]主动拍照策略-{activePhotographyStrategy.ToString()}", value.ActivePhotographyStrategy); - value.ActivelyTimePhotoInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ActivelyTimePhotoInterval.ReadNumber()}]主动定时拍照时间间隔", value.ActivelyTimePhotoInterval); - value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ActiveDistancePhotographyDistanceInterval.ReadNumber()}]主动定距拍照距离间隔", value.ActiveDistancePhotographyDistanceInterval); - value.SingleInitiativePhotos = reader.ReadByte(); - writer.WriteNumber($"[{value.SingleInitiativePhotos.ReadNumber()}]单次主动拍照张数", value.SingleInitiativePhotos); - value.SingleInitiativePhotosInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.SingleInitiativePhotosInterval.ReadNumber()}]单次主动拍照时间间隔", value.SingleInitiativePhotosInterval); - value.PhotoResolution = reader.ReadByte(); - var photoResolutionType = (PhotoResolutionType)value.PhotoResolution; - writer.WriteNumber($"[{value.PhotoResolution.ReadNumber()}]拍照分辨率-{photoResolutionType.ToString()}", value.PhotoResolution); - value.VideoRecordingResolution = reader.ReadByte(); - var videoRecordingResolution = (VideoRecordingResolutionType)value.VideoRecordingResolution; - writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); - value.AlarmEnable = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); - var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); - writer.WriteStartObject("报警使能对象"); - writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30,2).ToString()); - writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); - writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16]=='0'?"关闭":"打开"); - writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); - writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开"); - writer.WriteEndObject(); - value.EventEnable = reader.ReadUInt32(); - writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); - var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); - writer.WriteStartObject("事件使能对象"); - writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); - writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); - writer.WriteString("[bit1]主动拍照", alarmEnableBits[1] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit0]道路标识识别", alarmEnableBits[0] == '0' ? "关闭" : "打开"); - writer.WriteEndObject(); - value.Placeholder1 = reader.ReadByte(); - writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1); - value.DistanceThresholdObstacleAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.DistanceThresholdObstacleAlarm.ReadNumber()}]障碍物报警距离阈值", value.DistanceThresholdObstacleAlarm); - value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.HierarchicalSpeedThresholdObstacleAlarm.ReadNumber()}]障碍物报警分级速度阈值", value.HierarchicalSpeedThresholdObstacleAlarm); - value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterObstacleAlarm.ReadNumber()}]障碍物报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterObstacleAlarm); - value.BarrierAlarmPhotographs = reader.ReadByte(); - writer.WriteNumber($"[{value.BarrierAlarmPhotographs.ReadNumber()}]障碍物报警拍照张数", value.BarrierAlarmPhotographs); - value.ObstacleAlarmInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.ObstacleAlarmInterval.ReadNumber()}]障碍物报警拍照间隔", value.ObstacleAlarmInterval); - value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte(); - writer.WriteNumber($"[{value.FrequentChannelChangeAlarmJudgmentTimePeriod.ReadNumber()}]频繁变道报警判断时间段", value.FrequentChannelChangeAlarmJudgmentTimePeriod); - value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte(); - writer.WriteNumber($"[{value.FrequentAlarmJudgmentNumberChannelChange.ReadNumber()}]频繁变道报警判断次数", value.FrequentAlarmJudgmentNumberChannelChange); - value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm.ReadNumber()}]频繁变道报警分级速度阈值", value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); - value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm.ReadNumber()}]频繁变道报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); - value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); - writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos); - value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval); - value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDeviationAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDeviationAlarm); - value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); - value.LaneDepartureAlarmPhoto = reader.ReadByte(); - writer.WriteNumber($"[{value.LaneDepartureAlarmPhoto.ReadNumber()}]车道偏离报警拍照张数", value.LaneDepartureAlarmPhoto); - value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.LaneDepartureAlarmPhotoInterval.ReadNumber()}]车道偏离报警拍照间隔", value.LaneDepartureAlarmPhotoInterval); - value.ForwardCollisionWarningTimeThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.ForwardCollisionWarningTimeThreshold.ReadNumber()}]前向碰撞报警时间阈值", value.ForwardCollisionWarningTimeThreshold); - value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte(); - writer.WriteNumber($"[{value.HierarchicalSpeedThresholdForwardCollisionWarning.ReadNumber()}]前向碰撞报警分级速度阈值", value.HierarchicalSpeedThresholdForwardCollisionWarning); - value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm.ReadNumber()}]前向碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm); - value.ForwardCollisionAlarmPhotographs = reader.ReadByte(); - writer.WriteNumber($"[{value.ForwardCollisionAlarmPhotographs.ReadNumber()}]前向碰撞报警拍照张数", value.ForwardCollisionAlarmPhotographs); - value.ForwardCollisionAlarmInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.ForwardCollisionAlarmInterval.ReadNumber()}]前向碰撞报警拍照间隔", value.ForwardCollisionAlarmInterval); - value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.PedestrianCollisionAlarmTimeThreshold.ReadNumber()}]行人碰撞报警时间阈值", value.PedestrianCollisionAlarmTimeThreshold); - value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.PedestrianCollisionAlarmEnablingSpeedThreshold.ReadNumber()}]行人碰撞报警使能速度阈值", value.PedestrianCollisionAlarmEnablingSpeedThreshold); - value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm.ReadNumber()}]行人碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); - value.PedestrianCollisionAlarmPhotos = reader.ReadByte(); - writer.WriteNumber($"[{value.PedestrianCollisionAlarmPhotos.ReadNumber()}]行人碰撞报警拍照张数", value.PedestrianCollisionAlarmPhotos); - value.PedestrianCollisionAlarmInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval); - value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距监控报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); - value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距监控报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); - value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); - value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); - writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistance.ReadNumber()}]车距过近报警拍照张数", value.AlarmPhotoVehicleCloseDistance); - value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistanceInterval.ReadNumber()}]车距过近报警拍照间隔", value.AlarmPhotoVehicleCloseDistanceInterval); - value.RoadSignRecognitionPhotographs = reader.ReadByte(); - writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs); - value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.RoadSignRecognitionPhotographsInterval.ReadNumber()}]道路标志识别拍照间隔", value.RoadSignRecognitionPhotographsInterval); - value.Placeholder2 = reader.ReadArray(4).ToArray(); - writer.WriteString("保留字段", value.Placeholder2.ToHexString()); - } - /// - /// - /// - /// - /// - /// - public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - value.AlarmJudgeSpeedThreshold = reader.ReadByte(); - value.WarningVolume = reader.ReadByte(); - value.ActivePhotographyStrategy = reader.ReadByte(); - value.ActivelyTimePhotoInterval = reader.ReadUInt16(); - value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); - value.SingleInitiativePhotos = reader.ReadByte(); - value.SingleInitiativePhotosInterval = reader.ReadByte(); - value.PhotoResolution = reader.ReadByte(); - value.VideoRecordingResolution = reader.ReadByte(); - value.AlarmEnable = reader.ReadUInt32(); - value.EventEnable = reader.ReadUInt32(); - value.Placeholder1 = reader.ReadByte(); - value.DistanceThresholdObstacleAlarm = reader.ReadByte(); - value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte(); - value.BarrierAlarmPhotographs = reader.ReadByte(); - value.ObstacleAlarmInterval = reader.ReadByte(); - value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte(); - value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte(); - value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); - value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); - value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); - value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); - value.LaneDepartureAlarmPhoto = reader.ReadByte(); - value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); - value.ForwardCollisionWarningTimeThreshold = reader.ReadByte(); - value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte(); - value.ForwardCollisionAlarmPhotographs = reader.ReadByte(); - value.ForwardCollisionAlarmInterval = reader.ReadByte(); - value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte(); - value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte(); - value.PedestrianCollisionAlarmPhotos = reader.ReadByte(); - value.PedestrianCollisionAlarmInterval = reader.ReadByte(); - value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); - value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); - value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); - value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); - value.RoadSignRecognitionPhotographs = reader.ReadByte(); - value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); - value.Placeholder2 = reader.ReadArray(4).ToArray(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config) - { - writer.WriteUInt32(value.ParamId); - writer.Skip(1, out int ParamLengthPosition); - writer.WriteByte(value.AlarmJudgeSpeedThreshold); - writer.WriteByte(value.WarningVolume); - writer.WriteByte(value.ActivePhotographyStrategy); - writer.WriteUInt16(value.ActivelyTimePhotoInterval); - writer.WriteUInt16(value.ActiveDistancePhotographyDistanceInterval); - writer.WriteByte(value.SingleInitiativePhotos); - writer.WriteByte(value.SingleInitiativePhotosInterval); - writer.WriteByte(value.PhotoResolution); - writer.WriteByte(value.VideoRecordingResolution); - writer.WriteUInt32(value.AlarmEnable); - writer.WriteUInt32(value.EventEnable); - writer.WriteByte(value.Placeholder1); - writer.WriteByte(value.DistanceThresholdObstacleAlarm); - writer.WriteByte(value.HierarchicalSpeedThresholdObstacleAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterObstacleAlarm); - writer.WriteByte(value.BarrierAlarmPhotographs); - writer.WriteByte(value.ObstacleAlarmInterval); - writer.WriteByte(value.FrequentChannelChangeAlarmJudgmentTimePeriod); - writer.WriteByte(value.FrequentAlarmJudgmentNumberChannelChange); - writer.WriteByte(value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); - writer.WriteByte(value.FrequentChannelChangeAlarmPhotos); - writer.WriteByte(value.FrequentLaneChangeAlarmInterval); - writer.WriteByte(value.GradedSpeedThresholdLaneDeviationAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); - writer.WriteByte(value.LaneDepartureAlarmPhoto); - writer.WriteByte(value.LaneDepartureAlarmPhotoInterval); - writer.WriteByte(value.ForwardCollisionWarningTimeThreshold); - writer.WriteByte(value.HierarchicalSpeedThresholdForwardCollisionWarning); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm); - writer.WriteByte(value.ForwardCollisionAlarmPhotographs); - writer.WriteByte(value.ForwardCollisionAlarmInterval); - writer.WriteByte(value.PedestrianCollisionAlarmTimeThreshold); - writer.WriteByte(value.PedestrianCollisionAlarmEnablingSpeedThreshold); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); - writer.WriteByte(value.PedestrianCollisionAlarmPhotos); - writer.WriteByte(value.PedestrianCollisionAlarmInterval); - writer.WriteByte(value.VehicleDistanceMonitoringAlarmDistanceThreshold); - writer.WriteByte(value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); - writer.WriteByte(value.AlarmPhotoVehicleCloseDistance); - writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval); - writer.WriteByte(value.RoadSignRecognitionPhotographs); - writer.WriteByte(value.RoadSignRecognitionPhotographsInterval); - writer.WriteArray(value.Placeholder2); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs deleted file mode 100644 index d082995..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs +++ /dev/null @@ -1,365 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Enums; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 驾驶员状态监测系统参数 - /// - public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 驾驶员状态监测系统参数 - /// - public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; - /// - /// 驾驶员状态监测系统参数长度 - /// - public override byte ParamLength { get; set; } - /// - /// 报警判断速度阈值 - /// - public byte AlarmJudgeSpeedThreshold { get; set; } - /// - /// 报警提示音量 - /// - public byte WarningVolume { get; set; } - /// - /// 主动拍照策略 - /// - public byte ActivePhotographyStrategy { get; set; } - /// - /// 主动定时拍照时间间隔 - /// - public ushort ActivelyTimePhotoInterval { get; set; } - /// - /// 主动定距拍照距离间隔 - /// - public ushort ActiveDistancePhotographyDistanceInterval { get; set; } - /// - /// 单次主动拍照张数 - /// - public byte SingleInitiativePhotos { get; set; } - /// - /// 单次主动拍照时间间隔 - /// - public byte SingleInitiativePhotosInterval { get; set; } - /// - /// 拍照分辨率 - /// - public byte PhotoResolution { get; set; } - /// - /// 视频录制分辨率 - /// - public byte VideoRecordingResolution { get; set; } - /// - /// 报警使能 - /// - public uint AlarmEnable { get; set; } - /// - /// 事件使能 - /// - public uint EventEnable { get; set; } - /// - /// 吸烟报警判断时间间隔 - /// - public ushort TimeIntervalSmokingAlarmJudgment { get; set; } - /// - /// 接打电话报警判断时间间隔 - /// - public ushort CallAlarmDetermineTimeInterval{ get; set; } - /// - /// 预留字段 - /// - public byte[] Reserve { get; set; } = new byte[3]; - /// - /// 疲劳驾驶报警分级速度阈值 - /// - public byte GradedSpeedThresholdFatigueDrivingAlarm { get; set; } - /// - /// 疲劳驾驶报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm { get; set; } - /// - /// 疲劳驾驶报警拍照张数 - /// - public byte FatigueDrivingAlarmPhotograph { get; set; } - /// - /// 疲劳驾驶报警拍照间隔时间 - /// - public byte FatigueDrivingAlarmPhotographInterval { get; set; } - /// - /// 接打电话报警分级速度阈值 - /// - public byte ClassifiedSpeedThresholdCallAlarm{ get; set; } - /// - /// 接打电话报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterCallAlarm{ get; set; } - /// - /// 接打电话报警拍驾驶员面部特征照片张数 - /// - public byte CallAlarmTakePicturesDriverFacialFeatures{ get; set; } - /// - /// 接打电话报警拍驾驶员面部特征照片间隔时间 - /// - public byte CallAlarmTakePicturesDriverFacialFeaturesInterval { get; set; } - /// - /// 抽烟报警分级车速阈值 - /// - public byte ClassifiedSpeedThresholdSmokingAlarm{ get; set; } - /// - /// 抽烟报警前后视频录制时间 - /// - public byte VideoRecordingTimeBeforeAndAfterSmokingAlarm{ get; set; } - /// - /// 抽烟报警拍驾驶员面部特征照片张数 - /// - public byte SmokingAlarmPhotographsDriverFaceCharacteristics { get; set; } - /// - /// 抽烟报警拍驾驶员面部特征照片间隔时间 - /// - public byte SmokingAlarmPhotographsDriverFaceCharacteristicsInterval { get; set; } - /// - /// 分神驾驶报警分级车速阈值 - /// - public byte ClassifiedSpeedThresholdDistractedDrivingAlarm { get; set; } - /// - /// 分神驾驶报警拍照张数 - /// - public byte DistractedDrivingAlarmPhotography{ get; set; } - /// - /// 分神驾驶报警拍照间隔时间 - /// - public byte DistractedDrivingAlarmPhotographyInterval { get; set; } - /// - /// 驾驶行为异常视频录制时间 - /// - public byte VideoRecordingTimeAbnormalDrivingBehavior{ get; set; } - /// - /// 驾驶行为异常抓拍照片张数 - /// - public byte PhotographsAbnormalDrivingBehavior{ get; set; } - /// - /// 驾驶行为异常拍照间隔 - /// - public byte PictureIntervalAbnormalDrivingBehavior{ get; set; } - /// - /// 驾驶员身份识别触发 - /// - public byte DriverIdentificationTrigger { get; set; } - /// - /// 保留字段 - /// - public byte[] Retain { get; set; } = new byte[2]; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId); - writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); - value.AlarmJudgeSpeedThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.AlarmJudgeSpeedThreshold.ReadNumber()}]报警判断速度阈值", value.AlarmJudgeSpeedThreshold); - value.WarningVolume = reader.ReadByte(); - writer.WriteNumber($"[{value.WarningVolume.ReadNumber()}]报警提示音量", value.WarningVolume); - value.ActivePhotographyStrategy = reader.ReadByte(); - var activePhotographyStrategy = (ActivePhotographyStrategyType)ActivePhotographyStrategy; - writer.WriteNumber($"[{value.ActivePhotographyStrategy.ReadNumber()}]主动拍照策略-{activePhotographyStrategy.ToString()}", value.ActivePhotographyStrategy); - value.ActivelyTimePhotoInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ActivelyTimePhotoInterval.ReadNumber()}]主动定时拍照时间间隔", value.ActivelyTimePhotoInterval); - value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ActiveDistancePhotographyDistanceInterval.ReadNumber()}]主动定距拍照距离间隔", value.ActiveDistancePhotographyDistanceInterval); - value.SingleInitiativePhotos = reader.ReadByte(); - writer.WriteNumber($"[{value.SingleInitiativePhotos.ReadNumber()}]单次主动拍照张数", value.SingleInitiativePhotos); - value.SingleInitiativePhotosInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.SingleInitiativePhotosInterval.ReadNumber()}]单次主动拍照时间间隔", value.SingleInitiativePhotosInterval); - value.PhotoResolution = reader.ReadByte(); - var photoResolutionType = (PhotoResolutionType)value.PhotoResolution; - writer.WriteNumber($"[{value.PhotoResolution.ReadNumber()}]拍照分辨率-{photoResolutionType.ToString()}", value.PhotoResolution); - value.VideoRecordingResolution = reader.ReadByte(); - var videoRecordingResolution = (VideoRecordingResolutionType)value.VideoRecordingResolution; - writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); - value.AlarmEnable = reader.ReadUInt32(); - writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); - var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); - writer.WriteStartObject("报警使能对象"); - writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30, 2).ToString()); - writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); - writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); - writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开"); - writer.WriteEndObject(); - value.EventEnable = reader.ReadUInt32(); - writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); - var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); - writer.WriteStartObject("事件使能对象"); - writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); - writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); - writer.WriteString("[bit1]主动拍照", alarmEnableBits[1] == '0' ? "关闭" : "打开"); - writer.WriteString("[bit0]道路标识识别", alarmEnableBits[0] == '0' ? "关闭" : "打开"); - writer.WriteEndObject(); - value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); - writer.WriteNumber($"[{value.TimeIntervalSmokingAlarmJudgment.ReadNumber()}]吸烟报警判断时间间隔", value.TimeIntervalSmokingAlarmJudgment); - value.CallAlarmDetermineTimeInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.CallAlarmDetermineTimeInterval.ReadNumber()}]接打电话报警判断时间间隔", value.CallAlarmDetermineTimeInterval); - value.Reserve = reader.ReadArray(3).ToArray(); - writer.WriteString("预留字段", value.Reserve.ToHexString()); - value.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.GradedSpeedThresholdFatigueDrivingAlarm.ReadNumber()}]疲劳驾驶报警分级速度阈值", value.GradedSpeedThresholdFatigueDrivingAlarm); - value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm.ReadNumber()}]疲劳驾驶报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); - value.FatigueDrivingAlarmPhotograph = reader.ReadByte(); - writer.WriteNumber($"[{value.FatigueDrivingAlarmPhotograph.ReadNumber()}]疲劳驾驶报警拍照张数", value.FatigueDrivingAlarmPhotograph); - value.FatigueDrivingAlarmPhotographInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.FatigueDrivingAlarmPhotographInterval.ReadNumber()}]疲劳驾驶报警拍照间隔时间", value.FatigueDrivingAlarmPhotographInterval); - value.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.ClassifiedSpeedThresholdCallAlarm.ReadNumber()}]接打电话报警分级速度阈值", value.ClassifiedSpeedThresholdCallAlarm); - value.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterCallAlarm.ReadNumber()}]接打电话报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterCallAlarm); - value.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte(); - writer.WriteNumber($"[{value.CallAlarmTakePicturesDriverFacialFeatures.ReadNumber()}]接打电话报警拍驾驶员面部特征照片张数", value.CallAlarmTakePicturesDriverFacialFeatures); - value.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.CallAlarmTakePicturesDriverFacialFeaturesInterval.ReadNumber()}]接打电话报警拍驾驶员面部特征照片间隔时间", value.CallAlarmTakePicturesDriverFacialFeaturesInterval); - value.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.ClassifiedSpeedThresholdSmokingAlarm.ReadNumber()}]抽烟报警分级车速阈值", value.ClassifiedSpeedThresholdSmokingAlarm); - value.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterSmokingAlarm.ReadNumber()}]抽烟报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterSmokingAlarm); - value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); - writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristics.ReadNumber()}]抽烟报警拍驾驶员面部特征照片张数", value.SmokingAlarmPhotographsDriverFaceCharacteristics); - value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval.ReadNumber()}]抽烟报警拍驾驶员面部特征照片间隔时间", value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); - value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); - writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDistractedDrivingAlarm.ReadNumber()}]分神驾驶报警分级车速阈值", value.ClassifiedSpeedThresholdDistractedDrivingAlarm); - value.DistractedDrivingAlarmPhotography = reader.ReadByte(); - writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotography.ReadNumber()}]分神驾驶报警拍照张数", value.DistractedDrivingAlarmPhotography); - value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); - writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotographyInterval.ReadNumber()}]分神驾驶报警拍照间隔时间", value.DistractedDrivingAlarmPhotographyInterval); - value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); - writer.WriteNumber($"[{value.VideoRecordingTimeAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常视频录制时间", value.VideoRecordingTimeAbnormalDrivingBehavior); - value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); - writer.WriteNumber($"[{value.PhotographsAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常抓拍照片张数", value.PhotographsAbnormalDrivingBehavior); - value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); - writer.WriteNumber($"[{value.PictureIntervalAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常拍照间隔", value.PictureIntervalAbnormalDrivingBehavior); - value.DriverIdentificationTrigger = reader.ReadByte(); - writer.WriteNumber($"[{value.DriverIdentificationTrigger.ReadNumber()}]驾驶员身份识别触发", value.DriverIdentificationTrigger); - value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); - writer.WriteString("保留字段", value.Retain.ToHexString()); - } - /// - /// - /// - /// - /// - /// - public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - value.AlarmJudgeSpeedThreshold = reader.ReadByte(); - value.WarningVolume = reader.ReadByte(); - value.ActivePhotographyStrategy = reader.ReadByte(); - value.ActivelyTimePhotoInterval = reader.ReadUInt16(); - value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); - value.SingleInitiativePhotos = reader.ReadByte(); - value.SingleInitiativePhotosInterval = reader.ReadByte(); - value.PhotoResolution = reader.ReadByte(); - value.VideoRecordingResolution = reader.ReadByte(); - value.AlarmEnable = reader.ReadUInt32(); - value.EventEnable = reader.ReadUInt32(); - value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); - value.CallAlarmDetermineTimeInterval = reader.ReadUInt16(); - value.Reserve = reader.ReadArray(3).ToArray(); - value.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte(); - value.FatigueDrivingAlarmPhotograph = reader.ReadByte(); - value.FatigueDrivingAlarmPhotographInterval = reader.ReadByte(); - value.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte(); - value.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte(); - value.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte(); - value.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte(); - value.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte(); - value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); - value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); - value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); - value.DistractedDrivingAlarmPhotography = reader.ReadByte(); - value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); - value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); - value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); - value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); - value.DriverIdentificationTrigger = reader.ReadByte(); - value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config) - { - writer.WriteUInt32(value.ParamId); - writer.Skip(1, out int ParamLengthPosition); - writer.WriteByte(value.AlarmJudgeSpeedThreshold); - writer.WriteByte(value.WarningVolume); - writer.WriteByte(value.ActivePhotographyStrategy); - writer.WriteUInt16(value.ActivelyTimePhotoInterval); - writer.WriteUInt16(value.ActiveDistancePhotographyDistanceInterval); - writer.WriteByte(value.SingleInitiativePhotos); - writer.WriteByte(value.SingleInitiativePhotosInterval); - writer.WriteByte(value.PhotoResolution); - writer.WriteByte(value.VideoRecordingResolution); - writer.WriteUInt32(value.AlarmEnable); - writer.WriteUInt32(value.EventEnable); - writer.WriteUInt16(value.TimeIntervalSmokingAlarmJudgment); - writer.WriteUInt16(value.CallAlarmDetermineTimeInterval); - writer.WriteArray(value.Reserve); - writer.WriteByte(value.GradedSpeedThresholdFatigueDrivingAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); - writer.WriteByte(value.FatigueDrivingAlarmPhotograph); - writer.WriteByte(value.FatigueDrivingAlarmPhotographInterval); - writer.WriteByte(value.ClassifiedSpeedThresholdCallAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterCallAlarm); - writer.WriteByte(value.CallAlarmTakePicturesDriverFacialFeatures); - writer.WriteByte(value.CallAlarmTakePicturesDriverFacialFeaturesInterval); - writer.WriteByte(value.ClassifiedSpeedThresholdSmokingAlarm); - writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterSmokingAlarm); - writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristics); - writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); - writer.WriteByte(value.ClassifiedSpeedThresholdDistractedDrivingAlarm); - writer.WriteByte(value.DistractedDrivingAlarmPhotography); - writer.WriteByte(value.DistractedDrivingAlarmPhotographyInterval); - writer.WriteByte(value.VideoRecordingTimeAbnormalDrivingBehavior); - writer.WriteByte(value.PhotographsAbnormalDrivingBehavior); - writer.WriteByte(value.PictureIntervalAbnormalDrivingBehavior); - writer.WriteByte(value.DriverIdentificationTrigger); - writer.WriteArray(value.Retain); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs deleted file mode 100644 index 649c5b2..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs +++ /dev/null @@ -1,151 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 胎压监测系统参数 - /// - public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 胎压监测系统参数Id - /// - public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF366; - /// - /// 胎压监测系统参数长度 - /// - public override byte ParamLength { get; set; } = 46; - /// - /// 轮胎规格型号 12位 - /// - public string TyreSpecificationType { get; set; } - /// - /// 胎压单位 - /// - public ushort TyrePressureUnit { get; set; } - /// - /// 正常胎压值 - /// - public ushort NormalFetalPressure { get; set; } - /// - /// 胎压不平衡门限 - /// - public ushort ThresholdUnbalancedTirePressure { get; set; } - /// - /// 慢漏气门限 - /// - public ushort SlowLeakageThreshold { get; set; } - /// - /// 低压阈值 - /// - public ushort LowVoltageThreshold { get; set; } - /// - /// 高压阈值 - /// - public ushort HighVoltageThreshold { get; set; } - /// - /// 高温阈值 - /// - public ushort HighTemperatureThreshold { get; set; } - /// - /// 电压阈值 - /// - public ushort VoltageThreshold { get; set; } - /// - /// 定时上报时间间隔 - /// - public ushort TimedReportingInterval { get; set; } - /// - /// 保留项 - /// - public byte[] Retain { get; set; } = new byte[6]; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId); - writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); - string tyreSpecificationTypeHex = reader.ReadVirtualArray(12).ToArray().ToHexString(); - value.TyreSpecificationType = reader.ReadString(12); - writer.WriteString($"[{tyreSpecificationTypeHex}]轮胎规格型号", value.TyreSpecificationType); - value.TyrePressureUnit = reader.ReadUInt16(); - writer.WriteNumber($"[{value.TyrePressureUnit.ReadNumber()}]胎压单位", value.TyrePressureUnit); - value.NormalFetalPressure = reader.ReadUInt16(); - writer.WriteNumber($"[{value.NormalFetalPressure.ReadNumber()}]正常胎压值", value.NormalFetalPressure); - value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ThresholdUnbalancedTirePressure.ReadNumber()}]胎压不平衡门限", value.ThresholdUnbalancedTirePressure); - value.SlowLeakageThreshold = reader.ReadUInt16(); - writer.WriteNumber($"[{value.SlowLeakageThreshold.ReadNumber()}]慢漏气门限", value.SlowLeakageThreshold); - value.LowVoltageThreshold = reader.ReadUInt16(); - writer.WriteNumber($"[{value.LowVoltageThreshold.ReadNumber()}]低压阈值", value.LowVoltageThreshold); - value.HighVoltageThreshold = reader.ReadUInt16(); - writer.WriteNumber($"[{value.HighVoltageThreshold.ReadNumber()}]高压阈值", value.HighVoltageThreshold); - value.HighTemperatureThreshold = reader.ReadUInt16(); - writer.WriteNumber($"[{value.HighTemperatureThreshold.ReadNumber()}]高温阈值", value.HighTemperatureThreshold); - value.VoltageThreshold = reader.ReadUInt16(); - writer.WriteNumber($"[{value.VoltageThreshold.ReadNumber()}]电压阈值", value.VoltageThreshold); - value.TimedReportingInterval = reader.ReadUInt16(); - writer.WriteNumber($"[{value.TimedReportingInterval.ReadNumber()}]定时上报时间间隔", value.TimedReportingInterval); - value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); - writer.WriteString("保留项", value.Retain.ToHexString()); - } - /// - /// - /// - /// - /// - /// - public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - value.TyreSpecificationType = reader.ReadString(12); - value.TyrePressureUnit = reader.ReadUInt16(); - value.NormalFetalPressure = reader.ReadUInt16(); - value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); - value.SlowLeakageThreshold = reader.ReadUInt16(); - value.LowVoltageThreshold = reader.ReadUInt16(); - value.HighVoltageThreshold = reader.ReadUInt16(); - value.HighTemperatureThreshold = reader.ReadUInt16(); - value.VoltageThreshold = reader.ReadUInt16(); - value.TimedReportingInterval = reader.ReadUInt16(); - value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF366 value, IJT808Config config) - { - writer.WriteUInt32(value.ParamId); - writer.Skip(1, out int ParamLengthPosition); - writer.WriteString(value.TyreSpecificationType); - writer.WriteUInt16(value.TyrePressureUnit); - writer.WriteUInt16(value.NormalFetalPressure); - writer.WriteUInt16(value.ThresholdUnbalancedTirePressure); - writer.WriteUInt16(value.SlowLeakageThreshold); - writer.WriteUInt16(value.LowVoltageThreshold); - writer.WriteUInt16(value.HighVoltageThreshold); - writer.WriteUInt16(value.HighTemperatureThreshold); - writer.WriteUInt16(value.VoltageThreshold); - writer.WriteUInt16(value.TimedReportingInterval); - writer.WriteArray(value.Retain); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs deleted file mode 100644 index c8b0aab..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs +++ /dev/null @@ -1,77 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 盲区监测系统参数 - /// - public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 盲区监测系统参数Id - /// - public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF367; - /// - /// 盲区监测系统参数长度 - /// - public override byte ParamLength { get; set; } = 2; - /// - /// 后方接近报警时间阈值 - /// - public byte RearApproachAlarmTimeThreshold { get; set; } - /// - /// 侧后方接近报警时间阈值 - /// - public byte LateralRearApproachAlarmTimeThreshold { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId); - writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); - value.RearApproachAlarmTimeThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.RearApproachAlarmTimeThreshold.ReadNumber()}]后方接近报警时间阈值", value.RearApproachAlarmTimeThreshold); - value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); - writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold); - } - /// - /// - /// - /// - /// - /// - public JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); - value.ParamId = reader.ReadUInt32(); - value.ParamLength = reader.ReadByte(); - value.RearApproachAlarmTimeThreshold = reader.ReadByte(); - value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config) - { - writer.WriteUInt32(value.ParamId); - writer.WriteByte(2); - writer.WriteByte(value.RearApproachAlarmTimeThreshold); - writer.WriteByte(value.LateralRearApproachAlarmTimeThreshold); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs deleted file mode 100644 index bede06a..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs +++ /dev/null @@ -1,89 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System.Collections.Generic; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 查询基本信息 - /// - public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 查询基本信息类型 - /// - public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; - /// - /// 外设ID列表总数 - /// - public byte USBCount { get; set; } - /// - /// 外设ID - /// - public List MultipleUSB { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); - value.USBCount = reader.ReadByte(); - writer.WriteNumber($"[{value.USBCount.ReadNumber()}]外设ID列表总数", value.USBCount); - if (value.USBCount > 0) - { - writer.WriteStartArray("外设ID列表"); - for (int i = 0; i < value.USBCount; i++) - { - writer.WriteStartObject(); - byte usbId = reader.ReadByte(); - writer.WriteNumber($"[{usbId.ReadNumber()}]外设ID", usbId); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x8900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); - value.USBCount = reader.ReadByte(); - if (value.USBCount > 0) - { - value.MultipleUSB = new List(); - for (int i = 0; i < value.USBCount; i++) - { - value.MultipleUSB.Add(reader.ReadByte()); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF7 value, IJT808Config config) - { - if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) - { - writer.WriteByte((byte)value.MultipleUSB.Count); - foreach (var item in value.MultipleUSB) - { - writer.WriteByte(item); - } - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs deleted file mode 100644 index b7514ac..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs +++ /dev/null @@ -1,89 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System.Collections.Generic; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 查询基本信息 - /// - public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 查询基本信息透传类型 - /// - public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; - /// - /// 外设ID列表总数 - /// - public byte USBCount { get; set; } - /// - /// 外设ID - /// - public List MultipleUSB { get; set; } - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); - value.USBCount = reader.ReadByte(); - writer.WriteNumber($"[{value.USBCount.ReadNumber()}]外设ID列表总数", value.USBCount); - if (value.USBCount > 0) - { - writer.WriteStartArray("外设ID列表"); - for (int i = 0; i < value.USBCount; i++) - { - writer.WriteStartObject(); - byte usbId = reader.ReadByte(); - writer.WriteNumber($"[{usbId.ReadNumber()}]外设ID", usbId); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x8900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); - value.USBCount = reader.ReadByte(); - if (value.USBCount > 0) - { - value.MultipleUSB = new List(); - for (int i = 0; i < value.USBCount; i++) - { - value.MultipleUSB.Add(reader.ReadByte()); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF8 value, IJT808Config config) - { - if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) - { - writer.WriteByte((byte)value.MultipleUSB.Count); - foreach (var item in value.MultipleUSB) - { - writer.WriteByte(item); - } - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs deleted file mode 100644 index f34de32..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs +++ /dev/null @@ -1,139 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessagePack; -using System; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 报警附件上传指令 - /// - public class JT808_0x9208: JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// Description - /// - public override string Description => "报警附件上传指令"; - /// - /// 服务IP地址长度 - /// - public byte AttachmentServerIPLength { get; set; } - /// - /// 服务IP地址 - /// - public string AttachmentServerIP { get; set; } - /// - /// TCP端口 - /// - public ushort AttachmentServerIPTcpPort { get; set; } - /// - /// UDP端口 - /// - public ushort AttachmentServerIPUdpPort { get; set; } - /// - /// 报警标识号 - /// - public AlarmIdentificationProperty AlarmIdentification { get; set; } - /// - /// 平台给报警分配的唯一编号 - /// 32 - /// - public string AlarmId { get; set; } - /// - /// 预留 - /// - public byte[] Retain { get; set; } = new byte[16]; - /// - /// 报警附件上传指令Id - /// - public override ushort MsgId => 0x9208; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x9208 value = new JT808_0x9208(); - value.AttachmentServerIPLength = reader.ReadByte(); - writer.WriteNumber($"[{value.AttachmentServerIPLength.ReadNumber()}]服务IP地址长度", value.AttachmentServerIPLength); - string attachmentServerIPHex = reader.ReadVirtualArray(value.AttachmentServerIPLength).ToArray().ToHexString(); - value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength); - writer.WriteString($"[{AttachmentServerIP}]服务IP地址", value.AttachmentServerIP); - value.AttachmentServerIPTcpPort = reader.ReadUInt16(); - writer.WriteNumber($"[{value.AttachmentServerIPTcpPort.ReadNumber()}]TCP端口", value.AttachmentServerIPTcpPort); - value.AttachmentServerIPUdpPort = reader.ReadUInt16(); - writer.WriteNumber($"[{value.AttachmentServerIPUdpPort.ReadNumber()}]UDP端口", value.AttachmentServerIPUdpPort); - value.AlarmIdentification = new AlarmIdentificationProperty(); - string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); - value.AlarmIdentification.TerminalID = reader.ReadString(7); - value.AlarmIdentification.Time = reader.ReadDateTime6(); - value.AlarmIdentification.SN = reader.ReadByte(); - value.AlarmIdentification.AttachCount = reader.ReadByte(); - value.AlarmIdentification.Retain = reader.ReadByte(); - writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); - writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); - writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); - writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); - writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); - string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString(); - value.AlarmId = reader.ReadString(32); - writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId); - string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString(); - writer.WriteString($"预留", retainHex); - } - /// - /// - /// - /// - /// - /// - public JT808_0x9208 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x9208 value = new JT808_0x9208(); - value.AttachmentServerIPLength = reader.ReadByte(); - value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength); - value.AttachmentServerIPTcpPort = reader.ReadUInt16(); - value.AttachmentServerIPUdpPort = reader.ReadUInt16(); - value.AlarmIdentification = new AlarmIdentificationProperty - { - TerminalID = reader.ReadString(7), - Time = reader.ReadDateTime6(), - SN = reader.ReadByte(), - AttachCount = reader.ReadByte(), - Retain = reader.ReadByte() - }; - value.AlarmId = reader.ReadString(32); - value.Retain = reader.ReadArray(16).ToArray(); - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9208 value, IJT808Config config) - { - writer.Skip(1, out int AttachmentServerIPLengthPosition); - writer.WriteString(value.AttachmentServerIP); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - AttachmentServerIPLengthPosition - 1), AttachmentServerIPLengthPosition); - writer.WriteUInt16(value.AttachmentServerIPTcpPort); - writer.WriteUInt16(value.AttachmentServerIPUdpPort); - if (value.AlarmIdentification == null) - { - throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); - } - writer.WriteString(value.AlarmIdentification.TerminalID); - writer.WriteDateTime6(value.AlarmIdentification.Time); - writer.WriteByte(value.AlarmIdentification.SN); - writer.WriteByte(value.AlarmIdentification.AttachCount); - writer.WriteByte(value.AlarmIdentification.Retain); - writer.WriteString(value.AlarmId); - writer.WriteArray(value.Retain); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs deleted file mode 100644 index a3a667d..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs +++ /dev/null @@ -1,139 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Metadata; -using JT808.Protocol.Formatters; -using JT808.Protocol.Interfaces; -using JT808.Protocol.MessagePack; -using System.Collections.Generic; -using System.Text.Json; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 文件上传完成消息应答 - /// - public class JT808_0x9212: JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze - { - /// - /// 文件上传完成消息应答 - /// - public override string Description => "文件上传完成消息应答"; - /// - /// 文件名称长度 - /// - public byte FileNameLength { get; set; } - /// - /// 文件名称 - /// - public string FileName { get; set; } - /// - /// 文件类型 - /// - public byte FileType { get; set; } - /// - /// 上传结果 - /// - public byte UploadResult { get; set; } - /// - /// 补传数据包数量 - /// 需要补传的数据包数量,无补传时该值为0 - /// - public byte DataPackageCount { get; set; } - /// - /// 补传数据包列表 - /// - public List DataPackages { get; set; } - /// - /// 文件上传完成消息应答Id - /// - public override ushort MsgId => 0x9212; - /// - /// - /// - /// - /// - /// - public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) - { - JT808_0x9212 value = new JT808_0x9212(); - value.FileNameLength = reader.ReadByte(); - writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength); - string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString(); - value.FileName = reader.ReadString(value.FileNameLength); - writer.WriteString($"[{fileNameHex}]文件名称", value.FileName); - value.FileType = reader.ReadByte(); - writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType); - value.UploadResult = reader.ReadByte(); - writer.WriteNumber($"[{value.UploadResult.ReadNumber()}]上传结果", value.UploadResult); - value.DataPackageCount = reader.ReadByte(); - writer.WriteNumber($"[{value.DataPackageCount.ReadNumber()}]补传数据包数量", value.DataPackageCount); - if (value.DataPackageCount > 0) - { - writer.WriteStartArray("补传数据包列表"); - for (int i = 0; i < value.DataPackageCount; i++) - { - writer.WriteStartObject(); - DataPackageProperty dataPackageProperty = new DataPackageProperty(); - dataPackageProperty.Offset = reader.ReadUInt32(); - writer.WriteNumber($"[{dataPackageProperty.Offset.ReadNumber()}]数据偏移量", dataPackageProperty.Offset); - dataPackageProperty.Length = reader.ReadUInt32(); - writer.WriteNumber($"[{dataPackageProperty.Length.ReadNumber()}]数据长度", dataPackageProperty.Length); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - } - /// - /// - /// - /// - /// - /// - public JT808_0x9212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_0x9212 value = new JT808_0x9212(); - value.FileNameLength = reader.ReadByte(); - value.FileName = reader.ReadString(value.FileNameLength); - value.FileType = reader.ReadByte(); - value.UploadResult = reader.ReadByte(); - value.DataPackageCount = reader.ReadByte(); - if (value.DataPackageCount > 0) - { - value.DataPackages = new List(); - for (int i = 0; i < value.DataPackageCount; i++) - { - DataPackageProperty dataPackageProperty = new DataPackageProperty(); - dataPackageProperty.Offset = reader.ReadUInt32(); - dataPackageProperty.Length = reader.ReadUInt32(); - value.DataPackages.Add(dataPackageProperty); - } - } - return value; - } - /// - /// - /// - /// - /// - /// - public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9212 value, IJT808Config config) - { - writer.Skip(1, out int FileNameLengthPosition); - writer.WriteString(value.FileName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition); - writer.WriteByte(value.FileType); - writer.WriteByte(value.UploadResult); - if (value.DataPackages != null && value.DataPackages.Count > 0) - { - writer.WriteByte((byte)value.DataPackages.Count); - foreach (var item in value.DataPackages) - { - writer.WriteUInt32(item.Offset); - writer.WriteUInt32(item.Length); - } - } - else - { - writer.WriteByte(0); - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmIdentificationProperty.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmIdentificationProperty.cs deleted file mode 100644 index 085ccb0..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmIdentificationProperty.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// 报警标识号 - /// - public class AlarmIdentificationProperty - { - /// - /// 终端ID - /// - public string TerminalID { get; set; } - /// - /// YY-MM-DD-hh-mm-ss - /// BCD[6] - /// - public DateTime Time { get; set; } - /// - /// 序号 - /// - public byte SN { get; set; } - /// - /// 附件数量 - /// - public byte AttachCount { get; set; } - /// - /// 预留 - /// - public byte Retain { get; set; } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmOrEventProperty.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmOrEventProperty.cs deleted file mode 100644 index 91977cb..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AlarmOrEventProperty.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// 胎压监测系统报警/事件信息 - /// - public class AlarmOrEventProperty - { - /// - /// 胎压报警位置 - /// - public byte TirePressureAlarmPosition { get; set; } - /// - /// 报警/事件类型 - /// - public ushort AlarmOrEventType { get; set; } - /// - /// 胎压 - /// - public ushort TirePressure { get; set; } - /// - /// 胎温 - /// - public ushort TireTemperature { get; set; } - /// - /// 电池电量 - /// - public ushort BatteryLevel { get; set; } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AttachProperty.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AttachProperty.cs deleted file mode 100644 index 516c8e3..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/AttachProperty.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// 附件信息 - /// - public class AttachProperty - { - /// - /// 文件名称长度 - /// - public byte FileNameLength { get; set; } - /// - /// 文件名称 - /// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 - /// - public string FileName{ get; set; } - /// - /// 文件大小 - /// - public uint FileSize { get; set; } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/DataPackageProperty.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/DataPackageProperty.cs deleted file mode 100644 index f336dc2..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/DataPackageProperty.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// 补传数据包信息 - /// - public class DataPackageProperty - { - /// - /// 数据偏移量 - /// - public uint Offset { get; set; } - /// - /// 数据长度 - /// - public uint Length { get; set; } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs deleted file mode 100644 index 1f2f6de..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// - /// - public class JT808_0x0900_0xF7_USB - { - /// - /// 外设ID - /// - /// - public byte USBID { get; set; } - /// - /// 消息长度 - /// - public byte MessageLength { get; set; } - /// - /// 工作状态 - /// - /// - public byte WorkingCondition { get; set; } - /// - /// 报警状态 - /// - public uint AlarmStatus { get; set; } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs deleted file mode 100644 index 611538d..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata -{ - /// - /// - /// - public class JT808_0x0900_0xF8_USB - { - /// - /// 外设ID - /// - /// - public byte USBID { get; set; } - /// - /// 消息长度 - /// - public byte MessageLength { get; set; } - /// - /// 公司名称长度 - /// - public byte CompantNameLength { get; set; } - /// - /// 公司名称 - /// - public string CompantName { get; set; } - /// - /// 产品型号长度 - /// - public byte ProductModelLength { get; set; } - /// - /// 产品型号 - /// - public string ProductModel { get; set; } - /// - /// 硬件版本号长度 - /// - public byte HardwareVersionNumberLength { get; set; } - /// - /// 硬件版本号 - /// ASCII - /// - public string HardwareVersionNumber { get; set; } - /// - /// 软件版本号长度 - /// - public byte SoftwareVersionNumberLength { get; set; } - /// - /// 软件版本号 - /// ASCII - /// - public string SoftwareVersionNumber { get; set; } - /// - /// 设备ID长度 - /// - public byte DevicesIDLength { get; set; } - /// - /// 设备ID - /// - public string DevicesID { get; set; } - /// - /// 客户代码长度 - /// - public byte CustomerCodeLength { get; set; } - /// - /// 客户代码 - /// - public string CustomerCode { get; set; } - } -} diff --git a/src/JTActiveSafety.sln b/src/JTActiveSafety.sln index 5747435..84ae9e3 100644 --- a/src/JTActiveSafety.sln +++ b/src/JTActiveSafety.sln @@ -3,12 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29215.179 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.Extensions.JTActiveSafety", "JT808.Protocol.Extensions.JTActiveSafety\JT808.Protocol.Extensions.JTActiveSafety.csproj", "{EDB6CAC8-B2A6-4C59-BFC3-8FF13A7CF799}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTActiveSafety.Protocol", "JTActiveSafety.Protocol\JTActiveSafety.Protocol.csproj", "{FF716FAA-0C89-4DB9-A559-C50E502B996D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol.Extensions.JTActiveSafety.Test", "JT808.Protocol.Extensions.JTActiveSafety.Test\JT808.Protocol.Extensions.JTActiveSafety.Test.csproj", "{5A5B068D-4276-4E9D-84A4-C659A86A4A6B}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTActiveSafety.Protocol.Test", "JTActiveSafety.Protocol.Test\JTActiveSafety.Protocol.Test.csproj", "{148DB5C2-A8ED-4430-8AB8-44839FC45C7F}" EndProject Global @@ -17,18 +13,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EDB6CAC8-B2A6-4C59-BFC3-8FF13A7CF799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EDB6CAC8-B2A6-4C59-BFC3-8FF13A7CF799}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EDB6CAC8-B2A6-4C59-BFC3-8FF13A7CF799}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EDB6CAC8-B2A6-4C59-BFC3-8FF13A7CF799}.Release|Any CPU.Build.0 = Release|Any CPU {FF716FAA-0C89-4DB9-A559-C50E502B996D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FF716FAA-0C89-4DB9-A559-C50E502B996D}.Debug|Any CPU.Build.0 = Debug|Any CPU {FF716FAA-0C89-4DB9-A559-C50E502B996D}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF716FAA-0C89-4DB9-A559-C50E502B996D}.Release|Any CPU.Build.0 = Release|Any CPU - {5A5B068D-4276-4E9D-84A4-C659A86A4A6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5A5B068D-4276-4E9D-84A4-C659A86A4A6B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5A5B068D-4276-4E9D-84A4-C659A86A4A6B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5A5B068D-4276-4E9D-84A4-C659A86A4A6B}.Release|Any CPU.Build.0 = Release|Any CPU {148DB5C2-A8ED-4430-8AB8-44839FC45C7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {148DB5C2-A8ED-4430-8AB8-44839FC45C7F}.Debug|Any CPU.Build.0 = Debug|Any CPU {148DB5C2-A8ED-4430-8AB8-44839FC45C7F}.Release|Any CPU.ActiveCfg = Release|Any CPU