# dsh-ls125-uv-probe 一个 **DeepSeek Harness 技能插件**,面向 **林上 LinShang LS125 紫外辐照计**及其 **UVALED-X3** 紫外探头: 把表与探头之间的私有 UART 协议完整逆向出来,并附带抓取/解码工具链,以及一份**已验证的探头主机固件** —— 可以**完全脱离原装表**读取探头。 装上之后,你的 agent 就多了一个 `ls125-uv-probe` 技能:协议速查表、命令字节、工具链用法, 以及那些"让一套完全正常的设备看起来像坏了"的坑。 > English: [README.md](README.md) ## 它能回答什么 | 问题 | 答案 | |---|---| | 能不能不用原装表、用我自己的单片机读这个探头? | **能** —— 已在 STM32F103 上验证:21/21 帧、零 CRC 错、零超时 | | 协议是什么? | **9600 8N1**,每 500 ms 轮询一次,探头回 28 字节帧,带 **CRC-16/MODBUS** | | 有没有隐藏的握手、挑战应答或 ID 校验? | **没有** —— 轮询命令就是一条恒定不变的 8 字节串 | | 能清掉探头里的记录吗? | **能** —— 有第二条命令,会同时清零能量、最小值和时间计数 | | 必须发原装表那套开机配置命令吗? | **不用** —— 只发轮询就够了(已验证) | ## 安装 ```sh dsh plugin --profile web add dsh-ls125-uv-probe ``` 或者直接从仓库安装: ```sh dsh plugin --profile web add github:2333hutao/dsh-ls125-uv-probe ``` ## 协议速查 ``` 主机 → 探头 轮询(每 500 ms) AB 20 60 00 14 00 89 07 清零 AB 21 20 00 02 00 01 00 3D 8A 探头 → 主机 28 字节定长帧,帧头 AB 20 60 00 14 00 偏移 6–9 float LE 实时辐照度 µW/cm²(表显 mW/cm² = ÷1000) 偏移 10–13 float LE 累积能量 µJ/cm² 偏移 14–15 uint16 LE 距上次清零的时间 ×0.1 s 偏移 16–17 2 字节 恒 0(含义未定,已排除单位/量程) 偏移 18–21 float LE 最小值 µW/cm² 偏移 22–25 float LE 平均辐照度 µW/cm² 偏移 26–27 uint16 LE CRC-16/MODBUS(over 0–25;poly 0xA001 / init 0xFFFF / LSB-first) ``` 帧内数值**永远是 µW/cm² 与 µJ/cm²**,与表上的单位档无关,所以主机不需要关心那个设置。 **最大值不在帧里** —— 表是自己统计的,你也应该自己统计。 ## 包里装了什么 ``` skill/SKILL.md 技能正文(协议速查、命令、工具链用法、硬规则) skill/PROTOCOL.md 完整规格、命令族规律、可直接移植的 C 参考实现 skill/LESSONS.md 可迁移的方法论 + 13 条实测踩坑及其判据 skill/AGENTS.md 给"降落到这个工作区的 agent"的接手说明 skill/tools/ fx2cap.cjs(自研抓取,官方 libusb + fx2lafw 协议)与四个解码分析脚本 skill/firmware/ f103_probe(已验证的主机固件)、f103_rgb(可控光源) skill/captures/ 一份样本抓取,没有硬件也能把工具链跑通 ``` 工具链绕开了一个长期存在的 sigrok 问题:所有 Windows 版 sigrok 都静态链接同一个 **2016 年的 libusb**, 它的后端派发在某些系统上必然失败,于是 `fx2lafw` 报 `LIBUSB_ERROR_NOT_SUPPORTED`,而 `--scan` 却还能列出设备。 **重装驱动没用。** `fx2cap.cjs` 改用官方 libusb 直接与设备通信,并补上 sigrok 没有的两个能力: **没有抓取时长上限**、以及**软触发**。 ## 每一条都是量出来的,不是断言的 仓库里保留着全部测量过程:三轮"帧内值 ↔ 表显读数"对照**逐位吻合到小数点后四位**; 穷举 **65536 个多项式**找出校验和;用暂停主机的方式证明**探头不被轮询就绝不说话**; 以及四组独立实验把 D4 从"复位线"的候选里彻底排除掉。 ## 这份代码是 AI 写的 —— 署名声明 **本仓库的全部代码、固件、工具链与文档均由 AI agent(DeepSeek Harness)编写**, 依据的是在真实硬件上进行的测量。 这里的协议知识**不是**从数据手册、厂商文档或第三方实现里抄来的 —— 它是从信号线上抓出来、 与该表自己的显示屏逐位对照,并且**每一条结论背后都有一次记录在案的实验**。 `skill/` 里没有任何一句是没有测量支撑的断言,少数未定项也都明确标注为未定。 人类操作者做了 AI 做不到的部分:接线、供电、探头、按表上的键,以及报告屏上显示的数字。 **请按对待任何机器编写代码的方式来审查它。** 所有测量证据都在仓库里,结论可以复核,不必凭信任接受。 ## 许可 MIT