ILightController.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /* 详细伪代码(步骤说明):
  2. 1. 在接口文件顶部添加多行注释,说明接下来要对接口及其成员生成 XML 注释的目的。
  3. 2. 为接口 `ILightController` 添加总体的 `<summary>` 描述,解释该接口代表一个光源控制器,负责连接、初始化与批量控制通道。
  4. 3. 为每个属性添加 `<summary>`:
  5. - `Id`:唯一标识符(只读)。
  6. - `Name`:控制器显示名称(只读)。
  7. - `Model`:控制器型号(只读)。
  8. - `ChannelCount`:通道数量,通常与 `Channels.Count` 一致(只读)。
  9. - `IsConnected`:指示与硬件连接状态(只读)。
  10. - `Channels`:只读通道列表,返回 `ILightChannel` 的不可变视图。
  11. 4. 为每个方法添加 `<summary>`、`<returns>`,必要时添加 `<remarks>`:
  12. - `ConnectAsync`:异步建立连接,成功返回 true。
  13. - `DisconnectAsync`:异步断开连接(无需返回值)。
  14. - `InitializeAsync`:在连接后初始化控制器与通道配置,成功返回 true。
  15. - `TurnOnAllAsync` / `TurnOffAllAsync`:异步批量打开/关闭所有通道,返回整体成功状态(所有通道成功为 true)。
  16. 5. 为接口继承的 `IDisposable` 提醒实现者在 `Dispose` 中释放非托管资源与关闭连接。
  17. 6. 确保注释使用简体中文,保持简洁并包含异步行为、预期副作用与返回值含义。
  18. 7. 将注释以标准 C# XML 文档注释(///)形式插入到接口及其成员上方,以便生成文档和在 IDE 中显示工具提示。
  19. */
  20. using System;
  21. using System.Collections.Generic;
  22. using System.Linq;
  23. using System.Text;
  24. using System.Threading.Tasks;
  25. namespace TeamAAS_VP.Core.Lights
  26. {
  27. /// <summary>
  28. /// 表示一个光源控制器的抽象接口。
  29. /// 实现类负责管理与底层光源硬件的连接、初始化以及对通道的集中控制操作。
  30. /// </summary>
  31. public interface ILightController : IDisposable
  32. {
  33. /// <summary>
  34. /// 控制器的唯一标识符。
  35. /// 通常由设备发现或配置阶段分配,供日志和映射使用。
  36. /// </summary>
  37. int Id { get; }
  38. /// <summary>
  39. /// 控制器的显示名称或描述。
  40. /// 可用于 UI 展示或调试。
  41. /// </summary>
  42. string Name { get; }
  43. /// <summary>
  44. /// 控制器的型号信息。
  45. /// 用于区分不同厂商或不同协议的实现逻辑。
  46. /// </summary>
  47. LightModel Model { get; }
  48. /// <summary>
  49. /// 控制器包含的通道数量。
  50. /// 通常应与 <see cref="Channels"/> 中的元素数量一致。
  51. /// </summary>
  52. int ChannelCount { get; }
  53. /// <summary>
  54. /// 指示控制器当前是否与底层硬件建立了连接。
  55. /// 在成功调用 <see cref="ConnectAsync"/> 并完成后应为 true,在调用 <see cref="DisconnectAsync"/> 或连接丢失后应为 false。
  56. /// </summary>
  57. bool IsConnected { get; }
  58. /// <summary>
  59. /// 只读的光源通道集合。
  60. /// 每个通道通过 <see cref="ILightChannel"/> 描述单个输出通道的状态与控制接口。
  61. /// </summary>
  62. IReadOnlyList<ILightChannel> Channels { get; }
  63. /// <summary>
  64. /// 异步建立与光源控制器的连接。
  65. /// </summary>
  66. /// <returns>
  67. /// 如果连接成功并且控制器可用则返回 <c>true</c>,否则返回 <c>false</c>。
  68. /// </returns>
  69. Task<bool> ConnectAsync();
  70. /// <summary>
  71. /// 异步断开与光源控制器的连接并释放会话相关的资源。
  72. /// 调用后 <see cref="IsConnected"/> 应变为 <c>false</c>。
  73. /// </summary>
  74. /// <returns>当断开完成时的任务。</returns>
  75. Task DisconnectAsync();
  76. /// <summary>
  77. /// 在连接建立后对控制器及其通道进行初始化(例如读取配置、设置初始状态等)。
  78. /// </summary>
  79. /// <returns>
  80. /// 初始化成功返回 <c>true</c>;若初始化失败(例如硬件响应异常或配置不兼容)返回 <c>false</c>。
  81. /// </returns>
  82. Task<bool> InitializeAsync();
  83. /// <summary>
  84. /// 异步将所有通道打开(或设置为“开启”状态)。
  85. /// 实现应遍历 <see cref="Channels"/> 并对每个通道执行打开操作。
  86. /// </summary>
  87. /// <returns>
  88. /// 当所有通道均成功打开时返回 <c>true</c>;若任一通道操作失败则返回 <c>false</c>(具体策略由实现决定)。
  89. /// </returns>
  90. Task<bool> TurnOnAllAsync();
  91. /// <summary>
  92. /// 异步将所有通道关闭(或设置为“关闭”状态)。
  93. /// 实现应遍历 <see cref="Channels"/> 并对每个通道执行关闭操作。
  94. /// </summary>
  95. /// <returns>
  96. /// 当所有通道均成功关闭时返回 <c>true</c>;若任一通道操作失败则返回 <c>false</c>(具体策略由实现决定)。
  97. /// </returns>
  98. Task<bool> TurnOffAllAsync();
  99. }
  100. }