Кроссплатформенное Java+SWT GUI приложение

Денис17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
20.04.2015

Необходимо написать программу GUI на Java+SWT которая получает данные с внешнего устройства через виртуальный COM порт и отображает их на экране.

Полностью рабочая программа с подобным функционалом есть на С++, но рассчитанная на консольный режим работы.

Программа получает пакеты данных для отображения с внешнего устройства, взаимодействие с которым осуществляется через виртуальный COM порт.

В программе следует учесть особенность, что пакетов с внешнего устройства может приходить порядка 2000–3000 в секунду. При этом отображение не должно «тормозить» и данные не должны теряться (если вовремя их не выбрать с устройства, данные теряются).

На данный момент при включенном выводе на экран полученных данных, данные таки теряются ввиду медленного их вывода на экран. Вижу решение проблемы в создании двух потоков, один из которых занимается отображением, второй — получение данных от устройства.

Вывод данных в реальном времени не интересен, и поэтому даже если между получением данных от устройства и отображением его на экране пройдет несколько секунд — ничего страшного. Важно не потерять данные.

В дальнейшем собранные данные обрабатываются пользователем в оффлайне.

Достаточно обычного классического интерфейса для отображения полученных данных в виде ListView с возможностью сортировки по каждому полю, группировке по полю, а также записи/чтению полученных данных в/из файла.

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

Обязательное требование — документирование классов, методов и никакого «спагетти-кода». Данный проект планируется сделать OpenSource.

Приложение планируется сделать кроссплатформенным, поэтому на выходе хотелось бы получить что-то наподобии этого: http://angryip.org/download/#source

Обязательно наличие поддержи мультиязычности интерфейса.

Исходники на С++ (CodeBlock), а также пример вывода консольной программы прилагаю.

Подобная по функционалу программа - CANHacker. Отображение данных можно сделать в таком же виде.

Все остальные подробности по проекту по запросу. Получение данных от устройства по COM порту на Java также могу предоставить.