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

Цена договорная • электронные деньги
19 апреля 2015, 21:57 • 6 откликов • 100 просмотров
Необходимо написать программу GUI на Java+SWT которая получает данные с внешнего устройства через виртуальный COM порт
и отображает их на экране.

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


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

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

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

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

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


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


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


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


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


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


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

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


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