Hallo liebes Forum, bin absoluter Anfänger in Python habe bisher nur Microcontroller AVR und STM32 hobbymäßig in C programmiert. Versuche gerade Daten vom AD-Wandler eines Controllers mittels Python 3.9.5 über den Com-Port in den Laptop einzulesen und über tkinter kontinuierlich anzuzeigen. Mein Problem ist, dass z.Zt. nur eine Ausgabe erfolgt obwohl alle 50ms neue Daten gesendet werden. Ich vermute, dass etwas mit dem mainloop nicht stimmt. Würde mich freuen wenn jemand helfen könnte. Anbei ein Screenshot der Ausgabe und der Programmcode.
Du kommst vermutlich aus der Embedded Entwicklung. Mit GUI Frameworks, wie tkinter funktioniert das aber anders. Normalerweise setzt man seine GUI Strukturen auf und startet dann den mainloop. Dort läuft dann alles Eventbasiert (z.B. Button Click, Timer, Events aus externen Threads). Der Aufruf von mainloop kehrt erst wieder zurück, wenn man die GUI schließt. In deinem Fall wird die for Schleife irgenwann fertig, weil read() nichts mehr zu lesen hat. Danach kommst du in den mainloop und siehst das Fenster. Würde read() nicht zu Ende kommen, dann würde bei dir nie ein GUI erscheinen. Wenn du ganz neu bist, würde ich erstmal was simples machen. Also z.B. einen Button, den man anklickt und dann wird irgendwo ein Text geändert. Wenn du da verstanden hast, wie das Konzept funktioniert, dann kannst du es mit dem Com Port versuchen. Dazu gibt es dann mehrere Möglichkeiten: - Pollen der Werte mit Timer aus der GUI - Externer Thread, der neue COM Werte abholt und den Wert als Event an die GUI schickt. - COM Bibliothek, die das abstrahiert und in tkinter eingebunden werden kann Was du auf keinen Fall tun solltest! In eine GUI Funktion in einer Schleife die Serielle Schnittstelle abfragen. Während dessen werden keine anderen GUI Events ausgeführt und die GUI ist blockiert. In Windows wird das Fenster dann irgendwann grau und reagiert nicht mehr.
M.K. B. schrieb: > Dazu gibt es dann mehrere Möglichkeiten: - Ein Callback, wenn Daten für die serielle Schnittstelle anliegen. Du kannst den 'Text' auch mit einer Variablen verknüpfen. Dann ist die Anzeige immer aktuell.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.