前言:如果用 qt 写程序作为上位机,让后通过和 usb 和下位机通信的时候,就需要用到 qt 中的串口通信了。
使用 qt 中的串口通信的时候需要用到的两个头文件分别为:
- #include <QtSerialPort/QSerialPort>
- #include <QtSerialPort/QSerialPortInfo>
除了加上面两个头文件之外,还需要在工程文件中加下面一行代码:
- QT += serialport
我们一般都需要先定义一个全局的串口对象,记得在自己的头文件中添加上:
- QSerialPort * serial;
到这里我们就可以调用 qt 串口通信中的函数了,一般来讲 qt 串口通信需要经过 7 步:
1、设置串口名(如 COM1)
- serial = new QSerialPort;
- serial - >setPortName(ui - >PortBox - >currentText());
这里我使用自动寻找可用串口的方法,直接自动设置了
- foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
- {
- QSerialPort serial;
- serial.setPort(info);
- if(serial.open(QIODevice::ReadWrite))
- {
- ui->PortBox->addItem(serial.portName());
- serial.close();
- }
- }
2、打开串口
- serial - >open(QIODevice: :ReadWrite);
3、设置波特率(如 115200)
- serial->setBaudRate(QSerialPort::Baud115200);//设置波特率为115200
4、设置数据位(如 8)
- serial->setDataBits(QSerialPort::Data8);//设置数据位8
5、设置校验位(如 0)
- serial->setParity(QSerialPort::NoParity); //校验位设置为0
6、设置停止位(如 1)
- serial->setStopBits(QSerialPort::OneStop);//停止位设置为1
7、设置流控制
- serial->setFlowControl(QSerialPort::NoFlowControl);//设置为无流控制
到这里串口通信的设置就完成了,下面我们需要实现对数据的发送和接收
1、连接数据接收槽函数,下位机中一有数据发送过来的时候就会响应这个槽函数
- QObject: :connect(serial, &QSerialPort: :readyRead, this, &MainWindow: :ReadData);
2、从上位机发送数据到下位机
- serial - >write(ui - >textEdit_2 - >toPlainText().toLatin1());
主要使用的函数就这些了,我们来看看代码:
1、工程文件 SerialPortTool.pro
View Code
2、头文件 mainwindow.h
View Code
3、源文件 mainwindow.cpp
View Code
4、界面文件 mainwindow.ui
View Code
效果图如下,自己设置对应下位机的波特率就可以实现数据收发了
来源: https://www.cnblogs.com/wurenzhong/p/8186437.html