在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()
答案 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
类型