Qt5.9 Modbus request timeout 0x5异常解决

  1. 使用Qt5.9的Modbus模块时,频繁出现request timeout 0x5异常
  2. 使用官方Examples时,也有此问题,同时使用官方的Examples时,点击read过快时,会出现数据更新不及时的问题
  3. 此问题,外网已有bug提交,参考此地址
  4. 按照上述bug提交网址,可知在5.13.0 RC 1版本,此bug已解决
  5. 遂想到使用Qt5.13以后的Qt SerialBus模块替换当前5.9版本模块,刚好电脑上还有一个6.2版本的Qt,进行测试后,确认此bug已解决
  6. 将6.2版本的Qt SerialBus模块源码提取出来使用Qt5.9进行编译安装,经测试可完美解决此问题
  7. 不过在编译和安装Qt SerialBus模块时,也出现了很多问题,主要是新版本中很多语法特性在qt5.9中不支持,需要做相应处理,我已经整理好了一份可以在Qt5.9上可以编译的源码,下载地址:
  8. 将上述源码随便解压到一个非中文目录,打开其中根目录的.pro文件,清除以后重新构建
  9. 需要去除项目中的showdow build,同时添加Build步骤,选择Make,在参数中写入install
  10. 编译安装完成后会在mingw53_32in目录以及lib目录还有include目录生成最新的库文件和头文件,看文件日期即可确定
  11. 到此所有步骤完成,可以在QT5.9中愉快的使用Modbus了
  12. 另外Modbus协议有发送间隔3.5s的问题,参考以下文章 在上面传的源码中屏蔽了发送间隔,不进行间隔时间判断
经验分享 程序员 微信小程序 职场和发展