Arduino SoftwareSerialライブラリを使用してシリアルデータをRdbberryピンに送信しています。私はArduinoのシリアルデータをRaspberryに正常に送信することができます。送信した整数が文字列に相当するものとして到着するだけです。Python readline()は、int型またはfloat型に変換されない文字列を返します。
問題:私は.readlineは()のfloatまたはint型に返すことに文字列を変換しようとしていますが、私はそうすることができません
。
import serial
oSer = serial.Serial("/dev/ttyAMA0",baudrate=57600,timeout=1)
while True:
sInput = oSer.readline()
print sInput #Returns: >>1,2,3,
lsInput = sInput.split(',')
print lsInput #Returns: >>['1','2','3','\r\n']
これをintまたはfloatに変換するにはどうすればよいですか?私は単純に数を使って算術演算を行う必要があります。私が試してみました:
lfInput = [float(i) for i in lsInput] #Returns: >> ValueError: could not convert to float:
liInput = [int(i) for i in lsInput] #Returns: >> ValueError: invalid literal for int() with base 10: ''
回答回答を提供ジョンとパドレイクに
おかげで、私は上記の問題を解決する方法についての更新を確認することができます。私はPadraicのソリューションを好みますが、ややエレガントですが、いずれかの作業を行います。私は、次を追加しました:
ジョンの、特にパッドのソリューション(より良く、より詳細については、下記の回答を参照してください):
sInput = oSer.readline().strip() #but see answers below from Pad for more detail
末尾の '、'は一貫していますか? –
3つ以上の番号を取得するとどうなりますか? –
マーク:末尾の「カンマ」私は故意にArduinoのスケッチに入れて、後に続く「\ r \ n」という用語を分けます。そのコンマはもはや必要ではありません。 – Misha