我正在使用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