1
C++和Qt的新手,我試圖用一個微控制器通過串行發送大量數據(由整數和逗號組成),放入一個用於Excel的.csv文件中。我mainwindow.cpp到目前爲止的代碼(在這裏我已經把用於測試目的的所有動作):如何使用QSerialPort讀取數據以使用QFile寫入文件?
#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個左右(幾千個)字符。我已經搜索過,但還沒有找到一種方法來正確地存儲大量的串行數據塊。有沒有更好的方法來實現我上面想要做的事情?新的這個,所以任何幫助將不勝感激!
首先,**從'SLOT''移除**返回0' int MainWindow :: serialReceived()'。 – KernelPanic
感謝您的評論,只是編輯更改serialReceived無效的問題。 – user6745003
難道你不想用'QIODevice :: ReadWrite'附加到帶有'QIODevice :: ReadWrite | QIODevice :: Append'的文件中:http://stackoverflow.com/a/13856845/487892 – drescherjm