This commit is contained in:
luosheng
2023-07-14 08:44:08 +08:00
parent 86d444ea04
commit 491f602c19
11 changed files with 35 additions and 12 deletions

View File

@@ -30,7 +30,7 @@ namespace Modbus.Net
/// </summary> /// </summary>
/// <param name="timeoutTime">发送超时时间</param> /// <param name="timeoutTime">发送超时时间</param>
/// <param name="isFullDuplex">是否为全双工</param> /// <param name="isFullDuplex">是否为全双工</param>
protected BaseConnector(int timeoutTime = 10000, bool isFullDuplex = true) protected BaseConnector(int timeoutTime = 10000, bool isFullDuplex = false)
{ {
IsFullDuplex = isFullDuplex; IsFullDuplex = isFullDuplex;
if (timeoutTime < -1) timeoutTime = -1; if (timeoutTime < -1) timeoutTime = -1;
@@ -55,6 +55,10 @@ namespace Modbus.Net
IDisposable asyncLock = null; IDisposable asyncLock = null;
try try
{ {
if (!Controller.IsSending)
{
Controller.SendStart();
}
var messageSendingdef = Controller.AddMessage(message); var messageSendingdef = Controller.AddMessage(message);
if (messageSendingdef != null) if (messageSendingdef != null)
{ {

View File

@@ -59,6 +59,10 @@ namespace Modbus.Net
IDisposable asyncLock = null; IDisposable asyncLock = null;
try try
{ {
if (!Controller.IsSending)
{
Controller.SendStart();
}
var messageSendingdef = Controller.AddMessage(message); var messageSendingdef = Controller.AddMessage(message);
if (messageSendingdef != null) if (messageSendingdef != null)
{ {

View File

@@ -21,6 +21,11 @@ namespace Modbus.Net
/// </summary> /// </summary>
protected Task SendingThread { get; set; } protected Task SendingThread { get; set; }
/// <summary>
/// 消息维护线程是否在运行
/// </summary>
public virtual bool IsSending => SendingThread.Status.Equals(TaskStatus.Running);
/// <summary> /// <summary>
/// 包切分位置函数 /// 包切分位置函数
/// </summary> /// </summary>

View File

@@ -8,6 +8,11 @@ namespace Modbus.Net
/// </summary> /// </summary>
public class MatchDirectlySendController : MatchController public class MatchDirectlySendController : MatchController
{ {
/// <summary>
/// 消息维护线程是否在运行
/// </summary>
public override bool IsSending => true;
/// <inheritdoc /> /// <inheritdoc />
public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches, public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches,
Func<byte[], int> lengthCalc = null, Func<byte[], bool?> checkRightFunc = null, int? waitingListMaxCount = null) : base(keyMatches, Func<byte[], int> lengthCalc = null, Func<byte[], bool?> checkRightFunc = null, int? waitingListMaxCount = null) : base(keyMatches,

View File

@@ -7,6 +7,11 @@ namespace Modbus.Net
/// </summary> /// </summary>
public interface IController public interface IController
{ {
/// <summary>
/// 消息维护线程是否在运行
/// </summary>
bool IsSending { get; }
/// <summary> /// <summary>
/// 增加信息 /// 增加信息
/// </summary> /// </summary>

View File

@@ -3,7 +3,7 @@
"TCP": { "TCP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"
@@ -16,7 +16,7 @@
"UDP": { "UDP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"

View File

@@ -3,7 +3,7 @@
"TCP": { "TCP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"
@@ -16,7 +16,7 @@
"UDP": { "UDP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"

View File

@@ -3,7 +3,7 @@
"TCP": { "TCP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"
@@ -16,7 +16,7 @@
"UDP": { "UDP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"

View File

@@ -3,7 +3,7 @@
"TCP": { "TCP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"
@@ -16,7 +16,7 @@
"UDP": { "UDP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"

View File

@@ -45,7 +45,7 @@
"d:connectionString": "COM1", "d:connectionString": "COM1",
"e:addressMap": "AddressMapModbus", "e:addressMap": "AddressMapModbus",
"f:keepConnect": true, "f:keepConnect": true,
"g:slaveAddress": 3, "g:slaveAddress": 1,
"h:masterAddress": 2, "h:masterAddress": 2,
"i:endian": "BigEndianLsb" "i:endian": "BigEndianLsb"
}, },

View File

@@ -3,7 +3,7 @@
"TCP": { "TCP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"
@@ -16,7 +16,7 @@
"UDP": { "UDP": {
"ConnectionTimeout": "5000", "ConnectionTimeout": "5000",
"FetchSleepTime": "100", "FetchSleepTime": "100",
"FullDuplex": "False", "FullDuplex": "True",
"Modbus": { "Modbus": {
"ModbusPort": "502", "ModbusPort": "502",
"IP": "192.168.1.1" "IP": "192.168.1.1"