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 /// PPI
/// </summary> /// </summary>
Ppi = 0, Ppi = 0,
#pragma warning disable
/// <summary> /// <summary>
/// MPI /// MPI
/// </summary> /// </summary>
//Mpi = 1, //Mpi = 1,
#pragma warning restore
/// <summary> /// <summary>
/// 以太网 /// 以太网
/// </summary> /// </summary>

View File

@@ -57,6 +57,11 @@ namespace Modbus.Net
/// </summary> /// </summary>
private readonly StopBits _stopBits; private readonly StopBits _stopBits;
/// <summary>
/// 停止位
/// </summary>
private readonly Handshake _handshake;
/// <inheritdoc /> /// <inheritdoc />
protected override int TimeoutTime { get; set; } protected override int TimeoutTime { get; set; }
@@ -107,20 +112,23 @@ namespace Modbus.Net
/// <param name="parity">校验位</param> /// <param name="parity">校验位</param>
/// <param name="stopBits">停止位</param> /// <param name="stopBits">停止位</param>
/// <param name="dataBits">数据位</param> /// <param name="dataBits">数据位</param>
/// <param name="handshake">流控制</param>
/// <param name="timeoutTime">超时时间</param> /// <param name="timeoutTime">超时时间</param>
/// <param name="isFullDuplex">是否为全双工</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]; _com = com.Split(':')[0];
//波特率 //波特率
_baudRate = baudRate; _baudRate = (int)baudRate;
//奇偶校验 //奇偶校验
_parity = parity; _parity = parity;
//停止位 //停止位
_stopBits = stopBits; _stopBits = stopBits;
//数据位 //数据位
_dataBits = dataBits; _dataBits = (int)dataBits;
//流控制
_handshake = handshake;
//从站号 //从站号
_slave = com.Split(':')[1]; _slave = com.Split(':')[1];
} }
@@ -346,6 +354,7 @@ namespace Modbus.Net
Parity = _parity, Parity = _parity,
StopBits = _stopBits, StopBits = _stopBits,
DataBits = _dataBits, DataBits = _dataBits,
Handshake = _handshake,
ReadTimeout = TimeoutTime ReadTimeout = TimeoutTime
}); });
} }

View File

@@ -3,6 +3,46 @@ using System.IO.Ports;
namespace Modbus.Net 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>
/// 串口连接对象 /// 串口连接对象
/// </summary> /// </summary>
@@ -16,19 +56,21 @@ namespace Modbus.Net
/// <param name="parity">校验位</param> /// <param name="parity">校验位</param>
/// <param name="stopBits">停止位</param> /// <param name="stopBits">停止位</param>
/// <param name="dataBits">数据位</param> /// <param name="dataBits">数据位</param>
/// <param name="handshake">流控制</param>
/// <param name="connectionTimeout">超时时间</param> /// <param name="connectionTimeout">超时时间</param>
/// <param name="slaveAddress">从站地址</param> /// <param name="slaveAddress">从站地址</param>
/// <param name="isFullDuplex">是否为全双工</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) 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")); 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")); 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")); 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")); 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": { "COM": {
"FetchSleepTime": "100", "FetchSleepTime": "100",
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"BaudRate": "9600", "BaudRate": "BaudRate9600",
"Parity": "None", "Parity": "None",
"StopBits": "One", "StopBits": "One",
"DataBits": "8", "DataBits": "Eight",
"Handshake": "None",
"FullDuplex": "False", "FullDuplex": "False",
"Modbus": { "Modbus": {
"COM": "COM1" "COM": "COM1"

View File

@@ -25,10 +25,11 @@
"COM": { "COM": {
"FetchSleepTime": "100", "FetchSleepTime": "100",
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"BaudRate": "9600", "BaudRate": "BaudRate9600",
"Parity": "None", "Parity": "None",
"StopBits": "One", "StopBits": "One",
"DataBits": "8", "DataBits": "Eight",
"Handshake": "None",
"FullDuplex": "False", "FullDuplex": "False",
"Modbus": { "Modbus": {
"COM": "COM1" "COM": "COM1"

View File

@@ -25,10 +25,11 @@
"COM": { "COM": {
"FetchSleepTime": "100", "FetchSleepTime": "100",
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"BaudRate": "9600", "BaudRate": "BaudRate9600",
"Parity": "None", "Parity": "None",
"StopBits": "One", "StopBits": "One",
"DataBits": "8", "DataBits": "Eight",
"Handshake": "None",
"FullDuplex": "False", "FullDuplex": "False",
"Modbus": { "Modbus": {
"COM": "COM1" "COM": "COM1"

View File

@@ -25,10 +25,11 @@
"COM": { "COM": {
"FetchSleepTime": "100", "FetchSleepTime": "100",
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"BaudRate": "9600", "BaudRate": "BaudRate9600",
"Parity": "None", "Parity": "None",
"StopBits": "One", "StopBits": "One",
"DataBits": "8", "DataBits": "Eight",
"Handshake": "None",
"FullDuplex": "False", "FullDuplex": "False",
"Modbus": { "Modbus": {
"COM": "COM1" "COM": "COM1"

View File

@@ -25,10 +25,11 @@
"COM": { "COM": {
"FetchSleepTime": "100", "FetchSleepTime": "100",
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"BaudRate": "9600", "BaudRate": "BaudRate9600",
"Parity": "None", "Parity": "None",
"StopBits": "One", "StopBits": "One",
"DataBits": "8", "DataBits": "Eight",
"Handshake": "None",
"FullDuplex": "False", "FullDuplex": "False",
"Modbus": { "Modbus": {
"COM": "COM1" "COM": "COM1"