С++ GUI приложение на wxWidgets

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

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

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

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

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

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

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

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

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

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

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

Приложение планируется сделать кроссплатформенным, поэтому задачу можно разбить на несколько этапов, начав с GUI приложения под Windows и затем адаптировав его под Mac OSX, Linux.

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

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

Все остальные подробности по проекту по запросу.