Add serial port baud rate param
This commit is contained in:
@@ -24,7 +24,7 @@ namespace Modbus.Net.Modbus
|
|||||||
/// <param name="com">串口地址</param>
|
/// <param name="com">串口地址</param>
|
||||||
/// <param name="slaveAddress">从站号</param>
|
/// <param name="slaveAddress">从站号</param>
|
||||||
public ModbusAsciiProtocolLinker(string com, int slaveAddress)
|
public ModbusAsciiProtocolLinker(string com, int slaveAddress)
|
||||||
: base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress)
|
: base(com, slaveAddress)
|
||||||
{
|
{
|
||||||
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (1, 1), (2, 2) }, new List<(int, int)> { (3, 3), (4, 4) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0")));
|
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (1, 1), (2, 2) }, new List<(int, int)> { (3, 3), (4, 4) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0")));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Modbus.Net.Modbus
|
|||||||
/// <param name="com">串口地址</param>
|
/// <param name="com">串口地址</param>
|
||||||
/// <param name="slaveAddress">从站号</param>
|
/// <param name="slaveAddress">从站号</param>
|
||||||
public ModbusRtuProtocolLinker(string com, int slaveAddress)
|
public ModbusRtuProtocolLinker(string com, int slaveAddress)
|
||||||
: base(com, 9600, Parity.None, StopBits.One, 8, slaveAddress)
|
: base(com, slaveAddress)
|
||||||
{
|
{
|
||||||
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (0, 0) }, new List<(int, int)> { (1, 1) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0")));
|
((BaseConnector)BaseConnector).AddController(new MatchController(new ICollection<(int, int)>[] { new List<(int, int)> { (0, 0) }, new List<(int, int)> { (1, 1) } }, int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0")));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace Modbus.Net.Siemens
|
|||||||
/// <param name="com">串口地址</param>
|
/// <param name="com">串口地址</param>
|
||||||
/// <param name="slaveAddress">从站号</param>
|
/// <param name="slaveAddress">从站号</param>
|
||||||
public SiemensPpiProtocolLinker(string com, int slaveAddress)
|
public SiemensPpiProtocolLinker(string com, int slaveAddress)
|
||||||
: base(com, 9600, Parity.Even, StopBits.One, 8, slaveAddress)
|
: base(com, slaveAddress)
|
||||||
{
|
{
|
||||||
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, null, 100));
|
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(configuration.GetSection("Modbus.Net")["FetchSleepTime"] ?? "0"), true, null, 100));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
@@ -11,6 +13,12 @@ namespace Modbus.Net
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class FifoController : BaseController
|
public class FifoController : BaseController
|
||||||
{
|
{
|
||||||
|
private static readonly IConfigurationRoot configuration = new ConfigurationBuilder()
|
||||||
|
.SetBasePath(Directory.GetCurrentDirectory())
|
||||||
|
.AddJsonFile("appsettings.json")
|
||||||
|
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true)
|
||||||
|
.Build();
|
||||||
|
|
||||||
private static readonly ILogger<FifoController> logger = LogProvider.CreateLogger<FifoController>();
|
private static readonly ILogger<FifoController> logger = LogProvider.CreateLogger<FifoController>();
|
||||||
|
|
||||||
private MessageWaitingDef _currentSendingPos;
|
private MessageWaitingDef _currentSendingPos;
|
||||||
@@ -33,10 +41,10 @@ namespace Modbus.Net
|
|||||||
/// <param name="activateSema">是否开启信号量</param>
|
/// <param name="activateSema">是否开启信号量</param>
|
||||||
/// <param name="duplicateFunc">包切分函数</param>
|
/// <param name="duplicateFunc">包切分函数</param>
|
||||||
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
||||||
public FifoController(int acquireTime, bool activateSema = true, Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1)
|
public FifoController(int acquireTime, bool activateSema = true, Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 100)
|
||||||
: base(duplicateFunc)
|
: base(duplicateFunc)
|
||||||
{
|
{
|
||||||
_waitingListMaxCount = waitingListMaxCount;
|
_waitingListMaxCount = int.Parse(configuration.GetSection("Modbus.Net")["WaitingListCount"] ?? waitingListMaxCount.ToString());
|
||||||
if (activateSema)
|
if (activateSema)
|
||||||
{
|
{
|
||||||
_taskCycleSema = new Semaphore(0, _waitingListMaxCount);
|
_taskCycleSema = new Semaphore(0, _waitingListMaxCount);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Modbus.Net
|
|||||||
/// <param name="duplicateFunc">包切分函数</param>
|
/// <param name="duplicateFunc">包切分函数</param>
|
||||||
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
||||||
public MatchController(ICollection<(int, int)>[] keyMatches, int acquireTime, bool activateSema = true,
|
public MatchController(ICollection<(int, int)>[] keyMatches, int acquireTime, bool activateSema = true,
|
||||||
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1) : base(acquireTime, activateSema, duplicateFunc, waitingListMaxCount)
|
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 100) : base(acquireTime, activateSema, duplicateFunc, waitingListMaxCount)
|
||||||
{
|
{
|
||||||
KeyMatches = keyMatches;
|
KeyMatches = keyMatches;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace Modbus.Net
|
|||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches,
|
public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches,
|
||||||
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1) : base(keyMatches,
|
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 100) : base(keyMatches,
|
||||||
0, false, duplicateFunc, waitingListMaxCount)
|
0, false, duplicateFunc, waitingListMaxCount)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,19 @@ namespace Modbus.Net
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造器
|
/// 构造器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="baudRate">波特率</param>
|
|
||||||
/// <param name="parity">校验位</param>
|
|
||||||
/// <param name="stopBits">停止位</param>
|
|
||||||
/// <param name="dataBits">数据位</param>
|
|
||||||
/// <param name="slaveAddress">从站地址</param>
|
/// <param name="slaveAddress">从站地址</param>
|
||||||
protected ComProtocolLinker(int baudRate, Parity parity, StopBits stopBits, int dataBits, int slaveAddress)
|
protected ComProtocolLinker(int slaveAddress)
|
||||||
: this(configuration.GetSection("Modbus.Net")["COM"], baudRate, parity, stopBits, dataBits, slaveAddress)
|
: this(configuration.GetSection("Modbus.Net")["COM"] ?? "COM1", slaveAddress)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 构造器
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="com">串口端口号</param>
|
||||||
|
/// <param name="slaveAddress">从站地址</param>
|
||||||
|
protected ComProtocolLinker(string com, int slaveAddress)
|
||||||
|
: this(com, slaveAddress, int.Parse(configuration.GetSection("Modbus.Net")["ComBaudRate"] ?? "9600"), Enum.Parse<Parity>(configuration.GetSection("Modbus.Net")["ComParity"] ?? "Parity.None"), Enum.Parse<StopBits>(configuration.GetSection("Modbus.Net")["ComStopBits"] ?? "StopBits.One"), int.Parse(configuration.GetSection("Modbus.Net")["ComDataBits"] ?? "8"))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,11 +45,11 @@ namespace Modbus.Net
|
|||||||
/// <param name="dataBits">数据位</param>
|
/// <param name="dataBits">数据位</param>
|
||||||
/// <param name="slaveAddress">从站地址</param>
|
/// <param name="slaveAddress">从站地址</param>
|
||||||
/// <param name="isFullDuplex">是否为全双工</param>
|
/// <param name="isFullDuplex">是否为全双工</param>
|
||||||
protected ComProtocolLinker(string com, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
protected ComProtocolLinker(string com, int slaveAddress, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||||
int slaveAddress, bool isFullDuplex = false)
|
bool isFullDuplex = false)
|
||||||
: this(
|
: this(
|
||||||
com, baudRate, parity, stopBits, dataBits,
|
com, slaveAddress, baudRate, parity, stopBits, dataBits,
|
||||||
int.Parse(configuration.GetSection("Modbus.Net")["ComConnectionTimeout"] ?? "-1"), slaveAddress, isFullDuplex)
|
int.Parse(configuration.GetSection("Modbus.Net")["ComConnectionTimeout"] ?? "-1"), isFullDuplex)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,8 +64,8 @@ namespace Modbus.Net
|
|||||||
/// <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 baudRate, Parity parity, StopBits stopBits, int dataBits,
|
protected ComProtocolLinker(string com, int slaveAddress, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||||
int connectionTimeout, int slaveAddress, bool isFullDuplex = false)
|
int connectionTimeout, bool isFullDuplex = false)
|
||||||
{
|
{
|
||||||
if (connectionTimeout == -1)
|
if (connectionTimeout == -1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,9 +3,14 @@
|
|||||||
"COM": "COM1",
|
"COM": "COM1",
|
||||||
"IP": "192.168.1.1",
|
"IP": "192.168.1.1",
|
||||||
"ComConnectionTimeout": "3000",
|
"ComConnectionTimeout": "3000",
|
||||||
|
"ComBaudRate": "9600",
|
||||||
|
"ComParity": "Parity.None",
|
||||||
|
"ComStopBits": "StopBits.One",
|
||||||
|
"ComDataBits": "8",
|
||||||
"IPConnectionTimeout": "5000",
|
"IPConnectionTimeout": "5000",
|
||||||
"ModbusPort": "502",
|
"ModbusPort": "502",
|
||||||
"SiemensPort": "102",
|
"SiemensPort": "102",
|
||||||
"FetchSleepTime": "100"
|
"FetchSleepTime": "100",
|
||||||
|
"WaitingListCount": "100"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user