Wenn das serial
Paket, das Sie verwenden pySerial ist, beachten Sie bitte die Definition des Serial.read()
method:
read(size=1)
Parameter: Größe - Anzahl der zu lesenden Bytes.
Rückgabe: Bytes vom Port gelesen.
Lesen Sie die Größe Bytes von der seriellen Schnittstelle. Wenn ein Zeitlimit festgelegt ist, kann es weniger Zeichen wie angefordert zurückgeben. Ohne Timeout wird blockiert, bis die angeforderte Anzahl von Bytes gelesen wurde.
in Version geändert 2.5: Gibt eine Instanz von Bytes, wenn verfügbar (Python 2.6 und neuer) und str anders.
Obwohl Sie byte
Objekte zu verarbeiten versuchen, können Sie (abhängig von Python-Version) werden Handhabung str
oder bytes
(Array) Objekte. Diese Objekte entsprechen nicht unbedingt ganzzahligen Werten.
Selbst wenn byte
Objekte aus read()
empfangen, die größte wird unsigned integer 255 sein Vergleich value
mit 400 macht keinen Sinn. Versuchen Sie, den Typ der zurückgegebenen Objekte mit einer einfachen Debugausgabe zu finden.
print type(value)
Falls Sie ein str
Objekt behandeln müssen, überprüfen Sie die Verwendung von ord()
für convertion.
(Der flush
Vorschlag bezieht sich auf die ursprüngliche Frage, die print
verwendet, nicht tkinter
).
Siehe how-to-flush-output-of-python-print, und versuchen Sie die Befehlszeilenshell, nicht die IDE, die sich auf die Pufferung auswirken kann.
Können wir ein Beispiel, was es tut vs. was Sie erwarten? – James
Nun, ich betreibe es in der Wing Python Shell und es bleibt einfach bei "Evauluating blablah.py" - es gibt nie wirklich irgendwelche Werte aus. Dann, wenn ich den USB vom Arduino entferne, kommen die Werte hoch. Als ob sie sich erst registrieren würden, wenn ich das getan hätte. – jakke34
Angenommen, dass ser.read() tatsächlich zurückgibt, wird Tkinter nichts anzeigen, außer Tkinter.Frame (... Tk() ...). Mainloop() wird aufgerufen. – msw