消除git中hppa.cpp中文乱码
This commit is contained in:
342
HPPA/HPPA.cpp
342
HPPA/HPPA.cpp
@ -1,4 +1,4 @@
|
||||
#include "stdafx.h"
|
||||
#include "stdafx.h"
|
||||
//#include <afx.h>
|
||||
|
||||
#include <exception>
|
||||
@ -17,7 +17,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
QCoreApplication::setOrganizationDomain("iris.com");
|
||||
QCoreApplication::setApplicationName("HPPA");
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
//配置文件:如果没有,就创建配置文件
|
||||
string HPPACfgFile = getPathofEXE() + "\\HPPA.cfg";
|
||||
mConfigfile.setConfigfilePath(HPPACfgFile);
|
||||
if (!mConfigfile.isConfigfileExist())
|
||||
@ -48,7 +48,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
int SubdivisionMultiples_y;
|
||||
mConfigfile.getYMotorParm(StepAnglemar_y, Lead_y, SubdivisionMultiples_y, ScaleFactor_y);*/
|
||||
|
||||
//״̬<EFBFBD><EFBFBD>
|
||||
//状态栏
|
||||
//xmotor_state_label1 = new QLabel();
|
||||
//ymotor_state_label1 = new QLabel();
|
||||
//xmotor_state_label1->setText("xMotor");
|
||||
@ -72,17 +72,17 @@ HPPA::HPPA(QWidget* parent)
|
||||
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD>
|
||||
//光谱仪操作
|
||||
m_Imager = nullptr;
|
||||
m_RecordState = 0;
|
||||
connect(this->ui.action_connect_imager, SIGNAL(triggered()), this, SLOT(onconnect()));//<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>onconnect<EFBFBD><EFBFBD>
|
||||
connect(this->ui.action_connect_imager, SIGNAL(triggered()), this, SLOT(onconnect()));//信号与槽:连接相机,相机操作相关信号与槽绑定放在函数onconnect中
|
||||
|
||||
//<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>slider<EFBFBD><EFBFBD><EFBFBD>źźͲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>connectǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>setMinimum<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>slider<EFBFBD><EFBFBD>ֵ
|
||||
//设置相机可用帧率范围:这些设置必须在slider的信号和槽连接connect前,否则setMinimum会改变slider的值
|
||||
ui.FramerateSlider->setMinimum(1);
|
||||
ui.FramerateSlider->setMaximum(250);
|
||||
ui.GainSlider->setMinimum(0);
|
||||
ui.GainSlider->setMaximum(24);
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//相机参数控件设置为不可用
|
||||
frame_number->setEnabled(false);
|
||||
|
||||
ui.framerate_lineEdit->setEnabled(false);
|
||||
@ -98,7 +98,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
widthScale = 1;
|
||||
heightScale = 1;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
||||
//马达位置模拟
|
||||
//connect(ui.graphicsView->imager, SIGNAL(leftMouseButtonPressed(int, int)), this, SLOT(onimagerSimulatorMove(int, int)));
|
||||
|
||||
initPanelToolbar();
|
||||
@ -160,7 +160,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
//dock_layers->setMaximumHeight(498);
|
||||
|
||||
|
||||
//<EFBFBD>߹<EFBFBD><EFBFBD>ײ鿴
|
||||
//高光谱查看
|
||||
QDockWidget* dock_hyperimgViewer = new CustomDockWidgetBase(QString::fromLocal8Bit("hyimgViewer"), this);
|
||||
dock_hyperimgViewer->setObjectName("hyimgViewer");
|
||||
|
||||
@ -173,14 +173,14 @@ HPPA::HPPA(QWidget* parent)
|
||||
gridLayout_hyperimgViewer->setContentsMargins(1, 2, 1, 2);
|
||||
|
||||
m_imageViewerTabWidget = new QTabWidget();
|
||||
//m_imageViewerTabWidget->tabBar()->setFixedHeight(40);//û<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>qss<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø߶Ȳ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_imageViewerTabWidget->clear();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>棬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>tab
|
||||
//m_imageViewerTabWidget->tabBar()->setFixedHeight(40);//没有效果,在qss中设置高度才有效果,为啥????
|
||||
m_imageViewerTabWidget->clear();//必须放在最前面,首先删除所有的tab
|
||||
QToolButton* maxButton = new QToolButton();
|
||||
maxButton->setIcon(style()->standardIcon(QStyle::SP_TitleBarMaxButton));
|
||||
connect(maxButton, SIGNAL(clicked()), dock_hyperimgViewer, SLOT(toggleMaximize()));
|
||||
m_imageViewerTabWidget->setCornerWidget(maxButton, Qt::TopRightCorner);
|
||||
//onCreateTab(0);
|
||||
//m_imageViewerTabWidget->setTabsClosable(true);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>йرհ<EFBFBD>ť
|
||||
//m_imageViewerTabWidget->setTabsClosable(true);//这样每页都会有关闭按钮
|
||||
connect(m_imageViewerTabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabWidgetCurrentChanged(int)));
|
||||
m_imageViewerTabWidget->setStyleSheet(R"(
|
||||
QTabBar::tab {
|
||||
@ -283,8 +283,8 @@ HPPA::HPPA(QWidget* parent)
|
||||
QWidget* tmp6 = new QWidget();
|
||||
dock_hyperimgViewer->setTitleBarWidget(tmp6);
|
||||
|
||||
//<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_dock_carousel = new CustomDockWidgetBase(QString::fromLocal8Bit("<EFBFBD>ֲ<EFBFBD>"), this);
|
||||
//轮播看板
|
||||
m_dock_carousel = new CustomDockWidgetBase(QString::fromLocal8Bit("轮播"), this);
|
||||
m_dock_carousel->setObjectName("mDockCarousel");
|
||||
m_dock_carousel->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
mPanelMenu->addAction(m_dock_carousel->toggleViewAction());
|
||||
@ -353,14 +353,14 @@ HPPA::HPPA(QWidget* parent)
|
||||
|
||||
m_dock_carousel->setWidget(carouselContainer);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD>
|
||||
ui.mDockWidgetSpectrometer->setTile(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
//控制看板
|
||||
ui.mDockWidgetSpectrometer->setTile(QString::fromLocal8Bit("控制"));
|
||||
//ui.mDockWidgetSpectrometer->show();
|
||||
initControlTabwidget();
|
||||
m_tabManager = new TabManager(ui.controlTabWidget, this);
|
||||
|
||||
//3Dģ<EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
ui.mDockWidgetSimulator->setTile(QString::fromLocal8Bit("3Dģ<EFBFBD><EFBFBD>"));
|
||||
//3D模型看板
|
||||
ui.mDockWidgetSimulator->setTile(QString::fromLocal8Bit("3D模型"));
|
||||
//ui.mDockWidgetSimulator->show();
|
||||
|
||||
m_view3DModelManager = new View3DModelManager(this);
|
||||
@ -396,7 +396,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
|
||||
ui.mDockWidgetSimulator->setWidget(modelWidgetContainer);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD>
|
||||
//看板排版
|
||||
splitDockWidget(dock_layers, dock_hyperimgViewer, Qt::Horizontal);
|
||||
splitDockWidget(dock_hyperimgViewer, m_dock_carousel, Qt::Horizontal);
|
||||
|
||||
@ -413,26 +413,26 @@ HPPA::HPPA(QWidget* parent)
|
||||
QMainWindow::separator{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: #040125; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
/*border: 1px solid #808080;*/ /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ߿<EFBFBD> */
|
||||
background: #040125; /* 可以添加背景色 */
|
||||
/*border: 1px solid #808080;*/ /* 可以添加边框 */
|
||||
}
|
||||
|
||||
QDockWidget {
|
||||
border: 2px solid #2a347a; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>߿<EFBFBD> */
|
||||
background-color: red; /* <EFBFBD><EFBFBD><EFBFBD>屳<EFBFBD><EFBFBD>ɫ */
|
||||
color: white; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
border: 2px solid #2a347a; /* 深蓝色边框 */
|
||||
background-color: red; /* 主体背景色 */
|
||||
color: white; /* 标题文字颜色 */
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* 标题栏 */
|
||||
QDockWidget::title {
|
||||
background-color: #0E1C4C; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
text-align: left; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD> */
|
||||
background-color: #0E1C4C; /* 标题栏背景色 */
|
||||
text-align: left; /* 标题文字居中 */
|
||||
|
||||
/*padding: 4px;*/
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DockWidget <EFBFBD>Ĺرհ<EFBFBD>ť<EFBFBD><EFBFBD>ʽ */
|
||||
/* 可选:控制 DockWidget 的关闭按钮样式 */
|
||||
QDockWidget::close-button, QDockWidget::float-button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
@ -471,7 +471,7 @@ HPPA::HPPA(QWidget* parent)
|
||||
|
||||
void HPPA::initMenubarToolbar()
|
||||
{
|
||||
//<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//自定义菜单栏和工具栏
|
||||
QWidget* menuWidget = new WidgetWithBackgroundPicture();
|
||||
//menuWidget->setFixedWidth(200);
|
||||
menuWidget->setFixedHeight(66);
|
||||
@ -488,28 +488,28 @@ void HPPA::initMenubarToolbar()
|
||||
}
|
||||
QMenuBar::item {
|
||||
background: transparent;
|
||||
color: white; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
color: white; /* 根据你的背景调整文字颜色 */
|
||||
padding: 4px 8px;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
QMenuBar::item:selected {
|
||||
background: rgba(255, 255, 255, 50); /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
background: rgba(255, 255, 255, 50); /* 轻微高亮 */
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background-color: #0A1245; /* <EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
border: 1px solid gray; /* <EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD>ʽ */
|
||||
color: white; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
background-color: #0A1245; /* 菜单背景色 */
|
||||
border: 1px solid gray; /* 可选,边框样式 */
|
||||
color: white; /* 根据你的背景调整文字颜色 */
|
||||
}
|
||||
QMenu::item:selected {
|
||||
background-color: rgba(255, 255, 255, 50); /* ѡ<EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
color: white; /* ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ */
|
||||
background-color: rgba(255, 255, 255, 50); /* 选中时的背景色 */
|
||||
color: white; /* 选中项字体颜色,可选 */
|
||||
}
|
||||
)");
|
||||
|
||||
hLayout_menuWidget->addStretch();
|
||||
QPushButton* closeBtn = new QPushButton(QString::fromLocal8Bit("<EFBFBD>˳<EFBFBD>ƽ̨"));
|
||||
QPushButton* closeBtn = new QPushButton(QString::fromLocal8Bit("退出平台"));
|
||||
closeBtn->setStyleSheet(R"(
|
||||
QPushButton {
|
||||
background: #002CE0;
|
||||
@ -535,7 +535,7 @@ void HPPA::initMenubarToolbar()
|
||||
toolBar->setAutoFillBackground(false);
|
||||
toolBar->setIconSize(QSize(56, 56));
|
||||
toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
//<EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QLineEdit
|
||||
//在工具栏上添加输入框QLineEdit
|
||||
frame_number = new QLineEdit(ui.mainToolBar);
|
||||
frame_number->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
|
||||
frame_number->setMaximumWidth(100);
|
||||
@ -553,7 +553,7 @@ void HPPA::initMenubarToolbar()
|
||||
ui.action_focus->setIcon(QIcon(".//icon//all//focus.png"));
|
||||
ui.action_dark->setIcon(QIcon(".//icon//all//dark.png"));
|
||||
ui.action_reference->setIcon(QIcon(".//icon//all//reference.png"));
|
||||
// ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 使用样式表设置透明背景
|
||||
toolBar->setStyleSheet(R"(
|
||||
QToolBar {
|
||||
background: #0D1233;/*transparent*/
|
||||
@ -562,12 +562,12 @@ void HPPA::initMenubarToolbar()
|
||||
}
|
||||
QToolButton {
|
||||
background: transparent;
|
||||
color: white; /* <EFBFBD>ɸ<EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ */
|
||||
color: white; /* 可根据背景调整文字颜色 */
|
||||
padding: 4px;
|
||||
margin: 0 0 0 6px;
|
||||
}
|
||||
QToolButton:hover {
|
||||
background: rgba(255,255,255,50); /* <EFBFBD><EFBFBD>ͣʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
background: rgba(255,255,255,50); /* 悬停时轻微高亮 */
|
||||
}
|
||||
)");
|
||||
|
||||
@ -582,48 +582,48 @@ void HPPA::initMenubarToolbar()
|
||||
|
||||
void HPPA::initControlTabwidget()
|
||||
{
|
||||
//rgb<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//rgb相机
|
||||
m_RgbCameraThread = new QThread();
|
||||
m_RgbCamera = new RgbCameraOperation();
|
||||
m_RgbCamera->moveToThread(m_RgbCameraThread);
|
||||
m_RgbCameraThread->start();
|
||||
connect(ui.open_rgb_camera_btn, SIGNAL(clicked()), m_RgbCamera, SLOT(OpenCamera()));//ʹ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD>̣߳<EFBFBD>ui<EFBFBD>̣߳<EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ <20><> <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>濨<EFBFBD><E6BFA8>
|
||||
connect(ui.open_rgb_camera_btn, SIGNAL(clicked()), m_RgbCamera, SLOT(OpenCamera()));//使用信号通知主线程(ui线程)刷新视频 → 成功,但是界面卡顿
|
||||
connect(m_RgbCamera, SIGNAL(PlotSignal()), this, SLOT(onPlotRgbImage()));
|
||||
|
||||
//m_RgbCamera->setCallback(onPlotRgbImage);
|
||||
//connect(this->ui.open_rgb_camera_btn, SIGNAL(clicked()), m_RgbCamera, SLOT(OpenCamera_callback()));//ʹ<EFBFBD>ûص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<EFBFBD>ui<EFBFBD>̣߳<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>Ƶ <20><> ʧ<><CAA7>
|
||||
//connect(this->ui.open_rgb_camera_btn, SIGNAL(clicked()), m_RgbCamera, SLOT(OpenCamera_callback()));//使用回调函数来刷新主线程(ui线程)上的视频 → 失败
|
||||
|
||||
connect(ui.close_rgb_camera_btn, SIGNAL(clicked()), this, SLOT(onCloseRgbCamera()));//<EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
connect(ui.close_rgb_camera_btn, SIGNAL(clicked()), this, SLOT(onCloseRgbCamera()));//关闭相机
|
||||
connect(m_RgbCamera, SIGNAL(CamClosed()), this, SLOT(onClearLabel()));
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dock
|
||||
//升降桌dock
|
||||
m_adt = new adjustTable();
|
||||
m_adt->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_adt, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.controlTabWidget->addTab(m_adt, QString::fromLocal8Bit("升降桌"));
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//电源控制
|
||||
m_pc = new PowerControl();
|
||||
m_pc->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_pc, QString::fromLocal8Bit("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.controlTabWidget->addTab(m_pc, QString::fromLocal8Bit("电源控制"));
|
||||
|
||||
//<EFBFBD><EFBFBD>е<EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//机械臂控制
|
||||
m_rac = new RobotArmControl();
|
||||
connect(m_rac->robotController, SIGNAL(hsiRecordSignal(int)), this, SLOT(recordFromRobotArm(int)));
|
||||
m_rac->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_rac, QString::fromLocal8Bit("<EFBFBD><EFBFBD>е<EFBFBD>ۿ<EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.controlTabWidget->addTab(m_rac, QString::fromLocal8Bit("机械臂控制"));
|
||||
|
||||
//1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//1轴马达控制
|
||||
m_omc = new OneMotorControl();
|
||||
m_omc->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_omc, QString::fromLocal8Bit("1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.controlTabWidget->addTab(m_omc, QString::fromLocal8Bit("1轴马达控制"));
|
||||
|
||||
//2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//2轴马达控制
|
||||
m_tmc = new TwoMotorControl(this);
|
||||
connect(m_tmc, SIGNAL(startLineNumSignal(int)), this, SLOT(onCreateTab(int)));
|
||||
connect(m_tmc, SIGNAL(sequenceComplete()), this, SLOT(onsequenceComplete()));
|
||||
m_tmc->setWindowFlags(Qt::Widget);
|
||||
ui.controlTabWidget->addTab(m_tmc, QString::fromLocal8Bit("2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.controlTabWidget->addTab(m_tmc, QString::fromLocal8Bit("2轴控制"));
|
||||
}
|
||||
|
||||
void HPPA::recordFromRobotArm(int fileCounter)
|
||||
@ -634,7 +634,7 @@ void HPPA::recordFromRobotArm(int fileCounter)
|
||||
{
|
||||
m_Imager->setRecordControlState(false);
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
//qDebug() << "recordFromRobotArm: 1111111111111111111111";
|
||||
|
||||
@ -649,7 +649,7 @@ void HPPA::recordFromRobotArm(int fileCounter)
|
||||
onCreateTab(fileCounter - 1);
|
||||
emit StartRecordSignal();
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集中"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||
//qDebug() << "recordFromRobotArm: 2222222222222222222222";
|
||||
}
|
||||
@ -664,11 +664,11 @@ void HPPA::createActionGroups()
|
||||
mImagerGroup->addAction(ui.mActionPica_NIR);
|
||||
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 读取上次选择的结果
|
||||
QSettings settings;
|
||||
QString lastSelectedAction = settings.value("LastSelectedImagerAction").toString();
|
||||
|
||||
// <EFBFBD>ָ<EFBFBD><EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 恢复上次选择的结果
|
||||
if (lastSelectedAction == "mActionPica_L")
|
||||
{
|
||||
ui.mActionPica_L->setChecked(true);
|
||||
@ -703,11 +703,11 @@ void HPPA::createMoveplatformActionGroup()
|
||||
moveplatformActionGroup->addAction(ui.mAction_1AxisMotor);
|
||||
moveplatformActionGroup->addAction(ui.mAction_2AxisMotor_new);
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 读取上次选择的结果
|
||||
QSettings settings;
|
||||
QString lastSelectedAction = settings.value("LastSelectedMoveplatform").toString();
|
||||
|
||||
// <EFBFBD>ָ<EFBFBD><EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 恢复上次选择的结果
|
||||
if (lastSelectedAction == "mAction_is_no_motor")
|
||||
{
|
||||
ui.mAction_is_no_motor->setChecked(true);
|
||||
@ -746,16 +746,16 @@ HPPA::~HPPA()
|
||||
|
||||
if (m_Imager != nullptr)
|
||||
{
|
||||
//m_Imager->~ResononNirImager();//<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
//m_Imager->~ResononNirImager();//释放资源
|
||||
delete m_Imager;
|
||||
}
|
||||
}
|
||||
|
||||
void HPPA::initPanelToolbar()
|
||||
{
|
||||
mPanelMenu = new QMenu(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);//create panel menu
|
||||
mPanelMenu = new QMenu(QString::fromLocal8Bit("面板"), this);//create panel menu
|
||||
mPanelMenu->setObjectName(QStringLiteral("mPanelMenu"));
|
||||
mToolbarMenu = new QMenu(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);//create toolbar menu
|
||||
mToolbarMenu = new QMenu(QString::fromLocal8Bit("工具栏"), this);//create toolbar menu
|
||||
mToolbarMenu->setObjectName(QStringLiteral("mToolbarMenu"));
|
||||
|
||||
ui.mWindowsMenu->addSeparator();
|
||||
@ -775,11 +775,11 @@ void HPPA::createScenarioActionGroup()
|
||||
m_ScenarioActionGroup->addAction(ui.mActionOneMotorScenario);
|
||||
m_ScenarioActionGroup->addAction(ui.mActionPlantPhenotypeScenario);
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 读取上次选择的结果
|
||||
QSettings settings;
|
||||
QString lastSelectedAction = settings.value("LastSelectedScenario").toString();
|
||||
|
||||
// <EFBFBD>ָ<EFBFBD><EFBFBD>ϴ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 恢复上次选择的结果
|
||||
if (lastSelectedAction == "mActionOneMotorScenario")
|
||||
{
|
||||
ui.mActionOneMotorScenario->setChecked(true);
|
||||
@ -809,17 +809,17 @@ void HPPA::createOneMotorScenario()
|
||||
//if (ui.mActionOneMotorScenario->isChecked())
|
||||
// return;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DockWidget
|
||||
//清除所有DockWidget
|
||||
//QList<QDockWidget*> dockWidgets = this->findChildren<QDockWidget*>();
|
||||
//for (QDockWidget* dock : dockWidgets)
|
||||
//{
|
||||
// dock->hide();
|
||||
//}
|
||||
|
||||
//<EFBFBD>ڲ˵<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨
|
||||
//在菜单中选择移动平台
|
||||
ui.mAction_1AxisMotor->setChecked(true);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>½ǿ<EFBFBD><EFBFBD><EFBFBD>tab
|
||||
//右下角控制tab
|
||||
m_tabManager->hideTab(ui.rgbCameraWidget);
|
||||
m_tabManager->hideTab(m_adt);
|
||||
m_tabManager->hideTab(m_pc);
|
||||
@ -832,7 +832,7 @@ void HPPA::createOneMotorScenario()
|
||||
|
||||
m_view3DModelManager->switchScenario(View3DModelManager::ScenarioType::OneMotor);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD>ֲ<EFBFBD>
|
||||
//右上角轮播
|
||||
|
||||
}
|
||||
|
||||
@ -846,10 +846,10 @@ void HPPA::createPlantPhenotypeScenario()
|
||||
//if (ui.mActionPlantPhenotypeScenario->isChecked())
|
||||
// return;
|
||||
|
||||
//<EFBFBD>ڲ˵<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨
|
||||
//在菜单中选择移动平台
|
||||
ui.mAction_2AxisMotor_new->setChecked(true);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>½ǿ<EFBFBD><EFBFBD><EFBFBD>tab
|
||||
//右下角控制tab
|
||||
m_tabManager->hideTab(m_rac);
|
||||
m_tabManager->hideTab(m_omc);
|
||||
|
||||
@ -862,15 +862,15 @@ void HPPA::createPlantPhenotypeScenario()
|
||||
|
||||
m_view3DModelManager->switchScenario(View3DModelManager::ScenarioType::PlantPhenotype);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD>ֲ<EFBFBD>
|
||||
//右上角轮播
|
||||
|
||||
}
|
||||
|
||||
void HPPA::CalculateIntegratioinTimeRange()
|
||||
{
|
||||
double range = 1 / m_Imager->getFramerate() * 1000;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double range = 1 / m_Imager->getFramerate() * 1000;//毫秒
|
||||
|
||||
ui.IntegratioinTimeSlider->blockSignals(true);//<EFBFBD><EFBFBD>ΪsetMaximum<EFBFBD>ᴥ<EFBFBD><EFBFBD>valueChanged<EFBFBD>źţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>setMaximumǰ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
ui.IntegratioinTimeSlider->blockSignals(true);//因为setMaximum会触发valueChanged信号,所以调用setMaximum前需要阻断信号
|
||||
ui.IntegratioinTimeSlider->setMaximum(range);
|
||||
ui.IntegratioinTimeSlider->blockSignals(false);
|
||||
}
|
||||
@ -881,12 +881,12 @@ void HPPA::onStartRecordStep1()
|
||||
if (!checked)
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("请选择扫描平台!"));
|
||||
msgBox.exec();
|
||||
return;
|
||||
}
|
||||
|
||||
//<EFBFBD>ж<EFBFBD><EFBFBD>ǷǴ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
//判断是否覆盖存在的文件
|
||||
FileOperation* fileOperation = new FileOperation();
|
||||
string directory = fileOperation->getDirectoryFromString();
|
||||
//string imgPath = directory + "\\tmp_image";
|
||||
@ -900,16 +900,16 @@ void HPPA::onStartRecordStep1()
|
||||
|
||||
string tmp = imgPath + "_" + std::to_string(0) + ".bil";
|
||||
int x = _access(tmp.c_str(), 0);
|
||||
if (!x)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD>ִ<EFBFBD>д<EFBFBD>if<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!x)//如果文件存在就执行此if的代码
|
||||
{
|
||||
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);;
|
||||
enum QMessageBox::StandardButton response = QMessageBox::question(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("文件存在!是否覆盖?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);;
|
||||
if (response == QMessageBox::Yes)//
|
||||
{
|
||||
//std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||
//std::cout << "覆盖" << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
//std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||
//std::cout << "不覆盖" << std::endl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -932,17 +932,17 @@ void HPPA::onStartRecordStep1()
|
||||
|
||||
m_Imager->setFileName2Save(imgPath);
|
||||
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
||||
emit StartRecordSignal();//<EFBFBD><EFBFBD><EFBFBD>俪ʼ<EFBFBD>ɼ<EFBFBD><EFBFBD>ź<EFBFBD>
|
||||
emit StartRecordSignal();//发射开始采集信号
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Imager->setRecordControlState(false);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD>
|
||||
m_Imager->setRecordControlState(false);//光谱仪停止采集
|
||||
m_RecordState -= 1;
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
}
|
||||
return;
|
||||
@ -957,10 +957,10 @@ void HPPA::onStartRecordStep1()
|
||||
|
||||
onCreateTab(0);
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||
|
||||
//Ӧ<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>Dzɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>俪ʼ<EFBFBD>ɼ<EFBFBD><EFBFBD>źţ<EFBFBD>
|
||||
//应该先控制马达运动,当马达运动后,再开始光谱仪采集(发射开始采集信号)
|
||||
m_Imager->setFileName2Save(imgPath);
|
||||
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
||||
m_omc->setImager(m_Imager);
|
||||
@ -971,7 +971,7 @@ void HPPA::onStartRecordStep1()
|
||||
m_omc->stop();
|
||||
m_RecordState -= 1;
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
}
|
||||
return;
|
||||
@ -990,7 +990,7 @@ void HPPA::onStartRecordStep1()
|
||||
m_tmc->setPosFileName(QString::fromStdString(x_location));
|
||||
m_tmc->run();
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("ֹͣ<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
|
||||
}
|
||||
else
|
||||
@ -999,7 +999,7 @@ void HPPA::onStartRecordStep1()
|
||||
|
||||
m_RecordState--;
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
}
|
||||
|
||||
@ -1007,7 +1007,7 @@ void HPPA::onStartRecordStep1()
|
||||
}
|
||||
else if (checkedName == "mAction_RobotArm")
|
||||
{
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>RobotArmControl::executeTask<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾbug
|
||||
//先判断是否选择了任务,执行函数RobotArmControl::executeTask,修复界面显示bug
|
||||
m_Imager->setFileName2Save(imgPath);
|
||||
m_Imager->setFrameNumber(this->frame_number->text().toInt());
|
||||
m_rac->executeTaskWithHyperImager();
|
||||
@ -1036,22 +1036,22 @@ void HPPA::onCreateTab(int trackNumber)
|
||||
|
||||
}
|
||||
|
||||
void HPPA::onTabWidgetCurrentChanged(int index)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD>һ<EFBFBD><EFBFBD>tab<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>onTabWidgetCurrentChanged<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void HPPA::onTabWidgetCurrentChanged(int index)//代码新建一个tab,会调用onTabWidgetCurrentChanged函数!
|
||||
{
|
||||
if (index < 0)//<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tabʱ<EFBFBD><EFBFBD>index=-1
|
||||
if (index < 0)//当删除所有tab时,index=-1
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ǰ
|
||||
//记录当前
|
||||
m_TabWidgetCurrentIndex = index;
|
||||
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ͼ<EFBFBD>ؼ<EFBFBD>
|
||||
//获取绘图控件
|
||||
QWidget* currentWidget = m_imageViewerTabWidget->widget(index);
|
||||
QList<ImageViewer*> currentImageViewer = currentWidget->findChildren<ImageViewer*>();
|
||||
|
||||
//<EFBFBD><EFBFBD>disconnectȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>connect<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>һ<EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD>connectһ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD>connect<EFBFBD>ܶ<EFBFBD><EFBFBD>Σ<EFBFBD>
|
||||
//先disconnect然后再connect,否则每次切换一次都会connect一次,会累积connect很多次!
|
||||
disconnect(currentImageViewer[0], SIGNAL(leftMouseButtonPressed(int, int)), this, SLOT(onLeftMouseButtonPressed(int, int)));
|
||||
connect(currentImageViewer[0], SIGNAL(leftMouseButtonPressed(int, int)), this, SLOT(onLeftMouseButtonPressed(int, int)));
|
||||
}
|
||||
@ -1066,7 +1066,7 @@ void HPPA::onActionOpenDirectory()
|
||||
//QDesktopServices::openUrl(QUrl("file:C:\ASD", QUrl::TolerantMode));
|
||||
|
||||
|
||||
////std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||
////std::cout << "保存影像文件!" << std::endl;
|
||||
//
|
||||
//FileOperation * fileOperation = new FileOperation();
|
||||
//string directory = fileOperation->getDirectoryFromString();
|
||||
@ -1089,14 +1089,14 @@ void HPPA::onActionOpenDirectory()
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// std::cout << "<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>" << FileName2Save.length() << std::endl;
|
||||
// std::cout << "文件名长度:" << FileName2Save.length() << std::endl;
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
void HPPA::OnFramerateLineeditEditingFinished()
|
||||
{
|
||||
std::cout << "Lineedit<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>------------------------------------------" << std::endl;
|
||||
std::cout << "Lineedit设置帧率------------------------------------------" << std::endl;
|
||||
m_Imager->setFramerate(this->ui.framerate_lineEdit->text().toDouble());
|
||||
ui.FramerateSlider->setValue(ui.framerate_lineEdit->text().toDouble());
|
||||
|
||||
@ -1105,7 +1105,7 @@ void HPPA::OnFramerateLineeditEditingFinished()
|
||||
|
||||
void HPPA::OnFramerateSliderChanged(double framerate)
|
||||
{
|
||||
std::cout << "Slider<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>------------------------------------------" << std::endl;
|
||||
std::cout << "Slider设置帧率------------------------------------------" << std::endl;
|
||||
m_Imager->setFramerate(this->ui.framerate_lineEdit->text().toDouble());
|
||||
ui.framerate_lineEdit->setText(QString::number(framerate));
|
||||
|
||||
@ -1114,14 +1114,14 @@ void HPPA::OnFramerateSliderChanged(double framerate)
|
||||
|
||||
void HPPA::OnIntegratioinTimeEditingFinished()
|
||||
{
|
||||
std::cout << "Lineedit<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>------------------------------------------" << std::endl;
|
||||
std::cout << "Lineedit设置积分时间------------------------------------------" << std::endl;
|
||||
m_Imager->setIntegrationTime(this->ui.integratioin_time_lineEdit->text().toDouble());
|
||||
ui.IntegratioinTimeSlider->setValue(ui.integratioin_time_lineEdit->text().toDouble());
|
||||
}
|
||||
|
||||
void HPPA::OnIntegratioinTimeSliderChanged(double IntegratioinTime)
|
||||
{
|
||||
std::cout << "Slider<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>------------------------------------------" << std::endl;
|
||||
std::cout << "Slider设置积分时间------------------------------------------" << std::endl;
|
||||
m_Imager->setIntegrationTime(IntegratioinTime);
|
||||
ui.integratioin_time_lineEdit->setText(QString::number(IntegratioinTime));
|
||||
}
|
||||
@ -1142,7 +1142,7 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
||||
{
|
||||
try
|
||||
{
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ڲɼ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//正在采集时,不能显示光谱曲线
|
||||
if (m_RecordState % 2 == 1)
|
||||
{
|
||||
return;
|
||||
@ -1174,10 +1174,10 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
||||
int start = m_Imager->getStartBand();
|
||||
for (size_t i = 0; i < m_Imager->getBandCount() - 1; i++)
|
||||
{
|
||||
//malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//malloc申请的内存用法1:可以当做数组用
|
||||
series->append(m_Imager->getWavelengthAtBand(i + start), data[i]);
|
||||
|
||||
////malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>2<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
||||
////malloc申请的内存用法2:指针存取
|
||||
//series->append(m_Imager->getWavelengthAtBand(i), *data);
|
||||
//data++;
|
||||
}
|
||||
@ -1187,10 +1187,10 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
||||
int start = 0;
|
||||
for (size_t i = 0; i < m_Imager->getBandCount() - 1; i++)
|
||||
{
|
||||
//malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//malloc申请的内存用法1:可以当做数组用
|
||||
series->append(m_Imager->getWavelengthAtBand(i + start), data[i]);
|
||||
|
||||
////malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>2<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
||||
////malloc申请的内存用法2:指针存取
|
||||
//series->append(m_Imager->getWavelengthAtBand(i), *data);
|
||||
//data++;
|
||||
}
|
||||
@ -1198,7 +1198,7 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
||||
else
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("请选择相机!"));
|
||||
msgBox.exec();
|
||||
|
||||
return;
|
||||
@ -1214,14 +1214,14 @@ void HPPA::onLeftMouseButtonPressed(int x, int y)
|
||||
|
||||
setAxis(axisX, axisY);
|
||||
|
||||
/*std::cout << "x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" << x << std::endl;
|
||||
std::cout << "y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" << y << std::endl;
|
||||
std::cout << "<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>:" << imgPath << std::endl;*/
|
||||
/*std::cout << "x坐标:" << x << std::endl;
|
||||
std::cout << "y坐标:" << y << std::endl;
|
||||
std::cout << "文件名:" << imgPath << std::endl;*/
|
||||
|
||||
}
|
||||
catch (const std::exception&)
|
||||
{
|
||||
std::cout << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||
std::cout << "显示光谱有错误!" << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1233,15 +1233,15 @@ void HPPA::setAxis(QValueAxis* axisX, QValueAxis* axisY)
|
||||
QPen axisPen(QColor("#ACCDFF"));
|
||||
axisPen.setWidth(1);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// 坐标轴线颜色
|
||||
axisX->setLinePen(axisPen);
|
||||
axisY->setLinePen(axisPen);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD>ɫ
|
||||
// 坐标标签颜色
|
||||
axisX->setLabelsColor(QColor("#ACCDFF"));
|
||||
axisY->setLabelsColor(QColor("#ACCDFF"));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
// 网格线颜色
|
||||
QPen gridPen(QColor("#262A4C"));
|
||||
gridPen.setStyle(Qt::DashLine);
|
||||
gridPen.setWidth(2);
|
||||
@ -1272,12 +1272,12 @@ void HPPA::OnSendLogToCallClass(QString str)
|
||||
|
||||
void HPPA::onPlotRgbImage()
|
||||
{
|
||||
//std::cout << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ƶ+++++++++++++++++++++++++++++++++++++++++++" << std::endl;
|
||||
//std::cout << "显示视频+++++++++++++++++++++++++++++++++++++++++++" << std::endl;
|
||||
QPixmap pixmap = QPixmap::fromImage(m_RgbCamera->m_qImage);
|
||||
|
||||
int width = m_cam_label->width();
|
||||
int height = m_cam_label->height();
|
||||
QPixmap fitpixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QPixmap fitpixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); //按比例缩放
|
||||
|
||||
|
||||
m_cam_label->setPixmap(fitpixmap);
|
||||
@ -1285,7 +1285,7 @@ void HPPA::onPlotRgbImage()
|
||||
|
||||
void HPPA::onCloseRgbCamera()
|
||||
{
|
||||
//std::cout << "<EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>Ƶ+++++++++++++++++++++++++++++++++++++++++++" << std::endl;
|
||||
//std::cout << "关闭视频+++++++++++++++++++++++++++++++++++++++++++" << std::endl;
|
||||
m_RgbCamera->CloseCamera();
|
||||
}
|
||||
|
||||
@ -1312,7 +1312,7 @@ void HPPA::getRequest(QString str)
|
||||
}
|
||||
|
||||
void HPPA::requestFinished(QNetworkReply* reply) {
|
||||
// <EFBFBD><EFBFBD>ȡhttp״̬<EFBFBD><EFBFBD>
|
||||
// 获取http状态码
|
||||
QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
|
||||
if (statusCode.isValid())
|
||||
qDebug() << "status code=" << statusCode.toInt();
|
||||
@ -1326,7 +1326,7 @@ void HPPA::requestFinished(QNetworkReply* reply) {
|
||||
qDebug() << "Failed: " << reply->errorString();
|
||||
}
|
||||
else {
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 获取返回内容
|
||||
qDebug() << reply->readAll();
|
||||
}
|
||||
}
|
||||
@ -1340,16 +1340,16 @@ void HPPA::onconnect()
|
||||
{
|
||||
if (m_Imager != nullptr)
|
||||
{
|
||||
//std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>" << std::endl;
|
||||
//std::cout << "相机已经连接!" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//<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>https://www.cnblogs.com/xia-weiwen/p/10306089.html
|
||||
//采集影像线程:放入新线程中采集以免在采集过程中界面卡死:https://www.cnblogs.com/xia-weiwen/p/10306089.html
|
||||
m_RecordThread = new QThread();
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mImagerGroup
|
||||
//根据选择的相机类型创建对象mImagerGroup
|
||||
QString imagerSelected = mImagerGroup->checkedAction()->objectName();
|
||||
if (imagerSelected == "mActionPica_L")
|
||||
{
|
||||
@ -1370,7 +1370,7 @@ void HPPA::onconnect()
|
||||
else
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("请选择相机!"));
|
||||
msgBox.exec();
|
||||
|
||||
return;
|
||||
@ -1387,7 +1387,7 @@ void HPPA::onconnect()
|
||||
connect(m_Imager, SIGNAL(SpectralSignal(int)), this, SLOT(PlotSpectral(int)));
|
||||
//connect(m_Imager, SIGNAL(testImagerStatus()), this, SLOT(testImagerStatus()));
|
||||
|
||||
//<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//文件拷贝
|
||||
m_CopyFileThread = new QThread();
|
||||
m_FileOperation = new FileOperation();
|
||||
m_FileOperation->moveToThread(m_CopyFileThread);
|
||||
@ -1395,7 +1395,7 @@ void HPPA::onconnect()
|
||||
connect(this, SIGNAL(CopyFileThreadSignal(QString, QString)), m_FileOperation, SLOT(copyFile(QString, QString)));
|
||||
connect(m_FileOperation, SIGNAL(CopyFinishedSignal()), this, SLOT(onCopyFinished()));
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
//检测光谱仪连接状态
|
||||
m_TestImagerStausThread = new WorkerThread(m_Imager);
|
||||
|
||||
|
||||
@ -1426,7 +1426,7 @@ void HPPA::onconnect()
|
||||
connect(this->ui.GainSlider, SIGNAL(valueChanged(double)), this, SLOT(OnGainSliderChanged(double)));
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//相机参数控件设置为可用 + 输入控制
|
||||
frame_number->setEnabled(true);
|
||||
|
||||
ui.framerate_lineEdit->setEnabled(true);
|
||||
@ -1444,7 +1444,7 @@ void HPPA::onconnect()
|
||||
ui.integratioin_time_lineEdit->setValidator(new QRegExpValidator(rx));
|
||||
ui.gain_lineEdit->setValidator(new QRegExpValidator(rx));*/
|
||||
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//获取相机参数并显示到界面中
|
||||
ui.framerate_lineEdit->setText(QString::number(m_Imager->getFramerate(), 10, 2));
|
||||
ui.FramerateSlider->setValue(m_Imager->getFramerate(), true);
|
||||
CalculateIntegratioinTimeRange();
|
||||
@ -1463,7 +1463,7 @@ void HPPA::onconnect()
|
||||
m_Imager = nullptr;
|
||||
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("请连接相机!"));
|
||||
msgBox.exec();
|
||||
}
|
||||
|
||||
@ -1480,7 +1480,7 @@ void HPPA::onAutoExposure()
|
||||
{
|
||||
double ReturnedExposureTime = m_Imager->auto_exposure();
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ֵ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//将自动曝光所得的值显示到界面
|
||||
ui.IntegratioinTimeSlider->setValue(ReturnedExposureTime, false);
|
||||
|
||||
|
||||
@ -1493,7 +1493,7 @@ void HPPA::onFocus1()
|
||||
focusWindow* w = new focusWindow(this, m_Imager);
|
||||
connect(w, SIGNAL(StartManualFocusSignal(int)), this, SLOT(onFocus2(int)));
|
||||
|
||||
//w->setModal(true);//<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>Ϊģ̬<EFBFBD><EFBFBD>ֻ<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//w->setModal(true);//设置窗口为模态:只能操作当前窗口
|
||||
w->show();
|
||||
w->exec();
|
||||
|
||||
@ -1504,7 +1504,7 @@ void HPPA::onFocus2(int command)
|
||||
{
|
||||
if (command == 1)
|
||||
{
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//创建影像显示窗口
|
||||
QWidget* tabTmp = new QWidget();
|
||||
|
||||
QGridLayout* GridLayout = new QGridLayout();
|
||||
@ -1512,13 +1512,13 @@ void HPPA::onFocus2(int command)
|
||||
|
||||
tabTmp->setLayout(GridLayout);
|
||||
|
||||
m_imageViewerTabWidget->addTab(tabTmp, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
m_imageViewerTabWidget->addTab(tabTmp, QString::fromLocal8Bit("调焦"));
|
||||
|
||||
//m_imageViewerTabWidget->setCurrentIndex(trackNumber);
|
||||
m_imageViewerTabWidget->setCurrentWidget(tabTmp);
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//开始调焦
|
||||
emit StartFocusSignal();
|
||||
}
|
||||
else if (command == 0)
|
||||
@ -1537,7 +1537,7 @@ void HPPA::onAbout()
|
||||
void HPPA::onDark()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ǹ<EFBFBD><EFBFBD>ϣ<EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("采集暗电流,请确保镜头盖盖上!"));
|
||||
msgBox.exec();
|
||||
|
||||
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||
@ -1567,7 +1567,7 @@ void HPPA::recordDarkFinish()
|
||||
void HPPA::onReference()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>"));
|
||||
msgBox.setText(QString::fromLocal8Bit("请确保白板放置正确!"));
|
||||
msgBox.exec();
|
||||
|
||||
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||
@ -1596,7 +1596,7 @@ void HPPA::recordWhiteFinish()
|
||||
|
||||
void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber)
|
||||
{
|
||||
//ʹ<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><EFBFBD>ô˲ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//使用机械臂采集时,会在停止采集后的瞬间又开始采集,会导致上次采集最后发射的信号调用此槽函数报错
|
||||
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||
QString checkedName = checked->objectName();
|
||||
if (frameNumber == -1 && checkedName == "mAction_RobotArm")
|
||||
@ -1605,60 +1605,60 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber)
|
||||
}
|
||||
|
||||
//return;
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ͼ<EFBFBD>ؼ<EFBFBD>
|
||||
//获取绘图控件
|
||||
QWidget* currentWidget = m_imageViewerTabWidget->widget(fileNumber);
|
||||
QList<ImageViewer*> currentImageViewer = currentWidget->findChildren<ImageViewer*>();
|
||||
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ѿ<EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>
|
||||
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>--opencv<EFBFBD>汾
|
||||
//创建需要显示的图像--opencv版本
|
||||
ImageProcessor imageProcessor;
|
||||
//cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18<EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD>
|
||||
//cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的
|
||||
cv::Mat rgbImage(*m_Imager->getMatRgbImage(), cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());
|
||||
cv::Mat rgbImageStretched = imageProcessor.CStretch(rgbImage, 0.02);
|
||||
|
||||
//<EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾͼ<EFBFBD><EFBFBD>
|
||||
currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(rgbImageStretched)));//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
|
||||
//在界面中显示图像
|
||||
currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(rgbImageStretched)));//绘制图像
|
||||
|
||||
//20241225
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rgb
|
||||
//保存拉伸后的rgb
|
||||
//FileOperation* fileOperation = new FileOperation();
|
||||
//string directory = fileOperation->getDirectoryOfExe();
|
||||
//string rgbFilePathNoStrech = directory + "\\tmp_image_no_strech.png";//δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ
|
||||
//string rgbFilePathStrech = directory + "\\tmp_image_strech.png";//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ
|
||||
//string rgbFilePathNoStrech = directory + "\\tmp_image_no_strech.png";//未拉伸图片
|
||||
//string rgbFilePathStrech = directory + "\\tmp_image_strech.png";//拉伸图片
|
||||
//cv::imwrite(rgbFilePathNoStrech, rgbImage);
|
||||
//cv::imwrite(rgbFilePathStrech, rgbImageStretched);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>--qt<EFBFBD>汾
|
||||
//QRect CuttedRect = m_Imager->getRgbImage()->m_QRgbImage->rect();//<EFBFBD>Ȼ<EFBFBD>ȡimage<EFBFBD><EFBFBD><EFBFBD><EFBFBD>rect
|
||||
//CuttedRect.setHeight(m_Imager->getFrameCounter() - 1);//<EFBFBD>ü<EFBFBD>rect
|
||||
//创建需要显示的图像--qt版本
|
||||
//QRect CuttedRect = m_Imager->getRgbImage()->m_QRgbImage->rect();//先获取image整个rect
|
||||
//CuttedRect.setHeight(m_Imager->getFrameCounter() - 1);//裁剪rect
|
||||
//QImage CuttedImage = m_Imager->getRgbImage()->m_QRgbImage->copy(CuttedRect);
|
||||
|
||||
//currentImageViewer[0]->SetImage(&QPixmap::fromImage(CuttedImage));//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
|
||||
//currentImageViewer[0]->SetImage(&QPixmap::fromImage(CuttedImage));//绘制图像
|
||||
}
|
||||
|
||||
void HPPA::PlotSpectral(int state)
|
||||
{
|
||||
if (state == 1)
|
||||
{
|
||||
//<EFBFBD><EFBFBD>ʾӰ<EFBFBD><EFBFBD>
|
||||
//显示影像
|
||||
QWidget* currentWidget = m_imageViewerTabWidget->currentWidget();
|
||||
QList<ImageViewer*> currentImageViewer = currentWidget->findChildren<ImageViewer*>();
|
||||
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFocusFrameCounter());//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ѿ<EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>
|
||||
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFocusFrameCounter());//界面中显示已经采集的帧数
|
||||
|
||||
ImageProcessor imageProcessor;
|
||||
//cv::Mat grayImage(*m_Imager->getRgbImage()->m_matFocusGrayImage, cv::Range::all(), cv::Range::all());//2022.3.18<EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD>
|
||||
//cv::Mat grayImage(*m_Imager->getRgbImage()->m_matFocusGrayImage, cv::Range::all(), cv::Range::all());//2022.3.18重构的
|
||||
//cv::Mat grayImage(*m_Imager->getMatFocusGrayImage(), cv::Range::all(), cv::Range::all());
|
||||
//currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(grayImage)));//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
|
||||
//currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(grayImage)));//绘制图像
|
||||
|
||||
currentImageViewer[0]->SetImage(&QPixmap::fromImage(m_Imager->getQImageFocusGrayImage()));//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
|
||||
currentImageViewer[0]->SetImage(&QPixmap::fromImage(m_Imager->getQImageFocusGrayImage()));//绘制图像
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//绘制光谱
|
||||
QLineSeries* series = new QLineSeries();
|
||||
//series->clear();//////////////////////////////
|
||||
int sampleCount = m_Imager->getSampleCount();
|
||||
for (size_t i = 0; i < sampleCount; i++)
|
||||
{
|
||||
//malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//malloc申请的内存用法1:可以当做数组用
|
||||
//series->append(i, m_Imager->buffer[i + 5 * 900]);
|
||||
//series->append(i, m_Imager->buffer[900 * 150 + i]);
|
||||
series->append(i, m_Imager->buffer[1368 * 150 + i]);
|
||||
@ -1674,12 +1674,12 @@ void HPPA::PlotSpectral(int state)
|
||||
}
|
||||
else
|
||||
{
|
||||
//<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵİ<EFBFBD>ť<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//改变界面上的按钮文字
|
||||
}
|
||||
|
||||
|
||||
|
||||
////<EFBFBD><EFBFBD>ʾӰ<EFBFBD><EFBFBD>
|
||||
////显示影像
|
||||
//QWidget* currentWidget = m_imageViewerTabWidget->currentWidget();
|
||||
//QList<ImageViewer *> currentImageViewer = currentWidget->findChildren<ImageViewer *>();
|
||||
//
|
||||
@ -1687,7 +1687,7 @@ void HPPA::PlotSpectral(int state)
|
||||
//ImageProcessor imageProcessor;
|
||||
//
|
||||
|
||||
////<EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
////绘制光谱
|
||||
//QLineSeries *series = new QLineSeries();
|
||||
////series->clear();//////////////////////////////
|
||||
//int sampleCount = m_Imager->getSampleCount();
|
||||
@ -1703,13 +1703,13 @@ void HPPA::PlotSpectral(int state)
|
||||
|
||||
//while (state)
|
||||
//{
|
||||
// currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFocusFrameCounter());//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ѿ<EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>
|
||||
// currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFocusFrameCounter());//界面中显示已经采集的帧数
|
||||
// cv::Mat grayImage(*m_Imager->getMatFocusGrayImage(), cv::Range::all(), cv::Range::all());
|
||||
// currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(grayImage)));//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
|
||||
// currentImageViewer[0]->SetImage(&QPixmap::fromImage(imageProcessor.Mat2QImage(grayImage)));//绘制图像
|
||||
|
||||
// for (size_t i = 0; i < sampleCount; i++)
|
||||
// {
|
||||
// //malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>÷<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// //malloc申请的内存用法1:可以当做数组用
|
||||
// //series->append(i, m_Imager->buffer[i + 5 * 900]);
|
||||
// series->append(i, m_Imager->buffer[900 * 150 + i]);
|
||||
// }
|
||||
@ -1723,12 +1723,12 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
|
||||
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||
QString checkedName = checked->objectName();
|
||||
|
||||
std::cout << "ֹͣ<EFBFBD>ɼ<EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>" << std::endl;
|
||||
std::cout << "停止采集原因:帧数采集完了。" << std::endl;
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
|
||||
m_RecordState++;//<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD>
|
||||
m_RecordState++;//当自动停止采集
|
||||
}
|
||||
|
||||
void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
||||
@ -1736,19 +1736,19 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
||||
QAction* checked = moveplatformActionGroup->checkedAction();
|
||||
QString checkedName = checked->objectName();
|
||||
|
||||
if (checkedName == "mAction_RobotArm")//<EFBFBD><EFBFBD>е<EFBFBD>ۻ<EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>ʼ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ui.action_start_recording<EFBFBD><EFBFBD>ʾ<EFBFBD>쳣
|
||||
if (checkedName == "mAction_RobotArm")//机械臂会在停止采集后的瞬间又开始采集,导致ui.action_start_recording显示异常
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkedName == "mAction_2AxisMotor_new")//<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><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (checkedName == "mAction_2AxisMotor_new")//会有多条采集线,中间的某条采集线完成后不代表整个采集过程完成
|
||||
{
|
||||
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 << "停止采集原因:(1)帧数没有采集够时,马达到达最大位置;(2)手动停止采集。" << std::endl;
|
||||
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
|
||||
m_RecordState++;
|
||||
@ -1756,7 +1756,7 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
|
||||
|
||||
void HPPA::onsequenceComplete()
|
||||
{
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("<EFBFBD>ɼ<EFBFBD>"));
|
||||
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
|
||||
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
|
||||
|
||||
m_RecordState++;
|
||||
|
||||
Reference in New Issue
Block a user