python3 pySerial TypeError:不支持unicode字符串,请编码为字节:

时间:2016-02-26 03:24:31

标签: python-3.x arduino pyserial

在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()

3 个答案:

答案 0 :(得分:24)

将您正在写入的数据编码为序列号,在您的情况下" serialcmd" to bytes.try以下内容:

ser.write(serialcmd.encode())

答案 1 :(得分:9)

我在学习“ Arduino Python串行”时发现了同样的问题
您可以通过另一种方式进行此操作:

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

答案 2 :(得分:1)

如果我们拥有字符串本身而不是变量,则可以这样:

    ser.write(b'\x0101')

这会将字符串转换为bytes类型