@emilio20: zu den ersten beiden Zeilen der Ausgabe finde ich aber kein print. Wenn Du das Programm wirklich so ausgeführte wurde, sollte Python in Zeile 21 mit einem NameError ausssteigen.
@__deets__: es wird bei ultrasonicSensorRead nicht nur ein Callback gesetzt, sondern auch jedesmal etwas über die serielle Schnittstelle geschickt. Was Du da zu weiterlaufen, etc. annimmst, finde ich nicht im Quellcode.
threading Probleme
@Sirius: das mit der Kommunikation ist richtig, aber danach kommen ja ggf. Motorsteuerbefehle - und ggf. blockiert das senden, wenn der buffer voll ist.
Zum Rest:
https://github.com/Makeblock-official/P ... api.py#L85
https://github.com/Makeblock-official/P ... pi.py#L307 (im Thread)
https://github.com/Makeblock-official/P ... pi.py#L331 (dann auch im Thread)
Damit wird also im Lesethread geschrieben, *warum* sich das verklemmt kann ich ohne Debugger auch nicht nachvollziehen, halte es aber schon fuer ziemlich wahrscheinlich - denn sonst haette emilio ja seine prints in der Konsole.
Zum Rest:
https://github.com/Makeblock-official/P ... api.py#L85
https://github.com/Makeblock-official/P ... pi.py#L307 (im Thread)
https://github.com/Makeblock-official/P ... pi.py#L331 (dann auch im Thread)
Damit wird also im Lesethread geschrieben, *warum* sich das verklemmt kann ich ohne Debugger auch nicht nachvollziehen, halte es aber schon fuer ziemlich wahrscheinlich - denn sonst haette emilio ja seine prints in der Konsole.
@Sirius3 die Zeilen belegen, dass dein re-scheduling im event-callback dazu fuehrt, dass der eigentlich nur fuer das lesen der seriellen Schnittstelle zustaendige Thread ploetzlich auch schreibt. Ich bezweifele, dass das so gewollt ist.
@emilio: Sirius3 hat einen Fehler in dem von dir geposteten Skript aufgezeigt, solange du den nicht behebst, oder das Skript postest, das du *wirklich* laufen laesst, kann man da wenig machen.
Und ich habe dir auch schon Hinweise gegeben, wie du dem Problem selbst auf die Spur kommen kannst - durch print-debugging, und du kannst zB die UltrasonicSensor so modifizieren, dass sie *kein* callback request macht, um zu schauen, ob dann deine Hauptschleife weiterlaeuft. Debuggen gehoert zum programmieren. Sonst hiesse es Eintippen.
@emilio: Sirius3 hat einen Fehler in dem von dir geposteten Skript aufgezeigt, solange du den nicht behebst, oder das Skript postest, das du *wirklich* laufen laesst, kann man da wenig machen.
Und ich habe dir auch schon Hinweise gegeben, wie du dem Problem selbst auf die Spur kommen kannst - durch print-debugging, und du kannst zB die UltrasonicSensor so modifizieren, dass sie *kein* callback request macht, um zu schauen, ob dann deine Hauptschleife weiterlaeuft. Debuggen gehoert zum programmieren. Sonst hiesse es Eintippen.