瀏覽代碼

docs(M-06): 真机只读诊断确认 per-well 焦点零点真实分槽(M-06为真实缺陷) + 串口栈无其它回归核查

- 串口命令层穷尽 diff:control Commander vs operate 黄金基线 30静态帧/方法名/地址字节直方图全一致 → M-05 是该层最后一个回归。
- M-06 真机只读诊断(无电机):各 well Z 焦点零点 舱9(3个值79300~80200)/舱8(5个值74000~74600)真实分槽且不同,均在安全Z区。确认 control 恒读 well-1 是真实缺陷;修复改 Z 对焦定位涉垂直电机,需受控 autofocus 验证(不盲改)。
- 更新 待验证清单 M-06 行 + 交接卡。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 3 天之前
父節點
當前提交
0605887857
共有 2 個文件被更改,包括 12 次插入1 次删除
  1. 11 0
      项目文档/进度/交接卡.md
  2. 1 1
      项目文档/进度/待验证清单.md

+ 11 - 0
项目文档/进度/交接卡.md

@@ -261,3 +261,14 @@
 - **残留(非回归,未做)**:`Write*Wait` 仍"收回复即 return",未把状态字作 bool 成功传回调用方(=M-05"成功语义传播",基线 operate 同样无条件 true,非合并回归)。
 - **核实**:raw 抓包2舱回包字节实读;0x12/0x11/0x10/握手帧长 raw 实测;TDD red(2失败)→green(22过);紧凑写读 24/24;M-01/02/03 回归 PASS;双编译0错;`临时文件/` 已 gitignore(3 个 harness 不入库);codegraph sync 已跑。文档已同步(待验证清单 M-05 + §八 + 进度状态.yaml + 进度数据.js + 本卡)。
 - **下一步**:提交(代码+测试+文档)。M 区可无监督闭环部分(M-01/02/03/05 修复 + M-07 验证)已完;剩 M-04(存图受控抓帧·相机在用)/M-06(well级零点·涉垂直电机·待决策)+ 延后专项(D2-02 命令代理设计/D3-04 两栈去重风险重构/整机自启复测需重启),均需用户决策或受控时段/重启。
+
+## 2026-06-23 · 续:串口栈无其它静默回归核查 + M-06 真机只读诊断(确认真实缺陷,改动涉垂直电机待决策)
+
+- **串口命令层穷尽核查(确认 M-05 是该层最后一个回归)**:系统 diff control `ivf_tl_SerialHelper/Util/Commander.cs` vs operate 黄金基线 `临时文件/.../ivf_tl_Entity/ComEntitys/Commander.cs`——**30 个静态命令帧逐字节完全一致**;方法名清单一致;全部参数化 builder 的 `command.Add(0x..)` 地址字节直方图一致。结论:串口命令层仅 CustomProtocolLength 0x12 一处回归(已修),无其它静默错字节。
+- **M-06 真机只读诊断(harness `临时文件/FrameLenProbe` ⑤ 段,纯 0x11 读,无电机)**:按 autofocustool 权威地址表(well1=0x08 步进4,well16=0x44)逐 well 读 Z 焦点零点——
+  - 舱9:79300~80200,16 well **3 个不同值**(well-1=80200);舱8:74000~74600,**5 个不同值**(well-1=74600)。
+  - 值均 sane、落在安全 Z 区间 [0,125000](焦面实测 86000~92000,零点在其下方,合理)。
+  - **结论**:per-well 焦点零点在 EEPROM **真实分槽且各 well 不同**→ M-06 是**真实缺陷**(非"可能不存在"):control `ReadWellFocusZeroWait(well)` 忽略 well 恒读 well-1,autofocus 对非 well-1 用了偏 600~900 脉冲的错误 Z 起点。
+- **为何不本轮直接改**:修复=把 control 的读改成 per-well(同 autofocustool),会**立即改变 autofocus 的 Z 对焦定位行为**(垂直电机轴=项目红线需谨慎的两轴之一)。值虽在安全区间(改动不会撞限位),但"per-well 起点是否真的让对焦更准"需跑受控 autofocus + 评估各 well 成像清晰度(理想需 well 内有可对焦内容)才能验证,属"不盲改对焦"。**已备齐硬数据,留用户决策 + 受控验证**。
+- **核实**:Commander 两文件 30 帧/方法名/地址直方图 diff 实跑;M-06 各 well 零点 raw 实读(舱8/舱9 共 32 次,值已记录);文档同步(待验证清单 M-06 行)。harness 在 gitignore 的 `临时文件/`,不入库。
+- **下一步**:M 区无监督可闭环部分全部完成(M-01/02/03 去桩 + M-05 帧长回归修复 + M-07 验证 + 串口栈无其它回归核查)。**需用户决策/受控时段的剩余项**:M-04(存图落盘格式 vs 厂商 SavePic 等价性,需受控抓帧)、M-06(per-well 焦点零点已证真实,改 Z 对焦定位需受控 autofocus 验证)、延后专项(D2-02 调试页命令代理设计、D3-04 ComBin 两栈去重风险重构、整机开机自启复测需重启)。

+ 1 - 1
项目文档/进度/待验证清单.md

@@ -71,7 +71,7 @@
 | M-03 | 缓冲瓶灯光亮度**写** EEPROM 真下发 | `SerialChannelImpl.cs:143` 已去桩→调 `_com.WriteEEPROMLightNumWait`(control 补 builder,地址 00 05 34) | **真机** | ☑ 已验通过 |
 | M-04 | 调试页存图与基准一致 | `CameraImpl.cs:148` `SavePic(name,w,h)` **忽略 w/h** 转发 `_camera.SaveBmpPic(name)`(底层从相机自身 SourceBuffer 取帧、自带尺寸→丢弃入参 w/h **无害**);落盘格式/旋转/位深 vs operate 基准 `MVCAPI.SavePic` 等价性需一次**受控抓帧**核对(当前相机正被 control 用于活体成像,不宜无监督抓帧干扰) | **真机** | ◑ 代码核查无害/落盘格式待受控抓帧 |
 | M-05 | 写 EEPROM 类"成功=true"可靠性 | **帧错位根因=合并回归已修复**:control `CustomProtocolLength` 对 0x12 写E方回包帧长误设 6(基线 operate=12),真机实证回包确为 12(舱8/舱9 一致,回包[3]=0x0C 自证)→ 改 control 帧长表 0x12→12(Commander.cs:76)。残留:`Write*Wait` 仍"收回复即 return"不把状态字传回调用方(非回归,基线同) | **真机** | ☑ 帧错位已修复并真机验证(残留"成功语义传播"非回归) |
-| M-06 | `ReadWellFocusZero` 按 well 区分 | **非合并回归**:合并前 operate `ComBin.cs:871` 与 control `ComBin.cs:895` **同样硬编码 `CreateReadEEPROMvertMtStartPulse(1)`**(只读 well-1 零点),builder 虽支持 case 1-16,但 Wait 方法两版基线都传 1。改按 well=**行为变更**(影响 autofocus 的 Z 焦面零点,涉垂直电机),需领域确认 well 级零点是否存在 + 谨慎对焦真机验证,**不盲改** | **真机** | ☐ 非回归·待决策 |
+| M-06 | `ReadWellFocusZero` 按 well 区分 | **非合并回归,但真机诊断确认是真实缺陷**:control `ReadWellFocusZeroWait(well)` 忽略 well 恒读 well-1 零点;真机只读诊断(无电机)证 EEPROM **per-well 焦点零点真实分槽且不同**(舱9 79300~80200/3个值、舱8 74000~74600/5个值,均在安全Z区[0,125000]),autofocustool 权威表(well1=0x08 步进4)也按 well 读 → autofocus 对非 well-1 用了偏 600~900 脉冲的错误 Z 起点。修=采纳 per-well 读(同 autofocustool),但**改 Z 对焦定位(垂直电机轴)**,按红线需受控对焦真机验证 | **真机** | ☐ 确认真实缺陷·硬数据已备·改动涉垂直电机待受控验证/用户决策 |
 | M-07 | Release 连内网网关(非测试外网) | ✅ **已验证**:Release 排除 `#if DEBUG`(其 :108 行覆写到 test-gateway 外网);部署 `App.config` `outInter=0`(不触发 :87 外网覆写)+ `urlIp=http://127.0.0.1`+`urlPort=10010`→ BaseUrl=内网网关。已由阶段1 operate WPF 真外壳 Release E2E 真服务器登录成功 + control 10010 ESTABLISHED 坐实。现场换站点改 `urlIp` 即可 | 部署 | ☑ 已验通过 |
 
 > **2026-06-23 M-01/M-02/M-03 ☑ 已修复并真机验证(TDD)**: