From 98a2bb40d73778abe5ac8715f4ce11e149cab352 Mon Sep 17 00:00:00 2001 From: 123 <1239877983@qq.com> Date: Mon, 17 Mar 2025 21:16:16 +0800 Subject: [PATCH] 2025-03-17T21:16:16 --- src/data/filemanager.cpp | 40 +++++++++++++++----------------- src/data/filemanager.h | 14 +++++++++-- src/global.h | 5 ++-- src/mainwindow.cpp | 3 +++ src/ui/centralwidget.cpp | 3 +++ src/ui/experimentsettingform.cpp | 12 +++++++--- src/ui/experimentsettingform.h | 1 + 7 files changed, 50 insertions(+), 28 deletions(-) diff --git a/src/data/filemanager.cpp b/src/data/filemanager.cpp index 3980a88..2826ecb 100644 --- a/src/data/filemanager.cpp +++ b/src/data/filemanager.cpp @@ -1,23 +1,12 @@ #include #include +#include #include "filemanager.h" - - -void FileManager::writeExperimentFile(const CommonData &cd, QFile &file) +void FileManager::writeExperimentFile(const CommonData &cd) { - // double sampleTemp = cd.sample_temp; - // 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); + QTextStream out(&_expeFile); out.setRealNumberPrecision(3); // 设置精度为三位小数 out.setFieldWidth(12); // 设置字段宽度,确保对齐 out.setPadChar(' '); // 设置填充字符为空格 @@ -27,17 +16,28 @@ void FileManager::writeExperimentFile(const CommonData &cd, QFile &file) << cd.dsc << endl; // 关闭文件 - file.close(); + _expeFile.close(); } -void FileManager::createExperimentFile(const QString &fileName, QFile &file) +void FileManager::createExperimentFile() { - // 使用传入的文件名创建QFile对象 - file.setFileName(fileName); + QString fileName = _expeInfo.sampleName; + 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() << "无法打开文件"; } else { qDebug() << "文件打开成功"; @@ -49,7 +49,5 @@ void FileManager::test() QString fileName = "experiment.txt"; QFile file; - createExperimentFile(fileName,file); - } diff --git a/src/data/filemanager.h b/src/data/filemanager.h index e62fe75..11018fd 100644 --- a/src/data/filemanager.h +++ b/src/data/filemanager.h @@ -7,8 +7,18 @@ #include "protocol.h" namespace FileManager{ -void createExperimentFile(const QString&,QFile &); -void writeExperimentFile(const CommonData&, QFile &); +struct ExpeInfo +{ + QString sampleName; + float sampleWeight; + QString date; + QString userName; +}; +ExpeInfo _expeInfo; +QFile _expeFile; + +void createExperimentFile(const QString&); +void writeExperimentFile(const CommonData&); void test(); }; diff --git a/src/global.h b/src/global.h index c66a32d..a84aa92 100644 --- a/src/global.h +++ b/src/global.h @@ -2,6 +2,7 @@ #define GLOBAL_H #include +#include class Global:public QObject { @@ -14,8 +15,7 @@ public: Analysis, ConnectedToDev, DeliveredData, - ExperimentStart, -// ExperimentStop = Analysis + ExperimentStart }; void setMode(const Mode); @@ -31,6 +31,7 @@ public: DeviceConnectionStatus getDeviceConnectionStatus(){return _deviceConnectStatus;} #endif + signals: void sigModeModify(const Mode); void sigDeviceConnnectionStatusModify(const DeviceConnectionStatus); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 64345ac..df9e249 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -5,6 +5,7 @@ #include "global.h" #include "serialport.h" #include "dataparser.h" +#include "filemanager.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -95,6 +96,8 @@ void MainWindow::on_actionStart_triggered() qDebug() << "on_actionStart_triggered info (hex):" << hexData; SerialPort::instance()->slotSendData(ba); + // + FileManager::createExperimentFile(); } void MainWindow::on_actionReadOnly_triggered() diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp index b92580a..907af6c 100644 --- a/src/ui/centralwidget.cpp +++ b/src/ui/centralwidget.cpp @@ -2,6 +2,7 @@ #include #include "centralwidget.h" +#include "filemanager.h" CentralWidget::CentralWidget(QWidget *parent) : QWidget(parent), @@ -58,6 +59,8 @@ void CentralWidget::slotRevCommonData(const CommonData &cd) qDebug()<<"slotRevCommonData"; _customPlot->graph(0)->addData(cd.sample_temp, cd.dsc); // 添加数据到曲线 _customPlot->replot(); + // + FileManager::writeExperimentFile(cd); } void CentralWidget::timerEvent(QTimerEvent *event) diff --git a/src/ui/experimentsettingform.cpp b/src/ui/experimentsettingform.cpp index 4f04729..bdaba9b 100644 --- a/src/ui/experimentsettingform.cpp +++ b/src/ui/experimentsettingform.cpp @@ -6,6 +6,7 @@ #include "dataparser.h" #include "serialport.h" #include "global.h" +#include "filemanager.h" ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) : QWidget(parent), @@ -21,8 +22,8 @@ ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) : connect(ui->checkBox_phase_4,&QCheckBox::clicked, this,&ExperimentSettingForm::slotPhase4StateChanged); -// connect(ui->pushButton_connect_to_device,&QPushButton::clicked, -// this,&ExperimentSettingForm::slotConnectToDevice); + // connect(ui->pushButton_connect_to_device,&QPushButton::clicked, + // this,&ExperimentSettingForm::slotConnectToDevice); connect(ui->pushButton_cancel,&QPushButton::clicked, this,&ExperimentSettingForm::slotCancel); } @@ -168,7 +169,7 @@ void ExperimentSettingForm::slotConnectToDevice() qDebug()<<"ba size:"<setMode(Global::Mode::ConnectedToDev); + // Global::instance()->setMode(Global::Mode::ConnectedToDev); #if 0 QByteArray startBa = DataParser::setDeviceStartStop(DeviceStartMode::Start); @@ -226,4 +227,9 @@ void ExperimentSettingForm::slotPhaseCheck() void ExperimentSettingForm::on_pushButton_deliverData_clicked() { 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(); } diff --git a/src/ui/experimentsettingform.h b/src/ui/experimentsettingform.h index f2f47e0..ca0bf26 100644 --- a/src/ui/experimentsettingform.h +++ b/src/ui/experimentsettingform.h @@ -15,6 +15,7 @@ public: explicit ExperimentSettingForm(QWidget *parent = nullptr); ~ExperimentSettingForm(); + signals: void sigDeliverData(const QByteArray&); private slots: