From 7b205a9e11717280ae9ff55ef363af62d493a518 Mon Sep 17 00:00:00 2001 From: SmallChi <564952747@qq.com> Date: Sun, 14 Oct 2018 10:14:29 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=A4=B4=E9=83=A8=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E4=B8=BA=E5=85=AC=E5=BC=80=E5=8F=AF=E5=86=99?= =?UTF-8?q?=202.=E5=A2=9E=E5=8A=A0DI=E6=B3=A8=E5=85=A5=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Extensions.DependencyInjection.Test.csproj | 27 ++++++++++ .../Program.cs | 27 ++++++++++ .../appsettings.json | 29 +++++++++++ .../DependencyInjectionExtensions.cs | 52 +++++++++++++++++++ ...ocol.Extensions.DependencyInjection.csproj | 15 ++++++ .../Options/JT809Options.cs | 23 ++++++++ 6 files changed, 173 insertions(+) create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj b/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj new file mode 100644 index 0000000..87d789f --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj @@ -0,0 +1,27 @@ + + + + Exe + netcoreapp2.1 + 7.3 + + + + + + + + + + + + + + + + + Always + + + + diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs new file mode 100644 index 0000000..63b1994 --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs @@ -0,0 +1,27 @@ +using JT809.Protocol.Extensions.DependencyInjection.Options; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using System; +using System.Threading.Tasks; + +namespace JT809.Protocol.Extensions.DependencyInjection.Test +{ + class Program + { + 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) => + { + services.AddJT809Configure(hostContext.Configuration.GetSection("JT809Options")); + }); + await serverHostBuilder.RunConsoleAsync(); + } + } +} diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json new file mode 100644 index 0000000..726373d --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json @@ -0,0 +1,29 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Trace" + } + }, + "Console": { + "LogLevel": { + "Default": "Trace" + } + } + }, + "JT809Options": { + "HeaderOptions": { + "MsgGNSSCENTERID": 20181012, + "EncryptFlag": "None", + "EncryptKey": 9999, + "Version": "1.0.0" + }, + "EncryptOptions": { + "M1": 0, + "IA1": 0, + "IC1": 0, + "Key": 0 + } + } +} diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs new file mode 100644 index 0000000..458b219 --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs @@ -0,0 +1,52 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using System; +using System.Collections.Generic; +using System.Text; +using JT809.Protocol.JT809Configs; +using Microsoft.Extensions.Configuration; +using JT809.Protocol.JT809Encrypt; +using JT809.Protocol.Extensions.DependencyInjection.Options; +using Microsoft.Extensions.Options; + +namespace JT809.Protocol.Extensions.DependencyInjection +{ + public static class DependencyInjectionExtensions + { + public static IServiceCollection AddJT809Configure(this IServiceCollection services, IConfiguration configuration) + { + services.Configure(configuration); + ServiceProvider serviceProvider = services.BuildServiceProvider(); + JT809Options options = serviceProvider.GetRequiredService>().Value; + var versions = options.Version.Split(new string []{ "." }, StringSplitOptions.RemoveEmptyEntries); + if (versions.Length == 3) + { + options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]), byte.Parse(versions[2])); + } + else if(versions.Length == 2) + { + options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]),0); + } + else if (versions.Length == 1) + { + 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) + { + JT809GlobalConfig.Instance.SetEncrypt(new JT809EncryptImpl(options.EncryptOptions)); + } + try + { + var msgSNDistributedImpl = services.BuildServiceProvider().GetRequiredService(); + JT809GlobalConfig.Instance.SetMsgSNDistributed(msgSNDistributedImpl); + } + catch + { + + } + return services; + } + } +} diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj new file mode 100644 index 0000000..cafd451 --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.0 + + + + + + + + + + + diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs new file mode 100644 index 0000000..faff3dd --- /dev/null +++ b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs @@ -0,0 +1,23 @@ +using JT809.Protocol.JT809Configs; +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT809.Protocol.Extensions.DependencyInjection.Options +{ + public class JT809Options + { + public JT809EncryptOptions EncryptOptions { get; set; } + public JT809HeaderOptions HeaderOptions { get; set; } + /// + /// 版本号: + /// 默认 1.0.0 + /// + public string Version { get; set; } + /// + /// 设置跳过校验码 + /// 场景:测试的时候,可能需要收到改数据,所以测试的时候有用 + /// + public bool SkipCRCCode { get; set; } + } +}