diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs
index 9e7a0e0..d5e4b90 100644
--- a/Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs
+++ b/Modbus.Net/Modbus.Net.Siemens/SiemensUtility.cs
@@ -13,10 +13,12 @@ namespace Modbus.Net.Siemens
/// PPI
///
Ppi = 0,
+#pragma warning disable
///
/// MPI
///
//Mpi = 1,
+#pragma warning restore
///
/// 以太网
///
diff --git a/Modbus.Net/Modbus.Net/Connector/ComConnector.cs b/Modbus.Net/Modbus.Net/Connector/ComConnector.cs
index a76fd33..86fd31f 100644
--- a/Modbus.Net/Modbus.Net/Connector/ComConnector.cs
+++ b/Modbus.Net/Modbus.Net/Connector/ComConnector.cs
@@ -57,6 +57,11 @@ namespace Modbus.Net
///
private readonly StopBits _stopBits;
+ ///
+ /// 停止位
+ ///
+ private readonly Handshake _handshake;
+
///
protected override int TimeoutTime { get; set; }
@@ -107,20 +112,23 @@ namespace Modbus.Net
/// 校验位
/// 停止位
/// 数据位
+ /// 流控制
/// 超时时间
/// 是否为全双工
- public ComConnector(string com, int baudRate, Parity parity, StopBits stopBits, int dataBits, int timeoutTime = 10000, bool isFullDuplex = false) : base(timeoutTime, isFullDuplex)
+ public ComConnector(string com, BaudRate baudRate, Parity parity, StopBits stopBits, DataBits dataBits, Handshake handshake, int timeoutTime = 10000, bool isFullDuplex = false) : base(timeoutTime, isFullDuplex)
{
//端口号
_com = com.Split(':')[0];
//波特率
- _baudRate = baudRate;
+ _baudRate = (int)baudRate;
//奇偶校验
_parity = parity;
//停止位
_stopBits = stopBits;
//数据位
- _dataBits = dataBits;
+ _dataBits = (int)dataBits;
+ //流控制
+ _handshake = handshake;
//从站号
_slave = com.Split(':')[1];
}
@@ -346,6 +354,7 @@ namespace Modbus.Net
Parity = _parity,
StopBits = _stopBits,
DataBits = _dataBits,
+ Handshake = _handshake,
ReadTimeout = TimeoutTime
});
}
diff --git a/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs b/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs
index 2abb859..03e128d 100644
--- a/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs
+++ b/Modbus.Net/Modbus.Net/Linker/ComProtocolLinker.cs
@@ -3,6 +3,46 @@ using System.IO.Ports;
namespace Modbus.Net
{
+ ///
+ /// 波特率
+ ///
+ public enum BaudRate
+ {
+#pragma warning disable
+ BaudRate75 = 75,
+ BaudRate110 = 110,
+ BaudRate134 = 134,
+ BaudRate150 = 150,
+ BaudRate300 = 300,
+ BaudRate600 = 600,
+ BaudRate1200 = 1200,
+ BaudRate1800 = 1800,
+ BaudRate2400 = 2400,
+ BaudRate4800 = 4800,
+ BaudRate9600 = 9600,
+ BaudRate14400 = 14400,
+ BaudRate19200 = 19200,
+ BaudRate38400 = 38400,
+ BaudRate57600 = 57600,
+ BaudRate115200 = 115200,
+ BaudRate128000 = 128000,
+ BaudRate230400 = 230400,
+ BaudRate460800 = 460800,
+ BaudRate921600 = 921600,
+#pragma warning restore
+ }
+
+ ///
+ /// 数据位
+ ///
+ public enum DataBits
+ {
+#pragma warning disable
+ Seven = 7,
+ Eight = 8,
+#pragma warning restore
+ }
+
///
/// 串口连接对象
///
@@ -16,19 +56,21 @@ namespace Modbus.Net
/// 校验位
/// 停止位
/// 数据位
+ /// 流控制
/// 超时时间
/// 从站地址
/// 是否为全双工
- protected ComProtocolLinker(string com, int slaveAddress, int? baudRate = null, Parity? parity = null, StopBits? stopBits = null, int? dataBits = null,
+ protected ComProtocolLinker(string com, int slaveAddress, BaudRate? baudRate = null, Parity? parity = null, StopBits? stopBits = null, DataBits? dataBits = null, Handshake? handshake = null,
int? connectionTimeout = null, bool? isFullDuplex = null)
{
- baudRate = int.Parse(baudRate != null ? baudRate.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "BaudRate"));
+ baudRate = Enum.Parse(baudRate != null ? baudRate.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "BaudRate"));
parity = Enum.Parse(parity != null ? parity.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "Parity"));
stopBits = Enum.Parse(stopBits != null ? stopBits.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "StopBits"));
- dataBits = int.Parse(dataBits != null ? dataBits.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "DataBits"));
+ dataBits = Enum.Parse(dataBits != null ? dataBits.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "DataBits"));
+ handshake = Enum.Parse(handshake != null ? handshake.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "Handshake"));
connectionTimeout = int.Parse(connectionTimeout != null ? connectionTimeout.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "ConnectionTimeout"));
isFullDuplex = bool.Parse(isFullDuplex != null ? isFullDuplex.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "FullDuplex"));
- BaseConnector = new ComConnector(com + ":" + slaveAddress, baudRate.Value, parity.Value, stopBits.Value, dataBits.Value, connectionTimeout.Value, isFullDuplex.Value);
+ BaseConnector = new ComConnector(com + ":" + slaveAddress, baudRate.Value, parity.Value, stopBits.Value, dataBits.Value, handshake.Value, connectionTimeout.Value, isFullDuplex.Value);
}
}
}
\ No newline at end of file
diff --git a/Modbus.Net/Modbus.Net/appsettings.default.json b/Modbus.Net/Modbus.Net/appsettings.default.json
index ab8c698..4676716 100644
--- a/Modbus.Net/Modbus.Net/appsettings.default.json
+++ b/Modbus.Net/Modbus.Net/appsettings.default.json
@@ -25,10 +25,11 @@
"COM": {
"FetchSleepTime": "100",
"ConnectionTimeout": "5000",
- "BaudRate": "9600",
+ "BaudRate": "BaudRate9600",
"Parity": "None",
"StopBits": "One",
- "DataBits": "8",
+ "DataBits": "Eight",
+ "Handshake": "None",
"FullDuplex": "False",
"Modbus": {
"COM": "COM1"
diff --git a/Samples/AnyType/appsettings.default.json b/Samples/AnyType/appsettings.default.json
index ab8c698..4676716 100644
--- a/Samples/AnyType/appsettings.default.json
+++ b/Samples/AnyType/appsettings.default.json
@@ -25,10 +25,11 @@
"COM": {
"FetchSleepTime": "100",
"ConnectionTimeout": "5000",
- "BaudRate": "9600",
+ "BaudRate": "BaudRate9600",
"Parity": "None",
"StopBits": "One",
- "DataBits": "8",
+ "DataBits": "Eight",
+ "Handshake": "None",
"FullDuplex": "False",
"Modbus": {
"COM": "COM1"
diff --git a/Samples/CrossLamp/appsettings.default.json b/Samples/CrossLamp/appsettings.default.json
index ab8c698..4676716 100644
--- a/Samples/CrossLamp/appsettings.default.json
+++ b/Samples/CrossLamp/appsettings.default.json
@@ -25,10 +25,11 @@
"COM": {
"FetchSleepTime": "100",
"ConnectionTimeout": "5000",
- "BaudRate": "9600",
+ "BaudRate": "BaudRate9600",
"Parity": "None",
"StopBits": "One",
- "DataBits": "8",
+ "DataBits": "Eight",
+ "Handshake": "None",
"FullDuplex": "False",
"Modbus": {
"COM": "COM1"
diff --git a/Samples/MachineJob/appsettings.default.json b/Samples/MachineJob/appsettings.default.json
index ab8c698..4676716 100644
--- a/Samples/MachineJob/appsettings.default.json
+++ b/Samples/MachineJob/appsettings.default.json
@@ -25,10 +25,11 @@
"COM": {
"FetchSleepTime": "100",
"ConnectionTimeout": "5000",
- "BaudRate": "9600",
+ "BaudRate": "BaudRate9600",
"Parity": "None",
"StopBits": "One",
- "DataBits": "8",
+ "DataBits": "Eight",
+ "Handshake": "None",
"FullDuplex": "False",
"Modbus": {
"COM": "COM1"
diff --git a/Samples/TripleAdd/appsettings.default.json b/Samples/TripleAdd/appsettings.default.json
index ab8c698..4676716 100644
--- a/Samples/TripleAdd/appsettings.default.json
+++ b/Samples/TripleAdd/appsettings.default.json
@@ -25,10 +25,11 @@
"COM": {
"FetchSleepTime": "100",
"ConnectionTimeout": "5000",
- "BaudRate": "9600",
+ "BaudRate": "BaudRate9600",
"Parity": "None",
"StopBits": "One",
- "DataBits": "8",
+ "DataBits": "Eight",
+ "Handshake": "None",
"FullDuplex": "False",
"Modbus": {
"COM": "COM1"