Я пишу программу, которая напрямую взаимодействует с периферийным устройством USB через libusb.У рассматриваемого устройства есть (среди прочего) кнопка со светодиодом на нем.Я читаю состояние кнопки с помощью асинхронной передачи прерывания, а затем, как только обнаруживается нажатие, я включаю светодиод кнопки, пока не обнаружу, что кнопка была отпущена.Я выполняю новую асинхронную передачу прерываний для чтения с устройства каждый раз, когда получаю больше данных, поэтому я могу читать несколько событий с устройства в цикле.
Проблема в том, что я не получаю данныес устройства, если у меня нет ожидающей операции чтения на устройстве при генерации данных.То есть, если я не жду активного чтения при нажатии или отпускании кнопки, эти данные просто теряются.Поскольку существует окно между получением данных и выполнением другого запроса на чтение асинхронного прерывания, иногда данные теряются, и, например, я получаю событие «кнопка нажата», но не событие «кнопка отпущена», и светодиод остается включенным даже после того, как у меняперестал нажимать кнопку.
Есть ли другой способ взаимодействия с устройством (кроме передачи прерываний в цикле), который может гарантировать, что данные не будут потеряны, даже если у меня нет ожидающей операции чтения ввремя, когда устройство генерирует данные?Или есть способ обеспечить отсутствие окна, в котором я не читаю с устройства, и предотвратить таким образом потерю данных?