机械臂和光谱仪联动,右下角机械臂控制窗口不会触发相机采集;
This commit is contained in:
312
HPPA/HPPA.cpp
312
HPPA/HPPA.cpp
@ -267,7 +267,8 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
//<2F>켣<EFBFBD>滮
|
//<2F>켣<EFBFBD>滮
|
||||||
m_pathPlan = new PathPlan(m_xMotor, m_yMotor, ui.xmotor_location_slider, ui.ymotor_location_slider);
|
m_pathPlan = new PathPlan(m_xMotor, m_yMotor, ui.xmotor_location_slider, ui.ymotor_location_slider);
|
||||||
QDockWidget* dock_pathPlan = new QDockWidget(QString::fromLocal8Bit("<EFBFBD>켣<EFBFBD>滮"), this);
|
QDockWidget* dock_pathPlan = new QDockWidget(QString::fromLocal8Bit("<EFBFBD>켣<EFBFBD>滮"), this);
|
||||||
dock_pathPlan->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
dock_pathPlan->setObjectName("mDockPathPlan");
|
||||||
|
dock_pathPlan->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
|
||||||
dock_pathPlan->setWidget(m_pathPlan);
|
dock_pathPlan->setWidget(m_pathPlan);
|
||||||
tabifyDockWidget(ui.mDockWidgetLinearStage, dock_pathPlan);
|
tabifyDockWidget(ui.mDockWidgetLinearStage, dock_pathPlan);
|
||||||
mPanelMenu->addAction(dock_pathPlan->toggleViewAction());
|
mPanelMenu->addAction(dock_pathPlan->toggleViewAction());
|
||||||
@ -276,6 +277,7 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
adjustTable* adt = new adjustTable();
|
adjustTable* adt = new adjustTable();
|
||||||
|
|
||||||
QDockWidget* dock_adt = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
QDockWidget* dock_adt = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
||||||
|
dock_adt->setObjectName("mDockAdjustTable");
|
||||||
dock_adt->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
dock_adt->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||||
dock_adt->setWidget(adt);
|
dock_adt->setWidget(adt);
|
||||||
tabifyDockWidget(dock_pathPlan, dock_adt);
|
tabifyDockWidget(dock_pathPlan, dock_adt);
|
||||||
@ -285,6 +287,7 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
PowerControl* pc = new PowerControl();
|
PowerControl* pc = new PowerControl();
|
||||||
|
|
||||||
QDockWidget* dock_pc = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
QDockWidget* dock_pc = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
||||||
|
dock_pc->setObjectName("mDockPowerControl");
|
||||||
dock_pc->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
dock_pc->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||||
dock_pc->setWidget(pc);
|
dock_pc->setWidget(pc);
|
||||||
tabifyDockWidget(dock_adt, dock_pc);
|
tabifyDockWidget(dock_adt, dock_pc);
|
||||||
@ -293,8 +296,10 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
connect(pc, &PowerControl::powerClosed, this, &HPPA::deleteMotor);
|
connect(pc, &PowerControl::powerClosed, this, &HPPA::deleteMotor);
|
||||||
|
|
||||||
//<2F><>е<EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD>
|
//<2F><>е<EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD>
|
||||||
RobotArmControl* rac = new RobotArmControl();
|
rac = new RobotArmControl();
|
||||||
|
connect(rac->robotController, SIGNAL(hsiRecordSignal(int)), this, SLOT(recordFromRobotArm(int)));
|
||||||
QDockWidget* dock_rac = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD>е<EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD>"), this);
|
QDockWidget* dock_rac = new QDockWidget(QString::fromLocal8Bit("<EFBFBD><EFBFBD>е<EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD>"), this);
|
||||||
|
dock_rac->setObjectName("mDockRobotArmControl");
|
||||||
dock_rac->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
dock_rac->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||||
dock_rac->setWidget(rac);
|
dock_rac->setWidget(rac);
|
||||||
tabifyDockWidget(dock_adt, dock_rac);
|
tabifyDockWidget(dock_adt, dock_rac);
|
||||||
@ -303,17 +308,37 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
createActionGroups();
|
createActionGroups();
|
||||||
connect(mImagerGroup, &QActionGroup::triggered, this, &HPPA::selectingImager);
|
connect(mImagerGroup, &QActionGroup::triggered, this, &HPPA::selectingImager);
|
||||||
|
|
||||||
connect(this->ui.mAction_is_motor_enable, SIGNAL(triggered()), this, SLOT(onMotorSwitch()));
|
createMoveplatformActionGroup();
|
||||||
QSettings settings;
|
connect(moveplatformActionGroup, &QActionGroup::triggered, this, &HPPA::selectingMoveplatform);
|
||||||
bool isMotorEnable = settings.value("isMotorEnable").toBool();
|
|
||||||
this->ui.mAction_is_motor_enable->setChecked(isMotorEnable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::onMotorSwitch()
|
void HPPA::recordFromRobotArm(int fileCounter)
|
||||||
{
|
{
|
||||||
QSettings settings;
|
qDebug() << "recordFromRobotArm" << fileCounter;
|
||||||
settings.setValue("isMotorEnable", this->ui.mAction_is_motor_enable->isChecked());
|
|
||||||
settings.sync();
|
if (fileCounter == -1)
|
||||||
|
{
|
||||||
|
m_Imager->setRecordControlState(false);
|
||||||
|
|
||||||
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||||
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
|
qDebug() << "recordFromRobotArm: 1111111111111111111111";
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fileCounter - 1 == 0)
|
||||||
|
{
|
||||||
|
ui.ImageViewerTabWidget->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
onCreateTab(fileCounter-1);
|
||||||
|
m_numberOfRecording = fileCounter - 1;
|
||||||
|
emit StartRecordSignal();
|
||||||
|
|
||||||
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>"));
|
||||||
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||||
|
qDebug() << "recordFromRobotArm: 2222222222222222222222";
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::createActionGroups()
|
void HPPA::createActionGroups()
|
||||||
@ -357,6 +382,39 @@ void HPPA::selectingImager(QAction* selectedAction)
|
|||||||
settings.sync();
|
settings.sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HPPA::createMoveplatformActionGroup()
|
||||||
|
{
|
||||||
|
moveplatformActionGroup = new QActionGroup(this);
|
||||||
|
moveplatformActionGroup->addAction(ui.mAction_is_no_motor);
|
||||||
|
moveplatformActionGroup->addAction(ui.mAction_2AxisMotor);
|
||||||
|
moveplatformActionGroup->addAction(ui.mAction_RobotArm);
|
||||||
|
|
||||||
|
// <20><>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
||||||
|
QSettings settings;
|
||||||
|
QString lastSelectedAction = settings.value("LastSelectedMoveplatform").toString();
|
||||||
|
|
||||||
|
// <20>ָ<EFBFBD><D6B8>ϴ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
||||||
|
if (lastSelectedAction == "mAction_is_no_motor")
|
||||||
|
{
|
||||||
|
ui.mAction_is_no_motor->setChecked(true);
|
||||||
|
}
|
||||||
|
else if (lastSelectedAction == "mAction_2AxisMotor")
|
||||||
|
{
|
||||||
|
ui.mAction_2AxisMotor->setChecked(true);
|
||||||
|
}
|
||||||
|
else if (lastSelectedAction == "mAction_RobotArm")
|
||||||
|
{
|
||||||
|
ui.mAction_RobotArm->setChecked(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HPPA::selectingMoveplatform(QAction* selectedAction)
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
settings.setValue("LastSelectedMoveplatform", selectedAction->objectName());
|
||||||
|
settings.sync();
|
||||||
|
}
|
||||||
|
|
||||||
HPPA::~HPPA()
|
HPPA::~HPPA()
|
||||||
{
|
{
|
||||||
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
||||||
@ -420,40 +478,52 @@ void HPPA::CalculateIntegratioinTimeRange()
|
|||||||
|
|
||||||
void HPPA::onStartRecordStep1()
|
void HPPA::onStartRecordStep1()
|
||||||
{
|
{
|
||||||
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||||
if (!isMotorEnable)//ͣ<><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if (!checked)
|
||||||
|
{
|
||||||
|
QMessageBox msgBox;
|
||||||
|
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>"));
|
||||||
|
msgBox.exec();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F>ж<EFBFBD><D0B6>ǷǴ<F1B8B2B8><C7B4>ڵ<EFBFBD><DAB5>ļ<EFBFBD>
|
||||||
|
FileOperation* fileOperation = new FileOperation();
|
||||||
|
string directory = fileOperation->getDirectoryFromString();
|
||||||
|
//string imgPath = directory + "\\tmp_image";
|
||||||
|
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString();
|
||||||
|
int x = _access(imgPath.c_str(), 0);
|
||||||
|
if (!x)//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ھ<EFBFBD>ִ<EFBFBD>д<EFBFBD>if<69>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
|
{
|
||||||
|
enum QMessageBox::StandardButton response = QMessageBox::question(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD>Ƿǣ<EFBFBD>"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);;
|
||||||
|
if (response == QMessageBox::Yes)//
|
||||||
|
{
|
||||||
|
//std::cout << "<22><><EFBFBD><EFBFBD>" << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//std::cout << "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||||
|
//m_RecordState -= 1;//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵĻ<C7B5><C4BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
||||||
|
m_Imager->setFileName2Save(imgPath);
|
||||||
|
|
||||||
|
QString checkedName = checked->objectName();
|
||||||
|
|
||||||
|
if (checkedName == "mAction_is_no_motor")
|
||||||
{
|
{
|
||||||
m_RecordState += 1;
|
m_RecordState += 1;
|
||||||
|
|
||||||
if (m_RecordState % 2 == 1)
|
if (m_RecordState % 2 == 1)
|
||||||
{
|
{
|
||||||
//<2F>ж<EFBFBD><D0B6>ǷǴ<F1B8B2B8><C7B4>ڵ<EFBFBD><DAB5>ļ<EFBFBD>
|
|
||||||
FileOperation* fileOperation = new FileOperation();
|
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
|
||||||
//string imgPath = directory + "\\tmp_image";
|
|
||||||
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(1) + ".bil";
|
|
||||||
int x = _access(imgPath.c_str(), 0);
|
|
||||||
if (!x)//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ھ<EFBFBD>ִ<EFBFBD>д<EFBFBD>if<69>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|
||||||
{
|
|
||||||
enum QMessageBox::StandardButton response = QMessageBox::question(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD>Ƿǣ<EFBFBD>"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);;
|
|
||||||
if (response == QMessageBox::Yes)//
|
|
||||||
{
|
|
||||||
//std::cout << "<22><><EFBFBD><EFBFBD>" << std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//std::cout << "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
|
||||||
m_RecordState -= 1;//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵĻ<C7B5><C4BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ui.ImageViewerTabWidget->clear();
|
ui.ImageViewerTabWidget->clear();
|
||||||
|
|
||||||
onCreateTab(0);
|
onCreateTab(0);
|
||||||
m_numberOfRecording = 0;
|
m_numberOfRecording = 0;
|
||||||
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
|
||||||
m_Imager->setFileName2Save(imgPath);
|
|
||||||
emit StartRecordSignal();//<2F><><EFBFBD>俪ʼ<E4BFAA>ɼ<EFBFBD><C9BC>ź<EFBFBD>
|
emit StartRecordSignal();//<2F><><EFBFBD>俪ʼ<E4BFAA>ɼ<EFBFBD><C9BC>ź<EFBFBD>
|
||||||
|
|
||||||
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
||||||
@ -468,98 +538,84 @@ void HPPA::onStartRecordStep1()
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (checkedName == "mAction_2AxisMotor")
|
||||||
//ȷ<><C8B7>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> С<><D0A1> x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
||||||
int validLineCount = 0;
|
|
||||||
for (size_t i = 0; i < m_pathPlan->getRecordLineTableWidget()->rowCount(); i++)
|
|
||||||
{
|
{
|
||||||
//xx = xx + ui.xmotor_location_slider->value() < m_pathPlan->getRecordLineTableWidget()->item(i, 1)->text().toDouble();
|
//ȷ<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> С<><D0A1> x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||||
|
int validLineCount = 0;
|
||||||
if (ui.xmotor_location_slider->value() < m_pathPlan->getRecordLineTableWidget()->item(i, 1)->text().toDouble())
|
|
||||||
{
|
|
||||||
validLineCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (validLineCount < m_pathPlan->getRecordLineTableWidget()->rowCount())
|
|
||||||
{
|
|
||||||
QMessageBox::information(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD>켣x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//ȷ<><C8B7><EFBFBD>ɼ<EFBFBD><C9BC>ߴ<EFBFBD><DFB4><EFBFBD>
|
|
||||||
if (m_pathPlan->getRecordLineTableWidget()->rowCount() <= 0)
|
|
||||||
{
|
|
||||||
QMessageBox::information(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ켣<EFBFBD><EFBFBD>"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
|
||||||
m_RecordState += 1;
|
|
||||||
|
|
||||||
if (m_RecordState % 2 == 1)
|
|
||||||
{
|
|
||||||
//<2F>ж<EFBFBD><D0B6>ǷǴ<F1B8B2B8><C7B4>ڵ<EFBFBD><DAB5>ļ<EFBFBD>
|
|
||||||
FileOperation * fileOperation = new FileOperation();
|
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
|
||||||
//string imgPath = directory + "\\tmp_image";
|
|
||||||
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString();
|
|
||||||
int x = _access(imgPath.c_str(), 0);
|
|
||||||
if (!x)//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ھ<EFBFBD>ִ<EFBFBD>д<EFBFBD>if<69>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|
||||||
{
|
|
||||||
enum QMessageBox::StandardButton response = QMessageBox::question(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD>Ƿǣ<EFBFBD>"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);;
|
|
||||||
if (response == QMessageBox::Yes)//
|
|
||||||
{
|
|
||||||
//std::cout << "<22><><EFBFBD><EFBFBD>" << std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//std::cout << "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
|
||||||
m_RecordState -= 1;//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵĻ<C7B5><C4BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
operateWidget = QObject::sender()->objectName();
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
m_Imager->setFileName2Save(imgPath);
|
|
||||||
|
|
||||||
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tab
|
|
||||||
ui.ImageViewerTabWidget->clear();
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼x<C2BC><78><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5>ļ<EFBFBD>
|
|
||||||
string x_location = removeFileExtension(imgPath) + "x_location.pos";
|
|
||||||
m_hTimesFile = fopen(x_location.c_str(), "w+");
|
|
||||||
|
|
||||||
//<2F><>ʼѭ<CABC><D1AD>
|
|
||||||
m_ForLoopControl->setLoopCount(m_pathPlan->getRecordLineTableWidget()->rowCount());//Ϊѭ<CEAA><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
emit StartLoopSignal();
|
|
||||||
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
|
|
||||||
for (size_t i = 0; i < m_pathPlan->getRecordLineTableWidget()->rowCount(); i++)
|
for (size_t i = 0; i < m_pathPlan->getRecordLineTableWidget()->rowCount(); i++)
|
||||||
{
|
{
|
||||||
for (size_t j = 0; j < m_pathPlan->getRecordLineTableWidget()->columnCount(); j++)
|
//xx = xx + ui.xmotor_location_slider->value() < m_pathPlan->getRecordLineTableWidget()->item(i, 1)->text().toDouble();
|
||||||
|
|
||||||
|
if (ui.xmotor_location_slider->value() < m_pathPlan->getRecordLineTableWidget()->item(i, 1)->text().toDouble())
|
||||||
{
|
{
|
||||||
m_pathPlan->getRecordLineTableWidget()->item(i, j)->setBackgroundColor(QColor(240, 240, 240));
|
validLineCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
if (validLineCount < m_pathPlan->getRecordLineTableWidget()->rowCount())
|
||||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
{
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD>켣x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//ȷ<><C8B7><EFBFBD>ɼ<EFBFBD><C9BC>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
|
if (m_pathPlan->getRecordLineTableWidget()->rowCount() <= 0)
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ켣<EFBFBD><EFBFBD>"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||||
|
m_RecordState += 1;
|
||||||
|
|
||||||
|
if (m_RecordState % 2 == 1)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
operateWidget = QObject::sender()->objectName();
|
||||||
|
|
||||||
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tab
|
||||||
|
ui.ImageViewerTabWidget->clear();
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼x<C2BC><78><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5>ļ<EFBFBD>
|
||||||
|
string x_location = removeFileExtension(imgPath) + "x_location.pos";
|
||||||
|
m_hTimesFile = fopen(x_location.c_str(), "w+");
|
||||||
|
|
||||||
|
//<2F><>ʼѭ<CABC><D1AD>
|
||||||
|
m_ForLoopControl->setLoopCount(m_pathPlan->getRecordLineTableWidget()->rowCount());//Ϊѭ<CEAA><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
emit StartLoopSignal();
|
||||||
|
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
|
||||||
|
for (size_t i = 0; i < m_pathPlan->getRecordLineTableWidget()->rowCount(); i++)
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < m_pathPlan->getRecordLineTableWidget()->columnCount(); j++)
|
||||||
|
{
|
||||||
|
m_pathPlan->getRecordLineTableWidget()->item(i, j)->setBackgroundColor(QColor(240, 240, 240));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
||||||
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_Imager->setRecordControlState(false);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
|
|
||||||
|
m_ForLoopControl->m_boolQuitLoop = true;//ѭ<><D1AD>ֹͣ
|
||||||
|
|
||||||
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||||
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else if (checkedName == "mAction_RobotArm")
|
||||||
{
|
{
|
||||||
m_Imager->setRecordControlState(false);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD>
|
//<2F><><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>RobotArmControl::executeTask<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾbug
|
||||||
|
rac->executeTaskWithHyperImager();
|
||||||
|
|
||||||
m_ForLoopControl->m_boolQuitLoop = true;//ѭ<><D1AD>ֹͣ
|
return;
|
||||||
|
|
||||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
|
||||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -822,7 +878,7 @@ void HPPA::timerEvent(QTimerEvent *event)
|
|||||||
}
|
}
|
||||||
ByteBack xMotorState = m_xMotor->GetState();//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
ByteBack xMotorState = m_xMotor->GetState();//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
std::cout << "------------------------------------------x<><78><EFBFBD><EFBFBD><EFBFBD>ٶȣ<D9B6>" << xMotorState.Speed << std::endl;
|
//std::cout << "------------------------------------------x<><78><EFBFBD><EFBFBD><EFBFBD>ٶȣ<D9B6>" << xMotorState.Speed << std::endl;
|
||||||
|
|
||||||
if (xMotorState.Speed == -1000000)
|
if (xMotorState.Speed == -1000000)
|
||||||
{
|
{
|
||||||
@ -1714,7 +1770,7 @@ void HPPA::onconnect()
|
|||||||
}
|
}
|
||||||
else if (imagerSelected == "mActionPika_XC2")
|
else if (imagerSelected == "mActionPika_XC2")
|
||||||
{
|
{
|
||||||
|
m_Imager = new ResononPicaLImager();
|
||||||
}
|
}
|
||||||
else if (imagerSelected == "mActionCorning_410")
|
else if (imagerSelected == "mActionCorning_410")
|
||||||
{
|
{
|
||||||
@ -1911,7 +1967,7 @@ void HPPA::onReference()
|
|||||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>"));
|
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>"));
|
||||||
msgBox.exec();
|
msgBox.exec();
|
||||||
|
|
||||||
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
bool isMotorEnable = this->ui.mAction_2AxisMotor->isChecked();
|
||||||
if (isMotorEnable)
|
if (isMotorEnable)
|
||||||
{
|
{
|
||||||
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
||||||
@ -1933,7 +1989,7 @@ void HPPA::recordWhiteFinish()
|
|||||||
{
|
{
|
||||||
ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
|
|
||||||
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
bool isMotorEnable = this->ui.mAction_2AxisMotor->isChecked();
|
||||||
if (isMotorEnable)
|
if (isMotorEnable)
|
||||||
{
|
{
|
||||||
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
||||||
@ -1948,6 +2004,7 @@ void HPPA::recordWhiteFinish()
|
|||||||
|
|
||||||
void HPPA::onPlotHyperspectralImageRgbImage()
|
void HPPA::onPlotHyperspectralImageRgbImage()
|
||||||
{
|
{
|
||||||
|
//return;
|
||||||
//<2F><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD>ؼ<EFBFBD>
|
//<2F><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD>ؼ<EFBFBD>
|
||||||
QWidget* currentWidget = ui.ImageViewerTabWidget->widget(m_numberOfRecording);
|
QWidget* currentWidget = ui.ImageViewerTabWidget->widget(m_numberOfRecording);
|
||||||
QList<ImageViewer *> currentImageViewer = currentWidget->findChildren<ImageViewer *>();
|
QList<ImageViewer *> currentImageViewer = currentWidget->findChildren<ImageViewer *>();
|
||||||
@ -2070,6 +2127,19 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
|
|||||||
|
|
||||||
void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
||||||
{
|
{
|
||||||
|
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||||
|
QString checkedName;
|
||||||
|
if (checked)
|
||||||
|
{
|
||||||
|
checkedName = checked->objectName();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkedName == "mAction_RobotArm")//<2F><>е<EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>ֿ<EFBFBD>ʼ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ui.action_start_recording<6E><67>ʾ<EFBFBD>쳣
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::cout << "ֹͣ<EFBFBD>ɼ<EFBFBD>ԭ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>û<EFBFBD>вɼ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
std::cout << "ֹͣ<EFBFBD>ɼ<EFBFBD>ԭ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>û<EFBFBD>вɼ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||||
|
|
||||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||||
|
|||||||
@ -239,6 +239,11 @@ private:
|
|||||||
QActionGroup* mImagerGroup = nullptr;
|
QActionGroup* mImagerGroup = nullptr;
|
||||||
void createActionGroups();
|
void createActionGroups();
|
||||||
void selectingImager(QAction* selectedAction);
|
void selectingImager(QAction* selectedAction);
|
||||||
|
QActionGroup* moveplatformActionGroup = nullptr;
|
||||||
|
void createMoveplatformActionGroup();
|
||||||
|
void selectingMoveplatform(QAction* selectedAction);
|
||||||
|
RobotArmControl* rac;
|
||||||
|
|
||||||
|
|
||||||
PathPlan* m_pathPlan;
|
PathPlan* m_pathPlan;
|
||||||
|
|
||||||
@ -322,8 +327,6 @@ public Q_SLOTS:
|
|||||||
void ontimerMoveXmotor();
|
void ontimerMoveXmotor();
|
||||||
void ontimerMoveYmotor();
|
void ontimerMoveYmotor();
|
||||||
|
|
||||||
void onMotorSwitch();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
void onimagerSimulatorMove(int x, int y);
|
void onimagerSimulatorMove(int x, int y);
|
||||||
void OnSendLogToCallClass(QString str);
|
void OnSendLogToCallClass(QString str);
|
||||||
@ -336,6 +339,8 @@ public Q_SLOTS:
|
|||||||
|
|
||||||
void requestFinished(QNetworkReply* reply);
|
void requestFinished(QNetworkReply* reply);
|
||||||
|
|
||||||
|
void recordFromRobotArm(int fileCounter);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void StartFocusSignal();
|
void StartFocusSignal();
|
||||||
void StartLoopSignal();
|
void StartLoopSignal();
|
||||||
|
|||||||
35
HPPA/HPPA.ui
35
HPPA/HPPA.ui
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1318</width>
|
<width>1194</width>
|
||||||
<height>882</height>
|
<height>834</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -84,7 +84,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1318</width>
|
<width>1194</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -166,7 +166,9 @@ color:white;
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>扫描平台</string>
|
<string>扫描平台</string>
|
||||||
</property>
|
</property>
|
||||||
<addaction name="mAction_is_motor_enable"/>
|
<addaction name="mAction_is_no_motor"/>
|
||||||
|
<addaction name="mAction_2AxisMotor"/>
|
||||||
|
<addaction name="mAction_RobotArm"/>
|
||||||
</widget>
|
</widget>
|
||||||
<addaction name="file"/>
|
<addaction name="file"/>
|
||||||
<addaction name="menuspectrometer"/>
|
<addaction name="menuspectrometer"/>
|
||||||
@ -1550,18 +1552,37 @@ QDockWidget::title {
|
|||||||
<string>马达</string>
|
<string>马达</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="mAction_is_motor_enable">
|
<action name="mAction_is_no_motor">
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
<property name="checked">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>开启</string>
|
<string>无</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mAction_2AxisMotor">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>2 轴线性马达</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mAction_RobotArm">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>机械臂</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
@ -287,7 +287,7 @@ void ImagerOperationBase::start_record()
|
|||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>λ<EFBFBD>ͼǰ<CDBC><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>λ<EFBFBD>ͼǰ<CDBC><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//m_RgbImage
|
//m_RgbImage
|
||||||
emit PlotSignal();//<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>λ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD>ɼ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ʵı<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ȫ
|
//emit PlotSignal();//<2F><>1<EFBFBD><31><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>λ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD>ɼ<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ʵı<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD>е<EFBFBD>۲ɼ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>俪ʼ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᵼ<EFBFBD><EFBFBD><EFBFBD>ϴβɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD>źŵ<EFBFBD><EFBFBD>õIJۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˼<EFBFBD><EFBFBD>ݣ<EFBFBD>ע<EFBFBD>͵<EFBFBD>
|
||||||
|
|
||||||
if (m_iFrameCounter >= m_iFrameNumber)
|
if (m_iFrameCounter >= m_iFrameNumber)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -4,14 +4,12 @@ RobotArmControl::RobotArmControl(QWidget* parent): QDialog(parent)
|
|||||||
{
|
{
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
robotController = new RobotController(this);
|
robotController = new RobotController(this);
|
||||||
connect(robotController, SIGNAL(commandResponse(bool, const QJsonObject)), this, SLOT(onCommandResponse(bool, const QJsonObject)));
|
|
||||||
|
|
||||||
|
|
||||||
connect(ui.get_task_list_btn, SIGNAL(clicked()), this, SLOT(getTaskList()));
|
connect(ui.get_task_list_btn, SIGNAL(clicked()), this, SLOT(getTaskList()));
|
||||||
connect(ui.get_pose_btn, SIGNAL(clicked()), this, SLOT(getPose()));
|
connect(ui.get_pose_btn, SIGNAL(clicked()), this, SLOT(getPose()));
|
||||||
connect(ui.connect2arm_btn, SIGNAL(clicked()), this, SLOT(connectRobotArm()));
|
connect(ui.connect2arm_btn, SIGNAL(clicked()), this, SLOT(connectRobotArm()));
|
||||||
|
|
||||||
connect(ui.execute_task_btn, SIGNAL(clicked()), this, SLOT(executeTask()));
|
connect(ui.execute_task_btn, SIGNAL(clicked()), this, SLOT(executeTaskWithoutHyperImager()));
|
||||||
connect(ui.pause_task_btn, SIGNAL(clicked()), this, SLOT(pauseTask()));
|
connect(ui.pause_task_btn, SIGNAL(clicked()), this, SLOT(pauseTask()));
|
||||||
connect(ui.continue_task_btn, SIGNAL(clicked()), this, SLOT(continueTask()));
|
connect(ui.continue_task_btn, SIGNAL(clicked()), this, SLOT(continueTask()));
|
||||||
|
|
||||||
@ -21,7 +19,6 @@ RobotArmControl::RobotArmControl(QWidget* parent): QDialog(parent)
|
|||||||
|
|
||||||
m_pModel = new QStringListModel(ui.taskList_listView);
|
m_pModel = new QStringListModel(ui.taskList_listView);
|
||||||
|
|
||||||
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>б<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
||||||
ui.taskList_listView->setModel(m_pModel);
|
ui.taskList_listView->setModel(m_pModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,32 +38,37 @@ void RobotArmControl::monitorRobotArm(const ECData& data)
|
|||||||
ui.pose_z_label->setText(QString::number(z));
|
ui.pose_z_label->setText(QString::number(z));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::onCommandResponse(bool success, const QJsonObject& response)
|
void RobotArmControl::onCommandResponse(QString str, const QJsonObject& response)
|
||||||
{
|
{
|
||||||
if (success)
|
//qDebug() << "response:" << response;
|
||||||
{
|
|
||||||
QString re;
|
|
||||||
if (response.contains("result"))
|
|
||||||
{
|
|
||||||
re = response["result"].toVariant().toString();
|
|
||||||
ui.textEdit->append("Result: " + re);
|
|
||||||
}
|
|
||||||
else if (response.contains("error"))
|
|
||||||
{
|
|
||||||
auto errorStr = response["error"].toObject()["message"].toString();
|
|
||||||
|
|
||||||
ui.textEdit->append("Error: " + errorStr);
|
QString re;
|
||||||
}
|
if (response.contains("result"))
|
||||||
|
{
|
||||||
|
re = response["result"].toVariant().toString();
|
||||||
|
ui.textEdit->append(str + " Result: " + re);
|
||||||
|
}
|
||||||
|
else if (response.contains("error"))
|
||||||
|
{
|
||||||
|
//auto delete11 = response["error"].toObject();
|
||||||
|
//qDebug() << "response[\"error\"]:" << delete11;
|
||||||
|
|
||||||
|
auto errorStr = response["error"].toObject()["message"].toString();
|
||||||
|
|
||||||
|
ui.textEdit->append(str + " Error: " + errorStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::getTaskList()
|
void RobotArmControl::getTaskList()
|
||||||
{
|
{
|
||||||
QString pythonScript = "D:\\PycharmProjects\\ELITE_ROBOTS\\get_jbi_filename.py";
|
FileOperation* fileOperation = new FileOperation();
|
||||||
|
string directory = fileOperation->getDirectoryOfExe();
|
||||||
|
|
||||||
|
QString pythonScript = QString::fromStdString(directory) + "\\get_jbi_filename.py";
|
||||||
|
|
||||||
QProcess process;
|
QProcess process;
|
||||||
|
|
||||||
process.start("C:\\ProgramData\\anaconda3\\python.exe", QStringList() << pythonScript);
|
process.start("python.exe", QStringList() << pythonScript);
|
||||||
process.waitForFinished();
|
process.waitForFinished();
|
||||||
QString output = process.readAllStandardOutput();
|
QString output = process.readAllStandardOutput();
|
||||||
|
|
||||||
@ -94,7 +96,9 @@ void RobotArmControl::getTaskList()
|
|||||||
|
|
||||||
void RobotArmControl::getPose()
|
void RobotArmControl::getPose()
|
||||||
{
|
{
|
||||||
robotController->getRobotPose();
|
QJsonObject response;
|
||||||
|
bool x = robotController->getRobotPose(response);
|
||||||
|
onCommandResponse("getPose", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::connectRobotArm()
|
void RobotArmControl::connectRobotArm()
|
||||||
@ -103,7 +107,7 @@ void RobotArmControl::connectRobotArm()
|
|||||||
robotMonitor->connectToHost("192.168.1.100");
|
robotMonitor->connectToHost("192.168.1.100");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::executeTask()
|
void RobotArmControl::executeTaskWithHyperImager()
|
||||||
{
|
{
|
||||||
QModelIndex index = ui.taskList_listView->currentIndex();
|
QModelIndex index = ui.taskList_listView->currentIndex();
|
||||||
if (-1 == index.row())
|
if (-1 == index.row())
|
||||||
@ -114,17 +118,83 @@ void RobotArmControl::executeTask()
|
|||||||
}
|
}
|
||||||
QString fileName = index.data(Qt::DisplayRole).toString();
|
QString fileName = index.data(Qt::DisplayRole).toString();
|
||||||
|
|
||||||
robotController->runJbi(fileName);
|
QJsonObject response;
|
||||||
|
bool x;
|
||||||
|
|
||||||
|
x = robotController->checkJbiExist(fileName, response);
|
||||||
|
onCommandResponse("checkJbiExist", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = robotController->setServoStatus(1, response);
|
||||||
|
onCommandResponse("setServoStatus", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = robotController->runJbi(fileName, response, true);
|
||||||
|
onCommandResponse("runJbi", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RobotArmControl::executeTaskWithoutHyperImager()
|
||||||
|
{
|
||||||
|
QModelIndex index = ui.taskList_listView->currentIndex();
|
||||||
|
if (-1 == index.row())
|
||||||
|
{
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>
|
||||||
|
ui.textEdit->append("Please select file on the left!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString fileName = index.data(Qt::DisplayRole).toString();
|
||||||
|
|
||||||
|
QJsonObject response;
|
||||||
|
bool x;
|
||||||
|
|
||||||
|
x = robotController->checkJbiExist(fileName, response);
|
||||||
|
onCommandResponse("checkJbiExist", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = robotController->setServoStatus(1, response);
|
||||||
|
onCommandResponse("setServoStatus", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = robotController->runJbi(fileName, response, false);
|
||||||
|
onCommandResponse("runJbi", response);
|
||||||
|
if (!x)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::pauseTask()
|
void RobotArmControl::pauseTask()
|
||||||
{
|
{
|
||||||
robotController->pauseTask();
|
QJsonObject response;
|
||||||
|
bool x;
|
||||||
|
|
||||||
|
x = robotController->pauseTask(response);
|
||||||
|
onCommandResponse("pauseTask", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotArmControl::continueTask()
|
void RobotArmControl::continueTask()
|
||||||
{
|
{
|
||||||
robotController->continueTask();
|
QJsonObject response;
|
||||||
|
bool x;
|
||||||
|
|
||||||
|
x = robotController->continueTask(response);
|
||||||
|
onCommandResponse("continueTask", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -134,10 +204,10 @@ void RobotArmControl::continueTask()
|
|||||||
|
|
||||||
RobotController::RobotController(QObject* parent) : QObject(parent), socket(new QTcpSocket(this))
|
RobotController::RobotController(QObject* parent) : QObject(parent), socket(new QTcpSocket(this))
|
||||||
{
|
{
|
||||||
connect(socket, &QTcpSocket::readyRead, this, &RobotController::onReadyRead);
|
//connect(socket, &QTcpSocket::readyRead, this, &RobotController::onReadyRead);
|
||||||
|
|
||||||
timer = new QTimer(this);
|
m_timer = new QTimer(this);
|
||||||
connect(timer, SIGNAL(timeout()), this, SLOT(getPoint()));
|
connect(m_timer, SIGNAL(timeout()), this, SLOT(getPoint()));
|
||||||
}
|
}
|
||||||
|
|
||||||
RobotController::~RobotController()
|
RobotController::~RobotController()
|
||||||
@ -158,7 +228,6 @@ bool RobotController::connectToRobot(const QString& ip, quint16 port)
|
|||||||
qDebug() << "Connected successfully!";
|
qDebug() << "Connected successfully!";
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::disconnectFromRobot()
|
void RobotController::disconnectFromRobot()
|
||||||
@ -169,10 +238,97 @@ void RobotController::disconnectFromRobot()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RobotController::processResponse(QJsonObject response, QString& result)
|
||||||
|
{
|
||||||
|
//qDebug() << "response:" << response;
|
||||||
|
|
||||||
|
if (response.contains("result"))
|
||||||
|
{
|
||||||
|
result = response["result"].toVariant().toString();
|
||||||
|
|
||||||
|
//qDebug() << "result1:" << result;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (response.contains("error"))
|
||||||
|
{
|
||||||
|
result = response["error"].toObject()["message"].toString();
|
||||||
|
//qDebug() << "result2:" << result;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RobotController::processResponse_getJbiState(QJsonObject response, QString& result)
|
||||||
|
{
|
||||||
|
//qDebug() << "response:" << response;
|
||||||
|
|
||||||
|
if (response.contains("result"))
|
||||||
|
{
|
||||||
|
QString resultStr = response["result"].toString();
|
||||||
|
|
||||||
|
QJsonDocument resultDoc = QJsonDocument::fromJson(resultStr.toUtf8());
|
||||||
|
QJsonObject resultObj = resultDoc.object();
|
||||||
|
//qDebug() << "resultObj:" << resultObj;
|
||||||
|
|
||||||
|
int runState = resultObj["runState"].toInt();
|
||||||
|
//qDebug() << "runState:" << runState;
|
||||||
|
|
||||||
|
result = QString::number(runState);
|
||||||
|
//qDebug() << "result:" << result;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (response.contains("error"))
|
||||||
|
{
|
||||||
|
result = response["error"].toObject()["message"].toString();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RobotController::getPoint()
|
void RobotController::getPoint()
|
||||||
{
|
{
|
||||||
getJbiState();
|
QJsonObject response;
|
||||||
getCurrentJobLine();
|
getJbiState(response);//0 ֹͣ״̬,1 <20><>ͣ״̬,2 <20><>ͣ״̬,3 <20><><EFBFBD><EFBFBD>״̬,4 <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
QString result;
|
||||||
|
bool x = processResponse_getJbiState(response, result);
|
||||||
|
//qDebug() << "getJbiState:" << result;
|
||||||
|
|
||||||
|
if (result.toInt() != 3)
|
||||||
|
{
|
||||||
|
m_timer->stop();
|
||||||
|
|
||||||
|
m_iCurrentJbiJobLine = 0;
|
||||||
|
m_iFileCounter = 0;
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
|
emit hsiRecordSignal(-1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject response2;
|
||||||
|
getCurrentJobLine(response2);
|
||||||
|
QString result2;
|
||||||
|
bool x2 = processResponse(response2, result2);
|
||||||
|
|
||||||
|
int m_iCurrentJbiJobLine_tmp = result2.toInt();
|
||||||
|
|
||||||
|
|
||||||
|
if (m_iCurrentJbiJobLine_tmp != m_iCurrentJbiJobLine)
|
||||||
|
{
|
||||||
|
m_iFileCounter++;
|
||||||
|
|
||||||
|
qDebug() << "Changed! CurrentJobLine:" << m_iCurrentJbiJobLine_tmp;
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
|
emit hsiRecordSignal(-1);
|
||||||
|
|
||||||
|
m_iCurrentJbiJobLine = m_iCurrentJbiJobLine_tmp;
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||||
|
emit hsiRecordSignal(m_iFileCounter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::sendCommand(const QString& cmd, const QJsonValue& params, int id)
|
void RobotController::sendCommand(const QString& cmd, const QJsonValue& params, int id)
|
||||||
@ -185,95 +341,151 @@ void RobotController::sendCommand(const QString& cmd, const QJsonValue& params,
|
|||||||
|
|
||||||
QJsonDocument doc(request);
|
QJsonDocument doc(request);
|
||||||
QByteArray data = doc.toJson(QJsonDocument::Compact) + "\n";
|
QByteArray data = doc.toJson(QJsonDocument::Compact) + "\n";
|
||||||
qDebug() << "send command:" << data.constData();
|
//qDebug() << "send command:" << data.constData();
|
||||||
|
|
||||||
socket->write(data);
|
socket->write(data);
|
||||||
|
socket->waitForBytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::onReadyRead()
|
bool RobotController::onReadyRead(QJsonObject& re)
|
||||||
{
|
{
|
||||||
QByteArray data = socket->readAll();
|
QByteArray data = socket->readAll();
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||||
if (!doc.isNull() && doc.isObject())
|
if (!doc.isNull() && doc.isObject())
|
||||||
{
|
{
|
||||||
QJsonObject response = doc.object();
|
re = doc.object();
|
||||||
//qDebug() << "Received all:" << response;
|
//qDebug() << "Received all:" << re;
|
||||||
|
|
||||||
if (response.contains("result"))
|
if (re.contains("result"))
|
||||||
{
|
{
|
||||||
//qDebug() << "Received result:" << response["result"].toVariant();
|
//qDebug() << "Received result:" << re["result"].toVariant();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (response.contains("error"))
|
else if (re.contains("error"))
|
||||||
{
|
{
|
||||||
//qDebug() << "Received error:" << response["error"];
|
//qDebug() << "Received error:" << re["error"];
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit commandResponse(true, doc.object());
|
//emit commandResponse(true, doc.object());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emit commandResponse(false, QJsonObject());
|
//emit commandResponse(false, QJsonObject());
|
||||||
|
|
||||||
|
re = QJsonObject();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::getRobotPose()
|
bool RobotController::getRobotPose(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("getRobotPose");
|
sendCommand("getRobotPose");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::getRobotState()
|
bool RobotController::getRobotState(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("getRobotState");
|
sendCommand("getRobotState");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::getJbiState()
|
bool RobotController::getJbiState(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("getJbiState");
|
sendCommand("getJbiState");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::getCurrentJobLine()
|
bool RobotController::getCurrentJobLine(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("getCurrentJobLine");
|
sendCommand("getCurrentJobLine");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::getRobotMode()
|
bool RobotController::getRobotMode(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("getRobotMode");
|
sendCommand("getRobotMode");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::runJbi(const QString& jbiFilename)
|
bool RobotController::checkJbiExist(const QString& jbiFilename, QJsonObject& re)
|
||||||
{
|
{
|
||||||
QJsonObject paramsRunJbi;
|
QJsonObject paramsRunJbi;
|
||||||
paramsRunJbi["filename"] = jbiFilename;//ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ṹ
|
paramsRunJbi["filename"] = jbiFilename;//ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ṹ
|
||||||
|
|
||||||
QJsonObject params_set_servo_status;
|
sendCommand("checkJbiExist", paramsRunJbi);
|
||||||
params_set_servo_status["status"] = 1;//ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ṹ
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
//sendCommand("checkJbiExist", paramsRunJbi);
|
return onReadyRead(re);
|
||||||
sendCommand("set_servo_status", params_set_servo_status);
|
|
||||||
sendCommand("runJbi", paramsRunJbi);
|
|
||||||
|
|
||||||
//timer->start(1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::pauseTask()
|
bool RobotController::setServoStatus(int status, QJsonObject& re)
|
||||||
|
{
|
||||||
|
QJsonObject params_set_servo_status;
|
||||||
|
params_set_servo_status["status"] = status;//ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ṹ
|
||||||
|
|
||||||
|
sendCommand("set_servo_status", params_set_servo_status);
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RobotController::runJbi(const QString& jbiFilename, QJsonObject& re, bool isRecordHsi)
|
||||||
|
{
|
||||||
|
QJsonObject paramsRunJbi;
|
||||||
|
paramsRunJbi["filename"] = jbiFilename;//ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ṹ
|
||||||
|
|
||||||
|
sendCommand("runJbi", paramsRunJbi);
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
if (isRecordHsi)
|
||||||
|
{
|
||||||
|
m_timer->start(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RobotController::pauseTask(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("pause");
|
sendCommand("pause");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::run()
|
bool RobotController::run(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("run");
|
sendCommand("run");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::continueTask()
|
bool RobotController::continueTask(QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("run");
|
sendCommand("run");
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RobotController::setRobotPowerStatus(int status)
|
bool RobotController::setRobotPowerStatus(int status, QJsonObject& re)
|
||||||
{
|
{
|
||||||
sendCommand("set_robot_power_status", QJsonArray{ status });
|
sendCommand("set_robot_power_status", QJsonArray{ status });
|
||||||
|
socket->waitForReadyRead(m_iTimeout);
|
||||||
|
|
||||||
|
return onReadyRead(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#include "ui_RobotArmControl.h"
|
#include "ui_RobotArmControl.h"
|
||||||
|
#include "fileOperation.h"
|
||||||
|
|
||||||
|
|
||||||
struct ECData
|
struct ECData
|
||||||
@ -93,29 +94,38 @@ public:
|
|||||||
bool connectToRobot(const QString& ip, quint16 port = 8055);
|
bool connectToRobot(const QString& ip, quint16 port = 8055);
|
||||||
void disconnectFromRobot();
|
void disconnectFromRobot();
|
||||||
void sendCommand(const QString& cmd, const QJsonValue& params = QJsonArray(), int id = 1);
|
void sendCommand(const QString& cmd, const QJsonValue& params = QJsonArray(), int id = 1);
|
||||||
|
bool processResponse(QJsonObject response, QString& re);
|
||||||
|
bool processResponse_getJbiState(QJsonObject response, QString& result);
|
||||||
|
|
||||||
void getRobotPose();
|
bool getRobotPose(QJsonObject& re);
|
||||||
void getRobotState();//ֹͣ״̬ 0<><30><EFBFBD><EFBFBD>ͣ״̬ 1<><31><EFBFBD><EFBFBD>ͣ״̬ 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 4<><34><EFBFBD><EFBFBD>ײ״̬ 5
|
bool getRobotState(QJsonObject& re);//ֹͣ״̬ 0<><30><EFBFBD><EFBFBD>ͣ״̬ 1<><31><EFBFBD><EFBFBD>ͣ״̬ 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 4<><34><EFBFBD><EFBFBD>ײ״̬ 5
|
||||||
void getJbiState();//0 ֹͣ״̬,1 <20><>ͣ״̬,2 <20><>ͣ״̬,3 <20><><EFBFBD><EFBFBD>״̬,4 <20><><EFBFBD><EFBFBD>״̬
|
bool getJbiState(QJsonObject& re);//0 ֹͣ״̬,1 <20><>ͣ״̬,2 <20><>ͣ״̬,3 <20><><EFBFBD><EFBFBD>״̬,4 <20><><EFBFBD><EFBFBD>״̬
|
||||||
void getCurrentJobLine();
|
bool getCurrentJobLine(QJsonObject& re);
|
||||||
void getRobotMode();//ʾ<><CABE>ģʽ 0<><30><EFBFBD>Զ<EFBFBD>ģʽ 1<><31>Զ<EFBFBD><D4B6>ģʽ 2
|
bool getRobotMode(QJsonObject& re);//ʾ<><CABE>ģʽ 0<><30><EFBFBD>Զ<EFBFBD>ģʽ 1<><31>Զ<EFBFBD><D4B6>ģʽ 2
|
||||||
void runJbi(const QString& jbiFilename);
|
bool checkJbiExist(const QString& jbiFilename, QJsonObject& re);
|
||||||
void pauseTask();
|
bool setServoStatus(int status, QJsonObject& re);
|
||||||
void run();
|
bool runJbi(const QString& jbiFilename, QJsonObject& re, bool isRecordHsi);
|
||||||
void continueTask();
|
bool pauseTask(QJsonObject& re);
|
||||||
void setRobotPowerStatus(int status);
|
bool run(QJsonObject& re);
|
||||||
|
bool continueTask(QJsonObject& re);
|
||||||
|
bool setRobotPowerStatus(int status, QJsonObject& re);
|
||||||
|
|
||||||
signals:
|
bool onReadyRead(QJsonObject& re);
|
||||||
void commandResponse(bool success, const QJsonObject& response);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onReadyRead();
|
|
||||||
void getPoint();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTcpSocket* socket;
|
QTcpSocket* socket;
|
||||||
|
|
||||||
QTimer* timer;
|
QTimer* m_timer;
|
||||||
|
int m_iTimeout = 3000;
|
||||||
|
int m_iCurrentJbiJobLine = 0;
|
||||||
|
int m_iFileCounter = 0;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void commandResponse(bool success, const QJsonObject& response);
|
||||||
|
void hsiRecordSignal(int);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void getPoint();
|
||||||
};
|
};
|
||||||
|
|
||||||
class RobotArmControl : public QDialog
|
class RobotArmControl : public QDialog
|
||||||
@ -127,14 +137,16 @@ public:
|
|||||||
~RobotArmControl();
|
~RobotArmControl();
|
||||||
RobotController* robotController;
|
RobotController* robotController;
|
||||||
|
|
||||||
|
void onCommandResponse(QString str, const QJsonObject& response);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void onCommandResponse(bool success, const QJsonObject& response);
|
|
||||||
void getTaskList();
|
void getTaskList();
|
||||||
void getPose();
|
void getPose();
|
||||||
|
|
||||||
void connectRobotArm();
|
void connectRobotArm();
|
||||||
void executeTask();
|
void executeTaskWithHyperImager();
|
||||||
|
void executeTaskWithoutHyperImager();
|
||||||
void pauseTask();
|
void pauseTask();
|
||||||
void continueTask();
|
void continueTask();
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>版本:1.8.7</string>
|
<string>版本:1.8.8</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
|
|||||||
Reference in New Issue
Block a user