Browse Source

1.增加平台下发分包数据到设备(demo16)

2.修改文档
tags/v2.4.6
SmallChi(Koike) 3 years ago
parent
commit
48a82f264a
3 changed files with 119 additions and 9 deletions
  1. +16
    -7
      README.md
  2. +101
    -0
      src/JT808.Protocol.Test/Simples/Demo16.cs
  3. +2
    -2
      src/JT808.Protocol/JT808.Protocol.csproj

+ 16
- 7
README.md View File

@@ -54,7 +54,7 @@

> MsgId 0x0200:位置信息汇报

``` package
``` csharp

JT808Package jT808Package = new JT808Package();

@@ -98,7 +98,7 @@ var hex = data.ToHexString();

#### 2.手动解包:

``` unpackage
``` text
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

@@ -134,7 +134,7 @@ var hex = data.ToHexString();

#### 3.程序解包:

``` unpackage2
``` csharp
//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();

@@ -169,7 +169,7 @@ Assert.Equal(125, ((JT808_0x0200_0x02)jT808_0x0200.BasicLocationAttachData[JT808

### 举个栗子2

``` create package
``` csharp
// 使用消息Id的扩展方法创建JT808Package包
JT808Package jT808Package = Enums.JT808MsgId.位置信息汇报.Create("123456789012",
new JT808_0x0200 {
@@ -197,7 +197,7 @@ var hex = data.ToHexString();

### 举个栗子3

``` config
``` csharp
// 初始化配置
IJT808Config DT1JT808Config = new DT1Config();
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)

### 举个栗子16

场景:
平台下发分包数据到设备

可以参考【栗子5】中,设备上来的分包数据结构,然后举一反三的去实现。

[可以参考Simples的Demo16](https://github.com/SmallChi/JT808/blob/master/src/JT808.Protocol.Test/Simples/Demo16.cs)

## NuGet安装

| Package Name| Version| Preview Version |Downloads|Remark|
@@ -536,7 +545,7 @@ serviceDescriptors1.AddJT808Configure()

## 使用方法

```dotnet
```csharp
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddSuBiaoConfigure();
@@ -572,7 +581,7 @@ serviceDescriptors1.AddJT808Configure()

## 使用方法

```dotnet
```csharp
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddYueBiaoConfigure();


+ 101
- 0
src/JT808.Protocol.Test/Simples/Demo16.cs View File

@@ -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);
}
}
}
}
}

+ 2
- 2
src/JT808.Protocol/JT808.Protocol.csproj View File

@@ -56,14 +56,14 @@
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" />
<PackageReference Include="System.Memory" Version="4.5.4" />
<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="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' ">
<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="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
</ItemGroup>


Loading…
Cancel
Save