Максимизируйте пропускную способность, используя java-libusb
В настоящее время я занимаюсь разработкой устройства USB (регистратор данных на основе микроконтроллера) и хотел бы собирать данные с устройства на хост-компьютер для визуализации. Libusbjava используется для передачи данных через USB. В настоящее время я могу подключиться к устройству и отправлять / получать данные.
Моя проблема заключается в том, что я пытаюсь непрерывно получать данные (5,12 Мбит / с) от устройства непрерывным способом. Вот что происходит:
· Если я пытаюсь непрерывно собирать данные в цикле while, желаемая пропускная способность USB достигается, но поток графического отображения больше не работает. · Если я пытаюсь собирать данные каждые 1 мс, используя поток таймера (640 байт каждые 1 мс), пропускная способность значительно уменьшается, но графический поток является функциональным
Каков был бы оптимальный способ структурировать мой код Java, чтобы обеспечить желаемую пропускную способность и графики?
1 ответ
Обработайте USB-соединение в фоновом режиме, используя SwingWorker
, Пытаться обновлять графический интерфейс каждую миллисекунду нереально. Вместо, publish()
обновления в пакетах и process()
их в потоке отправки событий.