From 467bebe9dd91fda433bb60cc02daafc4366cc78e Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Fri, 5 Jun 2026 11:36:38 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=8C=E8=AE=A1=E5=88=92=E9=87=87?= =?UTF-8?q?=E9=9B=867=EF=BC=9A=20=E5=AE=9E=E7=8E=B0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E9=87=87=E9=9B=86=E5=8A=9F=E8=83=BD=EF=BC=9A?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=8F=AF=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/HPPA.cpp | 5 ++- HPPA/TwoMotorControl.cpp | 69 ++++++++++++++++++++++++++++++++++------ HPPA/TwoMotorControl.h | 3 ++ 3 files changed, 65 insertions(+), 12 deletions(-) diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp index 6a4df56..8233c81 100644 --- a/HPPA/HPPA.cpp +++ b/HPPA/HPPA.cpp @@ -604,7 +604,7 @@ void HPPA::initTimedDataCollection() // 相机/马达 → 定时采集控制器 connect(m_tmc, &TwoMotorControl::sequenceComplete, mTimedDataCollectionWindow, &TimedDataCollection::subTaskCompleted); - connect(m_tmc, &TwoMotorControl::back2OriginSignal, mTimedDataCollectionWindow, &TimedDataCollection::onBack2Origin); + connect(m_tmc, &TwoMotorControl::back2OriginSignal_TimedDataCollection, mTimedDataCollectionWindow, &TimedDataCollection::onBack2Origin); //连接马达控制和单反/深度 } @@ -696,8 +696,7 @@ void HPPA::onStartTimedDataCollection(int camType) } case 3: { - //m_tmc->setImager(m_Imager); - //m_tmc->run2(); + m_tmc->run3(m_depthCameraWindow); break; } } diff --git a/HPPA/TwoMotorControl.cpp b/HPPA/TwoMotorControl.cpp index 7007f48..44174e1 100644 --- a/HPPA/TwoMotorControl.cpp +++ b/HPPA/TwoMotorControl.cpp @@ -114,16 +114,65 @@ void TwoMotorControl::run2(SingleLensReflexCameraWindow* window) return; } - m_coordinator = new TwoMotionCaptureCoordinator(m_multiAxisController); - connect(this, SIGNAL(start(QVector)), m_coordinator, SLOT(start(QVector))); + m_coordinator_TimedDataCollection = new TwoMotionCaptureCoordinator(m_multiAxisController); + connect(this, SIGNAL(start(QVector)), m_coordinator_TimedDataCollection, SLOT(start(QVector))); - connect(m_coordinator, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, this, &TwoMotorControl::receiveStartRecordLineNum); - connect(m_coordinator, &TwoMotionCaptureCoordinator::finishRecordLineNumSignal, this, &TwoMotorControl::receiveFinishRecordLineNum); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, this, &TwoMotorControl::receiveStartRecordLineNum); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::finishRecordLineNumSignal, this, &TwoMotorControl::receiveFinishRecordLineNum); - connect(m_coordinator, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, window, &SingleLensReflexCameraWindow::onStartTimedDataCollection); - connect(m_coordinator, &TwoMotionCaptureCoordinator::sequenceComplete, window, &SingleLensReflexCameraWindow::onStopTimedDataCollection); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, window, &SingleLensReflexCameraWindow::onStartTimedDataCollection); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::sequenceComplete, window, &SingleLensReflexCameraWindow::onStopTimedDataCollection); - connect(m_coordinator, &TwoMotionCaptureCoordinator::back2OriginSignal, this, &TwoMotorControl::onBack2Origin2); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::back2OriginSignal, this, &TwoMotorControl::onBack2Origin2); + + QVector pathLines; + //int columnCount = ui.recordLine_tableWidget->columnCount(); + for (size_t i = 0; i < rowCount; i++) + { + PathLine tmp; + + tmp.targetYPosition = ui.recordLine_tableWidget->item(i, 0)->text().toDouble(); + tmp.speedTargetYPosition = ui.recordLine_tableWidget->item(i, 1)->text().toDouble(); + tmp.targetXMinPosition = ui.recordLine_tableWidget->item(i, 2)->text().toDouble(); + tmp.speedTargetXMinPosition = ui.recordLine_tableWidget->item(i, 3)->text().toDouble(); + tmp.targetXMaxPosition = ui.recordLine_tableWidget->item(i, 4)->text().toDouble(); + tmp.speedTargetXMaxPosition = ui.recordLine_tableWidget->item(i, 5)->text().toDouble(); + + pathLines.append(tmp); + } + + for (size_t i = 0; i < ui.recordLine_tableWidget->rowCount(); i++) + { + for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++) + { + ui.recordLine_tableWidget->item(i, j)->setBackgroundColor(QColor("#0E1C4C")); + } + } + + emit start(pathLines); +} + +void TwoMotorControl::run3(DepthCameraWindow* window) +{ + int rowCount = ui.recordLine_tableWidget->rowCount(); + if (rowCount == 0) + { + QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请至少添加一行采集线!")); + + emit sequenceComplete(0); + return; + } + + m_coordinator_TimedDataCollection = new TwoMotionCaptureCoordinator(m_multiAxisController); + connect(this, SIGNAL(start(QVector)), m_coordinator_TimedDataCollection, SLOT(start(QVector))); + + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, this, &TwoMotorControl::receiveStartRecordLineNum); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::finishRecordLineNumSignal, this, &TwoMotorControl::receiveFinishRecordLineNum); + + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::startRecordLineNumSignal, window, &DepthCameraWindow::openDepthCamera); + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::sequenceComplete, window, &DepthCameraWindow::closeDepthCamera); + + connect(m_coordinator_TimedDataCollection, &TwoMotionCaptureCoordinator::back2OriginSignal, this, &TwoMotorControl::onBack2Origin2); QVector pathLines; //int columnCount = ui.recordLine_tableWidget->columnCount(); @@ -154,8 +203,9 @@ void TwoMotorControl::run2(SingleLensReflexCameraWindow* window) void TwoMotorControl::onBack2Origin2() { - m_coordinator->deleteLater(); - emit back2OriginSignal(); + m_coordinator_TimedDataCollection->deleteLater(); + m_coordinator_TimedDataCollection = nullptr; + emit back2OriginSignal_TimedDataCollection(); } void TwoMotorControl::run() @@ -334,6 +384,7 @@ void TwoMotorControl::onBack2Origin() m_coordinator = nullptr; emit back2OriginSignal(); + emit back2OriginSignal_TimedDataCollection(); } bool TwoMotorControl::getMotorsConnectionStatus() diff --git a/HPPA/TwoMotorControl.h b/HPPA/TwoMotorControl.h index de6a628..af728c8 100644 --- a/HPPA/TwoMotorControl.h +++ b/HPPA/TwoMotorControl.h @@ -77,6 +77,7 @@ public Q_SLOTS: void onBack2Origin(); void run2(SingleLensReflexCameraWindow* w); + void run3(DepthCameraWindow* window); void onBack2Origin2(); void stop_record(); @@ -97,6 +98,7 @@ signals: void startLineNumSignal(int lineNum); void sequenceComplete(int status);//所有采集线正常运行完成 void back2OriginSignal(); + void back2OriginSignal_TimedDataCollection(); void broadcastLocationSignal(std::vector); @@ -104,6 +106,7 @@ private: Ui::twoMotorControl_UI ui; QThread m_coordinatorThread; TwoMotionCaptureCoordinator* m_coordinator = nullptr; + TwoMotionCaptureCoordinator* m_coordinator_TimedDataCollection = nullptr; DarkAndWhiteCaptureCoordinator* m_darkCaptureCoordinator = nullptr; DarkAndWhiteCaptureCoordinator* m_whiteCaptureCoordinator = nullptr;