2016-10-09 3 views
0

Ich erhalte serielle Ausgabe vom Arduino über meine Raspberry Pi (Python).Konvertieren der seriellen Lese (ASCII) in Floating-Nummer

Der Code verwendet:

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

Problem: Ich kann den seriellen Ausgang Entfernen der unerwünschten Zeichen für einige der Lesungen drucken, nach, dass es einen Fehler "Valueerror gibt: string nicht konvertieren konnte zu schwimmen : "

+0

Float-String, Hex, Byte, welche eingehende? Alle haben unterschiedliche Extraktionsverfahren. Sie müssen 'Byte-Größe 'überprüfen, wenn Float' hex' ist (32,64,128,256 Bit). ''{0: 0.2f}'. Format (float (Wert))' – dsgdfg

Antwort

0

Ich habe den gleichen Fehler, wenn ich versuchte, die Daten zu schnell zu lesen. Finden Sie das heraus, indem Sie auch die ASCII-Daten drucken (vor der Konvertierung in float). Manchmal wurde es als leere Zeile gedruckt. Ich verlangsamte nur die Schleife nach unten:

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

Zuerst hatte ich:

time.sleep (.5)

Das Arduino sendet auch die Daten alle 0,5 Sekunden, so dass manchmal war es einfach nicht Daten noch nicht.