qt5使用read接收串口消息并新建一个txt文件,将接收到的数据打印到txt内
时间: 2023-12-14 09:39:46 浏览: 75
在Qt5中,可以使用QSerialPort类来实现串口通信。下面是一个简单的示例代码,用于接收串口消息并将其打印到文本文件中:
```cpp
#include <QCoreApplication>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QFile>
#include <QTextStream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 查找可用的串口
QList<QSerialPortInfo> serialPorts = QSerialPortInfo::availablePorts();
if (serialPorts.isEmpty()) {
qWarning("No serial ports found.");
return 1;
}
// 打开第一个可用的串口
QSerialPort serialPort(serialPorts.at(0));
if (!serialPort.open(QIODevice::ReadOnly)) {
qWarning("Failed to open serial port %s: %s", serialPort.portName().toLocal8Bit().constData(), serialPort.errorString().toLocal8Bit().constData());
return 1;
}
// 新建一个文本文件
QFile file("serial.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qWarning("Failed to open file for writing.");
return 1;
}
// 打开文本流
QTextStream stream(&file);
// 循环读取串口数据并写入文件
while (true) {
QByteArray data = serialPort.readAll();
if (!data.isEmpty()) {
// 打印到控制台
qDebug() << "Received data: " << data;
// 写入文件
stream << data << endl;
}
}
return a.exec();
}
```
注意,在此示例中,我们打开了第一个可用的串口。如果您需要连接到其他串口,请相应地更改代码。
此外,请注意,在写入文件时,我们使用了QTextStream类。这是为了确保文本以正确的格式写入文件。如果您不使用QTextStream,您可能会遇到一些奇怪的编码问题。
阅读全文