PySerial: данные повреждены при чтении с последовательного порта

Пытаясь прочитать данные из последовательного порта с помощью модуля pySerial, я не могу восстановить данные, которые я отправляю с микроконтроллера (MSP430).

Микроконтроллер запрограммирован следующим образом:

Serial.print(0x20); //32 in decimal
delay(200);
Serial.print(0x20); //32 in decimal
delay(200);
Serial.print(0x00); //0 in decimal
delay(500);
Serial.print(0x15); //21 in decimal
delay(500);

Приведенный выше код выполняется в бесконечном цикле.

В коде Python я просто читаю 120 байт, используя следующий код, и проверяю переменную последовательного порта.

import serial 
ser = serial.Serial('/dev/ttyACM1', 115200, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,) 
cycles_needed = 120
chars=[]
s=ser.read(cycles_needed)
for i in range(len(s)):
    print s[i]

Вывод приведенного выше кода

3
2
3
2
0
2
1
3
2
3
2
0
2
1

Может кто-нибудь объяснить мне, почему данные разбиты на кусочки, в то время как в идеале он должен считывать данные последовательно, байт за байтом.


person pseudosick    schedule 20.09.2015    source источник


Ответы (1)


В документации Serial.print() Arduino говорится:

Выводит данные на последовательный порт в виде удобочитаемого текста ASCII.

Таким образом, значение 32 заканчивается двумя символами, 3 и 2.

Для записи двоичных данных используйте вместо этого write().

person CL.    schedule 20.09.2015