红联Linux门户
Linux帮助

Qt-TCP-ModBus调试笔记

发布时间:2016-08-03 12:34:20来源:linux网站作者:maowendi
继续上篇的Qt自带例程串口modbus调试(http://www.linuxdiyf.com/linux/22932.html)后进行的TCP-modbus调试,代码已经读的差不多,下篇会给出带码的简单注释。
 
1.调试环境
ubuntu16.04+Qt5.6.1,调试例程为Qt自带的slave和master两个程序,分别作为tcp-modbus的服务器和客户机。
找到例程:
Qt-TCP-ModBus调试笔记
 
2.遇到的问题
分别运行两个例程,没有权限打开本机IP端口(The socket is protected)
Qt-TCP-ModBus调试笔记
这个问题困扰了一整 天,从这个提示看不出什么原因,通过阅读Qt源代码,追踪到报错代码处
Qt-TCP-ModBus调试笔记
定位到代码段继续查找
Qt-TCP-ModBus调试笔记
查找 AddressProtectedErrorString
Qt-TCP-ModBus调试笔记
在Qt的帮助文档中查找SocketAccessError最后确定问题所在:The socket operation failed because the application lacked the required privileges.
翻译过来就是:套接字操作失败,因为应用程序缺乏所需的权限。
Qt-TCP-ModBus调试笔记
 
4.解决办法
找到了问题所在,就有办法解决了,linux权限问题一般就是在程序执行的时候加一个sudo,所以找到Qt debug后生成的可执行文件分执行就可以了。如 sudo ./modbusslave
Qt-TCP-ModBus调试笔记
 
5.最终调试结果
Qt-TCP-ModBus调试笔记
和串口的运得效果是一样的,下篇分析下Qt modbus例程源码。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22960.html