diff --git a/Modbus.Net/Modbus.Net.Core/App.config b/Modbus.Net/Modbus.Net.Core/App.config
new file mode 100644
index 0000000..e85257a
--- /dev/null
+++ b/Modbus.Net/Modbus.Net.Core/App.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs b/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs
new file mode 100644
index 0000000..55e5301
--- /dev/null
+++ b/Modbus.Net/Modbus.Net.Core/ConfigurationManager.cs
@@ -0,0 +1,18 @@
+using System.Collections.Generic;
+using System.IO;
+using Microsoft.Extensions.Configuration;
+
+namespace Modbus.Net
+{
+ public static class ConfigurationManager
+ {
+ private static IConfigurationBuilder builder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("appsettings.json")
+ .AddXmlFile("App.config");
+
+ private static IConfigurationRoot Configuration => builder.Build();
+
+ public static IConfigurationSection AppSettings => Configuration.GetSection("AppSettings");
+ }
+}
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj b/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj
index 911a4ef..3e7c4ae 100644
--- a/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj
+++ b/Modbus.Net/Modbus.Net.Core/Modbus.Net.Core.csproj
@@ -51,23 +51,11 @@
+
+
+
-
-
- True
- True
- ConfigurationManager.resx
-
-
-
-
-
- ResXFileCodeGenerator
- ConfigurationManager.Designer.cs
-
-
-
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj b/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj
index 76b0b4f..d0c29f2 100644
--- a/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj
+++ b/Modbus.Net/Modbus.Net.Modbus/Modbus.Net.Modbus.csproj
@@ -27,4 +27,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs
index 0928bdf..f75400c 100644
--- a/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Modbus/ModbusAsciiProtocal.cs
@@ -1,4 +1,6 @@
-namespace Modbus.Net.Modbus
+using System.Configuration;
+
+namespace Modbus.Net.Modbus
{
///
/// Modbus/Ascii码协议
@@ -6,7 +8,7 @@
public class ModbusAsciiProtocal : ModbusProtocal
{
public ModbusAsciiProtocal(byte slaveAddress, byte masterAddress, Endian endian)
- : this(ConfigurationManager.COM, slaveAddress, masterAddress, endian)
+ : this(ConfigurationManager.AppSettings["COM"], slaveAddress, masterAddress, endian)
{
}
diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs
index 9fbe229..53fab41 100644
--- a/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Modbus/ModbusRtuProtocal.cs
@@ -1,4 +1,6 @@
-namespace Modbus.Net.Modbus
+using System.Configuration;
+
+namespace Modbus.Net.Modbus
{
///
/// Modbus/Rtu协议
@@ -6,7 +8,7 @@
public class ModbusRtuProtocal : ModbusProtocal
{
public ModbusRtuProtocal(byte slaveAddress, byte masterAddress, Endian endian)
- : this(ConfigurationManager.COM, slaveAddress, masterAddress, endian)
+ : this(ConfigurationManager.AppSettings["COM"], slaveAddress, masterAddress, endian)
{
}
diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs
index ff8631c..d403e21 100644
--- a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocal.cs
@@ -1,4 +1,6 @@
-namespace Modbus.Net.Modbus
+using System.Configuration;
+
+namespace Modbus.Net.Modbus
{
///
/// Modbus/Tcp协议
@@ -6,7 +8,7 @@
public class ModbusTcpProtocal : ModbusProtocal
{
public ModbusTcpProtocal(byte slaveAddress, byte masterAddress, Endian endian)
- : this(ConfigurationManager.IP, slaveAddress, masterAddress, endian)
+ : this(ConfigurationManager.AppSettings["IP"], slaveAddress, masterAddress, endian)
{
}
diff --git a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs
index 229bd68..f49667c 100644
--- a/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs
+++ b/Modbus.Net/Modbus.Net.Modbus/ModbusTcpProtocalLinker.cs
@@ -1,11 +1,13 @@
-namespace Modbus.Net.Modbus
+using System.Configuration;
+
+namespace Modbus.Net.Modbus
{
///
/// Modbus/Tcp协议连接器
///
public class ModbusTcpProtocalLinker : TcpProtocalLinker
{
- public ModbusTcpProtocalLinker(string ip) : base(ip, int.Parse(ConfigurationManager.ModbusPort))
+ public ModbusTcpProtocalLinker(string ip) : base(ip, int.Parse(ConfigurationManager.AppSettings["ModbusPort"]))
{
}
diff --git a/Modbus.Net/Modbus.Net.OPC/FBox/FBoxOpcDaManchine.cs b/Modbus.Net/Modbus.Net.OPC/FBox/FBoxOpcDaManchine.cs
index 802097b..991f80c 100644
--- a/Modbus.Net/Modbus.Net.OPC/FBox/FBoxOpcDaManchine.cs
+++ b/Modbus.Net/Modbus.Net.OPC/FBox/FBoxOpcDaManchine.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -13,7 +14,7 @@ namespace Modbus.Net.OPC.FBox
public string LinkerName { get; set; }
public FBoxOpcDaMachine(string localSequence, string linkerName,
- IEnumerable getAddresses, bool keepConnect) : base(ConfigurationManager.FBoxOpcDaHost, getAddresses, keepConnect)
+ IEnumerable getAddresses, bool keepConnect) : base(ConfigurationManager.AppSettings["FBoxOpcDaHost"], getAddresses, keepConnect)
{
LocalSequence = localSequence;
LinkerName = linkerName;
diff --git a/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj b/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj
index e208dc5..3f38142 100644
--- a/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj
+++ b/Modbus.Net/Modbus.Net.OPC/Modbus.Net.OPC.csproj
@@ -24,11 +24,17 @@
-
+
+
+
+ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Configuration.dll
+
+
+
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.OPC/OpcDaProtocalLinker.cs b/Modbus.Net/Modbus.Net.OPC/OpcDaProtocalLinker.cs
index 2307645..f65da98 100644
--- a/Modbus.Net/Modbus.Net.OPC/OpcDaProtocalLinker.cs
+++ b/Modbus.Net/Modbus.Net.OPC/OpcDaProtocalLinker.cs
@@ -1,4 +1,5 @@
-using System.Text;
+using System.Configuration;
+using System.Text;
namespace Modbus.Net.OPC
{
@@ -7,7 +8,7 @@ namespace Modbus.Net.OPC
///
public class OpcDaProtocalLinker : OpcProtocalLinker
{
- public OpcDaProtocalLinker() : this(ConfigurationManager.OpcDaHost)
+ public OpcDaProtocalLinker() : this(ConfigurationManager.AppSettings["OpcDaHost"])
{
}
diff --git a/Modbus.Net/Modbus.Net.OPC/OpcUaProtocalLinker.cs b/Modbus.Net/Modbus.Net.OPC/OpcUaProtocalLinker.cs
index dd090e5..8048b97 100644
--- a/Modbus.Net/Modbus.Net.OPC/OpcUaProtocalLinker.cs
+++ b/Modbus.Net/Modbus.Net.OPC/OpcUaProtocalLinker.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -11,7 +12,7 @@ namespace Modbus.Net.OPC
///
public class OpcUaProtocalLinker : OpcProtocalLinker
{
- public OpcUaProtocalLinker() : this(ConfigurationManager.OpcUaHost)
+ public OpcUaProtocalLinker() : this(ConfigurationManager.AppSettings["OpcUaHost"])
{
}
diff --git a/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj b/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj
index 197f12f..3c27504 100644
--- a/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj
+++ b/Modbus.Net/Modbus.Net.Siemens/Modbus.Net.Siemens.csproj
@@ -25,5 +25,11 @@
+
+
+
+ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Configuration.dll
+
+
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs
index 1b71c31..1585154 100644
--- a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocal.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Configuration;
+using System.Threading.Tasks;
namespace Modbus.Net.Siemens
{
@@ -10,7 +11,7 @@ namespace Modbus.Net.Siemens
private readonly string _com;
public SiemensPpiProtocal(byte slaveAddress, byte masterAddress)
- : this(ConfigurationManager.COM, slaveAddress, masterAddress)
+ : this(ConfigurationManager.AppSettings["COM"], slaveAddress, masterAddress)
{
}
diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs
index f49751e..cc44acd 100644
--- a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs
+++ b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocal.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Configuration;
+using System.Threading.Tasks;
namespace Modbus.Net.Siemens
{
@@ -18,7 +19,7 @@ namespace Modbus.Net.Siemens
private int _connectTryCount;
public SiemensTcpProtocal(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled,
- ushort maxPdu) : this(tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, ConfigurationManager.IP)
+ ushort maxPdu) : this(tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, ConfigurationManager.AppSettings["IP"])
{
}
diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs
index 88c65b0..23f4b62 100644
--- a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs
+++ b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocalLinker.cs
@@ -1,4 +1,5 @@
using System;
+using System.Configuration;
namespace Modbus.Net.Siemens
{
@@ -8,7 +9,7 @@ namespace Modbus.Net.Siemens
public class SiemensTcpProtocalLinker : TcpProtocalLinker
{
public SiemensTcpProtocalLinker(string ip)
- : base(ip, int.Parse(ConfigurationManager.SiemensPort))
+ : base(ip, int.Parse(ConfigurationManager.AppSettings["SiemensPort"]))
{
}
diff --git a/Modbus.Net/Modbus.Net/App.config b/Modbus.Net/Modbus.Net/App.config
new file mode 100644
index 0000000..46b488f
--- /dev/null
+++ b/Modbus.Net/Modbus.Net/App.config
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net/ComProtocalLinker.cs b/Modbus.Net/Modbus.Net/ComProtocalLinker.cs
index 8ddcfc6..95e61a5 100644
--- a/Modbus.Net/Modbus.Net/ComProtocalLinker.cs
+++ b/Modbus.Net/Modbus.Net/ComProtocalLinker.cs
@@ -1,4 +1,5 @@
-using System.IO.Ports;
+using System.Configuration;
+using System.IO.Ports;
namespace Modbus.Net
{
@@ -15,7 +16,7 @@ namespace Modbus.Net
/// 停止位
/// 数据位
protected ComProtocalLinker(int baudRate, Parity parity, StopBits stopBits, int dataBits)
- : this(ConfigurationManager.COM, baudRate, parity, stopBits, dataBits)
+ : this(ConfigurationManager.AppSettings["COM"], baudRate, parity, stopBits, dataBits)
{
}
@@ -30,7 +31,7 @@ namespace Modbus.Net
protected ComProtocalLinker(string com, int baudRate, Parity parity, StopBits stopBits, int dataBits)
{
//初始化连对象
- BaseConnector = new ComConnector(com, baudRate, parity, stopBits, dataBits, 30000);
+ BaseConnector = new ComConnector(com, baudRate, parity, stopBits, dataBits, int.Parse(ConfigurationManager.AppSettings["ComConnectionTimeout"]));
}
}
}
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net/Modbus.Net.csproj b/Modbus.Net/Modbus.Net/Modbus.Net.csproj
index 5487e41..2d503be 100644
--- a/Modbus.Net/Modbus.Net/Modbus.Net.csproj
+++ b/Modbus.Net/Modbus.Net/Modbus.Net.csproj
@@ -50,18 +50,9 @@
-
- True
- True
- ConfigurationManager.resx
-
-
-
-
-
- ResXFileCodeGenerator
- ConfigurationManager.Designer.cs
-
+
+ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Configuration.dll
+
\ No newline at end of file
diff --git a/Modbus.Net/src/Base.Common/ConfigurationManager.Designer.cs b/Modbus.Net/src/Base.Common/ConfigurationManager.Designer.cs
deleted file mode 100644
index f261ccf..0000000
--- a/Modbus.Net/src/Base.Common/ConfigurationManager.Designer.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
-//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
-//
-//------------------------------------------------------------------------------
-
-using System.Reflection;
-
-namespace Modbus.Net {
- using System;
-
-
- ///
- /// 一个强类型的资源类,用于查找本地化的字符串等。
- ///
- // 此类是由 StronglyTypedResourceBuilder
- // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
- // (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class ConfigurationManager {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal ConfigurationManager() {
- }
-
- ///
- /// 返回此类使用的缓存的 ResourceManager 实例。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Modbus.Net.ConfigurationManager", typeof(ConfigurationManager).GetTypeInfo().Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// 使用此强类型资源类,为所有资源查找
- /// 重写当前线程的 CurrentUICulture 属性。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// 查找类似 COM1 的本地化字符串。
- ///
- public static string COM {
- get {
- return ResourceManager.GetString("COM", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 opcda://localhost/FBoxOpcServer 的本地化字符串。
- ///
- public static string FBoxOpcDaHost {
- get {
- return ResourceManager.GetString("FBoxOpcDaHost", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 192.168.1.1 的本地化字符串。
- ///
- public static string IP {
- get {
- return ResourceManager.GetString("IP", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 5000 的本地化字符串。
- ///
- public static string IPConnectionTimeout {
- get {
- return ResourceManager.GetString("IPConnectionTimeout", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 502 的本地化字符串。
- ///
- public static string ModbusPort {
- get {
- return ResourceManager.GetString("ModbusPort", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 opcda://localhost/... 的本地化字符串。
- ///
- public static string OpcDaHost {
- get {
- return ResourceManager.GetString("OpcDaHost", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 opc.tcp://localhost/... 的本地化字符串。
- ///
- public static string OpcUaHost {
- get {
- return ResourceManager.GetString("OpcUaHost", resourceCulture);
- }
- }
-
- ///
- /// 查找类似 102 的本地化字符串。
- ///
- public static string SiemensPort {
- get {
- return ResourceManager.GetString("SiemensPort", resourceCulture);
- }
- }
- }
-}
diff --git a/Modbus.Net/src/Base.Common/ConfigurationManager.resx b/Modbus.Net/src/Base.Common/ConfigurationManager.resx
deleted file mode 100644
index 192a30e..0000000
--- a/Modbus.Net/src/Base.Common/ConfigurationManager.resx
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- COM1
-
-
- opcda://localhost/FBoxOpcServer
-
-
- 192.168.1.1
-
-
- 5000
-
-
- 502
-
-
- opcda://localhost/...
-
-
- opc.tcp://localhost/...
-
-
- 102
-
-
\ No newline at end of file
diff --git a/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs b/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs
index cb1077a..92cb4b0 100644
--- a/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs
+++ b/Modbus.Net/src/Base.Common/TcpProtocalLinker.cs
@@ -1,4 +1,8 @@
-namespace Modbus.Net
+#if NET40||NET45||NET451||NET452||NET46||NET461||NET462||NET47
+using System.Configuration;
+#endif
+
+namespace Modbus.Net
{
///
/// Tcp连接对象
@@ -8,7 +12,7 @@
///
/// 构造器
///
- protected TcpProtocalLinker() : this(ConfigurationManager.IP, int.Parse(ConfigurationManager.ModbusPort))
+ protected TcpProtocalLinker() : this(ConfigurationManager.AppSettings["IP"], int.Parse(ConfigurationManager.AppSettings["ModbusPort"]))
{
}
@@ -20,7 +24,7 @@
protected TcpProtocalLinker(string ip, int port)
{
//初始化连接对象
- BaseConnector = new TcpConnector(ip, port, int.Parse(ConfigurationManager.IPConnectionTimeout));
+ BaseConnector = new TcpConnector(ip, port, int.Parse(ConfigurationManager.AppSettings["IPConnectionTimeout"]));
}
}
}
\ No newline at end of file