DebugCalibrationAdapter.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. namespace ivf_tl_Operate.ViewModel
  3. {
  4. // ──────────────────────────────────────────────────────────────────────────────
  5. // M1-B2 去重:DebugSerialAdapter / DebugCameraAdapter(把 operate B 栈具体类型
  6. // ivf_tl_Entity.ComEntitys.ComBin / ivf_tl_Entity.CameraEntitys.Camera 适配成 HAL
  7. // 接口)已退役并删除。调试页一键标定现直接把借用到的 lease.Serial/lease.Camera
  8. // (HAL ISerialChannel/ICamera,A 栈 control 句柄)喂给 CalibrationEngine
  9. // (见 HouseDebugPageViewModel 一键标定:new CalibrationEngine(Serial, Cam)),
  10. // 不再经这两个适配器包 B 栈具体类型。删除它们后本文件不再引用 B 栈 ComBin。
  11. // ──────────────────────────────────────────────────────────────────────────────
  12. /// <summary>M2-05 单 well 标定 UI 状态:待标定/标定中/合格(绿)/伪峰(红)/失败(红)。</summary>
  13. public enum WellCalibState { Pending, Running, Qualified, FakePeak, Failed }
  14. /// <summary>
  15. /// M2-05 一键标定单 well UI 结果项(绑定调试页 16 格实时显示)。
  16. /// 合格(Qualified)绿、伪峰/失败(FakePeak/Failed)红;含 FocusZ/峰比/偏移/曝光/Note。
  17. /// 实现 ObservableObject 以便每 well 标定完即时刷新对应格子。
  18. /// 颜色判定建议在 View 用 DataTrigger 绑定 State(绿=Qualified,红=FakePeak|Failed,中性=Pending|Running)。
  19. /// </summary>
  20. public partial class WellCalibUiItem : ObservableObject
  21. {
  22. [ObservableProperty] private int well;
  23. [ObservableProperty] private WellCalibState state = WellCalibState.Pending;
  24. [ObservableProperty] private int focusZ;
  25. [ObservableProperty] private double peakRatio;
  26. [ObservableProperty] private double centerOffsetPct;
  27. [ObservableProperty] private bool circleFound;
  28. [ObservableProperty] private int exposure;
  29. [ObservableProperty] private string note = "";
  30. /// <summary>是否合格(供 View 直接绑定做绿/红,等价 State==Qualified)。</summary>
  31. public bool IsQualified => State == WellCalibState.Qualified;
  32. }
  33. /// <summary>
  34. /// M2-07 对焦后手调拍摄层 · 单层预览项(绑定预览列表,让工程师看到调整后各层绝对 Z)。
  35. /// 由 PhotoLayerCalculator.ComputeLayerPositions(标定FocusZ, 手调cfg, pulseMax) 生成;
  36. /// IsFocusLayer 标记清晰层(第 down 层)以便 View 高亮。
  37. /// </summary>
  38. public partial class LayerPreviewItem : ObservableObject
  39. {
  40. /// <summary>层序号(0 .. count-1,0=对焦起点)。</summary>
  41. [ObservableProperty] private int layerIndex;
  42. /// <summary>该层绝对 Z 脉冲(公式算出,含 pulseMax 钳位)。</summary>
  43. [ObservableProperty] private int zPulse;
  44. /// <summary>是否为清晰层(即第 down 层,对焦锚点 FocusZ 所在层)。</summary>
  45. [ObservableProperty] private bool isFocusLayer;
  46. }
  47. }