0

我正在尝试使用 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 中的一个错误,还是我只是瞎了眼也看到了错误?

4

3 回答 3

0

PySerial 确实接受字符串。我相信,如果您更改下一行的最后一行,它应该发送数据:

ser.write(str(v))
于 2014-04-07T21:06:29.157 回答
0

可以通过将str转换为二进制来解决:ser.write(str(v).encode())

于 2015-02-21T18:07:45.527 回答
0

我已经解决了这个问题。简单的解决方案如下:

ser.write([v])

现在,它可以是可迭代的。

要写入字符串,您必须将其转换为字节。

ser.write(b'v')
于 2017-04-14T07:54:56.727 回答