Skip to content

Commit 593114c

Browse files
committed
update modbusrtuframer.
1 parent cb3a41e commit 593114c

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

pymodbus/framer/rtu_framer.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# pylint: disable=missing-type-doc
33
import struct
44
import time
5+
from typing import List
56

67
from pymodbus.exceptions import (
78
InvalidMessageReceivedException,
@@ -191,6 +192,15 @@ def populateResult(self, result):
191192
result.slave_id = self._header["uid"]
192193
result.transaction_id = self._header["uid"]
193194

195+
def isFrameIntendedForUs(self, _slaves: List[int]):
196+
"""Check if slave is one we want."""
197+
# slave = self._buffer[0]
198+
# if slaves and slave not in slaves:
199+
# return False
200+
201+
# have a look at _validate_slave_id it does the same
202+
return True
203+
194204
# ----------------------------------------------------------------------- #
195205
# Public Member Functions
196206
# ----------------------------------------------------------------------- #
@@ -217,22 +227,24 @@ def processIncomingPacket(self, data, callback, slave, **kwargs):
217227
self.addToFrame(data)
218228
single = kwargs.get("single", False)
219229
while True:
220-
if self.isFrameReady():
221-
if self.checkFrame():
222-
if self._validate_slave_id(slave, single):
223-
self._process(callback)
224-
else:
225-
header_txt = self._header["uid"]
226-
Log.debug("Not a valid slave id - {}, ignoring!!", header_txt)
227-
self.resetFrame()
228-
break
229-
else:
230-
Log.debug("Frame check failed, ignoring!!")
231-
self.resetFrame()
232-
break
233-
else:
230+
if not self.isFrameIntendedForUs(slave):
231+
self.resetFrame()
232+
Log.debug(f"Frame not intended for us, ignoring!! - [{data}]")
233+
break
234+
if not self.isFrameReady():
234235
Log.debug("Frame - [{}] not ready", data)
235236
break
237+
if not self.checkFrame():
238+
Log.debug("Frame check failed, ignoring!!")
239+
self.resetFrame()
240+
break
241+
if not self._validate_slave_id(slave, single):
242+
header_txt = self._header["uid"]
243+
Log.debug("Not a valid slave id - {}, ignoring!!", header_txt)
244+
self.resetFrame()
245+
break
246+
self._process(callback)
247+
Log.debug(f"Frame responded to!! - [{data}]")
236248

237249
def buildPacket(self, message):
238250
"""Create a ready to send modbus packet.

0 commit comments

Comments
 (0)