Я разрабатываю клиент Modbus TCP на Linux для связи с различными устройствами Modbus, используя libmodbus .
Чтобы инициализировать соединение TCP, вызывается и возвращается функция int modbus_connect(modbus_t *ctx);
0, если соединение прошло успешно.
Мне нужен отдельный поток, который непрерывно контролирует это TCP-соединение с устройством, чтобы увидеть, все ли оно подключено, и если нет, попытаться подключиться снова.
Непрерывный вызов modbus_connect
, чтобы проверить, было ли соединение успешным, создаст несколько соединений, а это не то, что я хочу.
Я мог бы пытаться непрерывно пытаться читать с устройства, и если есть ошибка, проверьте код ошибки и повторите попытку подключения. Однако запись и чтение в / из устройства Modbus происходит из другого класса и потока, которые должны быть извлечены из управления связью.
Похоже, что в libmodbus нет какой-либо функции для поддержки этого.
Любые предложения приветствуются.