web-dev-qa-db-fra.com

python3 pySerial TypeError: les chaînes unicode ne sont pas supportées, veuillez encoder en octets:

Dans Python 3 j'ai importé la bibliothèque pySerial afin de pouvoir communiquer avec mon Arduino Uno par des commandes en série.
Cela a très bien fonctionné dans Python 2.7 mais dans Python 3

TypeError: les chaînes unicode ne sont pas supportées, veuillez encoder en octets: 'allon'

Dans Python 2.7, la seule chose que j'ai faite différemment est d'utiliser raw_input mais je ne sais pas ce qui se passe dans Python 3. Voici mon code

    import serial, time
    import tkinter
    import os








    def serialcmdw():
    os.system('clear')
    serialcmd = input("serial command: ")
    ser.write (serialcmd)
    serialcmdw()

    ser = serial.Serial()
    os.system('clear')
    ser.port = "/dev/cu.usbmodem4321"
    ser.baudrate = 9600
    ser.open()
    time.sleep(1)
    serialcmdw()
18
Nik Hendricks

Encodez vos données que vous écrivez en série, dans votre cas "serialcmd" en octets.try ce qui suit:

ser.write (serialcmd.encode ())

27
nsr

j'ai trouvé même votre problème pour apprendre "Arduino Python Série"
Vous pouvez faire autrement:

ser.write(str.encode('allon'))
13