面向滨松 C10439-15 双通道光电二极管模块的 Windows 11 科研上位机。应用采用 PySide6 + Qt Quick/QML GPU 渲染,支持 ASCII 流和 Modbus RTU 双协议、100 Hz 实时绘图、典型光谱 LUT、实测线性标定、异步 CSV/HDF5 记录与 Excel 导出。
界面采用 Windows 11 Mica 与 Qt Quick 着色器结合的深色液态玻璃设计。边缘折射高光、轻微色散和指针跟随反馈的设计思路参考了 MIT 许可的 rdev/liquid-glass-react,本项目未引入 React 运行时。各核心模块内具有缓慢流动的热成像带状色场;鼠标靠近模块时,最近的约 120–180 px 玻璃边框会出现克制的彩虹焦散并平滑跟随,不显示突兀的圆形光标光环。动态效果可在“系统设置”中关闭或降低强度。
CAN转USB网关主动输出 UTF-8/ASCII 行:
<MCU_Tick_ms>,0x100,<Si_V>,<InGaAs_V>\r\n
示例:
125430,0x100,0.436218,0.187529\r\n
ASCII 模式同时保存 MCU 相对时间和 PC 绝对时间。
- UART:460800,8-N-1
- 从站地址:1
- 功能码:04(读取输入寄存器)
- 起始地址:0000
- 寄存器数量:4
- 轮询:100 Hz
- 响应超时:50 ms
- 重试:1次
- Float 字节序:CDAB(16位字交换)
查询帧:
01 04 00 00 00 04 F1 C9
寄存器映射:
| 寄存器 | 数据 |
|---|---|
| 0000–0001 | Si 电压,32位float,CDAB |
| 0002–0003 | InGaAs 电压,32位float,CDAB |
正确参考编码:
| 数值 | IEEE 754 ABCD | Modbus CDAB线上字节 |
|---|---|---|
| 0.436218 | 3E DF 57 F7 |
57 F7 3E DF |
| 0.187529 | 3E 40 07 9A |
07 9A 3E 40 |
四寄存器 Modbus 响应不包含设备时间戳,因此该模式记录 PC 接收时间,并在 UI 和文件中明确标记 Time_Source=PC。
自动模式首先被动监听 0.5 秒:
- 收到可解析且以换行结束的 ASCII 数据后进入 ASCII 流模式。
- 无数据时发送一次 Modbus 探针;收到合法 CRC 响应后进入 Modbus 模式。
- 未识别时给出错误,不静默生成伪数据。
- 原始 Si/InGaAs 电压无条件落盘。
- 厂家典型曲线只标记为
Typical,不能冒充校准证书。 - 用户可分别为两通道设置
P[mW] = k × (V − Vdark) + b。 - 软件中的 H/L 必须与 C10439-15 实体开关一致。
- CSV 在 1,000,000 行自动分卷,避免超过 Excel 单表限制。
- 长时实验建议使用 HDF5;Excel 导出面向内存中的最近10分钟数据。
打开 dist/PhotonLab/PhotonLab.exe。请保留 PhotonLab.exe 与同目录的 _internal 文件夹,不能只单独复制 EXE;整个 PhotonLab 文件夹可直接拷贝到另一台 Windows 11 x64 电脑使用,无需安装 Python。
首次接硬件前,可在协议下拉框选择“内置模拟器”,确认实时曲线、记录和导出功能。
需要 Python 3.11 或更新版本:
setup_windows.bat
run_photonlab.bat开发运行:
$env:PYTHONPATH = "$PWD\src"
.\.venv\Scripts\python.exe -m photonlab.app运行测试:
$env:PYTHONPATH = "$PWD\src"
.\.venv\Scripts\python.exe -m unittest discover -s tests -v打包 Windows 免安装程序:
build_exe.bat输出位于 dist/PhotonLab/PhotonLab.exe。
src/photonlab/
app.py 程序入口
protocols.py ASCII、Modbus、CRC16、CDAB
serial_worker.py 自动识别与独立采集线程
calibration.py Typical LUT、暗电压、实测标定
storage.py CSV/HDF5后台记录、Excel导出
ui/ Windows 11液态玻璃界面
tests/ 协议、标定与存储测试