2016-10-09 28 views
0

私はArduinoから自分のRaspberry Pi(Python)を通してシリアル出力を取得しています。シリアルの読み込み(ASCII)を浮動小数点に変換する

使用コード:

import serial 
ser=serial.Serial('/dev/ttyACM0',115200) 
while True: 
    value = float(ser.readline().strip()) 
    print '{0:0.2f}'.format(value) 

問題:float型に文字列を変換できませんでした:私は、それは誤り」とValueErrorを与えることをした後、測定値の数のために不要な文字を削除シリアル出力を印刷することができていますが: "

+0

フロート文字列、16進数、バイト、着信ですか?すべてが異なる抽出方法を持っています。 floatが 'hex'スタイル(32,64,128,256ビット)の場合は、' byte size'をチェックする必要があります。 '' {0:0.2f} '。format(float(value)) ' – dsgdfg

答えて

0

データをあまりにも速く読み取ろうとしたときに同じエラーが発生しました。 ASCIIデータを印刷することでそれを発見しました(浮動小数点への変換前)。ときどき空の行として印刷されることがあります。私はちょうどループを鈍化:

while True: 
    # readline, etc 
    time.sleep(1) 

最初に私が持っていた:

time.sleep(0.5)

のArduinoはまた、すべての0.5秒は、その時々ちょうどそこにあったデータを送信し

なしデータはまだありません。

関連する問題