From 2211e40f0ff59bd802bb2db3b6766fefeb96b0c7 Mon Sep 17 00:00:00 2001 From: luosheng Date: Fri, 24 Mar 2023 10:16:50 +0800 Subject: [PATCH] ComProtocolLinker and ComConnector param change --- .../Modbus.Net.Siemens/SiemensUtility.cs | 2 + .../Modbus.Net/Connector/ComConnector.cs | 15 ++++-- .../Modbus.Net/Linker/ComProtocolLinker.cs | 50 +++++++++++++++++-- .../Modbus.Net/appsettings.default.json | 5 +- Samples/AnyType/appsettings.default.json | 5 +- Samples/CrossLamp/appsettings.default.json | 5 +- Samples/MachineJob/appsettings.default.json | 5 +- Samples/TripleAdd/appsettings.default.json | 5 +- 8 files changed, 75 insertions(+), 17 deletions(-) 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"