diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocol.cs index 658c868..fe3ecbb 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiInTcpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusAsciiInTcpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocolLinker.cs index 1560508..60f6956 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInTcpProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; using System.Text; namespace Modbus.Net.Modbus @@ -8,12 +10,18 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiInTcpProtocolLinker : TcpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusAsciiInTcpProtocolLinker(string ip) - : base(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502"), false) + : base(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502"), false) { } @@ -25,7 +33,7 @@ namespace Modbus.Net.Modbus public ModbusAsciiInTcpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "100"))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "100"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocol.cs index 6b3e343..6c17258 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiInUdpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusAsciiInUdpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocolLinker.cs index 9cc11c6..fa79aeb 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiInUdpProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; using System.Text; namespace Modbus.Net.Modbus @@ -8,12 +10,18 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiInUdpProtocolLinker : UdpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusAsciiInUdpProtocolLinker(string ip) - : base(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502"), false) + : base(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502"), false) { } @@ -25,7 +33,7 @@ namespace Modbus.Net.Modbus public ModbusAsciiInUdpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocol.cs index f207ad9..04b0d3d 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusAsciiProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["COM"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["COM"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocolLinker.cs index fc78c9c..8c80f7c 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocolLinker.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; +using System; using System.Collections.Generic; +using System.IO; using System.IO.Ports; using System.Text; @@ -10,6 +12,12 @@ namespace Modbus.Net.Modbus /// public class ModbusAsciiProtocolLinker : ComProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// @@ -18,7 +26,7 @@ namespace Modbus.Net.Modbus public ModbusAsciiProtocolLinker(string com, int slaveAddress) : base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress) { - ((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (1, 1), (2, 2) }, new List<(int, int)> { (3, 3), (4, 4) } }, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (1, 1), (2, 2) }, new List<(int, int)> { (3, 3), (4, 4) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocol.cs index 22caa9d..29793f7 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuInTcpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusRtuInTcpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocolLinker.cs index 8f32f65..605db87 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInTcpProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,12 +9,18 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuInTcpProtocolLinker : TcpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusRtuInTcpProtocolLinker(string ip) - : base(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502"), false) + : base(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502"), false) { } @@ -24,7 +32,7 @@ namespace Modbus.Net.Modbus public ModbusRtuInTcpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocol.cs index fb19427..de076e9 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuInUdpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusRtuInUdpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocolLinker.cs index d809d7e..f1a26f0 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuInUdpProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,12 +9,18 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuInUdpProtocolLinker : UdpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusRtuInUdpProtocolLinker(string ip) - : base(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502"), false) + : base(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502"), false) { } @@ -24,7 +32,7 @@ namespace Modbus.Net.Modbus public ModbusRtuInUdpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocol.cs index c70a46d..9a0221c 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusRtuProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["COM"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["COM"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocolLinker.cs index d0e8499..9e66d7b 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocolLinker.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; +using System; using System.Collections.Generic; +using System.IO; using System.IO.Ports; namespace Modbus.Net.Modbus @@ -9,6 +11,12 @@ namespace Modbus.Net.Modbus /// public class ModbusRtuProtocolLinker : ComProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// @@ -17,7 +25,7 @@ namespace Modbus.Net.Modbus public ModbusRtuProtocolLinker(string com, int slaveAddress) : base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress) { - ((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (0, 0) }, new List<(int, int)> { (1, 1) } }, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (0, 0) }, new List<(int, int)> { (1, 1) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocol.cs index 283f823..9dce3ff 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusTcpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusTcpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocolLinker.cs index 35bfa9c..47a9cff 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocolLinker.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; +using System; using System.Collections.Generic; +using System.IO; namespace Modbus.Net.Modbus { @@ -8,12 +10,18 @@ namespace Modbus.Net.Modbus /// public class ModbusTcpProtocolLinker : TcpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusTcpProtocolLinker(string ip) - : this(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502")) + : this(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502")) { } @@ -24,7 +32,7 @@ namespace Modbus.Net.Modbus /// 端口 public ModbusTcpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List { 4, 5 }, 6))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List { 4, 5 }, 6))); } /// diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocol.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocol.cs index 17b9c3a..9b73606 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocol.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; namespace Modbus.Net.Modbus { @@ -7,13 +9,19 @@ namespace Modbus.Net.Modbus /// public class ModbusUdpProtocol : ModbusProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// 从站号 /// 主站号 public ModbusUdpProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["IP"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocolLinker.cs index 5bddb7c..4169375 100644 --- a/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Modbus/ModbusUdpProtocolLinker.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; +using System; using System.Collections.Generic; +using System.IO; namespace Modbus.Net.Modbus { @@ -8,12 +10,18 @@ namespace Modbus.Net.Modbus /// public class ModbusUdpProtocolLinker : UdpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public ModbusUdpProtocolLinker(string ip) - : this(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ModbusPort"] ?? "502")) + : this(ip, int.Parse(configuration.GetSection("Modbus.Net")["ModbusPort"] ?? "502")) { } @@ -24,7 +32,7 @@ namespace Modbus.Net.Modbus /// 端口 public ModbusUdpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List { 4, 5 }, 6))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List { 4, 5 }, 6))); } /// diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocol.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocol.cs index 62edeab..0b57273 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocol.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocol.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; using Nito.AsyncEx; +using System; +using System.IO; using System.Threading.Tasks; namespace Modbus.Net.Siemens @@ -9,6 +11,12 @@ namespace Modbus.Net.Siemens /// public class SiemensPpiProtocol : SiemensProtocol { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + private readonly string _com; private readonly AsyncLock _lock = new AsyncLock(); @@ -18,7 +26,7 @@ namespace Modbus.Net.Siemens /// 从站号 /// 主站号 public SiemensPpiProtocol(byte slaveAddress, byte masterAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["COM"], slaveAddress, masterAddress) + : this(configuration.GetSection("Modbus.Net")["COM"], slaveAddress, masterAddress) { } diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs index f111acd..073922a 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; using System.IO.Ports; using System.Threading; using System.Threading.Tasks; @@ -11,6 +13,12 @@ namespace Modbus.Net.Siemens /// public class SiemensPpiProtocolLinker : ComProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// @@ -19,7 +27,7 @@ namespace Modbus.Net.Siemens public SiemensPpiProtocolLinker(string com, int slaveAddress) : base(com, 9600, Parity.Even, StopBits.One, 8, slaveAddress) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"), true, null, 100)); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, null, 100)); } /// diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocol.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocol.cs index 3993f16..a9be024 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocol.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocol.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Configuration; using Nito.AsyncEx; +using System; +using System.IO; using System.Threading.Tasks; namespace Modbus.Net.Siemens @@ -20,6 +22,12 @@ namespace Modbus.Net.Siemens private int _connectTryCount; private readonly AsyncLock _lock = new AsyncLock(); + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// @@ -31,7 +39,7 @@ namespace Modbus.Net.Siemens /// public SiemensTcpProtocol(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled, ushort maxPdu) - : this(tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"]) + : this(tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, configuration.GetSection("Modbus.Net")["IP"]) { } @@ -49,7 +57,7 @@ namespace Modbus.Net.Siemens ushort maxPdu, string ip) : this( tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, ip, - int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["SiemensPort"] ?? "102")) + int.Parse(configuration.GetSection("Modbus.Net")["SiemensPort"] ?? "102")) { } diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs index c576005..e2d78cf 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; +using System.IO; namespace Modbus.Net.Siemens { @@ -9,12 +10,18 @@ namespace Modbus.Net.Siemens /// public class SiemensTcpProtocolLinker : TcpProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造函数 /// /// IP地址 public SiemensTcpProtocolLinker(string ip) - : this(ip, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["SiemensPort"] ?? "102")) + : this(ip, int.Parse(configuration.GetSection("Modbus.Net")["SiemensPort"] ?? "102")) { } diff --git a/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs b/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs index af7683d..29c6797 100644 --- a/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.Configuration; +using System; +using System.IO; using System.IO.Ports; namespace Modbus.Net @@ -8,6 +10,12 @@ namespace Modbus.Net /// public abstract class ComProtocolLinker : ProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造器 /// @@ -17,7 +25,7 @@ namespace Modbus.Net /// 数据位 /// 从站地址 protected ComProtocolLinker(int baudRate, Parity parity, StopBits stopBits, int dataBits, int slaveAddress) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["COM"], baudRate, parity, stopBits, dataBits, slaveAddress) + : this(configuration.GetSection("Modbus.Net")["COM"], baudRate, parity, stopBits, dataBits, slaveAddress) { } @@ -35,7 +43,7 @@ namespace Modbus.Net int slaveAddress, bool isFullDuplex = false) : this( com, baudRate, parity, stopBits, dataBits, - int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["ComConnectionTimeout"] ?? "-1"), slaveAddress, isFullDuplex) + int.Parse(configuration.GetSection("Modbus.Net")["ComConnectionTimeout"] ?? "-1"), slaveAddress, isFullDuplex) { } diff --git a/Modbus.Net/Modbus.Net/Linker/TcpProtocolLinker.cs b/Modbus.Net/Modbus.Net/Linker/TcpProtocolLinker.cs index 397f4e9..e070dbd 100644 --- a/Modbus.Net/Modbus.Net/Linker/TcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net/Linker/TcpProtocolLinker.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Configuration; - +using System; +using System.IO; namespace Modbus.Net { @@ -8,11 +9,17 @@ namespace Modbus.Net /// public abstract class TcpProtocolLinker : ProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造器 /// protected TcpProtocolLinker(int port) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], port) + : this(configuration.GetSection("Modbus.Net")["IP"], port) { } @@ -23,7 +30,7 @@ namespace Modbus.Net /// 端口 /// 是否为全双工 protected TcpProtocolLinker(string ip, int port, bool isFullDuplex = true) - : this(ip, port, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IPConnectionTimeout"] ?? "-1"), isFullDuplex) + : this(ip, port, int.Parse(configuration.GetSection("Modbus.Net")["IPConnectionTimeout"] ?? "-1"), isFullDuplex) { } diff --git a/Modbus.Net/Modbus.Net/Linker/UdpProtocolLinker.cs b/Modbus.Net/Modbus.Net/Linker/UdpProtocolLinker.cs index 6b11779..75dd8d7 100644 --- a/Modbus.Net/Modbus.Net/Linker/UdpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net/Linker/UdpProtocolLinker.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Configuration; - +using System; +using System.IO; namespace Modbus.Net { @@ -8,11 +9,17 @@ namespace Modbus.Net /// public abstract class UdpProtocolLinker : ProtocolLinker { + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + /// /// 构造器 /// protected UdpProtocolLinker(int port) - : this(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IP"], port) + : this(configuration.GetSection("Modbus.Net")["IP"], port) { } @@ -23,7 +30,7 @@ namespace Modbus.Net /// 端口 /// 是否为全双工 protected UdpProtocolLinker(string ip, int port, bool isFullDuplex = true) - : this(ip, port, int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["IPConnectionTimeout"] ?? "-1"), isFullDuplex) + : this(ip, port, int.Parse(configuration.GetSection("Modbus.Net")["IPConnectionTimeout"] ?? "-1"), isFullDuplex) { } diff --git a/Modbus.Net/Modbus.Net/appsettings.json b/Modbus.Net/Modbus.Net/appsettings.json index a836018..0ad9944 100644 --- a/Modbus.Net/Modbus.Net/appsettings.json +++ b/Modbus.Net/Modbus.Net/appsettings.json @@ -1,5 +1,5 @@ { - "Config": { + "Modbus.Net": { "COM": "COM1", "IP": "192.168.1.1", "ComConnectionTimeout": "3000", diff --git a/Samples/AnyType/appsettings.json b/Samples/AnyType/appsettings.json index 8502ba8..ae6e3a7 100644 --- a/Samples/AnyType/appsettings.json +++ b/Samples/AnyType/appsettings.json @@ -6,7 +6,7 @@ } }, "AllowedHosts": "*", - "Config": { + "Modbus.Net": { "ModbusPort": "502" } } diff --git a/Samples/MachineJob/DatabaseWrite.cs b/Samples/MachineJob/DatabaseWrite.cs index 28c5025..821467d 100644 --- a/Samples/MachineJob/DatabaseWrite.cs +++ b/Samples/MachineJob/DatabaseWrite.cs @@ -6,7 +6,13 @@ namespace MachineJob { public class DatabaseWriteContext : DbContext { - static readonly string connectionString = new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetConnectionString("DatabaseWriteConnectionString")!; + private static readonly IConfigurationRoot configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true) + .Build(); + + private static readonly string connectionString = configuration.GetConnectionString("DatabaseWriteConnectionString")!; public DbSet DatabaseWrites { get; set; } diff --git a/Samples/MachineJob/Worker.cs b/Samples/MachineJob/Worker.cs index 053aab0..6dce341 100644 --- a/Samples/MachineJob/Worker.cs +++ b/Samples/MachineJob/Worker.cs @@ -44,8 +44,8 @@ namespace MachineJob.Service new AddressUnit() { Area = "DB1", Address = 18, DataType = typeof(short), Id = "10", Name = "Test10" } }; - IMachine machine = new ModbusMachine("ModbusMachine1", ModbusType.Tcp, "192.168.0.161", _addresses, true, 1, 2, Endian.BigEndianLsb); - IMachine machine2 = new SiemensMachine("SiemensMachine1", SiemensType.Tcp, "192.168.0.161", SiemensMachineModel.S7_1200, _addresses2, true, 1, 2); + IMachine machine = new ModbusMachine("ModbusMachine1", ModbusType.Tcp, null, _addresses, true, 1, 2, Endian.BigEndianLsb); + IMachine machine2 = new SiemensMachine("SiemensMachine1", SiemensType.Tcp, null, SiemensMachineModel.S7_1200, _addresses2, true, 1, 2); await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.From(machine.Id, machine, MachineDataType.Name).Result.Query(machine.Id + ".ConsoleQuery", QueryConsole).Result.To(machine.Id + ".To", machine).Result.Deal(machine.Id + ".Deal", OnSuccess, OnFailure).Result.Run(); Thread.Sleep(5000); diff --git a/Samples/MachineJob/appsettings.json b/Samples/MachineJob/appsettings.json index 0f91a9c..64cc3ff 100644 --- a/Samples/MachineJob/appsettings.json +++ b/Samples/MachineJob/appsettings.json @@ -11,7 +11,11 @@ "ConnectionStrings": { "DatabaseWriteConnectionString": "Server=localhost; User ID=root; Password=123456; Database=modbusnettest;" }, - "Config": { - "FetchSleepTime": "100" + "Modbus.Net": { + "FetchSleepTime": "100", + "IP": "192.168.8.210", + "IPConnectionTimeout": "5000", + "ModbusPort": "502", + "SiemensPort": "102" } } diff --git a/Tests/Modbus.Net.PersistedTests/Program.cs b/Tests/Modbus.Net.PersistedTests/Program.cs index 5265e2b..30d2c6e 100644 --- a/Tests/Modbus.Net.PersistedTests/Program.cs +++ b/Tests/Modbus.Net.PersistedTests/Program.cs @@ -99,7 +99,8 @@ ModbusMachine machine3 = new ModbusMachine(3, ModbusTy }, }, true, 4, 1); Random r = new Random(); -await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Apply(machine.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine.Id + ".Query", returnDef => { +await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Apply(machine.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine.Id + ".Query", returnDef => +{ return new Dictionary() {{ "4X 1.0", r.Next() % 65536 }, @@ -111,7 +112,8 @@ await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 10).Result.Appl } }; }).Result.To(machine.Id + ".To", machine).Result.Deal().Result.Run(); -await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 10).Result.Apply(machine2.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine2.Id + ".Query", returnDef => { +await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 10).Result.Apply(machine2.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine2.Id + ".Query", returnDef => +{ return new Dictionary() {{ "4X 1.0", r.Next() % 65536 }, @@ -123,7 +125,8 @@ await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 10).Result.Appl } }; }).Result.To(machine2.Id + ".To", machine2).Result.Deal().Result.Run(); -await MachineJobSchedulerCreator.CreateScheduler("Trigger3", -1, 10).Result.Apply(machine3.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine3.Id + ".Query", returnDef => { +await MachineJobSchedulerCreator.CreateScheduler("Trigger3", -1, 10).Result.Apply(machine3.Id + ".Apply", null, MachineDataType.Address).Result.Query(machine3.Id + ".Query", returnDef => +{ return new Dictionary() {{ "4X 1.0", r.Next() % 65536 },