Двоичные данные с pyserial (последовательный порт python)

StackOverflow https://stackoverflow.com/questions/472977

Вопрос

Метод serial.write () в pyserial, похоже, отправляет только строковые данные. У меня есть массивы типа [0xc0,0x04,0x00] и я хочу иметь возможность отправлять / получать их через последовательный порт? Существуют ли какие-либо отдельные методы для необработанного ввода-вывода?

Я думаю, что мне может потребоваться изменить массивы на ['\ xc0', '\ x04', '\ x00'], но все же нулевой символ может представлять проблему.

Это было полезно?

Решение

Вам нужно преобразовать ваши данные в строку

"\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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top