通过PySerial从Python发送Ints / Strings时出错

时间:2014-04-07 20:00:53

标签: python arduino pyserial psutil

我正在尝试使用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中的一个错误还是我只是盲目看错?

3 个答案:

答案 0 :(得分:0)

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

ser.write(str(v))

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

ser.write([v])

现在,它可以迭代。

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

ser.write(b'v')