senden über Com port RS 232

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

Das ist immer noch unguenstig, weil du eine Fehler erzeugst, wenn der Benutzer erst senden drueckt. Denn dann gibt es kein self.ser. Knallt also. Wenn man das so machen will, sollte man die Bedienelemente, die von der Operation oeffnen abhaengen, inaktivieren/verstecken oder aehnliches. Mindestens aber *immer* ein self.ser anlegen (mit None vorbelegt), und sicherstellen, dass man im Code der das probiert zu benutzen prueft, ob das vorhanden ist.

Die Frage jenseits davon: funktioniert es mit dem newline? Wenn nicht, ist aus Python-Sicht nichts anders zu machen, und das Problem muss bei der Verkabelung/Hardware liegen.
Micha_1909
User
Beiträge: 14
Registriert: Mittwoch 29. April 2020, 14:38

@_deets_
also an der Verkabelung kann es nicht liegen , da ich mit nem normalem Terminal was senden kann und es auch an einem anderen Port sehen kann.
Muss ich ausserhalb der Funktion self.ser(COM1,...) definieren?
@_blackjack_
so wie der Code jetzt aussieht kann ich noch nix senden.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn es mit anderer Software geht, solltest du deine GUI beiseite legen, und erstmal nur ein Skript schreiben, mit dem du die serielle Kommunikation zum laufen bekommst.

Und was du tun musst habe ich doch beschrieben. IMMER ein self.ser anlegen, eben schon im Konstruktor. Und in deinen ganzen Funktionen die das benutzen pruefen, ob es gesetzt ist. Uebrigens ist deine GUI auch ansonsten falsch, weil du den Open button umkonfigurierst, statt den Close Button zu benutzen. Kann man machen, dann sollte man nur auch in der Aktion fuer den einen Button unterscheiden, was denn passieren muss.
Micha_1909
User
Beiträge: 14
Registriert: Mittwoch 29. April 2020, 14:38

Jetzt weiß was du meinst @_blackjack_ Traceback (Most Regent call last):
self.ser.write(‘1234\r\n‘)
Aber wie kann man das anders schreiben.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte den vollstaendigen Traceback zeigen, nicht nur eine Nacherzaehlung.

Und was ist "das anders schreiben"?
Micha_1909
User
Beiträge: 14
Registriert: Mittwoch 29. April 2020, 14:38

@_deets_

Hat sich erledigt ich hab’s ans laufen bekommen.
Vielen Dank nochmal für die Hilfe.
Antworten