qmodmaster-ng

Posted on мар. 15, 2023

описание

Форк популярного проекта для взаимодействия с устройствами по 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.