2014-01-31 3 views
0

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

Моя проблема в том, что я пытаюсь непрерывно получать данные (5.12Mb/s) с устройства в непрерывном режиме. Вот что происходит:

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

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

ответ

1

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

Смежные вопросы