先简单的来说一下最近遇到的坑,最近有个项目需要用到Modbus tcp来做开发,之前也用过Modbus tcp开发过项目,不过是在ARM开发板上。现在唯一不同的就是在Windows上,轻车熟路把功能代码写完之后,前期功能测试很稳定,本来以为这样简简单单的把项目完成了,结果在长时间测试的过程中出现了报错 Request timeout。
作为忠实的Qter,第一时间怀疑硬件设备出现问题,先去拿着硬件的测试软件去做了测试,结果没出现类似的问题,虽然有点怀疑自己的代码的问题,但是我还是去百度了,结果还真让我发现了点什么,早就有网友遇到过Modbus RTU编程中出现类似的问题,说是Qt5.12会存在这个问题,升级到5.14后这个问题就解决了。
于是我去安装了一个5.15版本的,结果你猜怎么着?它还是不行啊!!!
那行,5.15不行,我去装个最新的总行了吧,于是6.5也被我安装完了。对,没错,它还是报错,心态到底是给我整崩了啊。
一度想把Modbus TCP换成Modbus RTU,但是我就是吃不了这口气啊,Qt自带的我用不了,那我去用第三方的总行了吧!于是去下载了libmodbus,费劲编译成X64的动态库,参考例程写完代码,一测连通都不通啊,还不跟自带的呢!
行了,到了这一步,那我只能再去证明是硬件的问题了,下载了抓包工具,发现硬件有一帧数据没给我回啊,再次信心满满的去找硬件商家,结果人家让我用modbus poll测试,测试还是没问题,万念俱灰,又再次运行了一下libmodbus的项目,结果又可以了,真的是编程偶尔是一门玄学,(有可能我代码写的不对)最终libmodbus经过了长时间测试,项目顺利交付。
Qt modbus开发中遇到的Request timeout错误
于 2023-06-13 14:31:47 首次发布