Ich muss eine bestimmte Größe Daten durch serielle Schnittstelle während bestimmter Zeit warten. Wenn ich für diese Zeit weniger Daten bekomme, möchte ich Lesedaten vermeiden. Wenn ich früh genug Daten bekomme, möchte ich sie lesen und aufhören, auch auf Daten zu warten.Warten auf Daten über die serielle Schnittstelle während einer bestimmten Zeit in Python
Meine aktuelle Lösung sieht wie folgt aus:
serial.open()
start_time = time()
while serial.in_waiting < expected_data_size: # waiting certain size of data
if time_to_wait < time() - start_time: # time is expired
serial.close()
return
data = serial.read(expected_data_size)
serial.close()
Aber ich denke, es ist nicht gut Lösung, weil Vergleiche (in „während“ und „wenn“ Blöcke) viele Male auftreten, während es für eine wartet Daten.
Bitte beraten Sie mich, wie Sie es besser in Python 3 implementieren. Um mit der seriellen Schnittstelle zu arbeiten, verwende ich pySerial.
Vielen Dank im Voraus!
Vielen Dank für Ihre Antwort! Genau das brauche ich! Kannst du mir noch etwas sagen? Ich weiß, dass die ersten N Sekunden ich sowieso nicht genug Daten bekommen werde. Lohnt es sich, vor ser.read (data_size) sleep (N) hinzuzufügen oder nicht? –
@RomanAlexeev, Sie müssen nicht schlafen hinzufügen, API wird das für Sie behandeln. – Windchill
Vielen Dank für Ihre Hilfe! –