如何将串口传入数据写入文本文件(.txt)
How can i write the serial port incoming data into text file (.txt)
如何将串口传入的数据写入文本文件(.txt)..数据写入间隔时间为一小时。
以下是串行读取数据代码:
void MainWindow::readData()
{
QByteArray data = serial->readAll();
QDataStream stream(data);
double value;
stream>>value;
console->putData(data);
qDebug()<<value;
}
我试过这种方法,但失败了
void Write(QString Filename)
{
QFile mFile(Filename);
if(!mFile.open(QFile::WriteOnly | QFile::Text))
{
qDebug() << "Could not open file for writing";
return;
}
QTextStream out(&mFile);
out << data;
mFile.flush();
mFile.close();
}
我建议你使用QByteArray
接收数据,接收数据时使用信号readyRead()
调用接收函数。
QSerialPort *serialPort= new QSerialPort();
connect(serialPort, &QSerialPort::readyRead, this, &MainWindow::receiveData_WriteToFile);
此函数读取数据并将其写入文件。
void MainWindow::receiveData_WriteToFile()
{
if (serialPort->isOpen())
{
QByteArray DataReceived;
QFile LogFile("D:/data.txt");
if(!LogFile.open(QFile::Append | QFile::Text))
{
//Can't Open Log File.
}
if(serialPort->bytesAvailable())
{
DataReceived = serialPort->readAll();//All Data Received Successfully.
if(DataReceived.size() > 0)
{
if(LogFile.isOpen())
{
QTextStream in(&LogFile);
in << DataReceived;
}
LogFile.close();
}
else
{
//Fail To Receive Data.
}
}
LogFile.close();
}
}
readyRead() :每当有新数据可用于从设备的当前读取通道读取时,此信号就会发出一次。它只会在新数据可用时再次发出,例如当新的网络数据负载到达您的网络套接字时,或者当新的数据块已附加到您的设备时。
输出文件:
上提出的问题的示例项目
如何将串口传入的数据写入文本文件(.txt)..数据写入间隔时间为一小时。 以下是串行读取数据代码:
void MainWindow::readData()
{
QByteArray data = serial->readAll();
QDataStream stream(data);
double value;
stream>>value;
console->putData(data);
qDebug()<<value;
}
我试过这种方法,但失败了
void Write(QString Filename)
{
QFile mFile(Filename);
if(!mFile.open(QFile::WriteOnly | QFile::Text))
{
qDebug() << "Could not open file for writing";
return;
}
QTextStream out(&mFile);
out << data;
mFile.flush();
mFile.close();
}
我建议你使用QByteArray
接收数据,接收数据时使用信号readyRead()
调用接收函数。
QSerialPort *serialPort= new QSerialPort();
connect(serialPort, &QSerialPort::readyRead, this, &MainWindow::receiveData_WriteToFile);
此函数读取数据并将其写入文件。
void MainWindow::receiveData_WriteToFile()
{
if (serialPort->isOpen())
{
QByteArray DataReceived;
QFile LogFile("D:/data.txt");
if(!LogFile.open(QFile::Append | QFile::Text))
{
//Can't Open Log File.
}
if(serialPort->bytesAvailable())
{
DataReceived = serialPort->readAll();//All Data Received Successfully.
if(DataReceived.size() > 0)
{
if(LogFile.isOpen())
{
QTextStream in(&LogFile);
in << DataReceived;
}
LogFile.close();
}
else
{
//Fail To Receive Data.
}
}
LogFile.close();
}
}
readyRead() :每当有新数据可用于从设备的当前读取通道读取时,此信号就会发出一次。它只会在新数据可用时再次发出,例如当新的网络数据负载到达您的网络套接字时,或者当新的数据块已附加到您的设备时。
输出文件: