QT 串口数据读取:3秒间隔定时器实现
在 QT 中,可以通过使用 QSerialPort 类来读取串口接收到的数据。以下是一个示例代码,演示如何使用 3 秒的时间间隔读取一次串口接收到的数据:
#include <QCoreApplication>
#include <QSerialPort>
#include <QTimer>
QSerialPort *serialPort;
void readSerialData() {
QByteArray data = serialPort->readAll();
// 处理接收到的数据
qDebug() << 'Received data:' << data;
}
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
serialPort = new QSerialPort;
serialPort->setPortName('COM1'); // 设置串口号
serialPort->setBaudRate(QSerialPort::Baud9600); // 设置波特率
serialPort->setDataBits(QSerialPort::Data8); // 设置数据位
serialPort->setParity(QSerialPort::NoParity); // 设置校验位
serialPort->setStopBits(QSerialPort::OneStop); // 设置停止位
serialPort->setFlowControl(QSerialPort::NoFlowControl); // 设置流控制
if (serialPort->open(QIODevice::ReadOnly)) {
QTimer *timer = new QTimer;
QObject::connect(timer, &QTimer::timeout, readSerialData);
timer->start(3000); // 3 秒间隔
} else {
qDebug() << 'Failed to open serial port';
}
return a.exec();
}
在上面的代码中,通过设置串口的相关参数,然后使用open()函数打开串口。接着创建一个定时器,并将其与读取串口数据的槽函数readSerialData连接起来。最后启动定时器并执行 QT 事件循环。每次定时器超时时,会调用槽函数readSerialData读取串口接收到的数据并进行处理。
原文地址: https://www.cveoy.top/t/topic/XdM 著作权归作者所有。请勿转载和采集!