diff --git a/README.md b/README.md index 40cabd9..114e2f8 100644 --- a/README.md +++ b/README.md @@ -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性能测试报告(只是玩玩,不能当真) diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs index 63b1994..a2176ca 100644 --- a/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs +++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs @@ -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(); } diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json index 726373d..34c6936 100644 --- a/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json +++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json @@ -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 } } } diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs index 458b219..fc6f5d3 100644 --- a/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs +++ b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs @@ -18,24 +18,31 @@ namespace JT809.Protocol.Extensions.DependencyInjection 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) + 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(); + 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; } diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj index cafd451..7653ccf 100644 --- a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj +++ b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj @@ -1,15 +1,31 @@ - + netstandard2.0 + latest + Copyright 2018. + SmallChi + JT809.Extensions.DependencyInjection + JT809.Extensions.DependencyInjection + JT809协议依赖注入扩展包 + JT809协议依赖注入扩展包 + false + https://github.com/SmallChi/JT809 + https://github.com/SmallChi/JT809 + https://github.com/SmallChi/JT809/blob/master/LICENSE + true + 1.0.0 - + + + + diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs index faff3dd..7a6adb3 100644 --- a/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs +++ b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs @@ -10,11 +10,6 @@ namespace JT809.Protocol.Extensions.DependencyInjection.Options public JT809EncryptOptions EncryptOptions { get; set; } public JT809HeaderOptions HeaderOptions { get; set; } /// - /// 版本号: - /// 默认 1.0.0 - /// - public string Version { get; set; } - /// /// 设置跳过校验码 /// 场景:测试的时候,可能需要收到改数据,所以测试的时候有用 /// diff --git a/src/JT809.Protocol.sln b/src/JT809.Protocol.sln index 34f4c48..5648e9a 100644 --- a/src/JT809.Protocol.sln +++ b/src/JT809.Protocol.sln @@ -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 diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj index 7dbb61b..9aed2ce 100644 --- a/src/JT809.Protocol/JT809.Protocol.csproj +++ b/src/JT809.Protocol/JT809.Protocol.csproj @@ -14,7 +14,7 @@ https://github.com/SmallChi/JT809 https://github.com/SmallChi/JT809/blob/master/LICENSE true - 1.0.5 + 1.0.6 diff --git a/src/JT809.Protocol/JT809Header_Version.cs b/src/JT809.Protocol/JT809Header_Version.cs index 3198ca5..b9070aa 100644 --- a/src/JT809.Protocol/JT809Header_Version.cs +++ b/src/JT809.Protocol/JT809Header_Version.cs @@ -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; } } ///