diff --git a/AnalysisTool-release/bin/AnalysisTool_0.9.8.2.exe b/AnalysisTool-release/bin/AnalysisTool_0.9.8.2.exe deleted file mode 100644 index eb4f8d2..0000000 Binary files a/AnalysisTool-release/bin/AnalysisTool_0.9.8.2.exe and /dev/null differ diff --git a/AnalysisTool-release/bin/AnalysisTool_0.9.8.exe b/AnalysisTool-release/bin/AnalysisTool_0.9.8.exe deleted file mode 100644 index 2e0b149..0000000 Binary files a/AnalysisTool-release/bin/AnalysisTool_0.9.8.exe and /dev/null differ diff --git a/AnalysisTool-release/bin/DSCAnalysisTool_1.0.2.exe b/AnalysisTool-release/bin/DSCAnalysisTool_1.0.2.exe deleted file mode 100644 index 14940c9..0000000 Binary files a/AnalysisTool-release/bin/DSCAnalysisTool_1.0.2.exe and /dev/null differ diff --git a/AnalysisTool-release/bin/DSCAnalysisTool_1.0.4.exe b/AnalysisTool-release/bin/DSCAnalysisTool_1.0.4.exe deleted file mode 100644 index bad2cf0..0000000 Binary files a/AnalysisTool-release/bin/DSCAnalysisTool_1.0.4.exe and /dev/null differ diff --git a/AnalysisTool-release/bin/DSCAnalysisTool_1.0.5.exe b/AnalysisTool-release/bin/DSCAnalysisTool_1.0.5.exe new file mode 100644 index 0000000..b6eb46e Binary files /dev/null and b/AnalysisTool-release/bin/DSCAnalysisTool_1.0.5.exe differ diff --git a/AnalysisTool-release/bin/log/20250623.log b/AnalysisTool-release/bin/log/20250623.log new file mode 100644 index 0000000..b72f421 --- /dev/null +++ b/AnalysisTool-release/bin/log/20250623.log @@ -0,0 +1,4 @@ +[2025-06-23 08:57:37,833] main... +[2025-06-23 08:57:37,835] config file existed. +[2025-06-23 08:57:37,872] version:1.0.5.0 +[2025-06-23 08:57:37,898] setEventHandlerEnable...0 diff --git a/experiment_data/sample_data/.xlsx b/experiment_data/sample_data/.xlsx index 75807d9..9ba06e3 100644 Binary files a/experiment_data/sample_data/.xlsx and b/experiment_data/sample_data/.xlsx differ diff --git a/experiment_data/sample_data/1111.xlsx b/experiment_data/sample_data/1111.xlsx new file mode 100644 index 0000000..2d4178f Binary files /dev/null and b/experiment_data/sample_data/1111.xlsx differ diff --git a/experiment_data/sample_data/1111_2025_06_23_10_19_29.xlsx b/experiment_data/sample_data/1111_2025_06_23_10_19_29.xlsx new file mode 100644 index 0000000..423b972 Binary files /dev/null and b/experiment_data/sample_data/1111_2025_06_23_10_19_29.xlsx differ diff --git a/experiment_data/sample_data/1111_2025_06_23_10_23_23.xlsx b/experiment_data/sample_data/1111_2025_06_23_10_23_23.xlsx new file mode 100644 index 0000000..19e6030 Binary files /dev/null and b/experiment_data/sample_data/1111_2025_06_23_10_23_23.xlsx differ diff --git a/experiment_data/sample_data/22222222.xlsx b/experiment_data/sample_data/22222222.xlsx new file mode 100644 index 0000000..3262af1 Binary files /dev/null and b/experiment_data/sample_data/22222222.xlsx differ diff --git a/experiment_data/sample_data/3333.xlsx b/experiment_data/sample_data/3333.xlsx new file mode 100644 index 0000000..96af905 Binary files /dev/null and b/experiment_data/sample_data/3333.xlsx differ diff --git a/experiment_data/sample_data/3333_2025_06_23_10_31_51.xlsx b/experiment_data/sample_data/3333_2025_06_23_10_31_51.xlsx new file mode 100644 index 0000000..3d26fd5 Binary files /dev/null and b/experiment_data/sample_data/3333_2025_06_23_10_31_51.xlsx differ diff --git a/experiment_data/sample_data/34new.xlsx b/experiment_data/sample_data/34new.xlsx new file mode 100644 index 0000000..3a8bf3c Binary files /dev/null and b/experiment_data/sample_data/34new.xlsx differ diff --git a/experiment_data/sample_data/4444.xlsx b/experiment_data/sample_data/4444.xlsx new file mode 100644 index 0000000..265c629 Binary files /dev/null and b/experiment_data/sample_data/4444.xlsx differ diff --git a/experiment_data/sample_data/4444_2025_06_23_10_32_45.xlsx b/experiment_data/sample_data/4444_2025_06_23_10_32_45.xlsx new file mode 100644 index 0000000..ac3e06f Binary files /dev/null and b/experiment_data/sample_data/4444_2025_06_23_10_32_45.xlsx differ diff --git a/experiment_data/sample_data/49-test.xlsx b/experiment_data/sample_data/49-test.xlsx new file mode 100644 index 0000000..69e8991 Binary files /dev/null and b/experiment_data/sample_data/49-test.xlsx differ diff --git a/experiment_data/sample_data/55-test.xlsx b/experiment_data/sample_data/55-test.xlsx new file mode 100644 index 0000000..217d1fa Binary files /dev/null and b/experiment_data/sample_data/55-test.xlsx differ diff --git a/experiment_data/sample_data/55-test_2025_06_23_10_02_15.xlsx b/experiment_data/sample_data/55-test_2025_06_23_10_02_15.xlsx new file mode 100644 index 0000000..182f00f Binary files /dev/null and b/experiment_data/sample_data/55-test_2025_06_23_10_02_15.xlsx differ diff --git a/experiment_data/sample_data/555.xlsx b/experiment_data/sample_data/555.xlsx new file mode 100644 index 0000000..a7adb07 Binary files /dev/null and b/experiment_data/sample_data/555.xlsx differ diff --git a/experiment_data/sample_data/555_2025_06_23_10_38_40.xlsx b/experiment_data/sample_data/555_2025_06_23_10_38_40.xlsx new file mode 100644 index 0000000..14f8d3e Binary files /dev/null and b/experiment_data/sample_data/555_2025_06_23_10_38_40.xlsx differ diff --git a/experiment_data/sample_data/6666.xlsx b/experiment_data/sample_data/6666.xlsx new file mode 100644 index 0000000..a1f3d67 Binary files /dev/null and b/experiment_data/sample_data/6666.xlsx differ diff --git a/experiment_data/sample_data/dodu.xlsx b/experiment_data/sample_data/dodu.xlsx new file mode 100644 index 0000000..ce01023 Binary files /dev/null and b/experiment_data/sample_data/dodu.xlsx differ diff --git a/experiment_data/sample_data/dodu_2025_06_23_10_13_30.xlsx b/experiment_data/sample_data/dodu_2025_06_23_10_13_30.xlsx new file mode 100644 index 0000000..a8e2ebb Binary files /dev/null and b/experiment_data/sample_data/dodu_2025_06_23_10_13_30.xlsx differ diff --git a/experiment_data/sample_data/new.xlsx b/experiment_data/sample_data/new.xlsx index 807cc85..fbaf2e4 100644 Binary files a/experiment_data/sample_data/new.xlsx and b/experiment_data/sample_data/new.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_09_52_31.xlsx b/experiment_data/sample_data/new_2025_06_23_09_52_31.xlsx new file mode 100644 index 0000000..d529de0 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_09_52_31.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_00_30.xlsx b/experiment_data/sample_data/new_2025_06_23_10_00_30.xlsx new file mode 100644 index 0000000..04fb47f Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_00_30.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_01_22.xlsx b/experiment_data/sample_data/new_2025_06_23_10_01_22.xlsx new file mode 100644 index 0000000..ecb8f2d Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_01_22.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_03_35.xlsx b/experiment_data/sample_data/new_2025_06_23_10_03_35.xlsx new file mode 100644 index 0000000..3a8bf3c Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_03_35.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_05_57.xlsx b/experiment_data/sample_data/new_2025_06_23_10_05_57.xlsx new file mode 100644 index 0000000..4b1c9c6 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_05_57.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_08_17.xlsx b/experiment_data/sample_data/new_2025_06_23_10_08_17.xlsx new file mode 100644 index 0000000..9ba06e3 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_08_17.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_11_40.xlsx b/experiment_data/sample_data/new_2025_06_23_10_11_40.xlsx new file mode 100644 index 0000000..31718d9 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_11_40.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_13_05.xlsx b/experiment_data/sample_data/new_2025_06_23_10_13_05.xlsx new file mode 100644 index 0000000..0bfc294 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_13_05.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_17_29.xlsx b/experiment_data/sample_data/new_2025_06_23_10_17_29.xlsx new file mode 100644 index 0000000..c6907aa Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_17_29.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_17_30.xlsx b/experiment_data/sample_data/new_2025_06_23_10_17_30.xlsx new file mode 100644 index 0000000..cce91fb Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_17_30.xlsx differ diff --git a/experiment_data/sample_data/new_2025_06_23_10_18_56.xlsx b/experiment_data/sample_data/new_2025_06_23_10_18_56.xlsx new file mode 100644 index 0000000..32eab63 Binary files /dev/null and b/experiment_data/sample_data/new_2025_06_23_10_18_56.xlsx differ diff --git a/experiment_data/sample_data/~$new_2025_06_20_16_42_40.xlsx b/experiment_data/sample_data/~$new_2025_06_20_16_42_40.xlsx deleted file mode 100644 index d4a5841..0000000 Binary files a/experiment_data/sample_data/~$new_2025_06_20_16_42_40.xlsx and /dev/null differ diff --git a/src/DSCAnalysisTool.pro b/src/DSCAnalysisTool.pro index 0b4ef05..971723a 100644 --- a/src/DSCAnalysisTool.pro +++ b/src/DSCAnalysisTool.pro @@ -9,7 +9,7 @@ CONFIG+=precompile_header PRECOMPILED_HEADER=stable.h # -VERSION = 1.0.5 +VERSION = 1.0.6 # 设置目标文件名,包含版本号 TARGET = DSCAnalysisTool_$${VERSION} diff --git a/src/data/oitautoanalysis.cpp b/src/data/oitautoanalysis.cpp index 130208f..37e8836 100644 --- a/src/data/oitautoanalysis.cpp +++ b/src/data/oitautoanalysis.cpp @@ -60,7 +60,8 @@ void OITAutoAnalysis::analysis() if((ed.runTime > Global::_OITAutoAnalysisCoefficient) && (ed.dsc - phase2FirstData.dsc > Global::_OITAutoAnalysisThreshold)){ // - double x1 = phase2FirstData.runTime; +// double x1 = phase2FirstData.runTime; + double x1 = ConDefaultXValue; double x2 = ed.runTime; emit sigExperimentStop(x1,x2); diff --git a/src/data/oitautoanalysis.h b/src/data/oitautoanalysis.h index 8d611ce..4cea7db 100644 --- a/src/data/oitautoanalysis.h +++ b/src/data/oitautoanalysis.h @@ -7,6 +7,8 @@ class OITAutoAnalysis : public QObject { Q_OBJECT public: + const double ConDefaultXValue = -1.0; + explicit OITAutoAnalysis(QObject *parent = nullptr); static OITAutoAnalysis* getInstance() diff --git a/src/data/pointcalculate.cpp b/src/data/pointcalculate.cpp index 1a34a79..78be58a 100644 --- a/src/data/pointcalculate.cpp +++ b/src/data/pointcalculate.cpp @@ -4,6 +4,7 @@ #include "logger.h" #include "global.h" #include "confighandler.h" +#include "oitautoanalysis.h" QVectorPointCalculate:: _dataVtr; QPointF PointCalculate::_peakPoint; @@ -933,6 +934,7 @@ Global::ExperimentData PointCalculate::findOnSetDataByTime(const double x1, cons Global::ExperimentData PointCalculate::getOITStartData(const double x1,const double x2) { + Global::ExperimentData startEd = _dataVtr.first(); logde<<"startEd phase index:"<ConDefaultXValue,x1)){ + selectedData = calculateMedianOIT().second; + } QPair maxDiffDataPair = calculateMaxDiffDataByTime(x1,x2); - - ExperimentData selectedData = getClosestDataByTime(x1); + Global::ExperimentData endData; // calculate intersection point. QPointF selectedPoint1(selectedData.runTime,selectedData.dsc); @@ -1100,3 +1103,30 @@ PointCalculate::calculateMaxDiffDataByTime( return qMakePair(currentPoint,lastPoint); #endif } + +// 返回值: first=true表示计算成功,second是中位数 +std::pair PointCalculate::calculateMedianOIT(){ + ExperimentData ed; + if (_dataVtr.empty()) return std::make_pair(false, ed); + + // 创建数据副本用于排序 + std::vector sortedData(_dataVtr.begin(),_dataVtr.end()); + + // 定义排序比较函数,使用value成员进行比较 + auto compare = [](const ExperimentData& a, const ExperimentData& b) { + return a.dsc < b.dsc; + }; + + // 对数据进行排序 + std::sort(sortedData.begin(), sortedData.end(), compare); + + // 计算中位数 + size_t n = sortedData.size(); + if (n % 2 == 0) { + // 数据个数为偶数,中位数是中间两个数的平均值 + return std::make_pair(true, sortedData[n/2 - 1]); + } else { + // 数据个数为奇数,中位数是中间的数 + return std::make_pair(true, sortedData[n/2]); + } +} diff --git a/src/data/pointcalculate.h b/src/data/pointcalculate.h index 5018ba2..af10cef 100644 --- a/src/data/pointcalculate.h +++ b/src/data/pointcalculate.h @@ -52,7 +52,7 @@ ExperimentData findOnSetDataByTime(const double x1,const double x2); ExperimentData findEndSetDataByTime(const double x1,const double x2); ExperimentData getOITStartData(const double x1,const double x2); - +std::pair calculateMedianOIT(); // text format QString textFormatPeakPoint(const float enthalpyValue, const float peakValue, diff --git a/src/global.cpp b/src/global.cpp index 73ef5d3..c4451b4 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -149,6 +149,11 @@ bool isZero(double value, double epsilon) { return std::abs(value) < epsilon; } +bool isEqual(const double a, const double b) { + const double tolerance = 1e-5; // 容差值,可以根据需要调整 + return std::fabs(a - b) < tolerance; +} + QString getFileName(const QString filePath) { QFileInfo fileInfo(filePath); diff --git a/src/global.h b/src/global.h index 74e9147..75000a7 100644 --- a/src/global.h +++ b/src/global.h @@ -180,7 +180,9 @@ QString converDoubleToStr(const double); void quadraticLeastSquaresFit(double x[], double y[], int n, double coeff[]); double findNegativeStartPoint(double m, double b, double start, double end); bool isZero(double value, double epsilon = 1e-9); +bool isEqual(const double a,const double b); QString getFileName(const QString filePath); + }; #endif // GLOBAL_H diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 12ecefe..6189455 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -258,6 +258,8 @@ bool MainWindow::saveAnalysisFile(const QString fileName) bool MainWindow::saveFile(const QString fileName,const Global::Mode mode, QString& finalFileName,const bool autoSaveFlag) { + logde<<"save file..."; + QString localFileName = fileName; if(fileName.isEmpty()){ localFileName = "new"; @@ -460,11 +462,15 @@ void MainWindow::on_actionStop_triggered() QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Stop); SerialPort::instance()->slotSendData(ba); -#if 1 + // Set software mode to analysis. + _manuallyStopTheExperimentFlag = true; + logde<<"_manuallyStopTheExperimentFlag:"<<_manuallyStopTheExperimentFlag; + + Global::_mode = Global::Mode::Analysis; + // Save data. - // if(saveExperimentFile(Global::_experimentInfo.sampleName)){ - // _leftWidget->reloadFileName(); - // } +#if 1 + logde<<"on_actionStop_triggered saveFile ..."; QString finalFileName; if(saveFile(Global::_experimentInfo.sampleName,Global::Mode::Experiment,finalFileName,true)){ @@ -475,10 +481,6 @@ void MainWindow::on_actionStop_triggered() } #endif - // Set software mode to analysis. - Global::_mode = Global::Mode::Analysis; - - _manuallyStopTheExperimentFlag = true; } } @@ -520,12 +522,15 @@ void MainWindow::on_actionRealTimeWidget_triggered() void MainWindow::slotSaveExperimentalDataMsgBox() { + logde<<"_manuallyStopTheExperimentFlag:"<<_manuallyStopTheExperimentFlag; + if(_manuallyStopTheExperimentFlag){ logde<<"_manuallyStopTheExperimentFlag..."; return; } // auto save file. + logde<<"slotSaveExperimentalDataMsgBox saveFile ..."; QString finalFileName; if(saveFile(Global::_experimentInfo.sampleName,Global::Mode::Experiment,finalFileName,true)){ _leftWidget->reloadFileName(); diff --git a/src/serialport/serialport.cpp b/src/serialport/serialport.cpp index faee0ff..8d1e356 100644 --- a/src/serialport/serialport.cpp +++ b/src/serialport/serialport.cpp @@ -209,20 +209,23 @@ void SerialPort::updateStatus(const CommonData &cd) emit sigUpdateStatusbarMsg(msg); +#if 1 // If save experiment data. static Global::Mode preMode = Global::Mode::Analysis; - bool sendSignalFlag = false; + bool sendSaveSignalFlag = false; if(Global::_mode != preMode){ if(preMode == Global::Mode::Experiment && Global::_mode == Global::Mode::Analysis){ - sendSignalFlag = true; + sendSaveSignalFlag = true; } preMode = Global::_mode; } - if(sendSignalFlag && !Global::_OITAutoAnalysisModeFlag){ + + if(sendSaveSignalFlag && !Global::_OITAutoAnalysisModeFlag){ emit sigSaveExperimentalDataMsgBox(); } +#endif } void SerialPort::commonDataParser(const int dataLength, const u16 addr,