From e7b0aef0b5ec760ed17de01c543e6b1028bb3b93 Mon Sep 17 00:00:00 2001 From: "smallchi(Koike)" <564952747@qq.com> Date: Fri, 7 Feb 2020 21:58:43 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B90900=E5=92=8C8900=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=BB=93=E6=9E=84=202.=E5=8D=87=E7=BA=A7808=E5=BA=93?= =?UTF-8?q?=203.=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- ...ocol.Extensions.JTActiveSafety.Test.csproj | 2 +- .../JT808_JTActiveSafety_0x0900_Test.cs | 119 +- .../JT808_JTActiveSafety_0x8900_Test.cs | 4 +- .../Enums/USBIDType.cs | 20 +- ...ctiveSafety_0x0900_USBMessageExtensions.cs | 30 - ....Protocol.Extensions.JTActiveSafety.csproj | 10 +- ...808.Protocol.Extensions.JTActiveSafety.xml | 1217 +++++++++++++++++ .../JT808_JTActiveSafety_Constants.cs | 8 + .../MessageBody/JT808_0x0200_0x64.cs | 2 +- .../MessageBody/JT808_0x0200_0x65.cs | 2 +- .../MessageBody/JT808_0x0200_0x66.cs | 2 +- .../MessageBody/JT808_0x0200_0x67.cs | 2 +- .../MessageBody/JT808_0x0900_0xF7.cs | 56 + .../MessageBody/JT808_0x0900_0xF8.cs | 88 ++ .../MessageBody/JT808_0x8103_0xF364.cs | 2 +- .../MessageBody/JT808_0x8103_0xF365.cs | 2 +- .../MessageBody/JT808_0x8103_0xF366.cs | 2 +- .../MessageBody/JT808_0x8103_0xF367.cs | 2 +- ...eSafety_0x8900.cs => JT808_0x8900_0xF7.cs} | 21 +- .../MessageBody/JT808_0x8900_0xF8.cs | 50 + .../JT808_JTActiveSafety_0x0900.cs | 63 - .../JT808_JTActiveSafety_0x0900_USB_0xF7.cs | 35 - .../JT808_JTActiveSafety_0x0900_USB_0xF8.cs | 107 -- .../JT808_JTActiveSafety_0x0900_USB_Base.cs | 10 - .../JT808_0x0900_0xF7_USB.cs} | 16 +- .../Metadata/JT808_0x0900_0xF8_USB.cs | 69 + 27 files changed, 1617 insertions(+), 326 deletions(-) delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Extensions/JT808_JTActiveSafety_0x0900_USBMessageExtensions.cs create mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml create mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs create mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs rename src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/{JT808_JTActiveSafety_0x8900.cs => JT808_0x8900_0xF7.cs} (55%) create mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF7.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF8.cs delete mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_Base.cs rename src/JT808.Protocol.Extensions.JTActiveSafety/{MessageBody/JT808_JTActiveSafety_0x0900_USBMessage.cs => Metadata/JT808_0x0900_0xF7_USB.cs} (51%) create mode 100644 src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs diff --git a/README.md b/README.md index b3c278b..0894f69 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ JTActiveSafety协议、道路运输车辆主动安全智能防控系统-主动 1. 设备终端到平台的通信也就是JT808 2. 设备终端上传的附件数据也就是附件服务器 -[![MIT Licence](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE)[![Github Build status](https://github.com/SmallChi/JTActiveSafety/workflows/.NET%20Core/badge.svg)]() +[![MIT Licence](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE)![.NET Core](https://github.com/SmallChi/JTActiveSafety/workflows/.NET%20Core/badge.svg?branch=master) ## 基于JT808扩展的JTActiveSafety消息协议 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 index c74f165..4ef02b1 100644 --- 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 @@ -8,7 +8,7 @@ - + all diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x0900_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x0900_Test.cs index 4f63bc6..b4d71d4 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x0900_Test.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x0900_Test.cs @@ -1,4 +1,5 @@ using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; +using JT808.Protocol.Extensions.JTActiveSafety.Metadata; using JT808.Protocol.MessageBody; using Microsoft.Extensions.DependencyInjection; using System; @@ -19,61 +20,89 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService(); JT808Serializer = new JT808Serializer(jT808Config); } + [Fact] - public void Serializer() + public void Test_0xF7_1() { - JT808_JTActiveSafety_0x0900 jT808UploadLocationRequest = new JT808_JTActiveSafety_0x0900 + JT808_0x0900_0xF7 jT808_0x0900_0xF7 = new JT808_0x0900_0xF7 { - USBMessageCount=2, - USBMessages=new List { - new JT808_JTActiveSafety_0x0900_USBMessage{ - USBID=1, - MessageContentObejct=new JT808_JTActiveSafety_0x0900_USB_0xF7{ - AlarmStatus=1, - WorkingCondition=2 - } - }, - new JT808_JTActiveSafety_0x0900_USBMessage{ - USBID=2, - MessageContentObejct=new JT808_JTActiveSafety_0x0900_USB_0xF8{ - CompantName="CompantName", - CustomerCode="CustomerCode", - DevicesID="DevicesID", - HardwareVersionNumber="HardwareVersionNumber", - ProductModel="ProductModel", - SoftwareVersionNumber="SoftwareVersionNumber" - } - } + 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(jT808UploadLocationRequest).ToHexString(); - Assert.Equal("0201050200000001025C0B436F6D70616E744E616D650C50726F647563744D6F64656C15486172647761726556657273696F6E4E756D62657215536F66747761726556657273696F6E4E756D626572094465766963657349440C437573746F6D6572436F6465", hex); + var hex = JT808Serializer.Serialize(jT808_0x0900_0xF7).ToHexString(); + Assert.Equal("020105020000000102050200000001", hex); } + [Fact] - public void Deserialize() + public void Test_0xF7_2() { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("0201050200000001025C0B436F6D70616E744E616D650C50726F647563744D6F64656C15486172647761726556657273696F6E4E756D62657215536F66747761726556657273696F6E4E756D626572094465766963657349440C437573746F6D6572436F6465".ToHexBytes()); - Assert.Equal(2, jT808UploadLocationRequest.USBMessageCount); + var jT808_0x0900_0xF7 = JT808Serializer.Deserialize("020105020000000102050200000001".ToHexBytes()); - Assert.Equal(1, jT808UploadLocationRequest.USBMessages[0].USBID); - JT808_JTActiveSafety_0x0900_USB_0xF7 jT808_JTActiveSafety_0X0900_USB_0XF7 = JT808Serializer.Deserialize< JT808_JTActiveSafety_0x0900_USB_0xF7 >(jT808UploadLocationRequest.USBMessages[0].MessageContent) ; - Assert.Equal(1u, jT808_JTActiveSafety_0X0900_USB_0XF7.AlarmStatus); - Assert.Equal(2, jT808_JTActiveSafety_0X0900_USB_0XF7.WorkingCondition); + 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); + } - Assert.Equal(2, jT808UploadLocationRequest.USBMessages[1].USBID); - JT808_JTActiveSafety_0x0900_USB_0xF8 jT808_JTActiveSafety_0X0900_USB_0XF8 = JT808Serializer.Deserialize(jT808UploadLocationRequest.USBMessages[1].MessageContent); ; - Assert.Equal("CompantName", jT808_JTActiveSafety_0X0900_USB_0XF8.CompantName); - Assert.Equal("CompantName".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.CompantNameLength); - Assert.Equal("CustomerCode", jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCode); - Assert.Equal("CustomerCode".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCodeLength); - Assert.Equal("DevicesID", jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesID); - Assert.Equal("DevicesID".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesIDLength); - Assert.Equal("HardwareVersionNumber", jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumber); - Assert.Equal("HardwareVersionNumber".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumberLength); - Assert.Equal("ProductModel", jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModel); - Assert.Equal("ProductModel".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModelLength); - Assert.Equal("SoftwareVersionNumber", jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumber); - Assert.Equal("SoftwareVersionNumber".Length, jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumberLength); + [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); } } } diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x8900_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x8900_Test.cs index 924d008..9afbcc0 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x8900_Test.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_JTActiveSafety_0x8900_Test.cs @@ -22,7 +22,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test [Fact] public void Serializer() { - JT808_JTActiveSafety_0x8900 jT808UploadLocationRequest = new JT808_JTActiveSafety_0x8900 + JT808_0x8900_0xF7 jT808UploadLocationRequest = new JT808_0x8900_0xF7 { USBCount=2, MultipleUSB=new List {1,2 } @@ -33,7 +33,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test [Fact] public void Deserialize() { - var jT808UploadLocationRequest = JT808Serializer.Deserialize("020102".ToHexBytes()); + var jT808UploadLocationRequest = JT808Serializer.Deserialize("020102".ToHexBytes()); Assert.Equal(2, jT808UploadLocationRequest.USBCount); Assert.Equal(new List { 1, 2 }.ToArray().ToHexString(), jT808UploadLocationRequest.MultipleUSB.ToArray().ToHexString()); } diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs index 8ed48c7..676a34d 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/Enums/USBIDType.cs @@ -6,9 +6,21 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Enums { public enum USBIDType:byte { - ADAS=0x64, - DSM=0x65, - TPMS=0x66, - BSD=0x67 + /// + /// 高级驾驶辅助系统 + /// + ADAS = 0x64, + /// + /// 驾驶员状态监控系统 + /// + DSM = 0x65, + /// + /// 轮胎气压监测系统 + /// + TPMS = 0x66, + /// + /// 盲点监测系统 + /// + BSD = 0x67 } } diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/Extensions/JT808_JTActiveSafety_0x0900_USBMessageExtensions.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Extensions/JT808_JTActiveSafety_0x0900_USBMessageExtensions.cs deleted file mode 100644 index 07f8aff..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/Extensions/JT808_JTActiveSafety_0x0900_USBMessageExtensions.cs +++ /dev/null @@ -1,30 +0,0 @@ -using JT808.Protocol.Extensions.JTActiveSafety.Enums; -using JT808.Protocol.Extensions.JTActiveSafety.MessageBody; -using JT808.Protocol.MessagePack; - -namespace JT808.Protocol.Extensions.JTActiveSafety.Extensions -{ -#warning 由于透传消息类型没有向下传递导致下面获取不到,先用这种方式临时处理 - public static class JT808_JTActiveSafety_0x0900_USBMessageExtensions - { - /// - /// 解析透传对象扩展 - /// - /// - /// - public static void ParseObject(this JT808_JTActiveSafety_0x0900_USBMessage jT808_JTActiveSafety_0X0900_USBMessage, JT808_JTActiveSafety_0x0900_Type jT808_JTActiveSafety_0X0900_Type) - { - switch(jT808_JTActiveSafety_0X0900_Type) - { - case JT808_JTActiveSafety_0x0900_Type.QueryState: - JT808MessagePackReader QueryStateMessagePackReader = new JT808MessagePackReader(jT808_JTActiveSafety_0X0900_USBMessage.MessageContent); - jT808_JTActiveSafety_0X0900_USBMessage.MessageContentObejct= JT808_JTActiveSafety_0x0900_USB_0xF7.Instance.Deserialize(ref QueryStateMessagePackReader, null); - break; - case JT808_JTActiveSafety_0x0900_Type.QueryInfomation: - JT808MessagePackReader QueryInfomationMessagePackReader = new JT808MessagePackReader(jT808_JTActiveSafety_0X0900_USBMessage.MessageContent); - jT808_JTActiveSafety_0X0900_USBMessage.MessageContentObejct = JT808_JTActiveSafety_0x0900_USB_0xF7.Instance.Deserialize(ref QueryInfomationMessagePackReader, null); - break; - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj index 6dcc138..2984ba9 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj @@ -19,6 +19,14 @@ LICENSE + + JT808.Protocol.Extensions.JTActiveSafety.xml + + + + JT808.Protocol.Extensions.JTActiveSafety.xml + + True @@ -27,7 +35,7 @@ - + diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml new file mode 100644 index 0000000..4d2594c --- /dev/null +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml @@ -0,0 +1,1217 @@ + + + + JT808.Protocol.Extensions.JTActiveSafety + + + + + 状态查询 + 外设状态信息:外设工作状态、设备报警信息 + + + + + 信息查询 + 外设传感器的基本信息:公司信息、产品代码、版本号、外设ID、客户代码。 + + + + + 高级驾驶辅助系统 + + + + + 驾驶员状态监控系统 + + + + + 轮胎气压监测系统 + + + + + 盲点监测系统 + + + + + 附加信息ID 高级驾驶辅助系统报警信息 + + + + + 附加信息ID 驾驶员状态监测系统报警信息 + + + + + 附加信息ID 胎压监测系统报警信息 + + + + + 附加信息ID 盲区监测系统报警信息 + + + + + 高级驾驶辅助系统参数设置 + + + + + 驾驶员状态监测系统参数设置 + + + + + 胎压监测系统参数设置 + + + + + 盲区监测系统参数设置 + + + + + 状态查询 + + + + + 信息查询 + + + + + 高级驾驶辅助系统报警信息 + + + + + 报警ID + + + + + 标志状态 + + + + + 报警/事件类型 + + + + + 报警/事件类型 + + + + + 前车车速 + + + + + 前车/行人距离 + + + + + 偏离类型 + + + + + 道路标志识别类型 + + + + + 道路标志识别类型 + + + + + 车速 + + + + + 高程 + + + + + 纬度 + + + + + 经度 + + + + + 日期时间 + YYMMDDhhmmss + BCD[6] + + + + + 车辆状态 + + + + + 报警标识号 + + + + + 驾驶员状态监测系统报警信息 + + + + + 报警ID + + + + + 标志状态 + + + + + 报警/事件类型 + + + + + 报警/事件类型 + + + + + 疲劳程度 + + + + + 预留 + + + + + 车速 + + + + + 高程 + + + + + 纬度 + + + + + 经度 + + + + + 日期时间 + YYMMDDhhmmss + BCD[6] + + + + + 车辆状态 + + + + + 报警标识号 + + + + + 胎压监测系统报警信息 + + + + + 报警ID + + + + + 标志状态 + + + + + 车速 + + + + + 高程 + + + + + 纬度 + + + + + 经度 + + + + + 日期时间 + YYMMDDhhmmss + BCD[6] + + + + + 车辆状态 + + + + + 报警标识号 + + + + + 报警/事件列表总数 + + + + + 报警/事件信息列表 + + + + + 盲区监测系统报警信息 + + + + + 报警ID + + + + + 标志状态 + + + + + 报警/事件类型 + + + + + 报警/事件类型 + + + + + 车速 + + + + + 高程 + + + + + 纬度 + + + + + 经度 + + + + + 日期时间 + YYMMDDhhmmss + BCD[6] + + + + + 车辆状态 + + + + + 报警标识号 + + + + + 消息列表总数 + + + + + 消息列表总数 + + + + + 报警附件信息消息 + + + + + 终端ID + 7 个字节,由大写字母和数字组成,此终端ID 由制造商自行定义,位数不足时,后补“0x00” + + + + + 报警标识号 + + + + + 平台给报警分配的唯一编号 + 32 + + + + + 信息类型 + 0x00:正常报警文件信息 + 0x01:补传报警文件信息 + + + + + 附件数量 + + + + + 附件信息列表 + + + + + 文件信息上传 + + + + + 文件名称长度 + + + + + + 文件类型 + + + + + 文件大小 + + + + + 文件上传完成消息 + + + + + 文件名称长度 + + + + + + 文件类型 + + + + + 文件大小 + + + + + 高级驾驶辅助系统参数 + + + + + 报警判断速度阈值 + + + + + 报警提示音量 + + + + + 主动拍照策略 + + + + + 主动定时拍照时间间隔 + + + + + 主动定距拍照距离间隔 + + + + + 单次主动拍照张数 + + + + + 单次主动拍照时间间隔 + + + + + 拍照分辨率 + + + + + 视频录制分辨率 + + + + + 报警使能 + + + + + 事件使能 + + + + + 预留字段 + + + + + 障碍物报警距离阈值 + + + + + 障碍物报警分级速度阈值 + + + + + 障碍物报警前后视频录制时间 + + + + + 障碍物报警拍照张数 + + + + + 障碍物报警拍照间隔 + + + + + 频繁变道报警判断时间段 + + + + + 频繁变道报警判断次数 + + + + + 频繁变道报警分级速度阈值 + + + + + 频繁变道报警前后视频录制时间 + + + + + 频繁变道报警拍照张数 + + + + + 频繁变道报警拍照间隔 + + + + + 车道偏离报警分级速度阈值 + + + + + 车道偏离报警前后视频录制时间 + + + + + 车道偏离报警拍照张数 + + + + + 车道偏离报警拍照间隔 + + + + + 前向碰撞报警时间阈值 + + + + + 前向碰撞报警分级速度阈值 + + + + + 前向碰撞报警前后视频录制时间 + + + + + 前向碰撞报警拍照张数 + + + + + 前向碰撞报警拍照间隔 + + + + + 行人碰撞报警时间阈值 + + + + + 行人碰撞报警使能速度阈值 + + + + + 行人碰撞报警前后视频录制时间 + + + + + 行人碰撞报警拍照张数 + + + + + 行人碰撞报警拍照间隔 + + + + + 车距监控报警距离阈值 + + + + + 车距监控报警分级速度阈值 + + + + + 车距过近报警前后视频录制时间 + + + + + 车距过近报警拍照张数 + + + + + 车距过近报警拍照间隔 + + + + + 道路标志识别拍照张数 + + + + + 道路标志识别拍照间隔 + + + + + 保留字段 + + + + + 驾驶员状态监测系统参数 + + + + + 报警判断速度阈值 + + + + + 报警提示音量 + + + + + 主动拍照策略 + + + + + 主动定时拍照时间间隔 + + + + + 主动定距拍照距离间隔 + + + + + 单次主动拍照张数 + + + + + 单次主动拍照时间间隔 + + + + + 拍照分辨率 + + + + + 视频录制分辨率 + + + + + 报警使能 + + + + + 事件使能 + + + + + 吸烟报警判断时间间隔 + + + + + 接打电话报警判断时间间隔 + + + + + 预留字段 + + + + + 疲劳驾驶报警分级速度阈值 + + + + + 疲劳驾驶报警前后视频录制时间 + + + + + 疲劳驾驶报警拍照张数 + + + + + 疲劳驾驶报警拍照间隔时间 + + + + + 接打电话报警分级速度阈值 + + + + + 接打电话报警前后视频录制时间 + + + + + 接打电话报警拍驾驶员面部特征照片张数 + + + + + 接打电话报警拍驾驶员面部特征照片间隔时间 + + + + + 抽烟报警分级车速阈值 + + + + + 抽烟报警前后视频录制时间 + + + + + 抽烟报警拍驾驶员面部特征照片张数 + + + + + 抽烟报警拍驾驶员面部特征照片间隔时间 + + + + + 分神驾驶报警分级车速阈值 + + + + + 分神驾驶报警拍照张数 + + + + + 分神驾驶报警拍照间隔时间 + + + + + 驾驶行为异常视频录制时间 + + + + + 驾驶行为异常抓拍照片张数 + + + + + 驾驶行为异常拍照间隔 + + + + + 驾驶员身份识别触发 + + + + + 保留字段 + + + + + 胎压监测系统参数 + + + + + 轮胎规格型号 12位 + + + + + 胎压单位 + + + + + 正常胎压值 + + + + + 胎压不平衡门限 + + + + + 慢漏气门限 + + + + + 低压阈值 + + + + + 高压阈值 + + + + + 高温阈值 + + + + + 电压阈值 + + + + + 定时上报时间间隔 + + + + + 保留项 + + + + + 盲区监测系统参数 + + + + + 后方接近报警时间阈值 + + + + + 侧后方接近报警时间阈值 + + + + + 查询基本信息 + + + + + 外设ID列表总数 + + + + + 外设ID + + + + + 查询基本信息 + + + + + 外设ID列表总数 + + + + + 外设ID + + + + + 报警附件上传指令 + + + + + 报警标识号 + + + + + 平台给报警分配的唯一编号 + 32 + + + + + 预留 + + + + + 文件上传完成消息应答 + + + + + 文件名称长度 + + + + + 文件名称 + + + + + 文件类型 + + + + + 上传结果 + + + + + 补传数据包数量 + 需要补传的数据包数量,无补传时该值为0 + + + + + 补传数据包列表 + + + + + 报警标识号 + + + + + 终端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 index d4ca3cc..d2455fe 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808_JTActiveSafety_Constants.cs @@ -38,5 +38,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety /// 盲区监测系统参数设置 /// 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/MessageBody/JT808_0x0200_0x64.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs index 3d20ac6..4e5ca2d 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter { - public override byte AttachInfoId { get; set; } = 0x64; + public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x64; public override byte AttachInfoLength { get; set; } = 32; /// /// 报警ID diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs index b2abcf8..c01641c 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter { - public override byte AttachInfoId { get; set; } = 0x65; + public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x65; public override byte AttachInfoLength { get; set; } = 32; /// /// 报警ID diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs index cdf9ec8..c0c17d6 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter { - public override byte AttachInfoId { get; set; } = 0x66; + public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x66; public override byte AttachInfoLength { get; set; } /// /// 报警ID diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs index 5c13152..d945cd1 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs @@ -13,7 +13,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter { - public override byte AttachInfoId { get; set; } = 0x67; + public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x67; public override byte AttachInfoLength { get; set; } = 26; /// /// 报警ID diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs new file mode 100644 index 0000000..95010ab --- /dev/null +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF7.cs @@ -0,0 +1,56 @@ +using JT808.Protocol.Extensions.JTActiveSafety.Metadata; +using JT808.Protocol.Formatters; +using JT808.Protocol.MessageBody; +using JT808.Protocol.MessagePack; +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody +{ + public class JT808_0x0900_0xF7 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter + { + public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; + /// + /// 消息列表总数 + /// + public byte USBMessageCount { get; set; } + + public List USBMessages { get; set; } + + 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 new file mode 100644 index 0000000..838f126 --- /dev/null +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs @@ -0,0 +1,88 @@ +using JT808.Protocol.Extensions.JTActiveSafety.Metadata; +using JT808.Protocol.Formatters; +using JT808.Protocol.MessageBody; +using JT808.Protocol.MessagePack; +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody +{ + public class JT808_0x0900_0xF8 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter + { + public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; + /// + /// 消息列表总数 + /// + public byte USBMessageCount { get; set; } + public List USBMessages { get; set; } + 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_0x8103_0xF364.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs index 011a0ca..d5043e2 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF364.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter { - public override uint ParamId { get; set; } = 0xF364; + public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; public override byte ParamLength { get; set; } /// /// 报警判断速度阈值 diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs index 851c10b..85e41d8 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF365.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter { - public override uint ParamId { get; set; } = 0xF365; + public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; public override byte ParamLength { get; set; } /// /// 报警判断速度阈值 diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs index 718d04f..6aadee0 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter { - public override uint ParamId { get; set; } = 0xF366; + public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF366; public override byte ParamLength { get; set; } = 46; /// /// 轮胎规格型号 12位 diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs index 636a65a..910ff91 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter { - public override uint ParamId { get; set; } = 0xF367; + public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF367; public override byte ParamLength { get; set; } = 2; /// /// 后方接近报警时间阈值 diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x8900.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs similarity index 55% rename from src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x8900.cs rename to src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs index cf33a67..2385c34 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x8900.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs @@ -8,8 +8,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// /// 查询基本信息 /// - public class JT808_JTActiveSafety_0x8900: JT808_0x8900_BodyBase, IJT808MessagePackFormatter + public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter { + public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; /// /// 外设ID列表总数 /// @@ -19,22 +20,22 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public List MultipleUSB { get; set; } - public JT808_JTActiveSafety_0x8900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) + public JT808_0x8900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_JTActiveSafety_0x8900 jT808_JTActiveSafety_0X8900 = new JT808_JTActiveSafety_0x8900(); - jT808_JTActiveSafety_0X8900.USBCount = reader.ReadByte(); - if (jT808_JTActiveSafety_0X8900.USBCount > 0) + JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); + value.USBCount = reader.ReadByte(); + if (value.USBCount > 0) { - jT808_JTActiveSafety_0X8900.MultipleUSB = new List(); - for (int i = 0; i < jT808_JTActiveSafety_0X8900.USBCount; i++) + value.MultipleUSB = new List(); + for (int i = 0; i < value.USBCount; i++) { - jT808_JTActiveSafety_0X8900.MultipleUSB.Add(reader.ReadByte()); + value.MultipleUSB.Add(reader.ReadByte()); } } - return jT808_JTActiveSafety_0X8900; + return value; } - public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x8900 value, IJT808Config config) + public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF7 value, IJT808Config config) { if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) { diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs new file mode 100644 index 0000000..177b2c0 --- /dev/null +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs @@ -0,0 +1,50 @@ +using JT808.Protocol.Formatters; +using JT808.Protocol.MessageBody; +using JT808.Protocol.MessagePack; +using System.Collections.Generic; + +namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody +{ + /// + /// 查询基本信息 + /// + public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter + { + 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 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_JTActiveSafety_0x0900.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900.cs deleted file mode 100644 index 38c951d..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900.cs +++ /dev/null @@ -1,63 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.MessageBody; -using JT808.Protocol.MessagePack; -using System.Collections.Generic; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 上传基本信息 - /// - public class JT808_JTActiveSafety_0x0900 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter - { - /// - /// 消息列表总数 - /// - public byte USBMessageCount { get; set; } - - public List USBMessages { get; set; } - - public JT808_JTActiveSafety_0x0900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_JTActiveSafety_0x0900 jT808_JTActiveSafety_0X0900 = new JT808_JTActiveSafety_0x0900(); - jT808_JTActiveSafety_0X0900.USBMessageCount = reader.ReadByte(); - if (jT808_JTActiveSafety_0X0900.USBMessageCount > 0) - { - jT808_JTActiveSafety_0X0900.USBMessages = new List(); - for (int i = 0; i < jT808_JTActiveSafety_0X0900.USBMessageCount; i++) - { - JT808_JTActiveSafety_0x0900_USBMessage jT808_JTActiveSafety_0X0900_USBMessage = new JT808_JTActiveSafety_0x0900_USBMessage(); - jT808_JTActiveSafety_0X0900_USBMessage.USBID = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USBMessage.MessageLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USBMessage.MessageContent = reader.ReadArray(jT808_JTActiveSafety_0X0900_USBMessage.MessageLength).ToArray(); - jT808_JTActiveSafety_0X0900.USBMessages.Add(jT808_JTActiveSafety_0X0900_USBMessage); - } - } - return jT808_JTActiveSafety_0X0900; - } - - public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900 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); - if (item.MessageContent != null && item.MessageContent.Length > 0) - { - writer.WriteByte((byte)item.MessageContent.Length); - writer.WriteArray(item.MessageContent); - } - else if (item.MessageContentObejct != null) - { - writer.Skip(1, out int MessageContentLengthPosition); - object obj = config.GetMessagePackFormatterByType(item.MessageContentObejct.GetType()); - JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, item.MessageContentObejct, config); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - MessageContentLengthPosition - 1), MessageContentLengthPosition); - } - } - } - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF7.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF7.cs deleted file mode 100644 index 691bdd5..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF7.cs +++ /dev/null @@ -1,35 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.MessagePack; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 外设工作状态 - /// - public class JT808_JTActiveSafety_0x0900_USB_0xF7 : JT808_JTActiveSafety_0x0900_USB_Base, IJT808MessagePackFormatter - { - public static JT808_JTActiveSafety_0x0900_USB_0xF7 Instance = new JT808_JTActiveSafety_0x0900_USB_0xF7(); - /// - /// 工作状态 - /// - public byte WorkingCondition { get; set; } - /// - /// 报警状态 - /// - public uint AlarmStatus { get; set; } - - public JT808_JTActiveSafety_0x0900_USB_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_JTActiveSafety_0x0900_USB_0xF7 jT808_JTActiveSafety_0X0900_USB_0XF7 = new JT808_JTActiveSafety_0x0900_USB_0xF7(); - jT808_JTActiveSafety_0X0900_USB_0XF7.WorkingCondition = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF7.AlarmStatus = reader.ReadUInt32(); - return jT808_JTActiveSafety_0X0900_USB_0XF7; - } - - public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900_USB_0xF7 value, IJT808Config config) - { - writer.WriteByte(value.WorkingCondition); - writer.WriteUInt32(value.AlarmStatus); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF8.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF8.cs deleted file mode 100644 index 788bad8..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_0xF8.cs +++ /dev/null @@ -1,107 +0,0 @@ -using JT808.Protocol.Formatters; -using JT808.Protocol.MessagePack; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - /// - /// 外设系统信息 - /// - public class JT808_JTActiveSafety_0x0900_USB_0xF8 : JT808_JTActiveSafety_0x0900_USB_Base, IJT808MessagePackFormatter - { - /// - /// 公司名称长度 - /// - 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; } - - public JT808_JTActiveSafety_0x0900_USB_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) - { - JT808_JTActiveSafety_0x0900_USB_0xF8 jT808_JTActiveSafety_0X0900_USB_0XF8 = new JT808_JTActiveSafety_0x0900_USB_0xF8(); - jT808_JTActiveSafety_0X0900_USB_0XF8.CompantNameLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.CompantName = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.CompantNameLength); - jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModelLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModel = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModelLength); - jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumberLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumber = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumberLength); - jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumberLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumber = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumberLength); - jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesIDLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesID = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesIDLength); - jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCodeLength = reader.ReadByte(); - jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCode = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCodeLength); - return jT808_JTActiveSafety_0X0900_USB_0XF8; - } - - public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900_USB_0xF8 value, IJT808Config config) - { - writer.Skip(1, out int CompantNameLengthPosition); - writer.WriteString(value.CompantName); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition); - - writer.Skip(1, out int ProductModelLengthPosition); - writer.WriteString(value.ProductModel); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition); - - writer.Skip(1, out int HardwareVersionNumberLengthPosition); - writer.WriteString(value.HardwareVersionNumber); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition); - - writer.Skip(1, out int SoftwareVersionNumberLengthPosition); - writer.WriteString(value.SoftwareVersionNumber); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition); - - writer.Skip(1, out int DevicesIDLengthPosition); - writer.WriteString(value.DevicesID); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition); - - writer.Skip(1, out int CustomerCodeLengthPosition); - writer.WriteString(value.CustomerCode); - writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CustomerCodeLengthPosition - 1), CustomerCodeLengthPosition); - } - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_Base.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_Base.cs deleted file mode 100644 index 19140a7..0000000 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USB_Base.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody -{ - public abstract class JT808_JTActiveSafety_0x0900_USB_Base - { - } -} diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USBMessage.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs similarity index 51% rename from src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USBMessage.cs rename to src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs index d7b2b98..efe30d5 100644 --- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_JTActiveSafety_0x0900_USBMessage.cs +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF7_USB.cs @@ -2,15 +2,13 @@ using System.Collections.Generic; using System.Text; -namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody +namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata { - /// - /// 外设消息结构 - /// - public class JT808_JTActiveSafety_0x0900_USBMessage + public class JT808_0x0900_0xF7_USB { /// /// 外设ID + /// /// public byte USBID { get; set; } /// @@ -18,12 +16,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody /// public byte MessageLength { get; set; } /// - /// 消息内容 + /// 工作状态 /// - public byte[] MessageContent { get; set; } + public byte WorkingCondition { get; set; } /// - /// 消息内容对象 + /// 报警状态 /// - public JT808_JTActiveSafety_0x0900_USB_Base MessageContentObejct { 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 new file mode 100644 index 0000000..1ad713d --- /dev/null +++ b/src/JT808.Protocol.Extensions.JTActiveSafety/Metadata/JT808_0x0900_0xF8_USB.cs @@ -0,0 +1,69 @@ +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; } + } +}