Application settings change

This commit is contained in:
luosheng
2023-03-01 10:08:14 +08:00
parent 0fbdd36017
commit 71cd5edee4
29 changed files with 239 additions and 45 deletions

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
@@ -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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
@@ -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")));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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
/// <param name="port">端口</param>
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<int> { 4, 5 }, 6)));
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List<int> { 4, 5 }, 6)));
}
/// <summary>

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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
/// <param name="port">端口</param>
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<int> { 4, 5 }, 6)));
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, DuplicateWithCount.GetDuplcateFunc(new List<int> { 4, 5 }, 6)));
}
/// <summary>

View File

@@ -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
/// </summary>
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
/// <param name="slaveAddress">从站号</param>
/// <param name="masterAddress">主站号</param>
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)
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
@@ -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));
}
/// <summary>

View File

@@ -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();
/// <summary>
/// 构造函数
/// </summary>
@@ -31,7 +39,7 @@ namespace Modbus.Net.Siemens
/// <param name="maxPdu"></param>
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"))
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="ip">IP地址</param>
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"))
{
}

View File

@@ -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
/// </summary>
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();
/// <summary>
/// 构造器
/// </summary>
@@ -17,7 +25,7 @@ namespace Modbus.Net
/// <param name="dataBits">数据位</param>
/// <param name="slaveAddress">从站地址</param>
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)
{
}

View File

@@ -1,5 +1,6 @@
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
namespace Modbus.Net
{
@@ -8,11 +9,17 @@ namespace Modbus.Net
/// </summary>
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();
/// <summary>
/// 构造器
/// </summary>
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
/// <param name="port">端口</param>
/// <param name="isFullDuplex">是否为全双工</param>
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)
{
}

View File

@@ -1,5 +1,6 @@
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
namespace Modbus.Net
{
@@ -8,11 +9,17 @@ namespace Modbus.Net
/// </summary>
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();
/// <summary>
/// 构造器
/// </summary>
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
/// <param name="port">端口</param>
/// <param name="isFullDuplex">是否为全双工</param>
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)
{
}

View File

@@ -1,5 +1,5 @@
{
"Config": {
"Modbus.Net": {
"COM": "COM1",
"IP": "192.168.1.1",
"ComConnectionTimeout": "3000",

View File

@@ -6,7 +6,7 @@
}
},
"AllowedHosts": "*",
"Config": {
"Modbus.Net": {
"ModbusPort": "502"
}
}

View File

@@ -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<DatabaseWriteEntity> DatabaseWrites { get; set; }

View File

@@ -44,8 +44,8 @@ namespace MachineJob.Service
new AddressUnit() { Area = "DB1", Address = 18, DataType = typeof(short), Id = "10", Name = "Test10" }
};
IMachine<string> machine = new ModbusMachine<string, string>("ModbusMachine1", ModbusType.Tcp, "192.168.0.161", _addresses, true, 1, 2, Endian.BigEndianLsb);
IMachine<string> machine2 = new SiemensMachine<string, string>("SiemensMachine1", SiemensType.Tcp, "192.168.0.161", SiemensMachineModel.S7_1200, _addresses2, true, 1, 2);
IMachine<string> machine = new ModbusMachine<string, string>("ModbusMachine1", ModbusType.Tcp, null, _addresses, true, 1, 2, Endian.BigEndianLsb);
IMachine<string> machine2 = new SiemensMachine<string, string>("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);

View File

@@ -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"
}
}

View File

@@ -99,7 +99,8 @@ ModbusMachine<int, string> machine3 = new ModbusMachine<int, string>(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<string, double>() {{
"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<string, double>() {{
"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<string, double>() {{
"4X 1.0", r.Next() % 65536
},