Максимизируйте пропускную способность, используя java-libusb

В настоящее время я занимаюсь разработкой устройства USB (регистратор данных на основе микроконтроллера) и хотел бы собирать данные с устройства на хост-компьютер для визуализации. Libusbjava используется для передачи данных через USB. В настоящее время я могу подключиться к устройству и отправлять / получать данные.

Моя проблема заключается в том, что я пытаюсь непрерывно получать данные (5,12 Мбит / с) от устройства непрерывным способом. Вот что происходит:

· Если я пытаюсь непрерывно собирать данные в цикле while, желаемая пропускная способность USB достигается, но поток графического отображения больше не работает. · Если я пытаюсь собирать данные каждые 1 мс, используя поток таймера (640 байт каждые 1 мс), пропускная способность значительно уменьшается, но графический поток является функциональным

Каков был бы оптимальный способ структурировать мой код Java, чтобы обеспечить желаемую пропускную способность и графики?

1 ответ

Обработайте USB-соединение в фоновом режиме, используя SwingWorker, Пытаться обновлять графический интерфейс каждую миллисекунду нереально. Вместо, publish() обновления в пакетах и process() их в потоке отправки событий.

Другие вопросы по тегам