Files
HPPA/HPPA/FodisWindow.cpp
tangchao0503 6b63d28d2c add,山地所贡嘎山7:
优化
2026-07-22 10:31:12 +08:00

100 lines
3.3 KiB
C++

#include "FodisWindow.h"
#include "JinspFiberImagerConfig.h"
FodisWindow::FodisWindow(QWidget* parent)
: QDialog(parent)
{
ui.setupUi(this);
m_FiberImagerThread = new QThread();
m_JinspFiberImagerOperation = new JinspFiberImager(false, JinspFiberImagerConfig::instance().portName().toStdString(), "JINSP");
connect(m_JinspFiberImagerOperation, &JinspFiberImager::spectalCaptured, this, &FodisWindow::spectalCaptured);
connect(m_JinspFiberImagerOperation, &JinspFiberImager::startExposureSignal, this, &FodisWindow::startExposureSignal);
connect(m_JinspFiberImagerOperation, &JinspFiberImager::exposureCompleteSignal, this, &FodisWindow::exposureCompleteSignal);
m_JinspFiberImagerOperation->moveToThread(m_FiberImagerThread);
m_FiberImagerThread->start();
connect(ui.open_btn, &QPushButton::clicked, this, &FodisWindow::openFiberImager);
connect(ui.close_btn, &QPushButton::clicked, this, &FodisWindow::closeFiberImager);
connect(this, &FodisWindow::openFiberImagerSignal, m_JinspFiberImagerOperation, &JinspFiberImager::OpenFiberImagerAndRecord);
//connect(m_JinspFiberImagerOperation, &JinspFiberImager::CamOpenedSignal, this, &FodisWindow::onCamOpened);
//connect(m_JinspFiberImagerOperation, &JinspFiberImager::CamClosedSignal, this, &FodisWindow::onCamClosed);
//connect(m_JinspFiberImagerOperation, &JinspFiberImager::PlotSignal, this, &FodisWindow::PlotSpectralSignal);
//connect(m_JinspFiberImagerOperation, &JinspFiberImager::CamClosedSignal, this, &FodisWindow::FiberImagerClosedSignal);
connect(this->ui.dataFolderBtn, SIGNAL(clicked()), this, SLOT(onSelectDataFolder()));
// 初始化数据保存路径显示(从 AppSettings 恢复或使用默认)
ui.dataFolderLineEdit->setText(AppSettings::instance().depthCameraDataFolder());
setDataFolder(AppSettings::instance().FiberImagerDataFolder());
}
FodisWindow::~FodisWindow()
{
m_FiberImagerThread->quit();
m_FiberImagerThread->wait();
delete m_JinspFiberImagerOperation;
m_JinspFiberImagerOperation = nullptr;
}
void FodisWindow::onSelectDataFolder()
{
QString dir = QFileDialog::getExistingDirectory(this,
QString::fromLocal8Bit("选择数据保存路径"),
ui.dataFolderLineEdit->text());
setDataFolder(dir);
}
void FodisWindow::setDataFolder(QString dir)
{
if (!dir.isEmpty())
{
ui.dataFolderLineEdit->setText(dir);
AppSettings::instance().setFiberImagerDataFolder(dir);
}
}
void FodisWindow::setCaptureInterval(int captureIntervalSeconds)
{
m_JinspFiberImagerOperation->setCaptureInterval(captureIntervalSeconds);
}
void FodisWindow::openFiberImager()
{
openFiberImager_expose_record("pos_null");
}
void FodisWindow::openFiberImager_expose_record(QString posInfo)
{
if (!m_JinspFiberImagerOperation->getRecordStatus())
{
emit openFiberImagerSignal(posInfo);
}
}
void FodisWindow::onCamOpened()
{
ui.open_btn->setEnabled(false);
ui.close_btn->setEnabled(true);
ui.open_btn->setText(QString::fromLocal8Bit("已打开"));
}
void FodisWindow::closeFiberImager()
{
m_JinspFiberImagerOperation->disconnectFiberSpectrometer();
}
void FodisWindow::onCamClosed()
{
ui.open_btn->setEnabled(true);
ui.close_btn->setEnabled(false);
ui.open_btn->setText(QString::fromLocal8Bit("打 开"));
}