1、将马达的信号槽连接改为函数指针方式;
2、给速度引入负值,表示反向移动马达;
This commit is contained in:
tangchao0503
2026-09-16 16:49:13 +08:00
parent 0562e8592c
commit 08dee5bbec
8 changed files with 94 additions and 93 deletions

View File

@ -10,10 +10,10 @@ TwoMotionCaptureCoordinator::TwoMotionCaptureCoordinator(
, m_isValidCapturing(false) , m_isValidCapturing(false)
{ {
//这些信号槽是按照逻辑顺序的 //这些信号槽是按照逻辑顺序的
connect(this, SIGNAL(moveTo(int, double, double, int)), connect(this, qOverload<int, double, double, int>(&TwoMotionCaptureCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(moveTo(const std::vector<double>, const std::vector<double>, int)), connect(this, qOverload<const std::vector<double>, const std::vector<double>, int>(&TwoMotionCaptureCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(const std::vector<double>, const std::vector<double>, int))); m_motorCtrl, qOverload<const std::vector<double>, const std::vector<double>, int>(&IrisMultiMotorController::moveTo));
connect(this, &TwoMotionCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop); connect(this, &TwoMotionCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop);
connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal,
@ -444,9 +444,9 @@ OneMotionCaptureCoordinator::OneMotionCaptureCoordinator(
, m_cameraCtrl(cameraCtrl) , m_cameraCtrl(cameraCtrl)
, m_isRunning(false) , m_isRunning(false)
{ {
connect(this, SIGNAL(moveTo(int, double, double, int)), connect(this, qOverload<int, double, double, int>(&OneMotionCaptureCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(moveSignal(int, bool, double, int)), m_motorCtrl, SLOT(move(int, bool, double, int))); connect(this, &OneMotionCaptureCoordinator::moveSignal, m_motorCtrl, qOverload<int, double, int>(&IrisMultiMotorController::move));
connect(this, &OneMotionCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop); connect(this, &OneMotionCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop);
connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal,
@ -488,7 +488,7 @@ void OneMotionCaptureCoordinator::startStepMotion(OneMotionCapturePathLine pathL
m_pathLine.timestamp1 = QDateTime::currentDateTime(); m_pathLine.timestamp1 = QDateTime::currentDateTime();
//移动马达并开始采集高光谱 //移动马达并开始采集高光谱
emit moveSignal(0, false, m_pathLine.speedRecord, 1000); emit moveSignal(0, m_pathLine.speedRecord, 1000);
emit startRecordHSISignal(); emit startRecordHSISignal();
} }
@ -621,9 +621,9 @@ DarkAndWhiteCaptureCoordinator::DarkAndWhiteCaptureCoordinator(
, m_cameraCtrl(cameraCtrl) , m_cameraCtrl(cameraCtrl)
, m_isRunning(false) , m_isRunning(false)
{ {
connect(this, SIGNAL(moveTo(int, double, double, int)), connect(this, qOverload<int, double, double, int>(&DarkAndWhiteCaptureCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(moveSignal(int, bool, double, int)), m_motorCtrl, SLOT(move(int, bool, double, int))); connect(this, &DarkAndWhiteCaptureCoordinator::moveSignal, m_motorCtrl, qOverload<int, double, int>(&IrisMultiMotorController::move));
connect(this, &DarkAndWhiteCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop); connect(this, &DarkAndWhiteCaptureCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop);
connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal,
@ -667,7 +667,7 @@ void DarkAndWhiteCaptureCoordinator::startStepMotion(double speed)
getLocBeforeStart(); getLocBeforeStart();
//移动马达并开始采集高光谱 //移动马达并开始采集高光谱
emit moveSignal(0, false, m_speed, 1000); emit moveSignal(0, m_speed, 1000);
emit startRecordHSISignal(); emit startRecordHSISignal();
} }
@ -742,11 +742,11 @@ TwoMotor1PosCoordinator::TwoMotor1PosCoordinator(
, m_xReached(false) , m_xReached(false)
, m_yReached(false) , m_yReached(false)
{ {
//因为IrisMultiMotorController::moveTo有多个重载版本,所以使用信号槽连接时需要使用SIGNAL和SLOT宏来指定参数类型,避免编译器无法推断出正确的函数签名。 //因为IrisMultiMotorController::moveTo有多个重载版本,所以使用qOverload来指定参数类型
//connect(this, &TwoMotor1PosCoordinator::moveTo, m_motorCtrl, &IrisMultiMotorController::moveTo);//这行代码会报错,因为moveTo有多个重载版本,编译器无法推断出正确的函数签名。 connect(this, qOverload<int, double, double, int>(&TwoMotor1PosCoordinator::moveTo),
connect(this, SIGNAL(moveTo(int, double, double, int)), m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(moveTo(const std::vector<double>, const std::vector<double>, int)), m_motorCtrl, SLOT(moveTo(const std::vector<double>, const std::vector<double>, int))); connect(this, qOverload<const std::vector<double>, const std::vector<double>, int>(&TwoMotor1PosCoordinator::moveTo),
m_motorCtrl, qOverload<const std::vector<double>, const std::vector<double>, int>(&IrisMultiMotorController::moveTo));
connect(this, &TwoMotor1PosCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop); connect(this, &TwoMotor1PosCoordinator::stopMotorSignal, m_motorCtrl, &IrisMultiMotorController::stop);
@ -904,7 +904,8 @@ OneMotionCoordinator::OneMotionCoordinator(IrisMultiMotorController* motorCtrl,
, m_retryTimes(0) , m_retryTimes(0)
, m_reached(false) , m_reached(false)
{ {
connect(this, SIGNAL(moveTo(int, double, double, int)), m_motorCtrl, SLOT(moveTo(int, double, double, int))); connect(this, qOverload<int, double, double, int>(&OneMotionCoordinator::moveTo),
m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, this, &OneMotionCoordinator::handlePositionReached); connect(m_motorCtrl, &IrisMultiMotorController::motorStopSignal, this, &OneMotionCoordinator::handlePositionReached);
} }
@ -1008,8 +1009,8 @@ OneMotorMultiPosCoordinator::OneMotorMultiPosCoordinator(
, m_isZeroing(false) , m_isZeroing(false)
{ {
//这些信号槽是按照逻辑顺序的 //这些信号槽是按照逻辑顺序的
connect(this, SIGNAL(moveTo(int, double, double, int)), connect(this, qOverload<int, double, double, int>(&OneMotorMultiPosCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, &OneMotorMultiPosCoordinator::zeroStart, connect(this, &OneMotorMultiPosCoordinator::zeroStart,
m_motorCtrl, &IrisMultiMotorController::zeroStart); m_motorCtrl, &IrisMultiMotorController::zeroStart);

View File

@ -148,7 +148,7 @@ signals:
void sequenceCompleteSignal_motorBack2Origin(int); void sequenceCompleteSignal_motorBack2Origin(int);
void errorOccurred(const QString& error); void errorOccurred(const QString& error);
void moveTo(int, double, double, int); void moveTo(int, double, double, int);
void moveSignal(int, bool, double, int); void moveSignal(int, double, int);
void stopMotorSignal(int axis); void stopMotorSignal(int axis);
void startRecordHSISignal(); void startRecordHSISignal();
@ -190,7 +190,7 @@ public slots:
signals: signals:
void sequenceComplete(int); void sequenceComplete(int);
void moveTo(int, double, double, int); void moveTo(int, double, double, int);
void moveSignal(int, bool, double, int); void moveSignal(int, double, int);
void stopMotorSignal(int axis); void stopMotorSignal(int axis);
void startRecordHSISignal(); void startRecordHSISignal();

View File

@ -63,14 +63,14 @@ void OneMotorControl::connectMotor(bool isNotification)
if (m_multiAxisController != nullptr) if (m_multiAxisController != nullptr)
{ {
disconnect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(display_x_loc(std::vector<double>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &OneMotorControl::display_x_loc);
disconnect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); disconnect(this, &OneMotorControl::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
disconnect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); disconnect(this, qOverload<int, double, double, int>(&OneMotorControl::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
disconnect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); disconnect(this, &OneMotorControl::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
disconnect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); disconnect(this, &OneMotorControl::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
disconnect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); disconnect(this, &OneMotorControl::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
disconnect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); disconnect(this, &OneMotorControl::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
disconnect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &OneMotorControl::display_motors_connectivity);
m_motorThread.quit(); m_motorThread.quit();
m_motorThread.wait(); m_motorThread.wait();
@ -94,20 +94,20 @@ void OneMotorControl::connectMotor(bool isNotification)
} }
m_multiAxisController->moveToThread(&m_motorThread); m_multiAxisController->moveToThread(&m_motorThread);
connect(&m_motorThread, SIGNAL(finished()), m_multiAxisController, SLOT(deleteLater())); connect(&m_motorThread, &QThread::finished, m_multiAxisController, &QObject::deleteLater);
connect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(display_x_loc(std::vector<double>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &OneMotorControl::display_x_loc);
connect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); connect(this, &OneMotorControl::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
connect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); connect(this, qOverload<int, double, double, int>(&OneMotorControl::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); connect(this, &OneMotorControl::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
connect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); connect(this, &OneMotorControl::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
connect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); connect(this, &OneMotorControl::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
connect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); connect(this, &OneMotorControl::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
connect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &OneMotorControl::display_motors_connectivity);
m_motorThread.start(); m_motorThread.start();
emit testConnectivitySignal(0, 1000); emit testConnectivitySignal(0, 1000);
@ -182,14 +182,14 @@ void OneMotorControl::onxMotorRight()
{ {
double s = ui.speed_lineEdit->text().toDouble(); double s = ui.speed_lineEdit->text().toDouble();
emit moveSignal(0, false, s, 1000); emit moveSignal(0, abs(s), 1000);
} }
void OneMotorControl::onxMotorLeft() void OneMotorControl::onxMotorLeft()
{ {
double s = ui.speed_lineEdit->text().toDouble(); double s = ui.speed_lineEdit->text().toDouble();
emit moveSignal(0, true, s, 1000); emit moveSignal(0, abs(s)*-1, 1000);
} }
void OneMotorControl::onxMotorStop() void OneMotorControl::onxMotorStop()
@ -406,14 +406,14 @@ void OneMotorControl_LiftingPlatform::connectMotor(bool isNotification)
if (m_multiAxisController != nullptr) if (m_multiAxisController != nullptr)
{ {
disconnect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(display_x_loc(std::vector<double>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &OneMotorControl_LiftingPlatform::display_x_loc);
disconnect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); disconnect(this, &OneMotorControl_LiftingPlatform::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
disconnect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); disconnect(this, qOverload<int, double, double, int>(&OneMotorControl_LiftingPlatform::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
disconnect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); disconnect(this, &OneMotorControl_LiftingPlatform::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
disconnect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); disconnect(this, &OneMotorControl_LiftingPlatform::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
disconnect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); disconnect(this, &OneMotorControl_LiftingPlatform::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
disconnect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); disconnect(this, &OneMotorControl_LiftingPlatform::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
disconnect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &OneMotorControl_LiftingPlatform::display_motors_connectivity);
m_motorThread.quit(); m_motorThread.quit();
m_motorThread.wait(); m_motorThread.wait();
@ -437,20 +437,20 @@ void OneMotorControl_LiftingPlatform::connectMotor(bool isNotification)
} }
m_multiAxisController->moveToThread(&m_motorThread); m_multiAxisController->moveToThread(&m_motorThread);
connect(&m_motorThread, SIGNAL(finished()), m_multiAxisController, SLOT(deleteLater())); connect(&m_motorThread, &QThread::finished, m_multiAxisController, &QObject::deleteLater);
connect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(display_x_loc(std::vector<double>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &OneMotorControl_LiftingPlatform::display_x_loc);
connect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); connect(this, &OneMotorControl_LiftingPlatform::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
connect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); connect(this, qOverload<int, double, double, int>(&OneMotorControl_LiftingPlatform::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); connect(this, &OneMotorControl_LiftingPlatform::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
connect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); connect(this, &OneMotorControl_LiftingPlatform::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
connect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); connect(this, &OneMotorControl_LiftingPlatform::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
connect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); connect(this, &OneMotorControl_LiftingPlatform::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
connect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &OneMotorControl_LiftingPlatform::display_motors_connectivity);
m_motorThread.start(); m_motorThread.start();
emit testConnectivitySignal(0, 1000); emit testConnectivitySignal(0, 1000);
@ -525,14 +525,14 @@ void OneMotorControl_LiftingPlatform::onxMotorRight()
{ {
double s = ui.speed_lineEdit->text().toDouble(); double s = ui.speed_lineEdit->text().toDouble();
emit moveSignal(0, false, s, 1000); emit moveSignal(0, abs(s), 1000);
} }
void OneMotorControl_LiftingPlatform::onxMotorLeft() void OneMotorControl_LiftingPlatform::onxMotorLeft()
{ {
double s = ui.speed_lineEdit->text().toDouble(); double s = ui.speed_lineEdit->text().toDouble();
emit moveSignal(0, true, s, 1000); emit moveSignal(0, abs(s)*-1, 1000);
} }
void OneMotorControl_LiftingPlatform::onxMotorStop() void OneMotorControl_LiftingPlatform::onxMotorStop()

View File

@ -54,7 +54,7 @@ public Q_SLOTS:
void onSequenceComplete_gonggashan_autoexpose(int state); void onSequenceComplete_gonggashan_autoexpose(int state);
signals: signals:
void moveSignal(int, bool, double, int); void moveSignal(int, double, int);
void move2LocSignal(int, double, double, int); void move2LocSignal(int, double, double, int);
void move2LocSignal(const std::vector<double>, const std::vector<double>, int); void move2LocSignal(const std::vector<double>, const std::vector<double>, int);
void stopSignal(int); void stopSignal(int);
@ -125,7 +125,7 @@ public Q_SLOTS:
void onBack2Origin(double pos); void onBack2Origin(double pos);
signals: signals:
void moveSignal(int, bool, double, int); void moveSignal(int, double, int);
void move2LocSignal(int, double, double, int); void move2LocSignal(int, double, double, int);
void move2LocSignal(const std::vector<double>, const std::vector<double>, int); void move2LocSignal(const std::vector<double>, const std::vector<double>, int);
void stopSignal(int); void stopSignal(int);

View File

@ -306,7 +306,7 @@ void TwoMotorControl::run()
connect(&m_coordinatorThread, SIGNAL(finished()), m_coordinator, SLOT(deleteLater())); connect(&m_coordinatorThread, SIGNAL(finished()), m_coordinator, SLOT(deleteLater()));
connect(this, SIGNAL(start(QVector<PathLine>)), m_coordinator, SLOT(start(QVector<PathLine>))); connect(this, SIGNAL(start(QVector<PathLine>)), m_coordinator, SLOT(start(QVector<PathLine>)));
connect(this, SIGNAL(stopSignal()), m_coordinator, SLOT(stop())); connect(this, SIGNAL(stopSignal_CaptureCoordinator()), m_coordinator, SLOT(stop()));
connect(m_coordinator, SIGNAL(startRecordLineNumSignal(int)), this, SLOT(receiveStartRecordLineNum(int))); connect(m_coordinator, SIGNAL(startRecordLineNumSignal(int)), this, SLOT(receiveStartRecordLineNum(int)));
connect(m_coordinator, SIGNAL(finishRecordLineNumSignal(int)), this, SLOT(receiveFinishRecordLineNum(int))); connect(m_coordinator, SIGNAL(finishRecordLineNumSignal(int)), this, SLOT(receiveFinishRecordLineNum(int)));
connect(m_coordinator, SIGNAL(sequenceComplete(int)), this, SLOT(onSequenceComplete(int))); connect(m_coordinator, SIGNAL(sequenceComplete(int)), this, SLOT(onSequenceComplete(int)));
@ -352,7 +352,7 @@ void TwoMotorControl::stop_record()
void TwoMotorControl::stop() void TwoMotorControl::stop()
{ {
emit stopSignal(); emit stopSignal_CaptureCoordinator();
} }
TwoMotorControl::~TwoMotorControl() TwoMotorControl::~TwoMotorControl()
@ -385,14 +385,14 @@ void TwoMotorControl::connectMotor(bool isNotification)
if (m_multiAxisController != nullptr) if (m_multiAxisController != nullptr)
{ {
disconnect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(displayRealTimeLoc(std::vector<double>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &TwoMotorControl::displayRealTimeLoc);
disconnect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); disconnect(this, &TwoMotorControl::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
disconnect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); disconnect(this, qOverload<int, double, double, int>(&TwoMotorControl::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
disconnect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); disconnect(this, &TwoMotorControl::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
disconnect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); disconnect(this, &TwoMotorControl::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
disconnect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); disconnect(this, &TwoMotorControl::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
disconnect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); disconnect(this, &TwoMotorControl::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
disconnect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); disconnect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &TwoMotorControl::display_motors_connectivity);
m_motorThread.quit(); m_motorThread.quit();
m_motorThread.wait(); m_motorThread.wait();
@ -416,20 +416,20 @@ void TwoMotorControl::connectMotor(bool isNotification)
} }
m_multiAxisController->moveToThread(&m_motorThread); m_multiAxisController->moveToThread(&m_motorThread);
connect(&m_motorThread, SIGNAL(finished()), m_multiAxisController, SLOT(deleteLater())); connect(&m_motorThread, &QThread::finished, m_multiAxisController, &QObject::deleteLater);
connect(m_multiAxisController, SIGNAL(broadcastLocationSignal(std::vector<double>)), this, SLOT(displayRealTimeLoc(std::vector<double>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastLocationSignal, this, &TwoMotorControl::displayRealTimeLoc);
connect(this, SIGNAL(moveSignal(int, bool, double, int)), m_multiAxisController, SLOT(move(int, bool, double, int))); connect(this, &TwoMotorControl::moveSignal, m_multiAxisController, qOverload<int, double, int>(&IrisMultiMotorController::move));
connect(this, SIGNAL(move2LocSignal(int, double, double, int)), m_multiAxisController, SLOT(moveTo(int, double, double, int))); connect(this, qOverload<int, double, double, int>(&TwoMotorControl::move2LocSignal), m_multiAxisController, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, SIGNAL(stopSignal(int)), m_multiAxisController, SLOT(stop(int))); connect(this, &TwoMotorControl::stopSignal, m_multiAxisController, &IrisMultiMotorController::stop);
connect(this, SIGNAL(zeroStartSignal(int)), m_multiAxisController, SLOT(zeroStart(int))); connect(this, &TwoMotorControl::zeroStartSignal, m_multiAxisController, &IrisMultiMotorController::zeroStart);
connect(this, SIGNAL(rangeMeasurement(int, double, int)), m_multiAxisController, SLOT(rangeMeasurement(int, double, int))); connect(this, &TwoMotorControl::rangeMeasurement, m_multiAxisController, &IrisMultiMotorController::rangeMeasurement);
connect(this, SIGNAL(testConnectivitySignal(int, int)), m_multiAxisController, SLOT(testConnectivity(int, int))); connect(this, &TwoMotorControl::testConnectivitySignal, m_multiAxisController, &IrisMultiMotorController::testConnectivity);
connect(m_multiAxisController, SIGNAL(broadcastConnectivity(std::vector<int>)), this, SLOT(display_motors_connectivity(std::vector<int>))); connect(m_multiAxisController, &IrisMultiMotorController::broadcastConnectivity, this, &TwoMotorControl::display_motors_connectivity);
m_motorThread.start(); m_motorThread.start();
emit testConnectivitySignal(0, 1000); emit testConnectivitySignal(0, 1000);
@ -543,14 +543,14 @@ void TwoMotorControl::onxMotorRight()
{ {
double s = ui.xmotor_move_speed_lineEdit->text().toDouble(); double s = ui.xmotor_move_speed_lineEdit->text().toDouble();
emit moveSignal(0, false, s, 1000); emit moveSignal(0, abs(s), 1000);
} }
void TwoMotorControl::onxMotorLeft() void TwoMotorControl::onxMotorLeft()
{ {
double s = ui.xmotor_move_speed_lineEdit->text().toDouble(); double s = ui.xmotor_move_speed_lineEdit->text().toDouble();
emit moveSignal(0, true, s, 1000); emit moveSignal(0, abs(s)*-1, 1000);
} }
void TwoMotorControl::onxMotorStop() void TwoMotorControl::onxMotorStop()
@ -562,14 +562,14 @@ void TwoMotorControl::onyMotorforward()
{ {
double s = ui.ymotor_move_speed_lineEdit->text().toDouble(); double s = ui.ymotor_move_speed_lineEdit->text().toDouble();
emit moveSignal(1, false, s, 1000); emit moveSignal(1, abs(s), 1000);
} }
void TwoMotorControl::onyMotorbackward() void TwoMotorControl::onyMotorbackward()
{ {
double s = ui.ymotor_move_speed_lineEdit->text().toDouble(); double s = ui.ymotor_move_speed_lineEdit->text().toDouble();
emit moveSignal(1, true, s, 1000); emit moveSignal(1, abs(s)*-1, 1000);
} }
void TwoMotorControl::onyMotorStop() void TwoMotorControl::onyMotorStop()

View File

@ -96,7 +96,7 @@ public Q_SLOTS:
void stop_record(); void stop_record();
signals: signals:
void moveSignal(int, bool, double, int); void moveSignal(int, double, int);
void move2LocSignal(int, double, double, int); void move2LocSignal(int, double, double, int);
void move2LocSignal(const std::vector<double>, const std::vector<double>, int); void move2LocSignal(const std::vector<double>, const std::vector<double>, int);
void stopSignal(int); void stopSignal(int);
@ -106,7 +106,7 @@ signals:
void testConnectivitySignal(int, int); void testConnectivitySignal(int, int);
void start(QVector<PathLine>); void start(QVector<PathLine>);
void stopSignal(); void stopSignal_CaptureCoordinator();
void startLineNumSignal(int lineNum); void startLineNumSignal(int lineNum);
void sequenceComplete(int status);//所有采集线正常运行完成 void sequenceComplete(int status);//所有采集线正常运行完成

View File

@ -859,8 +859,8 @@ MotionCaptureCoordinator::MotionCaptureCoordinator(
, m_isZeroing(false) , m_isZeroing(false)
{ {
//这些信号槽是按照逻辑顺序的 //这些信号槽是按照逻辑顺序的
connect(this, SIGNAL(moveTo(int, double, double, int)), connect(this, qOverload<int, double, double, int>(&MotionCaptureCoordinator::moveTo),
m_motorCtrl, SLOT(moveTo(int, double, double, int))); m_motorCtrl, qOverload<int, double, double, int>(&IrisMultiMotorController::moveTo));
connect(this, &MotionCaptureCoordinator::zeroStart, connect(this, &MotionCaptureCoordinator::zeroStart,
m_motorCtrl, &IrisMultiMotorController::zeroStart); m_motorCtrl, &IrisMultiMotorController::zeroStart);
@ -870,8 +870,8 @@ MotionCaptureCoordinator::MotionCaptureCoordinator(
//connect(m_motorCtrl, &IrisMultiMotorController::moveFailed, //connect(m_motorCtrl, &IrisMultiMotorController::moveFailed,
// this, &MotionCaptureCoordinator::handleError); // this, &MotionCaptureCoordinator::handleError);
connect(this, SIGNAL(getFocusIndexSobel()), connect(this, &MotionCaptureCoordinator::getFocusIndexSobel,
m_cameraCtrl, SLOT(getFocusIndexSobel())); m_cameraCtrl, &ImagerOperationBase::getFocusIndexSobel);
connect(m_cameraCtrl, &ImagerOperationBase::FocusIndexSobelSignal, connect(m_cameraCtrl, &ImagerOperationBase::FocusIndexSobelSignal,
this, &MotionCaptureCoordinator::handleCaptureComplete); this, &MotionCaptureCoordinator::handleCaptureComplete);

View File

@ -11,8 +11,8 @@ setWindow::setWindow(QWidget* parent)
setWindowFlags(Qt::FramelessWindowHint); setWindowFlags(Qt::FramelessWindowHint);
//顺序不能更改,和AppSettings::HyperimgDisplayMode一致 //顺序不能更改,和AppSettings::HyperimgDisplayMode一致
ui.hyperimgDisplayMode_comboBox->addItem("full"); ui.hyperimgDisplayMode_comboBox->addItem(QString::fromLocal8Bit("全图"));
ui.hyperimgDisplayMode_comboBox->addItem("waterfall"); ui.hyperimgDisplayMode_comboBox->addItem(QString::fromLocal8Bit("瀑布流"));
connect(this->ui.closeBtn, SIGNAL(released()), this, SLOT(onExit())); connect(this->ui.closeBtn, SIGNAL(released()), this, SLOT(onExit()));
connect(this->ui.dataFolderBtn, SIGNAL(clicked()), this, SLOT(onSelectDataFolder())); connect(this->ui.dataFolderBtn, SIGNAL(clicked()), this, SLOT(onSelectDataFolder()));