Как-то для изучения Modbus делал простенькую консольную программу на FreePascal - опрашивал измеренное значение на ТРМ212.
Для обмена с портом использовал библиотеку Synaser (она - часть библиотеки Synapse).
Сделал примитивно - запрос-ответ (с учётом таймаута).
А правильно - нужно работать с потоками, чтобы интерфейс не зависал.
Встречал ссылку на статью "Работа с COM-портом с помощью потоков", с комментарием, что в ней правильно описано
https://usbsergdev.narod.ru/doc.html
Могу и свои наработки показать, но они примитивные, незаконченные в части диагностики обмена.
Работа в консоли меня не напрягает, приоритет отдаю функционалу утилиты (тест прибора нужно выполнить здесь и сейчас, а не зависать над красотами GUI) и поэтому программа консольная. Вывод консоли можно легко перенаправить в текстовый файл и сравнивать файлы из меню файл-менеджеров.
Использую их с небольшими изменениями под ситуацию для диагностики обмена по Modbus - то сканировать все адреса+скорость+чётность, то сканировать все регистры у устройства. Можно и готовый ModbusPoll использовать, но он платный, а у меня руки есть - могу сам сделать.
В прошлом году нужно было обосновать неправильность чужой программы комплекса на нескольких ПР200 - нужно было показать, что нет обмена состояниями от одного из Slave. Сначала доказал, что на Slave доступен всего один регистр для чтения, потом показал, что он не изменяется при большинстве нештатных ситуаций. Все проверки - модификациями этой программы.
TestModbusSynaser.zip
Также, для обмена с устройствами производства Овен есть готовая библиотека и к ней идут примеры
https://owen.ru/product/biblioteka_win_dll




Ответить с цитированием