python: анализ строк из serial.read ()

1

Я общаюсь между python script на ПК и вложенным c. У меня есть следующая проблема:

Из mcu (embedded c) я отправляю двоичное представление целых чисел и поплавков. Используя терминал Br @y, я проверил, что двоичное представление чисел отправляется из mcu. В python script я использую pySerial serial.read для получения байтов, помещая их в список.

Если я отправлю следующий номер из mcu: 0x10000000 (16 базисных 10, в маленьком значении), он отображается в python script как '\ x10\x00\x00\x00', что не является ужасным, так как я могу просто вытащить персонажей из непротиворечивых индексов. Однако, когда две шестнадцатеричные цифры представляют символ ascii, строка будет иметь символ ascii вместо \xDD.

Есть ли способ заставить строку использовать только представление \xDD, а не значения ascii? Или мне нужно просто перебирать строку, удаляя '\ x' и преобразовывая значения ascii, когда я иду?

Спасибо

Теги:
hex
ascii
pyserial

2 ответа

2
Лучший ответ

Вы уверены, что \x находится в строке? Это похоже на строку представления Python (repr) для двоичных данных, но символы \x на самом деле не находятся в строке.

Модуль структуры может распаковывать двоичные данные.

s = '\x10\x00\x00\x00'
i = struct.unpack("I", s)[0]

i теперь 16 (int).

2

Python всегда печатает строку таким же образом.

Попробуйте функцию "hexlify" из модуля binascii:

>>> binascii.hexlify('\x10\x00\x00\x00')
'10000000'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню