# HiSursStudio **Repository Path**: longwenbin/HiSursStudio ## Basic Information - **Project Name**: HiSursStudio - **Description**: HiSurs 上位机控制软件(开发中) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-12-11 - **Last Updated**: 2024-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HiSursStudio 本项目为高通量STORM系统的上位机控制软件,采用C++开发,开发IDE采用Qt Creator进行 ## 项目所采用C++库列表 1. Qt5.12.12 2. TinyTIFF 3. OpenCV 4. 4.1.0 20191103 (暂未使用) 5. ... ## 编译此项目时的注意事项 1. 由于本项目所采用大部分第三方库只有Release版本,因此在编译此项目时,编译选项暂时请选择:VS2017/2019-64-Release,关于debug版本的编译环境,后续视情况完善 ## 编译步骤 1. 用Qt Creater打开项目根目录下的HiSursStudio.pro 2. 选择MSVC2017_64bit_Release版本编译器,或者其他高于2017的版本也可,但必须是64bit_Release 3. 编译运行 ## 项目结构介绍 接下来介绍本项目的文件目录,更为详细的结构布局指导请参见/doc/design/architecture.md文件 ``` project_root/ /**< 项目根目录 */ ├── src/ /**< 项目源码目录 */ │ ├── main.cpp /**< 主函数文件 */ │ ├── pch/ /**< 预编译头文件目录 */ │ │ └── HiSursPCH.h /**< 预编译头文件 */ │ ├── widget/ /**< 窗口模块,包含所有的窗口模组定义及其实现 */ │ │ ├── widget.pri /**< widget模块导入文件 */ │ │ ├── resources/ /**< 公共资源文件 */ │ │ │ ├── common_resources_A.qrc /**< qt资源统计文件A(公有资源) */ │ │ │ ├── images/ /**< image资源(公有资源) */ │ │ │ │ └── .. │ │ │ ├── icons/ /**< icon资源(公有资源) */ │ │ │ │ └── .. │ │ │ ├── sounds/ /**< sound资源(公有资源) */ │ │ │ │ └── .. │ │ │ └── qss/ /**< 控件样式文件(公有) */ │ │ │ └── dark_style.qss /**< 黑暗样式 */ │ │ ├── HiDockWidget/ /**< HiDockWidget模块,包含所有的自定义DockWidget控件 */ │ │ │ ├── HiBaseDockWidget.h /**< HiBaseDockWidget窗口,该控件为以下所有DockWidget窗口的基类 */ │ │ │ ├── HiBaseDockWidget.cpp │ │ │ ├── CalibrationDockWidget.h /**< CalibrationDockWidget窗口,该窗口用于执行相机标定及参数矫正工作 */ │ │ │ ├── CalibrationDockWidget.cpp │ │ │ ├── CameraDockWidget.h /**< CameraDockWidget窗口,该窗口用于执行相机的连接及常规拍图工作 */ │ │ │ ├── CameraDockWidget.cpp │ │ │ ├── ConsoleDockWidget.h /**< ConsoleDockWidget窗口,该窗口用于执行控制台信息打印工作 */ │ │ │ ├── ConsoleDockWidget.cpp │ │ │ ├── HistogramDockWidget.h /**< HistogramDockWidget窗口,该窗口用于执行图像直方图的实时及调整显示工作 */ │ │ │ ├── HistogramDockWidget.cpp │ │ │ ├── LaserDockWidget.h /**< LaserDockWidget窗口,该窗口用于执行激光器的控制工作,包含AOM的控制 */ │ │ │ ├── LaserDockWidget.cpp │ │ │ ├── RealTimeFrameDockWidget.h /**< RealTimeFrameDockWidget窗口,该窗口用于执行相机图像的实时预览工作 */ │ │ │ ├── RealTimeFrameDockWidget.cpp │ │ │ ├── TaskControlDockWidget.h /**< TaskControlDockWidget窗口,该窗口用于执行高通量系统工作时的工作流控制 */ │ │ │ ├── TaskControlDockWidget.cpp │ │ │ ├── XYStageDockWidget.h /**< XYStageDockWidget窗口,该窗口用于执行XY样品台的连接及控制工作 */ │ │ │ └── XYStageDockWidget.cpp │ │ ├── HiMenuBar/ /**< HiMenuBar模块,包含自定义Menubar */ │ │ │ ├── HiMenuBar.h │ │ │ └── HiMenuBar.cpp │ │ ├── HiSursMainWindow/ /**< HiSursMainWindow模块,为此项目的主界面窗口及功能集成入口 */ │ │ │ ├── HiSursMainWindow.h │ │ │ └── HiSursMainWindow.cpp │ │ ├── ProgressCircle/ │ │ │ ├── ProgressCircle.h │ │ │ └── ProgressCircle.cpp │ │ ├── property/ │ │ │ ├── CBaseProperty.h │ │ │ ├── CBaseProperty.cpp │ │ │ ├── CBoolProperty.h │ │ │ ├── CBoolProperty.cpp │ │ │ ├── CButtonBasedEditor.h │ │ │ ├── CButtonBasedEditor.cpp │ │ │ ├── CColorProperty.h │ │ │ ├── CColorProperty.cpp │ │ │ ├── CDateProperty.h │ │ │ ├── CDateProperty.cpp │ │ │ ├── CDateTimeProperty.h │ │ │ ├── CDateTimeProperty.cpp │ │ │ ├── CDoubleProperty.h │ │ │ ├── CDoubleProperty.cpp │ │ │ ├── CFontProperty.h │ │ │ ├── CFontProperty.cpp │ │ │ ├── CIntegerProperty.h │ │ │ ├── CIntegerProperty.cpp │ │ │ ├── CListProperty.h │ │ │ ├── CListProperty.cpp │ │ │ ├── CPathProperty.h │ │ │ ├── CPathProperty.cpp │ │ │ ├── CPropertyEditor.h │ │ │ ├── CPropertyEditor.cpp │ │ │ ├── CPropertyHeader.h │ │ │ ├── CPropertyHeader.cpp │ │ │ ├── CStringProperty.h │ │ │ ├── CStringProperty.cpp │ │ │ ├── CTimeProperty.h │ │ │ ├── CTimeProperty.cpp │ │ │ ├── QColorComboBox.h │ │ │ └── QColorComboBox.cpp │ │ ├── QFrameView/ │ │ │ ├── QFrameView.h │ │ │ └── QFrameView.cpp │ │ └── QSwitchButton/ │ │ ├── QSwitchButton.h │ │ └── QSwitchButton.cpp │ ├── utils/ /**< utils模块,包含各种自定义工具函数 */ │ │ ├── utils.pri /**< utils模块导入文件 */ │ │ ├── qt_dcamsdk.h /**< 基于Qt的Hamamatsu相机控制SDK */ │ │ ├── qt_dcamsdk.cpp │ │ ├── qt_factory.h /**< 基于Qt的工厂函数集合 */ │ │ ├── qt_factory.cpp │ │ ├── qtversion_tool.h /**< 基于Qt的版本转换及函数兼容性适应工具 */ │ │ └── qtversion_tool.cpp │ └── core/ /**< core模块,包含本项目的具体业务逻辑和数据 */ │ ├── core.pri /**< core模块导入文件 */ │ ├── hisurs_global.h /**< 全局定义文件 */ │ └── hisurs_global.cpp ├── include/ // External library directory │ ├── third_party_lib/ // Third-party libraries │ │ ├── libA/ // Third-party library A │ │ │ ├── include/ // Header files directory │ │ │ │ ├── libA.h // Library header file │ │ │ │ ├── module1/ // Module 1 header files directory │ │ │ │ │ ├── module1.h // Module 1 header file │ │ │ │ │ ├── module1_1.h // Submodule 1-1 header file │ │ │ │ │ └── ... │ │ │ │ ├── module2/ // Module 2 header files directory │ │ │ │ │ ├── module2.h // Module 2 header file │ │ │ │ │ ├── module2_1.h // Submodule 2-1 header file │ │ │ │ │ └── ... │ │ │ │ └── ... │ │ │ ├── lib/ // Libraries directory │ │ │ │ ├── libA.lib // Static library file for Windows │ │ │ │ ├── libA.dll // Dynamic library file for Windows │ │ │ │ ├── libA.so // Shared library file for Linux │ │ │ │ ├── libA.dylib // Shared library file for macOS │ │ │ │ └── ... │ │ │ ├── doc/ // Documentation directory │ │ │ │ ├── index.html // HTML documentation index file │ │ │ │ ├── tutorial.html // Tutorial document in HTML format │ │ │ │ └── ... │ │ │ └── .. │ │ ├── libB/ // Third-party library B │ │ └── ... │ └── project_lib/ // Project libraries │ ├── libA/ // Project libraries library A │ │ ├── include/ // Header files directory │ │ │ ├── libA.h // Library header file │ │ │ ├── module1/ // Module 1 header files directory │ │ │ │ ├── module1.h // Module 1 header file │ │ │ │ ├── module1_1.h // Submodule 1-1 header file │ │ │ │ └── ... │ │ │ ├── module2/ // Module 2 header files directory │ │ │ │ ├── module2.h // Module 2 header file │ │ │ │ ├── module2_1.h // Submodule 2-1 header file │ │ │ │ └── ... │ │ │ └── ... │ │ ├── lib/ // Libraries directory │ │ │ ├── libA.lib // Static library file for Windows │ │ │ ├── libA.dll // Dynamic library file for Windows │ │ │ ├── libA.so // Shared library file for Linux │ │ │ ├── libA.dylib // Shared library file for macOS │ │ │ └── ... │ │ ├── doc/ // Documentation directory │ │ │ ├── index.html // HTML documentation index file │ │ │ ├── tutorial.html // Tutorial document in HTML format │ │ │ └── ... │ │ └── .. │ ├── libB/ // Project libraries library B │ └── ... ├── i18n/ // Internationalization/localization directory │ ├── en_US/ // English language pack │ │ ├── main.ts // Main translation file │ │ └── ... │ ├── zh_CN/ // Chinese language pack │ │ ├── main.ts // Main translation file │ │ └── ... │ └── ... ├── doc/ // Documentation directory │ ├── README.md // Project README file │ ├── LICENSE // License file │ ├── AUTHORS // Authors list │ ├── design/ // Design documents │ │ ├── architecture.md // Architecture design document │ │ ├── database.md // Database design document │ │ └── ... │ ├── user_manual/ // User manual │ │ ├── index.md // User manual index │ │ ├── install.md // Installation guide │ │ └── ... │ └── ... ├── tests/ // Test directory │ ├── unit_tests/ // Unit tests │ │ ├── core_tests/ // Core module unit tests │ │ │ ├── test_core.h // Core module unit test header file │ │ │ ├── test_core.cpp // Core module unit test source file │ │ │ └── ... │ │ ├── ui_tests/ // UI module unit tests │ │ │ ├── test_button.h // Button module unit test header file │ │ │ ├── test_button.cpp // Button module unit test source file │ │ │ └── ... │ │ └── ... │ └── ... ├── build/ // Build directory │ ├── x86 │ │ ├── debug/ // Debug build directory │ │ └── release/ // Release build directory │ ├── 64 │ │ ├── debug/ // Debug build directory │ │ └── release/ // Release build directory │ └── ... └── README.md // Project README file ``` ## 部分问题说明 1. 关于utils和core目录的区别 - "utils"文件夹是指在项目开发中自己编写的一些实用工具类或者函数库 - "utils"往往是比较独立、通用的功能模块,与具体的业务逻辑没有太多的关系,因此它们通常不会涉及到具体的业务逻辑或者业务数据。 - "utils"通常是一些比较小的模块,可以在不同的项目中被重复使用,具有较强的通用性 - "core"则通常包含具体的业务逻辑和数据,这些数据可能是项目中的核心数据,对整个项目的运作至关重要。 - "core"则往往是与具体业务相关的模块,难以重用,因此会比"utils"更加复杂 ## 参与贡献 1. 苏高照 2. 周俊尧