Использование 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(mb, &old_response_timeout) перед установкой old_tv_sec: 500000, old_tv_usec: 23224832

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

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

    new_tv_sec: 500000, new_tv_usec: 23224832

0 ответов

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