Python3 pySerial类型错误:不支持Unicode字符串,请编码为字节:

51
在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个回答

72

将您要写入串行端口的数据进行编码,对于您的情况是“serialcmd”,转换为字节。尝试以下代码:

ser.write(serialcmd.encode())

26

我发现你在学习“Arduino Python Serial”时遇到了同样的问题。
你可以尝试另一种方法:

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

7
如果我们有字符串本身而不是在变量中,我们可以这样做:

如果我们拥有字符串本身而不是在一个变量中,我们可以像这样处理:

    ser.write(b'\x0101')

这将把字符串转换为字节(bytes)类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接