Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f32ade7487 | |||
| 89c701c5f2 | |||
| a7fd9e4fa9 | |||
| 5af6a039c2 | |||
| b779118d72 |
187
HPPA/HPPA.cpp
187
HPPA/HPPA.cpp
@ -13,6 +13,10 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
{
|
{
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
|
|
||||||
|
QCoreApplication::setOrganizationName("IRIS");
|
||||||
|
QCoreApplication::setOrganizationDomain("iris.com");
|
||||||
|
QCoreApplication::setApplicationName("HPPA");
|
||||||
|
|
||||||
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
||||||
QFile file(strPath);
|
QFile file(strPath);
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
@ -178,7 +182,8 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
connect(this->ui.ymotor_backward_btn, SIGNAL(released()), this, SLOT(onyMotorStop()));
|
connect(this->ui.ymotor_backward_btn, SIGNAL(released()), this, SLOT(onyMotorStop()));
|
||||||
|
|
||||||
//<2F>ٶ<EFBFBD>
|
//<2F>ٶ<EFBFBD>
|
||||||
QRegExp rx("\\d{0,3}[1-9]$");
|
//QRegExp rx("\\d{0,3}.[1-9]$");
|
||||||
|
QRegExp rx("^\\d+(\\.\\d+)?$");
|
||||||
ui.xmotor_speed_lineEdit->setValidator(new QRegExpValidator(rx));
|
ui.xmotor_speed_lineEdit->setValidator(new QRegExpValidator(rx));
|
||||||
|
|
||||||
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
@ -289,6 +294,18 @@ 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()));
|
||||||
|
QSettings settings;
|
||||||
|
bool isMotorEnable = settings.value("isMotorEnable").toBool();
|
||||||
|
this->ui.mAction_is_motor_enable->setChecked(isMotorEnable);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HPPA::onMotorSwitch()
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
settings.setValue("isMotorEnable", this->ui.mAction_is_motor_enable->isChecked());
|
||||||
|
settings.sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::createActionGroups()
|
void HPPA::createActionGroups()
|
||||||
@ -300,13 +317,36 @@ void HPPA::createActionGroups()
|
|||||||
mImagerGroup->addAction(ui.mActionCorning_410);
|
mImagerGroup->addAction(ui.mActionCorning_410);
|
||||||
mImagerGroup->addAction(ui.mActionPica_NIR);
|
mImagerGroup->addAction(ui.mActionPica_NIR);
|
||||||
|
|
||||||
ui.mActionPica_NIR->setChecked(true);
|
|
||||||
imagerSelected = ui.mActionPica_NIR->objectName();
|
// <20><>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
||||||
|
QSettings settings;
|
||||||
|
QString lastSelectedAction = settings.value("LastSelectedImagerAction").toString();
|
||||||
|
|
||||||
|
// <20>ָ<EFBFBD><D6B8>ϴ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
||||||
|
if (lastSelectedAction == "mActionPica_L")
|
||||||
|
{
|
||||||
|
ui.mActionPica_L->setChecked(true);
|
||||||
|
}
|
||||||
|
else if (lastSelectedAction == "mActionPica_NIR")
|
||||||
|
{
|
||||||
|
ui.mActionPica_NIR->setChecked(true);
|
||||||
|
}
|
||||||
|
else if (lastSelectedAction == "mActionPika_XC2")
|
||||||
|
{
|
||||||
|
ui.mActionPika_XC2->setChecked(true);
|
||||||
|
}
|
||||||
|
else if (lastSelectedAction == "mActionCorning_410")
|
||||||
|
{
|
||||||
|
ui.mActionCorning_410->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::selectingImager(QAction* selectedAction)
|
void HPPA::selectingImager(QAction* selectedAction)
|
||||||
{
|
{
|
||||||
imagerSelected = selectedAction->objectName();
|
QSettings settings;
|
||||||
|
settings.setValue("LastSelectedImagerAction", selectedAction->objectName());
|
||||||
|
settings.sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
HPPA::~HPPA()
|
HPPA::~HPPA()
|
||||||
@ -372,24 +412,54 @@ void HPPA::CalculateIntegratioinTimeRange()
|
|||||||
|
|
||||||
void HPPA::onStartRecordStep1()
|
void HPPA::onStartRecordStep1()
|
||||||
{
|
{
|
||||||
////<2F><><EFBFBD>Դ<EFBFBD><D4B4>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
||||||
//m_RecordState += 1;
|
if (!isMotorEnable)//ͣ<><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
m_RecordState += 1;
|
||||||
|
|
||||||
//if (m_RecordState % 2 == 1)
|
if (m_RecordState % 2 == 1)
|
||||||
//{
|
{
|
||||||
// onCreateTab(1);
|
//<EFBFBD>ж<EFBFBD><EFBFBD>ǷǴ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
// m_numberOfRecording = 0;
|
FileOperation* fileOperation = new FileOperation();
|
||||||
// m_Imager->setFileName2Save(m_FilenameLineEdit->text().toStdString());
|
string directory = fileOperation->getDirectoryFromString();
|
||||||
// emit StartRecordSignal();//<2F><><EFBFBD>俪ʼ<E4BFAA>ɼ<EFBFBD><C9BC>ź<EFBFBD>
|
//string imgPath = directory + "\\tmp_image";
|
||||||
//}
|
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(1) + ".bil";
|
||||||
//else
|
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>
|
||||||
// m_Imager->setRecordControlState(false);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<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.action_start_recording->setText(QString::fromLocal8Bit("<22>ɼ<EFBFBD>"));
|
ui.ImageViewerTabWidget->clear();
|
||||||
// ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
onCreateTab(0);
|
||||||
|
m_numberOfRecording = 0;
|
||||||
|
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
||||||
|
m_Imager->setFileName2Save(imgPath);
|
||||||
|
emit StartRecordSignal();//<2F><><EFBFBD>俪ʼ<E4BFAA>ɼ<EFBFBD><C9BC>ź<EFBFBD>
|
||||||
|
|
||||||
|
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>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
//ȷ<><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>
|
//ȷ<><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;
|
int validLineCount = 0;
|
||||||
@ -417,7 +487,6 @@ void HPPA::onStartRecordStep1()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
//<2F><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||||||
m_RecordState += 1;
|
m_RecordState += 1;
|
||||||
|
|
||||||
@ -427,7 +496,7 @@ void HPPA::onStartRecordStep1()
|
|||||||
FileOperation * fileOperation = new FileOperation();
|
FileOperation * fileOperation = new FileOperation();
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
string directory = fileOperation->getDirectoryFromString();
|
||||||
//string imgPath = directory + "\\tmp_image";
|
//string imgPath = directory + "\\tmp_image";
|
||||||
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(1);
|
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString();
|
||||||
int x = _access(imgPath.c_str(), 0);
|
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>
|
if (!x)//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ھ<EFBFBD>ִ<EFBFBD>д<EFBFBD>if<69>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||||
{
|
{
|
||||||
@ -449,15 +518,20 @@ void HPPA::onStartRecordStep1()
|
|||||||
operateWidget = QObject::sender()->objectName();
|
operateWidget = QObject::sender()->objectName();
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
m_Imager->setFileName2Save(m_FilenameLineEdit->text().toStdString());
|
m_Imager->setFileName2Save(imgPath);
|
||||||
|
|
||||||
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tab
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tab
|
||||||
ui.ImageViewerTabWidget->clear();
|
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>
|
//<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>
|
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();
|
emit StartLoopSignal();
|
||||||
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
|
//<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++)
|
||||||
{
|
{
|
||||||
@ -510,7 +584,6 @@ void HPPA::onStartRecordStep2(int lineNumber)
|
|||||||
else if (lineNumber == -1)
|
else if (lineNumber == -1)
|
||||||
{
|
{
|
||||||
std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||||
m_RecordState++;
|
|
||||||
|
|
||||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
@ -521,6 +594,8 @@ void HPPA::onStartRecordStep2(int lineNumber)
|
|||||||
m_yMotor->SettingSpeed(m_lManualSpeedOfYMotor);
|
m_yMotor->SettingSpeed(m_lManualSpeedOfYMotor);
|
||||||
m_yMotor->MoveToLocation(ymotorPositionOfLine1);
|
m_yMotor->MoveToLocation(ymotorPositionOfLine1);
|
||||||
m_timerYmotorLocationFeedBackAfterRecord->start(500);
|
m_timerYmotorLocationFeedBackAfterRecord->start(500);
|
||||||
|
|
||||||
|
fclose(m_hTimesFile);
|
||||||
}
|
}
|
||||||
else if (lineNumber == -2)
|
else if (lineNumber == -2)
|
||||||
{
|
{
|
||||||
@ -529,6 +604,7 @@ void HPPA::onStartRecordStep2(int lineNumber)
|
|||||||
//ֹͣy<D6B9><79><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>
|
//ֹͣy<D6B9><79><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>
|
||||||
m_yMotor->StopMotormove();
|
m_yMotor->StopMotormove();
|
||||||
|
|
||||||
|
fclose(m_hTimesFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -665,7 +741,7 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
|||||||
|
|
||||||
FileOperation * fileOperation = new FileOperation();
|
FileOperation * fileOperation = new FileOperation();
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
string directory = fileOperation->getDirectoryFromString();
|
||||||
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(m_TabWidgetCurrentIndex + 1);
|
string imgPath = directory + "\\" + m_FilenameLineEdit->text().toStdString() + "_" + std::to_string(m_TabWidgetCurrentIndex + 1) + ".bil";
|
||||||
|
|
||||||
ImageReaderWriter *ImageReader = new ImageReaderWriter(imgPath.c_str());
|
ImageReaderWriter *ImageReader = new ImageReaderWriter(imgPath.c_str());
|
||||||
|
|
||||||
@ -1258,6 +1334,10 @@ void HPPA::ontimerMoveXmotor()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ByteBack MotorState = m_xMotor->GetState();
|
ByteBack MotorState = m_xMotor->GetState();
|
||||||
|
//<2F><>ȡϵͳʱ<CDB3><CAB1><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
long long timeOs = getNanosecondsSinceMidnight();
|
||||||
|
BroadcastXMotorPosSignal(timeOs, MotorState.Location);
|
||||||
|
fprintf(m_hTimesFile, "%lld,%d\n", timeOs, MotorState.Location);
|
||||||
|
|
||||||
//<2F><>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>slider<65><72>
|
//<2F><>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>slider<65><72>
|
||||||
if (MotorState.Speed != 0)
|
if (MotorState.Speed != 0)
|
||||||
@ -1271,8 +1351,7 @@ void HPPA::ontimerMoveXmotor()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>ﷵ<EFBFBD>س<EFBFBD>ʼλ<CABC>ã<EFBFBD><C3A3><EFBFBD>ʼ<EFBFBD>ɼ<EFBFBD>ǰ<EFBFBD><C7B0>¼<EFBFBD><C2BC>λ<EFBFBD>ã<EFBFBD>m_lXmotorLocationOfStartRecord<72><64>
|
//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>ﷵ<EFBFBD>س<EFBFBD>ʼλ<CABC>ã<EFBFBD><C3A3><EFBFBD>ʼ<EFBFBD>ɼ<EFBFBD>ǰ<EFBFBD><C7B0>¼<EFBFBD><C2BC>λ<EFBFBD>ã<EFBFBD>m_lXmotorLocationOfStartRecord<72><64>
|
||||||
if (MotorState.Speed == 0 && MotorState.Location != m_lXmotorLocationOfStartRecord //x<><78><EFBFBD><EFBFBD>λ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>֡<EFBFBD><D6A1>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD>
|
if (MotorState.Speed == 0 && MotorState.Location != m_lXmotorLocationOfStartRecord)//x<><78><EFBFBD><EFBFBD>λ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>֡<EFBFBD><D6A1>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD>
|
||||||
|| !m_Imager->getRecordControlState())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻص<CFBB><D8B5><EFBFBD>ʼλ<CABC>ã<EFBFBD><C3A3><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>֡<EFBFBD><D6A1><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ﻹ<EFBFBD><EFBBB9><EFBFBD>˶<EFBFBD>
|
|
||||||
{
|
{
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
m_Imager->setRecordControlState(false);
|
m_Imager->setRecordControlState(false);
|
||||||
@ -1280,7 +1359,21 @@ void HPPA::ontimerMoveXmotor()
|
|||||||
//x<><78><EFBFBD>ﷵ<EFBFBD>زɼ<D8B2>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
//x<><78><EFBFBD>ﷵ<EFBFBD>زɼ<D8B2>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
||||||
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
||||||
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
|
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
|
||||||
|
|
||||||
|
//qDebug() << "x<><78><EFBFBD><EFBFBD>λ<EFBFBD>û<EFBFBD>ԭ<EFBFBD><D4AD>x<EFBFBD><78><EFBFBD><EFBFBD>λ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>֡<EFBFBD><D6A1>û<EFBFBD>вɼ<D0B2><C9BC>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD>";
|
||||||
|
qDebug() << "11111111111111111111111111111111111111111111111111";
|
||||||
}
|
}
|
||||||
|
if (!m_Imager->getRecordControlState())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻص<CFBB><D8B5><EFBFBD>ʼλ<CABC>ã<EFBFBD><C3A3><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>֡<EFBFBD><D6A1><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ﻹ<EFBFBD><EFBBB9><EFBFBD>˶<EFBFBD>
|
||||||
|
{
|
||||||
|
//x<><78><EFBFBD>ﷵ<EFBFBD>زɼ<D8B2>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
||||||
|
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
||||||
|
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
|
||||||
|
|
||||||
|
//qDebug() << "x<><78><EFBFBD><EFBFBD>λ<EFBFBD>û<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>֡<EFBFBD><D6A1><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ﻹ<EFBFBD><EFBBB9><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>";
|
||||||
|
qDebug() << "222222222222222222222222222222222222222222222222222222";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ɼ<EFBFBD><C9BC>ߵIJɼ<C4B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ɼ<EFBFBD><C9BC>ߵIJɼ<C4B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
if (MotorState.Speed == 0 && MotorState.Location == m_lXmotorLocationOfStartRecord//<2F><>x<EFBFBD><78><EFBFBD>ﷵ<EFBFBD>س<EFBFBD>ʼλ<CABC><CEBB>
|
if (MotorState.Speed == 0 && MotorState.Location == m_lXmotorLocationOfStartRecord//<2F><>x<EFBFBD><78><EFBFBD>ﷵ<EFBFBD>س<EFBFBD>ʼλ<CABC><CEBB>
|
||||||
@ -1466,6 +1559,7 @@ void HPPA::newMotor()
|
|||||||
m_yMotor = new VinceControl(NETTCP, 6001);//ԭ<><D4AD><EFBFBD><EFBFBD>6001<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>6003
|
m_yMotor = new VinceControl(NETTCP, 6001);//ԭ<><D4AD><EFBFBD><EFBFBD>6001<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>6003
|
||||||
|
|
||||||
m_pathPlan->setMotor(m_xMotor, m_yMotor);
|
m_pathPlan->setMotor(m_xMotor, m_yMotor);
|
||||||
|
QString imagerSelected = mImagerGroup->checkedAction()->objectName();
|
||||||
if (imagerSelected == "mActionPica_NIR")
|
if (imagerSelected == "mActionPica_NIR")
|
||||||
{
|
{
|
||||||
connect(m_xMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
connect(m_xMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
||||||
@ -1601,6 +1695,7 @@ void HPPA::onconnect()
|
|||||||
m_RecordThread = new QThread();
|
m_RecordThread = new QThread();
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mImagerGroup
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mImagerGroup
|
||||||
|
QString imagerSelected = mImagerGroup->checkedAction()->objectName();
|
||||||
if (imagerSelected == "mActionPica_L")
|
if (imagerSelected == "mActionPica_L")
|
||||||
{
|
{
|
||||||
m_Imager = new ResononPicaLImager();
|
m_Imager = new ResononPicaLImager();
|
||||||
@ -1808,15 +1903,19 @@ 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();
|
||||||
|
|
||||||
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
||||||
if (!isMotorConnected(m_xMotor))
|
if (isMotorEnable)
|
||||||
{
|
{
|
||||||
m_xMotor->EnableMotro();
|
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
||||||
m_lXmotorLocationOfStartRecord = m_xMotor->GetLocationNow();
|
if (!isMotorConnected(m_xMotor))
|
||||||
m_xMotor->SettingSpeed(ui.xmotor_speed_slider->OriginalValue());
|
{
|
||||||
//m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
m_xMotor->EnableMotro();
|
||||||
|
m_lXmotorLocationOfStartRecord = m_xMotor->GetLocationNow();
|
||||||
|
m_xMotor->SettingSpeed(ui.xmotor_speed_slider->OriginalValue());
|
||||||
|
//m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
||||||
|
|
||||||
m_xMotor->MoveMotar(true);
|
m_xMotor->MoveMotar(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit RecordWhiteSignal();
|
emit RecordWhiteSignal();
|
||||||
@ -1826,12 +1925,16 @@ 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);}");
|
||||||
|
|
||||||
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
|
bool isMotorEnable = this->ui.mAction_is_motor_enable->isChecked();
|
||||||
if (!isMotorConnected(m_xMotor))
|
if (isMotorEnable)
|
||||||
{
|
{
|
||||||
//x<><78><EFBFBD>ﷵ<EFBFBD>زɼ<EFBFBD>ǰ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
//<EFBFBD>ƶ<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
if (!isMotorConnected(m_xMotor))
|
||||||
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
|
{
|
||||||
|
//x<><78><EFBFBD>ﷵ<EFBFBD>زɼ<D8B2>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
||||||
|
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
|
||||||
|
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1950,11 +2053,19 @@ void HPPA::PlotSpectral(int state)
|
|||||||
void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
|
void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
|
||||||
{
|
{
|
||||||
std::cout << "ֹͣ<EFBFBD>ɼ<EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>" << std::endl;
|
std::cout << "ֹͣ<EFBFBD>ɼ<EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>" << std::endl;
|
||||||
|
|
||||||
|
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||||
|
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
|
|
||||||
|
m_RecordState++;//<2F><><EFBFBD>Զ<EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD>
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
||||||
{
|
{
|
||||||
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.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||||
}
|
}
|
||||||
|
|
||||||
ForLoopControl::ForLoopControl()
|
ForLoopControl::ForLoopControl()
|
||||||
|
|||||||
@ -236,12 +236,13 @@ private:
|
|||||||
void getRequest(QString str);
|
void getRequest(QString str);
|
||||||
|
|
||||||
QActionGroup* mImagerGroup = nullptr;
|
QActionGroup* mImagerGroup = nullptr;
|
||||||
QString imagerSelected;
|
|
||||||
void createActionGroups();
|
void createActionGroups();
|
||||||
void selectingImager(QAction* selectedAction);
|
void selectingImager(QAction* selectedAction);
|
||||||
|
|
||||||
PathPlan* m_pathPlan;
|
PathPlan* m_pathPlan;
|
||||||
|
|
||||||
|
FILE* m_hTimesFile;
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void onPlotHyperspectralImageRgbImage();
|
void onPlotHyperspectralImageRgbImage();
|
||||||
void PlotSpectral(int state);
|
void PlotSpectral(int state);
|
||||||
@ -320,6 +321,8 @@ 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);
|
||||||
@ -337,6 +340,7 @@ signals:
|
|||||||
void StartLoopSignal();
|
void StartLoopSignal();
|
||||||
void StartRecordSignal();
|
void StartRecordSignal();
|
||||||
void CopyFileThreadSignal(QString, QString);
|
void CopyFileThreadSignal(QString, QString);
|
||||||
|
void BroadcastXMotorPosSignal(long long, int);
|
||||||
|
|
||||||
void RecordWhiteSignal();
|
void RecordWhiteSignal();
|
||||||
void RecordDarlSignal();
|
void RecordDarlSignal();
|
||||||
|
|||||||
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>1078</width>
|
<width>1120</width>
|
||||||
<height>623</height>
|
<height>675</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>1078</width>
|
<width>1120</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -162,8 +162,15 @@ color:white;
|
|||||||
<string>窗口</string>
|
<string>窗口</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QMenu" name="menu_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>扫描平台</string>
|
||||||
|
</property>
|
||||||
|
<addaction name="mAction_is_motor_enable"/>
|
||||||
|
</widget>
|
||||||
<addaction name="file"/>
|
<addaction name="file"/>
|
||||||
<addaction name="menuspectrometer"/>
|
<addaction name="menuspectrometer"/>
|
||||||
|
<addaction name="menu_2"/>
|
||||||
<addaction name="mWindowsMenu"/>
|
<addaction name="mWindowsMenu"/>
|
||||||
<addaction name="menuhelp"/>
|
<addaction name="menuhelp"/>
|
||||||
</widget>
|
</widget>
|
||||||
@ -1535,6 +1542,28 @@ QDockWidget::title {
|
|||||||
<string>工具栏</string>
|
<string>工具栏</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="action_2">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>马达</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mAction_is_motor_enable">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>开启</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
|||||||
@ -204,21 +204,22 @@ void ImagerOperationBase::start_record()
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileOperation* fileOperation = new FileOperation();
|
m_FileName2Save2 = m_FileName2Save + "_" + std::to_string(m_FileSavedCounter) + ".bil";
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
FILE* m_fImage = fopen(m_FileName2Save2.c_str(), "w+b");
|
||||||
string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter);
|
|
||||||
|
|
||||||
FILE* m_fImage = fopen(imgPath.c_str(), "w+b");
|
|
||||||
|
|
||||||
size_t x;
|
size_t x;
|
||||||
double pixelValueTmp;
|
double pixelValueTmp;
|
||||||
|
|
||||||
|
string timesFile = removeFileExtension(m_FileName2Save2) + ".times";
|
||||||
|
FILE* hTimesFile = fopen(timesFile.c_str(), "w+");
|
||||||
|
|
||||||
imagerStartCollect();
|
imagerStartCollect();
|
||||||
while (m_bRecordControlState)
|
while (m_bRecordControlState)
|
||||||
{
|
{
|
||||||
m_iFrameCounter++;
|
m_iFrameCounter++;
|
||||||
|
|
||||||
getFrame(buffer);
|
getFrame(buffer);
|
||||||
|
long long timeOs = getNanosecondsSinceMidnight();
|
||||||
|
|
||||||
//<2F><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦΪbuffer<65><72>dark<72><6B><EFBFBD><EFBFBD>unsigned short<72><74><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>dark>bufferʱ<72><CAB1>buffer-dark=65535
|
//<2F><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦΪbuffer<65><72>dark<72><6B><EFBFBD><EFBFBD>unsigned short<72><74><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>dark>bufferʱ<72><CAB1>buffer-dark=65535
|
||||||
if (m_HasDark)
|
if (m_HasDark)
|
||||||
@ -259,6 +260,7 @@ void ImagerOperationBase::start_record()
|
|||||||
}
|
}
|
||||||
|
|
||||||
x = fwrite(buffer, 2, m_FrameSize, m_fImage);
|
x = fwrite(buffer, 2, m_FrameSize, m_fImage);
|
||||||
|
fprintf(hTimesFile, "%d\n", timeOs);
|
||||||
|
|
||||||
//<2F><>rgb<67><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
//<2F><>rgb<67><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
m_RgbImage->FillRgbImage(buffer);//??????????????????????????????????????????????????????????????????????????????????????????????????????
|
m_RgbImage->FillRgbImage(buffer);//??????????????????????????????????????????????????????????????????????????????????????????????????????
|
||||||
@ -298,6 +300,7 @@ void ImagerOperationBase::start_record()
|
|||||||
|
|
||||||
//QThread::msleep(1001);
|
//QThread::msleep(1001);
|
||||||
fclose(m_fImage);
|
fclose(m_fImage);
|
||||||
|
fclose(hTimesFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImagerOperationBase::setFrameNumber(int FrameNumber)
|
void ImagerOperationBase::setFrameNumber(int FrameNumber)
|
||||||
@ -398,11 +401,7 @@ void ImagerOperationBase::WriteHdr()
|
|||||||
//write an ENVI compatible header file
|
//write an ENVI compatible header file
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
string hdrPath = removeFileExtension(m_FileName2Save2) + ".hdr";
|
||||||
FileOperation* fileOperation = new FileOperation();
|
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
|
||||||
|
|
||||||
string hdrPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter) + ".hdr";
|
|
||||||
|
|
||||||
std::ofstream outfile(hdrPath.c_str());
|
std::ofstream outfile(hdrPath.c_str());
|
||||||
outfile << "ENVI\n";
|
outfile << "ENVI\n";
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <opencv2/core/core.hpp>
|
#include <opencv2/core/core.hpp>
|
||||||
#include "ImagerOperationBase.h"
|
#include "ImagerOperationBase.h"
|
||||||
|
#include "utility_tc.h"
|
||||||
|
|
||||||
class ImagerOperationBase :public QObject
|
class ImagerOperationBase :public QObject
|
||||||
{
|
{
|
||||||
@ -65,6 +66,7 @@ protected:
|
|||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
string m_FileName2Save;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
string m_FileName2Save;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
string m_FileName2Save2;
|
||||||
int m_FileSavedCounter;//<2F><><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD>
|
int m_FileSavedCounter;//<2F><><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD>
|
||||||
|
|
||||||
bool m_HasDark;//<2F><><EFBFBD>ɼ<EFBFBD><C9BC>˰<EFBFBD><CBB0><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊtrue
|
bool m_HasDark;//<2F><><EFBFBD>ɼ<EFBFBD><C9BC>˰<EFBFBD><CBB0><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊtrue
|
||||||
|
|||||||
@ -247,7 +247,7 @@ void PathPlan::onReadRecordLineFile_btn()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE* RecordLineFileHandle = fopen(RecordLineFilePath.toStdString().c_str(), "r");
|
FILE* RecordLineFileHandle = fopen(RecordLineFilePath.toStdString().c_str(), "rb");
|
||||||
double height, fov, swath, offset, repetitiveRate, LastLineThreshold, number;
|
double height, fov, swath, offset, repetitiveRate, LastLineThreshold, number;
|
||||||
|
|
||||||
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@ -285,15 +285,15 @@ void ResononNirImager::start_record()
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileOperation* fileOperation = new FileOperation();
|
m_FileName2Save2 = m_FileName2Save + "_" + std::to_string(m_FileSavedCounter) + ".bil";
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
FILE* m_fImage = fopen(m_FileName2Save2.c_str(), "w+b");
|
||||||
string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter)+".bil";
|
|
||||||
|
|
||||||
FILE* m_fImage = fopen(imgPath.c_str(), "w+b");
|
|
||||||
|
|
||||||
size_t x;
|
size_t x;
|
||||||
double pixelValueTmp;
|
double pixelValueTmp;
|
||||||
|
|
||||||
|
string timesFile = removeFileExtension(m_FileName2Save2) + ".times";
|
||||||
|
FILE* hTimesFile = fopen(timesFile.c_str(), "w+");
|
||||||
|
|
||||||
reConnectImage();//nir<69>ڶ<EFBFBD><DAB6>βɼ<CEB2>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>imagerStartCollect()<29>ᱨ<EFBFBD><E1B1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
reConnectImage();//nir<69>ڶ<EFBFBD><DAB6>βɼ<CEB2>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>imagerStartCollect()<29>ᱨ<EFBFBD><E1B1A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
imagerStartCollect();
|
imagerStartCollect();
|
||||||
while (m_bRecordControlState)
|
while (m_bRecordControlState)
|
||||||
@ -301,6 +301,8 @@ void ResononNirImager::start_record()
|
|||||||
m_iFrameCounter++;
|
m_iFrameCounter++;
|
||||||
|
|
||||||
getFrame(buffer);
|
getFrame(buffer);
|
||||||
|
long long timeOs = getNanosecondsSinceMidnight();
|
||||||
|
//qDebug() << "time ns-------------------: " << timeOs;
|
||||||
|
|
||||||
//<2F><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦΪbuffer<65><72>dark<72><6B><EFBFBD><EFBFBD>unsigned short<72><74><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>dark>bufferʱ<72><CAB1>buffer-dark=65535
|
//<2F><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦΪbuffer<65><72>dark<72><6B><EFBFBD><EFBFBD>unsigned short<72><74><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>dark>bufferʱ<72><CAB1>buffer-dark=65535
|
||||||
if (m_HasDark)
|
if (m_HasDark)
|
||||||
@ -341,6 +343,7 @@ void ResononNirImager::start_record()
|
|||||||
}
|
}
|
||||||
|
|
||||||
x = fwrite(buffer, 2, m_FrameSize, m_fImage);
|
x = fwrite(buffer, 2, m_FrameSize, m_fImage);
|
||||||
|
fprintf(hTimesFile, "%lld\n", timeOs);
|
||||||
|
|
||||||
//<2F><>rgb<67><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
//<2F><>rgb<67><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
m_RgbImage->FillRgbImage(buffer);//??????????????????????????????????????????????????????????????????????????????????????????????????????
|
m_RgbImage->FillRgbImage(buffer);//??????????????????????????????????????????????????????????????????????????????????????????????????????
|
||||||
@ -356,6 +359,7 @@ void ResononNirImager::start_record()
|
|||||||
if (m_iFrameCounter >= m_iFrameNumber)
|
if (m_iFrameCounter >= m_iFrameNumber)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
//qDebug() << "<22><><EFBFBD><EFBFBD>ֹͣ<CDA3>ɼ<EFBFBD><C9BC><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -380,6 +384,7 @@ void ResononNirImager::start_record()
|
|||||||
|
|
||||||
//QThread::msleep(1001);
|
//QThread::msleep(1001);
|
||||||
fclose(m_fImage);
|
fclose(m_fImage);
|
||||||
|
fclose(hTimesFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResononNirImager::WriteHdr()
|
void ResononNirImager::WriteHdr()
|
||||||
@ -387,11 +392,7 @@ void ResononNirImager::WriteHdr()
|
|||||||
//write an ENVI compatible header file
|
//write an ENVI compatible header file
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
string hdrPath = removeFileExtension(m_FileName2Save2) + ".hdr";
|
||||||
FileOperation* fileOperation = new FileOperation();
|
|
||||||
string directory = fileOperation->getDirectoryFromString();
|
|
||||||
|
|
||||||
string hdrPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter) + ".hdr";
|
|
||||||
|
|
||||||
std::ofstream outfile(hdrPath.c_str());
|
std::ofstream outfile(hdrPath.c_str());
|
||||||
outfile << "ENVI\n";
|
outfile << "ENVI\n";
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include "resonon_imager_allied.h"
|
#include "resonon_imager_allied.h"
|
||||||
#include "image2display.h"
|
#include "image2display.h"
|
||||||
#include "fileOperation.h"
|
#include "fileOperation.h"
|
||||||
|
#include "utility_tc.h"
|
||||||
|
|
||||||
class ResononNirImager :public ImagerOperationBase
|
class ResononNirImager :public ImagerOperationBase
|
||||||
{
|
{
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>756</width>
|
<width>629</width>
|
||||||
<height>463</height>
|
<height>463</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>90</x>
|
<x>90</x>
|
||||||
<y>250</y>
|
<y>250</y>
|
||||||
<width>578</width>
|
<width>434</width>
|
||||||
<height>134</height>
|
<height>134</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -70,7 +70,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>版本:1.8.2</string>
|
<string>版本:1.8.7</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
|
|||||||
@ -12,6 +12,10 @@ adjustTable::adjustTable(QWidget *parent)
|
|||||||
connect(ui.objective_table2_up_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Up_btn()));
|
connect(ui.objective_table2_up_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Up_btn()));
|
||||||
connect(ui.objective_table2_down_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Down_btn()));
|
connect(ui.objective_table2_down_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Down_btn()));
|
||||||
connect(ui.objective_table2_stop_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Stop_btn()));
|
connect(ui.objective_table2_stop_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable2Stop_btn()));
|
||||||
|
|
||||||
|
connect(ui.objective_table252_up_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable252Up_btn()));
|
||||||
|
connect(ui.objective_table252_down_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable252Down_btn()));
|
||||||
|
connect(ui.objective_table252_stop_btn, SIGNAL(clicked()), this, SLOT(onObjectivTable252Stop_btn()));
|
||||||
}
|
}
|
||||||
|
|
||||||
adjustTable::~adjustTable()
|
adjustTable::~adjustTable()
|
||||||
@ -63,3 +67,21 @@ void adjustTable::onObjectivTable2Stop_btn()
|
|||||||
QString xx = "http://192.168.1.254/stopnow";
|
QString xx = "http://192.168.1.254/stopnow";
|
||||||
getRequest(xx);
|
getRequest(xx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void adjustTable::onObjectivTable252Up_btn()
|
||||||
|
{
|
||||||
|
QString xx = "http://192.168.1.252/set_up";
|
||||||
|
getRequest(xx);
|
||||||
|
}
|
||||||
|
|
||||||
|
void adjustTable::onObjectivTable252Down_btn()
|
||||||
|
{
|
||||||
|
QString xx = "http://192.168.1.252/set_down";
|
||||||
|
getRequest(xx);
|
||||||
|
}
|
||||||
|
|
||||||
|
void adjustTable::onObjectivTable252Stop_btn()
|
||||||
|
{
|
||||||
|
QString xx = "http://192.168.1.252/stopnow";
|
||||||
|
getRequest(xx);
|
||||||
|
}
|
||||||
@ -24,6 +24,10 @@ public Q_SLOTS:
|
|||||||
void onObjectivTable2Down_btn();
|
void onObjectivTable2Down_btn();
|
||||||
void onObjectivTable2Stop_btn();
|
void onObjectivTable2Stop_btn();
|
||||||
|
|
||||||
|
void onObjectivTable252Up_btn();
|
||||||
|
void onObjectivTable252Down_btn();
|
||||||
|
void onObjectivTable252Stop_btn();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::adjustTableClass ui;
|
Ui::adjustTableClass ui;
|
||||||
|
|
||||||
|
|||||||
@ -6,33 +6,66 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>348</width>
|
<width>687</width>
|
||||||
<height>194</height>
|
<height>389</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>adjustTable</string>
|
<string>adjustTable</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox_8">
|
||||||
|
<property name="title">
|
||||||
|
<string>252号升降台</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_10">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QPushButton" name="objective_table252_up_btn">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>上升</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QPushButton" name="objective_table252_down_btn">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>下降</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QPushButton" name="objective_table252_stop_btn">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>停止</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
<widget class="QGroupBox" name="groupBox_7">
|
<widget class="QGroupBox" name="groupBox_7">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>1号升降台</string>
|
<string>253号升降台</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_11">
|
<layout class="QGridLayout" name="gridLayout_11">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
@ -77,10 +110,10 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="2">
|
||||||
<widget class="QGroupBox" name="groupBox_6">
|
<widget class="QGroupBox" name="groupBox_6">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>2号升降台</string>
|
<string>254号升降台</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_9">
|
<layout class="QGridLayout" name="gridLayout_9">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
|
|||||||
@ -101,6 +101,17 @@ bool createDir(QString fullPath)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string removeFileExtension(std::string filename)
|
||||||
|
{
|
||||||
|
size_t lastDot = filename.find_last_of(".");
|
||||||
|
if (lastDot == std::string::npos) {
|
||||||
|
// 如果没有找到后缀,返回原字符串
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
return filename.substr(0, lastDot);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
QList<QString> getFileInfo(QString file)
|
QList<QString> getFileInfo(QString file)
|
||||||
{
|
{
|
||||||
QFileInfo fileInfo = QFileInfo(file);
|
QFileInfo fileInfo = QFileInfo(file);
|
||||||
@ -121,3 +132,28 @@ QList<QString> getFileInfo(QString file)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long long getNanosecondsSinceMidnight()
|
||||||
|
{
|
||||||
|
// 获取当前系统时间
|
||||||
|
auto now = std::chrono::system_clock::now();
|
||||||
|
|
||||||
|
// 转换为 time_t(秒级别的时间戳)
|
||||||
|
std::time_t t = std::chrono::system_clock::to_time_t(now);
|
||||||
|
std::tm local_tm = *std::localtime(&t); // 获取本地时间结构
|
||||||
|
|
||||||
|
// 将时间结构调整到当天 00:00:00
|
||||||
|
local_tm.tm_hour = 0;
|
||||||
|
local_tm.tm_min = 0;
|
||||||
|
local_tm.tm_sec = 0;
|
||||||
|
local_tm.tm_isdst = -1; // 让 mktime 自动判断夏令时
|
||||||
|
|
||||||
|
// 获取当天 00:00:00 的时间点
|
||||||
|
auto midnight = std::chrono::system_clock::from_time_t(std::mktime(&local_tm));
|
||||||
|
|
||||||
|
// 计算从当天 00:00:00 到现在的时间差
|
||||||
|
auto nanoseconds_since_midnight = std::chrono::duration_cast<std::chrono::nanoseconds>(now - midnight);
|
||||||
|
|
||||||
|
// 返回纳秒数
|
||||||
|
return nanoseconds_since_midnight.count();
|
||||||
|
}
|
||||||
|
|||||||
@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
QString getFileNameBaseOnTime();
|
QString getFileNameBaseOnTime();
|
||||||
|
|
||||||
@ -17,7 +19,10 @@ void bubbleSort(unsigned short * a, int n);
|
|||||||
void swap(unsigned short * a, unsigned short * b);
|
void swap(unsigned short * a, unsigned short * b);
|
||||||
|
|
||||||
bool createDir(QString fullPath);
|
bool createDir(QString fullPath);
|
||||||
|
std::string removeFileExtension(std::string filename);
|
||||||
|
|
||||||
QList<QString> getFileInfo(QString file);
|
QList<QString> getFileInfo(QString file);
|
||||||
|
|
||||||
|
long long getNanosecondsSinceMidnight();
|
||||||
|
|
||||||
#endif // UTILITY_TC_H
|
#endif // UTILITY_TC_H
|
||||||
|
|||||||
28
readme.txt
Normal file
28
readme.txt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
1、HPPA拼接
|
||||||
|
每条航线的开始帧的位置不一样,无法直接将相邻航线拼接一起,否则航向有错位。
|
||||||
|
1.1 步骤
|
||||||
|
(1)采集每帧的同时,获取线性平台的位置,并写入文件;
|
||||||
|
(2)根据位置信息匹配帧号,然后进行拼接;
|
||||||
|
1.2 存在的问题及解决办法
|
||||||
|
(1)马达库不知道是否能够支持20hz及以上的访问频率;
|
||||||
|
或者按照一定频率采集线性平台位置,通过时间进行插值获取每帧位置;
|
||||||
|
(2)列之间的重叠
|
||||||
|
通过一个可调参数进行旁向拼接设置;
|
||||||
|
1.3 拼接后裁剪
|
||||||
|
|
||||||
|
1.4 根据每个像素的xy坐标进行拼接:放弃
|
||||||
|
|
||||||
|
2、bug修复
|
||||||
|
(1)反射率图像条纹:白板和暗电流都采集30帧进行平均;
|
||||||
|
(2)轨迹2位小数
|
||||||
|
(3)速度输入接受小数
|
||||||
|
|
||||||
|
3、hppa升降桌无线控制模块
|
||||||
|
如果没有配置过,那么默认ip为http://192.168.1.254,且默认wifi以iris1开头,默认wifi密码为123456789。
|
||||||
|
配置网页为http://192.168.1.254/wificonfig.html,配置密码是licahk*******
|
||||||
|
|
||||||
|
如果已经配置为252,那么可用下面网址控制
|
||||||
|
http://192.168.1.252/stopnow
|
||||||
|
http://192.168.1.252/set_up
|
||||||
|
http://192.168.1.252/set_down
|
||||||
|
http://192.168.1.252/wificonfig.html
|
||||||
Reference in New Issue
Block a user