如何使用QSerialPort读取数据,使用QFile写入文件
How to read data using QSerialPort to write to a file using QFile?
新到c++和Qt,我试图使用微控制器发送一大批数据(由整数和逗号组成)串行放在。csv文件中供Excel使用。到目前为止,我的mainwindow.cpp代码(为了测试的目的,我把所有的动作都放在这里):
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <string>
#include <QtSerialPort/QSerialPort>
#include <QString>
#include <QTextEdit>
#include <QFile>
#include <QTextStream>
QSerialPort *serial;
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
serial = new QSerialPort(this);
serial->setPortName("/dev/cu.usbmodemfa131");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
connect(serial, SIGNAL(readyRead()), this, SLOT(serialReceived()));
}
MainWindow::~MainWindow()
{
delete ui;
serial->close();
}
void MainWindow::serialReceived()
{
QString filename = "/Users/me/Documents/myFile/datacollecting.csv";
QFile file(filename);
QTextStream out(&file);
file.open(QIODevice::ReadWrite);
QByteArray ba;
ba = serial->readAll();
out << ba;
file.close();
}
代码然而给了我一些问题。它根本不可靠,在生成的文件中,它只存储最后10个左右的字符(从几千个字符中)。我已经搜索了周围,但没有找到一种方法来妥善存储大量的数据在串行。有没有更好的方法来实现我上面想要做的事情?新的,所以任何帮助将非常感激!
正如在注释中已经写过的那样,您应该通过添加QIODevice::Append
标志以追加模式打开输出文件,以便将所有数据写入文件的末尾。
你也可以连接到error
信号,在那里你可以检查可能的错误。请在此处查看串口枚举。
connect(serial, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(handleError(QSerialPort::SerialPortError)));
void MainWindow::handleError(QSerialPort::SerialPortError error)
{
...
}
相关文章:
- 如何从QFile阅读?它显示该文件不可访问
- qfile qtextStream仅读取文件的一部分
- 如何使用 QFile、c++ 从文件创建整数数组
- Qt - 为什么无法使用 QFile 读取文件,其中包含从 FileDialog 获取的目录
- 如何修复QFile打开错误(未知错误),即使文件存在
- Qt:项目资源中打开的.txt文件的 QFile 的空内容
- C++使用 qfile 写入资源文件 (QIODevice::write (QFile, "x" ): 设备未打开)
- 将qresource qfile与文件一起使用
- QFile在程序退出时保存文件,根本不会保存~500MB文件
- 从QFile获取QByteArray并将其写入同一文件
- QFile:同一物理文件的多个句柄不会写入所有数据
- 将 QFile::copy 创建创建文件的副本或将内容从一个文件移动到另一个文件
- QFile / QTextStream在删除正在写入的文件时不显示错误
- QFile 无法打开文件
- 将QString中的Base64字符串作为二进制文件(QFile)写入
- Qt(C++):QFile成功创建了文本文件,但没有写入
- 使用QFile::remove()从C++代码中删除文件将留下.nfsxxxxx文件
- QT - QFile -从文件读取缓慢
- QFile不读取文件
- Qt -如何复制文件与QFile::复制使用QFileDialog