diff --git a/Modbus.Net/Modbus.Net/Connector/BaseConnector.cs b/Modbus.Net/Modbus.Net/Connector/BaseConnector.cs index b6864d1..8375bd4 100644 --- a/Modbus.Net/Modbus.Net/Connector/BaseConnector.cs +++ b/Modbus.Net/Modbus.Net/Connector/BaseConnector.cs @@ -30,7 +30,7 @@ namespace Modbus.Net /// /// 发送超时时间 /// 是否为全双工 - protected BaseConnector(int timeoutTime = 10000, bool isFullDuplex = true) + protected BaseConnector(int timeoutTime = 10000, bool isFullDuplex = false) { IsFullDuplex = isFullDuplex; if (timeoutTime < -1) timeoutTime = -1; @@ -55,6 +55,10 @@ namespace Modbus.Net IDisposable asyncLock = null; try { + if (!Controller.IsSending) + { + Controller.SendStart(); + } var messageSendingdef = Controller.AddMessage(message); if (messageSendingdef != null) { diff --git a/Modbus.Net/Modbus.Net/Connector/EventHandlerConnector.cs b/Modbus.Net/Modbus.Net/Connector/EventHandlerConnector.cs index 44f5395..86340e4 100644 --- a/Modbus.Net/Modbus.Net/Connector/EventHandlerConnector.cs +++ b/Modbus.Net/Modbus.Net/Connector/EventHandlerConnector.cs @@ -59,6 +59,10 @@ namespace Modbus.Net IDisposable asyncLock = null; try { + if (!Controller.IsSending) + { + Controller.SendStart(); + } var messageSendingdef = Controller.AddMessage(message); if (messageSendingdef != null) { diff --git a/Modbus.Net/Modbus.Net/Controller/BaseController.cs b/Modbus.Net/Modbus.Net/Controller/BaseController.cs index a77e234..2fd0db5 100644 --- a/Modbus.Net/Modbus.Net/Controller/BaseController.cs +++ b/Modbus.Net/Modbus.Net/Controller/BaseController.cs @@ -21,6 +21,11 @@ namespace Modbus.Net /// protected Task SendingThread { get; set; } + /// + /// Ϣά߳Ƿ + /// + public virtual bool IsSending => SendingThread.Status.Equals(TaskStatus.Running); + /// /// зλú /// diff --git a/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs b/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs index acdc473..796333a 100644 --- a/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs +++ b/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs @@ -8,6 +8,11 @@ namespace Modbus.Net /// public class MatchDirectlySendController : MatchController { + /// + /// 消息维护线程是否在运行 + /// + public override bool IsSending => true; + /// public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches, Func lengthCalc = null, Func checkRightFunc = null, int? waitingListMaxCount = null) : base(keyMatches, diff --git a/Modbus.Net/Modbus.Net/Interface/IController.cs b/Modbus.Net/Modbus.Net/Interface/IController.cs index 0c4306c..2cb9431 100644 --- a/Modbus.Net/Modbus.Net/Interface/IController.cs +++ b/Modbus.Net/Modbus.Net/Interface/IController.cs @@ -7,6 +7,11 @@ namespace Modbus.Net /// public interface IController { + /// + /// Ϣά߳Ƿ + /// + bool IsSending { get; } + /// /// Ϣ /// diff --git a/Modbus.Net/Modbus.Net/appsettings.default.json b/Modbus.Net/Modbus.Net/appsettings.default.json index 44e92a9..4f22fec 100644 --- a/Modbus.Net/Modbus.Net/appsettings.default.json +++ b/Modbus.Net/Modbus.Net/appsettings.default.json @@ -3,7 +3,7 @@ "TCP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" @@ -16,7 +16,7 @@ "UDP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" diff --git a/Samples/AnyType/appsettings.default.json b/Samples/AnyType/appsettings.default.json index 44e92a9..4f22fec 100644 --- a/Samples/AnyType/appsettings.default.json +++ b/Samples/AnyType/appsettings.default.json @@ -3,7 +3,7 @@ "TCP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" @@ -16,7 +16,7 @@ "UDP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" diff --git a/Samples/CrossLamp/appsettings.default.json b/Samples/CrossLamp/appsettings.default.json index 44e92a9..4f22fec 100644 --- a/Samples/CrossLamp/appsettings.default.json +++ b/Samples/CrossLamp/appsettings.default.json @@ -3,7 +3,7 @@ "TCP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" @@ -16,7 +16,7 @@ "UDP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" diff --git a/Samples/MachineJob/appsettings.default.json b/Samples/MachineJob/appsettings.default.json index 44e92a9..4f22fec 100644 --- a/Samples/MachineJob/appsettings.default.json +++ b/Samples/MachineJob/appsettings.default.json @@ -3,7 +3,7 @@ "TCP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" @@ -16,7 +16,7 @@ "UDP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" diff --git a/Samples/MachineJob/appsettings.json b/Samples/MachineJob/appsettings.json index fffe11b..9762107 100644 --- a/Samples/MachineJob/appsettings.json +++ b/Samples/MachineJob/appsettings.json @@ -45,7 +45,7 @@ "d:connectionString": "COM1", "e:addressMap": "AddressMapModbus", "f:keepConnect": true, - "g:slaveAddress": 3, + "g:slaveAddress": 1, "h:masterAddress": 2, "i:endian": "BigEndianLsb" }, diff --git a/Samples/TripleAdd/appsettings.default.json b/Samples/TripleAdd/appsettings.default.json index 44e92a9..4f22fec 100644 --- a/Samples/TripleAdd/appsettings.default.json +++ b/Samples/TripleAdd/appsettings.default.json @@ -3,7 +3,7 @@ "TCP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1" @@ -16,7 +16,7 @@ "UDP": { "ConnectionTimeout": "5000", "FetchSleepTime": "100", - "FullDuplex": "False", + "FullDuplex": "True", "Modbus": { "ModbusPort": "502", "IP": "192.168.1.1"