From c3aa0df987f70a4e80f72bbb71e8179b09d31800 Mon Sep 17 00:00:00 2001 From: yuntang <123@qq.com> Date: Mon, 28 Apr 2025 17:31:29 +0800 Subject: [PATCH] 2025-04-28T17:31:28 --- experiment_data/sample_data/~$锡.xlsx | Bin 0 -> 165 bytes src/global.h | 4 +- src/images.qrc | 1 + src/images/axis.png | Bin 0 -> 4382 bytes src/mainwindow.cpp | 5 +++ src/mainwindow.h | 2 + src/mainwindow.ui | 11 +++++ src/serialport/dataparser.cpp | 13 +++--- src/ui/centralwidget.cpp | 62 +++++++++++++++++++++++++- src/ui/centralwidget.h | 7 +++ 10 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 experiment_data/sample_data/~$锡.xlsx create mode 100644 src/images/axis.png diff --git a/experiment_data/sample_data/~$锡.xlsx b/experiment_data/sample_data/~$锡.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d4a5841882f71e1e9259c5c320e2b84832515279 GIT binary patch literal 165 ZcmZQhOiETD9WXN_G9)o1Gbqpn0s!Zc4-)_Y literal 0 HcmV?d00001 diff --git a/src/global.h b/src/global.h index efd222f..6016f11 100644 --- a/src/global.h +++ b/src/global.h @@ -16,6 +16,8 @@ const QString SampleDataFloder = ExperimentDirPath + "/sample_data"; const QString BaseLineFolder = ExperimentDirPath + "/base_line"; const QString AnalysisStateFolder = ExperimentDirPath + "/analysis_state"; +const QString CurveOfTimeTypeObjectName("curve_time"); + enum Mode{ Analysis, ConnectedToDev, @@ -69,7 +71,7 @@ struct CurveFileData{ struct CurveExperimentData{ QCPCurve * curve; - QString fileName; + QString fileName; // discard QVector dataVtr; }; diff --git a/src/images.qrc b/src/images.qrc index 44c5382..160f474 100644 --- a/src/images.qrc +++ b/src/images.qrc @@ -7,5 +7,6 @@ images/real_time_widget.png images/logo.png images/logo.ico + images/axis.png diff --git a/src/images/axis.png b/src/images/axis.png new file mode 100644 index 0000000000000000000000000000000000000000..830b8f3ccd9b785325063219f8a7c687864b751d GIT binary patch literal 4382 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 _centralWidget->setAnalysisMode(CentralWidget::AnalysisMode::EndsetTemperaturePoint); } + +void MainWindow::on_actionYAxis_triggered() +{ +_centralWidget->switchAxisMode(); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index 86a1eda..46279d3 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -87,6 +87,8 @@ private slots: void on_actionEndsetTemperaturePoint_triggered(); + void on_actionYAxis_triggered(); + private: void connections(); void setActionEnable(const bool); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 1bb6a25..1c31be1 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -36,6 +36,7 @@ 视图 + @@ -116,6 +117,7 @@ + @@ -286,6 +288,15 @@ 打印预览 + + + + :/images/axis.png:/images/axis.png + + + Y轴 + + diff --git a/src/serialport/dataparser.cpp b/src/serialport/dataparser.cpp index 7885ad6..bc9ddc5 100644 --- a/src/serialport/dataparser.cpp +++ b/src/serialport/dataparser.cpp @@ -41,7 +41,7 @@ bool commonDataParser(const QByteArray &ba, CommonData &cd) QByteArray connectToDevice(const QVector &vtr) { -// const int phaseLength = sizeof(Phase); + // const int phaseLength = sizeof(Phase); const int phaseLength = PHASE_BYTE_SIZE; const int phaseArrayLength = vtr.size() * phaseLength; @@ -162,12 +162,15 @@ void experimentalStateSwitching(const CommonData &cd) Global::_curveExperimentDataVtr.push_back(ced); Global::_currentCurveExperimentDataPtr = &Global::_curveExperimentDataVtr.last(); - Global::_currentCurveExperimentDataPtr->fileName = Global::_experimentInfo.sampleName; +#if 1 + Global::_currentCurveExperimentDataPtr->fileName = + Global::_experimentInfo.sampleName; +#endif } -// logde<<"phase:"<<(int)cd.current_phase; -// logde<<"run type:"<<(int)cd.run_type; -// logde<<"software mode:"<yAxis2->setVisible(true); + _customPlot->yAxis2->setLabel("Time/min"); + + for(Global::CurveFileData& cfd:Global::_curveFileDataVtr){ + for(Global::PhaseTotalInfo& pti:cfd.phaseTotalVtr){ + + QVector dataVtr; + QVector tVtr,xVtr, yVtr; + int index = 0; + for (Global::ExperimentData &ed : pti.dataVtr) + { + tVtr.push_back(index++); + xVtr.push_back(ed.sampleTemp); + yVtr.push_back(ed.runTime); + } + + double yMin = yVtr.first(); + double yMax = yVtr.last(); + double tick = (yMax - yMin) / 4; + + double axisMin = yMin - tick; + double axisMax = yMax + tick; + _customPlot->yAxis2->setRange(axisMin,axisMax); + + QCPCurve* curve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis2); + curve->setData(tVtr, xVtr, yVtr); + + curve->setObjectName(Global::CurveOfTimeTypeObjectName); + } + } + + }else{ + _axisMode = AxisMode::SingleY; + + _customPlot->yAxis2->setVisible(false); + + for (int i = _customPlot->graphCount() - 1; i >= 0; --i) { + QCPGraph *graph = _customPlot->graph(i); + if(graph && graph->objectName() == Global::CurveOfTimeTypeObjectName){ + _customPlot->removeGraph(graph); + } + } + } + + _customPlot->replot(); +} + void CentralWidget::setAnalysisMode(const CentralWidget::AnalysisMode mode) { _analysisMode = mode; @@ -929,6 +986,7 @@ QPixmap CentralWidget::getPixMap() return _customPlot->toPixmap(); } + void CentralWidget::slotAxisModify(const float temp) { _customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); diff --git a/src/ui/centralwidget.h b/src/ui/centralwidget.h index cd52e85..01cc380 100644 --- a/src/ui/centralwidget.h +++ b/src/ui/centralwidget.h @@ -35,6 +35,12 @@ public: EventHandler* getEvnetHandler(){return _eventHandler;} QPixmap getPixMap(); + + enum AxisMode{ + SingleY, + DoubleY + }; + void switchAxisMode(); signals: void sigContextMenuShow(const QPoint); void sigSendLineXCoord(const int,const double); @@ -88,6 +94,7 @@ private: QCPItemStraightLine *_line1,*_line2; // QVector _dataVtr; QVector _lineVtr; + AxisMode _axisMode; }; #endif // CENTRALWIDGET_H