You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
951 B

from .IdiBusSerialLine import *
from .IdiBusParse import IdiBusMMESParser, IdiBusMMESGParser
SelfAddress = 254
#Emulates slave module to communicate with master
class IdiBusSlave():
def __init__(self,address,line:IdiBusSerialLine):
self.address = address
self.line = line
def await_message(self, retries):
addr = 0
for i in range(0,retries):
msg = self.line.readData(self.line.maxPacketSize)
# No response
if len(msg) < 3:
continue
parser = IdiBusMMESParser(msg)
# Corrupted
if parser.validate() == -1:
continue
# This one is not for this Slave
if parser.getAddress() != self.address:
continue
# Got a correct message
if parser.getMesType() == 1:
parser = IdiBusMMESGParser(msg)
return parser
return None