Использование struct timeval для установки времени ожидания ответа на LibModbus

Я использую библиотеку LibModbus для связи с устройствами ADAM. У меня была некоторая предыдущая проблема с отправкой некоторых команд на устройство, но установка большего времени ожидания ответа была исправлена, это было в предыдущей версии библиотеки.

Теперь я использую новейшую библиотеку, где set_response_timeout использует структуру timeval.
Ссылка на руководство по функциям в библиотеке:
Get_response_timeout / set_response_timeout

Я использую библиотеку следующим образом

struct timeval response_timeout;
struct timeval old_response_timeout;
modbus_get_response_timeout(mb, &old_response_timeout);
printf("\nold_tv_sec: %d, old_tv_usec: %d\n", old_response_timeout.tv_sec, old_response_timeout.tv_usec);

response_timeout.tv_sec = 60;
response_timeout.tv_usec = 0;
modbus_set_response_timeout(mb, &response_timeout);

modbus_get_response_timeout(mb, &old_response_timeout);
printf("\nnew_tv_sec: %d, new_tv_usec: %d\n", old_response_timeout.tv_sec, old_response_timeout.tv_usec);

Но если я распечатаю значение времени ожидания ответа с помощью get_response_timeout, ранее и после его установки, он возвращает те же значения:

  • Ответ modbus_get_response_timeout (мб, &old_response_timeout) перед настройкой
    old_tv_sec: 500000, old_tv_usec: 23224832

  • Значения структуры timeval для отправки в modbus_set_response_timeout (мб, &response_timeout)
    to_set_tv_sec: 60, to_set_tv_usec: 0

  • Ответ modbus_get_response_timeout (мб, &old_response_timeout) после установки новых значений.

    new_tv_sec: 500000, new_tv_usec: 23224832

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]