Python 3.3 pyserial-2.6 und ser.write

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
marc
User
Beiträge: 5
Registriert: Donnerstag 11. September 2008, 12:03
Kontaktdaten:

Hallo
Ich habe auf Python 3.3 umgestellt und pyserial-2.6 erneut installiert.
(Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32)

Das Programm habe ich soweit wieder zum laufen bekommen. Nun hänge ich seit 2 Tagen an der seriellen Schnitstelle und komme nicht weiter.

Code: Alles auswählen

#ser = serial.Serial(comport, 9600, timeout=1, parity=serial.PARITY_EVEN)
                
                ser = serial.Serial()
                ser.port = comport
                ser.baudrate = 9600
                ser.bytesize = serial.EIGHTBITS
                ser.parity = serial.PARITY_EVEN
                ser.timeout = 1

                          
                ser.open()
                #print ("ser =", ser)
                ser.write("'\x02\x1F\x02'") #Logo Init
                print ("Logo Init fertig")
                status = ser.read(5)                        
                print (status)

                ser.write('\x55\x17\x17\xAA') #Logo in Run oder Stop??
                print ("Logo in Run oder Stop fertig")
                status = ser.read(2)
                
               
                ser.write('\x55\x13\x13\x00\xAA') #Logo IO Status holen                     
                byte = ser.read(1)
                antw = ord(byte)
                debug (antw)
                print ("Logo IO Status holen fertig")
Die Initialisierungsparameter der Schnittstelle sind gleich. Ich habe extra noch einmal das Backup der Maschine gestartet und mit

Code: Alles auswählen

 print ("ser =", ser)
die beiden verglichen.

Das Programm bricht beim Ersten ser.write ab und in der IDLE Shell wird "string argument without an encoding" als Fehler angezeigt .
Die Programmzeilen mit ser.write sind unverändert gegenüber der Pyhton 2.7 Version, in der es ohne Probleme funktioniert.
Hat jemand eine Idee was ich noch versuchen könnte?
Danke
Marc
Ein Computer ist ein hochkomplexes System, in dem alles Mögliche und
Undurchschaubare geschieht, so dass es an ein Wunder grenzt, wenn ab und zu tatsächlich das passiert, was passieren soll.
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo marc,
Du willst auch keine Strings sondern bytes an die Schnittstelle schicken.
marc
User
Beiträge: 5
Registriert: Donnerstag 11. September 2008, 12:03
Kontaktdaten:

Hallo Sirius3
Alle anderen Formen etwas zu senden sind fehlgeschlagen.
Hast du eine Idee wie ich bytes senden. Bei mir läuft alles auf einen Fehler hin
Ein Computer ist ein hochkomplexes System, in dem alles Mögliche und
Undurchschaubare geschieht, so dass es an ein Wunder grenzt, wenn ab und zu tatsächlich das passiert, was passieren soll.
BlackJack

@marc: `unicode`/`str` und `str`/`bytes` ist einer *der* Unterschiede zwischen Python 2 und 3. Vielleicht solltest Du mal ein Python 3 Tutorial durcharbeiten.
Antworten