Seite 1 von 1

Python 3.3 pyserial-2.6 und ser.write

Verfasst: Freitag 30. August 2013, 21:11
von marc
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

Re: Python 3.3 pyserial-2.6 und ser.write

Verfasst: Freitag 30. August 2013, 21:24
von Sirius3
Hallo marc,
Du willst auch keine Strings sondern bytes an die Schnittstelle schicken.

Re: Python 3.3 pyserial-2.6 und ser.write

Verfasst: Freitag 30. August 2013, 21:31
von marc
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

Re: Python 3.3 pyserial-2.6 und ser.write

Verfasst: Freitag 30. August 2013, 21:38
von 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.