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