0

Python と Arduino で CPU モニターを構築しようとしています。Arduino は正常に動作しますが、Python に問題があります。私の問題は、PySerial に int または string を送信させることができないことです。

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 に答える