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="slaveAddress">从站号</param>
|
||||
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")));
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Modbus.Net.Modbus
|
||||
/// <param name="com">串口地址</param>
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
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")));
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Modbus.Net.Siemens
|
||||
/// <param name="com">串口地址</param>
|
||||
/// <param name="slaveAddress">从站号</param>
|
||||
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));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
@@ -11,6 +13,12 @@ namespace Modbus.Net
|
||||
/// </summary>
|
||||
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 MessageWaitingDef _currentSendingPos;
|
||||
@@ -33,10 +41,10 @@ namespace Modbus.Net
|
||||
/// <param name="activateSema">是否开启信号量</param>
|
||||
/// <param name="duplicateFunc">包切分函数</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)
|
||||
{
|
||||
_waitingListMaxCount = waitingListMaxCount;
|
||||
_waitingListMaxCount = int.Parse(configuration.GetSection("Modbus.Net")["WaitingListCount"] ?? waitingListMaxCount.ToString());
|
||||
if (activateSema)
|
||||
{
|
||||
_taskCycleSema = new Semaphore(0, _waitingListMaxCount);
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Modbus.Net
|
||||
/// <param name="duplicateFunc">包切分函数</param>
|
||||
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Modbus.Net
|
||||
{
|
||||
/// <inheritdoc />
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -19,13 +19,19 @@ namespace Modbus.Net
|
||||
/// <summary>
|
||||
/// 构造器
|
||||
/// </summary>
|
||||
/// <param name="baudRate">波特率</param>
|
||||
/// <param name="parity">校验位</param>
|
||||
/// <param name="stopBits">停止位</param>
|
||||
/// <param name="dataBits">数据位</param>
|
||||
/// <param name="slaveAddress">从站地址</param>
|
||||
protected ComProtocolLinker(int baudRate, Parity parity, StopBits stopBits, int dataBits, int slaveAddress)
|
||||
: this(configuration.GetSection("Modbus.Net")["COM"], baudRate, parity, stopBits, dataBits, slaveAddress)
|
||||
protected ComProtocolLinker(int 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="slaveAddress">从站地址</param>
|
||||
/// <param name="isFullDuplex">是否为全双工</param>
|
||||
protected ComProtocolLinker(string com, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||
int slaveAddress, bool isFullDuplex = false)
|
||||
protected ComProtocolLinker(string com, int slaveAddress, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||
bool isFullDuplex = false)
|
||||
: this(
|
||||
com, baudRate, parity, stopBits, dataBits,
|
||||
int.Parse(configuration.GetSection("Modbus.Net")["ComConnectionTimeout"] ?? "-1"), slaveAddress, isFullDuplex)
|
||||
com, slaveAddress, baudRate, parity, stopBits, dataBits,
|
||||
int.Parse(configuration.GetSection("Modbus.Net")["ComConnectionTimeout"] ?? "-1"), isFullDuplex)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -58,8 +64,8 @@ namespace Modbus.Net
|
||||
/// <param name="connectionTimeout">超时时间</param>
|
||||
/// <param name="slaveAddress">从站地址</param>
|
||||
/// <param name="isFullDuplex">是否为全双工</param>
|
||||
protected ComProtocolLinker(string com, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||
int connectionTimeout, int slaveAddress, bool isFullDuplex = false)
|
||||
protected ComProtocolLinker(string com, int slaveAddress, int baudRate, Parity parity, StopBits stopBits, int dataBits,
|
||||
int connectionTimeout, bool isFullDuplex = false)
|
||||
{
|
||||
if (connectionTimeout == -1)
|
||||
{
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
"COM": "COM1",
|
||||
"IP": "192.168.1.1",
|
||||
"ComConnectionTimeout": "3000",
|
||||
"ComBaudRate": "9600",
|
||||
"ComParity": "Parity.None",
|
||||
"ComStopBits": "StopBits.One",
|
||||
"ComDataBits": "8",
|
||||
"IPConnectionTimeout": "5000",
|
||||
"ModbusPort": "502",
|
||||
"SiemensPort": "102",
|
||||
"FetchSleepTime": "100"
|
||||
"FetchSleepTime": "100",
|
||||
"WaitingListCount": "100"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user