我正在尝试使用Python和Arduino构建CPU监视器。 Arduino运行正常,但我遇到了Python问题。 我的问题是我不能让PySerial发出一个int或一个字符串。
如果我尝试发送Int,我会得到:
TypeError: 'int' object is not iterable
如果我将Int转换为字符串,则错误为:
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中的一个错误还是我只是盲目看错?
答案 0 :(得分:0)
PySerial确实接受字符串。 我相信如果你改变下一行的最后一行,它应该发送数据:
ser.write(str(v))
答案 1 :(得分:0)
可以通过将str转换为二进制来解决: ser.write(STR(V).encode())
答案 2 :(得分:0)
我已经解决了这个问题。简单的解决方案如下:
ser.write([v])
现在,它可以迭代。
要编写字符串,必须将其转换为字节。
ser.write(b'v')