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; }