Fix a bug in controller
This commit is contained in:
@@ -19,7 +19,7 @@ namespace Modbus.Net.Siemens
|
||||
public SiemensPpiProtocolLinker(string com, int slaveAddress)
|
||||
: base(com, 9600, Parity.Even, StopBits.One, 8, slaveAddress)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0")));
|
||||
((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"), true, null, 100));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Modbus.Net.Siemens
|
||||
public SiemensTcpProtocolLinker(string ip, int port)
|
||||
: base(ip, port)
|
||||
{
|
||||
((BaseConnector)BaseConnector).AddController(new MatchDirectlySendController(new ICollection<(int,int)>[] { new List<(int,int)> { (11,11), (12,12) } }, DuplicateWithCount.GetDuplcateFunc(new List<int>{2, 3}, 0)));
|
||||
((BaseConnector)BaseConnector).AddController(new MatchDirectlySendController(new ICollection<(int,int)>[] { new List<(int,int)> { (11,11), (12,12) } }, DuplicateWithCount.GetDuplcateFunc(new List<int>{2, 3}, 0), 100));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Modbus.Net
|
||||
|
||||
private bool _taskCancel = false;
|
||||
|
||||
private int _waitingListMaxCount = 10000;
|
||||
private int _waitingListMaxCount;
|
||||
|
||||
private readonly Semaphore _taskCycleSema;
|
||||
|
||||
@@ -30,14 +30,16 @@ namespace Modbus.Net
|
||||
/// <param name="acquireTime">间隔时间</param>
|
||||
/// <param name="activateSema">是否开启信号量</param>
|
||||
/// <param name="duplicateFunc">包切分函数</param>
|
||||
public FifoController(int acquireTime, bool activateSema = true, Func<byte[], ICollection<byte[]>> duplicateFunc = null)
|
||||
/// <param name="waitingListMaxCount">包等待队列长度</param>
|
||||
public FifoController(int acquireTime, bool activateSema = true, Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1)
|
||||
: base(duplicateFunc)
|
||||
{
|
||||
_waitingListMaxCount = waitingListMaxCount;
|
||||
if (activateSema)
|
||||
{
|
||||
_taskCycleSema = new Semaphore(0, _waitingListMaxCount);
|
||||
}
|
||||
AcquireTime = acquireTime;
|
||||
AcquireTime = acquireTime;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -21,8 +21,9 @@ namespace Modbus.Net
|
||||
/// <param name="acquireTime">获取间隔</param>
|
||||
/// <param name="activateSema">是否开启信号量</param>
|
||||
/// <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) : base(acquireTime, activateSema, duplicateFunc)
|
||||
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1) : base(acquireTime, activateSema, duplicateFunc, waitingListMaxCount)
|
||||
{
|
||||
KeyMatches = keyMatches;
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ namespace Modbus.Net
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches,
|
||||
Func<byte[], ICollection<byte[]>> duplicateFunc = null) : base(keyMatches,
|
||||
0, false, duplicateFunc)
|
||||
Func<byte[], ICollection<byte[]>> duplicateFunc = null, int waitingListMaxCount = 1) : base(keyMatches,
|
||||
0, false, duplicateFunc, waitingListMaxCount)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user