Przeglądaj źródła

1.修改头部版本号为公开可写

2.增加DI注入扩展方式
tags/v1.3.0
SmallChi 6 lat temu
rodzic
commit
4bd3f8243d
9 zmienionych plików z 133 dodań i 48 usunięć
  1. +49
    -4
      README.md
  2. +21
    -1
      src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs
  3. +9
    -19
      src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json
  4. +19
    -12
      src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs
  5. +18
    -2
      src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
  6. +0
    -5
      src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs
  7. +13
    -1
      src/JT809.Protocol.sln
  8. +1
    -1
      src/JT809.Protocol/JT809.Protocol.csproj
  9. +3
    -3
      src/JT809.Protocol/JT809Header_Version.cs

+ 49
- 4
README.md Wyświetl plik

@@ -59,7 +59,7 @@
#### 1.组包:

> 业务数据类型 BusinessType:从链路报警信息交互消息
>
>
> 子业务类型标识 SubBusinessType:报警督办请求消息

``` code
@@ -185,7 +185,9 @@ Assert.Equal("12345678901", jT809_0x9400_0x9401.SupervisorTel);
Assert.Equal("123456@qq.com", jT809_0x9400_0x9401.SupervisorEmail);

```

### 举个栗子2

``` data2
// 设置全局配置
JT809GlobalConfig.Instance.SetHeaderOptions(new JT809Configs.JT809HeaderOptions
@@ -215,7 +217,9 @@ JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.
});
var hex = JT809Serializer.Serialize(jT809Package);
```

### 举个栗子3

``` data3
static void Main(string[] args)
{
@@ -227,8 +231,7 @@ static void Main(string[] args)
{
IA1 = 20000000,
IC1 = 20000000,
M1 = 30000000,
Key = 256178
M1 = 30000000
})
)
// 设置头部信息
@@ -246,11 +249,53 @@ static void Main(string[] args)
}
```

### 举个栗子4

``` data DI
// 使用依赖注入的方式实现配置
// Install-Package JT809.Extensions.DependencyInjection
static async Task Main(string[] args)
{
var serverHostBuilder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.ConfigureServices((hostContext, services) =>
{
// 方式1:
//services.AddJT809Configure(hostContext.Configuration.GetSection("JT809Options"));
// 方式2:
services.AddJT809Configure(new JT809Options
{
HeaderOptions=new JT809Configs.JT809HeaderOptions {
MsgGNSSCENTERID=20181012,
EncryptFlag= JT809Header_Encrypt.Common,
EncryptKey= 9999,
Version = new JT809Header_Version{
Major=2,
Minor=1,
Build= 2
}
},
EncryptOptions = new JT809Configs.JT809EncryptOptions {
IA1 = 20000000,
IC1 = 20000000,
M1 = 30000000
}
});
});
await serverHostBuilder.RunConsoleAsync();
}
```

## NuGet安装

| Package Name | Version | Downloads
|--------------| ------- | ----
| Install-Package JT809 | ![](https://img.shields.io/nuget/v/JT809.svg) | ![](https://img.shields.io/nuget/dt/JT809.svg)
| Install-Package JT809 | ![JT809](https://img.shields.io/nuget/v/JT809.svg) | ![JT809](https://img.shields.io/nuget/dt/JT809.svg)
| Install-Package JT809.Extensions.DependencyInjection | ![JT809.Ext](https://img.shields.io/nuget/v/JT809.Extensions.DependencyInjection.svg) | ![JT809.Ext](https://img.shields.io/nuget/dt/JT809.Extensions.DependencyInjection.svg)

## 使用BenchmarkDotNet性能测试报告(只是玩玩,不能当真)



+ 21
- 1
src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs Wyświetl plik

@@ -19,7 +19,27 @@ namespace JT809.Protocol.Extensions.DependencyInjection.Test
})
.ConfigureServices((hostContext, services) =>
{
services.AddJT809Configure(hostContext.Configuration.GetSection("JT809Options"));
// 方式1:
//services.AddJT809Configure(hostContext.Configuration.GetSection("JT809Options"));
// 方式2:
services.AddJT809Configure(new JT809Options
{
HeaderOptions=new JT809Configs.JT809HeaderOptions {
MsgGNSSCENTERID=20181012,
EncryptFlag= JT809Header_Encrypt.Common,
EncryptKey= 9999,
Version = new JT809Header_Version{
Major=2,
Minor=1,
Build= 2
}
},
EncryptOptions = new JT809Configs.JT809EncryptOptions {
M1= 10000000,
IA1=20000000,
IC1=30000000
}
});
});
await serverHostBuilder.RunConsoleAsync();
}


+ 9
- 19
src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json Wyświetl plik

@@ -1,29 +1,19 @@
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Trace"
}
},
"Console": {
"LogLevel": {
"Default": "Trace"
}
}
},
"JT809Options": {
"HeaderOptions": {
"MsgGNSSCENTERID": 20181012,
"EncryptFlag": "None",
"EncryptFlag": "Common",
"EncryptKey": 9999,
"Version": "1.0.0"
"Version": {
"Major": 2,
"Minor": 1,
"Build": 2
}
},
"EncryptOptions": {
"M1": 0,
"IA1": 0,
"IC1": 0,
"Key": 0
"M1": 10000000,
"IA1": 20000000,
"IC1": 30000000
}
}
}

+ 19
- 12
src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs Wyświetl plik

@@ -18,24 +18,31 @@ namespace JT809.Protocol.Extensions.DependencyInjection
services.Configure<JT809Options>(configuration);
ServiceProvider serviceProvider = services.BuildServiceProvider();
JT809Options options = serviceProvider.GetRequiredService<IOptions<JT809Options>>().Value;
var versions = options.Version.Split(new string []{ "." }, StringSplitOptions.RemoveEmptyEntries);
if (versions.Length == 3)
JT809GlobalConfig.Instance.SetHeaderOptions(options.HeaderOptions);
JT809GlobalConfig.Instance.SetSkipCRCCode(options.SkipCRCCode);
if (options.HeaderOptions.EncryptFlag == JT809Header_Encrypt.Common)
{
options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]), byte.Parse(versions[2]));
JT809GlobalConfig.Instance.SetEncryptOptions(options.EncryptOptions);
}
else if(versions.Length == 2)
try
{
options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]),0);
var msgSNDistributedImpl = services.BuildServiceProvider().GetRequiredService<IMsgSNDistributed>();
JT809GlobalConfig.Instance.SetMsgSNDistributed(msgSNDistributedImpl);
}
else if (versions.Length == 1)
catch
{
options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), 0, 0);
}
JT809GlobalConfig.Instance.SetHeaderOptions(options.HeaderOptions);
JT809GlobalConfig.Instance.SetSkipCRCCode(options.SkipCRCCode);
if (options.HeaderOptions.EncryptFlag == JT809Header_Encrypt.Common)
return services;
}

public static IServiceCollection AddJT809Configure(this IServiceCollection services, JT809Options jT809Options)
{
JT809GlobalConfig.Instance.SetHeaderOptions(jT809Options.HeaderOptions);
JT809GlobalConfig.Instance.SetSkipCRCCode(jT809Options.SkipCRCCode);
if (jT809Options.HeaderOptions.EncryptFlag == JT809Header_Encrypt.Common)
{
JT809GlobalConfig.Instance.SetEncrypt(new JT809EncryptImpl(options.EncryptOptions));
JT809GlobalConfig.Instance.SetEncryptOptions(jT809Options.EncryptOptions);
}
try
{
@@ -44,7 +51,7 @@ namespace JT809.Protocol.Extensions.DependencyInjection
}
catch
{
}
return services;
}


+ 18
- 2
src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj Wyświetl plik

@@ -1,15 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Copyright>Copyright 2018.</Copyright>
<Authors>SmallChi</Authors>
<PackageId>JT809.Extensions.DependencyInjection</PackageId>
<Product>JT809.Extensions.DependencyInjection</Product>
<Description>JT809协议依赖注入扩展包</Description>
<PackageReleaseNotes>JT809协议依赖注入扩展包</PackageReleaseNotes>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<RepositoryUrl>https://github.com/SmallChi/JT809</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/SmallChi/JT809/blob/master/LICENSE</PackageLicenseUrl>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>1.0.0</Version>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="JT809" Version="1.0.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\JT809.Protocol\JT809.Protocol.csproj" />
</ItemGroup>

</Project>

+ 0
- 5
src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs Wyświetl plik

@@ -10,11 +10,6 @@ namespace JT809.Protocol.Extensions.DependencyInjection.Options
public JT809EncryptOptions EncryptOptions { get; set; }
public JT809HeaderOptions HeaderOptions { get; set; }
/// <summary>
/// 版本号:
/// 默认 1.0.0
/// </summary>
public string Version { get; set; }
/// <summary>
/// 设置跳过校验码
/// 场景:测试的时候,可能需要收到改数据,所以测试的时候有用
/// </summary>


+ 13
- 1
src/JT809.Protocol.sln Wyświetl plik

@@ -7,7 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT809.Protocol", "JT809.Pro
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT809.Protocol.Test", "JT809.Protocol.Test\JT809.Protocol.Test.csproj", "{59D2D876-8D81-4CCE-839A-B153912C0C27}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT809.Protocol.Benchmark", "JT809.Protocol.Benchmark\JT809.Protocol.Benchmark.csproj", "{47CE50B3-A0D6-4F5F-907B-01BD7B8AB87F}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT809.Protocol.Benchmark", "JT809.Protocol.Benchmark\JT809.Protocol.Benchmark.csproj", "{47CE50B3-A0D6-4F5F-907B-01BD7B8AB87F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT809.Protocol.Extensions.DependencyInjection", "JT809.Protocol.Extensions.DependencyInjection\JT809.Protocol.Extensions.DependencyInjection.csproj", "{9C6AD175-2B56-46F6-8817-FA920720BEB2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT809.Protocol.Extensions.DependencyInjection.Test", "JT809.Protocol.Extensions.DependencyInjection.Test\JT809.Protocol.Extensions.DependencyInjection.Test.csproj", "{3A5D2CC3-4658-4C73-8C73-6E3B97740A66}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -27,6 +31,14 @@ Global
{47CE50B3-A0D6-4F5F-907B-01BD7B8AB87F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47CE50B3-A0D6-4F5F-907B-01BD7B8AB87F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47CE50B3-A0D6-4F5F-907B-01BD7B8AB87F}.Release|Any CPU.Build.0 = Release|Any CPU
{9C6AD175-2B56-46F6-8817-FA920720BEB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C6AD175-2B56-46F6-8817-FA920720BEB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C6AD175-2B56-46F6-8817-FA920720BEB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C6AD175-2B56-46F6-8817-FA920720BEB2}.Release|Any CPU.Build.0 = Release|Any CPU
{3A5D2CC3-4658-4C73-8C73-6E3B97740A66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A5D2CC3-4658-4C73-8C73-6E3B97740A66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A5D2CC3-4658-4C73-8C73-6E3B97740A66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A5D2CC3-4658-4C73-8C73-6E3B97740A66}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE


+ 1
- 1
src/JT809.Protocol/JT809.Protocol.csproj Wyświetl plik

@@ -14,7 +14,7 @@
<PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/SmallChi/JT809/blob/master/LICENSE</PackageLicenseUrl>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>1.0.5</Version>
<Version>1.0.6</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">


+ 3
- 3
src/JT809.Protocol/JT809Header_Version.cs Wyświetl plik

@@ -19,19 +19,19 @@ namespace JT809.Protocol
public byte Major
{
get { return Buffer[MajorIndex]; }
private set { Buffer[MajorIndex] = value; }
set { Buffer[MajorIndex] = value; }
}

public byte Minor
{
get { return Buffer[MinorIndex]; }
private set { Buffer[MinorIndex] = value; }
set { Buffer[MinorIndex] = value; }
}

public byte Build
{
get { return Buffer[BuildIndex]; }
private set { Buffer[BuildIndex] = value; }
set { Buffer[BuildIndex] = value; }
}

/// <summary>


Ładowanie…
Anuluj
Zapisz