@@ -54,7 +54,7 @@ | |||||
> MsgId 0x0200:位置信息汇报 | > MsgId 0x0200:位置信息汇报 | ||||
``` package | |||||
``` csharp | |||||
JT808Package jT808Package = new JT808Package(); | JT808Package jT808Package = new JT808Package(); | ||||
@@ -98,7 +98,7 @@ var hex = data.ToHexString(); | |||||
#### 2.手动解包: | #### 2.手动解包: | ||||
``` unpackage | |||||
``` text | |||||
1.原包: | 1.原包: | ||||
7E 02 00 00 26 12 34 56 78 90 12 00 (7D 02) 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 (7D 01) 13 7E | 7E 02 00 00 26 12 34 56 78 90 12 00 (7D 02) 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 (7D 01) 13 7E | ||||
@@ -134,7 +134,7 @@ var hex = data.ToHexString(); | |||||
#### 3.程序解包: | #### 3.程序解包: | ||||
``` unpackage2 | |||||
``` csharp | |||||
//1.转成byte数组 | //1.转成byte数组 | ||||
byte[] bytes = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E".ToHexBytes(); | byte[] bytes = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E".ToHexBytes(); | ||||
@@ -169,7 +169,7 @@ Assert.Equal(125, ((JT808_0x0200_0x02)jT808_0x0200.BasicLocationAttachData[JT808 | |||||
### 举个栗子2 | ### 举个栗子2 | ||||
``` create package | |||||
``` csharp | |||||
// 使用消息Id的扩展方法创建JT808Package包 | // 使用消息Id的扩展方法创建JT808Package包 | ||||
JT808Package jT808Package = Enums.JT808MsgId.位置信息汇报.Create("123456789012", | JT808Package jT808Package = Enums.JT808MsgId.位置信息汇报.Create("123456789012", | ||||
new JT808_0x0200 { | new JT808_0x0200 { | ||||
@@ -197,7 +197,7 @@ var hex = data.ToHexString(); | |||||
### 举个栗子3 | ### 举个栗子3 | ||||
``` config | |||||
``` csharp | |||||
// 初始化配置 | // 初始化配置 | ||||
IJT808Config DT1JT808Config = new DT1Config(); | IJT808Config DT1JT808Config = new DT1Config(); | ||||
IJT808Config DT2JT808Config = new DT2Config(); | IJT808Config DT2JT808Config = new DT2Config(); | ||||
@@ -348,6 +348,15 @@ JT808Serializer DT2JT808Serializer = new JT808Serializer(DT2JT808Config); | |||||
[可以参考Simples的Demo15](https://github.com/SmallChi/JT808/blob/master/src/JT808.Protocol.Test/Simples/Demo15.cs) | [可以参考Simples的Demo15](https://github.com/SmallChi/JT808/blob/master/src/JT808.Protocol.Test/Simples/Demo15.cs) | ||||
### 举个栗子16 | |||||
场景: | |||||
平台下发分包数据到设备 | |||||
可以参考【栗子5】中,设备上来的分包数据结构,然后举一反三的去实现。 | |||||
[可以参考Simples的Demo16](https://github.com/SmallChi/JT808/blob/master/src/JT808.Protocol.Test/Simples/Demo16.cs) | |||||
## NuGet安装 | ## NuGet安装 | ||||
| Package Name| Version| Preview Version |Downloads|Remark| | | Package Name| Version| Preview Version |Downloads|Remark| | ||||
@@ -536,7 +545,7 @@ serviceDescriptors1.AddJT808Configure() | |||||
## 使用方法 | ## 使用方法 | ||||
```dotnet | |||||
```csharp | |||||
IServiceCollection serviceDescriptors1 = new ServiceCollection(); | IServiceCollection serviceDescriptors1 = new ServiceCollection(); | ||||
serviceDescriptors1.AddJT808Configure() | serviceDescriptors1.AddJT808Configure() | ||||
.AddSuBiaoConfigure(); | .AddSuBiaoConfigure(); | ||||
@@ -572,7 +581,7 @@ serviceDescriptors1.AddJT808Configure() | |||||
## 使用方法 | ## 使用方法 | ||||
```dotnet | |||||
```csharp | |||||
IServiceCollection serviceDescriptors1 = new ServiceCollection(); | IServiceCollection serviceDescriptors1 = new ServiceCollection(); | ||||
serviceDescriptors1.AddJT808Configure() | serviceDescriptors1.AddJT808Configure() | ||||
.AddYueBiaoConfigure(); | .AddYueBiaoConfigure(); | ||||
@@ -0,0 +1,101 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.Internal; | |||||
using JT808.Protocol.Extensions; | |||||
using Microsoft.Extensions.DependencyInjection; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Xunit; | |||||
using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.MessagePack; | |||||
using System.Text.Json; | |||||
using JT808.Protocol.MessageBody.CarDVR; | |||||
using System.Linq; | |||||
using JT808.Protocol.Test.JT808LocationAttach; | |||||
using static JT808.Protocol.MessageBody.JT808_0x8105; | |||||
using System.Buffers.Binary; | |||||
using Newtonsoft.Json; | |||||
namespace JT808.Protocol.Test.Simples | |||||
{ | |||||
public class Demo16 | |||||
{ | |||||
JT808Serializer JT808Serializer; | |||||
IJT808Config JT808Config; | |||||
public Demo16() | |||||
{ | |||||
IServiceCollection serviceDescriptors = new ServiceCollection(); | |||||
serviceDescriptors.AddJT808Configure(); | |||||
//通常在startup中使用app的Use进行扩展 | |||||
IServiceProvider serviceProvider = serviceDescriptors.BuildServiceProvider(); | |||||
JT808Config = serviceProvider.GetRequiredService<IJT808Config>(); | |||||
JT808Serializer = JT808Config.GetSerializer(); | |||||
} | |||||
[Fact] | |||||
public void Test1() | |||||
{ | |||||
var upgradePackage = new byte[1024 * 10]; | |||||
var splitPackage = JT808Config.SplitPackageStrategy.Processor(upgradePackage).ToList(); | |||||
ushort packgeCount = (ushort)splitPackage.Count(); | |||||
List<string> hexs = new List<string>(); | |||||
for (ushort i = 1; i <= packgeCount; i++) | |||||
{ | |||||
if (i == 1) | |||||
{ | |||||
var bodies = new JT808_0x8108 | |||||
{ | |||||
UpgradeType = JT808UpgradeType.终端, | |||||
VersionNum = "v1.2.1", | |||||
MakerId = "1234", | |||||
UpgradePackage = splitPackage[i - 1].Data | |||||
}; | |||||
var firstBodies = JT808Serializer.Serialize(bodies); | |||||
JT808Package package = new JT808Package | |||||
{ | |||||
Header = new JT808Header | |||||
{ | |||||
MsgId = Enums.JT808MsgId.下发终端升级包.ToUInt16Value(), | |||||
ManualMsgNum = 10, | |||||
TerminalPhoneNo = "123456789", | |||||
MessageBodyProperty = new JT808HeaderMessageBodyProperty() | |||||
{ | |||||
IsPackage = true, | |||||
}, | |||||
PackgeCount = packgeCount, | |||||
PackageIndex = i | |||||
}, | |||||
SubDataBodies = firstBodies | |||||
}; | |||||
var hex = JT808Serializer.Serialize(package).ToHexString(); | |||||
hexs.Add(hex); | |||||
} | |||||
else | |||||
{ | |||||
JT808Package package = new JT808Package | |||||
{ | |||||
Header = new JT808Header | |||||
{ | |||||
MsgId = Enums.JT808MsgId.下发终端升级包.ToUInt16Value(), | |||||
ManualMsgNum = 10, | |||||
TerminalPhoneNo = "123456789", | |||||
MessageBodyProperty = new JT808HeaderMessageBodyProperty() | |||||
{ | |||||
IsPackage = true, | |||||
}, | |||||
PackgeCount = packgeCount, | |||||
PackageIndex = i | |||||
}, | |||||
SubDataBodies = splitPackage[i - 1].Data | |||||
}; | |||||
var hex = JT808Serializer.Serialize(package).ToHexString(); | |||||
hexs.Add(hex); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -56,14 +56,14 @@ | |||||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | <PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" /> | ||||
<PackageReference Include="System.Memory" Version="4.5.4" /> | <PackageReference Include="System.Memory" Version="4.5.4" /> | ||||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | <PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> | ||||
<PackageReference Include="System.Text.Json" Version="6.0.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="6.0.1" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' "> | ||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | <PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> | ||||
<PackageReference Include="System.Text.Json" Version="6.0.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="6.0.1" /> | |||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||