Опрос USB для данных с использованием USB4Java
Я использую USB4Java для опроса определенного USB-устройства в потоке и сразу считываю данные, когда они доступны. Проблема, с которой я сталкиваюсь, заключается в том, что нет available()
такой же метод, как и для потоков, который проверяет доступное количество байтов в порте для чтения (как NRSerial для последовательных портов). Есть ли эквивалентный способ сделать это для USB? Если нет, могу ли я просто вызвать функцию чтения и подождать тайм-аут? Последнее кажется мне слишком грубой силой.
1 ответ
Просто нет другого выбора, кроме опроса (по крайней мере, в USB 2.0). Вот как работает чтение по USB: хост запрашивает данные у устройства. Устройство должно сохранить данные для отправки на хост в буфер и ждать, пока хост запросит их. Только USB 3 предоставляет устройству возможность сообщать хосту, когда новые данные находятся в буфере (хотя технически это также опрос хоста для флага, который является более легковесным, чем инициация передачи чтения).