From 229f08e6163237c839a9707d33639f87f0790050 Mon Sep 17 00:00:00 2001 From: yuntang <123@qq.com> Date: Fri, 27 Jun 2025 17:22:07 +0800 Subject: [PATCH] 2025-06-27T17:22:06 --- .../sample_data/new_2025_06_27_17_03_15.xlsx | Bin 0 -> 9438 bytes .../sample_data/new_2025_06_27_17_05_03.xlsx | Bin 0 -> 7770 bytes src/DSCAnalysisTool.pro | 2 +- src/data/lowesssmoother.h | 1 + src/mainwindow.cpp | 38 ++++++++++++------ src/mainwindow.h | 3 +- src/serialport/serialport.cpp | 27 ++++++++++++- src/serialport/serialport.h | 1 + src/ui/centralwidget.cpp | 2 +- 9 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 experiment_data/sample_data/new_2025_06_27_17_03_15.xlsx create mode 100644 experiment_data/sample_data/new_2025_06_27_17_05_03.xlsx diff --git a/experiment_data/sample_data/new_2025_06_27_17_03_15.xlsx b/experiment_data/sample_data/new_2025_06_27_17_03_15.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4f2f3a684707e7c21dae3981bdb7cf24210e5e20 GIT binary patch literal 9438 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 #include +// lowess namespace Lowess { // 配置参数结构体 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index eaec0c6..9f2d06f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -101,6 +101,11 @@ void MainWindow::slotOITAutoAnalysis(const double x1,const double x2) _centralWidget->setVerticalLineRange(x1,x2); } +void MainWindow::slotStartExperiment() +{ + startExperiment(); +} + void MainWindow::closeEvent(QCloseEvent *event) { // 弹出确认对话框 @@ -140,6 +145,10 @@ void MainWindow::connections() connect(SerialPort::instance(), &SerialPort::sigSaveExperimentalDataMsgBox, this,&MainWindow::slotSaveExperimentalDataMsgBox); + + connect(SerialPort::instance(), &SerialPort::sigStartExperiment, + this,&MainWindow::slotStartExperiment); + #endif // mode @@ -428,6 +437,22 @@ void MainWindow::smoothnessExperimentData(const int level) } +void MainWindow::startExperiment() +{ + QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Start); + + QString hexData = ba.toHex(' '); + qDebug() << "on_actionStart_triggered info (hex):" << hexData; + + SerialPort::instance()->slotSendData(ba); + + Global::_mode = Global::Mode::Experiment; + + _manuallyStopTheExperimentFlag = false; + + _centralWidget->startExperiment(); +} + void MainWindow::on_actionStop_triggered() { logde<<" Stop experiment ..."; @@ -470,18 +495,7 @@ void MainWindow::on_actionStart_triggered() on_actionClearAllData_triggered(); - QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Start); - - QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数 - qDebug() << "on_actionStart_triggered info (hex):" << hexData; - - SerialPort::instance()->slotSendData(ba); - - Global::_mode = Global::Mode::Experiment; - - _manuallyStopTheExperimentFlag = false; - - _centralWidget->startExperiment(); +startExperiment(); } void MainWindow::on_actionReadOnly_triggered() diff --git a/src/mainwindow.h b/src/mainwindow.h index e3d7ab7..a8a40e5 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -42,6 +42,7 @@ public slots: void slotOITAutoAnalysis(const double,const double); + void slotStartExperiment(); protected: void closeEvent(QCloseEvent *event) override; private slots: @@ -128,7 +129,7 @@ private: QVector smoothnessDetail(const int level,const QVector&); void smoothnessExperimentData(const int level); - + void startExperiment(); private: bool _manuallyStopTheExperimentFlag; Ui::MainWindow *ui; diff --git a/src/serialport/serialport.cpp b/src/serialport/serialport.cpp index 8d1e356..66040b7 100644 --- a/src/serialport/serialport.cpp +++ b/src/serialport/serialport.cpp @@ -131,7 +131,7 @@ void SerialPort::slotReadData() } else if (READ_CMD == spp->cmd) { - DataParser::experimentalStateSwitching(cd); + // DataParser::experimentalStateSwitching(cd); updateStatus(cd); if (spp->addr == 0) @@ -156,9 +156,29 @@ void SerialPort::updateStatus(const CommonData &cd) logde<<"software mode:"<setPort(info); + _sp->setPort(info); break; } } diff --git a/src/serialport/serialport.h b/src/serialport/serialport.h index aa02476..2797c66 100644 --- a/src/serialport/serialport.h +++ b/src/serialport/serialport.h @@ -37,6 +37,7 @@ signals: void sigAxisModify(const float temp); void sigUpdateStatusbarMsg(const QString &); void sigSaveExperimentalDataMsgBox(); + void sigStartExperiment(); public slots: void slotDeliverData(const QByteArray &); void slotSendData(const QByteArray &); diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp index b960bf7..b5d9afc 100644 --- a/src/ui/centralwidget.cpp +++ b/src/ui/centralwidget.cpp @@ -299,7 +299,7 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd) { // Record data. if(!Global::_currentCurveExperimentDataPtr){ - loger<<"_currentCurveExperimentDataPtr is nullptr."; + loger<<"_currentCurveExperimentDataPtr is nullptr.Soft exit."; exit(0); }else{ Global::ExperimentData ed;