add:
山地所贡嘎山3:
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
#include "FodisWindow.h"
|
||||
#include "JinspFiberImagerConfig.h"
|
||||
|
||||
FodisWindow::FodisWindow(QWidget* parent)
|
||||
: QDialog(parent)
|
||||
@ -6,7 +7,8 @@ FodisWindow::FodisWindow(QWidget* parent)
|
||||
ui.setupUi(this);
|
||||
|
||||
m_FiberImagerThread = new QThread();
|
||||
m_JinspFiberImagerOperation = new JinspFiberImager(false, "COM9", "JINSP");
|
||||
m_JinspFiberImagerOperation = new JinspFiberImager(false, JinspFiberImagerConfig::instance().portName().toStdString(), "JINSP");
|
||||
connect(m_JinspFiberImagerOperation, &JinspFiberImager::spectalCaptured, this, &FodisWindow::spectalCaptured);
|
||||
m_JinspFiberImagerOperation->moveToThread(m_FiberImagerThread);
|
||||
m_FiberImagerThread->start();
|
||||
|
||||
|
||||
@ -42,6 +42,8 @@ signals:
|
||||
void PlotSpectralSignal();
|
||||
void FiberImagerClosedSignal();
|
||||
|
||||
void spectalCaptured(DeviceAttribute attribute, DataFrame dataFrame);
|
||||
|
||||
private:
|
||||
Ui::FodisWindow ui;
|
||||
QThread* m_FiberImagerThread;
|
||||
|
||||
@ -455,6 +455,44 @@ HPPA::HPPA(QWidget* parent)
|
||||
m_carousel->addWidget(sa_SingleLensReflexCamera);
|
||||
m_carousel->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
QChartView * m_FiberImagerChartView = new QChartView();
|
||||
m_FiberImagerChartView->setRenderHint(QPainter::Antialiasing);
|
||||
m_FiberImagerChartView->setStyleSheet(R"(
|
||||
background: #0D1233;
|
||||
)");
|
||||
|
||||
m_FiberImagerChart = new QChart();
|
||||
m_FiberImagerChart->setBackgroundBrush(QColor("#0D1233"));
|
||||
m_FiberImagerChart->legend()->hide();
|
||||
//m_FiberImagerChart->setTitle("Simple line chart example");
|
||||
|
||||
QValueAxis* axisX_FiberImagerChart = new QValueAxis();
|
||||
QValueAxis* axisY_FiberImagerChart = new QValueAxis();
|
||||
setAxis(axisX, axisY);
|
||||
m_FiberImagerChart->addAxis(axisX_FiberImagerChart, Qt::AlignBottom);
|
||||
m_FiberImagerChart->addAxis(axisY_FiberImagerChart, Qt::AlignLeft);
|
||||
m_FiberImagerChartView->setChart(m_FiberImagerChart);
|
||||
|
||||
QScrollArea* sa_FiberImager = new QScrollArea();
|
||||
sa_FiberImager->setObjectName("sa_FiberImager");
|
||||
sa_FiberImager->setStyleSheet(R"(
|
||||
border: none;
|
||||
background-color: #0D1233;
|
||||
)");
|
||||
QGridLayout* gridLayout_sa_FiberImager = new QGridLayout(sa_FiberImager);
|
||||
gridLayout_sa_FiberImager->setSpacing(6);
|
||||
gridLayout_sa_FiberImager->setObjectName(QString::fromUtf8("gridLayout_sa_FiberImager"));
|
||||
gridLayout_sa_FiberImager->setVerticalSpacing(0);
|
||||
gridLayout_sa_FiberImager->setContentsMargins(0, 0, 0, 0);
|
||||
gridLayout_sa_FiberImager->addWidget(m_FiberImagerChartView);
|
||||
|
||||
m_carousel->addWidget(sa_FiberImager);
|
||||
m_carousel->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
|
||||
|
||||
|
||||
m_carousel->play();
|
||||
|
||||
gridLayout_carouselContainer->addWidget(m_carousel);
|
||||
@ -1021,6 +1059,7 @@ void HPPA::initControlTabwidget()
|
||||
|
||||
//is11
|
||||
m_fodisWindow = new FodisWindow(this);
|
||||
connect(m_fodisWindow, &FodisWindow::spectalCaptured, this, &HPPA::showFiberImagerSpectral);
|
||||
m_fodisWindow->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_fodisWindow, QString::fromLocal8Bit("FODIS"));
|
||||
|
||||
@ -2084,6 +2123,37 @@ void HPPA::setAxis(QValueAxis* axisX, QValueAxis* axisY)
|
||||
}
|
||||
}
|
||||
|
||||
void HPPA::showFiberImagerSpectral(DeviceAttribute attribute, DataFrame dataFrame)
|
||||
{
|
||||
try
|
||||
{
|
||||
QLineSeries* series = new QLineSeries();
|
||||
|
||||
const int count = qMin(attribute.iPixels, 4096);
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
double wavelength = attribute.fWaveLengthInNM[i];
|
||||
double intensity = dataFrame.lData[i];
|
||||
series->append(wavelength, intensity);
|
||||
}
|
||||
|
||||
series->setPen(QPen(QColor("#FF928A"), 2));
|
||||
|
||||
m_FiberImagerChart->removeAllSeries();
|
||||
m_FiberImagerChart->addSeries(series);
|
||||
m_FiberImagerChart->createDefaultAxes();
|
||||
|
||||
QValueAxis* axisX = qobject_cast<QValueAxis*>(m_FiberImagerChart->axisX());
|
||||
QValueAxis* axisY = qobject_cast<QValueAxis*>(m_FiberImagerChart->axisY());
|
||||
|
||||
setAxis(axisX, axisY);
|
||||
}
|
||||
catch (const std::exception&)
|
||||
{
|
||||
std::cout << "显示光谱有错误!" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void HPPA::timerEvent(QTimerEvent* event)
|
||||
{
|
||||
}
|
||||
|
||||
@ -356,6 +356,9 @@ private:
|
||||
void showQuickPreview(int fileNumber, const QString& filePath, const cv::Mat& rgbImage);
|
||||
|
||||
|
||||
QChart* m_FiberImagerChart;
|
||||
void showFiberImagerSpectral(DeviceAttribute attribute, DataFrame dataFrame);
|
||||
|
||||
public Q_SLOTS:
|
||||
void onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath);
|
||||
void focusPlotSpectralImg(int state);
|
||||
|
||||
@ -126,6 +126,7 @@
|
||||
<ClCompile Include="imager_base.cpp" />
|
||||
<ClCompile Include="irisximeaimager.cpp" />
|
||||
<ClCompile Include="JinspFiberImager.cpp" />
|
||||
<ClCompile Include="JinspFiberImagerConfig.cpp" />
|
||||
<ClCompile Include="LayerTree.cpp" />
|
||||
<ClCompile Include="LayerTreeGroupNode.cpp" />
|
||||
<ClCompile Include="LayerTreeImageNode.cpp" />
|
||||
|
||||
@ -13,6 +13,9 @@ JinspFiberImager::JinspFiberImager(bool bIsUSBMode, std::string ucPortNumber, st
|
||||
m_record = false;
|
||||
|
||||
m_captureIntervalMilliseconds = 5 * 1000;
|
||||
|
||||
qRegisterMetaType<DeviceAttribute>("DeviceAttribute");
|
||||
qRegisterMetaType<DataFrame>("DataFrame");
|
||||
}
|
||||
|
||||
JinspFiberImager::~JinspFiberImager()
|
||||
@ -162,6 +165,8 @@ void JinspFiberImager::recordTarget(int recordTimes, QString path)
|
||||
m_IntegratingSphereData.lData[i] = m_IntegratingSphereData.lData[i] / recordTimes;
|
||||
}
|
||||
|
||||
//将m_IntegratingSphereData通过信号发送
|
||||
emit spectalCaptured(attribute, m_IntegratingSphereData);
|
||||
|
||||
//输出到csv
|
||||
QDateTime curDateTime = QDateTime::currentDateTime();
|
||||
|
||||
@ -64,4 +64,5 @@ public slots:
|
||||
|
||||
signals:
|
||||
void sendExposureTimeSignal(int exposureTime);
|
||||
void spectalCaptured(DeviceAttribute attribute, DataFrame dataFrame);
|
||||
};
|
||||
|
||||
85
HPPA/JinspFiberImagerConfig.cpp
Normal file
85
HPPA/JinspFiberImagerConfig.cpp
Normal file
@ -0,0 +1,85 @@
|
||||
#include "JinspFiberImagerConfig.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QFile>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QDebug>
|
||||
|
||||
const QString JinspFiberImagerConfig::kDefaultPortName = QStringLiteral("COM9");
|
||||
const QString JinspFiberImagerConfig::kConfigFileName = QStringLiteral("jinsp_fiber_imager_config.json");
|
||||
|
||||
JinspFiberImagerConfig::JinspFiberImagerConfig()
|
||||
: m_configFilePath(QCoreApplication::applicationDirPath() + "/" + kConfigFileName)
|
||||
, m_portName(kDefaultPortName)
|
||||
{
|
||||
loadConfig();
|
||||
}
|
||||
|
||||
JinspFiberImagerConfig& JinspFiberImagerConfig::instance()
|
||||
{
|
||||
static JinspFiberImagerConfig s;
|
||||
return s;
|
||||
}
|
||||
|
||||
QString JinspFiberImagerConfig::portName() const
|
||||
{
|
||||
return m_portName;
|
||||
}
|
||||
|
||||
void JinspFiberImagerConfig::setPortName(const QString& port)
|
||||
{
|
||||
if (m_portName != port)
|
||||
{
|
||||
m_portName = port;
|
||||
saveConfig();
|
||||
}
|
||||
}
|
||||
|
||||
void JinspFiberImagerConfig::loadConfig()
|
||||
{
|
||||
QFile file(m_configFilePath);
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
{
|
||||
qDebug() << "JinspFiberImagerConfig: No config file found, using default port:" << kDefaultPortName;
|
||||
saveConfig();
|
||||
return;
|
||||
}
|
||||
|
||||
QByteArray jsonData = file.readAll();
|
||||
file.close();
|
||||
|
||||
QJsonParseError parseError;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(jsonData, &parseError);
|
||||
if (parseError.error != QJsonParseError::NoError)
|
||||
{
|
||||
qWarning() << "JinspFiberImagerConfig: JSON parse error:" << parseError.errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonObject obj = doc.object();
|
||||
if (obj.contains("portName"))
|
||||
{
|
||||
m_portName = obj["portName"].toString(kDefaultPortName);
|
||||
}
|
||||
}
|
||||
|
||||
void JinspFiberImagerConfig::saveConfig()
|
||||
{
|
||||
QJsonObject obj;
|
||||
obj["portName"] = m_portName;
|
||||
|
||||
QJsonDocument doc(obj);
|
||||
|
||||
QFile file(m_configFilePath);
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||
{
|
||||
qWarning() << "JinspFiberImagerConfig: Failed to open config file for writing:" << m_configFilePath;
|
||||
return;
|
||||
}
|
||||
|
||||
file.write(doc.toJson(QJsonDocument::Indented));
|
||||
file.close();
|
||||
|
||||
qDebug() << "JinspFiberImagerConfig: Config saved to" << m_configFilePath;
|
||||
}
|
||||
26
HPPA/JinspFiberImagerConfig.h
Normal file
26
HPPA/JinspFiberImagerConfig.h
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
|
||||
class JinspFiberImagerConfig
|
||||
{
|
||||
public:
|
||||
static JinspFiberImagerConfig& instance();
|
||||
|
||||
QString portName() const;
|
||||
void setPortName(const QString& port);
|
||||
|
||||
static const QString kDefaultPortName;
|
||||
static const QString kConfigFileName;
|
||||
|
||||
private:
|
||||
JinspFiberImagerConfig();
|
||||
JinspFiberImagerConfig(const JinspFiberImagerConfig&) = delete;
|
||||
JinspFiberImagerConfig& operator=(const JinspFiberImagerConfig&) = delete;
|
||||
|
||||
QString m_configFilePath;
|
||||
QString m_portName;
|
||||
|
||||
void loadConfig();
|
||||
void saveConfig();
|
||||
};
|
||||
Reference in New Issue
Block a user