2016-04-05 4 views
0

Я использую python для последовательного порта nvidia tegra для создания простого последовательного подключения к arduino. Я пытаюсь передать целые числа и строки, но они обрезаются.python serial возвращает случайный ascii

мой код выглядит примерно так

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") 

это возвращение h▒▒▒▒, при попытке целых чисел он будет возвращать только целые числа 2,4,7,8 иначе это ▒ , если я попробуйте сделать что-то вроде ser.write (str («hello»)). Я получаю больше случайных символов, иначе он кодируется по-разному, есть ли способ читать его обычно?

+0

У вас есть правильные настройки на принимающей стороне? Я вижу, что вы используете Parity, например. Включено ли оно на принимающей стороне? –

+0

@ JacobPålsson не очень хорошо знаком с паритетом, на принимающей стороне я просто использую arduino serial.read(), поэтому я предполагаю, что это не на – SudoJay

ответ

0

Попробуйте отключить parity бит в коде python, так как это может быть не активировано в принимающем Arduino.

Полученный код будет:

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") 

Или при запуске последовательной связи на Arduino, добавить нечетный в параметре конфигурации, как показано ниже:

Serial.begin(9600, SERIAL_8O1) 

Это будет начать последовательную связь с скоростью передачи 9600, 8 бит данных, бит четности и один стоповый бит.

+0

Спасибо, не могу попробовать сейчас, но плохо посмотрите, работает ли это завтра – SudoJay

Смежные вопросы