通过PySerial从Python发送整数/字符串时出错
我正在用Python和Arduino制作一个CPU监控器。Arduino运行得很好,但我在Python上遇到了问题。
我的问题是,我无法让PySerial发送整数或字符串。
当我尝试发送一个整数时,我得到了:
TypeError: 'int' object is not iterable
如果我把整数转换成字符串,错误变成了:
TypeError: an integer is required
这看起来很奇怪……
这是我的代码:
import psutil
import serial
ser = serial.Serial(2)
while True:
line = ser.readline()
line = str(line[:-2],'utf-8')
if line=="cpu":
cpus = psutil.cpu_times_percent(percpu=True)
for x in range(4):
v=int(cpus[x][0]+cpus[x][1])
print(v)
ser.write(v)
注释掉最后一行确认了CPU返回的值是0到100之间的整数,这正是我预期的。
这是PySerial的一个bug,还是我自己看不出问题所在?
3 个回答
0
我已经解决了这个问题。简单的解决办法如下:
ser.write([v])
现在,它可以被遍历了。
要写入字符串,你需要把它转换成字节。
ser.write(b'v')
0
这个问题可以通过把字符串转换成二进制来解决:
ser.write(str(v).encode())
0
PySerial确实可以接受字符串。我认为如果你把最后一行改成下面这一行,它就应该能发送数据了:
ser.write(str(v))