Я на 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 реализован на стороне устройства?
Большое спасибо!