消除git中hppa.cpp中文乱码

This commit is contained in:
tangchao0503
2026-01-29 14:24:26 +08:00
parent 30e63899a8
commit 8595f7cad7

View File

@ -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++;