From e3a778919ab5f3b8a5f207c8524ac08ef33eba5a Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Thu, 2 Apr 2026 10:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=8F=98=E6=96=87=E4=BB=B6=E7=BC=96?= =?UTF-8?q?=E7=A0=81=EF=BC=9Autf-8=E5=B8=A6bom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/Carousel.h | 6 +-- HPPA/Corning410Imager.cpp | 12 +++--- HPPA/Corning410Imager.h | 2 +- HPPA/CustomDockWidgetBase.cpp | 4 +- HPPA/CustomDockWidgetBase.h | 2 +- HPPA/FileNameLineEdit.cpp | 2 +- HPPA/FileNameLineEdit.h | 2 +- HPPA/ImageReaderWriter.cpp | 10 ++--- HPPA/ImageReaderWriter.h | 2 +- HPPA/ImageViewer.cpp | 4 +- HPPA/ImageViewer.h | 24 ++++++------ HPPA/ImagerPositionSimulation.cpp | 4 +- HPPA/ImagerPositionSimulation.h | 4 +- HPPA/LayerTree.cpp | 2 +- HPPA/LayerTree.h | 14 +++---- HPPA/LayerTreeGroupNode.cpp | 2 +- HPPA/LayerTreeGroupNode.h | 22 +++++------ HPPA/LayerTreeLayerNode.cpp | 4 +- HPPA/LayerTreeLayerNode.h | 12 +++--- HPPA/LayerTreeModel.cpp | 10 ++--- HPPA/LayerTreeModel.h | 14 +++---- HPPA/LayerTreeNode.cpp | 4 +- HPPA/LayerTreeNode.h | 24 ++++++------ HPPA/LayerTreeView.cpp | 2 +- HPPA/LayerTreeView.h | 2 +- HPPA/LayerTreeViewMenuProvider.cpp | 6 +-- HPPA/LayerTreeViewMenuProvider.h | 4 +- HPPA/MapLayer.cpp | 2 +- HPPA/MapLayer.h | 2 +- HPPA/MapLayerStore.cpp | 2 +- HPPA/MapLayerStore.h | 2 +- HPPA/OneMotorControl.cpp | 4 +- HPPA/OneMotorControl.h | 2 +- HPPA/PowerControl.cpp | 2 +- HPPA/PowerControl.h | 2 +- HPPA/QDoubleSlider.cpp | 6 +-- HPPA/QDoubleSlider.h | 10 ++--- HPPA/QMotorDoubleSlider.cpp | 12 +++--- HPPA/QMotorDoubleSlider.h | 12 +++--- HPPA/RasterDataProvider.cpp | 2 +- HPPA/RasterDataProvider.h | 2 +- HPPA/RasterLayer.cpp | 2 +- HPPA/RasterLayer.h | 2 +- HPPA/RasterRenderer.cpp | 2 +- HPPA/RasterRenderer.h | 2 +- HPPA/ResononNirImager.cpp | 58 ++++++++++++++-------------- HPPA/ResononNirImager.h | 2 +- HPPA/RgbCameraOperation.cpp | 12 +++--- HPPA/RgbCameraOperation.h | 4 +- HPPA/RobotArmControl.cpp | 22 +++++------ HPPA/RobotArmControl.h | 62 +++++++++++++++--------------- HPPA/TabManager.cpp | 4 +- HPPA/TabManager.h | 2 +- HPPA/View3D.h | 2 +- HPPA/View3DModelManager.cpp | 2 +- HPPA/View3DModelManager.h | 2 +- HPPA/aboutWindow.cpp | 4 +- HPPA/aboutWindow.h | 2 +- HPPA/adjustTable.cpp | 2 +- HPPA/adjustTable.h | 2 +- HPPA/fileOperation.cpp | 12 +++--- HPPA/fileOperation.h | 4 +- HPPA/focusWindow.h | 18 ++++----- HPPA/hppaConfigFile.cpp | 14 +++---- HPPA/hppaConfigFile.h | 4 +- HPPA/image2display.cpp | 36 ++++++++--------- HPPA/image2display.h | 12 +++--- HPPA/imageControl.cpp | 4 +- HPPA/imageControl.h | 2 +- HPPA/imageProcessor.cpp | 36 ++++++++--------- HPPA/imageProcessor.h | 10 ++--- HPPA/imagerSimulatioin.cpp | 16 ++++---- HPPA/imagerSimulatioin.h | 8 ++-- HPPA/imager_base.cpp | 2 +- HPPA/imager_base.h | 2 +- HPPA/main.cpp | 2 +- HPPA/path_tc.cpp | 2 +- HPPA/path_tc.h | 2 +- HPPA/resononImager.cpp | 4 +- HPPA/resononImager.h | 2 +- HPPA/resource.h | 6 +-- HPPA/stdafx.cpp | 2 +- HPPA/stdafx.h | 2 +- HPPA/utility_tc.h | 2 +- 84 files changed, 328 insertions(+), 328 deletions(-) diff --git a/HPPA/Carousel.h b/HPPA/Carousel.h index c5e4132..05c3557 100644 --- a/HPPA/Carousel.h +++ b/HPPA/Carousel.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -40,13 +40,13 @@ private: QString m_nomalQSS; QString m_lockedQSS; - // ״ֵ̬ + // 状æ€�值 int m_currentIndex; bool m_isPlaying; bool m_isLocked; int m_lockedIndex; - // ²ÎÊý + // å�‚æ•° int m_playInterval; int m_intervalButtonSize; diff --git a/HPPA/Corning410Imager.cpp b/HPPA/Corning410Imager.cpp index 27adf4f..ce9eb9e 100644 --- a/HPPA/Corning410Imager.cpp +++ b/HPPA/Corning410Imager.cpp @@ -1,8 +1,8 @@ -#include "Corning410Imager.h" +#include "Corning410Imager.h" Corning410Imager::Corning410Imager() { - //ÅäÖÃÎļþ£ºÈç¹ûûÓУ¬¾Í´´½¨ÅäÖÃÎļþ + //é…�置文件:如果没有,就创建é…�置文件 string CfgFile = getPathofEXE() + "\\corning410.cfg"; m_configfile.setConfigfilePath(CfgFile); if (!m_configfile.isConfigfileExist()) @@ -18,7 +18,7 @@ Corning410Imager::~Corning410Imager() { if (buffer != nullptr) { - std::cout << "ÊͷŶÑÉÏÄÚ´æ" << std::endl; + std::cout << "释放堆上内存" << std::endl; free(buffer); free(dark); free(white); @@ -70,7 +70,7 @@ void Corning410Imager::connectImager(const char* camera_sn) { m_imager.connect(); - //¶ÁÈ¡ÅäÖÃÎļþ²ÎÊý£¬²¢ÎªÏà»úÉèÖòÎÊý + //读å�–é…�置文件å�‚数,并为相机设置å�‚æ•° bool ret, ret1, ret2; int spatialBin; @@ -82,8 +82,8 @@ void Corning410Imager::connectImager(const char* camera_sn) bool haha = m_imager.setSpectralBin(spectralBin); bool haha2 = m_imager.setSpatialBin(spatialBin); - std::cout << "spectralBin£º" << spectralBin << std::endl; - std::cout << "spatialBin£º" << spatialBin << std::endl; + std::cout << "spectralBin:" << spectralBin << std::endl; + std::cout << "spatialBin:" << spatialBin << std::endl; } float gain, offset; diff --git a/HPPA/Corning410Imager.h b/HPPA/Corning410Imager.h index d3a03c3..781db46 100644 --- a/HPPA/Corning410Imager.h +++ b/HPPA/Corning410Imager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/CustomDockWidgetBase.cpp b/HPPA/CustomDockWidgetBase.cpp index 46f404e..5077d70 100644 --- a/HPPA/CustomDockWidgetBase.cpp +++ b/HPPA/CustomDockWidgetBase.cpp @@ -1,4 +1,4 @@ -#include "CustomDockWidgetBase.h" +#include "CustomDockWidgetBase.h" CustomDockWidgetBase::CustomDockWidgetBase(QMainWindow* parent) : QDockWidget(parent), @@ -55,7 +55,7 @@ void CustomDockWidgetBase::initialize() border-top: 1px solid #2c586b; border-left: 1px solid #2c586b; border-right: 1px solid #2c586b; - border-bottom: none; /* È¡Ïûµ×²¿±ß¿ò */ + border-bottom: none; /* å�–消底部边框 */ border-top-left-radius: 5px; border-top-right-radius: 5px; diff --git a/HPPA/CustomDockWidgetBase.h b/HPPA/CustomDockWidgetBase.h index 77f3eea..770b0f4 100644 --- a/HPPA/CustomDockWidgetBase.h +++ b/HPPA/CustomDockWidgetBase.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include #include diff --git a/HPPA/FileNameLineEdit.cpp b/HPPA/FileNameLineEdit.cpp index 5cde11c..10bc946 100644 --- a/HPPA/FileNameLineEdit.cpp +++ b/HPPA/FileNameLineEdit.cpp @@ -1,4 +1,4 @@ -#include "FileNameLineEdit.h" +#include "FileNameLineEdit.h" FileNameLineEdit::FileNameLineEdit(QWidget* parent) : QLineEdit(parent) diff --git a/HPPA/FileNameLineEdit.h b/HPPA/FileNameLineEdit.h index 48ac749..fe1fc04 100644 --- a/HPPA/FileNameLineEdit.h +++ b/HPPA/FileNameLineEdit.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/ImageReaderWriter.cpp b/HPPA/ImageReaderWriter.cpp index eebc154..01b8cba 100644 --- a/HPPA/ImageReaderWriter.cpp +++ b/HPPA/ImageReaderWriter.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include #include "ImageReaderWriter.h" @@ -11,11 +11,11 @@ ImageReaderWriter::ImageReaderWriter(const char * fileName) m_poDataset = (GDALDataset *)GDALOpen(fileName, GA_ReadOnly); if (m_poDataset == NULL) { - std::cout << "´ò¿ªÓ°Ïñʧ°Ü£¡" << std::endl; + std::cout << "打开影åƒ�失败ï¼�" << std::endl; return; } - //»ñȡӰÏñÐÅÏ¢ + //获å�–å½±åƒ�ä¿¡æ�¯ m_DataType = m_poDataset->GetRasterBand(1)->GetRasterDataType(); m_iBands = m_poDataset->GetRasterCount(); m_iXCount = m_poDataset->GetRasterXSize(); @@ -47,11 +47,11 @@ float * ImageReaderWriter::ReadImage(int nXOff, int nYOff, int nXSize, int nYSiz float *pDataBuffer = (float*)CPLMalloc(sizeof(float)*(1)*(1)*(m_iBands)); memset(pDataBuffer, 0, 1 * 1 * m_iBands * sizeof(float)); - CPLErr status = m_poDataset->RasterIO(GF_Read, nXOff, nYOff, nXSize, nYSize, pDataBuffer, xBuff, yBuff, GDT_Float32, m_iBands, NULL, 0, 0, 0); //Ïȸߺó¿í + CPLErr status = m_poDataset->RasterIO(GF_Read, nXOff, nYOff, nXSize, nYSize, pDataBuffer, xBuff, yBuff, GDT_Float32, m_iBands, NULL, 0, 0, 0); //先高å�Žå®½ if (status != CE_None) { - std::cout << "¶ÁȡӰÏñʧ°Ü£¡" << std::endl; + std::cout << "读å�–å½±åƒ�失败ï¼�" << std::endl; return 0; } diff --git a/HPPA/ImageReaderWriter.h b/HPPA/ImageReaderWriter.h index cbf687f..ae5967a 100644 --- a/HPPA/ImageReaderWriter.h +++ b/HPPA/ImageReaderWriter.h @@ -1,4 +1,4 @@ -#ifndef IMAGE_READER_WRITER +#ifndef IMAGE_READER_WRITER #define IMAGE_READER_WRITER #include "stdafx.h" #include "gdal_priv.h" diff --git a/HPPA/ImageViewer.cpp b/HPPA/ImageViewer.cpp index c03fdd7..e489c5a 100644 --- a/HPPA/ImageViewer.cpp +++ b/HPPA/ImageViewer.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include #include @@ -20,7 +20,7 @@ Mapcavas::Mapcavas(QWidget* pParent) :QGraphicsView(pParent) setRenderHint(QPainter::SmoothPixmapTransform); setDragMode(QGraphicsView::ScrollHandDrag); - // ʹÓà Qt ĬÈÏ anchor ÐÐΪÒÔÍâµÄÅäÖà + // 使用 Qt 默认 anchor 行为以外的é…�ç½® setTransformationAnchor(QGraphicsView::NoAnchor); setResizeAnchor(QGraphicsView::NoAnchor); diff --git a/HPPA/ImageViewer.h b/HPPA/ImageViewer.h index 93d9e3c..a95f994 100644 --- a/HPPA/ImageViewer.h +++ b/HPPA/ImageViewer.h @@ -1,4 +1,4 @@ -#ifndef MAPCAVAS_H +#ifndef MAPCAVAS_H #define MAPCAVAS_H #include "QGraphicsView" @@ -35,15 +35,15 @@ public: void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; void scaling(qreal scaleFactor); - void zoomIn(); // ·Å´ó - void zoomOut(); // ËõС - void zoom(float scaleFactor); // Ëõ·Å - scaleFactorËõ·ÅµÄ±ÈÀýÒò×Ó + void zoomIn(); // 放大 + void zoomOut(); // 缩å°� + void zoom(float scaleFactor); // 缩放 - scaleFactor缩放的比例因å­� - // Æ½ÒÆËÙ¶È + // 平移速度 void setTranslateSpeed(qreal speed); qreal translateSpeed() const; - // Ëõ·ÅµÄÔöÁ¿ + // 缩放的增é‡� void setZoomDelta(qreal delta); qreal zoomDelta() const; @@ -63,16 +63,16 @@ protected: QGraphicsScene *m_qtGraphicsScene; private: QGraphicsPixmapItem *m_GraphicsPixmapItemHandle; - QLabel *m_framNumberLabel;//ÏÔʾʵʱ²É¼¯µ½µÄÖ¡Êý + QLabel *m_framNumberLabel;//显示实时采集到的帧数 RasterLayer* m_rasterLayer = nullptr; // associated raster layer MapTool* m_mapTool = nullptr; // current active map tool - qreal m_translateSpeed; // Æ½ÒÆËÙ¶È - qreal m_zoomDelta; // Ëõ·ÅµÄÔöÁ¿ - bool m_bMouseTranslate; // Æ½ÒÆ±êʶ - QPoint m_lastMousePos; // Êó±ê×îºó°´ÏµÄλÖà - qreal m_scale; // Ëõ·ÅÖµ + qreal m_translateSpeed; // 平移速度 + qreal m_zoomDelta; // 缩放的增é‡� + bool m_bMouseTranslate; // 平移标识 + QPoint m_lastMousePos; // 鼠标最å�ŽæŒ‰ä¸‹çš„ä½�ç½® + qreal m_scale; // 缩放值 double m_CrosshairHalfLen = 10.0; QGraphicsLineItem* m_hLine = nullptr; // horizontal line diff --git a/HPPA/ImagerPositionSimulation.cpp b/HPPA/ImagerPositionSimulation.cpp index 31e981e..2ad0ad9 100644 --- a/HPPA/ImagerPositionSimulation.cpp +++ b/HPPA/ImagerPositionSimulation.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "ImagerPositionSimulation.h" @@ -61,7 +61,7 @@ void ImagerPositionSimulation::mouseReleaseEvent(QMouseEvent *event) { QPoint viewPos = event->pos(); - ////Êä³öÀàÐÍ + ////输出类型 //const type_info &x = typeid(imager); //qDebug() << "---------------type_info: " << x.name() << x.raw_name() << x.hash_code(); diff --git a/HPPA/ImagerPositionSimulation.h b/HPPA/ImagerPositionSimulation.h index a314b41..f2c9e7b 100644 --- a/HPPA/ImagerPositionSimulation.h +++ b/HPPA/ImagerPositionSimulation.h @@ -1,4 +1,4 @@ -#ifndef IMAGER_POSITION_SIMULATION +#ifndef IMAGER_POSITION_SIMULATION #define IMAGER_POSITION_SIMULATION #include #include @@ -16,7 +16,7 @@ public: void drawX(); - void setSceneRect();//½«QGraphicsViewµÄviewportÉèÖÃΪsceneRect + void setSceneRect();//å°†QGraphicsViewçš„viewport设置为sceneRect QRectF sceneRect(); diff --git a/HPPA/LayerTree.cpp b/HPPA/LayerTree.cpp index 7499d1a..137c143 100644 --- a/HPPA/LayerTree.cpp +++ b/HPPA/LayerTree.cpp @@ -1,4 +1,4 @@ -#include "LayerTree.h" +#include "LayerTree.h" LayerTree::LayerTree(QObject* parent) : LayerTreeGroup("__root__", parent) diff --git a/HPPA/LayerTree.h b/HPPA/LayerTree.h index 050a1a4..3b45315 100644 --- a/HPPA/LayerTree.h +++ b/HPPA/LayerTree.h @@ -1,14 +1,14 @@ -#pragma once +#pragma once #include "LayerTreeGroupNode.h" /** - * LayerTree£ºÍ¼²ãÊ÷¸ù½Úµã - * - ¼Ì³Ð×Ô LayerTreeGroup£¬±¾Éí¾ÍÊÇÊ÷µÄ¸ù½Úµã - * - Ìṩ¿É¼ûÐÔ¼¶ÁªÓ븸½ÚµãÈý̬¸üеľ²Ì¬¹¤¾ß + * LayerTree:图层树根节点 + * - 继承自 LayerTreeGroup,本身就是树的根节点 + * - æ��ä¾›å�¯è§�性级è�”与父节点三æ€�æ›´æ–°çš„é�™æ€�工具 * - * ×¢Ò⣺beginInsertRows/endInsertRows µÈ Qt Model ±ä¸ü֪ͨӦÓÉ Model Çý¶¯µ÷Ó㬠- * LayerTree Ö»¸ºÔðά»¤Êý¾Ý½á¹¹ÕýÈ·ÐÔ¡£ + * 注æ„�:beginInsertRows/endInsertRows ç­‰ Qt Model å�˜æ›´é€šçŸ¥åº”ç”± Model 驱动调用, + * LayerTree å�ªè´Ÿè´£ç»´æŠ¤æ•°æ�®ç»“构正确性。 */ class LayerTree : public LayerTreeGroup { @@ -20,7 +20,7 @@ public: LayerTree(const LayerTree&) = delete; LayerTree& operator=(const LayerTree&) = delete; - // ¿É¼ûÐÔÂß¼­£¨¹© Model µ÷Óã© + // å�¯è§�性逻辑(供 Model 调用) static void setChildrenVisible(LayerTreeNode* n, Qt::CheckState state); static void updateParentVisibleFromChildren(LayerTreeNode* parent); }; diff --git a/HPPA/LayerTreeGroupNode.cpp b/HPPA/LayerTreeGroupNode.cpp index 621da50..b5832a7 100644 --- a/HPPA/LayerTreeGroupNode.cpp +++ b/HPPA/LayerTreeGroupNode.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeGroupNode.h" +#include "LayerTreeGroupNode.h" #include "LayerTreeLayerNode.h" LayerTreeGroup::LayerTreeGroup(const QString& name, QObject* parent) diff --git a/HPPA/LayerTreeGroupNode.h b/HPPA/LayerTreeGroupNode.h index 1e80fa8..a146eaf 100644 --- a/HPPA/LayerTreeGroupNode.h +++ b/HPPA/LayerTreeGroupNode.h @@ -1,12 +1,12 @@ -#pragma once +#pragma once #include "LayerTreeNode.h" class LayerTreeLayer; /** - * LayerTreeGroup£ºÍ¼²ã×é½Úµã - * - »ùÀàΪ LayerTreeNode - * - Ìṩ²åÈëͼ²ã½Úµã£¨LayerTreeLayer£©»òͼ²ã×飨LayerTreeGroup£©µÄ±ãÀû·½·¨ + * LayerTreeGroup:图层组节点 + * - 基类为 LayerTreeNode + * - æ��ä¾›æ�’入图层节点(LayerTreeLayer)或图层组(LayerTreeGroup)的便利方法 */ class LayerTreeGroup : public LayerTreeNode { @@ -17,28 +17,28 @@ public: Type type() const override { return Type::Group; } - // ±ãÀû·½·¨£º²åÈë×Ó×é + // 便利方法:æ�’å…¥å­�组 LayerTreeGroup* insertGroup(int index, const QString& name); LayerTreeGroup* addGroup(const QString& name); - // ±ãÀû·½·¨£º²åÈëͼ²ã½Úµã + // 便利方法:æ�’入图层节点 LayerTreeLayer* insertLayer(int index, LayerTreeLayer* layer); LayerTreeLayer* addLayer(LayerTreeLayer* layer); - // ²åÈëÈÎÒâ½Úµã + // æ�’入任æ„�节点 void insertChildNode(int index, LayerTreeNode* node); void addChildNode(LayerTreeNode* node); - // ÒÆ³ý×ӽڵ㣨²» delete£¬·µ»Ø±»ÒƳý½Úµã£© + // 移除å­�节点(ä¸� delete,返回被移除节点) LayerTreeNode* removeChildNode(LayerTreeNode* node); - // ²éÕÒ + // 查找 LayerTreeLayer* findLayer(const QString& name) const; QList findLayers() const; QList findGroups() const; - // ÒÔºó¿ÉÀ©Õ¹£ºcollapsed / groupOpacity µÈ + // 以å�Žå�¯æ‰©å±•:collapsed / groupOpacity ç­‰ }; -// ±£³ÖÏòºó¼æÈÝ +// ä¿�æŒ�å�‘å�Žå…¼å®¹ using LayerTreeGroupNode = LayerTreeGroup; diff --git a/HPPA/LayerTreeLayerNode.cpp b/HPPA/LayerTreeLayerNode.cpp index 16237bc..621d8d7 100644 --- a/HPPA/LayerTreeLayerNode.cpp +++ b/HPPA/LayerTreeLayerNode.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeLayerNode.h" +#include "LayerTreeLayerNode.h" LayerTreeLayer::LayerTreeLayer(MapLayer* layer, QObject* parent) : LayerTreeNode(layer ? layer->name() : QString(), parent), m_layer(layer) @@ -10,7 +10,7 @@ LayerTreeNode::Type LayerTreeLayer::type() const return Type::Layer; } -// ³ÖÓÐÒ»¸ö MapLayer Ö¸Õ루²»ÓµÓУ© +// æŒ�有一个 MapLayer 指针(ä¸�拥有) void LayerTreeLayer::setMapLayer(MapLayer* layer) { m_layer = layer; diff --git a/HPPA/LayerTreeLayerNode.h b/HPPA/LayerTreeLayerNode.h index 4c70663..5d4b679 100644 --- a/HPPA/LayerTreeLayerNode.h +++ b/HPPA/LayerTreeLayerNode.h @@ -1,11 +1,11 @@ -#pragma once +#pragma once #include "LayerTreeNode.h" #include "MapLayer.h" /** - * LayerTreeLayer£ºÍ¼²ã½Úµã - * - »ùÀàΪ LayerTreeNode - * - ³ÖÓÐÒ»¸ö MapLayer Ö¸Õ루²»ÓµÓУ© + * LayerTreeLayer:图层节点 + * - 基类为 LayerTreeNode + * - æŒ�有一个 MapLayer 指针(ä¸�拥有) */ class LayerTreeLayer : public LayerTreeNode { @@ -21,8 +21,8 @@ public: private: MapLayer* m_layer = nullptr; - // ¿ÉÀ©Õ¹£ºlayerId / pointer / legendItems µÈ + // å�¯æ‰©å±•:layerId / pointer / legendItems ç­‰ }; -// ±£³ÖÏòºó¼æÈÝ +// ä¿�æŒ�å�‘å�Žå…¼å®¹ using LayerTreeLayerNode = LayerTreeLayer; diff --git a/HPPA/LayerTreeModel.cpp b/HPPA/LayerTreeModel.cpp index 740ff4f..04787e6 100644 --- a/HPPA/LayerTreeModel.cpp +++ b/HPPA/LayerTreeModel.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeModel.h" +#include "LayerTreeModel.h" #include "LayerTreeGroupNode.h" #include "LayerTreeLayerNode.h" @@ -90,15 +90,15 @@ bool LayerTreeModel::setData(const QModelIndex& index, const QVariant& value, in n->setVisible(newState); - // 1) ¸¸ -> ×Ó ¼¶Áª + // 1) 父 -> å­� 级è�” if (m_cascadeCheck) { LayerTree::setChildrenVisible(n, newState); } - // 2) ×Ó -> ¸¸ ¸üРPartiallyChecked + // 2) å­� -> 父 æ›´æ–° PartiallyChecked LayerTree::updateParentVisibleFromChildren(n->parentNode()); - // ¼ò»¯£ºÕûÌåˢУ¨ÄãºóÐø¿ÉÌæ»»Îª¾«×¼ dataChanged£© + // 简化:整体刷新(你å�Žç»­å�¯æ›¿æ�¢ä¸ºç²¾å‡† dataChanged) emit layoutChanged(); return true; } @@ -156,7 +156,7 @@ bool LayerTreeModel::cascadeCheckEnabled() const return m_cascadeCheck; } -// ÐÂÔöʵÏÖ£ºÒƳý×ӽڵ㲢ÔÚ model ÉÏ·¢³ö begin/endRemoveRows +// 新增实现:移除å­�节点并在 model 上å�‘出 begin/endRemoveRows LayerTreeNode* LayerTreeModel::removeNode(LayerTreeNode* parent, int row) { if (!parent) parent = m_tree; diff --git a/HPPA/LayerTreeModel.h b/HPPA/LayerTreeModel.h index 9d3bf4b..d575cec 100644 --- a/HPPA/LayerTreeModel.h +++ b/HPPA/LayerTreeModel.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include #include "LayerTree.h" @@ -6,9 +6,9 @@ class LayerTreeLayer; // forward declare /** - * LayerTreeModel£ºQt ÊÊÅä²ã£¨²»ÔÙ¹ÜÀíÊ÷£© - * - 1 ÁУºÃû³Æ£¨´øÍ¼±ê£©+ checkbox - * - ¹´Ñ¡¿É¼ûÐÔ£¨¿ÉÑ¡¼¶Áª¹´Ñ¡£© + * LayerTreeModel:Qt 适é…�层(ä¸�å†�管ç�†æ ‘) + * - 1 列:å��称(带图标)+ checkbox + * - 勾选å�¯è§�性(å�¯é€‰çº§è�”勾选) */ class LayerTreeModel : public QAbstractItemModel { @@ -19,7 +19,7 @@ public: bool cascadeCheck = true); ~LayerTreeModel() override = default; - // QAbstractItemModel ±ØÐë½Ó¿Ú + // QAbstractItemModel 必须接å�£ QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; QModelIndex parent(const QModelIndex& child) const override; @@ -30,7 +30,7 @@ public: bool setData(const QModelIndex& index, const QVariant& value, int role) override; Qt::ItemFlags flags(const QModelIndex& index) const override; - // ¶ÔÍâ API£º¹¹½¨Ê÷£¨ÄÚ²¿»áÕýÈ·µ÷Óà begin/endInsertRows£© + // 对外 API:构建树(内部会正确调用 begin/endInsertRows) LayerTreeNode* root() const; LayerTreeNode* addGroup(LayerTreeNode* parent, const QString& name, const QIcon& icon = QIcon()); @@ -39,7 +39,7 @@ public: void setCascadeCheckEnabled(bool enabled); bool cascadeCheckEnabled() const; - // ÐÂÔö£º´Ó¸¸½ÚµãÒÆ³ý×ӽڵ㣨°ü×° LayerTree::removeNode ²¢·¢³ö model ֪ͨ£© + // 新增:从父节点移除å­�节点(包装 LayerTree::removeNode å¹¶å�‘出 model 通知) LayerTreeNode* removeNode(LayerTreeNode* parent, int row); private: diff --git a/HPPA/LayerTreeNode.cpp b/HPPA/LayerTreeNode.cpp index 9f9a48d..9401e8c 100644 --- a/HPPA/LayerTreeNode.cpp +++ b/HPPA/LayerTreeNode.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeNode.h" +#include "LayerTreeNode.h" #include @@ -55,7 +55,7 @@ LayerTreeNode* LayerTreeNode::parentNode() const void LayerTreeNode::setParentNode(LayerTreeNode* p) { m_parentNode = p; - // Èà QObject µÄ parent Ò²¸úËæ£¨±ãÓÚ Qt ¶ÔÏó²ã´Î¹ÜÀí£¬ÇÒ²»»áÓ°ÏìÎÒÃÇÊÖ¶¯ delete children£© + // 让 QObject çš„ parent 也跟éš�(便于 Qt 对象层次管ç�†ï¼Œä¸”ä¸�会影å“�我们手动 delete children) if (p) this->setParent(p); else this->setParent(nullptr); } diff --git a/HPPA/LayerTreeNode.h b/HPPA/LayerTreeNode.h index 3385342..1e65c7a 100644 --- a/HPPA/LayerTreeNode.h +++ b/HPPA/LayerTreeNode.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -6,14 +6,14 @@ #include /** - * LayerTreeNode£º½Úµã»ùÀࣨ³éÏó£© - * - ½ö°üº¬Í¨ÓÃÊôÐÔ£ºÃû³Æ/ͼ±ê/¿É¼ûÐÔ/¸¸×Ó¹ØÏµ - * - Group / Layer ½Úµãͨ¹ý¼Ì³ÐʵÏÖ - * - Ìṩ²åÈë/ɾ³ý½ÚµãµÄÐźÅ֪ͨ + * LayerTreeNode:节点基类(抽象) + * - 仅包å�«é€šç”¨å±žæ€§ï¼šå��ç§°/图标/å�¯è§�性/父å­�关系 + * - Group / Layer 节点通过继承实现 + * - æ��ä¾›æ�’å…¥/删除节点的信å�·é€šçŸ¥ * - * ˵Ã÷£º - * - ÕâÀïͬʱά»¤"Ê÷¸¸Ö¸Õë"£¨m_parentNode£©Óë QObject parent£¨¿ÉÑ¡£© - * - children Óɽڵã×Ô¼º³ÖÓв¢¸ºÔðÊÍ·Å£¨Îö¹¹Ê± delete children£© + * 说明: + * - 这里å�Œæ—¶ç»´æŠ¤"树父指针"(m_parentNode)与 QObject parent(å�¯é€‰ï¼‰ + * - children 由节点自己æŒ�有并负责释放(æž�构时 delete children) */ class LayerTreeNode : public QObject { @@ -52,8 +52,8 @@ public: void appendChild(LayerTreeNode* child); void insertChild(int row, LayerTreeNode* child); - // »ùÓÚ QgsLayerTreeNode::removeChildrenPrivate ¸Ä½ø - // from: ÆðʼË÷Òý, count: ÒÆ³ýÊýÁ¿, destroy: true Ôò delete ±»ÒƳý½Úµã + // 基于 QgsLayerTreeNode::removeChildrenPrivate 改进 + // from: 起始索引, count: 移除数é‡�, destroy: true 则 delete 被移除节点 void removeChild(int from, int count, bool destroy = true); // ---- static type helpers ---- @@ -68,11 +68,11 @@ public: } signals: - // ÔÚ²åÈë×Ó½Úµã֮ǰ/Ö®ºó·¢³ö + // 在æ�’å…¥å­�节点之å‰�/之å�Žå�‘出 void willAddChildren(LayerTreeNode* node, int indexFrom, int indexTo); void addedChildren(LayerTreeNode* node, int indexFrom, int indexTo); - // ÔÚÒÆ³ý×Ó½Úµã֮ǰ/Ö®ºó·¢³ö + // 在移除å­�节点之å‰�/之å�Žå�‘出 void willRemoveChildren(LayerTreeNode* node, int indexFrom, int indexTo); void removedChildren(LayerTreeNode* node, int indexFrom, int indexTo); diff --git a/HPPA/LayerTreeView.cpp b/HPPA/LayerTreeView.cpp index fd73c17..5260c62 100644 --- a/HPPA/LayerTreeView.cpp +++ b/HPPA/LayerTreeView.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeView.h" +#include "LayerTreeView.h" #include "LayerTreeViewMenuProvider.h" #include #include diff --git a/HPPA/LayerTreeView.h b/HPPA/LayerTreeView.h index ab39dfc..0f149e9 100644 --- a/HPPA/LayerTreeView.h +++ b/HPPA/LayerTreeView.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include diff --git a/HPPA/LayerTreeViewMenuProvider.cpp b/HPPA/LayerTreeViewMenuProvider.cpp index a736cd9..d9e4faf 100644 --- a/HPPA/LayerTreeViewMenuProvider.cpp +++ b/HPPA/LayerTreeViewMenuProvider.cpp @@ -1,4 +1,4 @@ -#include "LayerTreeViewMenuProvider.h" +#include "LayerTreeViewMenuProvider.h" #include "LayerTreeView.h" #include "LayerTreeModel.h" #include "LayerTreeNode.h" @@ -36,7 +36,7 @@ QMenu* LayerTreeViewMenuProvider::createContextMenu() if (node->type() == LayerTreeNode::Type::Layer) { - QAction* removeAction = new QAction(QStringLiteral("ÒÆ³ýͼ²ã"), menu); + QAction* removeAction = new QAction(QStringLiteral("移除图层"), menu); connect(removeAction, &QAction::triggered, HPPA::instance(), &HPPA::removeLayerByTreeIndex); menu->addAction(removeAction); } @@ -45,7 +45,7 @@ QMenu* LayerTreeViewMenuProvider::createContextMenu() HPPA* app = HPPA::instance(); if (app && node == app->rasterGroupNode()) { - QAction* removeAllAction = new QAction(QStringLiteral("ÒÆ³ýËùÓÐͼ²ã"), menu); + QAction* removeAllAction = new QAction(QStringLiteral("移除所有图层"), menu); connect(removeAllAction, &QAction::triggered, app, &HPPA::removeAllLayersInRasterGroup); menu->addAction(removeAllAction); } diff --git a/HPPA/LayerTreeViewMenuProvider.h b/HPPA/LayerTreeViewMenuProvider.h index b1d56a0..4761122 100644 --- a/HPPA/LayerTreeViewMenuProvider.h +++ b/HPPA/LayerTreeViewMenuProvider.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -15,7 +15,7 @@ public: explicit LayerTreeViewMenuProvider(LayerTreeView* view, QObject* parent = nullptr); ~LayerTreeViewMenuProvider() override = default; - // ¸ù¾Ý¸ø¶¨ index ´´½¨Ò»¸ö²Ëµ¥£¬µ÷ÓÃÕ߸ºÔðɾ³ý·µ»ØµÄ QMenu* + // æ ¹æ�®ç»™å®š index 创建一个è�œå�•,调用者负责删除返回的 QMenu* QMenu* createContextMenu(); private: diff --git a/HPPA/MapLayer.cpp b/HPPA/MapLayer.cpp index e4122ca..9b89784 100644 --- a/HPPA/MapLayer.cpp +++ b/HPPA/MapLayer.cpp @@ -1,4 +1,4 @@ -#include "MapLayer.h" +#include "MapLayer.h" MapLayer::MapLayer(const QString& name, const QString& uri) : QObject(nullptr), m_name(name), m_uri(uri) diff --git a/HPPA/MapLayer.h b/HPPA/MapLayer.h index c9579f0..dd1bfdb 100644 --- a/HPPA/MapLayer.h +++ b/HPPA/MapLayer.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/MapLayerStore.cpp b/HPPA/MapLayerStore.cpp index 65ed3ad..f74ca03 100644 --- a/HPPA/MapLayerStore.cpp +++ b/HPPA/MapLayerStore.cpp @@ -1,4 +1,4 @@ -#include "MapLayerStore.h" +#include "MapLayerStore.h" #include "MapLayer.h" MapLayerStore::MapLayerStore(QObject* parent) diff --git a/HPPA/MapLayerStore.h b/HPPA/MapLayerStore.h index c535fa8..0988eda 100644 --- a/HPPA/MapLayerStore.h +++ b/HPPA/MapLayerStore.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/OneMotorControl.cpp b/HPPA/OneMotorControl.cpp index f5d0677..b01f118 100644 --- a/HPPA/OneMotorControl.cpp +++ b/HPPA/OneMotorControl.cpp @@ -1,4 +1,4 @@ -#include "OneMotorControl.h" +#include "OneMotorControl.h" OneMotorControl::OneMotorControl(QWidget* parent) : QDialog(parent) { @@ -27,7 +27,7 @@ void OneMotorControl::onConnectMotor() catch (std::exception const& e) { QMessageBox msgBox; - msgBox.setText(QString::fromLocal8Bit("ÇëÁ¬½ÓÂí´ï£¡")); + msgBox.setText(QString::fromLocal8Bit("请连接马达ï¼�")); msgBox.exec(); } diff --git a/HPPA/OneMotorControl.h b/HPPA/OneMotorControl.h index d336eda..01e8605 100644 --- a/HPPA/OneMotorControl.h +++ b/HPPA/OneMotorControl.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/PowerControl.cpp b/HPPA/PowerControl.cpp index 2bb9417..dcb231d 100644 --- a/HPPA/PowerControl.cpp +++ b/HPPA/PowerControl.cpp @@ -1,4 +1,4 @@ -#include "PowerControl.h" +#include "PowerControl.h" PowerControl::PowerControl(QWidget *parent) : QDialog(parent) diff --git a/HPPA/PowerControl.h b/HPPA/PowerControl.h index 3181f86..2d92722 100644 --- a/HPPA/PowerControl.h +++ b/HPPA/PowerControl.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/QDoubleSlider.cpp b/HPPA/QDoubleSlider.cpp index b3aaad9..938558c 100644 --- a/HPPA/QDoubleSlider.cpp +++ b/HPPA/QDoubleSlider.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "qDoubleSlider.h" QDoubleSlider::QDoubleSlider(QWidget* pParent /*= NULL*/) : QSlider(pParent), @@ -13,13 +13,13 @@ m_Multiplier(100.0) setFocusPolicy(Qt::NoFocus); } -//ÏòÍâ·¢Éä +//å�‘外å�‘å°„ void QDoubleSlider::notifyValueChanged(int Value) { emit valueChanged((double)Value / m_Multiplier); } -//½ÓÊÕÍâ±ß +//接收外边 void QDoubleSlider::setValue(double Value, bool BlockSignals) { QSlider::blockSignals(BlockSignals); diff --git a/HPPA/QDoubleSlider.h b/HPPA/QDoubleSlider.h index dcfdd22..160557e 100644 --- a/HPPA/QDoubleSlider.h +++ b/HPPA/QDoubleSlider.h @@ -1,4 +1,4 @@ -#ifndef Q_DOUBLE_SLIDER_H +#ifndef Q_DOUBLE_SLIDER_H #define Q_DOUBLE_SLIDER_H #include #include @@ -17,14 +17,14 @@ public: double value() const; public slots: - void notifyValueChanged(int value);//ÐźÅvalueChanged(int)µÄwrap - void setValue(double Value, bool BlockSignals = true);//QSlider::setValueº¯ÊýµÄwrap + void notifyValueChanged(int value);//ä¿¡å�·valueChanged(int)çš„wrap + void setValue(double Value, bool BlockSignals = true);//QSlider::setValue函数的wrap private slots: signals : - void valueChanged(double Value);//QSliderµÄvalueChangedÐźŵIJÎÊýΪÕûÐÍ - void rangeChanged(double Min, double Max);//QSliderµÄrangeChangedÐźŵIJÎÊýΪÕûÐÍ + void valueChanged(double Value);//QSliderçš„valueChangedä¿¡å�·çš„å�‚数为整型 + void rangeChanged(double Min, double Max);//QSliderçš„rangeChangedä¿¡å�·çš„å�‚数为整型 private: double m_Multiplier; diff --git a/HPPA/QMotorDoubleSlider.cpp b/HPPA/QMotorDoubleSlider.cpp index 32ccca3..57db859 100644 --- a/HPPA/QMotorDoubleSlider.cpp +++ b/HPPA/QMotorDoubleSlider.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "QMotorDoubleSlider.h" QMotorDoubleSlider::QMotorDoubleSlider(QWidget* pParent /*= NULL*/) :QSlider(pParent) { @@ -14,9 +14,9 @@ QMotorDoubleSlider::QMotorDoubleSlider(QWidget* pParent /*= NULL*/) :QSlider(pPa void QMotorDoubleSlider::setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionParam) { - //¸ù¾Ý¹«Ê½½«Âö³å»»ËãΪ¾àÀ룺1Âö³å¾àÀë(m_Multiplier)=µ¼³Ì/(360/²½¾à½Ç*ϸ·Ö±¶Êý)£»ÍøÖ·£ºhttps://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html - //m_Multiplier(0.00054496986),//ÉϺ£Å©¿ÆÔº£¬ÐÞ¸Äǰ£º0.00052734375/5=0.00010546875£»Ð޸ĺó׼ȷֵΪ0.000544969862759644£¬½üËÆÎª0.00054496986/5=0.000108993972£¬ÒòΪÓиö»úеװÖÃ1Âö³å¾àÀëÐèÒª³ýÒÔ5£» - //m_Multiplier(0.00054496986)//Ð˰²ÃËÅ©ÑÐËù + //æ ¹æ�®å…¬å¼�将脉冲æ�¢ç®—为è·�离:1脉冲è·�离(m_Multiplier)=导程/(360/æ­¥è·�è§’*细分å€�æ•°);网å�€ï¼šhttps://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html + //m_Multiplier(0.00054496986),//上海农科院,修改å‰�:0.00052734375/5=0.00010546875;修改å�Žå‡†ç¡®å€¼ä¸º0.000544969862759644,近似为0.00054496986/5=0.000108993972,因为有个机械装置1脉冲è·�离需è¦�除以5ï¼› + //m_Multiplier(0.00054496986)//兴安盟农研所 m_Multiplier = lead / (360 / stepAnglemar * getValidSubdivision(subdivisionParam)) * scaleFactor; } @@ -38,13 +38,13 @@ int QMotorDoubleSlider::getValidSubdivision(int subdivisionParam) return 256; } -//ÏòÍâ·¢Éä +//å�‘外å�‘å°„ void QMotorDoubleSlider::notifyValueChanged(int Value) { emit valueChanged((double)Value * m_Multiplier);////////// } -//½ÓÊÕÍâ±ß +//接收外边 void QMotorDoubleSlider::setValue(double Value, bool BlockSignals) { QSlider::blockSignals(BlockSignals); diff --git a/HPPA/QMotorDoubleSlider.h b/HPPA/QMotorDoubleSlider.h index 5a383a3..597686e 100644 --- a/HPPA/QMotorDoubleSlider.h +++ b/HPPA/QMotorDoubleSlider.h @@ -1,4 +1,4 @@ -#ifndef Q_MOTOR_DOUBLE_SLIDER_H +#ifndef Q_MOTOR_DOUBLE_SLIDER_H #define Q_MOTOR_DOUBLE_SLIDER_H #include #include @@ -15,7 +15,7 @@ public: void setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionParam); int getValidSubdivision(int subdivisionParam); - double m_Multiplier;//¸ù¾Ý¹«Ê½½«Âö³å»»ËãΪ¾àÀ룺1Âö³å¾àÀë(m_Multiplier)=µ¼³Ì/(360/²½¾à½Ç*ϸ·Ö±¶Êý)£»ÍøÖ·£ºhttps://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html + double m_Multiplier;//æ ¹æ�®å…¬å¼�将脉冲æ�¢ç®—为è·�离:1脉冲è·�离(m_Multiplier)=导程/(360/æ­¥è·�è§’*细分å€�æ•°);网å�€ï¼šhttps://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html void setRange(double Min, double Max); void setMinimum(double Min); @@ -23,13 +23,13 @@ public: void setMaximum(double Max); double maximum() const; double value() const; - double OriginalValue() const;//·µ»ØÂö³åÖµ£ºÂí´ïÐèҪʵ¼ÊµÄÂö³åÖµ£¬¶ø²»ÊǾàÀë - long getPositionPulse(double position);//¸ù¾Ý´«ÈëµÄ¾àÀë·µ»ØÂö³åÖµ + double OriginalValue() const;//返回脉冲值:马达需è¦�实际的脉冲值,而ä¸�是è·�离 + long getPositionPulse(double position);//æ ¹æ�®ä¼ å…¥çš„è·�离返回脉冲值 double getDistanceFromPulse(int pulse); public slots: - void notifyValueChanged(int value);//ÐźÅvalueChanged(int)µÄwrap - void setValue(double Value, bool BlockSignals = true);//QSlider::setValueº¯ÊýµÄwrap + void notifyValueChanged(int value);//ä¿¡å�·valueChanged(int)çš„wrap + void setValue(double Value, bool BlockSignals = true);//QSlider::setValue函数的wrap signals: void valueChanged(double Value); diff --git a/HPPA/RasterDataProvider.cpp b/HPPA/RasterDataProvider.cpp index 80fc349..ac6d827 100644 --- a/HPPA/RasterDataProvider.cpp +++ b/HPPA/RasterDataProvider.cpp @@ -1,4 +1,4 @@ -#include "RasterDataProvider.h" +#include "RasterDataProvider.h" #include #include #include diff --git a/HPPA/RasterDataProvider.h b/HPPA/RasterDataProvider.h index de1ce9f..630190b 100644 --- a/HPPA/RasterDataProvider.h +++ b/HPPA/RasterDataProvider.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/RasterLayer.cpp b/HPPA/RasterLayer.cpp index 7751f88..378dec7 100644 --- a/HPPA/RasterLayer.cpp +++ b/HPPA/RasterLayer.cpp @@ -1,4 +1,4 @@ -#include "RasterLayer.h" +#include "RasterLayer.h" #include "RasterDataProvider.h" #include "RasterRenderer.h" #include diff --git a/HPPA/RasterLayer.h b/HPPA/RasterLayer.h index 462a3fe..fafb800 100644 --- a/HPPA/RasterLayer.h +++ b/HPPA/RasterLayer.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "MapLayer.h" #include diff --git a/HPPA/RasterRenderer.cpp b/HPPA/RasterRenderer.cpp index 6e045be..6e9ba4e 100644 --- a/HPPA/RasterRenderer.cpp +++ b/HPPA/RasterRenderer.cpp @@ -1,4 +1,4 @@ -#include "RasterRenderer.h" +#include "RasterRenderer.h" #include "RasterDataProvider.h" #include #include diff --git a/HPPA/RasterRenderer.h b/HPPA/RasterRenderer.h index 8ba412b..648b461 100644 --- a/HPPA/RasterRenderer.h +++ b/HPPA/RasterRenderer.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/ResononNirImager.cpp b/HPPA/ResononNirImager.cpp index e5d30a6..3a6cf90 100644 --- a/HPPA/ResononNirImager.cpp +++ b/HPPA/ResononNirImager.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include #include #include @@ -14,7 +14,7 @@ ResononNirImager::~ResononNirImager() { if (buffer != nullptr) { - std::cout << "ÊͷŶÑÉÏÄÚ´æ" << std::endl; + std::cout << "释放堆上内存" << std::endl; free(buffer); free(dark); free(white); @@ -40,12 +40,12 @@ double ResononNirImager::getIntegrationTime() double ResononNirImager::getGain() { //return m_ResononNirImager.get_gain(); - return 0.0;//nir²»Ö§³Ögian + return 0.0;//nirä¸�支æŒ�gian } void ResononNirImager::setGain(const double gain) { - //m_ResononNirImager.set_gain(gain);//nir²»Ö§³Ögian + //m_ResononNirImager.set_gain(gain);//nirä¸�支æŒ�gian } void ResononNirImager::setFramerate(const double frames_per_second) @@ -103,12 +103,12 @@ void ResononNirImager::setSpectraBin(int new_spectral_bin) double ResononNirImager::auto_exposure() { - //µÚÒ»²½£ºÏÈÉèÖÃÆØ¹âʱ¼äΪÔÚµ±Ç°Ö¡ÂÊÇé¿öÏÂ×î´ó - double x = 1 / getFramerate() * 1000;//»ñÈ¡×î´óºÁÃëÆØ¹âʱ¼ä + //第一步:先设置æ›�光时间为在当å‰�帧率情况下最大 + double x = 1 / getFramerate() * 1000;//获å�–最大毫秒æ›�光时间 reConnectImage(); setIntegrationTime(x); - //µÚ¶þ²½£ºÍ¨¹ýÑ­»·Ñ°ÕÒ×î¼ÑÆØ¹âʱ¼ä + //第二步:通过循环寻找最佳æ›�光时间 imagerStartCollect(); while (true) @@ -117,7 +117,7 @@ double ResononNirImager::auto_exposure() if (GetMaxValue(buffer, m_FrameSize) >= 4095) { setIntegrationTime(getIntegrationTime() * 0.8); - std::cout << "×Ô¶¯ÆØ¹â-----------" << std::endl; + std::cout << "自动æ›�å…‰-----------" << std::endl; } else { @@ -128,7 +128,7 @@ double ResononNirImager::auto_exposure() reConnectImage(); //imagerStopCollect(); - //std::cout << "×Ô¶¯ÆØ¹â£º" << getIntegrationTime() << std::endl; + //std::cout << "自动æ›�光:" << getIntegrationTime() << std::endl; return getIntegrationTime(); } @@ -151,7 +151,7 @@ int ResononNirImager::getSampleCount() void ResononNirImager::focus() { m_iFocusFrameCounter = 1; - //std::cout << "µ÷½¹-----------" << std::endl; + //std::cout << "调焦-----------" << std::endl; double tmpFrmerate = getFramerate(); double tmpIntegrationTime = getIntegrationTime(); @@ -159,7 +159,7 @@ void ResononNirImager::focus() setFramerate(5); auto_exposure(); - std::cout << "µ÷½¹»ñµÃµÄÆØ¹âʱ¼äΪ£º" << getIntegrationTime() << std::endl; + std::cout << "调焦获得的æ›�光时间为:" << getIntegrationTime() << std::endl; reConnectImage(); imagerStartCollect(); @@ -183,12 +183,12 @@ void ResononNirImager::focus() reConnectImage(); setIntegrationTime(tmpIntegrationTime); - setFramerate(tmpFrmerate);//±ØÐëÒª·ÅÔÚÕâÀÈç¹û²»·ÅÕâÀÕâÐдúÂë¾ÍÒª³ö´í¡£¡£¡£¡£¡£¡£ + setFramerate(tmpFrmerate);//å¿…é¡»è¦�放在这里,如果ä¸�放这里,这行代ç �å°±è¦�出错。。。。。。 } void ResononNirImager::record_dark() { - std::cout << "²É¼¯°µµçÁ÷£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl; + std::cout << "采集暗电æµ�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�" << std::endl; reConnectImage(); imagerStartCollect(); @@ -221,7 +221,7 @@ void ResononNirImager::record_dark() void ResononNirImager::record_white() { - std::cout << "²É¼¯°×°å£¡£¡£¡£¡£¡£¡£¡£¡£¡" << std::endl; + std::cout << "采集白æ�¿ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�ï¼�" << std::endl; reConnectImage(); imagerStartCollect(); @@ -247,7 +247,7 @@ void ResononNirImager::record_white() imagerStopCollect(); - //°×°å¿Û°µµçÁ÷ + //白æ�¿æ‰£æš—电æµ� if (m_HasDark) { for (size_t i = 0; i < m_FrameSize; i++) @@ -275,17 +275,17 @@ void ResononNirImager::start_record() //std::cout << "------------------------------------------------------" << std::endl; m_iFrameCounter = 0; - m_RgbImage->m_iFrameCounter = 0;//ÉèÖÃÌî³ärgbͼÏñµÄµÚ0ÐÐ + m_RgbImage->m_iFrameCounter = 0;//设置填充rgb图åƒ�的第0行 m_bRecordControlState = true; - //ÅжÏÄÚ´æbufferÊÇ·ñÕý³£·ÖÅä + //判断内存buffer是å�¦æ­£å¸¸åˆ†é…� if (buffer == 0) { std::cerr << "Error: memory could not be allocated for datacube"; exit(EXIT_FAILURE); } - // ÔÚ¿ªÊ¼²É¼¯Ê±½ö·¢³öÎļþÐÅÏ¢£¬UI ²ã×ÔÐд´½¨ MapLayer ²¢¹ÜÀíÉúÃüÖÜÆÚ + // 在开始采集时仅å�‘出文件信æ�¯ï¼ŒUI 层自行创建 MapLayer 并管ç�†ç”Ÿå‘½å‘¨æœŸ // prepare file name that will be used for saving m_FileName2Save2 = m_FileName2Save + "_" + std::to_string(m_FileSavedCounter) + ".bil"; QString baseName = QString::fromStdString(getFileNameFromPath(m_FileName2Save2)); @@ -300,7 +300,7 @@ void ResononNirImager::start_record() string timesFile = removeFileExtension(m_FileName2Save2) + ".times"; FILE* hTimesFile = fopen(timesFile.c_str(), "w+"); - reConnectImage();//nirµÚ¶þ´Î²É¼¯Ê±ÐèÒªÖØÐÂÁ¬½ÓÏà»ú£¬·ñÔòº¯ÊýimagerStartCollect()»á±¨´í¡£¡£¡£¡£¡£¡£ + reConnectImage();//nir第二次采集时需è¦�é‡�新连接相机,å�¦åˆ™å‡½æ•°imagerStartCollect()会报错。。。。。。 imagerStartCollect(); while (m_bRecordControlState) { @@ -310,7 +310,7 @@ void ResononNirImager::start_record() long long timeOs = getNanosecondsSinceMidnight(); //qDebug() << "time ns-------------------: " << timeOs; - //¼õÈ¥°µµçÁ÷£¬Ó¦ÎªbufferºÍdark¶¼ÊÇunsigned short£¬ËùÒÔµ±dark>bufferʱ£¬buffer-dark=65535 + //å‡�去暗电æµ�,应为bufferå’Œdark都是unsigned short,所以当dark>buffer时,buffer-dark=65535 if (m_HasDark) { for (size_t i = 0; i < m_FrameSize; i++) @@ -328,12 +328,12 @@ void ResononNirImager::start_record() } - //ת·´ÉäÂÊ + //转å��射率 if (m_HasWhite) { for (size_t i = 0; i < m_FrameSize; i++) { - //´¦Àí³ýÊý£¨°×°å£©Îª0µÄÇé¿ö + //处ç�†é™¤æ•°ï¼ˆç™½æ�¿ï¼‰ä¸º0的情况 if (white[i] != 0) { pixelValueTmp = buffer[i]; @@ -351,12 +351,12 @@ void ResononNirImager::start_record() x = fwrite(buffer, 2, m_FrameSize, m_fImage); fprintf(hTimesFile, "%ll\n", timeOs); - //½«rgb²¨¶ÎÌáÈ¡³öÀ´£¬ÒÔ±ãÔÚ½çÃæÖÐÏÔʾ + //å°†rgb波段æ��å�–出æ�¥ï¼Œä»¥ä¾¿åœ¨ç•Œé�¢ä¸­æ˜¾ç¤º m_RgbImage->FillRgbImage(buffer);//?????????????????????????????????????????????????????????????????????????????????????????????????????? - //std::cout << "µÚ" << m_iFrameCounter << "֡дÁË" << x << "¸öunsigned short¡£" << std::endl; + //std::cout << "第" << m_iFrameCounter << "帧写了" << x << "个unsigned short。" << std::endl; - //ÿ¸ô1s½øÐÐÒ»´Î½çÃæÍ¼ÐλæÖÆ + //æ¯�éš”1s进行一次界é�¢å›¾å½¢ç»˜åˆ¶ if (m_iFrameCounter % (int)getFramerate() == 0) { emit PlotSignal(m_FileSavedCounter, m_iFrameCounter, filePath); @@ -370,15 +370,15 @@ void ResononNirImager::start_record() } imagerStopCollect(); - //ÔÚ×îºóÒ»´Î»­Í¼Ç°ÐèÒª½øÐÐÒ»´ÎÀ­Éì + //在最å�Žä¸€æ¬¡ç”»å›¾å‰�需è¦�进行一次拉伸 //m_RgbImage - emit PlotSignal(m_FileSavedCounter, -1, filePath);//²É¼¯Íê³Éºó½øÐÐÒ»´Î»­Í¼£¬ÒÔ·À²É¼¯Ö¡Êý²»ÊÇÖ¡Âʵı¶Êýʱ£¬»­Í¼²»È« + emit PlotSignal(m_FileSavedCounter, -1, filePath);//采集完æˆ�å�Žè¿›è¡Œä¸€æ¬¡ç”»å›¾ï¼Œä»¥é˜²é‡‡é›†å¸§æ•°ä¸�是帧率的å€�数时,画图ä¸�å…¨ m_bRecordControlState = false; WriteHdr(); - // ·¢Éä ImageFileSaved Ðźţ¬Í¨Öª UI ²ã°Ñ¸ÃÎļþ¼ÓÈëͼ²ã¹ÜÀíÆ÷ - // m_FileName2Save2 ±£´æÁ˱¾´ÎдÈëµÄ .bil ÎļþÃû£¨ÀýÈç "tmp_image_0.bil"£© + // å�‘å°„ ImageFileSaved ä¿¡å�·ï¼Œé€šçŸ¥ UI 层把该文件加入图层管ç�†å™¨ + // m_FileName2Save2 ä¿�存了本次写入的 .bil 文件å��(例如 "tmp_image_0.bil") emit ImageFileSaved(QString::fromStdString(m_FileName2Save2), m_FileSavedCounter); m_FileSavedCounter++; diff --git a/HPPA/ResononNirImager.h b/HPPA/ResononNirImager.h index 4e310a3..e518888 100644 --- a/HPPA/ResononNirImager.h +++ b/HPPA/ResononNirImager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/RgbCameraOperation.cpp b/HPPA/RgbCameraOperation.cpp index ab24e12..5b08299 100644 --- a/HPPA/RgbCameraOperation.cpp +++ b/HPPA/RgbCameraOperation.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "RgbCameraOperation.h" RgbCameraOperation::RgbCameraOperation() @@ -14,14 +14,14 @@ RgbCameraOperation::~RgbCameraOperation() void RgbCameraOperation::OpenCamera() { - std::cout << "´ò¿ªÉãÏñÍ·+++++++++++++++++++++++++++++++++++++++++++" << std::endl; + std::cout << "打开摄åƒ�头+++++++++++++++++++++++++++++++++++++++++++" << std::endl; cam = new cv::VideoCapture(0); record = true; while (record) { - //std::cout << "²É¼¯Ó°Ïñ+++++++++++++++++++++++++++++++++++++++++++" << std::endl; + //std::cout << "采集影åƒ�+++++++++++++++++++++++++++++++++++++++++++" << std::endl; cam->read(frame); m_qImage = m_ImageProcessor->Mat2QImage(frame); @@ -36,14 +36,14 @@ void RgbCameraOperation::OpenCamera() void RgbCameraOperation::OpenCamera_callback() { - std::cout << "´ò¿ªÉãÏñÍ·+++++++++++++++++++++++++++++++++++++++++++" << std::endl; + std::cout << "打开摄åƒ�头+++++++++++++++++++++++++++++++++++++++++++" << std::endl; cam = new cv::VideoCapture(0); record = true; while (record) { - //std::cout << "²É¼¯Ó°Ïñ+++++++++++++++++++++++++++++++++++++++++++" << std::endl; + //std::cout << "采集影åƒ�+++++++++++++++++++++++++++++++++++++++++++" << std::endl; cam->read(frame); m_qImage = m_ImageProcessor->Mat2QImage(frame); @@ -62,7 +62,7 @@ void RgbCameraOperation::setCallback(void(*func)()) void RgbCameraOperation::CloseCamera() { - std::cout << "¹Ø±ÕÉãÏñÍ·+++++++++++++++++++++++++++++++++++++++++++" << std::endl; + std::cout << "关闭摄åƒ�头+++++++++++++++++++++++++++++++++++++++++++" << std::endl; record = false; } diff --git a/HPPA/RgbCameraOperation.h b/HPPA/RgbCameraOperation.h index d993049..4b36edc 100644 --- a/HPPA/RgbCameraOperation.h +++ b/HPPA/RgbCameraOperation.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #ifndef RGBCAMERAOPERATION_H #define RGBCAMERAOPERATION_H @@ -36,7 +36,7 @@ private: public slots: void OpenCamera(); - void OpenCamera_callback();//²»Ê¹ÓÃÐźŶøÊ¹Óûص÷º¯ÊýÀ´Í¨Öª½çÃæË¢ÐÂÊÓÆµ + void OpenCamera_callback();//ä¸�使用信å�·è€Œä½¿ç”¨å›žè°ƒå‡½æ•°æ�¥é€šçŸ¥ç•Œé�¢åˆ·æ–°è§†é¢‘ void CloseCamera(); signals: diff --git a/HPPA/RobotArmControl.cpp b/HPPA/RobotArmControl.cpp index 4f434e8..75f5106 100644 --- a/HPPA/RobotArmControl.cpp +++ b/HPPA/RobotArmControl.cpp @@ -1,4 +1,4 @@ -#include "RobotArmControl.h" +#include "RobotArmControl.h" RobotArmControl::RobotArmControl(QWidget* parent): QDialog(parent) { @@ -82,7 +82,7 @@ void RobotArmControl::getTaskList() files.append(line.trimmed()); } - ////ÏÈÇå³ýÊý¾Ý£¬È»ºóÌí¼ÓÊý¾Ý + ////先清除数æ�®ï¼Œç„¶å�Žæ·»åŠ æ•°æ�® //for (size_t i = 0; i < files.length(); i++) //{ // int row = m_pModel->rowCount(); @@ -112,7 +112,7 @@ void RobotArmControl::executeTaskWithHyperImager() QModelIndex index = ui.taskList_listView->currentIndex(); if (-1 == index.row()) { - //µ¯´°ÌáʾÓû§Ñ¡ÔñÎļþ + //弹窗æ��示用户选择文件 ui.textEdit->append("Please select file on the left!"); return; } @@ -148,7 +148,7 @@ void RobotArmControl::executeTaskWithoutHyperImager() QModelIndex index = ui.taskList_listView->currentIndex(); if (-1 == index.row()) { - //µ¯´°ÌáʾÓû§Ñ¡ÔñÎļþ + //弹窗æ��示用户选择文件 ui.textEdit->append("Please select file on the left!"); return; } @@ -290,7 +290,7 @@ bool RobotController::processResponse_getJbiState(QJsonObject response, QString& void RobotController::getPoint() { QJsonObject response; - getJbiState(response);//0 ֹͣ״̬,1 ÔÝͣ״̬,2 ¼±Í£×´Ì¬,3 ÔËÐÐ״̬,4 ´íÎó״̬ + getJbiState(response);//0 å�œæ­¢çжæ€�,1 æš‚å�œçжæ€�,2 急å�œçжæ€�,3 è¿�行状æ€�,4 错误状æ€� QString result; bool x = processResponse_getJbiState(response, result); //qDebug() << "getJbiState:" << result; @@ -302,7 +302,7 @@ void RobotController::getPoint() m_iCurrentJbiJobLine = 0; m_iFileCounter = 0; - //·¢ÉäÐźţ¬Ïà»úÍ£Ö¹²É¼¯ + //å�‘å°„ä¿¡å�·ï¼Œç›¸æœºå�œæ­¢é‡‡é›† emit hsiRecordSignal(-1); return; @@ -321,12 +321,12 @@ void RobotController::getPoint() m_iFileCounter++; qDebug() << "Changed! CurrentJobLine:" << m_iCurrentJbiJobLine_tmp; - //·¢ÉäÐźţ¬Ïà»úÍ£Ö¹²É¼¯ + //å�‘å°„ä¿¡å�·ï¼Œç›¸æœºå�œæ­¢é‡‡é›† emit hsiRecordSignal(-1); m_iCurrentJbiJobLine = m_iCurrentJbiJobLine_tmp; - //·¢ÉäÐźţ¬Ïà»ú¿ªÊ¼²É¼¯ + //å�‘å°„ä¿¡å�·ï¼Œç›¸æœºå¼€å§‹é‡‡é›† emit hsiRecordSignal(m_iFileCounter); } } @@ -421,7 +421,7 @@ bool RobotController::getRobotMode(QJsonObject& re) bool RobotController::checkJbiExist(const QString& jbiFilename, QJsonObject& re) { QJsonObject paramsRunJbi; - paramsRunJbi["filename"] = jbiFilename;//ʹÓöÔÏó½á¹¹ + paramsRunJbi["filename"] = jbiFilename;//使用对象结构 sendCommand("checkJbiExist", paramsRunJbi); socket->waitForReadyRead(m_iTimeout); @@ -432,7 +432,7 @@ bool RobotController::checkJbiExist(const QString& jbiFilename, QJsonObject& re) bool RobotController::setServoStatus(int status, QJsonObject& re) { QJsonObject params_set_servo_status; - params_set_servo_status["status"] = status;//ʹÓöÔÏó½á¹¹ + params_set_servo_status["status"] = status;//使用对象结构 sendCommand("set_servo_status", params_set_servo_status); socket->waitForReadyRead(m_iTimeout); @@ -443,7 +443,7 @@ bool RobotController::setServoStatus(int status, QJsonObject& re) bool RobotController::runJbi(const QString& jbiFilename, QJsonObject& re, bool isRecordHsi) { QJsonObject paramsRunJbi; - paramsRunJbi["filename"] = jbiFilename;//ʹÓöÔÏó½á¹¹ + paramsRunJbi["filename"] = jbiFilename;//使用对象结构 sendCommand("runJbi", paramsRunJbi); socket->waitForReadyRead(m_iTimeout); diff --git a/HPPA/RobotArmControl.h b/HPPA/RobotArmControl.h index 29497a5..7dcc079 100644 --- a/HPPA/RobotArmControl.h +++ b/HPPA/RobotArmControl.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include #include @@ -26,33 +26,33 @@ struct ECData quint32 msgSize; quint64 timeStamp; quint8 auto_cycle; - double machinePos[8];//¹Ø½Ú×ø±ê - double machinePose[6];//»ù×ù×ø±ê - double machineUserPose[6];//Óû§×ø±ê - double torque[8];//¹Ø½Ú¶î¶¨Á¦¾Ø°Ù·Ö±È - quint32 robotState;//»úÆ÷ÈË״̬ - quint32 servoReady;//ËÅ·þʹÄÜ״̬ - quint32 can_motor_run;//ͬ²½×´Ì¬ - qint32 motor_speed[8];//¸÷Öáµç»úתËÙ - quint32 robotMode;//»úÆ÷ÈËģʽ - double analog_ioInput[3];//Ä£ÄâÁ¿ÊäÈë¿ÚÊý¾Ý - double analog_ioOutput[5];//Ä£ÄâÁ¿Êä³ö¿ÚÊý¾Ý - quint64 digital_ioInput;//Êý×ÖÁ¿ÊäÈë¿ÚÊý¾ÝµÄ¶þ½øÖÆÐÎʽ - quint64 digital_ioOutput;//Êý×ÖÁ¿Êä³ö¿ÚÊý¾ÝµÄ¶þ½øÖÆÐÎʽ - quint8 collision;//Åöײ±¨¾¯×´Ì¬ - double machineFlangePose[6];//»ù×ù×ø±êϵϵķ¨À¼ÅÌÖÐÐÄλ×Ë - double machineUserFlangePose[6];//Óû§×ø±êϵϵķ¨À¼ÅÌÖÐÐÄλ×Ë - quint8 emergencyStopState;//µ±Ç°ÊÇ·ñ´¦ÓÚ¼±Í£×´Ì¬ - double tcpSpeed;//tcpÔ˶¯ËÙ¶È - double joIntSpeed[8];//¹Ø½ÚÔ˶¯Ï¸÷¹Ø½ÚÔ˶¯ËÙ¶È - double tcpAcc;//tcp¼ÓËÙ¶È - double joIntAcc[8];//¹Ø½ÚÔ˶¯Ï¸÷¹Ø½Ú¼ÓËÙ¶È - double joIntTemperature[6];//ÎÂ¶È - double joIntTorque[6];//Êä³öŤ¾Ø - double extJoIntTorques[6];//Íⲿ¹Ø½ÚŤ¾ØÖµ - double exTcpForceIntool[6];//µ±Ç°¹¤¾ß×ø±êϵϵÄÍⲿĩ¶ËÁ¦/Á¦¾Ø¹À¼ÆÖµ - quint8 dragState;//Í϶¯Ê¹ÄÜ״̬ - quint8 sensor_connected_state;//Á¦¿Ø´«¸ÐÆ÷Á¬½Ó״̬ + double machinePos[8];//关节å��æ ‡ + double machinePose[6];//基座å��æ ‡ + double machineUserPose[6];//用户å��æ ‡ + double torque[8];//关节é¢�定力矩百分比 + quint32 robotState;//机器人状æ€� + quint32 servoReady;//伺æœ�使能状æ€� + quint32 can_motor_run;//å�Œæ­¥çжæ€� + qint32 motor_speed[8];//å�„轴电机转速 + quint32 robotMode;//机器人模å¼� + double analog_ioInput[3];//模拟é‡�输入å�£æ•°æ�® + double analog_ioOutput[5];//模拟é‡�输出å�£æ•°æ�® + quint64 digital_ioInput;//æ•°å­—é‡�输入å�£æ•°æ�®çš„二进制形å¼� + quint64 digital_ioOutput;//æ•°å­—é‡�输出å�£æ•°æ�®çš„二进制形å¼� + quint8 collision;//碰撞报警状æ€� + double machineFlangePose[6];//基座å��标系下的法兰盘中心ä½�å§¿ + double machineUserFlangePose[6];//用户å��标系下的法兰盘中心ä½�å§¿ + quint8 emergencyStopState;//当å‰�是å�¦å¤„于急å�œçжæ€� + double tcpSpeed;//tcpè¿�动速度 + double joIntSpeed[8];//关节è¿�动下å�„关节è¿�动速度 + double tcpAcc;//tcp加速度 + double joIntAcc[8];//关节è¿�动下å�„关节加速度 + double joIntTemperature[6];//温度 + double joIntTorque[6];//输出扭矩 + double extJoIntTorques[6];//外部关节扭矩值 + double exTcpForceIntool[6];//当å‰�工具å��标系下的外部末端力/力矩估计值 + quint8 dragState;//拖动使能状æ€� + quint8 sensor_connected_state;//力控传感器连接状æ€� quint8 reserved; quint32 matchingWord; }; @@ -98,10 +98,10 @@ public: bool processResponse_getJbiState(QJsonObject response, QString& result); bool getRobotPose(QJsonObject& re); - bool getRobotState(QJsonObject& re);//ֹͣ״̬ 0£¬ÔÝͣ״̬ 1£¬¼±Í£×´Ì¬ 2£¬ÔËÐÐ״̬ 3£¬±¨¾¯×´Ì¬ 4£¬Åöײ״̬ 5 - bool getJbiState(QJsonObject& re);//0 ֹͣ״̬,1 ÔÝͣ״̬,2 ¼±Í£×´Ì¬,3 ÔËÐÐ״̬,4 ´íÎó״̬ + bool getRobotState(QJsonObject& re);//å�œæ­¢çжæ€� 0,暂å�œçжæ€� 1,急å�œçжæ€� 2,è¿�行状æ€� 3,报警状æ€� 4,碰撞状æ€� 5 + bool getJbiState(QJsonObject& re);//0 å�œæ­¢çжæ€�,1 æš‚å�œçжæ€�,2 急å�œçжæ€�,3 è¿�行状æ€�,4 错误状æ€� bool getCurrentJobLine(QJsonObject& re); - bool getRobotMode(QJsonObject& re);//ʾ½Ìģʽ 0£¬×Ô¶¯Ä£Ê½ 1£¬Ô¶³Ìģʽ 2 + bool getRobotMode(QJsonObject& re);//示教模å¼� 0,自动模å¼� 1,远程模å¼� 2 bool checkJbiExist(const QString& jbiFilename, QJsonObject& re); bool setServoStatus(int status, QJsonObject& re); bool runJbi(const QString& jbiFilename, QJsonObject& re, bool isRecordHsi); diff --git a/HPPA/TabManager.cpp b/HPPA/TabManager.cpp index b845442..572ff4a 100644 --- a/HPPA/TabManager.cpp +++ b/HPPA/TabManager.cpp @@ -1,4 +1,4 @@ -#include "TabManager.h" +#include "TabManager.h" TabManager::TabManager(QTabWidget* tabWidget, QObject* parent) : QObject(parent), @@ -27,7 +27,7 @@ void TabManager::hideTab(QWidget* page) m_hiddenTabs.insert(page, info); - // Èç¹ûÒþ²ØµÄÊǵ±Ç°Ò³£¬ÏÈÇл»£¬±ÜÃâ¿Õ°× + // 如果éš�è—�的是当å‰�页,先切æ�¢ï¼Œé�¿å…�空白 if (m_tabWidget->currentIndex() == index) { int next = (index > 0) ? index - 1 : 0; diff --git a/HPPA/TabManager.h b/HPPA/TabManager.h index 22ad759..fd7d227 100644 --- a/HPPA/TabManager.h +++ b/HPPA/TabManager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/View3D.h b/HPPA/View3D.h index 9bbb63d..c5facaa 100644 --- a/HPPA/View3D.h +++ b/HPPA/View3D.h @@ -1,4 +1,4 @@ -#ifndef VIEW3D_H +#ifndef VIEW3D_H #define VIEW3D_H #include diff --git a/HPPA/View3DModelManager.cpp b/HPPA/View3DModelManager.cpp index 0b796c4..28e1552 100644 --- a/HPPA/View3DModelManager.cpp +++ b/HPPA/View3DModelManager.cpp @@ -1,4 +1,4 @@ -#include "View3DModelManager.h" +#include "View3DModelManager.h" View3DModelManager::View3DModelManager(QWidget* parent) : QWidget(parent) diff --git a/HPPA/View3DModelManager.h b/HPPA/View3DModelManager.h index 9ee0b8e..6729e39 100644 --- a/HPPA/View3DModelManager.h +++ b/HPPA/View3DModelManager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include #include diff --git a/HPPA/aboutWindow.cpp b/HPPA/aboutWindow.cpp index 7cddd1c..68b83d2 100644 --- a/HPPA/aboutWindow.cpp +++ b/HPPA/aboutWindow.cpp @@ -1,4 +1,4 @@ -#include "aboutWindow.h" +#include "aboutWindow.h" #include #include @@ -6,7 +6,7 @@ aboutWindow::aboutWindow(QWidget* parent) { ui.setupUi(this); - ui.companylname_label->setOpenExternalLinks(true);//ÉèÖÃΪtrue²ÅÄÜ´ò¿ªÍøÒ³ + ui.companylname_label->setOpenExternalLinks(true);//设置为trueæ‰�能打开网页 QString text = ui.companylname_label->text(); ui.companylname_label->setText("" + text); diff --git a/HPPA/aboutWindow.h b/HPPA/aboutWindow.h index 6ad442a..fd98533 100644 --- a/HPPA/aboutWindow.h +++ b/HPPA/aboutWindow.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/adjustTable.cpp b/HPPA/adjustTable.cpp index e6c5273..36b43b6 100644 --- a/HPPA/adjustTable.cpp +++ b/HPPA/adjustTable.cpp @@ -1,4 +1,4 @@ -#include "adjustTable.h" +#include "adjustTable.h" adjustTable::adjustTable(QWidget *parent) : QDialog(parent) diff --git a/HPPA/adjustTable.h b/HPPA/adjustTable.h index 79fa265..d663b1b 100644 --- a/HPPA/adjustTable.h +++ b/HPPA/adjustTable.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/fileOperation.cpp b/HPPA/fileOperation.cpp index 79916be..1080bdc 100644 --- a/HPPA/fileOperation.cpp +++ b/HPPA/fileOperation.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "fileOperation.h" #include "AppSettings.h" @@ -38,7 +38,7 @@ string FileOperation::getDirectoryFromString(string directory) if (!dir.exists(tmp)) { bool res = dir.mkpath(tmp); - //qDebug() << "н¨Ä¿Â¼ÊÇ·ñ³É¹¦" << res; + //qDebug() << "新建目录是å�¦æˆ�功" << res; } return directory; } @@ -58,9 +58,9 @@ bool FileOperation::copyFile(QString source, QString target) while (!in.eof()) { - in.read(buffer, 256); //´ÓÎļþÖжÁÈ¡256¸ö×Ö½ÚµÄÊý¾Ýµ½»º´æÇø - n = in.gcount(); //ÓÉÓÚ×îºóÒ»Ðв»Öª¶ÁÈ¡Á˶àÉÙ×Ö½ÚµÄÊý¾Ý£¬ËùÒÔÓú¯Êý¼ÆËãһϡ£ - out.write(buffer, n); //дÈëÄǸö×Ö½ÚµÄÊý¾Ý + in.read(buffer, 256); //从文件中读å�–256个字节的数æ�®åˆ°ç¼“存区 + n = in.gcount(); //由于最å�Žä¸€è¡Œä¸�知读å�–了多少字节的数æ�®ï¼Œæ‰€ä»¥ç”¨å‡½æ•°è®¡ç®—一下。 + out.write(buffer, n); //写入那个字节的数æ�® } in.close(); out.close(); @@ -68,7 +68,7 @@ bool FileOperation::copyFile(QString source, QString target) string::size_type idx; idx = source1.find("hdr"); - if (idx == string::npos) //²»´æÔÚ¡£ + if (idx == string::npos) //ä¸�存在。 emit CopyFinishedSignal(); return 1; diff --git a/HPPA/fileOperation.h b/HPPA/fileOperation.h index 44adf3c..fdfc6e8 100644 --- a/HPPA/fileOperation.h +++ b/HPPA/fileOperation.h @@ -1,4 +1,4 @@ -#ifndef FILE_OPERATIOIN_H +#ifndef FILE_OPERATIOIN_H #define FILE_OPERATIOIN_H #include @@ -36,6 +36,6 @@ public Q_SLOTS: signals: - void CopyFinishedSignal();//»æÖÆÓ°ÏñÐźŠ+ void CopyFinishedSignal();//绘制影åƒ�ä¿¡å�· }; #endif diff --git a/HPPA/focusWindow.h b/HPPA/focusWindow.h index 54c9199..f5b8d89 100644 --- a/HPPA/focusWindow.h +++ b/HPPA/focusWindow.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "windows.h" #include @@ -33,19 +33,19 @@ #include #include -// Êý¾Ý¼Ç¼½á¹¹Ìå +// æ•°æ�®è®°å½•结构体 struct PositionData { - double targetPosition; // Ä¿±êλÖà - double actualPosition; // ʵ¼ÊÂí´ïλÖà - double cameraIndex; // Ïà»ú²É¼¯Ö¸Êý - QDateTime timestamp; // ʱ¼ä´Á + double targetPosition; // 目标ä½�ç½® + double actualPosition; // 实际马达ä½�ç½® + double cameraIndex; // 相机采集指数 + QDateTime timestamp; // 时间戳 PositionData(double target = 0, double actual = 0.0, double index = 0.0) : targetPosition(target), actualPosition(actual), cameraIndex(index), timestamp(QDateTime::currentDateTime()) {} }; -// Эµ÷¿ØÖÆÆ÷ +// å��调控制器 class MotionCaptureCoordinator : public QObject { Q_OBJECT @@ -59,7 +59,7 @@ public: bool saveToCsv(const QString& filename); public slots: - void startStepMotion(double speed, int stepInterval = 100, double startPos = 0, double endPos = -1);//-1£ºÂí´ïÄܵ½´ïµÄ×îԶλÖà + void startStepMotion(double speed, int stepInterval = 100, double startPos = 0, double endPos = -1);//-1:马达能到达的最远ä½�ç½® void stopStepMotion(); signals: @@ -159,7 +159,7 @@ public Q_SLOTS: void onExit(); signals: - void StartManualFocusSignal(int);//1£º¿ªÊ¼µ÷½¹£»0£ºÍ£Ö¹µ÷½¹£» + void StartManualFocusSignal(int);//1:开始调焦;0:å�œæ­¢è°ƒç„¦ï¼› void move2LocSignal(int, double, double, int); void move2MaxLocSignal(int, double, int); diff --git a/HPPA/hppaConfigFile.cpp b/HPPA/hppaConfigFile.cpp index 81fd30d..55e2cd5 100644 --- a/HPPA/hppaConfigFile.cpp +++ b/HPPA/hppaConfigFile.cpp @@ -1,4 +1,4 @@ -// +// // Created by tangchao on 2023/3/25. // @@ -301,10 +301,10 @@ bool Configfile::createConfigFile() Setting& x = motionPlatform.add("x", Setting::TypeGroup); Setting& y = motionPlatform.add("y", Setting::TypeGroup); - Setting& x_StepAnglemar = x.add("StepAnglemar", Setting::TypeFloat) = 1.8;//²½¾à½Ç - Setting& x_Lead = x.add("Lead", Setting::TypeFloat) = 13.5;//µ¼³Ì£¬µ¥Î»£ºcm - Setting& x_SubdivisionMultiples = x.add("SubdivisionMultiples", Setting::TypeInt) = 7;//ϸ·Ö±¶Êý - Setting& x_ScaleFactor = x.add("ScaleFactor", Setting::TypeFloat) = 1.0;//Ëõ·ÅÒò×Ó + Setting& x_StepAnglemar = x.add("StepAnglemar", Setting::TypeFloat) = 1.8;//æ­¥è·�è§’ + Setting& x_Lead = x.add("Lead", Setting::TypeFloat) = 13.5;//导程,å�•ä½�:cm + Setting& x_SubdivisionMultiples = x.add("SubdivisionMultiples", Setting::TypeInt) = 7;//细分å€�æ•° + Setting& x_ScaleFactor = x.add("ScaleFactor", Setting::TypeFloat) = 1.0;//缩放因å­� Setting& x_MaxRange = x.add("MaxRange", Setting::TypeFloat) = 120.0; Setting& y_StepAnglemar = y.add("StepAnglemar", Setting::TypeFloat) = 1.8; Setting& y_Lead = y.add("Lead", Setting::TypeFloat) = 13.5; @@ -569,14 +569,14 @@ bool CorningConfigfile::getPushFlowParam(int& flowSwitch, int& rgbHeight, int& f if (!root.exists("push_flow_param")) { - // ÅäÖÃÏî²»´æÔÚ£¬Ìí¼ÓÅäÖÃÏî + // é…�置项ä¸�存在,添加é…�置项 Setting& push_flow_param = root.add("push_flow_param", Setting::TypeGroup); push_flow_param.add("flow_switch", Setting::TypeInt) = 0; push_flow_param.add("rgb_height", Setting::TypeInt) = 720; push_flow_param.add("framerate_video", Setting::TypeInt) = 5; - // ±£´æÐ޸ĺóµÄÅäÖõ½Îļþ + // ä¿�存修改å�Žçš„é…�置到文件 try { QList fileInfo = getFileInfo(QString::fromStdString(m_configfilePath)); diff --git a/HPPA/hppaConfigFile.h b/HPPA/hppaConfigFile.h index 09d67d3..e59306d 100644 --- a/HPPA/hppaConfigFile.h +++ b/HPPA/hppaConfigFile.h @@ -1,4 +1,4 @@ -// +// // Created by tangchao on 2023/3/25. // @@ -62,7 +62,7 @@ public: bool getspatialBin(int& spatialBin); bool getEffectiveWindow(int& width, int& offsetx, int& height, int& offsety); bool getEffectiveWindowRoi(int& width, int& offsetx); - bool getWindowOffsety_HeightOfSpectral(int& offsety, int& height, string spectralBinString);//spectralBinString = "bin1"»òÕß¡±bin2¡° + bool getWindowOffsety_HeightOfSpectral(int& offsety, int& height, string spectralBinString);//spectralBinString = "bin1"或者â€�bin2“ bool getGainOffset(float& gain, float& offset); bool getGainOffsetOfSpectralBin1(float& gain, float& offset); bool getSN(QString& SN); diff --git a/HPPA/image2display.cpp b/HPPA/image2display.cpp index 3c5cb0c..35fb018 100644 --- a/HPPA/image2display.cpp +++ b/HPPA/image2display.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "image2display.h" #include @@ -16,7 +16,7 @@ void CImage::SetRgbImageWidthAndHeight(int BandCount, int Sample, int FrameNumbe if (m_QRgbImage != nullptr) { - delete m_QRgbImage;//ÓÐÎÊÌ⣿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿ + delete m_QRgbImage;//有问题???????????????????????????????????????????????? } //m_QRgbImage = new QImage(Sample, FrameNumber, QImage::Format_RGB888); @@ -54,19 +54,19 @@ void CImage::SetRgbImageWidthAndHeight(int BandCount, int Sample, int FrameNumbe - std::cout << "ÉèÖÃÖ¡Êý£º" << FrameNumber << std::endl; + std::cout << "设置帧数:" << FrameNumber << std::endl; - m_iFrameCounter = 0;//ÿ´Î¶¼ÖØÖÃΪ0 + m_iFrameCounter = 0;//æ¯�次都é‡�置为0 m_iSampleNumber = Sample; m_iBandNumber = BandCount; m_iFrameNumber = FrameNumber; - //std::cout << "rgbÓ°ÏñÄÚ´æµØÖ·Îª£º" << m_QRgbImage << std::endl; + //std::cout << "rgbå½±åƒ�内存地å�€ä¸ºï¼š" << m_QRgbImage << std::endl; } void CImage::FillRgbImage(unsigned short *datacube) { - //uchar==unsigned char£¬ÄÚ´æ´óС£º1¸ö×Ö½Ú£¬·¶Î§Îª0-255 + //uchar==unsigned char,内存大å°�:1个字节,范围为0-255 //uchar * imagebits24 = m_QRgbImage->bits(); //uchar * imagebits24 = m_QRgbImage->scanLine(m_iFrameCounter);//?????????????????????????????????????????????????????????????????????? @@ -75,26 +75,26 @@ void CImage::FillRgbImage(unsigned short *datacube) for (int j = 0; j < m_iSampleNumber; j++) { - //std::cout << "rgbͼÏñдÈëÊý¾ÝÖ¡Êý£º" << j << std::endl; + //std::cout << "rgb图åƒ�写入数æ�®å¸§æ•°ï¼š" << j << std::endl; - //ȡֵ£ºÒ»Ö¡Ó°ÏñÖУ¬´Ó×óµ½ÓÒµÄrgbÏñÔªÖµ + //å�–值:一帧影åƒ�中,从左到å�³çš„rgbåƒ�元值 r = *(datacube + 121 * m_iSampleNumber + j); g = *(datacube + 79 * m_iSampleNumber + j); b = *(datacube + 40 * m_iSampleNumber + j); - //½«ÏñÔªÖµ¸³Öµµ½cv::MatÖУ¬²Ù×÷ÏñÔªÖµ£ºhttps://zhuanlan.zhihu.com/p/51842288 - //int dataType = m_matRgbImage->type();//µ±Êý¾ÝÀàÐÍΪCV_16UC3ʱ£¬·µ»Ø18 - //std::cout << "m_matRgbImageÊý¾ÝÀàÐÍΪ£º" << dataType << std::endl; + //å°†åƒ�元值赋值到cv::Mat中,æ“�作åƒ�元值:https://zhuanlan.zhihu.com/p/51842288 + //int dataType = m_matRgbImage->type();//当数æ�®ç±»åž‹ä¸ºCV_16UC3时,返回18 + //std::cout << "m_matRgbImageæ•°æ�®ç±»åž‹ä¸ºï¼š" << dataType << std::endl; if (m_matRgbImage->type() == CV_16UC3) { - //std::cout << "²Ù×÷ÏñËØÖµ£¡" << std::endl; + //std::cout << "æ“�作åƒ�素值ï¼�" << std::endl; m_matRgbImage->at(m_iFrameCounter, j)[2] = r; m_matRgbImage->at(m_iFrameCounter, j)[1] = g; m_matRgbImage->at(m_iFrameCounter, j)[0] = b; } - ////½«ÏñÔªÖµ´Ó4095¹éÒ»»¯µ½255µÄ·¶Î§²¢¸³Öµµ½QImageÖÐ + ////å°†åƒ�元值从4095归一化到255的范围并赋值到QImage中 //imagebits24[j * 3] = uchar(r * 255 / 4095); //imagebits24[j * 3 + 1] = uchar(g * 255 / 4095); //imagebits24[j * 3 + 2] = uchar(b * 255 / 4095); @@ -102,14 +102,14 @@ void CImage::FillRgbImage(unsigned short *datacube) m_iFrameCounter++; - //±£´ærgbͼƬ + //ä¿�å­˜rgb图片 if (m_iFrameCounter % m_iFramerate == 0 || m_iFrameCounter == m_iFrameNumber - 1) { - ////±£´æÎļþ + ////ä¿�存文件 //FileOperation * fileOperation = new FileOperation(); //string directory = fileOperation->getDirectoryOfExe(); - //string rgbFilePathStrech = directory + "\\tmp_image_strech.png";//ûÓÐÀ­ÉìͼƬ - //string rgbFilePathNoStrech = directory + "\\tmp_image_no_strech.png";//À­ÉìͼƬ + //string rgbFilePathStrech = directory + "\\tmp_image_strech.png";//没有拉伸图片 + //string rgbFilePathNoStrech = directory + "\\tmp_image_no_strech.png";//拉伸图片 //m_QRgbImage->save(QString::fromStdString(rgbFilePathNoStrech), "PNG"); @@ -147,7 +147,7 @@ void CImage::FillFocusGrayImage(unsigned short * datacube) // } //} - //½«mat±£´æ³ÉÎļþ + //å°†matä¿�å­˜æˆ�文件 //cv::imwrite("D:/delete/2222222222/test.bmp", m_matFocusGrayImage); } diff --git a/HPPA/image2display.h b/HPPA/image2display.h index e5257c8..2fa11ca 100644 --- a/HPPA/image2display.h +++ b/HPPA/image2display.h @@ -1,9 +1,9 @@ -#ifndef CIMAGE +#ifndef CIMAGE #define CIMAGE #include -#include //°üº¬ÁËËùÓж«Î÷£¬±àÒëºÜÂý +#include //包å�«äº†æ‰€æœ‰ä¸œè¥¿ï¼Œç¼–译很慢 //#include //#include @@ -29,12 +29,12 @@ public: cv::Mat *m_matRgbImage; QImage *m_qimageFocusGrayImage; - cv::Mat *m_matFocusGrayImage;//ÓÃÓÚµ÷½¹Ê±£¬ÏÔʾһ֡µÄ»Ò¶Èͼ - //cv::Mat m_matFocusGrayImage;//ÓÃÓÚµ÷½¹Ê±£¬ÏÔʾһ֡µÄ»Ò¶Èͼ + cv::Mat *m_matFocusGrayImage;//用于调焦时,显示一帧的ç�°åº¦å›¾ + //cv::Mat m_matFocusGrayImage;//用于调焦时,显示一帧的ç�°åº¦å›¾ - //¿ØÖƸÃÌî³ärgbͼÏñµÚ¼¸Ö¡£¨ÐУ©Êý¾Ý - //ÒÔÏÂÁ½ÖÖÇé¿öÐèÒªÖØÖÃΪ0£º1£©µ÷Óú¯ÊýSetRgbImageWidthAndHeight£»2£©Ã¿´Î¿ªÊ¼Ìî³äÊý¾Ýǰ + //控制该填充rgb图åƒ�第几帧(行)数æ�® + //以下两ç§�情况需è¦�é‡�置为0:1)调用函数SetRgbImageWidthAndHeightï¼›2)æ¯�次开始填充数æ�®å‰� int m_iFrameCounter; diff --git a/HPPA/imageControl.cpp b/HPPA/imageControl.cpp index aa84d92..df313ce 100644 --- a/HPPA/imageControl.cpp +++ b/HPPA/imageControl.cpp @@ -1,4 +1,4 @@ -#include "imageControl.h" +#include "imageControl.h" #include "RasterLayer.h" #include #include @@ -42,7 +42,7 @@ ImageControl::ImageControl(QWidget* parent) QDoubleSpinBox { border: 1px solid #999; border-radius: 4px; - padding: 2px 20px 2px 6px; /* ÓÒ²àÁô¿Õ¼ä¸ø°´Å¥ */ + padding: 2px 20px 2px 6px; /* å�³ä¾§ç•™ç©ºé—´ç»™æŒ‰é’® */ background: #0e1c4c; selection-background-color: #0078d7; font-size: 12px; diff --git a/HPPA/imageControl.h b/HPPA/imageControl.h index 8b89720..de8ff3c 100644 --- a/HPPA/imageControl.h +++ b/HPPA/imageControl.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/HPPA/imageProcessor.cpp b/HPPA/imageProcessor.cpp index ce7991f..57972b9 100644 --- a/HPPA/imageProcessor.cpp +++ b/HPPA/imageProcessor.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "imageProcessor.h" #include @@ -17,19 +17,19 @@ std::vector ImageProcessor::CHistogram(const cv::Mat img) int cols = mimg.cols; int maxValue = *std::max_element(mimg.begin(), mimg.end()); maxValue = 65535; - //ͳ¼ÆÃ¿¸ö»Ò¶È³öÏֵĴÎÊý - std::vector hisnum(maxValue, 0);//£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿£¿ + //统计æ¯�个ç�°åº¦å‡ºçŽ°çš„æ¬¡æ•° + std::vector hisnum(maxValue, 0);//?????????????????????????????? for (int i(0); i < rows; ++i) { - //std::cout << "i£º" << i << std::endl; + //std::cout << "i:" << i << std::endl; for (int j(0); j < cols; ++j) { - //std::cout << "j£º" << j << std::endl; + //std::cout << "j:" << j << std::endl; unsigned short gv = mimg.at(i, j); - //std::cout << "gvÖµ£º" << gv << std::endl; + //std::cout << "gv值:" << gv << std::endl; - //ÒÔ·ÀÊý¾ÝÖÐÓиºÖµ£ºµ±¾µÍ·¸Ç¸ÇÉÏÔÚ¿Û³ý°µµçÁ÷¾ÍÓпÉÄÜΪ¸ºÖµ - //Èç¹ûmatµÄÊý¾ÝÀàÐÍΪCV_16UC3£¬µ±Êý¾ÝÖÐÓÐÓиºÖµÊ±£¬¸ºÖµ±íÏÖΪ65535 + //以防数æ�®ä¸­æœ‰è´Ÿå€¼ï¼šå½“镜头盖盖上在扣除暗电æµ�就有å�¯èƒ½ä¸ºè´Ÿå€¼ + //如果mat的数æ�®ç±»åž‹ä¸ºCV_16UC3,当数æ�®ä¸­æœ‰æœ‰è´Ÿå€¼æ—¶ï¼Œè´Ÿå€¼è¡¨çŽ°ä¸º65535 if (gv >= maxValue) { ++hisnum[0]; @@ -40,7 +40,7 @@ std::vector ImageProcessor::CHistogram(const cv::Mat img) } } } - //¿ªÊ¼¼ÆËã»Ò¶ÈƵÂÊ + //开始计算ç�°åº¦é¢‘率 long int pnum = rows * cols; std::vector hisp; for (int i(0); i < hisnum.size(); ++i) @@ -118,21 +118,21 @@ cv::Mat ImageProcessor::CStretchDeal(const cv::Mat img, const uint minnum, const int rows = mimg.rows; int cols = mimg.cols; cv::Mat nimg = cv::Mat::zeros(rows, cols, CV_8U); - //¹éÒ»»¯²ÎÊý + //归一化å�‚æ•° float dertnum = maxnum - minnum; - //¿ªÊ¼´¦Àí + //开始处ç�† for (int i(0); i < rows; ++i) { for (int j(0); j < cols; ++j) { unsigned short a = mimg.at(i, j); - //СÓÚratio¶ÔÓ¦ÏñËØÖµÈ¡0 + //å°�于ratio对应åƒ�素值å�–0 if (a <= minnum) nimg.at(i, j) = 0; - //´óÓÚratioÖµ¶ÔÓ¦ÏñËØÖµÈ¡255 + //大于ratio值对应åƒ�素值å�–255 else if (a >= maxnum) nimg.at(i, j) = 255; - //ÖмäÖµÀ­Éìµ½0-255 + //中间值拉伸到0-255 else nimg.at(i, j) = 255 * (mimg.at(i, j) - minnum) / dertnum; } @@ -142,26 +142,26 @@ cv::Mat ImageProcessor::CStretchDeal(const cv::Mat img, const uint minnum, const cv::Mat ImageProcessor::CStretch(const cv::Mat img, const float ratio) { - //Ó°Ïñ·ÖRGB¼ÆËã»Ò¶ÈÖ±·½Í¼ + //å½±åƒ�分RGB计算ç�°åº¦ç›´æ–¹å›¾ cv::Mat mimg = img.clone(); cv::Mat bgr[3]; split(mimg, bgr); std::vector hb = CHistogram(bgr[0]); std::vector hg = CHistogram(bgr[1]); std::vector hr = CHistogram(bgr[2]); - //ͳ¼ÆÖ±·½Í¼ÀÛ¼ÆÆµÂÊratioÖµ¶ÔÓ¦µÄ»Ò¶È + //统计直方图累计频率ratio值对应的ç�°åº¦ uint minb = MinRatio(hb, ratio); uint ming = MinRatio(hg, ratio); uint minr = MinRatio(hr, ratio); uint maxb = MaxRatio(hb, ratio); uint maxg = MaxRatio(hg, ratio); uint maxr = MaxRatio(hr, ratio); - //¿ªÊ¼À­É칤×÷ + //开始拉伸工作 cv::Mat b, g, r; b = CStretchDeal(bgr[0], minb, maxb); g = CStretchDeal(bgr[1], ming, maxg); r = CStretchDeal(bgr[2], minr, maxr); - //ºÏ²¢À­Éì½á¹û + //å�ˆå¹¶æ‹‰ä¼¸ç»“æžœ cv::Mat newbgr; newbgr.create(img.rows, img.cols, CV_32FC3); cv::Mat nbgr[3] = { b, g, r }; diff --git a/HPPA/imageProcessor.h b/HPPA/imageProcessor.h index c99fa73..01381bd 100644 --- a/HPPA/imageProcessor.h +++ b/HPPA/imageProcessor.h @@ -1,8 +1,8 @@ -#pragma once +#pragma once #ifndef IMAGEPROCESSOR #define IMAGEPROCESSOR -#include //°üº¬ÁËËùÓж«Î÷£¬±àÒëºÜÂý +#include //包å�«äº†æ‰€æœ‰ä¸œè¥¿ï¼Œç¼–译很慢 //#include //#include @@ -18,9 +18,9 @@ public: QImage Mat2QImage(cv::Mat cvImg);//https://www.cnblogs.com/annt/p/ant003.html - //envi 2%À­ÉìÔ­Àí£º - //gdal°æ±¾ ¡ú https://blog.csdn.net/HB_Programmer/article/details/82020703?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control - //opencv°æ±¾ ¡ú https://blog.csdn.net/qq_41824159/article/details/105469986 + //envi 2%拉伸原ç�†ï¼š + //gdal版本 → https://blog.csdn.net/HB_Programmer/article/details/82020703?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control + //opencv版本 → https://blog.csdn.net/qq_41824159/article/details/105469986 cv::Mat CStretchDeal(const cv::Mat img, const uint minnum, const uint maxnum); uint MaxRatio(const std::vector data, const float ratio); uint MinRatio(const std::vector data, const float ratio); diff --git a/HPPA/imagerSimulatioin.cpp b/HPPA/imagerSimulatioin.cpp index a930241..65f8368 100644 --- a/HPPA/imagerSimulatioin.cpp +++ b/HPPA/imagerSimulatioin.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "imagerSimulatioin.h" imagerSimulatioin::imagerSimulatioin(QGraphicsItem *parent) :QGraphicsItem(parent) @@ -8,7 +8,7 @@ imagerSimulatioin::imagerSimulatioin(QGraphicsItem *parent) :QGraphicsItem(paren setFlags(ItemIsSelectable | ItemIsMovable); - //itemChangeÐèÒª£ºItemSendsGeometryChanges flag is needed to capture the change in position of QGraphicsItem + //itemChange需è¦�:ItemSendsGeometryChanges flag is needed to capture the change in position of QGraphicsItem this->setFlag(QGraphicsItem::ItemSendsScenePositionChanges); m_height = 50; m_width = 50; @@ -39,7 +39,7 @@ void imagerSimulatioin::paint(QPainter *painter, const QStyleOptionGraphicsItem painter->setPen(outlinePen); painter->setBrush(blueBrush); - painter->drawRect(-m_width / 2, -m_height / 2, m_width, m_height);//¿ÉÒԸıäitem×ø±êÔ­µã£¬ºÍsetSceneRect(qreal x, qreal y, qreal w, qreal h)Ò»Ñù + painter->drawRect(-m_width / 2, -m_height / 2, m_width, m_height);//å�¯ä»¥æ”¹å�˜itemå��标原点,和setSceneRect(qreal x, qreal y, qreal w, qreal h)一样 //QPen outlinePen(Qt::red); @@ -65,7 +65,7 @@ void imagerSimulatioin::setPos(qreal x, qreal y) x = floor(x); y = floor(y); - QGraphicsItem::setPos(x, y);//µ÷Óø¸Àà±»¸²¸ÇµÄº¯ÊýÖ´ÐÐÏàÓ¦²Ù×÷ + QGraphicsItem::setPos(x, y);//调用父类被覆盖的函数执行相应æ“�作 scene()->update(); } @@ -97,7 +97,7 @@ void imagerSimulatioin::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { scene()->update(); - QPointF originOfItem = this->scenePos();//ÕâÊÇitem×óÉϽÇÔÚsceneÖеÄ×ø±ê + QPointF originOfItem = this->scenePos();//这是item左上角在scene中的å��æ ‡ //qDebug() << originOfItem; QGraphicsItem::mouseMoveEvent(event); @@ -105,8 +105,8 @@ void imagerSimulatioin::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void imagerSimulatioin::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - QPointF x = pos();//ÕâÊÇitemÔ­µã£¨0£¬0£©ÔÚsceneÖеÄ×ø±ê - QPointF originOfItem = this->scenePos();//ÕâÊÇitemÔ­µã£¨0£¬0£©ÔÚsceneÖеÄ×ø±ê + QPointF x = pos();//这是item原点(0,0)在scene中的å��æ ‡ + QPointF originOfItem = this->scenePos();//这是item原点(0,0)在scene中的å��æ ‡ QPointF viewPos = event->pos(); @@ -123,7 +123,7 @@ void imagerSimulatioin::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) emit leftMouseButtonPressed(originOfItem.x(), originOfItem.y()); - //update();//²»»áʵʱ»æÖÆ + //update();//ä¸�会实时绘制 scene()->update(); QGraphicsItem::mouseReleaseEvent(event); diff --git a/HPPA/imagerSimulatioin.h b/HPPA/imagerSimulatioin.h index 52416ef..7fa3007 100644 --- a/HPPA/imagerSimulatioin.h +++ b/HPPA/imagerSimulatioin.h @@ -1,4 +1,4 @@ -#ifndef IMAGER_SIMULATIOIN +#ifndef IMAGER_SIMULATIOIN #define IMAGER_SIMULATIOIN #include @@ -15,11 +15,11 @@ public: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void setPos(qreal x, qreal y); - //ÔÚQGraphicsSceneÖÐÏÞÖÆÍ¼ÔªµÄÍ϶¯·¶Î§£ºhttps://www.cnblogs.com/sfy5848/p/6611824.html + //在QGraphicsScene中é™�制图元的拖动范围:https://www.cnblogs.com/sfy5848/p/6611824.html QVariant itemChange(GraphicsItemChange change, const QVariant &value); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event);//µ±Í϶¯itemʱ²»Í£»áµÄ»æÖÆ£¬Ïû³ýÍ϶¯ÖØÓ° - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);//µ±·Å¿ªÊó±êʱ£¬·¢Éä´ËʱͼԪÔÚsceneÖеÄ×ø±ê + void mouseMoveEvent(QGraphicsSceneMouseEvent *event);//当拖动itemæ—¶ä¸�å�œä¼šçš„绘制,消除拖动é‡�å½± + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);//当放开鼠标时,å�‘射此时图元在scene中的å��æ ‡ protected: diff --git a/HPPA/imager_base.cpp b/HPPA/imager_base.cpp index b4c6283..b5d8225 100644 --- a/HPPA/imager_base.cpp +++ b/HPPA/imager_base.cpp @@ -1,4 +1,4 @@ -#include "imager_base.h" +#include "imager_base.h" Iris::ImagerBase::ImagerBase() { diff --git a/HPPA/imager_base.h b/HPPA/imager_base.h index fdc129e..65e855d 100644 --- a/HPPA/imager_base.h +++ b/HPPA/imager_base.h @@ -1,4 +1,4 @@ -/* +/* * Iris API * * By using this API, the user agrees to the terms and conditions as stated in the diff --git a/HPPA/main.cpp b/HPPA/main.cpp index 5d8c67a..29d1ffe 100644 --- a/HPPA/main.cpp +++ b/HPPA/main.cpp @@ -1,4 +1,4 @@ -#include "HPPA.h" +#include "HPPA.h" #include int main(int argc, char *argv[]) diff --git a/HPPA/path_tc.cpp b/HPPA/path_tc.cpp index bd1f7ea..b09da49 100644 --- a/HPPA/path_tc.cpp +++ b/HPPA/path_tc.cpp @@ -1,4 +1,4 @@ -#include "path_tc.h" +#include "path_tc.h" string getPathofEXE() { diff --git a/HPPA/path_tc.h b/HPPA/path_tc.h index 61b9a61..fdfce33 100644 --- a/HPPA/path_tc.h +++ b/HPPA/path_tc.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include //#include using namespace std; diff --git a/HPPA/resononImager.cpp b/HPPA/resononImager.cpp index 6b1f9ff..d0bbaf7 100644 --- a/HPPA/resononImager.cpp +++ b/HPPA/resononImager.cpp @@ -1,4 +1,4 @@ -#include "resononImager.h" +#include "resononImager.h" ResononPicaLImager::ResononPicaLImager() { @@ -9,7 +9,7 @@ ResononPicaLImager::~ResononPicaLImager() { if (buffer != nullptr) { - std::cout << "ÊͷŶÑÉÏÄÚ´æ" << std::endl; + std::cout << "释放堆上内存" << std::endl; free(buffer); free(dark); free(white); diff --git a/HPPA/resononImager.h b/HPPA/resononImager.h index 1f45ea4..0b89f90 100644 --- a/HPPA/resononImager.h +++ b/HPPA/resononImager.h @@ -1,4 +1,4 @@ -#ifndef RESONON_IMAGER +#ifndef RESONON_IMAGER #define RESONON_IMAGER #include diff --git a/HPPA/resource.h b/HPPA/resource.h index 327f5b5..13eaf64 100644 --- a/HPPA/resource.h +++ b/HPPA/resource.h @@ -1,6 +1,6 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ Éú³ÉµÄ°üº¬Îļþ¡£ -// ¹© HPPA.rc ʹÓà +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ 生æˆ�的包å�«æ–‡ä»¶ã€‚ +// ä¾› HPPA.rc 使用 // #define IDI_ICON1 106 diff --git a/HPPA/stdafx.cpp b/HPPA/stdafx.cpp index fd4f341..d1303f3 100644 --- a/HPPA/stdafx.cpp +++ b/HPPA/stdafx.cpp @@ -1 +1 @@ -#include "stdafx.h" +#include "stdafx.h" diff --git a/HPPA/stdafx.h b/HPPA/stdafx.h index 983474e..e517d41 100644 --- a/HPPA/stdafx.h +++ b/HPPA/stdafx.h @@ -1,3 +1,3 @@ -#include +#include #include #include diff --git a/HPPA/utility_tc.h b/HPPA/utility_tc.h index 1428550..469ed82 100644 --- a/HPPA/utility_tc.h +++ b/HPPA/utility_tc.h @@ -1,4 +1,4 @@ -#ifndef UTILITY_TC_H +#ifndef UTILITY_TC_H #define UTILITY_TC_H #include