@@ -12,7 +12,7 @@ jobs: | |||
- name: Setup .NET Core | |||
uses: actions/setup-dotnet@master | |||
with: | |||
dotnet-version: 8.0.100 | |||
dotnet-version: 8.0.203 | |||
- name: dotnet info | |||
run: dotnet --info | |||
- name: dotnet restore | |||
@@ -382,6 +382,7 @@ Due to access many different equipment vendor's agreement, but each protocol doc | |||
| Install-Package JT808.Protocol.Extensions.JT1078 |  | | |JT1078 extension JT808| | |||
| Install-Package JT808.Protocol.Extensions.SuBiao|  | | |Active Safety (Su Biao) extension JT808| | |||
| Install-Package JT808.Protocol.Extensions.YueBiao|  | | |Active Safety (Yue Biao) extension JT808| | |||
| Install-Package JT808.Protocol.Extensions.GPS51 |  |  |  | |||
## Using BenchmarkDotNet performance test reports (just for fun, not to be taken seriously) | |||
@@ -398,6 +398,8 @@ JT808Serializer DT2JT808Serializer = new JT808Serializer(DT2JT808Config); | |||
| Install-Package JT808.Protocol.Extensions.JT1078 |  |  |  | JT1078 扩展 JT808 | | |||
| Install-Package JT808.Protocol.Extensions.SuBiao |  |  |  | 主动安全(苏标)扩展 JT808 | | |||
| Install-Package JT808.Protocol.Extensions.YueBiao |  |  |  | 主动安全(粤标)扩展 JT808 | | |||
| Install-Package JT808.Protocol.Extensions.GPS51 |  |  |  | 主动安全(粤标)扩展 JT808 | | |||
## 使用 BenchmarkDotNet 性能测试报告(只是玩玩,不能当真) | |||
@@ -1,5 +1,5 @@ | |||
{ | |||
"sdk": { | |||
"version": "8.0.100" | |||
"version": "8.0.203" | |||
} | |||
} |
@@ -8,3 +8,99 @@ dotnet_diagnostic.IDE0028.severity = none | |||
# IDE0059: 不需要赋值 | |||
dotnet_diagnostic.IDE0059.severity = none | |||
[*.cs] | |||
#### 命名样式 #### | |||
# 命名规则 | |||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion | |||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface | |||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i | |||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion | |||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types | |||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case | |||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion | |||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members | |||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case | |||
# 符号规范 | |||
dotnet_naming_symbols.interface.applicable_kinds = interface | |||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||
dotnet_naming_symbols.interface.required_modifiers = | |||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum | |||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||
dotnet_naming_symbols.types.required_modifiers = | |||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method | |||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||
dotnet_naming_symbols.non_field_members.required_modifiers = | |||
# 命名样式 | |||
dotnet_naming_style.begins_with_i.required_prefix = I | |||
dotnet_naming_style.begins_with_i.required_suffix = | |||
dotnet_naming_style.begins_with_i.word_separator = | |||
dotnet_naming_style.begins_with_i.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case.required_prefix = | |||
dotnet_naming_style.pascal_case.required_suffix = | |||
dotnet_naming_style.pascal_case.word_separator = | |||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case.required_prefix = | |||
dotnet_naming_style.pascal_case.required_suffix = | |||
dotnet_naming_style.pascal_case.word_separator = | |||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||
[*.vb] | |||
#### 命名样式 #### | |||
# 命名规则 | |||
dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion | |||
dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface | |||
dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始 | |||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion | |||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型 | |||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 | |||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion | |||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员 | |||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 | |||
# 符号规范 | |||
dotnet_naming_symbols.interface.applicable_kinds = interface | |||
dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||
dotnet_naming_symbols.interface.required_modifiers = | |||
dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum | |||
dotnet_naming_symbols.类型.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||
dotnet_naming_symbols.类型.required_modifiers = | |||
dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method | |||
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||
dotnet_naming_symbols.非字段成员.required_modifiers = | |||
# 命名样式 | |||
dotnet_naming_style.以_i_开始.required_prefix = I | |||
dotnet_naming_style.以_i_开始.required_suffix = | |||
dotnet_naming_style.以_i_开始.word_separator = | |||
dotnet_naming_style.以_i_开始.capitalization = pascal_case | |||
dotnet_naming_style.帕斯卡拼写法.required_prefix = | |||
dotnet_naming_style.帕斯卡拼写法.required_suffix = | |||
dotnet_naming_style.帕斯卡拼写法.word_separator = | |||
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case | |||
dotnet_naming_style.帕斯卡拼写法.required_prefix = | |||
dotnet_naming_style.帕斯卡拼写法.required_suffix = | |||
dotnet_naming_style.帕斯卡拼写法.word_separator = | |||
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case |
@@ -8,7 +8,7 @@ | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808</PackageProjectUrl> | |||
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl> | |||
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | |||
<Version>2.6.5</Version> | |||
<Version>2.6.6</Version> | |||
<ImplicitUsings>enable</ImplicitUsings> | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | |||
@@ -29,6 +29,6 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/> | |||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All"/> | |||
</ItemGroup> | |||
</Project> |
@@ -14,8 +14,8 @@ | |||
<None Remove="ReportTest\**" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="BenchmarkDotNet" Version="0.13.10" /> | |||
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.10" /> | |||
<PackageReference Include="BenchmarkDotNet" Version="0.13.12" /> | |||
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.12" /> | |||
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> | |||
<PackageReference Include="System.Buffers" Version="4.5.1" /> | |||
<PackageReference Include="System.Memory" Version="4.5.5" /> | |||
@@ -7,9 +7,9 @@ | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> | |||
<PackageReference Include="xunit" Version="2.6.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> | |||
<PackageReference Include="xunit" Version="2.7.0" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
</PackageReference> | |||
@@ -14,7 +14,7 @@ namespace JT808.Protocol.Extensions.GPS51.Test | |||
{ | |||
ServiceCollection serviceDescriptors = new ServiceCollection(); | |||
serviceDescriptors.AddJT808Configure() | |||
.AddGPS51Configure(); | |||
.AddGPS51Configure(); | |||
IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService<IJT808Config>(); | |||
JT808Serializer = new JT808Serializer(jT808Config); | |||
@@ -22,6 +22,7 @@ namespace JT808.Protocol.Extensions.GPS51.Test | |||
[Fact] | |||
public void Serializer() | |||
{ | |||
#warning ÓÐÎÊÌâ | |||
JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200 | |||
{ | |||
AlarmFlag = 1, | |||
@@ -6,11 +6,13 @@ using System; | |||
using System.Collections.Generic; | |||
using System.Reflection; | |||
using System.Text; | |||
using static System.Net.WebRequestMethods; | |||
namespace JT808.Protocol.Extensions.GPS51 | |||
{ | |||
/// <summary> | |||
/// GPS51 extension JT/T808 | |||
/// <see cref="https://gps51.com/#/jt808add"/> | |||
/// </summary> | |||
public static class DependencyInjectionExtensions | |||
{ | |||
@@ -1,9 +1,26 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Import Project="..\..\Info.props" /> | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<PackageId>JT808.Protocol.Extensions.GPS51</PackageId> | |||
<Product>JT808.Protocol.Extensions.GPS51</Product> | |||
<Description> | |||
JT/T1078 video message protocol based on JT/JT808 protocol and GB808 protocol extension.基于JT808协议、GB808协议扩展的JT1078视频消息协议。 | |||
</Description> | |||
<PackageReleaseNotes> | |||
JT/T1078 video message protocol based on JT/JT808 protocol and GB808 protocol extension.基于JT/T808协议、GB808协议扩展的JT/T1078视频消息协议。 | |||
</PackageReleaseNotes> | |||
<DocumentationFile>JT808.Protocol.Extensions.GPS51.xml</DocumentationFile> | |||
<GenerateDocumentationFile>True</GenerateDocumentationFile> | |||
<LinkRefUrl>https://gps51.com/#/jt808add</LinkRefUrl> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> | |||
<None Include="..\..\..\README.md" Pack="true" PackagePath="" /> | |||
<None Include="..\..\..\README.en.md" Pack="true" PackagePath="" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\..\JT808.Protocol\JT808.Protocol.csproj" /> | |||
</ItemGroup> | |||
@@ -0,0 +1,345 @@ | |||
<?xml version="1.0"?> | |||
<doc> | |||
<assembly> | |||
<name>JT808.Protocol.Extensions.GPS51</name> | |||
</assembly> | |||
<members> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.DependencyInjectionExtensions"> | |||
<summary> | |||
GPS51 extension JT/T808 | |||
<see cref="!:https://gps51.com/#/jt808add"/> | |||
</summary> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.DependencyInjectionExtensions.AddGPS51Configure(JT808.Protocol.IJT808Builder)"> | |||
<summary> | |||
注册GPS51扩展JT/T808 | |||
Register GPS51 extension JT/T808 | |||
</summary> | |||
<param name="jT808Builder"></param> | |||
<returns></returns> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType"> | |||
<summary> | |||
主动拍照策略 | |||
Active photo taking strategy | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType.not_enabled"> | |||
<summary> | |||
不开启 | |||
Is not enabled | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType.camera_timer"> | |||
<summary> | |||
定时拍照 | |||
Camera Timer | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType.distance_take_photos"> | |||
<summary> | |||
定距拍照 | |||
Distance take photos | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType.reserve"> | |||
<summary> | |||
保留 | |||
reserve | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.Enums.ActivePhotographyStrategyType.not_modify_parameters"> | |||
<summary> | |||
不修改参数 | |||
Do not Modify parameters | |||
</summary> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants"> | |||
<summary> | |||
主动安全常量 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x2B"> | |||
<summary> | |||
附加信息ID 多路油耗模拟量, | |||
2*N | |||
例子报文:2b049203a46f | |||
解析结果为:2路 模拟量分别为37379 42095 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x51"> | |||
<summary> | |||
附加信息ID 2个字节一组温度 0.1度 ffff 代表无效, | |||
2*N | |||
04F6代表未接或者传感器掉电, | |||
第16位代表正负温度 51080134011A04F604F6 | |||
308=30.8度 282=28.2度 8050=-80=-8度 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x52"> | |||
<summary> | |||
附加信息ID | |||
1 | |||
正反转 0:未知;1:正转(空车)2:反转(重车);3:停转 | |||
例子解析为:03 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x54"> | |||
<summary> | |||
附加信息ID | |||
1+7*N | |||
Wifi数据:第1个字节wifi个数,后面为n个wifi数据; | |||
WIFI数据:6字节 wifiMac 1字节 信号强度 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x55"> | |||
<summary> | |||
载重扩展 8 | |||
1/10千克 8 字节 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x58"> | |||
<summary> | |||
湿度, | |||
2*N | |||
精度0.1,0fff 代表无效数据,例子数据: 0012 表示:1.8% | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0x61"> | |||
<summary> | |||
电压, | |||
2 | |||
单位0.01V,例子报文:61021d74,解析结果7540,最终电压75.40V | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xe1"> | |||
<summary> | |||
基站编码 | |||
4+7*N | |||
的格式为 MCC MNC LAC CI Signal 2-2-2-4-1-2-4-1, | |||
其中MCC 2个字节国家编码,MNC 为 2个字节网络编码,LAC为 2个字节地区编码, | |||
CI 为 4个字节蜂窝 ID , | |||
信号强度 1字节, | |||
单基站可以不用信号强度 1cc-0-696a-863a8d0-0 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xe2"> | |||
<summary> | |||
版本号, | |||
N | |||
开机或者重连第一条上报,例子结果:GB201-GSM-21001-1.1.1 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xf1"> | |||
<summary> | |||
iccid, | |||
20 | |||
一般开机或者重连第一条0200位置信息上报, | |||
例子报文:f1143839383630343032313032303930393737303032, | |||
解析结果为:89860402102090977002 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xf6"> | |||
<summary> | |||
IMEI数据: | |||
8字节, | |||
第1位为0,后面15位为imei的16进制数据 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xfa"> | |||
<summary> | |||
4 | |||
第0位:震动报警 | |||
第1位:拆除报警 例子:第0位:震动报警 fa0400000001 第1位:拆除报警 fa0400000002 | |||
第2位:进入深度休眠 fa0400000004 | |||
第3位:急加速 fa0400000008 | |||
第4位:急减速 fa0400000010 | |||
第5位:急转弯 fa0400000020 | |||
第6位:acc开报警 fa0400000040 | |||
第7位:acc关报警 fa0400000080 | |||
第8位:内部电池电量低fa0400000100 | |||
第9位:人为关机 | |||
第10位:低电关机 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.JT808_0x0200_0xfb"> | |||
<summary> | |||
4 | |||
电量百分比和外部电压, | |||
电压精度0.01V,充电状态0未充电 1充电中,没有的数据传00 | |||
例子:fb045F050701 | |||
解析结果:电量百分比5F=95 电压:0507=1287 最终显示为12.87V 01:充电中 | |||
</summary> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.JT808_GPS51_Constants.GetCurrentAssembly"> | |||
<summary> | |||
</summary> | |||
<returns></returns> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext"> | |||
<summary> | |||
多路油耗模拟量 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.AttachInfoId"> | |||
<summary> | |||
多路油耗模拟量,Id | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.AttachInfoLength"> | |||
<summary> | |||
多路油耗模拟量信息附加长度 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.Oils"> | |||
<summary> | |||
油量数据 | |||
</summary> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="writer"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="config"></param> | |||
<returns></returns> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x2B_Ext,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="writer"></param> | |||
<param name="value"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51"> | |||
<summary> | |||
温度 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.AttachInfoId"> | |||
<summary> | |||
温度,Id | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.AttachInfoLength"> | |||
<summary> | |||
温度信息附加长度 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.Temperatures"> | |||
<summary> | |||
温度数据 | |||
</summary> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="writer"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="config"></param> | |||
<returns></returns> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x51,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="writer"></param> | |||
<param name="value"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52"> | |||
<summary> | |||
正反转 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.AttachInfoId"> | |||
<summary> | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.AttachInfoLength"> | |||
<summary> | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.Direction"> | |||
<summary> | |||
正反转值 | |||
0:未知;1:正转(空车)2:反转(重车);3:停转 例子解析为:03 | |||
</summary> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="writer"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="reader"></param> | |||
<param name="config"></param> | |||
<returns></returns> | |||
</member> | |||
<member name="M:JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.GPS51.MessageBody.JT808_0x0200_0x52,JT808.Protocol.IJT808Config)"> | |||
<summary> | |||
</summary> | |||
<param name="writer"></param> | |||
<param name="value"></param> | |||
<param name="config"></param> | |||
</member> | |||
<member name="T:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty"> | |||
<summary> | |||
报警标识号 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty.TerminalID"> | |||
<summary> | |||
终端ID | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty.Time"> | |||
<summary> | |||
YY-MM-DD-hh-mm-ss | |||
BCD[6] | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty.SN"> | |||
<summary> | |||
序号 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty.AttachCount"> | |||
<summary> | |||
附件数量 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.GPS51.Metadata.AlarmIdentificationProperty.Retain"> | |||
<summary> | |||
预留 | |||
</summary> | |||
</member> | |||
</members> | |||
</doc> |
@@ -43,7 +43,8 @@ namespace JT808.Protocol.Extensions.GPS51.MessageBody | |||
value.AttachInfoLength = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||
value.Oils = new List<ushort>(); | |||
for (ushort i = 0; i < value.AttachInfoLength/2; i++) { | |||
for (ushort i = 0; i < value.AttachInfoLength/2; i++) | |||
{ | |||
value.Oils.Add(reader.ReadUInt16()); | |||
} | |||
writer.WriteString($"[油量值:{string.Join("", value.Oils.Select(m=>m.ReadNumber()))}]",string.Join(",", value.Oils)); | |||
@@ -43,7 +43,8 @@ namespace JT808.Protocol.Extensions.GPS51.MessageBody | |||
value.AttachInfoLength = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||
value.Temperatures = new List<short>(); | |||
for (ushort i = 0; i < value.AttachInfoLength/2; i++) { | |||
for (ushort i = 0; i < value.AttachInfoLength/2; i++) | |||
{ | |||
value.Temperatures.Add(reader.ReadInt16()); | |||
} | |||
writer.WriteString($"[温度值:{string.Join("", value.Temperatures.Select(m=>m.ReadNumber()))}]",string.Join(",", value.Temperatures)); | |||
@@ -0,0 +1,95 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Text.Json; | |||
using JT808.Protocol.Extensions.GPS51.Metadata; | |||
using JT808.Protocol.Formatters; | |||
using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessageBody; | |||
using JT808.Protocol.MessagePack; | |||
namespace JT808.Protocol.Extensions.GPS51.MessageBody | |||
{ | |||
/// <summary> | |||
/// 正反转 | |||
/// </summary> | |||
public class JT808_0x0200_0x52 : JT808MessagePackFormatter<JT808_0x0200_0x52>, JT808_0x0200_CustomBodyBase, IJT808Analyze | |||
{ | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
public byte AttachInfoId { get; set; } = JT808_GPS51_Constants.JT808_0x0200_0x52; | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
public byte AttachInfoLength { get; set; } | |||
/// <summary> | |||
/// 正反转值 | |||
/// 0:未知;1:正转(空车)2:反转(重车);3:停转 例子解析为:03 | |||
/// </summary> | |||
public byte Direction { get; set; } | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
/// <param name="reader"></param> | |||
/// <param name="writer"></param> | |||
/// <param name="config"></param> | |||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||
{ | |||
JT808_0x0200_0x52 value = new JT808_0x0200_0x52(); | |||
value.AttachInfoId = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | |||
value.AttachInfoLength = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||
value.Direction = reader.ReadByte(); | |||
if (value.Direction == 0) | |||
{ | |||
writer.WriteString($"[{value.Direction.ReadNumber()}]正反转", "未知"); | |||
} | |||
else if(value.Direction==1) | |||
{ | |||
writer.WriteString($"[{value.Direction.ReadNumber()}]正反转", "正转(空车)"); | |||
} | |||
else if (value.Direction == 2) | |||
{ | |||
writer.WriteString($"[{value.Direction.ReadNumber()}]正反转", "反转(重车)"); | |||
} | |||
else if (value.Direction == 3) | |||
{ | |||
writer.WriteString($"[{value.Direction.ReadNumber()}]正反转", "停转"); | |||
} | |||
else | |||
{ | |||
writer.WriteString($"[{value.Direction.ReadNumber()}]正反转", "未知2"); | |||
} | |||
} | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
/// <param name="reader"></param> | |||
/// <param name="config"></param> | |||
/// <returns></returns> | |||
public override JT808_0x0200_0x52 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||
{ | |||
JT808_0x0200_0x52 value = new JT808_0x0200_0x52(); | |||
value.AttachInfoId = reader.ReadByte(); | |||
value.AttachInfoLength = reader.ReadByte(); | |||
value.Direction = reader.ReadByte(); | |||
return value; | |||
} | |||
/// <summary> | |||
/// | |||
/// </summary> | |||
/// <param name="writer"></param> | |||
/// <param name="value"></param> | |||
/// <param name="config"></param> | |||
public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x52 value, IJT808Config config) | |||
{ | |||
writer.WriteByte(value.AttachInfoId); | |||
writer.WriteByte(1); | |||
writer.WriteByte(value.Direction); | |||
} | |||
} | |||
} |
@@ -7,9 +7,9 @@ | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> | |||
<PackageReference Include="xunit" Version="2.6.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> | |||
<PackageReference Include="xunit" Version="2.7.0" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
</PackageReference> | |||
@@ -8,9 +8,9 @@ | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> | |||
<PackageReference Include="xunit" Version="2.6.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> | |||
<PackageReference Include="xunit" Version="2.7.0" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
</PackageReference> | |||
@@ -8,13 +8,13 @@ | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> | |||
<PackageReference Include="xunit" Version="2.6.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> | |||
<PackageReference Include="xunit" Version="2.7.0" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7"> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
<PrivateAssets>all</PrivateAssets> | |||
</PackageReference> | |||
<PackageReference Include="coverlet.collector" Version="6.0.0"> | |||
<PackageReference Include="coverlet.collector" Version="6.0.2"> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||
<PrivateAssets>all</PrivateAssets> | |||
</PackageReference> | |||
@@ -108,17 +108,17 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> | |||
<PackageReference Include="NETStandard.Library" Version="2.0.3" /> | |||
<PackageReference Include="System.Drawing.Common" Version="8.0.0" /> | |||
<PackageReference Include="System.Drawing.Common" Version="8.0.3" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> | |||
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" /> | |||
<PackageReference Include="xunit" Version="2.6.1" /> | |||
<PackageReference Include="xunit.runner.console" Version="2.6.1"> | |||
<PackageReference Include="xunit" Version="2.7.0" /> | |||
<PackageReference Include="xunit.runner.console" Version="2.7.0"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | |||
</PackageReference> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7"> | |||
<PrivateAssets>all</PrivateAssets> | |||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> | |||
</PackageReference> | |||
@@ -46,9 +46,9 @@ | |||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | |||
<PackageReference Include="System.Memory" Version="4.5.5" /> | |||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | |||
<PackageReference Include="System.Text.Json" Version="8.0.0" /> | |||
<PackageReference Include="System.Text.Json" Version="8.0.3" /> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" /> | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' "> | |||
@@ -57,7 +57,7 @@ | |||
</ItemGroup> | |||
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' "> | |||
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
@@ -74,7 +74,7 @@ namespace JT808.Protocol.MessageBody | |||
value.MultimediaCodingFormat = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.MultimediaCodingFormat.ReadNumber()}]多媒体格式编码-{((JT808MultimediaCodingFormat)value.MultimediaCodingFormat).ToString()}", value.MultimediaCodingFormat); | |||
value.EventItemCoding = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.EventItemCoding.ReadNumber()}]事件项编码-{((JT808EventItemCoding)value.EventItemCoding).ToString()}", value.MultimediaCodingFormat); | |||
writer.WriteNumber($"[{value.EventItemCoding.ReadNumber()}]事件项编码-{((JT808EventItemCoding)value.EventItemCoding).ToString()}", value.EventItemCoding); | |||
value.ChannelId = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.ChannelId.ReadNumber()}]通道ID", value.ChannelId); | |||
} | |||