Modbus терминал и не только
Когда-то я активно работал с промышленным оборудованием. Часто мне приходило какое-то устройство, и оно общалось с внешним миром по волшебному протоколу Modbus.
Будучи излишне уверенным в себе, для каждого такого устройства я писал свою небольшую программу для тестирования. Но спустя непродолжительное время я понял, что это очень утомительное занятие. Интерфейс взаимодействия со мной с пользователем забирал кучу времени разработки. Потом еще отладка и прочее… просто жуть…
От отчаяния я решил посмотреть, а что мне может предложить мировое IT сообщество. Какие-то программы были очень ограничены в бесплатной версии, где-то такой версии не было в принципе, а что-то мне просто не понравилось внешне.
Осознав проблему, я решил пополнить свой GitHub новым проектом помочь и себе, и людям, написав свой собственный терминал.
Для меня было очень важно создать красивый GUI, которым было бы приятно пользоваться.
Поэтому представляю вам мою версию Modbus терминала!
Терминал поддерживает все разновидности протокола Modbus:
Modbus TCP
Modbus RTU
Modbus ASCII
В таблице находятся расшифрованные данные посылок. А само содержимое этих посылок находится ниже, в поле «Запрос — Ответ».
Далее расположена панель управления космическим кораблем взаимодействия с устройством. Записываем адрес регистра, а затем или читаем, или записываем в него.
В самом низу расположена строка подключения. Там содержится информация о текущем подключении и индикация.
Индикаторы приема и передачи работают таким образом:
Казалось бы, а что еще нужно для счастья? Верно, смена тем оформления.
Темная тема? Нет, не слышал
Периодически, приходится работать в IDE, в которых разработчики не добавили темную тему. Keil, CODESYS и некоторые другие.
И это не становится проблемой, когда сидишь в офисе с двумя мониторами. Проблемы появляются, когда вот уже несколько часов сидишь в цеху с ноутбуком на коленках и отлаживаешь свое изобретение. Огромное черное окно терминала, которое из раза в раз появляется на фоне светлой IDE просто утомляет глаза. Работать становится труднее, а усталость приходит быстрее.
Чтобы сделать содержимое экрана монитора более однородным я добавил светлую тему.
В настройках можно на лету переключаться между темами оформления, подобрав нужную под текущий сценарий работы.
А что еще?
А еще у меня есть два дополнительных режима работы «Без протокола» и «Http».
Первый режим я добавил для работы с текстовой информацией, а второй просто потому что могу =)
Да, в режиме «Без протокола» хотелось бы добавить работу с байтами… когда‑нибуть она появится =)
Также в программе есть возможность работы с пресетами. Иногда бывает необходимо работать поочередно с несколькими устройствами. И чтобы постоянно не менять настройки, можно создать специальные файлы с уже сохраненными параметрами и переключаться между ними.
Немного о разработке
Для написания Desktop приложений я чаще всего использую WPF. По мне, это один из самых удобных фреймворков для разработки приложений на ПК.
Первая релизная версия появилась где-то полтора года назад с момента написания этой статьи.
Сначала использовался .NET Framework, а затем все приложение переехало на .NET 7, и вот совсем недавно на .NET 8.
Были ли проблемы при переезде с платформы на платформу? В целом нет. Пришлось только немного повозиться с переездом с Framework на Core.
Сама архитектура приложения тоже менялась со временем. По началу вся логика была в обработчиках событий в code behind. А потом это стало невозможно поддерживать и проект был полностью переписан согласно паттерну MVVM.
UI тоже менялся со временем.
Например, вот так выглядел режим «Modbus» в одном из первых вариантов.
Какие-то фичи добавлялись, какие-то вырезались. У меня не было четкого плана разработки. И действовал я методом проб и ошибок.
После миграции на .NET Core я ощутил необходимость создания установщика с возможностью обновления.
Согласитесь, один файл установщика, в отличии от кучи непонятных файлов приложения, выглядит весьма лаконично. А каждое нажатие на кнопку «Далее» в мастере установки прибавляет солидности вашему ПО.
Для написания скрипта установщика я использовал Inno Setup. Может быть напишу об этом отдельную статью =)
Советую ознакомиться, если еще нет.
Итого
Планы у меня были грандиозные. Хотелось добавить все и сразу. Но, как это часто бывает, ограниченность ресурсов вводит свои коррективы.
Надеюсь, вам понравилась моя первая публикация на Хабре, а мой софт поможет вам меньше уставать на работе. Буду рад обратной связи. Всем удачи!
Скачать программу
А ценители прекрасного и ужасного могут посмотреть исходный код