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"