DeviceContracts.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. namespace TeamAAS.Global.Devices
  4. {
  5. /// <summary>具备名称的设备(按名查找的最小契约)。</summary>
  6. public interface INamedDevice
  7. {
  8. /// <summary>设备名称(唯一)。</summary>
  9. string Name { get; }
  10. }
  11. /// <summary>具备连接状态的设备。</summary>
  12. public interface IConnectableDevice : INamedDevice
  13. {
  14. /// <summary>是否已连接。</summary>
  15. bool IsConnected { get; }
  16. /// <summary>打开/连接设备。返回是否成功。</summary>
  17. bool Open();
  18. /// <summary>关闭/断开设备。</summary>
  19. void Close();
  20. }
  21. /// <summary>设备提供者:某类设备管理器的最小契约(相机/机器人/通讯/供料/运动卡管理器各自适配)。</summary>
  22. public interface IDeviceProvider<TDevice> where TDevice : INamedDevice
  23. {
  24. /// <summary>全部设备(只读快照)。</summary>
  25. IEnumerable<TDevice> Devices { get; }
  26. /// <summary>按名称取设备。找不到返回 default。</summary>
  27. TDevice GetByName(string name);
  28. }
  29. /// <summary>
  30. /// 设备调试页面契约:每种设备内核可附带一个自定义调试界面(用户分层设计·第二层要求)。
  31. /// 宿主用工厂创建页面并绑定设备实例;页面自身用 WPF 控件实现(契约层只定义工厂,不引入 UI 类型)。
  32. /// </summary>
  33. public interface IDeviceDebugPageFactory
  34. {
  35. /// <summary>本调试页适用的设备类别名(如 "相机"/"机器人"/"通讯"/"供料器"/"运动卡")。</summary>
  36. string DeviceCategory { get; }
  37. /// <summary>为指定设备创建调试页面对象(返回 object,由宿主转换为 FrameworkElement,避免本层依赖 WPF)。</summary>
  38. object CreatePage(object device);
  39. }
  40. }