VisionMasterEngine.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Windows;
  2. using System.Windows.Controls;
  3. using Plugins.Vm.Views;
  4. using TeamAAS.Vision;
  5. namespace Plugins.Vm.Engines
  6. {
  7. /// <summary>
  8. /// 海康 VisionMaster 引擎:实现 TeamAAS.Vision.IVisualEngine 契约。
  9. /// 与 VisionProEngine 对等——引擎 SDK(VM)只被本插件引用,宿主只通过接口访问。
  10. /// 主页多画面基于 UCDispVm(画面框网格),双击放大/标定等接入 SDK 后补齐。
  11. /// </summary>
  12. public class VisionMasterEngine : IVisualEngine
  13. {
  14. public string EngineName => "VisionMaster";
  15. public FrameworkElement GetMainView()
  16. {
  17. return UCDispVm.Instance;
  18. }
  19. public void ApplyHomeLayout(int frameCount, int arrange)
  20. {
  21. // RowColNumber:{画面总数, 排列方式}——内部按最优行列铺设 VmWindow 网格;0=清空画面区
  22. UCDispVm.Instance.RowColNumber = new[] { frameCount, arrange };
  23. }
  24. public FrameworkElement GetCalibrationView()
  25. {
  26. // TODO:接入 VM SDK 后返回真正的 VM 标定页(镜像 VppCalibrationPage)
  27. return new Border
  28. {
  29. Background = System.Windows.Media.Brushes.Transparent,
  30. Child = new TextBlock
  31. {
  32. Text = "VisionMaster 标定(待接入 VM SDK)",
  33. HorizontalAlignment = HorizontalAlignment.Center,
  34. VerticalAlignment = VerticalAlignment.Center
  35. }
  36. };
  37. }
  38. public void SetFrameCaption(int index, string name)
  39. {
  40. if (index < 0 || UCDispVm.Instance.vmWindow.Count <= index) return;
  41. UCDispVm.Instance.vmWindow[index].SetCaption(name);
  42. }
  43. public void SetFrameDotVisible(int index, bool visible)
  44. {
  45. if (index < 0 || UCDispVm.Instance.vmWindow.Count <= index) return;
  46. UCDispVm.Instance.vmWindow[index].SetStatusDotVisible(visible);
  47. }
  48. }
  49. }