MachineStateLatchMonitor.cs 1.5 KB

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