diff --git a/Modbus.Net/Modbus.Net/Controller/BaseController.cs b/Modbus.Net/Modbus.Net/Controller/BaseController.cs
index 1fc7a19..ee22c23 100644
--- a/Modbus.Net/Modbus.Net/Controller/BaseController.cs
+++ b/Modbus.Net/Modbus.Net/Controller/BaseController.cs
@@ -92,15 +92,16 @@ namespace Modbus.Net
/// 需要添加的信息信息
protected virtual bool AddMessageToList(MessageWaitingDef def)
{
+ var ans = false;
lock (WaitingMessages)
{
if (WaitingMessages.FirstOrDefault(p => p.Key == def.Key) == null || def.Key == null)
{
WaitingMessages.Add(def);
- return true;
+ ans = true;
}
- return false;
}
+ return ans;
}
///
@@ -116,10 +117,18 @@ namespace Modbus.Net
var ans = new List<(byte[], bool)>();
byte[] receiveMessageCopy = new byte[receiveMessage.Length];
Array.Copy(receiveMessage, receiveMessageCopy, receiveMessage.Length);
- var length = LengthCalc?.Invoke(receiveMessageCopy);
+ int? length = -1;
+ try
+ {
+ length = LengthCalc?.Invoke(receiveMessageCopy);
+ }
+ catch
+ {
+ //ignore
+ }
List duplicatedMessages;
if (length == null || length == -1) return ans;
- if (length == 0) return null;
+ else if (length == 0) return null;
else
{
duplicatedMessages = new List();
diff --git a/Modbus.Net/Modbus.Net/Controller/DuplicateWithCount.cs b/Modbus.Net/Modbus.Net/Controller/DuplicateWithCount.cs
index f41f9ac..76108be 100644
--- a/Modbus.Net/Modbus.Net/Controller/DuplicateWithCount.cs
+++ b/Modbus.Net/Modbus.Net/Controller/DuplicateWithCount.cs
@@ -20,9 +20,10 @@ namespace Modbus.Net
var ans = 0;
foreach (var position in packageCountPositions)
{
- if (position >= receiveMessage.Length) return -1;
+ if (position > receiveMessage.Length - 1) return -1;
ans = ans * 256 + receiveMessage[position];
}
+ if (ans + otherCount > receiveMessage.Length) return -1;
return ans + otherCount;
}
diff --git a/Modbus.Net/Modbus.Net/Controller/FifoController.cs b/Modbus.Net/Modbus.Net/Controller/FifoController.cs
index 28b3bdd..3baf686 100644
--- a/Modbus.Net/Modbus.Net/Controller/FifoController.cs
+++ b/Modbus.Net/Modbus.Net/Controller/FifoController.cs
@@ -76,9 +76,9 @@ namespace Modbus.Net
_taskCycleSema?.Close();
sendSuccess = true;
}
- else if (WaitingMessages.Count > WaitingMessages.IndexOf(_currentSendingPos) + 1)
+ else if (WaitingMessages.IndexOf(_currentSendingPos) == -1)
{
- _currentSendingPos = WaitingMessages[WaitingMessages.IndexOf(_currentSendingPos) + 1];
+ _currentSendingPos = WaitingMessages.First();
_currentSendingPos.SendMutex.Set();
sendSuccess = true;
}
diff --git a/Modbus.Net/Modbus.Net/Controller/MatchController.cs b/Modbus.Net/Modbus.Net/Controller/MatchController.cs
index 0ecc4e3..65153af 100644
--- a/Modbus.Net/Modbus.Net/Controller/MatchController.cs
+++ b/Modbus.Net/Modbus.Net/Controller/MatchController.cs
@@ -39,7 +39,7 @@ namespace Modbus.Net
int tmpCount = 0, tmpCount2 = 0;
foreach (var matchPos in matchPoses)
{
- if (matchPos.Item1 >= message.Length || matchPos.Item2 >= message.Length) return null;
+ if (matchPos.Item1 > message.Length - 1 || matchPos.Item2 > message.Length - 1) return null;
tmpCount = tmpCount * 256 + message[matchPos.Item1];
tmpCount2 = tmpCount2 * 256 + message[matchPos.Item2];
}
diff --git a/Samples/MachineJob/Worker.cs b/Samples/MachineJob/Worker.cs
index f4cc07f..e97f132 100644
--- a/Samples/MachineJob/Worker.cs
+++ b/Samples/MachineJob/Worker.cs
@@ -94,6 +94,7 @@ namespace MachineJob.Service
_logger.LogInformation(dataReturnDef.MachineId + " " + value.Key + " " + value.Value.DeviceValue);
}
+ /*
try
{
using (var context = new DatabaseWriteContext())
@@ -119,7 +120,7 @@ namespace MachineJob.Service
{
//ignore
}
-
+ */
Random r = new Random();
foreach (var value in values)
{