threading Probleme

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

@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.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: ich verstehe nicht, was Du mit den Code-Zeilen sagen willst. Ich beziehe mich auf
Zeile 121, dort wird was über die Serielle Leitung geschickt.
emilio20
User
Beiträge: 22
Registriert: Donnerstag 17. Oktober 2013, 21:08

Hallo
wenn ihr nochmal ein Beispiel für mich habt wäre ich euch dankbar. Kann leider nicht nachvollziehen von was ihr redet.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

@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.
Antworten