libmodbus - контролировать и перезапускать соединение - PullRequest
0 голосов
/ 25 марта 2020

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

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

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

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

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

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

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

...