qmodmaster-ng
- исходники: https://gitlab.com/murych/qmodmaster-ng
описание
Форк популярного проекта для взаимодействия с устройствами по modbus шине - QModBus.
Оригинальный софт появился во времена Qt4.x, с тех пор качество кодовой базы не улучшалось, механизмы работы с памятью не исправлялись. Авторы не очень активно занимаются внедрением нового функционала и исправлением ошибок. Последнее обновление проекта около года назад – 2022-08-15.
Форк задумывается как упражнение, полноценная поддержка после имплементации основных фичей не планируется.
Хочется поработать с libmodbus
, как надежным и проверенным решением для взаимодействия с modbus шиной.
Попытка быстро передрать накидать обновленный интерфейс выглядит громоздко по вертикали.
Возможно будет над чем подумать, чтобы сделать удобнее.
зависимости
В проекте будут использованы следующие сторонние зависимости:
- Qt6: Core, Widgets, Network, SerialPort
- KDE Frameworks: KWidgetAddons
- gsl-lite
- libmodbus
- spdlog
- qspdlog
- QtAwesome
- catch2
цели проекта
основные требования к форку, что в общем хочется сделать:
- управление зависимостями с помощью пакетного менеджера vcpkg, не вендорить библиотеки самостоятельно и уж тем более не тащить их исходники в своем репозитории;
- апнуть проект до C++17 и lts версии Qt6;
- (возможно) затащить в проект пару библиотек из состава KDE Frameworks (когда/если они начнут поддерживать Qt6) для применения готовых виджетов;
- отделить код пользовательского интерфейса от внутренней логики приложения;
- исправить проблемные участки кода, убрать утечки памяти;
- внедрить механизм поиска устройства на шине по параметрам подключения;
- наладить автоматическую сборку и релиз бинарников под Linux (в формате AppImage) и под Windows.
мечты
Хочется внедрить функционал для визуализации значений ячеек. Оригинальный проект предлагает функцию “monitor”, которая просто отправляет запросы по кругу с таймаутом. При этом полученные значения не логируются в файл, график тоже не строится. Вроде почти все serial port monitor проекты позволяют это делать, почему не мы?
Еще одной логичной штукой для внедрения является одновременная работа более чем с одним modbus-server’ом.
Внедрение двух предыдущих фичей как бы намекает на перекомпоновку интерфейса в сторону MDI, как в winbox.