web-dev-qa-db-ja.com

python3 pySerial TypeError:Unicode文字列はサポートされていません。バイトにエンコードしてください:

Python 3 pySerialライブラリをインポートしたので、シリアルコマンドでArduino Unoと通信できました。
Python 2.7では非常にうまく機能しましたが、Python 3ではエラーが発生し続けます。

TypeError:Unicode文字列はサポートされていません。バイトにエンコードしてください: 'allon'

Python 2.7で私が別のやり方でした唯一のことはraw_inputしかし、Python 3.で何が起こっているのかわからない

    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

シリアルに書き込むデータをエンコードします。この場合、「serialcmd」をバイトにエンコードします。次を試してください。

ser.write(serialcmd.encode())

27
nsr

「Arduino Python Serial」を学ぶためにあなたと同じ問題を見つけました
これを別の方法で行うことができます:

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