From 731acda6334bea0a50929bee59ab701d6cd5402b Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Sat, 10 Jun 2023 20:12:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B=E5=B0=8Fbu?= =?UTF-8?q?g=201=E3=80=81=E7=A1=AE=E4=BF=9D=E6=89=8B=E5=8A=A8=E8=B0=83?= =?UTF-8?q?=E7=84=A6=E8=BF=87=E7=A8=8B=E4=B8=AD=EF=BC=8C=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B0=83=E7=84=A6=EF=BC=9B=202=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=EF=BC=9A=E6=89=8B=E5=8A=A8=E8=B0=83?= =?UTF-8?q?=E7=84=A6=E8=BF=87=E7=A8=8B=E4=B8=AD=E5=85=B3=E9=97=AD=E8=B0=83?= =?UTF-8?q?=E7=84=A6=E7=AA=97=E5=8F=A3=EF=BC=8C=E4=B8=8D=E4=BC=9A=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E6=89=8B=E5=8A=A8=E8=B0=83=E7=84=A6=EF=BC=8C=E9=80=A0?= =?UTF-8?q?=E6=88=90=E7=A8=8B=E5=BA=8F=E5=B4=A9=E6=BA=83=EF=BC=9B=203?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E5=A4=8Dbug=EF=BC=9A=E9=87=87=E9=9B=86?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=B8=AD=E9=BC=A0=E6=A0=87=E5=B7=A6=E9=94=AE?= =?UTF-8?q?=E5=8D=95=E5=87=BB=E6=98=BE=E7=A4=BA=E5=85=89=E8=B0=B1=EF=BC=8C?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=B4=A9=E6=BA=83=EF=BC=9B=204=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=87=8F=E6=9A=97=E7=94=B5=E6=B5=81=E5=90=8E?= =?UTF-8?q?=E8=B4=9F=E5=80=BC=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/HPPA.cpp | 36 +++++++++++++++++++++++++++++++++--- HPPA/HPPA.h | 2 +- HPPA/focusWindow.cpp | 6 ++++++ HPPA/resononImager.cpp | 26 +++++++++++++++++++++++++- 4 files changed, 65 insertions(+), 5 deletions(-) diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp index fd455f3..39b7794 100644 --- a/HPPA/HPPA.cpp +++ b/HPPA/HPPA.cpp @@ -242,8 +242,12 @@ HPPA::HPPA(QWidget *parent) Configfile configfile; configfile.setConfigfilePath(HPPACfgFile); if (!configfile.isConfigfileExist()) + { configfile.createConfigFile(); + qDebug() << "create: " << QString::fromStdString(HPPACfgFile); + } configfile.parseConfigfile(); + qDebug() << "exist: " << QString::fromStdString(HPPACfgFile); /*int max, min; configfile.getPositionRestriction(max, min); @@ -292,6 +296,25 @@ void HPPA::CalculateIntegratioinTimeRange() void HPPA::onStartRecordStep1() { + ////测试代码,用于没有马达时,仅采集光谱仪数据 + //m_RecordState += 1; + + //if (m_RecordState % 2 == 1) + //{ + // onCreateTab(1); + // m_numberOfRecording = 0; + // m_Imager->setFileName2Save(m_FilenameLineEdit->text().toStdString()); + // emit StartRecordSignal();//发射开始采集信号 + //} + //else + //{ + // m_Imager->setRecordControlState(false);//光谱仪停止采集 + + // ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); + // ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); + //} + + //确保x马达所在位置 小于 x马达最大采集限制位置 int validLineCount = 0; for (size_t i = 0; i < ui.recordLine_tableWidget->rowCount(); i++) @@ -340,7 +363,7 @@ void HPPA::onStartRecordStep1() else { //std::cout << "不覆盖" << std::endl; - m_RecordState -= 1;//不覆盖的话就需要还原这个参数 + m_RecordState -= 1;//不覆盖的话就需要还原这个参数,并停止采集 return; } } @@ -552,6 +575,13 @@ void HPPA::onLeftMouseButtonPressed(int x, int y) { try { + //正在采集时,不能显示光谱曲线 + if (m_RecordState % 2 == 1) + { + return; + } + + FileOperation * fileOperation = new FileOperation(); string directory = fileOperation->getDirectoryFromString(); string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(m_TabWidgetCurrentIndex + 1); @@ -1992,11 +2022,11 @@ void ForLoopControl::startLoop() if (m_boolQuitLoop == false) { - emit recordSignal(-1); + emit recordSignal(-1);//采集完所有航线,自动停止 } else if (m_boolQuitLoop == true) { - emit recordSignal(-2); + emit recordSignal(-2);//手动停止采集 } //std::cout << "退出循环!" << std::endl; diff --git a/HPPA/HPPA.h b/HPPA/HPPA.h index 74df8a4..9c4386b 100644 --- a/HPPA/HPPA.h +++ b/HPPA/HPPA.h @@ -166,7 +166,7 @@ private: ForLoopControl * m_ForLoopControl; ResononImager * m_Imager;// - int m_RecordState;//用来控制相机采集流程 + int m_RecordState;//用来控制相机采集流程,取2的余数,1 → 正在采集,0 → 停止采集 QThread * m_ForLoopControlThread;// QThread * m_RecordThread;//影像采集线程 diff --git a/HPPA/focusWindow.cpp b/HPPA/focusWindow.cpp index fca5fa9..3386278 100644 --- a/HPPA/focusWindow.cpp +++ b/HPPA/focusWindow.cpp @@ -61,6 +61,8 @@ focusWindow::~focusWindow() { printf("destroy focusWindow-------------------------\n"); + emit StartManualFocusSignal(0);//当用户没有点击停止调焦就关闭窗口 + delete m_ctrlFocusMotor; //delete thread1, progressThread; } @@ -216,6 +218,8 @@ void focusWindow::onManualFocus() ui.manualFocus_btn->setStyleSheet("QWidget{background-color:rgb(255,0,0);}"); + ui.autoFocus_btn->setDisabled(true); + //std::cout << "------------------------------------------:" << m_FocusState << std::endl; } else @@ -226,6 +230,8 @@ void focusWindow::onManualFocus() ui.manualFocus_btn->setText(QString::fromLocal8Bit("调焦")); ui.manualFocus_btn->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); + + ui.autoFocus_btn->setDisabled(false); } } diff --git a/HPPA/resononImager.cpp b/HPPA/resononImager.cpp index a7254ad..7ca9256 100644 --- a/HPPA/resononImager.cpp +++ b/HPPA/resononImager.cpp @@ -182,7 +182,15 @@ void ResononImager::start_record() { for (size_t i = 0; i < m_FrameSize; i++) { - buffer[i] = buffer[i] - dark[i]; + if (buffer[i] < dark[i]) + { + buffer[i] = 0; + } + else + { + buffer[i] = buffer[i] - dark[i]; + } + } } @@ -266,6 +274,22 @@ void ResononImager::record_white() m_ResononImager.get_frame(white); m_ResononImager.stop(); + //白板扣暗电流 + if (m_HasDark) + { + for (size_t i = 0; i < m_FrameSize; i++) + { + if (white[i] < dark[i]) + { + white[i] = 0; + } + else + { + white[i] = white[i] - dark[i]; + } + } + } + m_HasWhite = true; }