第一次连接一个无法连接到的IP地址时,APP界面长时间(大约75秒)挂起,界面不提示问题,尝试设置modbus库的response_timeout和byte_timeout结构体属性,打断点验证不起作用;创建modbus_t和timeval结构体变量,设置timeval的tv_sec和tv_usec,打印连接前后运行时间验证,无法解决。打断点发现这两个的tv_usec总是500000,大约8分钟。
http://stackoverflow.com/questions/25187694/modbus-communication-decrease-wait-time-to-timeout
The issue was with my version of libmodbus (3.0.1), which is the current release version. In that version they were using the linux connect
command but they weren't passing a NONBLOCKING
flag, thus connect
would become blocked for 2m7s. We resolved this issue by upgrading to libmodbus v3.1.1 which is marked as unstable but is not under active development (they're developing on v3.1.2). Unfortunately that version of libmodbus does not work for windows
将modbus库从3.0升级到3.1,处理不同版本头文件编译报错问题。不知道咋wrap
现在俩问题:1.对modbus协议不清楚,不知道咋封装,导致timeout总是改不了
2.对runloop还是不清楚
.