2016-04-05 3 views
0

Ich benutze Python auf einem nvidia tegra serielle Schnittstelle, um eine einfache serielle Verbindung zu einem Arduino Ich versuche, durch ganze Zahlen und Zeichenfolgen zu durchlaufen, aber sie werden abgeschnitten.Python serielle Rückkehr zufällige ascii

mein Code sieht so etwas wie diese

ser = serial.Serial(
port=/dev/ttyS0, 
baudrate=9600, 
parity=serial.PARITY_ODD, 
stopbits=serial.STOPBITS_ONE, 
bytesize=serial.EIGHTBITS 
) 
print ser.isOpen() 
ser.write("hello\n") 

diese Rückkehr h▒▒▒▒, wenn i ganze Zahlen versuche es nur ganze Zahlen zurück 2,4,7,8 sonst ist es ▒ wenn i versuche sowas wie ser.write (str ("hallo")) ich bekomme mehr zufällige zeichen, ist es irgendwie anders codiert gibt es einen weg nur um es normal zu lesen?

+0

Haben Sie auf der Empfängerseite die richtigen Einstellungen? Ich sehe, dass Sie zum Beispiel Parität verwenden. Ist das auf der Empfängerseite eingeschaltet? –

+0

@ JacobPålsson nicht sehr vertraut mit der Parität, auf der Empfängerseite benutze ich nur ein Arduino serial.read() also ich vermute es ist nicht auf – SudoJay

Antwort

0

Versuchen Sie, das Bit parity im Python-Code zu deaktivieren, da dies beim empfangenden Arduino möglicherweise nicht aktiviert ist.

würde Der resultierende Code sein:

ser = serial.Serial(
port=/dev/ttyS0, 
baudrate=9600, 
parity=serial.PARITY_NONE, 
stopbits=serial.STOPBITS_ONE, 
bytesize=serial.EIGHTBITS 
) 
print ser.isOpen() 
ser.write("hello\n") 

Oder, wenn Sie Ihre serielle Kommunikation auf dem Arduino starten, fügen Sie ungerade Parität in den Konfigurationsparameter wie folgt:

Serial.begin(9600, SERIAL_8O1) 

werden feststellen, dass Starten Sie die serielle Kommunikation mit Baudrate 9600, 8 Datenbits, Odd Parity Bit und einem Stopbit.

+0

Danke, kann es jetzt nicht versuchen, aber krank, ob das morgen funktioniert – SudoJay