2025-06-19T16:27:16
This commit is contained in:
parent
29866f73c6
commit
ede02dfbfa
47
AnalysisTool-release/bin/log/20250619.log
Normal file
47
AnalysisTool-release/bin/log/20250619.log
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
[2025-06-19 11:29:31,232] main...
|
||||||
|
[2025-06-19 11:29:31,232] config file existed.
|
||||||
|
[2025-06-19 11:29:31,245] version:1.0.4.0
|
||||||
|
[2025-06-19 11:29:31,253] setEventHandlerEnable...0
|
||||||
|
[2025-06-19 11:30:36,317] main...
|
||||||
|
[2025-06-19 11:30:36,319] config file existed.
|
||||||
|
[2025-06-19 11:30:36,329] version:1.0.4.0
|
||||||
|
[2025-06-19 11:30:36,337] setEventHandlerEnable...0
|
||||||
|
[2025-06-19 11:30:39,937] xlsx sample weight:26.89
|
||||||
|
[2025-06-19 11:30:39,937] startLineIndex:11
|
||||||
|
[2025-06-19 11:30:39,937] data size:839
|
||||||
|
[2025-06-19 11:30:39,939] startLineIndex:857
|
||||||
|
[2025-06-19 11:30:39,939] data size:1157
|
||||||
|
[2025-06-19 11:30:39,939] Cell does not exist.
|
||||||
|
[2025-06-19 11:30:41,742] xlsx sample weight:7
|
||||||
|
[2025-06-19 11:30:41,743] Cell does not exist.
|
||||||
|
[2025-06-19 11:30:43,161] xlsx sample weight:1
|
||||||
|
[2025-06-19 11:30:43,161] startLineIndex:11
|
||||||
|
[2025-06-19 11:30:43,161] data size:298
|
||||||
|
[2025-06-19 11:30:43,161] Cell does not exist.
|
||||||
|
[2025-06-19 11:31:50,869] main...
|
||||||
|
[2025-06-19 11:31:50,869] config file existed.
|
||||||
|
[2025-06-19 11:31:50,878] version:1.0.4.0
|
||||||
|
[2025-06-19 11:31:50,888] setEventHandlerEnable...0
|
||||||
|
[2025-06-19 11:31:53,589] xlsx sample weight:1
|
||||||
|
[2025-06-19 11:31:53,589] startLineIndex:11
|
||||||
|
[2025-06-19 11:31:53,589] data size:298
|
||||||
|
[2025-06-19 11:31:53,589] Cell does not exist.
|
||||||
|
[2025-06-19 11:31:55,248] clearExperimentData...
|
||||||
|
[2025-06-19 11:31:56,695] xlsx sample weight:26.89
|
||||||
|
[2025-06-19 11:31:56,695] startLineIndex:11
|
||||||
|
[2025-06-19 11:31:56,695] data size:830
|
||||||
|
[2025-06-19 11:31:56,697] startLineIndex:848
|
||||||
|
[2025-06-19 11:31:56,697] data size:6631
|
||||||
|
[2025-06-19 11:31:56,701] ana op size:1
|
||||||
|
[2025-06-19 11:31:56,701] cfd fileName:new.xlsx
|
||||||
|
[2025-06-19 11:31:56,701] ao mode:OIT
|
||||||
|
[2025-06-19 11:31:56,701] x1:33.1687,x2:91.1893
|
||||||
|
[2025-06-19 11:32:16,013] clearExperimentData...
|
||||||
|
[2025-06-19 11:32:18,019] xlsx sample weight:7
|
||||||
|
[2025-06-19 11:32:18,019] Cell does not exist.
|
||||||
|
[2025-06-19 11:32:19,224] xlsx sample weight:26.89
|
||||||
|
[2025-06-19 11:32:19,224] startLineIndex:11
|
||||||
|
[2025-06-19 11:32:19,224] data size:839
|
||||||
|
[2025-06-19 11:32:19,224] startLineIndex:857
|
||||||
|
[2025-06-19 11:32:19,224] data size:1157
|
||||||
|
[2025-06-19 11:32:19,224] Cell does not exist.
|
BIN
AnalysisTool-release/experiment_data/analysis_state/new.xlsx
Normal file
BIN
AnalysisTool-release/experiment_data/analysis_state/new.xlsx
Normal file
Binary file not shown.
BIN
AnalysisTool-release/experiment_data/sample_data/氮气氧气Oit2.xlsx
Normal file
BIN
AnalysisTool-release/experiment_data/sample_data/氮气氧气Oit2.xlsx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
experiment_data/sample_data/氧化诱导期.xlsx
Normal file
BIN
experiment_data/sample_data/氧化诱导期.xlsx
Normal file
Binary file not shown.
BIN
experiment_data/sample_data/氧化诱导期222222.xlsx
Normal file
BIN
experiment_data/sample_data/氧化诱导期222222.xlsx
Normal file
Binary file not shown.
BIN
experiment_data/sample_data/氮气氧气Oit2.xlsx
Normal file
BIN
experiment_data/sample_data/氮气氧气Oit2.xlsx
Normal file
Binary file not shown.
@ -283,8 +283,10 @@ float PointCalculate::calculateArea() {
|
|||||||
|
|
||||||
QPair<QPointF, QPointF> PointCalculate::calculateStartAndEndPoint()
|
QPair<QPointF, QPointF> PointCalculate::calculateStartAndEndPoint()
|
||||||
{
|
{
|
||||||
QPair<QPointF,QPointF> leftMaxDiffPointPair = PointCalculate::calculateMaxDiffPointLeft();
|
QPair<QPointF,QPointF> leftMaxDiffPointPair =
|
||||||
QPair<QPointF,QPointF> rightMaxDiffPointPair = PointCalculate::calculateMaxDiffPointRight();
|
PointCalculate::calculateMaxDiffPointLeft();
|
||||||
|
QPair<QPointF,QPointF> rightMaxDiffPointPair =
|
||||||
|
PointCalculate::calculateMaxDiffPointRight();
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
logde<<"b1:"<<leftMaxDiffPointPair.first.x()<<","<<leftMaxDiffPointPair.first.y();
|
logde<<"b1:"<<leftMaxDiffPointPair.first.x()<<","<<leftMaxDiffPointPair.first.y();
|
||||||
@ -293,6 +295,7 @@ QPair<QPointF, QPointF> PointCalculate::calculateStartAndEndPoint()
|
|||||||
logde<<"b3:"<<rightMaxDiffPointPair.first.x()<<","<<rightMaxDiffPointPair.first.y();
|
logde<<"b3:"<<rightMaxDiffPointPair.first.x()<<","<<rightMaxDiffPointPair.first.y();
|
||||||
logde<<"b4:"<<rightMaxDiffPointPair.second.x()<<","<<rightMaxDiffPointPair.second.y();
|
logde<<"b4:"<<rightMaxDiffPointPair.second.x()<<","<<rightMaxDiffPointPair.second.y();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QPointF startPoint = calculateIntersection(_leftSelectedPoint,_rightSelectedPoint,
|
QPointF startPoint = calculateIntersection(_leftSelectedPoint,_rightSelectedPoint,
|
||||||
leftMaxDiffPointPair.first,
|
leftMaxDiffPointPair.first,
|
||||||
leftMaxDiffPointPair.second);
|
leftMaxDiffPointPair.second);
|
||||||
@ -903,8 +906,10 @@ Global::ExperimentData PointCalculate::findOnSetDataByTime(const double x1, cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
Global::ExperimentData resultEd;
|
Global::ExperimentData resultEd;
|
||||||
|
if(!edVtr.empty()){
|
||||||
if(edVtr.empty()){
|
resultEd = edVtr.last();
|
||||||
|
}else{
|
||||||
|
logde<<"edVtr empty...";
|
||||||
return resultEd;
|
return resultEd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -928,18 +933,170 @@ Global::ExperimentData PointCalculate::findOnSetDataByTime(const double x1, cons
|
|||||||
|
|
||||||
Global::ExperimentData PointCalculate::getOITStartData(const double x1,const double x2)
|
Global::ExperimentData PointCalculate::getOITStartData(const double x1,const double x2)
|
||||||
{
|
{
|
||||||
Global::ExperimentData startEd;
|
Global::ExperimentData startEd = _dataVtr.first();
|
||||||
|
|
||||||
|
logde<<"startEd phase index:"<<startEd.phaseIndex;
|
||||||
|
|
||||||
|
Global::ExperimentData edSelectTimeX2 = getClosestDataByTime(x2);
|
||||||
|
logde<<"edSelectTimeX2 phase index:"<<edSelectTimeX2.phaseIndex;
|
||||||
|
|
||||||
for(const Global::ExperimentData &ed : _dataVtr) {
|
for(const Global::ExperimentData &ed : _dataVtr) {
|
||||||
if(ed.runTime < x2){
|
if(ed.phaseIndex == edSelectTimeX2.phaseIndex){
|
||||||
if(ed.phaseIndex != Global::PhaseIndexDefault){
|
startEd = ed;
|
||||||
logde<<"find not equal phase default."<<ed.phaseIndex;
|
|
||||||
startEd = ed;
|
|
||||||
}
|
|
||||||
}else if (ed.runTime > x2){
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return startEd;
|
return startEd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Global::ExperimentData PointCalculate::getClosestDataByTime(const float time)
|
||||||
|
{
|
||||||
|
ExperimentData resultData;
|
||||||
|
|
||||||
|
float minDiff = std::numeric_limits<float>::max();
|
||||||
|
|
||||||
|
for(Global::ExperimentData &ed:_dataVtr){
|
||||||
|
float diff = std::abs(ed.runTime - time);
|
||||||
|
if (diff < minDiff) {
|
||||||
|
minDiff = diff;
|
||||||
|
resultData = ed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultData;
|
||||||
|
}
|
||||||
|
|
||||||
|
Global::ExperimentData PointCalculate::findEndSetDataByTime(const double x1, const double x2)
|
||||||
|
{
|
||||||
|
Global::ExperimentData resultEd;
|
||||||
|
|
||||||
|
// QVector<Global::ExperimentData> edVtr = getDataInXRange(x1,x2);
|
||||||
|
// if(edVtr.empty()){
|
||||||
|
// return resultEd;
|
||||||
|
// }
|
||||||
|
|
||||||
|
QVector<Global::ExperimentData> edVtr;
|
||||||
|
for(const Global::ExperimentData &ed : _dataVtr) {
|
||||||
|
if(x1 < ed.runTime && ed.runTime < x2){
|
||||||
|
edVtr.push_back(ed);
|
||||||
|
}else if (ed.runTime > x2){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double maxDsc = std::numeric_limits<float>::min();
|
||||||
|
for(Global::ExperimentData& ed:edVtr){
|
||||||
|
if(ed.dsc > maxDsc){
|
||||||
|
maxDsc = ed.dsc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从后往前遍历,找到第一个 dsc 与 standardDsc 相等的 ExperimentData
|
||||||
|
for (auto it = edVtr.begin(); it != edVtr.end(); ++it) {
|
||||||
|
if(std::abs(it->dsc - maxDsc) < Global::OnsetAndEndSetRate * maxDsc){
|
||||||
|
resultEd = *it; // 找到匹配项,返回该值
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultEd;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPair<QPointF,QPointF>
|
||||||
|
PointCalculate::calculateOITStartAndEndDataByTime(const double x1, const double x2)
|
||||||
|
{
|
||||||
|
// 获取起点数据。
|
||||||
|
Global::ExperimentData startData = getOITStartData(x1,x2);
|
||||||
|
|
||||||
|
// 计算OIT结束数据(需根据实际逻辑实现)
|
||||||
|
Global::ExperimentData endData;
|
||||||
|
|
||||||
|
QPair<Global::ExperimentData,Global::ExperimentData> maxDiffDataPair =
|
||||||
|
calculateMaxDiffDataByTime(x1,x2);
|
||||||
|
|
||||||
|
ExperimentData selectedData = getClosestDataByTime(x1);
|
||||||
|
|
||||||
|
// calculate intersection point.
|
||||||
|
QPointF selectedPoint1(selectedData.runTime,selectedData.dsc);
|
||||||
|
QPointF selectedPoint2(selectedData.runTime + 10,selectedData.dsc);
|
||||||
|
QPointF maxDiffPoint1(maxDiffDataPair.first.runTime,maxDiffDataPair.first.dsc);
|
||||||
|
QPointF maxDiffPoint2(maxDiffDataPair.second.runTime,maxDiffDataPair.second.dsc);
|
||||||
|
QPointF intersectionPoint = calculateIntersection(selectedPoint1,selectedPoint2,
|
||||||
|
maxDiffPoint1,maxDiffPoint2);
|
||||||
|
|
||||||
|
return qMakePair(QPointF(startData.runTime,startData.dsc),
|
||||||
|
intersectionPoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPair<Global::ExperimentData, Global::ExperimentData>
|
||||||
|
PointCalculate::calculateMaxDiffDataByTime(
|
||||||
|
const double x1,const double x2)
|
||||||
|
{
|
||||||
|
QVector<Global::ExperimentData> rangeEdVtr;
|
||||||
|
for(const Global::ExperimentData &ed : _dataVtr) {
|
||||||
|
if(x1 < ed.runTime && ed.runTime < x2){
|
||||||
|
rangeEdVtr.push_back(ed);
|
||||||
|
}else if (ed.runTime > x2){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
float maxDiff = std::numeric_limits<float>::min();
|
||||||
|
Global::ExperimentData targetCurrentData,targetLastPointData;
|
||||||
|
for(int i = 0; i < rangeEdVtr.size() - 1;i++){
|
||||||
|
Global::ExperimentData currentData = rangeEdVtr.at(i);
|
||||||
|
Global::ExperimentData lastPointData = rangeEdVtr.at(i+1);
|
||||||
|
|
||||||
|
double diff = std::abs(lastPointData.dsc - currentData.dsc);
|
||||||
|
if(diff > maxDiff){
|
||||||
|
maxDiff = diff;
|
||||||
|
|
||||||
|
targetCurrentData = currentData;
|
||||||
|
targetLastPointData = lastPointData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return qMakePair(targetCurrentData,targetLastPointData);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
float maxDiff = std::numeric_limits<float>::min();
|
||||||
|
QPointF currentPoint,lastPoint;
|
||||||
|
|
||||||
|
for (int i = 0; i < _dataVtr.size() - 1; ++i) {
|
||||||
|
const float currentTime = _dataVtr.at(i).sampleTemp;
|
||||||
|
const float currentY = _dataVtr.at(i).dsc;
|
||||||
|
|
||||||
|
// if(type == MaxDiffPointDetailType::Left){
|
||||||
|
// if(currentX <= _leftSelectedPoint.x()){
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// if(currentX >= _peakPoint.x()){
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }else{
|
||||||
|
if(currentTime <= _peakPoint.x()){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(currentTime >= _rightSelectedPoint.x()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
const float lastX = _dataVtr.at(i + 1).sampleTemp;
|
||||||
|
const float lastY = _dataVtr.at(i + 1).dsc;
|
||||||
|
float diff = std::abs(currentY - lastY);
|
||||||
|
if(diff > maxDiff){
|
||||||
|
maxDiff = diff;
|
||||||
|
|
||||||
|
currentPoint.setX(currentTime);
|
||||||
|
currentPoint.setY(currentY);
|
||||||
|
lastPoint.setX(lastX);
|
||||||
|
lastPoint.setY(lastY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return qMakePair(currentPoint,lastPoint);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -24,6 +24,8 @@ QVector<QPointF> getPointVtrInXRange(const float, const float);
|
|||||||
void setRegionPointX(const float,const float);
|
void setRegionPointX(const float,const float);
|
||||||
|
|
||||||
ExperimentData getClosestDataByTemperature(const float);
|
ExperimentData getClosestDataByTemperature(const float);
|
||||||
|
ExperimentData getClosestDataByTime(const float);
|
||||||
|
|
||||||
QPointF getClosestPointByX(const float);
|
QPointF getClosestPointByX(const float);
|
||||||
QVector<QPointF> getNearbyPointGroupByX(const float);
|
QVector<QPointF> getNearbyPointGroupByX(const float);
|
||||||
|
|
||||||
@ -38,6 +40,8 @@ QPair<float, float> getTheMaximumAndMinimumValuesOfTime(
|
|||||||
QPair<QPointF,QPointF> calculateStartAndEndPoint();
|
QPair<QPointF,QPointF> calculateStartAndEndPoint();
|
||||||
QPair<ExperimentData,ExperimentData> calculateStartAndEndData();
|
QPair<ExperimentData,ExperimentData> calculateStartAndEndData();
|
||||||
|
|
||||||
|
QPair<QPointF,QPointF> calculateOITStartAndEndDataByTime(const double x1,const double x2);
|
||||||
|
|
||||||
float calculateArea();
|
float calculateArea();
|
||||||
double obtainTimeValueBasedOnTemperatureValue(const double sampleTemp);
|
double obtainTimeValueBasedOnTemperatureValue(const double sampleTemp);
|
||||||
|
|
||||||
@ -45,6 +49,7 @@ ExperimentData findOnSetDataByTemperature(const double x1,const double x2);
|
|||||||
ExperimentData findEndSetDataByTemperature(const double x1,const double x2);
|
ExperimentData findEndSetDataByTemperature(const double x1,const double x2);
|
||||||
|
|
||||||
ExperimentData findOnSetDataByTime(const double x1,const double x2);
|
ExperimentData findOnSetDataByTime(const double x1,const double x2);
|
||||||
|
ExperimentData findEndSetDataByTime(const double x1,const double x2);
|
||||||
|
|
||||||
ExperimentData getOITStartData(const double x1,const double x2);
|
ExperimentData getOITStartData(const double x1,const double x2);
|
||||||
|
|
||||||
@ -90,6 +95,8 @@ enum MaxDiffPointDetailType{
|
|||||||
Right
|
Right
|
||||||
};
|
};
|
||||||
QPair<QPointF,QPointF> calculateMaxDiffPointDetail(const MaxDiffPointDetailType type);
|
QPair<QPointF,QPointF> calculateMaxDiffPointDetail(const MaxDiffPointDetailType type);
|
||||||
|
QPair<Global::ExperimentData,Global::ExperimentData> calculateMaxDiffDataByTime(
|
||||||
|
const double x1,const double x2);
|
||||||
|
|
||||||
QPointF calculateIntersection(const QPointF p1,const QPointF p2,
|
QPointF calculateIntersection(const QPointF p1,const QPointF p2,
|
||||||
const QPointF p3, const QPointF p4);
|
const QPointF p3, const QPointF p4);
|
||||||
|
@ -108,10 +108,13 @@ void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex
|
|||||||
for(int i = 0; i < dataSize; i++)
|
for(int i = 0; i < dataSize; i++)
|
||||||
{
|
{
|
||||||
Global::ExperimentData data;
|
Global::ExperimentData data;
|
||||||
|
data.phaseIndex = phaseTotal.phaseIndex;
|
||||||
|
#if 0
|
||||||
if(i == 0){
|
if(i == 0){
|
||||||
data.phaseIndex = phaseTotal.phaseIndex;
|
data.phaseIndex = phaseTotal.phaseIndex;
|
||||||
logde<<"read file,set phaseIndex:"<<data.phaseIndex;
|
logde<<"read file,set phaseIndex:"<<data.phaseIndex;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
data.runTime = workSheet->cellAt(startLineIndex, 2)->value().toDouble();
|
data.runTime = workSheet->cellAt(startLineIndex, 2)->value().toDouble();
|
||||||
data.sampleTemp = workSheet->cellAt(startLineIndex, 3)->value().toDouble();
|
data.sampleTemp = workSheet->cellAt(startLineIndex, 3)->value().toDouble();
|
||||||
data.dsc = workSheet->cellAt(startLineIndex, 4)->value().toDouble();
|
data.dsc = workSheet->cellAt(startLineIndex, 4)->value().toDouble();
|
||||||
|
@ -208,9 +208,11 @@ void CentralWidget::startExperiment()
|
|||||||
if(_yAxis2Curve != nullptr){
|
if(_yAxis2Curve != nullptr){
|
||||||
_yAxis2Curve = nullptr;
|
_yAxis2Curve = nullptr;
|
||||||
}
|
}
|
||||||
_customPlot->yAxis2->setRange(0, 400);
|
_customPlot->xAxis->setRange(-5, 60);
|
||||||
_customPlot->xAxis->setRange(-5, 400);
|
|
||||||
_customPlot->yAxis->setRange(-20, 20);
|
_customPlot->yAxis->setRange(-20, 20);
|
||||||
|
_customPlot->yAxis2->setRange(0, 400);
|
||||||
|
|
||||||
|
_customPlot->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CentralWidget::setAnalysisMode(const AnalysisMode mode)
|
void CentralWidget::setAnalysisMode(const AnalysisMode mode)
|
||||||
@ -276,8 +278,6 @@ void CentralWidget::slotModeModify(const Global::Mode mode)
|
|||||||
|
|
||||||
void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
||||||
{
|
{
|
||||||
logde<<"slotRecvCommonData run time:"<<cd.add_run_time;
|
|
||||||
|
|
||||||
// Record data.
|
// Record data.
|
||||||
if(!Global::_currentCurveExperimentDataPtr){
|
if(!Global::_currentCurveExperimentDataPtr){
|
||||||
loger<<"_currentCurveExperimentDataPtr is nullptr.";
|
loger<<"_currentCurveExperimentDataPtr is nullptr.";
|
||||||
@ -291,7 +291,7 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
|||||||
|
|
||||||
if(Global::_currentCurveExperimentDataPtr->dataVtr.empty()){
|
if(Global::_currentCurveExperimentDataPtr->dataVtr.empty()){
|
||||||
ed.phaseIndex = Global::_currentCurveExperimentDataPtr->phaseIndex;
|
ed.phaseIndex = Global::_currentCurveExperimentDataPtr->phaseIndex;
|
||||||
logde<<"current phase index:"<<Global::_currentCurveExperimentDataPtr->phaseIndex;
|
logde<<"change phase, index:"<<Global::_currentCurveExperimentDataPtr->phaseIndex;
|
||||||
_currentCurve = nullptr;
|
_currentCurve = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,7 +304,9 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
|||||||
if(!_currentCurve){
|
if(!_currentCurve){
|
||||||
logde<<"_currentCurve is nullptr";
|
logde<<"_currentCurve is nullptr";
|
||||||
_currentCurve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis);
|
_currentCurve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis);
|
||||||
_currentCurve->setObjectName(Global::ObjectNameExperiemnt);
|
_currentCurve->setObjectName(Global::ObjectNameExperiemnt
|
||||||
|
+ Global::Separator
|
||||||
|
+ QString::number(Global::_currentCurveExperimentDataPtr->phaseIndex));
|
||||||
|
|
||||||
Global::_currentCurveExperimentDataPtr->curve = _currentCurve;
|
Global::_currentCurveExperimentDataPtr->curve = _currentCurve;
|
||||||
}
|
}
|
||||||
@ -320,39 +322,17 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
|||||||
_yAxis2Curve->setObjectName(Global::ObjectNameExperiemnt);
|
_yAxis2Curve->setObjectName(Global::ObjectNameExperiemnt);
|
||||||
|
|
||||||
// 设置曲线颜色
|
// 设置曲线颜色
|
||||||
QPen pen(Qt::red); // 创建一个红色的画笔
|
QPen pen(Qt::red); // 创建一个红色的画笔
|
||||||
pen.setWidth(1); // 设置画笔宽度
|
pen.setWidth(1); // 设置画笔宽度
|
||||||
_yAxis2Curve->setPen(pen); // 将画笔应用到曲线
|
_yAxis2Curve->setPen(pen); // 将画笔应用到曲线
|
||||||
}
|
}
|
||||||
_yAxis2Curve->addData(index++,cd.add_run_time, cd.sample_temp);
|
_yAxis2Curve->addData(index++,cd.add_run_time, cd.sample_temp);
|
||||||
|
|
||||||
_currentCurve->addData(index++,cd.add_run_time, cd.dsc);
|
_currentCurve->addData(index++,cd.add_run_time, cd.dsc);
|
||||||
|
|
||||||
// _customPlot->yAxis2->setRange(0, 400);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set asis xy range.
|
|
||||||
// axis dsc -20 20
|
|
||||||
// time 0 100
|
|
||||||
// temp 0 400
|
|
||||||
|
|
||||||
// _customPlot->xAxis->setRange(0, 400);
|
|
||||||
// _customPlot->yAxis->setRange(-20, 20);
|
|
||||||
|
|
||||||
|
|
||||||
// _customPlot->rescaleAxes();
|
// _customPlot->rescaleAxes();
|
||||||
_customPlot->replot();
|
_customPlot->replot();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
logde<<"_curveExperimentDataVtr size:"
|
|
||||||
<<Global::_curveExperimentDataVtr.size();
|
|
||||||
|
|
||||||
logde<<"_currentCurveExperimentDataPtr dataVtr size:"
|
|
||||||
<<Global::_currentCurveExperimentDataPtr->dataVtr.size();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CentralWidget::slotRecvAnalysisFileName(const QString &filePath)
|
void CentralWidget::slotRecvAnalysisFileName(const QString &filePath)
|
||||||
@ -385,6 +365,7 @@ void CentralWidget::slotAnalysisSettingApply()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString selectedCurveObjectName = _currentCurve->objectName();
|
QString selectedCurveObjectName = _currentCurve->objectName();
|
||||||
|
logde<<"slotAnalysisSettingApply objectName:"<<selectedCurveObjectName.toStdString();
|
||||||
|
|
||||||
// Set curve data to PointCalculate.
|
// Set curve data to PointCalculate.
|
||||||
QVector<ExperimentData> totalDataVtr;
|
QVector<ExperimentData> totalDataVtr;
|
||||||
@ -398,6 +379,7 @@ void CentralWidget::slotAnalysisSettingApply()
|
|||||||
if(ced.smoothDataVtr.empty()){
|
if(ced.smoothDataVtr.empty()){
|
||||||
// PointCalculate::setAnalysisData(ced.dataVtr);
|
// PointCalculate::setAnalysisData(ced.dataVtr);
|
||||||
totalDataVtr.append(ced.dataVtr);
|
totalDataVtr.append(ced.dataVtr);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
// PointCalculate::setAnalysisData(ced.smoothDataVtr);
|
// PointCalculate::setAnalysisData(ced.smoothDataVtr);
|
||||||
totalDataVtr.append(ced.smoothDataVtr);
|
totalDataVtr.append(ced.smoothDataVtr);
|
||||||
@ -429,6 +411,8 @@ void CentralWidget::slotAnalysisSettingApply()
|
|||||||
for(Global::PhaseTotalInfo& pti:cfd.phaseTotalVtr){
|
for(Global::PhaseTotalInfo& pti:cfd.phaseTotalVtr){
|
||||||
if(pti.smoothDataVtr.empty()){
|
if(pti.smoothDataVtr.empty()){
|
||||||
totalDataVtr.append(pti.dataVtr);
|
totalDataVtr.append(pti.dataVtr);
|
||||||
|
|
||||||
|
logde <<" data phase index:"<<pti.dataVtr.first().phaseIndex;
|
||||||
}else{
|
}else{
|
||||||
totalDataVtr.append(pti.smoothDataVtr);
|
totalDataVtr.append(pti.smoothDataVtr);
|
||||||
}
|
}
|
||||||
@ -442,15 +426,6 @@ void CentralWidget::slotAnalysisSettingApply()
|
|||||||
|
|
||||||
PointCalculate::setAnalysisData(totalDataVtr);
|
PointCalculate::setAnalysisData(totalDataVtr);
|
||||||
|
|
||||||
|
|
||||||
// display data
|
|
||||||
for(Global::ExperimentData ed:totalDataVtr){
|
|
||||||
if(ed.phaseIndex != Global::PhaseIndexDefault){
|
|
||||||
logde<<"find not equal phase index:"
|
|
||||||
<<ed.phaseIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
double x1 = _line1->point1->coords().x();
|
double x1 = _line1->point1->coords().x();
|
||||||
double x2 = _line2->point1->coords().x();
|
double x2 = _line2->point1->coords().x();
|
||||||
@ -463,7 +438,7 @@ void CentralWidget::slotAnalysisSettingApply()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
loadAnalysisData(_analysisMode,x1,x2,_currentCurve->objectName());
|
calculateAnalysisResult(_analysisMode,x1,x2,_currentCurve->objectName());
|
||||||
|
|
||||||
if(Global::_mode == Global::Mode::Analysis){
|
if(Global::_mode == Global::Mode::Analysis){
|
||||||
AnalysisOperation ao;
|
AnalysisOperation ao;
|
||||||
@ -619,18 +594,10 @@ void CentralWidget::slotSelectionChangedByUser()
|
|||||||
for (QCPAbstractPlottable* plottable : selectedPlottables) {
|
for (QCPAbstractPlottable* plottable : selectedPlottables) {
|
||||||
// 检查是否是 QCPCurve
|
// 检查是否是 QCPCurve
|
||||||
if (QCPCurve* curve = dynamic_cast<QCPCurve*>(plottable)) {
|
if (QCPCurve* curve = dynamic_cast<QCPCurve*>(plottable)) {
|
||||||
logde << "Selected Curve:" << curve->objectName().toStdString();
|
logde << "selected Curve:" << curve->objectName().toStdString();
|
||||||
_currentCurve = curve; // 更新当前选中的曲线
|
_currentCurve = curve; // 更新当前选中的曲线
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
// 如果没有选中的曲线
|
|
||||||
if (selectedPlottables.isEmpty()) {
|
|
||||||
logde<< "No curve selected";
|
|
||||||
_currentCurve = nullptr; // 清空当前选中的曲线
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CentralWidget::uiLoadXlsxFileData()
|
void CentralWidget::uiLoadXlsxFileData()
|
||||||
@ -766,7 +733,7 @@ void CentralWidget::uiLoadXlsxFileData()
|
|||||||
if(!cfd.analysisOperationVtr.empty()){
|
if(!cfd.analysisOperationVtr.empty()){
|
||||||
for(AnaOpRecorder::AnalysisOperation& ao
|
for(AnaOpRecorder::AnalysisOperation& ao
|
||||||
:cfd.analysisOperationVtr){
|
:cfd.analysisOperationVtr){
|
||||||
loadAnalysisData(ao.mode,ao.x1,ao.x2,cfd.filePath);
|
calculateAnalysisResult(ao.mode,ao.x1,ao.x2,cfd.filePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1356,9 +1323,11 @@ void CentralWidget::deleteCurveByObjectName(const QString objectName)
|
|||||||
_customPlot->replot();
|
_customPlot->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CentralWidget::loadAnalysisData(
|
void CentralWidget::calculateAnalysisResult(
|
||||||
const AnalysisMode mode,const double x1,const double x2,const QString objectName)
|
const AnalysisMode mode,const double x1,const double x2,const QString objectName)
|
||||||
{
|
{
|
||||||
|
logde<<"calculateAnalysisResult...";
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case AnalysisMode::NumericalLabel:
|
case AnalysisMode::NumericalLabel:
|
||||||
{
|
{
|
||||||
@ -1536,25 +1505,45 @@ void CentralWidget::loadAnalysisData(
|
|||||||
case AnalysisMode::OIT:{
|
case AnalysisMode::OIT:{
|
||||||
logde<<"oit x1,x2:"<<x1<<","<<x2;
|
logde<<"oit x1,x2:"<<x1<<","<<x2;
|
||||||
|
|
||||||
|
#if 0
|
||||||
//
|
//
|
||||||
QVector<double> tickPositions = _customPlot->yAxis->tickVector();
|
QVector<double> tickPositions = _customPlot->yAxis->tickVector();
|
||||||
double step = tickPositions.at(1) - tickPositions.at(0);
|
double step = tickPositions.at(1) - tickPositions.at(0);
|
||||||
|
|
||||||
//
|
//
|
||||||
Global::ExperimentData ed = PointCalculate::findOnSetDataByTime(x1,x2);
|
Global::ExperimentData startData = PointCalculate::getOITStartData(x1,x2);
|
||||||
|
// Global::ExperimentData endData = PointCalculate::findOnSetDataByTime(x1,x2);
|
||||||
|
|
||||||
|
PointCalculate::setRegionPointX(x1,x2);
|
||||||
|
QPair<Global::ExperimentData,Global::ExperimentData>
|
||||||
|
startEndDataPair = PointCalculate::calculateStartAndEndData();
|
||||||
|
|
||||||
// Global::ExperimentData ed = PointCalculate::findOnSetDataByTemperature(x1,x2);
|
// Global::ExperimentData ed = PointCalculate::findOnSetDataByTemperature(x1,x2);
|
||||||
// PointCalculate::setRegionPointX(x1,x2);
|
// PointCalculate::setRegionPointX(x1,x2);
|
||||||
|
|
||||||
Global::ExperimentData startData = PointCalculate::getOITStartData(x1,x2);
|
|
||||||
|
|
||||||
// QPair<Global::ExperimentData,Global::ExperimentData>
|
// QPair<Global::ExperimentData,Global::ExperimentData>
|
||||||
// startEndDataPair = PointCalculate::calculateStartAndEndData();
|
// startEndDataPair = PointCalculate::calculateStartAndEndData();
|
||||||
|
|
||||||
logde<<"start data time:"<<startData.runTime;
|
logde<<"start data time:"<<startData.runTime;
|
||||||
logde<<"end data time:"<<ed.runTime;
|
logde<<"end data time:"<<startEndDataPair.second.runTime;
|
||||||
|
#endif
|
||||||
|
QVector<double> tickPositions = _customPlot->yAxis->tickVector();
|
||||||
|
double step = tickPositions.at(1) - tickPositions.at(0);
|
||||||
|
|
||||||
drawOITLine(startData,ed,step,objectName);
|
QPair<QPointF,QPointF>startEndPointPair =
|
||||||
|
PointCalculate::calculateOITStartAndEndDataByTime(x1,x2);
|
||||||
|
|
||||||
|
Global::ExperimentData startData;
|
||||||
|
startData.runTime = startEndPointPair.first.x();
|
||||||
|
startData.dsc = startEndPointPair.first.y();
|
||||||
|
|
||||||
|
Global::ExperimentData endData;
|
||||||
|
endData.runTime = startEndPointPair.second.x();
|
||||||
|
endData.dsc = startEndPointPair.second.y();
|
||||||
|
|
||||||
|
|
||||||
|
drawOITLine(startData,endData,step,objectName);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1675,7 +1664,7 @@ void CentralWidget::slotAxisModify(const float temp)
|
|||||||
|
|
||||||
float value = temp + 20;
|
float value = temp + 20;
|
||||||
|
|
||||||
_customPlot->xAxis->setRange(10,value);
|
_customPlot->xAxis->setRange(0,value);
|
||||||
_customPlot->yAxis->setRange(-5,5);
|
_customPlot->yAxis->setRange(-5,5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ private:
|
|||||||
void clearData(const ClearDataMode);
|
void clearData(const ClearDataMode);
|
||||||
void clearAllUiData();
|
void clearAllUiData();
|
||||||
|
|
||||||
void loadAnalysisData(const AnalysisMode mode,const double x1,const double x2,const QString objectName);
|
void calculateAnalysisResult(const AnalysisMode mode,const double x1,const double x2,const QString objectName);
|
||||||
|
|
||||||
void drawOITLine(const Global::ExperimentData startData,
|
void drawOITLine(const Global::ExperimentData startData,
|
||||||
const Global::ExperimentData endData,
|
const Global::ExperimentData endData,
|
||||||
|
Loading…
Reference in New Issue
Block a user