我正在使用库 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
要发送到 modbus_set_response_timeout(mb, &response_timeout) 的 timeval 结构的值 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