WilliamBoettcher/Open-Dataplate-Controller
GitHub: WilliamBoettcher/Open-Dataplate-Controller
该项目是一个基于逆向工程的开源串口控制器,用于通过 Python REPL 和桌面 GUI 远程操控多品牌实验室加热板/磁力搅拌器设备。
Stars: 0 | Forks: 0
# Open Dataplate Controller
用于 LHS 系列数显加热板/磁力搅拌器串行接口的开源 Python 工具与逆向工程笔记。本项目封装了源自固件的命令集、交互式 REPL、桌面 GUI、协议文档以及带有注释的 ROM 笔记。
恢复出的固件系列出现在多个贴牌和相近变种中,包括 Cole-Parmer Dataplate 设备、Omega LHS 设备以及 Barnstead Thermolyne PMC 700 系列加热板/磁力搅拌器。请将此视为 alpha 质量的逆向工程工作:在信任自动化操作之前,请务必在您面前的实际设备上验证串口行为。
## 项目状态
- Python 客户端实现了从 HC11 ROM 和模拟器追踪中恢复的命令系列。
- 对至少一台相关设备的实时探测还暴露了一个较旧的基于行的协议系列,该系列尚未与恢复出的 ROM 路径完全协调一致。
- 文档包含了已实现的固件支持协议以及剩余的逆向工程注意事项。
- 加热和搅拌命令可能会带来实际危险。请严密监控硬件测试,并从只读探测开始。
## 功能
- 固件支持的 Python 客户端,包含完整的已知 SCI 命令集
- 交互式 REPL 具有:
- 命令帮助 (`help`, `help a`, `help -F`)
- 直接执行每个已知的协议命令
- 发送原始 ASCII / 十六进制 / 字节
- COM 端口列出与切换
- 接口验证 (`F` 与诊断 `s`)
- 桌面 GUI 具有:
- 加热板温度、搅拌和斜坡控制
- 加热板和搅拌操作的延时启动和定时关闭
- 实时快照轮询
- 温度和搅拌历史图表
- 为快照历史和命令历史开启/停止捕获日志
- 基于 CSV 的加热板程序
- 集成的 REPL 面板
- 清晰的协议文档
- 带注释的反汇编摘录和清理过的 ROM 列表副本
## 安装
```
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -e .
```
## 支持的型号
本项目面向用于多个品牌产品的基于 HC11 的 LHS 系列控制器。已知或可能兼容的标签包括:
- Cole-Parmer Dataplate
- Cole-Parmer `04644`
- Omega LHS
- Barnstead Thermolyne PMC 700 series
在信任自动化操作之前,应始终在您面前的特定设备上验证串行行为。即使底层命令集看起来相似,硬件选项、固件修订版和前面板标签也可能有所不同。
## 电气接口
经测试的 Cole-Parmer `04644` 在后面板上使用一个 4 针 RJ11 插孔。加热板正立放置并从后侧观察时,引脚从左到右依次为:
```
Rear view, plate upright
+---RJ11 jack---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
| | | |
| | | +-- Plate Tx -> connect to controller/driver Rx
| | +------ GND
| +---------- GND
+-------------- Plate Rx <- connect to controller/driver Tx
```
设备侧的串行路径在电气上相对于普通的 TTL UART 是反向的。实际操作中,您需要以下选项之一:
- 一个带有反相功能的 RS-232 线路驱动器/接收器,例如板载的 `SP232ACP`
- 或者一个将 `Rx` 和 `Tx` 均配置为反相的 TTL 串行适配器
对于 `SP232ACP`,其重要的工作参数为:
- RS-232 接收器输入范围:`-15 V` 至 `+15 V`
- 接收器阈值区域:大约在 `0.8 V` 至 `2.4 V` 之间
- `5 V` 供电下的典型接收器切换点:低电平约 `1.2 V`,高电平约 `1.7 V`
- 典型迟滞:约 `0.5 V`
- RS-232 发送摆幅:典型值约 `+/-6.5 V`,在 `3 kOhm` 负载下最小值为 `+/-5.0 V`
正是由于这种反相要求,FT232 类适配器可能只有在启用其 EEPROM 设置中的反相 `Rx` 和 `Tx` 后,或者在适配器与加热板之间接入正确的反相线路驱动器后,才能在电气上“正常”工作。
## 快速开始
列出端口:
```
lhs-hotplate repl --list-ports
```
运行 REPL:
```
lhs-hotplate repl --port COM3
```
如果您正在使用具有不同时钟路径的相近变种设备,您可以覆盖默认的 `300` 波特率:
```
lhs-hotplate repl --port COM3 --baud 600
```
运行 GUI:
```
lhs-hotplate gui
```
## 独立 Windows 应用程序
此代码库还可以生成一个独立的 Windows GUI 打包程序,目标机器无需单独安装 Python。
在项目根目录下使用以下命令进行构建:
```
.\packaging\windows\build_windows_app.ps1
```
如果所选的 Python 环境中尚未安装 `PyInstaller`,您可以让脚本自动安装它:
```
.\packaging\windows\build_windows_app.ps1 -InstallBuildDeps
```
构建脚本将创建:
- `release/windows-app/LHS-Dataplate-046440-Hotplate-Control-Panel\`
- `release/windows-app/LHS-Dataplate-046440-Hotplate-Control-Panel.zip`
- `release/windows-app/installer/*.msi`
打包后的应用程序入口点为:
```
LHS-Dataplate-046440-Hotplate-Control-Panel.exe
```
安装程序制品是一个标准的 Windows MSI 包,它会将应用程序安装在 `%LOCALAPPDATA%\Programs\LHS-Dataplate-046440-Hotplate-Control-Panel` 下,并创建“开始菜单”快捷方式。
## REPL 示例
```
help
help F
help baud
ports
open COM3
baud
baud 300
verify
F
k
m
a 100
A 50 46
hex 46
ascii F
bytes 0x46
```
在 REPL 内部,`baud` 显示当前速率,`baud 600` 修改速率。默认值仍为 `300` 波特率,因为这是经测试的 Cole-Parmer `04644` 所使用的速率。
## CSV 程序格式
程序以 CSV 格式保存,包含以下列:
```
offset_s,plate_c,probe_c,stir_rpm,ramp_c_per_hour,comment
```
请参阅 [examples/sample_program.csv](examples/sample_program.csv)。
## 文档
- [协议参考](docs/PROTOCOL.md)
- [逆向工程状态](docs/REVERSE_ENGINEERING_STATUS.md)
- [带注释的 ROM 笔记](docs/disassembly/ANNOTATION_SUMMARY.md)
- [带注释的 ROM 列表](docs/disassembly/plate_rom_annotated.DIS)
## 安全
此软件可控制加热器和搅拌电机。请仔细检查命令,在您的特定设备上验证限制,并监督初期测试。本项目不附属于仪器制造商,也未获得其认可。
标签:Python, 串口通信, 云资产清单, 实验室设备, 无后门, 桌面GUI, 漏洞挖掘, 物联网控制, 硬件接口, 逆向工具, 逆向工程