Отправка и получение байтов на устройство HID на Raspberry Pi в Python? - PullRequest
2 голосов
/ 05 марта 2020

Я на Raspberry Pi 4 и имею устройство HID, подключенное через USB, которое выглядит как /dev/hidraw0. (Если вам интересно: это калькулятор HP Prime.)

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

Первые проблемы: сначала я не могу отправить на устройство ровно два байта. Это мой код:

import os, sys
fd = os.open("/dev/hidraw0", os.O_RDWR|os.O_NONBLOCK)
bytesWritten = os.write(fd, bytes([252, 8]))
print('bytes written: ' + str(bytesWritten))

Это распечатывает:

bytes written: 8

Почему было записано 8 байтов, когда я указал только два байта? Что здесь происходит?

Второй вопрос: в первом тесте я хотел прочитать постоянное количество байтов с устройства с помощью:

answer = os.read(fd, 20)

Это приводит к ошибке

OSError: [Errno 11] Resource temporarily unavailable

Любой базовый c совет для этого? Или это зависит от того, как протокол HID реализован на стороне устройства?

Большое спасибо!

...