2025-03-17T21:16:16

This commit is contained in:
123 2025-03-17 21:16:16 +08:00
parent 1e41597024
commit 98a2bb40d7
7 changed files with 50 additions and 28 deletions

View File

@ -1,23 +1,12 @@
#include <QFile> #include <QFile>
#include <QDebug> #include <QDebug>
#include <QDateTime>
#include "filemanager.h" #include "filemanager.h"
void FileManager::writeExperimentFile(const CommonData &cd)
void FileManager::writeExperimentFile(const CommonData &cd, QFile &file)
{ {
// double sampleTemp = cd.sample_temp; QTextStream out(&_expeFile);
// double dsc = cd.dsc;
// write data to file
// QFile file("experiment_data.txt");
// if (!file.open(QIODevice::Append | QIODevice::Text)) {
// qDebug() << "无法打开文件";
// return;
// }
QTextStream out(&file);
out.setRealNumberPrecision(3); // 设置精度为三位小数 out.setRealNumberPrecision(3); // 设置精度为三位小数
out.setFieldWidth(12); // 设置字段宽度,确保对齐 out.setFieldWidth(12); // 设置字段宽度,确保对齐
out.setPadChar(' '); // 设置填充字符为空格 out.setPadChar(' '); // 设置填充字符为空格
@ -27,17 +16,28 @@ void FileManager::writeExperimentFile(const CommonData &cd, QFile &file)
<< cd.dsc << endl; << cd.dsc << endl;
// 关闭文件 // 关闭文件
file.close(); _expeFile.close();
} }
void FileManager::createExperimentFile(const QString &fileName, QFile &file) void FileManager::createExperimentFile()
{ {
// 使用传入的文件名创建QFile对象 QString fileName = _expeInfo.sampleName;
file.setFileName(fileName); if(fileName.isEmpty()){
fileName = "sampleName";
}
fileName.append("-");
if(_expeInfo.date.isEmpty()){
fileName.append(QDateTime::currentDateTime().toUTC().toString("yyyyMMdd_HHmmss"));
}else{
fileName.append(_expeInfo.date);
}
_expeFile.setFileName(fileName);
// 尝试以写入文本模式打开文件,如果文件不存在则创建它 // 尝试以写入文本模式打开文件,如果文件不存在则创建它
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { if (!_expeFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
qDebug() << "无法打开文件"; qDebug() << "无法打开文件";
} else { } else {
qDebug() << "文件打开成功"; qDebug() << "文件打开成功";
@ -49,7 +49,5 @@ void FileManager::test()
QString fileName = "experiment.txt"; QString fileName = "experiment.txt";
QFile file; QFile file;
createExperimentFile(fileName,file);
} }

View File

@ -7,8 +7,18 @@
#include "protocol.h" #include "protocol.h"
namespace FileManager{ namespace FileManager{
void createExperimentFile(const QString&,QFile &); struct ExpeInfo
void writeExperimentFile(const CommonData&, QFile &); {
QString sampleName;
float sampleWeight;
QString date;
QString userName;
};
ExpeInfo _expeInfo;
QFile _expeFile;
void createExperimentFile(const QString&);
void writeExperimentFile(const CommonData&);
void test(); void test();
}; };

View File

@ -2,6 +2,7 @@
#define GLOBAL_H #define GLOBAL_H
#include <qobject.h> #include <qobject.h>
#include <qfile.h>
class Global:public QObject class Global:public QObject
{ {
@ -14,8 +15,7 @@ public:
Analysis, Analysis,
ConnectedToDev, ConnectedToDev,
DeliveredData, DeliveredData,
ExperimentStart, ExperimentStart
// ExperimentStop = Analysis
}; };
void setMode(const Mode); void setMode(const Mode);
@ -31,6 +31,7 @@ public:
DeviceConnectionStatus getDeviceConnectionStatus(){return _deviceConnectStatus;} DeviceConnectionStatus getDeviceConnectionStatus(){return _deviceConnectStatus;}
#endif #endif
signals: signals:
void sigModeModify(const Mode); void sigModeModify(const Mode);
void sigDeviceConnnectionStatusModify(const DeviceConnectionStatus); void sigDeviceConnnectionStatusModify(const DeviceConnectionStatus);

View File

@ -5,6 +5,7 @@
#include "global.h" #include "global.h"
#include "serialport.h" #include "serialport.h"
#include "dataparser.h" #include "dataparser.h"
#include "filemanager.h"
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
@ -95,6 +96,8 @@ void MainWindow::on_actionStart_triggered()
qDebug() << "on_actionStart_triggered info (hex):" << hexData; qDebug() << "on_actionStart_triggered info (hex):" << hexData;
SerialPort::instance()->slotSendData(ba); SerialPort::instance()->slotSendData(ba);
//
FileManager::createExperimentFile();
} }
void MainWindow::on_actionReadOnly_triggered() void MainWindow::on_actionReadOnly_triggered()

View File

@ -2,6 +2,7 @@
#include <QRandomGenerator> #include <QRandomGenerator>
#include "centralwidget.h" #include "centralwidget.h"
#include "filemanager.h"
CentralWidget::CentralWidget(QWidget *parent) CentralWidget::CentralWidget(QWidget *parent)
: QWidget(parent), : QWidget(parent),
@ -58,6 +59,8 @@ void CentralWidget::slotRevCommonData(const CommonData &cd)
qDebug()<<"slotRevCommonData"; qDebug()<<"slotRevCommonData";
_customPlot->graph(0)->addData(cd.sample_temp, cd.dsc); // 添加数据到曲线 _customPlot->graph(0)->addData(cd.sample_temp, cd.dsc); // 添加数据到曲线
_customPlot->replot(); _customPlot->replot();
//
FileManager::writeExperimentFile(cd);
} }
void CentralWidget::timerEvent(QTimerEvent *event) void CentralWidget::timerEvent(QTimerEvent *event)

View File

@ -6,6 +6,7 @@
#include "dataparser.h" #include "dataparser.h"
#include "serialport.h" #include "serialport.h"
#include "global.h" #include "global.h"
#include "filemanager.h"
ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) : ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) :
QWidget(parent), QWidget(parent),
@ -226,4 +227,9 @@ void ExperimentSettingForm::slotPhaseCheck()
void ExperimentSettingForm::on_pushButton_deliverData_clicked() void ExperimentSettingForm::on_pushButton_deliverData_clicked()
{ {
slotConnectToDevice(); slotConnectToDevice();
FileManager::_expeInfo.sampleName= ui->sampleNameLineEdit->text();
FileManager::_expeInfo.sampleWeight = ui->sampleWeightLineEdit->text().toInt(nullptr,16);
FileManager::_expeInfo.date = ui->dateTimeLineEdit->text();
FileManager::_expeInfo.userName = ui->userLineEdit->text();
} }

View File

@ -15,6 +15,7 @@ public:
explicit ExperimentSettingForm(QWidget *parent = nullptr); explicit ExperimentSettingForm(QWidget *parent = nullptr);
~ExperimentSettingForm(); ~ExperimentSettingForm();
signals: signals:
void sigDeliverData(const QByteArray&); void sigDeliverData(const QByteArray&);
private slots: private slots: