最近用到modbus协议通信,发现有两种方式,一是下载编译libmodbus库,二就是使用qt自带的modbus类;
一、环境
qt封装了modbus通信的类,不需要我们配置环境
1.Qt中几个常用的串口modbus类
QModbusRtuSerialSlave //modbus串口通信方式下的服务器类
QModbusRtuSerialMaster //串口通信方式下的客户端类
QModbusServer // QModbusServer类接收和处理modbus的请求。
QModbusDataUnit //存储接收和发送数据的类,数据类型为1bit和16bit
QModbusReply //客户端访问服务器后得到的回复(如客户端读服务器数据时包含数据信息)
注意:如果遇见引入不了头文件的情况的话,可以在qt安装路径下复制该头文件进行查找,看看有没有,有的话将该文件的上一级路径添加进去;
还不能解决的话就重装qt,千万千万注意:如果重装qt的话,不要修改安装路径,最好不要更换版本,版本更新会导致你无法打开以前的项目,得重新配置属性;属性配置见我上一篇博客;
2、modbus通信流程
这是我在网上找的流程图,大致就是这样:
下面开始设计modbus类:
需要引用的头文件:
#include <QtWidgets/QMainWindow>.
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QModbusRtuSerialMaster>