IVisualEngine.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Windows;
  2. namespace TeamAAS.Vision
  3. {
  4. /// <summary>
  5. /// 视觉引擎契约:任何实现了本接口的类都视为一个可用视觉引擎
  6. /// (VisionPro / VM / Halcon ...)。环境里有哪些引擎,设置页就列出哪些,一键切换。
  7. ///
  8. /// 分层约定:
  9. /// - 本契约只依赖 WPF 基础类型,不依赖任何引擎 SDK(Cognex/VM/Halcon);
  10. /// - 具体引擎实现放在各引擎插件类库中(如 Plugins.Vpp),SDK 只被插件引用;
  11. /// - 宿主(主程序/Core)只通过 <see cref="VisualEngineManager"/> 与本接口访问引擎,
  12. /// 绝不直接引用引擎插件内部类型 —— 引擎可整体替换。
  13. /// </summary>
  14. public interface IVisualEngine
  15. {
  16. /// <summary>引擎显示名(设置页引擎列表与配置持久化用),如 "VisionPro"。</summary>
  17. string EngineName { get; }
  18. /// <summary>
  19. /// 主页多画面视图:内置画面框布局、双击放大。宿主把它放入主页画面区。
  20. /// </summary>
  21. FrameworkElement GetMainView();
  22. /// <summary>
  23. /// 按画面数量与排列方式重建主页多画面布局。
  24. /// arrange:1=水平最优行列,2=垂直最优行列。
  25. /// frameCount=0 表示无画面(宿主画面区留空)。
  26. /// </summary>
  27. void ApplyHomeLayout(int frameCount, int arrange);
  28. /// <summary>标定视图(标定向导的图像操作区,随当前引擎切换)。</summary>
  29. FrameworkElement GetCalibrationView();
  30. /// <summary>设置指定画面框的标题(画面名称);index 越界时静默忽略。</summary>
  31. void SetFrameCaption(int index, string name);
  32. /// <summary>设置指定画面框的状态圆点显隐;index 越界时静默忽略。</summary>
  33. void SetFrameDotVisible(int index, bool visible);
  34. }
  35. }