From ed67bf928767ca172ecdbc827ef21a885b6886b0 Mon Sep 17 00:00:00 2001 From: yuntang <123@qq.com> Date: Tue, 22 Apr 2025 16:59:26 +0800 Subject: [PATCH] 2025-04-22T16:59:26 --- experiment_data/analysis_state/~$标样.xlsx | Bin 165 -> 0 bytes experiment_data/sample_data/1111new.xlsx | Bin 0 -> 5407 bytes experiment_data/sample_data/22new.xlsx | Bin 0 -> 5406 bytes experiment_data/sample_data/333new.xlsx | Bin 0 -> 5406 bytes experiment_data/sample_data/new.xlsx | Bin 0 -> 5407 bytes src/AnalysTool.pro | 3 ++ src/data/pointcalculate.cpp | 3 +- src/global.h | 6 +-- src/mainwindow.cpp | 54 ++++++++++++++++----- src/mainwindow.h | 2 + src/serialport/dataparser.cpp | 4 +- src/serialport/serialport.cpp | 9 ++-- src/stable.h | 46 ++++++++++++++++++ src/ui/centralwidget.cpp | 21 +++++++- src/ui/leftwidget.cpp | 47 +++++++++++------- src/ui/leftwidget.h | 7 ++- 16 files changed, 160 insertions(+), 42 deletions(-) delete mode 100644 experiment_data/analysis_state/~$标样.xlsx create mode 100644 experiment_data/sample_data/1111new.xlsx create mode 100644 experiment_data/sample_data/22new.xlsx create mode 100644 experiment_data/sample_data/333new.xlsx create mode 100644 experiment_data/sample_data/new.xlsx create mode 100644 src/stable.h diff --git a/experiment_data/analysis_state/~$标样.xlsx b/experiment_data/analysis_state/~$标样.xlsx deleted file mode 100644 index d4a5841882f71e1e9259c5c320e2b84832515279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 ZcmZQhOiETD9WXN_G9)o1Gbqpn0s!Zc4-)_Y diff --git a/experiment_data/sample_data/1111new.xlsx b/experiment_data/sample_data/1111new.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2bc3252eb24d322a4cc6db99df590c6c58ff0272 GIT binary patch literal 5407 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 Ze-5*XJR17Xhk%H80HOzm-~ajR{{X6)T1@}| literal 0 HcmV?d00001 diff --git a/experiment_data/sample_data/22new.xlsx b/experiment_data/sample_data/22new.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3adfa8006dd748b97c10b26d84ebc57ff283d0fa GIT binary patch literal 5406 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 W%&HI+)SnLl;qM@L4~!uA`RiZzIaB)p literal 0 HcmV?d00001 diff --git a/experiment_data/sample_data/333new.xlsx b/experiment_data/sample_data/333new.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c7d8710727aac92413857f92d909a67def603f4d GIT binary patch literal 5406 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::infinity(); // 初始化为正无穷 @@ -484,7 +483,7 @@ QPointF PointCalculate::getClosestPointByY(const double left,const double right, for (const Global::ExperimentData& ed : _dataVtr) { if (left < ed.sampleTemp && ed.sampleTemp < right) { - float diff = std::abs(ed.dsc - valueY); + double diff = std::abs(ed.dsc - valueY); if (diff < minValue) { minValue = diff; closestPoint = QPointF(ed.sampleTemp, ed.dsc); diff --git a/src/global.h b/src/global.h index 44d3793..0536e2c 100644 --- a/src/global.h +++ b/src/global.h @@ -19,7 +19,7 @@ enum Mode{ Analysis, ConnectedToDev, DeliveredData, - ExperimentStart + Experiment }; enum DeviceConnectionStatus{ @@ -79,9 +79,9 @@ extern QVector _curveFileDataVtr; extern ExperimentInfo _experimentInfo; extern QVector _curveExperimentDataVtr; -// +// Instrument coefficient. extern bool _enthalpyCoefficientEnableFlag; -//abc +///abc extern QVector _enthalpyCoefficientVtr; } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0dd88f5..33029c5 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -6,6 +6,8 @@ #include "serialport.h" #include "dataparser.h" #include "filemanager.h" +#include "logger.h" +#include "xlsxhandler.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -82,6 +84,8 @@ MainWindow::MainWindow(QWidget *parent) _eventHandler = _centralWidget->getEvnetHandler(); // connections(); + // + // ui->actionStop->setEnabled(false); } @@ -90,7 +94,6 @@ MainWindow::~MainWindow() // 删除非QObject派生类的对象 // 假设 Ui::MainWindow 不是 QObject 派生类 delete ui; - } void MainWindow::slotContextMenuShow(const QPoint point) @@ -156,6 +159,7 @@ void MainWindow::connections() connect(_eventHandler,&EventHandler::sigSetCurve, _specificHeatComparisonMethodForm, &SpecificHeatComparisonMethodForm::slotSetCurve); + } void MainWindow::setActionEnable(const bool flag) @@ -184,16 +188,44 @@ void MainWindow::setSubWidgetAttribute(QWidget *widget) widget->setFixedSize(widget->geometry().width(),widget->geometry().height()); } +bool MainWindow::saveExperimentFile(const QString fileName) +{ + QString localFileName = fileName; + if(fileName.isEmpty()){ + localFileName = "new"; + } + QString xlsxfilePath = Global::SampleDataFloder + "/" + localFileName + ".xlsx"; + QString filePath = QFileDialog::getSaveFileName(nullptr, "Save experiment file", + xlsxfilePath, "Excel Files (*.xlsx)"); + logde<<"filePath:"<slotSendData(ba); + if(Global::_mode == Global::Mode::Experiment) + { + QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Stop); + SerialPort::instance()->slotSendData(ba); - // Save data. +#if 0 + // Save data. + if(saveExperimentFile(Global::_experimentInfo.sampleName)){ + _leftWidget->reloadFileName(); + } +#endif - - // Global::instance()->setMode(Global::Mode::Analysis); - Global::_mode = Global::Mode::Analysis; + // Set software mode to analysis. + Global::_mode = Global::Mode::Analysis; + } } void MainWindow::on_actionNew_triggered() @@ -210,14 +242,14 @@ void MainWindow::on_actionStart_triggered() SerialPort::instance()->slotSendData(ba); - // Global::instance()->setMode(Global::Mode::ExperimentStart); - Global::_mode = Global::Mode::ExperimentStart; + Global::_mode = Global::Mode::Experiment; + + logde<<"start experiment,set soft into experiment mode."; } void MainWindow::on_actionReadOnly_triggered() { - // Global::instance()->setMode(Global::Mode::ExperimentStart); - Global::_mode = Global::Mode::ExperimentStart; + Global::_mode = Global::Mode::Experiment; SerialPort::instance()->openSp(); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 8396c05..631d9e2 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -45,6 +45,7 @@ private slots: void on_actionStop_triggered(); void on_actionReadOnly_triggered(); void on_actionRealTimeWidget_triggered(); + //analysis void on_actionNumericalLabel_triggered(); void on_actionStartPoint_triggered(); @@ -84,6 +85,7 @@ private: void connections(); void setActionEnable(const bool); void setSubWidgetAttribute(QWidget *); + bool saveExperimentFile(const QString fileName); private: Ui::MainWindow *ui; CentralWidget *_centralWidget; diff --git a/src/serialport/dataparser.cpp b/src/serialport/dataparser.cpp index 7e91f32..d24328d 100644 --- a/src/serialport/dataparser.cpp +++ b/src/serialport/dataparser.cpp @@ -5,6 +5,7 @@ #include "dataparser.h" #include "defines.h" #include "global.h" +#include "logger.h" namespace DataParser { @@ -183,7 +184,8 @@ namespace DataParser case DeviceRunStatus::Idle: case DeviceRunStatus::Cooling: // Global::instance()->setMode(Global::Mode::Analysis); - Global::_mode = Global::Mode::Analysis; +// Global::_mode = Global::Mode::Analysis; +// logde<<"Device into cooling status,then set the software into annlysis mode."; return true; break; default:break; diff --git a/src/serialport/serialport.cpp b/src/serialport/serialport.cpp index 88a5fc1..d62ae49 100644 --- a/src/serialport/serialport.cpp +++ b/src/serialport/serialport.cpp @@ -10,6 +10,7 @@ #include "defines.h" #include "dataparser.h" #include "global.h" +#include "logger.h" using namespace std; @@ -132,11 +133,11 @@ void SerialPort::slotReadData() // read data if (spp->addr == 0) { - if (Global::Mode::ExperimentStart == Global::_mode) + if (Global::Mode::Experiment == Global::_mode) { emit sigSendCommonData(cd); } - // emit sigSendCommonDataToRealDataForm(cd); + emit sigSendCommonDataToRealDataForm(cd); } } #endif @@ -174,6 +175,7 @@ void SerialPort::commonDataParser(const int dataLength, const u16 addr, case DeviceRunStatus::Cooling: // Global::instance()->setMode(Global::Mode::Analysis); Global::_mode = Global::Mode::Analysis; + logde<<"set global mode analysis.common data parser."; break; default:break; } @@ -201,10 +203,11 @@ void SerialPort::commonDataParser(const int dataLength, const u16 addr, case DeviceStartMode::Stop: // Global::instance()->setMode(Global::Mode::Analysis); Global::_mode = Global::Mode::Analysis; + logde<<"set global mode analysis."; break; case DeviceStartMode::Start: // Global::instance()->setMode(Global::Mode::ExperimentStart); - Global::_mode = Global::Mode::ExperimentStart; + Global::_mode = Global::Mode::Experiment; break; default: break; diff --git a/src/stable.h b/src/stable.h new file mode 100644 index 0000000..1e10165 --- /dev/null +++ b/src/stable.h @@ -0,0 +1,46 @@ +// #ifndef STABLE_H //Qt官方例子没有定义这个条件编译 +// #define STABLE_H + +// Add C includes here +#include + +#if defined __cplusplus +// Add C++ includes here +#include + +// Qt includes +#include +// #include //请谨慎包含 +// #include //请谨慎包含 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +//#include +#if (QT_VERSION > QT_VERSION_CHECK(5,0,0)) +#include +#endif + +#include +#include +#include +#include + +// Other +//#include "thirdparty/include/libmain.h" +//#include "my_stable_class.h" + +#endif //__cplusplus +// #endif // STABLE_H diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp index eef72c9..fc4629a 100644 --- a/src/ui/centralwidget.cpp +++ b/src/ui/centralwidget.cpp @@ -74,6 +74,14 @@ CentralWidget::CentralWidget(QWidget *parent) _customPlot->replot(); #endif // startTimer(1000); + + + // 设置坐标轴标签 + _customPlot->xAxis->setLabel("Temp/℃"); + _customPlot->yAxis->setLabel("DSC/mW"); + // 设置坐标轴范围,以便我们可以看到全部数据 + _customPlot->xAxis->setRange(0, 400); + _customPlot->yAxis->setRange(-50, 50); } CentralWidget::~CentralWidget() @@ -100,7 +108,7 @@ void CentralWidget::setAnalysisMode(const CentralWidget::AnalysisMode mode) void CentralWidget::slotModeModify(const Global::Mode mode) { - if (Global::Mode::ExperimentStart == mode) + if (Global::Mode::Experiment == mode) { #if 0 if (_customPlot->graphCount() > 0 && _currentGraph) @@ -130,11 +138,20 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd) { qDebug() << "slotRevCommonData"; + static double index = 0.0; + if(!_currentCurve){ _currentCurve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis); } // Update curve. - _currentCurve->addData(cd.sample_temp, cd.dsc); + // _currentCurve->addData(cd.sample_temp, cd.dsc); + _currentCurve->addData(index++,cd.sample_temp, cd.dsc); + // _currentCurve->data()->add(QCPCurveData(index++, cd.sample_temp, cd.dsc)); + + + // 设置曲线数据 +// _currentCurve->setData(data); + _customPlot->rescaleAxes(); _customPlot->replot(); diff --git a/src/ui/leftwidget.cpp b/src/ui/leftwidget.cpp index dab0b69..3d9ce56 100644 --- a/src/ui/leftwidget.cpp +++ b/src/ui/leftwidget.cpp @@ -13,18 +13,18 @@ LeftWidget::LeftWidget(QWidget *parent ): QDockWidget(parent) _treeWidget = new QTreeWidget(); _treeWidget->setHeaderHidden(true); - _analysisStateItem = new QTreeWidgetItem(_treeWidget); - _analysisStateItem->setText(0,"分析状态"); - _baseLineItem = new QTreeWidgetItem(_treeWidget); - _baseLineItem->setText(0,"基线"); _sampleDataItem = new QTreeWidgetItem(_treeWidget); _sampleDataItem->setText(0,"样品数据"); + _baseLineItem = new QTreeWidgetItem(_treeWidget); + _baseLineItem->setText(0,"基线"); + _analysisStateItem = new QTreeWidgetItem(_treeWidget); + _analysisStateItem->setText(0,"分析状态"); _treeWidget->setSortingEnabled(false); - _treeWidget->addTopLevelItem(_sampleDataItem); - _treeWidget->addTopLevelItem(_baseLineItem); - _treeWidget->addTopLevelItem(_analysisStateItem); + _treeWidget->insertTopLevelItem(0, _sampleDataItem); + _treeWidget->insertTopLevelItem(1, _baseLineItem); + _treeWidget->insertTopLevelItem(2, _analysisStateItem); setWidget(_treeWidget); @@ -42,9 +42,21 @@ LeftWidget::LeftWidget(QWidget *parent ): QDockWidget(parent) this,&LeftWidget::slotTreeWidgetItemClicked); } +void LeftWidget::reloadFileName() +{ + clearAllChildItems(_sampleDataItem); + clearAllChildItems(_baseLineItem); + clearAllChildItems(_analysisStateItem); + + initFileName(_sampleDataItem,Global::SampleDataFloder); + initFileName(_baseLineItem,Global::BaseLineFolder); + initFileName(_analysisStateItem,Global::AnalysisStateFolder); +} + void LeftWidget::initData() { - const QString folderPath = QDir::currentPath()+"/../experiment_data"; + // const QString folderPath = QDir::currentPath()+"/../experiment_data"; + const QString folderPath = Global::SampleDataFloder; #if 1 QDir dir(folderPath); if (!dir.exists()) { @@ -111,16 +123,6 @@ void LeftWidget::initFileName(QTreeWidgetItem* parentItem,const QString &folderP // _sampleDataItem->addChild(new QTreeWidgetItem(0,fileName)); parentItem->addChild(subItem); } - -#if 0 - // 获取文件夹中的所有文件名 - QStringList files = dir.entryList(QDir::Files); // 只列出文件 - qDebug() << "Files in the current directory:"; - foreach (const QString &fileName, files) - { - qDebug() << fileName; - } -#endif } void LeftWidget::expandAll(QTreeWidgetItem* item) { @@ -130,6 +132,15 @@ void LeftWidget::expandAll(QTreeWidgetItem* item) { } } +void LeftWidget::clearAllChildItems(QTreeWidgetItem *parentItem) +{ + int childCount = parentItem->childCount(); + for (int i = 0; i < childCount; ++i) { + QTreeWidgetItem* childItem = parentItem->takeChild(0); + delete childItem; + } +} + #if 0 void LeftWidget::recursiveFolderOperation(const QString& folderPath) { QDir dir(folderPath); diff --git a/src/ui/leftwidget.h b/src/ui/leftwidget.h index e226628..7603e21 100644 --- a/src/ui/leftwidget.h +++ b/src/ui/leftwidget.h @@ -11,12 +11,15 @@ class LeftWidget:public QDockWidget Q_OBJECT public: LeftWidget(QWidget *parent = nullptr); + + void reloadFileName(); +signals: + void sigSendAnalysisFileName(const QString&); private: void initData(); void initFileName(QTreeWidgetItem*,const QString &folderPath); void expandAll(QTreeWidgetItem* item); -signals: - void sigSendAnalysisFileName(const QString&); + void clearAllChildItems(QTreeWidgetItem* parentItem); protected: private slots: void slotTreeWidgetItemClicked(QTreeWidgetItem *item, int column);