libmodbus - отслеживать и перезапускать соединение

Я разрабатываю клиент Modbus TCP в Linux для связи с различными устройствами Modbus с помощью libmodbus.

Для инициализации TCP-соединения функция int modbus_connect(modbus_t *ctx); вызывается и возвращает 0, если соединение было успешным.

Мне нужен один отдельный поток, который постоянно отслеживает это TCP-соединение с устройством, чтобы узнать, подключено ли оно по-прежнему, а если нет, попытайтесь подключиться снова.

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

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

Похоже, что в libmodbus нет какой-либо функции для поддержки этого.

Любые предложения приветствуются.

0 ответов

Другие вопросы по тегам