ich hab ein kleines Problem.
Und zwar rufe ich untenliegende methode auf und eig. ist es so Gedacht, dass nach Timeout X oder nach read_until(expected=\\r, size=None)
weitergegangen wird und das funktioniert auch soweit. Das Problem ist ab und zu kommen sich der Timeout und das read_until() in die quere.
Wenn etwas auch der Schnittstelle gelesen wird kurz bevor der timeout abgelaufen ist schneidet er mit die Nachricht auseinander was schlecht ist.
Die eig. Nachricht wäre dann z.b "a:test\r" und lesen tue ich dann z.b "a:t" und "est\r".
Jetzt stell ich mir die Frage ok wie bekomme ich das hin, keinen Timeout zumachen (timeout=None) d.h er warte bei read_until() so lange bis das endzeichen erkannt wird udn geht dann weiter. Problem ist natürlich wenn ich das Programm schließen will dann kann er die Comports nicht deinitialisieren, da er ja in dem Thread noch den Comport verwendet.
Habt ihr eine elegante möglichkeit?
Code: Alles auswählen
def serial_messages(self):
while not self.interrupt:
command = self.com_programm.read_until(expected=LF, size=None).strip()
if command.decode('utf-8') != "":
# do something