ComProtocolLinker and ComConnector param change

This commit is contained in:
luosheng
2023-03-24 10:16:50 +08:00
parent 40230e125f
commit 2211e40f0f
8 changed files with 75 additions and 17 deletions

View File

@@ -13,10 +13,12 @@ namespace Modbus.Net.Siemens
/// PPI
/// </summary>
Ppi = 0,
#pragma warning disable
/// <summary>
/// MPI
/// </summary>
//Mpi = 1,
#pragma warning restore
/// <summary>
/// 以太网
/// </summary>

View File

@@ -57,6 +57,11 @@ namespace Modbus.Net
/// </summary>
private readonly StopBits _stopBits;
/// <summary>
/// 停止位
/// </summary>
private readonly Handshake _handshake;
/// <inheritdoc />
protected override int TimeoutTime { get; set; }
@@ -107,20 +112,23 @@ namespace Modbus.Net
/// <param name="parity">校验位</param>
/// <param name="stopBits">停止位</param>
/// <param name="dataBits">数据位</param>
/// <param name="handshake">流控制</param>
/// <param name="timeoutTime">超时时间</param>
/// <param name="isFullDuplex">是否为全双工</param>
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
});
}

View File

@@ -3,6 +3,46 @@ using System.IO.Ports;
namespace Modbus.Net
{
/// <summary>
/// 波特率
/// </summary>
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
}
/// <summary>
/// 数据位
/// </summary>
public enum DataBits
{
#pragma warning disable
Seven = 7,
Eight = 8,
#pragma warning restore
}
/// <summary>
/// 串口连接对象
/// </summary>
@@ -16,19 +56,21 @@ namespace Modbus.Net
/// <param name="parity">校验位</param>
/// <param name="stopBits">停止位</param>
/// <param name="dataBits">数据位</param>
/// <param name="handshake">流控制</param>
/// <param name="connectionTimeout">超时时间</param>
/// <param name="slaveAddress">从站地址</param>
/// <param name="isFullDuplex">是否为全双工</param>
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>(baudRate != null ? baudRate.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "BaudRate"));
parity = Enum.Parse<Parity>(parity != null ? parity.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "Parity"));
stopBits = Enum.Parse<StopBits>(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>(dataBits != null ? dataBits.ToString() : null ?? ConfigurationReader.GetValue("COM:" + com, "DataBits"));
handshake = Enum.Parse<Handshake>(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);
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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