Woher weißt du, dass er nicht in einlesen einspringt? Ich sehe da keine Ausgabe, die das belegen würde. Was auf jeden Fall *nicht* so geht wie du das zu erwarten scheinst: das serielle Daten gepuffert werden, auch wenn kein Gerät geöffnet ist. Das passiert so nicht. Der Kernel hätte sonst eine Menge nutzloser Daten aufzubewahren. Du musst die Verbindung geöffnet halten, und dann später im Timer damit arbeiten. Wozu auch die Verwendung von Objekten anzuraten ist, denn so hantierst du mit globalen Variablen, und die sind boese(tm).
@caargoo: Eingerückt wird in Python mit vier Leerzeichen pro Ebene, nicht mit Tabs.
Du öffnest eine serielle Verbindung und schliesst sie sofort wieder und informierst den Benutzer dann darüber, dass er Verbunden ist, obwohl er das nach dem `close()` ja gar nicht ist‽
Von der GUI heraus sollte man nicht `sys.exit()` aufrufen. Damit umgeht man den von Qt vorgesehenen Weg eine GUI-Anwendung ordentlich zu beenden. Da sollte man `quit()` auf dem Qt-Anwendungsobjekt aufrufen, damit am Ende dann auch tatsächlich der Punkt erreicht wird, wo das `sys.exit()` in der letzten Zeile ausgeführt wird.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
`ser.is_open` ist eine Funktion und damit immer wahr. Das close wird also immer ausgeführt. Was auch nicht weiter schlimm ist, aber das if ist überflüssig.
`ser.in_waiting` ist auch eine Funktion, die kann aber nie größer als 1 sein, weil ein Vergleich einer Funktion mit einer Zahl keinen Sinn ergibt.
`x` wäre für eine ganze Zahl auch ein falscher Name, weil man mit x eine Kommazahl verbindet.
Dann sind natürlich die ganzen globalen Variablen schlecht, weil man im ganzen Code nicht durchblickt. Für GUIs braucht man zwangsläufig Klassendefinitionen.
`is_open` und `in_waiting` sind beides Attribute. Letzteres ein Property, aber das ist ja letztlich ein Implementierungsdetail. Die alte API hatte `isOpen()` und `inWaiting()` als Methoden.
Danke für die zahlreichen Antworten.
Fürs erste funktionierts soweit. Hab mich mit ser.open und close selbst in die Irre geführt.
Die Einrückungen waren in der IDE(Wing) auf Tabs gestellt, habs korrigiert.
@Sirius3: Das mit in_waiting funktioniert aber. Ich schicke 2 Strings, einmal mit 8Zeichen und
einmal mit 9Zeichen, dementsprechend ist x entweder 8 oder 9. Viel größer wird das Progrämmchen
nicht, nur ein zweites Label kommt noch hinzu.
Alle anderen nützlichen Hinweise werde ich versuchen nach und nach umzusetzen.