如何写一个qt程序实现实时接收下位机stm32的串口数据并显示
时间: 2024-02-12 11:07:17 浏览: 173
下面是一个Qt程序实现实时接收下位机STM32的串口数据并显示的简单示例代码:
```cpp
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QByteArray>
#include <QDebug>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 查找可用的串口
QList<QSerialPortInfo> portList = QSerialPortInfo::availablePorts();
if(portList.isEmpty())
{
qDebug() << "No serial port found!";
return -1;
}
// 选择第一个可用串口并打开
QSerialPort serialPort;
serialPort.setPort(portList.first());
serialPort.setBaudRate(QSerialPort::Baud115200);
serialPort.setDataBits(QSerialPort::Data8);
serialPort.setParity(QSerialPort::NoParity);
serialPort.setStopBits(QSerialPort::OneStop);
serialPort.setFlowControl(QSerialPort::NoFlowControl);
if(!serialPort.open(QIODevice::ReadWrite))
{
qDebug() << "Failed to open serial port!";
return -1;
}
// 读取串口数据并显示
QByteArray data;
while(serialPort.isOpen())
{
if(serialPort.waitForReadyRead(100))
{
data.append(serialPort.readAll());
qDebug() << data;
data.clear();
}
}
return a.exec();
}
```
在这个示例程序中,我们首先查找可用的串口并打开第一个可用串口,然后使用`waitForReadyRead()`函数实时读取串口数据,并使用`qDebug()`函数将读取到的数据显示在控制台上。
注意,在使用`QSerialPort`类时,需要在`.pro`文件中添加以下代码:
```
QT += serialport
```
这样才能正确链接`QSerialPort`库。
阅读全文