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) {