# SpectrometerControlPlatform **Repository Path**: sumght/spectrometer-control-platform ## Basic Information - **Project Name**: SpectrometerControlPlatform - **Description**: SpectrometerControlPlatform - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-12-11 - **Last Updated**: 2026-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 透射拉曼光谱检测仪上位机程序 一个基于 PyQt6 和 QFluentWidget 开发的透射拉曼光谱检测仪器的控制与数据采集平台。本软件用于控制硬件设备(包括多孔位旋转台和光谱仪),实现自动化光谱数据采集、背景扣除、实时图表展示和数据管理功能。 ## 📋 目录 - [项目简介](#项目简介) - [功能特性](#功能特性) - [系统要求](#系统要求) - [项目结构](#项目结构) - [安装与部署](#安装与部署) - [使用说明](#使用说明) - [配置说明](#配置说明) - [开发说明](#开发说明) - [依赖项](#依赖项) - [版本信息](#版本信息) --- ## 项目简介 本项目是一款面向透射拉曼光谱检测仪器的专业上位机控制软件,主要用于控制精密旋转台和光谱仪进行自动化样品检测。软件采用现代化的 Fluent Design 设计风格,提供直观易用的操作界面。 **核心应用场景:** - 实验室光谱数据采集 - 多孔位样品自动扫描检测 - 实时光谱曲线可视化 - 检测数据管理与导出 ## 功能特性 ### 🔌 设备管理 - **电机控制**:支持 SM-1500 系列伺服舵机的连接、断开的控制,支持 COM 端口选择 - **光谱仪控制**:支持上海如海光电光谱仪的 USB 连接,具备序列号识别功能 - **设备状态监控**:实时显示设备连接状态(绿色已连接 / 红色未连接) - **设备信息展示**:点击查看设备详细规格参数 ### 🔄 运动控制 - **角度精确定位**:支持输入精确角度值控制旋转台转动 - **孔位快速定位**:支持 0-15 共 16 个孔位的单选切换 - **实时反馈**:显示当前电机角度和运动速度 ### 📊 光谱检测 - **背景光谱采集**:支持获取、查看、删除背景光谱数据 - **参数可调**: - 激光功率设置(单位:mW) - 积分时间设置(单位:μs) - 平均次数设置 - **自动背景扣除**:采集数据自动减去背景光谱 - **批量检测**:支持多选孔位连续自动检测 - **轮盘型号选择**:支持 S_16 v1.0 / S_16 v2.0 等不同规格轮盘 ### 📈 数据可视化 - **实时图表**:使用 PyQt6-Charts 展示光谱曲线(波长-强度) - **交互操作**:支持鼠标缩放、平移、橡皮筋选择 - **数据弹窗**:检测完成后自动弹出图表窗口展示结果 ### 💾 数据管理 - **JSON 格式存储**:原始数据保存为 JSON 文件,包含 index、listx(波长)、listy(强度) - **CSV 格式导出**:按项目名称分类组织 CSV 数据文件 - **文件搜索**:支持关键词检索历史数据 - **自动命名**:文件按时间戳自动命名(YYYY_MM_DD_HH_MM_SS_ffffff) ### ⚙️ 系统设置 - **主题切换**:支持亮色/暗色主题 - **主题颜色自定义**:可调节应用主题色 - **界面缩放**:支持 100% - 200% DPI 缩放 - **多语言支持**:简体中文、繁体中文、英文 - **亚克力背景效果**:可选的半透明磨砂窗口效果 - **最小化到托盘**:关闭窗口时最小化到系统托盘 - **自动更新检查**:启动时检查新版本 ## 系统要求 - **操作系统**:Windows 10/11(64位) - **Python 版本**:Python 3.8 或更高版本 - **内存**:建议 4GB 以上 - **硬盘空间**:建议 500MB 可用空间 ## 项目结构 ``` spectrometer-control-platform/ ├── main.py # 程序入口,初始化应用和翻译 ├── test.py # 测试脚本 ├── test2.py # 测试脚本 ├── config/ │ └── config.json # 应用配置文件(主题、语言、窗口设置) ├── data/ # 数据存储目录 │ ├── background/ # 背景光谱数据 │ │ └── background.csv # 背景光谱CSV文件 │ ├── csv/ # 检测数据CSV文件(按项目分类) │ └── temp/ # 临时JSON数据文件 ├── libs/ # 第三方硬件SDK库 │ ├── scservo_sdk/ # 伺服舵机通信SDK │ │ ├── scservo_def.py # 舵机定义常量 │ │ ├── sms_sts.py # 舵机通信实现 │ │ ├── port_handler.py # 端口处理器 │ │ └── ... │ └── seabreeze_sdk/ # SeaBreeze光谱仪SDK │ ├── SeaBreeze.dll # 光谱仪动态链接库 │ ├── USB_Control_X64.dll # USB控制库 │ └── ohlaser.dll # 激光控制库 ├── resources/ # 静态资源文件 │ ├── i18n/ # 国际化翻译文件 │ ├── icons/ # 图标文件 │ ├── image/ # 图片资源(设备图、Logo等) │ └── qss/ # 样式表(亮色/暗色) ├── src/ # 源代码目录 │ ├── component/ # UI组件 │ │ ├── DeviceInterface.py # 设备管理界面 │ │ ├── MotionControllerInterface.py # 运动控制界面 │ │ ├── InspectionInterface.py # 光谱检测界面 │ │ ├── DataInterface.py # 数据管理界面 │ │ ├── SettingInterface.py # 系统设置界面 │ │ ├── ChartMessageBox.py # 图表弹窗(历史数据) │ │ └── RunChartMessageBox.py # 图表弹窗(实时数据) │ ├── control/ │ │ └── control.py # 业务逻辑控制层 │ ├── device/ │ │ ├── motor_SM150.py # SM-1500电机驱动 │ │ └── spectormeter_seabreeze.py # SeaBreeze光谱仪驱动 │ ├── setting/ │ │ └── config.py # 配置管理 │ └── view/ │ └── MainWindow.py # 主窗口 ├── ui/ # Qt Designer 界面文件 │ ├── MainWindow.ui │ ├── run.ui │ └── ... └── test/ # 测试代码 └── fanshapebutton.py ``` ## 安装与部署 ### 1. 环境准备 确保已安装 Python 3.8+,推荐使用虚拟环境: ```bash # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` > 如果缺少依赖项,请参考下方 [依赖项](#依赖项) 章节手动安装。 ### 3. 硬件SDK配置 确保 `libs/seabreeze_sdk/` 目录下包含以下 DLL 文件: - `SeaBreeze.dll` - `USB_Control_X64.dll` - `ohlaser.dll` 这些文件通常由光谱仪厂商提供,请从上海如海光电科技有限公司获取。 ### 4. 运行程序 ```bash python main.py ``` ## 使用说明 ### 设备页面 1. 点击导航栏「设备」进入设备管理页面 2. 点击「电机」或「光谱仪」卡片查看详情 3. 在下拉框中选择对应的 COM 端口 4. 点击「连接」按钮建立通信 5. 连接成功后状态指示灯变为绿色 ### 运动控制页面 1. 点击导航栏「运动」进入运动控制页面 2. **按角度旋转**:在输入框中输入目标角度,点击「Rotate to Angle」 3. **按孔位旋转**:选择 0-15 的孔位编号,点击「Rotate to Position」 ### 光谱检测页面 1. 点击导航栏「检测」进入检测页面 2. **获取背景光谱**: - 设置积分时间和平均次数 - 点击「获取背景」按钮采集背景 3. **选择检测孔位**:勾选需要检测的位置(0-15) 4. **设置检测参数**: - 功率(mW) - 积分时间(μs) - 平均次数 - 项目名称 5. 点击「运行」开始批量检测 6. 检测完成后自动弹出图表查看数据 ### 数据页面 1. 点击导航栏「数据」进入数据管理页面 2. 使用搜索框筛选数据文件 3. 双击文件可查看详细光谱图表 ### 设置页面 1. 点击导航栏「设置」进入系统设置 2. 可调整主题、语言、缩放比例等参数 3. 部分设置需重启后生效 ## 配置说明 ### 配置文件 (config/config.json) ```json { "Update": { "CheckUpdateAtStartUp": true }, "MainWindow": { "DpiScale": 1, "EnableAcrylicBackground": false, "Language": "zh_CN", "MinimizeToTray": false, "PlayBarColor": "#ff225c7f", "RecentPlayNumbers": 300 }, "QFluentWidgets": { "ThemeColor": "#ff759faa", "ThemeMode": "Light" } } ``` | 配置项 | 说明 | 可选值 | |--------|------|--------| | `CheckUpdateAtStartUp` | 启动时检查更新 | true/false | | `DpiScale` | DPI缩放比例 | 1, 1.25, 1.5, 1.75, 2, "Auto" | | `EnableAcrylicBackground` | 启用亚克力背景 | true/false | | `Language` | 界面语言 | "zh_CN", "zh_HK", "en_US" | | `MinimizeToTray` | 最小化到托盘 | true/false | | `ThemeColor` | 主题颜色 | 十六进制颜色值 | | `ThemeMode` | 主题模式 | "Light", "Dark", "Auto" | ## 开发说明 ### 架构设计 本项目采用 **MVC 架构模式**: ``` ┌─────────────────────────────────────────────────────┐ │ View (视图层) │ │ MainWindow.py → DeviceInterface → ... │ ├─────────────────────────────────────────────────────┤ │ Control (控制层) │ │ control.py (业务逻辑) │ ├─────────────────────────────────────────────────────┤ │ Model (模型层) │ │ motor_SM150.py → SCServo SDK │ │ spectormeter_seabreeze.py → SeaBreeze SDK │ └─────────────────────────────────────────────────────┘ ``` ### 硬件通信协议 **SCServo 电机协议:** - 通信接口:RS485 - 波特率:115200 - 舵机 ID:1 - 位置范围:0-4095(对应 0°-360°) - 默认移动速度:2400 - 默认移动加速度:50 **SeaBreeze 光谱仪协议:** - 通信接口:USB (libusb) - 光谱范围:约 2048 个波长点 - 激光开关控制:支持 - 功率调节:支持 ### 扩展开发 如需添加新设备支持,可在 `src/device/` 目录下创建新的驱动类,并在 `src/control/control.py` 中集成。 ## 依赖项 | 包名 | 版本 | 用途 | |------|------|------| | PyQt6 | >=6.5.0 | GUI 框架 | | PyQt6-Charts | >=6.5.0 | 光谱图表展示 | | qfluentwidgets | >=1.2.0 | Fluent Design 组件库 | | pandas | >=1.5.0 | 数据处理与CSV导出 | | pyserial | >=3.5 | 串口通信(电机控制) | | scipy | >=1.10.0 | 科学计算支持 | | numpy | >=1.24.0 | 数值计算 | ## 版本信息 - **当前版本**:v1.0.0 - **作者**:sumght - **开源地址**:[Gitee - spectrometer-control-platform](https://gitee.com/sumght/spectrometer-control-platform) - **问题反馈**:[Issue 提交](https://gitee.com/sumght/spectrometer-control-platform/issues) ## 许可证 本项目仅供科研与教育用途使用。 --- **感谢使用透射拉曼光谱检测仪上位机程序!**