Двоичные данные с pyserial (последовательный порт python)
последовательный.метод write () в pyserial, похоже, отправляет только строковые данные. У меня есть массивы, такие как [0xc0,0x04,0x00] и хотите иметь возможность отправлять/получать их через последовательный порт? Существуют ли отдельные методы ввода-вывода raw?
Я думаю, что мне может потребоваться изменить массивы на ['xc0','x04','x00'], тем не менее, нулевой символ может представлять проблему.
2 ответов
вам нужно преобразовать ваши данные в строку
"\xc0\x04\x00"
нулевые символы не являются проблемой в Python - строки не заканчиваются нулевым байтом ведет себя так же, как другой байт "\x00"
.
один из способов сделать это:
>>> import array
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring()
'\xc0\x04\x00'
альтернативный метод, без использования array
модуль:
def a2s(arr):
""" Array of integer byte values --> binary string
"""
return ''.join(chr(b) for b in arr)