Кроссплатформенное Java+SWT GUI приложение
Необходимо написать программу GUI на Java+SWT которая получает данные с внешнего устройства через виртуальный COM порт и отображает их на экране.
Полностью рабочая программа с подобным функционалом есть на С++, но рассчитанная на консольный режим работы.
Программа получает пакеты данных для отображения с внешнего устройства, взаимодействие с которым осуществляется через виртуальный COM порт.
В программе следует учесть особенность, что пакетов с внешнего устройства может приходить порядка 2000–3000 в секунду. При этом отображение не должно «тормозить» и данные не должны теряться (если вовремя их не выбрать с устройства, данные теряются).
На данный момент при включенном выводе на экран полученных данных, данные таки теряются ввиду медленного их вывода на экран. Вижу решение проблемы в создании двух потоков, один из которых занимается отображением, второй — получение данных от устройства.
Вывод данных в реальном времени не интересен, и поэтому даже если между получением данных от устройства и отображением его на экране пройдет несколько секунд — ничего страшного. Важно не потерять данные.
В дальнейшем собранные данные обрабатываются пользователем в оффлайне.
Достаточно обычного классического интерфейса для отображения полученных данных в виде ListView с возможностью сортировки по каждому полю, группировке по полю, а также записи/чтению полученных данных в/из файла.
Также добавить пользователю возможность выбора скорости, фильтра, режима работы (сейчас все это жестко задается в программе), сделать возможность фильтрации отображаемых сообщений «на лету».
Обязательное требование — документирование классов, методов и никакого «спагетти-кода». Данный проект планируется сделать OpenSource.
Приложение планируется сделать кроссплатформенным, поэтому на выходе хотелось бы получить что-то наподобии этого: http://angryip.org/download/#source
Обязательно наличие поддержи мультиязычности интерфейса.
Исходники на С++ (CodeBlock), а также пример вывода консольной программы прилагаю.
Подобная по функционалу программа - CANHacker. Отображение данных можно сделать в таком же виде.
Все остальные подробности по проекту по запросу. Получение данных от устройства по COM порту на Java также могу предоставить.