From 4d42314a843ccefcf99586bd3599def8cff8b696 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Mon, 1 Jun 2026 16:54:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E5=88=86?= =?UTF-8?q?=E7=A6=BBTwoMotionCaptureCoordinator=E5=92=8CImagerOperationBas?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/CaptureCoordinator.cpp | 43 ++----------------------------------- HPPA/CaptureCoordinator.h | 7 +++--- HPPA/TwoMotorControl.cpp | 13 ++++++++++- HPPA/TwoMotorControl.h | 2 ++ 4 files changed, 19 insertions(+), 46 deletions(-) diff --git a/HPPA/CaptureCoordinator.cpp b/HPPA/CaptureCoordinator.cpp index 902095f..f293628 100644 --- a/HPPA/CaptureCoordinator.cpp +++ b/HPPA/CaptureCoordinator.cpp @@ -2,11 +2,9 @@ TwoMotionCaptureCoordinator::TwoMotionCaptureCoordinator( IrisMultiMotorController* motorCtrl, - ImagerOperationBase* cameraCtrl, QObject* parent) : QObject(parent) , m_motorCtrl(motorCtrl) - , m_cameraCtrl(cameraCtrl) , m_isRunning(false) { //这些信号槽是按照逻辑顺序的 @@ -20,35 +18,6 @@ TwoMotionCaptureCoordinator::TwoMotionCaptureCoordinator( this, &TwoMotionCaptureCoordinator::handlePositionReached); //connect(m_motorCtrl, &IrisMultiMotorController::moveFailed, // this, &TwoMotionCaptureCoordinator::handleError); - - connect(this, &TwoMotionCaptureCoordinator::startRecordHSISignal, - m_cameraCtrl, &ImagerOperationBase::start_record); - connect(this, &TwoMotionCaptureCoordinator::stopRecordHSISignal, - m_cameraCtrl, &ImagerOperationBase::stop_record); - connect(m_cameraCtrl, &ImagerOperationBase::RecordFinishedSignal_WhenFrameNumberMeet, - this, &TwoMotionCaptureCoordinator::handleCaptureCompleteWhenFrameNumberMeet); - //connect(m_cameraCtrl, &ImagerOperationBase::RecordFinishedSignal_WhenFrameNumberNotMeet, - // this, &TwoMotionCaptureCoordinator::handleCaptureCompleteWhenFrameNumberNotMeet); - //connect(m_cameraCtrl, &ImagerOperationBase::captureFailed, - // this, &TwoMotionCaptureCoordinator::handleError); -} - -TwoMotionCaptureCoordinator::TwoMotionCaptureCoordinator( - IrisMultiMotorController* motorCtrl, - QObject* parent) - : QObject(parent) - , m_motorCtrl(motorCtrl) - , m_isRunning(false) -{ - connect(this, SIGNAL(moveTo(int, double, double, int)), - m_motorCtrl, SLOT(moveTo(int, double, double, int))); - connect(this, SIGNAL(moveTo(const std::vector, const std::vector, int)), - m_motorCtrl, SLOT(moveTo(const std::vector, const std::vector, int))); - - connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, - this, &TwoMotionCaptureCoordinator::handlePositionReached); - //connect(m_motorCtrl, &IrisMultiMotorController::moveFailed, - // this, &TwoMotionCaptureCoordinator::handleError); } TwoMotionCaptureCoordinator::~TwoMotionCaptureCoordinator() @@ -98,11 +67,7 @@ void TwoMotionCaptureCoordinator::stop() savePathLinesToCsv(); emit finishRecordLineNumSignal(m_numCurrentPathLine); - //emit stopRecordHSISignal(m_numCurrentPathLine); - if (m_cameraCtrl != nullptr) - { - m_cameraCtrl->stop_record(); - } + emit stopRecordHSISignal(m_numCurrentPathLine); move2LocBeforeStart(); @@ -324,11 +289,7 @@ void TwoMotionCaptureCoordinator::handlePositionReached(int motorID, double pos) //停止采集高光谱数据 emit finishRecordLineNumSignal(m_numCurrentPathLine); - //emit stopRecordHSISignal(m_numCurrentPathLine); - if (m_cameraCtrl!=nullptr) - { - m_cameraCtrl->stop_record(); - } + emit stopRecordHSISignal(m_numCurrentPathLine); m_isMoving2XMax = false; m_isImagerFrameNumberMeet = false; diff --git a/HPPA/CaptureCoordinator.h b/HPPA/CaptureCoordinator.h index 801dfb0..3303bd9 100644 --- a/HPPA/CaptureCoordinator.h +++ b/HPPA/CaptureCoordinator.h @@ -38,9 +38,6 @@ class TwoMotionCaptureCoordinator : public QObject { Q_OBJECT public: - TwoMotionCaptureCoordinator(IrisMultiMotorController* motorCtrl, - ImagerOperationBase* cameraCtrl, - QObject* parent = nullptr); TwoMotionCaptureCoordinator(IrisMultiMotorController* motorCtrl, QObject* parent = nullptr); ~TwoMotionCaptureCoordinator(); @@ -62,13 +59,15 @@ signals: void recordState(bool state); +public slots: + void handleCaptureCompleteWhenFrameNumberMeet(); + private slots: void start(QVector pathLines); void stop(); void getRecordState(); void handlePositionReached(int motorID, double pos); - void handleCaptureCompleteWhenFrameNumberMeet(); void handleError(const QString& error); void move2LocBeforeStart(); diff --git a/HPPA/TwoMotorControl.cpp b/HPPA/TwoMotorControl.cpp index 9120fe5..0f2384a 100644 --- a/HPPA/TwoMotorControl.cpp +++ b/HPPA/TwoMotorControl.cpp @@ -121,14 +121,20 @@ void TwoMotorControl::run() } qRegisterMetaType>("QVector"); - m_coordinator = new TwoMotionCaptureCoordinator(m_multiAxisController, m_Imager); + m_coordinator = new TwoMotionCaptureCoordinator(m_multiAxisController); m_coordinator->moveToThread(&m_coordinatorThread); connect(&m_coordinatorThread, SIGNAL(finished()), m_coordinator, SLOT(deleteLater())); connect(this, SIGNAL(start(QVector)), m_coordinator, SLOT(start(QVector))); + connect(this, SIGNAL(stopSignal()), m_coordinator, SLOT(stop())); connect(m_coordinator, SIGNAL(startRecordLineNumSignal(int)), this, SLOT(receiveStartRecordLineNum(int))); connect(m_coordinator, SIGNAL(finishRecordLineNumSignal(int)), this, SLOT(receiveFinishRecordLineNum(int))); connect(m_coordinator, SIGNAL(sequenceComplete(int)), this, SLOT(onSequenceComplete())); + + connect(m_coordinator, &TwoMotionCaptureCoordinator::startRecordHSISignal, m_Imager, &ImagerOperationBase::start_record); + connect(m_coordinator, &TwoMotionCaptureCoordinator::stopRecordHSISignal, this, &TwoMotorControl::stop_record); + connect(m_Imager, &ImagerOperationBase::RecordFinishedSignal_WhenFrameNumberMeet, m_coordinator, &TwoMotionCaptureCoordinator::handleCaptureCompleteWhenFrameNumberMeet); + m_coordinatorThread.start(); QVector pathLines; @@ -158,6 +164,11 @@ void TwoMotorControl::run() emit start(pathLines); } +void TwoMotorControl::stop_record() +{ + m_Imager->stop_record(); +} + void TwoMotorControl::stop() { emit stopSignal(); diff --git a/HPPA/TwoMotorControl.h b/HPPA/TwoMotorControl.h index 44b8f8b..c2ce90f 100644 --- a/HPPA/TwoMotorControl.h +++ b/HPPA/TwoMotorControl.h @@ -70,6 +70,8 @@ public Q_SLOTS: void receiveFinishRecordLineNum(int lineNum); void onSequenceComplete(); + void stop_record(); + signals: void moveSignal(int, bool, double, int); void move2LocSignal(int, double, double, int);