SRDInitializeHomeRoutine.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using Aitex.Core.RT.Routine;
  2. using CyberX8_Core;
  3. using CyberX8_RT.Modules.Transporter;
  4. using MECF.Framework.Common.Routine;
  5. using MECF.Framework.Common.Utilities;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace CyberX8_RT.Modules.SRD
  12. {
  13. public class SRDInitializeHomeRoutine : RoutineBase, IRoutine
  14. {
  15. private enum InitializeStep
  16. {
  17. Initialize,
  18. InitializeWait,
  19. SwitchOn,
  20. SwitchOnWait,
  21. Home,
  22. HomeWait,
  23. End
  24. }
  25. #region 内部变量
  26. private SRDInitializeRoutine _initializeRoutine;
  27. private SRDSwitchOnRoutine _switchOnRoutine;
  28. private SRDHomeRoutine _homeRoutine;
  29. #endregion
  30. /// <summary>
  31. /// 构造函数
  32. /// </summary>
  33. /// <param name="module"></param>
  34. public SRDInitializeHomeRoutine(string module) : base(module)
  35. {
  36. _initializeRoutine = new SRDInitializeRoutine(module);
  37. _switchOnRoutine = new SRDSwitchOnRoutine(module);
  38. _homeRoutine = new SRDHomeRoutine(module);
  39. }
  40. /// <summary>
  41. /// 中止
  42. /// </summary>
  43. public void Abort()
  44. {
  45. Runner.Stop("Manual Abort");
  46. }
  47. /// <summary>
  48. /// 监控
  49. /// </summary>
  50. /// <returns></returns>
  51. public RState Monitor()
  52. {
  53. Runner.Run(InitializeStep.Initialize, () => _initializeRoutine.Start() == RState.Running, _delay_1ms)
  54. .WaitWithStopCondition(InitializeStep.InitializeWait, () => CommonFunction.CheckRoutineEndState(_initializeRoutine), () => CommonFunction.CheckRoutineStopState(_initializeRoutine))
  55. .Run(InitializeStep.SwitchOn, () => _switchOnRoutine.Start() == RState.Running, _delay_1ms)
  56. .WaitWithStopCondition(InitializeStep.SwitchOnWait, () => CommonFunction.CheckRoutineEndState(_switchOnRoutine), () => CommonFunction.CheckRoutineStopState(_switchOnRoutine))
  57. .Run(InitializeStep.Home, () => _homeRoutine.Start() == RState.Running, _delay_1ms)
  58. .WaitWithStopCondition(InitializeStep.HomeWait, () => CommonFunction.CheckRoutineEndState(_homeRoutine), () => CommonFunction.CheckRoutineStopState(_homeRoutine))
  59. .End(InitializeStep.End, NullFun, _delay_1ms);
  60. return Runner.Status;
  61. }
  62. /// <summary>
  63. /// 启动
  64. /// </summary>
  65. /// <param name="objs"></param>
  66. /// <returns></returns>
  67. public RState Start(params object[] objs)
  68. {
  69. return Runner.Start(Module, "Start Initialize Home");
  70. }
  71. }
  72. }