2016-06-06 6 views
0

Ich möchte Daten mit PySerial an ein Peripheriegerät senden. In den empfangenen Daten werden jedoch Fehler irgendwann angezeigt.Fehler in den Daten, die über serielle Schnittstelle mit Python empfangen wurden

import serial 

dongle = serial.Serial("/dev/ttyUSB0", 9600) 

dongle.write("Some data\n") 

Und dann wird Some data\n an das Peripheriegerät übertragen.

Manchmal funktioniert es gut, aber irgendwann, erscheinen Fehler in den Daten erhalten: Somata\n, Som a\n, etc ...

, wie das Problem zu beheben?

Antwort

0

Ich vermute, dass Sie eine Zwischen-Char-Verzögerung zu Ihrem seriellen Schreiben hinzufügen müssen. Leider ist so etwas in PySerial nicht verfügbar. Es gibt eine inter_byte_timeout, aber das ist für Lesevorgänge.

Etwas wie:

import serial 
import time 

def write_with_delay(command): 
    while len(command)>0: # Loop till all of string has been sent 
     char_to_tx = command[0] # Get a 
     dongle.write(char_to_tx) 
     command = command[1:] # Remove sent character         
     time.sleep(0.01) 

dongle = serial.Serial("/dev/ttyUSB0", 9600) 
write_with_delay('Some data\n') 

, die zwischen den einzelnen Zeichen der Zeichenfolge mit einem 10 ms (0,01 s) Verzögerung senden. Normalerweise ist das Hinzufügen von willkürlichen Verzögerungen in Code eine schlechte Sache, aber für serielle Kommunikation ist es manchmal notwendig.

Verwandte Themen