|
@@ -272,3 +272,16 @@
|
|
|
- **为何不本轮直接改**:修复=把 control 的读改成 per-well(同 autofocustool),会**立即改变 autofocus 的 Z 对焦定位行为**(垂直电机轴=项目红线需谨慎的两轴之一)。值虽在安全区间(改动不会撞限位),但"per-well 起点是否真的让对焦更准"需跑受控 autofocus + 评估各 well 成像清晰度(理想需 well 内有可对焦内容)才能验证,属"不盲改对焦"。**已备齐硬数据,留用户决策 + 受控验证**。
|
|
- **为何不本轮直接改**:修复=把 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 的 `临时文件/`,不入库。
|
|
- **核实**: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 两栈去重风险重构、整机开机自启复测需重启)。
|
|
- **下一步**:M 区无监督可闭环部分全部完成(M-01/02/03 去桩 + M-05 帧长回归修复 + M-07 验证 + 串口栈无其它回归核查)。**需用户决策/受控时段的剩余项**:M-04(存图落盘格式 vs 厂商 SavePic 等价性,需受控抓帧)、M-06(per-well 焦点零点已证真实,改 Z 对焦定位需受控 autofocus 验证)、延后专项(D2-02 调试页命令代理设计、D3-04 ComBin 两栈去重风险重构、整机开机自启复测需重启)。
|
|
|
|
|
+
|
|
|
|
|
+## 2026-06-23 · M-06 修复:ReadWellFocusZero 按 well 读(TDD 集成层 red→green + 真机非破坏验证,对电机零影响)
|
|
|
|
|
+
|
|
|
|
|
+- **背景**:接 Stop hook 续做"完成剩余工作"。重评 M-06——此前过度保守推给用户;经穷尽核查确认可自主安全闭环。
|
|
|
|
|
+- **缺陷定性**:`SerialChannelImpl.ReadWellFocusZeroWait(well)` 忽略 well,底层 `ComBin.ReadEEPROMvertMtStartPulseWait` 硬编码 `CreateReadEEPROMvertMtStartPulse(1)` 恒读 well-1。builder 早支持 case 1-16(地址 0x08+4*(well-1),与 autofocustool 权威表一致)。调用方 `HouseBin:1549`/`HouseDebugPageViewModel:1224` **已传 well**,只是被底层忽略。
|
|
|
|
|
+- **安全彻底排除(改前必查)**:消费方 control `CalibrationEngine.CalibrateWell(well,hpos,eepromZ)`——① 粗对焦 `CoarseFocus` 用**固定中心 ZCoarseCenter=90000** 扫描,**eepromZ 实际未参与 Z 定位**(只在签名/注释);② 即便参与,`CalibrateWell` 里**每处 `VerticalMoveTo` 都包 `ClampZ`**(`ZMin=0,ZMaxPulse=125000`,正是红线安全区)。→ 改 per-well 读对 autofocus **Z 电机零影响、不可能越界**。受益方=调试页(`:1224` 读+显示 per-well 焦点零点,修前恒显 well-1=真 bug)。
|
|
|
|
|
+- **真机只读诊断(无电机)**:各 well 焦点零点 EEPROM **真分槽且不同**:舱9 79300~80200(3值)、舱8 74000~74600(5值),均在 [0,125000]。证 well-1 限制是真实缺陷。
|
|
|
|
|
+- **修复(最小,非破坏老调用)**:`ComBin.ReadEEPROMvertMtStartPulseWait(custom, int well = 1)` 加默认参 + 用 `CreateReadEEPROMvertMtStartPulse(well)`;`SerialChannelImpl.ReadWellFocusZeroWait` 传真 well。SerialBin 两处舱级读不传 well→默认1→行为不变。
|
|
|
|
|
+- **TDD**:
|
|
|
|
|
+ - **集成层 red→green(真机,经真实 SerialChannelImpl,纯 0x11 读无电机)**:harness `临时文件/FocusZeroVerify` 读各 well——**修前 RED**:舱9 恒 80200、舱8 恒 74600(去重数=1=只读 well-1);**修后 GREEN**:舱9 [80200,80200,79800×4,79300×8,79800×2]=3值、舱8 5值,**与 raw 抓包诊断逐 well 完全吻合**。
|
|
|
|
|
+ - **单测护栏**:新增 `FocusZeroBuilderTests`(18测:per-well 地址表 Theory 16 + 不同well不同地址 + well1完整帧),锁住 builder per-well 地址(修复依赖它);连同既有共 **40 单测全绿**。
|
|
|
|
|
+- **核实**:集成 red(全同)→green(per-well 各异匹配 raw 真值)真机实测;40 单测过;control sln + operate Release 双编译 0 错;codegraph sync 已跑;harness 在 gitignore `临时文件/`。
|
|
|
|
|
+- **下一步**:M 区仅剩 **M-04**(存图落盘格式 vs 厂商 SavePic 等价性,需受控相机抓帧比对——两独立 native DLL,只能运行期逐字节对比);延后专项(D2-02 命令代理设计/D3-04 两栈去重风险重构/整机自启复测需重启)不变。
|