From 380e8042d9f376e2ad0c2047a41b58ce76c43a06 Mon Sep 17 00:00:00 2001
From: tangchao0503 <735056338@qq.com>
Date: Fri, 7 Feb 2025 16:25:21 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=201=E3=80=81=E6=9A=97=E7=94=B5?=
=?UTF-8?q?=E6=B5=81/=E7=99=BD=E6=9D=BF=E9=83=BD=E6=98=AF550=E5=B8=A7?=
=?UTF-8?q?=E5=B9=B3=E5=9D=87=EF=BC=8C=E9=87=87=E9=9B=86=E7=99=BD=E6=9D=BF?=
=?UTF-8?q?=E6=97=B6=E7=94=B5=E6=9C=BA=E4=BC=9A=E8=BF=90=E5=8A=A8=EF=BC=9B?=
=?UTF-8?q?=202=E3=80=81=E6=96=87=E4=BB=B6=E5=90=8D=E5=90=8E=E5=8A=A0bil?=
=?UTF-8?q?=E5=90=8E=E7=BC=80=EF=BC=9B=203=E3=80=81=E8=88=AA=E8=BF=B9?=
=?UTF-8?q?=E8=A7=84=E5=88=92=E5=B0=8F=E6=95=B0=E7=82=B9=E4=BB=8E2?=
=?UTF-8?q?=E4=BD=8D=E6=94=B9=E4=B8=BA5=E4=BD=8D=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
HPPA/HPPA.cpp | 35 ++++++++++++++++++++++--
HPPA/HPPA.h | 4 +++
HPPA/ImagerOperationBase.cpp | 50 +++++++++++++++++++++++++++++++---
HPPA/ImagerOperationBase.h | 3 +++
HPPA/PathPlan.cpp | 2 +-
HPPA/ResononNirImager.cpp | 52 +++++++++++++++++++++++++++++++++---
HPPA/about.ui | 2 +-
7 files changed, 137 insertions(+), 11 deletions(-)
diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp
index 2190cf0..99dc4e7 100644
--- a/HPPA/HPPA.cpp
+++ b/HPPA/HPPA.cpp
@@ -1662,6 +1662,10 @@ void HPPA::onconnect()
connect(this->ui.action_start_recording, SIGNAL(triggered()), this, SLOT(onStartRecordStep1()));
connect(this, SIGNAL(StartLoopSignal()), m_ForLoopControl, SLOT(startLoop()));
connect(this, SIGNAL(StartRecordSignal()), m_Imager, SLOT(start_record()));
+ connect(this, SIGNAL(RecordWhiteSignal()), m_Imager, SLOT(record_white()));
+ connect(this, SIGNAL(RecordDarlSignal()), m_Imager, SLOT(record_dark()));
+ connect(m_Imager, SIGNAL(RecordWhiteFinishSignal()), this, SLOT(recordWhiteFinish()));
+ connect(m_Imager, SIGNAL(RecordDarlFinishSignal()), this, SLOT(recordDarkFinish()));
connect(this->ui.actionOpenDirectory, SIGNAL(triggered()), this, SLOT(onActionOpenDirectory()));
@@ -1789,8 +1793,12 @@ void HPPA::onDark()
QMessageBox msgBox;
msgBox.setText(QString::fromLocal8Bit("ÇëÈ·±£¾µÍ·¸Ç¸ÇÉÏ£¡"));
msgBox.exec();
- m_Imager->record_dark();
+ emit RecordDarlSignal();
+}
+
+void HPPA::recordDarkFinish()
+{
ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
@@ -1799,9 +1807,32 @@ void HPPA::onReference()
QMessageBox msgBox;
msgBox.setText(QString::fromLocal8Bit("ÇëÈ·±£°×°å·ÅÖÃÕýÈ·£¡"));
msgBox.exec();
- m_Imager->record_white();
+ //ÒÆ¶¯xÂí´ï
+ if (!isMotorConnected(m_xMotor))
+ {
+ 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);
+ }
+
+ emit RecordWhiteSignal();
+}
+
+void HPPA::recordWhiteFinish()
+{
ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
+
+ //ÒÆ¶¯xÂí´ï
+ if (!isMotorConnected(m_xMotor))
+ {
+ //xÂí´ï·µ»Ø²É¼¯Ç°µÄλÖÃ
+ m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
+ m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
+ }
}
void HPPA::onPlotHyperspectralImageRgbImage()
diff --git a/HPPA/HPPA.h b/HPPA/HPPA.h
index de50f74..04e0dcd 100644
--- a/HPPA/HPPA.h
+++ b/HPPA/HPPA.h
@@ -256,7 +256,9 @@ public Q_SLOTS:
void onFocus2(int command);
void onAbout();
void onDark();
+ void recordDarkFinish();
void onReference();
+ void recordWhiteFinish();
void onStartRecordStep1();
void onStartRecordStep2(int lineNumber);
void onCreateTab(int trackNumber);
@@ -336,5 +338,7 @@ signals:
void StartRecordSignal();
void CopyFileThreadSignal(QString, QString);
+ void RecordWhiteSignal();
+ void RecordDarlSignal();
};
diff --git a/HPPA/ImagerOperationBase.cpp b/HPPA/ImagerOperationBase.cpp
index 23c02ac..a03121f 100644
--- a/HPPA/ImagerOperationBase.cpp
+++ b/HPPA/ImagerOperationBase.cpp
@@ -111,17 +111,59 @@ void ImagerOperationBase::record_dark()
{
std::cout << "²É¼¯°µµçÁ÷£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
imagerStartCollect();
- getFrame(dark);
+
+ unsigned int* dark_tmp = new unsigned int[m_FrameSize];
+ std::fill(dark_tmp, dark_tmp + m_FrameSize, 0);
+
+ int counter = 50;
+ for (size_t i = 0; i < counter; i++)
+ {
+ getFrame(dark);
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ dark_tmp[j] = dark[j] + dark_tmp[j];
+ }
+ }
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ dark[j] = (unsigned short)(dark_tmp[j] / counter);
+ }
+ delete[] dark_tmp;
+
imagerStopCollect();
m_HasDark = true;
+
+ emit RecordDarlFinishSignal();
}
void ImagerOperationBase::record_white()
{
- std::cout << "²É¼¯°µ°×°å£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
+ std::cout << "²É¼¯°×°å£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
imagerStartCollect();
- getFrame(white);
+
+ unsigned int* white_tmp = new unsigned int[m_FrameSize];
+ std::fill(white_tmp, white_tmp + m_FrameSize, 0);
+
+ int counter = 50;
+ for (size_t i = 0; i < counter; i++)
+ {
+ getFrame(white);
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ white_tmp[j] = white[j] + white_tmp[j];
+ }
+ }
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ white[j] = (unsigned short)(white_tmp[j] / counter);
+ }
+ delete[] white_tmp;
+
imagerStopCollect();
//°×°å¿Û°µµçÁ÷
@@ -141,6 +183,8 @@ void ImagerOperationBase::record_white()
}
m_HasWhite = true;
+
+ emit RecordWhiteFinishSignal();
}
void ImagerOperationBase::start_record()
diff --git a/HPPA/ImagerOperationBase.h b/HPPA/ImagerOperationBase.h
index 1674099..4aaecc4 100644
--- a/HPPA/ImagerOperationBase.h
+++ b/HPPA/ImagerOperationBase.h
@@ -97,6 +97,9 @@ signals:
void RecordFinishedSignal_WhenFrameNumberNotMeet();//²É¼¯Íê³ÉÐźţºÐèÒª²É¼¯µÄ×ÜÖ¡Êý£¨m_iFrameNumber£©Ã»Óвɼ¯Íê³É£¬ÖÐ;ֹͣ²É¼¯
void SpectralSignal(int);//·¢Éä1´ú±íÕýÔÚµ÷½¹£¬»æÖƹâÆ×£¬·¢Éä0±íʾµ÷½¹Íê³É£»
+ void RecordWhiteFinishSignal();
+ void RecordDarlFinishSignal();
+
void testImagerStatus();//±íʾ¿ÉÒÔ²âÊÔÏà»úÁ¬½Ó״̬£ºÊÇ·ñÁ¬½Ó£¬²¢·´Ó³µ½½çÃæÉÏ
};
diff --git a/HPPA/PathPlan.cpp b/HPPA/PathPlan.cpp
index d24aa68..1c40561 100644
--- a/HPPA/PathPlan.cpp
+++ b/HPPA/PathPlan.cpp
@@ -294,7 +294,7 @@ void PathPlan::onReadRecordLineFile_btn()
{
for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++)
{
- QTableWidgetItem* tmp = new QTableWidgetItem(QString::number(data[i * ui.recordLine_tableWidget->columnCount() + j], 10, 2));
+ QTableWidgetItem* tmp = new QTableWidgetItem(QString::number(data[i * ui.recordLine_tableWidget->columnCount() + j], 10, 5));
tmp->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui.recordLine_tableWidget->setItem(i, j, tmp);
}
diff --git a/HPPA/ResononNirImager.cpp b/HPPA/ResononNirImager.cpp
index 440173b..eac5d56 100644
--- a/HPPA/ResononNirImager.cpp
+++ b/HPPA/ResononNirImager.cpp
@@ -191,18 +191,60 @@ void ResononNirImager::record_dark()
std::cout << "²É¼¯°µµçÁ÷£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
reConnectImage();
imagerStartCollect();
- getFrame(dark);
+
+ unsigned int* dark_tmp = new unsigned int[m_FrameSize];
+ std::fill(dark_tmp, dark_tmp + m_FrameSize, 0);
+
+ int counter = 50;
+ for (size_t i = 0; i < counter; i++)
+ {
+ getFrame(dark);
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ dark_tmp[j] = dark[j] + dark_tmp[j];
+ }
+ }
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ dark[j] = (unsigned short)(dark_tmp[j] / counter);
+ }
+ delete[] dark_tmp;
+
imagerStopCollect();
m_HasDark = true;
+
+ emit RecordDarlFinishSignal();
}
void ResononNirImager::record_white()
{
- std::cout << "²É¼¯°µ°×°å£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
+ std::cout << "²É¼¯°×°å£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl;
reConnectImage();
imagerStartCollect();
- getFrame(white);
+
+ unsigned int* white_tmp = new unsigned int[m_FrameSize];
+ std::fill(white_tmp, white_tmp + m_FrameSize, 0);
+
+ int counter = 50;
+ for (size_t i = 0; i < counter; i++)
+ {
+ getFrame(white);
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ white_tmp[j] = white[j] + white_tmp[j];
+ }
+ }
+
+ for (size_t j = 0; j < m_FrameSize; j++)
+ {
+ white[j] = (unsigned short)(white_tmp[j] / counter);
+ }
+ delete[] white_tmp;
+
imagerStopCollect();
//°×°å¿Û°µµçÁ÷
@@ -222,6 +264,8 @@ void ResononNirImager::record_white()
}
m_HasWhite = true;
+
+ emit RecordWhiteFinishSignal();
}
void ResononNirImager::start_record()
@@ -243,7 +287,7 @@ void ResononNirImager::start_record()
FileOperation* fileOperation = new FileOperation();
string directory = fileOperation->getDirectoryFromString();
- string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter);
+ string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter)+".bil";
FILE* m_fImage = fopen(imgPath.c_str(), "w+b");
diff --git a/HPPA/about.ui b/HPPA/about.ui
index a4363c6..aea0e4f 100644
--- a/HPPA/about.ui
+++ b/HPPA/about.ui
@@ -70,7 +70,7 @@
- 版本:1.8.1
+ 版本:1.8.2