MachineStateLatchMonitor.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using SKMC.Api.Common.Monitor;
  2. using System;
  3. namespace SKMC.Api.Machine.Monitor
  4. {
  5. /// <summary>
  6. /// 状态锁存管理器, 用于低频的状态判断并锁定
  7. /// 例如总线连接状态、设备物料状态、是否长时间无人操作等
  8. /// </summary>
  9. public abstract class MachineStateLatchMonitor : BaseMonitor
  10. {
  11. /// <summary>
  12. /// 添加任务,支持返回 bool 或可转换为 int 的数值类型
  13. /// </summary>
  14. public abstract void AddTask<T>(string key, Func<T> task, Action callback = null, LatchMode mode = LatchMode.OpenMode);
  15. /// <summary>
  16. /// 获取任务信息
  17. /// </summary>
  18. /// <param name="key"></param>
  19. /// <returns></returns>
  20. public abstract MachineLatchTask GetTask(string key);
  21. /// <summary>
  22. /// 获取累计结果
  23. /// </summary>
  24. public abstract int GetResult(string key);
  25. /// <summary>
  26. /// 重置任务结果
  27. /// </summary>
  28. public abstract void ResetResult(string key);
  29. }
  30. public enum LatchMode
  31. {
  32. /// <summary>
  33. /// 适用常闭模式:11101/11001返回-1,11111返回1
  34. /// </summary>
  35. CloseMode,
  36. /// <summary>
  37. /// 适用常开模式:00010/00110返回-1,00000返回1
  38. /// </summary>
  39. OpenMode
  40. }
  41. }