Qt-TCP-ModBus调试笔记

继续上篇的Qt自带例程串口modbus调试后进行的TCP-modbus调试,代码已经读的差不多,下篇会给出带码的简单注释

1.调试环境

ubuntu16.04+Qt5.6.1,调试例程为Qt自带的slave和master两个程序,分别作为tcp-modbus的服务器和客户机。

找到例程

 Qt-TCP-ModBus调试笔记_第1张图片

2.遇到的问题

分别运行两个例程,没有权限打开本机IP端口(The socket is protected)

Qt-TCP-ModBus调试笔记_第2张图片

 这个问题困扰了一整 天,从这个提示看不出什么原因,通过阅读Qt源代码,追踪到报错代码处

Qt-TCP-ModBus调试笔记_第3张图片

定位到代码段继续查找


查找 AddressProtectedErrorString


在Qt的帮助文档中查找SocketAccessError最后确定问题所在:The socket operation failed because the application lacked the required privileges.

翻译过来就是:套接字操作失败,因为应用程序缺乏所需的权限。

Qt-TCP-ModBus调试笔记_第4张图片

4.解决办法

找到了问题所在,就有办法解决了,linux权限问题一般就是在程序执行的时候加一个sudo,所以找到Qt debug后生成的可执行文件分执行就可以了。如 sudo ./modbusslave

Qt-TCP-ModBus调试笔记_第5张图片

5.最终调试结果

Qt-TCP-ModBus调试笔记_第6张图片

和串口的运得效果是一样的,下篇分析下Qt modbus例程源码。

你可能感兴趣的:(Qt)