LoadPortMapRoutine.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Aitex.Core.RT.Routine;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Aitex.Core.RT.Log;
  8. using MECF.Framework.Common.Equipment;
  9. using Aitex.Core.RT.SCCore;
  10. using CyberX8_Core;
  11. using System.Windows.Controls;
  12. using CyberX8_RT.Modules.EFEM;
  13. using MECF.Framework.Common.Utilities;
  14. namespace CyberX8_RT.Modules.LPs
  15. {
  16. class LoadPortMapRoutine : ModuleRoutineBase, IRoutine
  17. {
  18. enum RoutineStep
  19. {
  20. Map,
  21. CheckMap,
  22. End,
  23. }
  24. private int _timeout = 0;
  25. private EfemRobotMapRoutine _robotMapRoutine;
  26. public LoadPortMapRoutine(LoadPortModule lpModule) : base(ModuleHelper.Converter(lpModule.Module))
  27. {
  28. Name = "Map";
  29. }
  30. public RState Start(params object[] objs)
  31. {
  32. Reset();
  33. _timeout = SC.GetValue<int>("EFEM.LoadPort.MotionTimeout");
  34. Notify($"Start Map");
  35. return Runner.Start(Module, Name);
  36. }
  37. public RState Monitor()
  38. {
  39. Runner.Run(RoutineStep.Map, StartMap, _delay_1ms)
  40. .WaitWithStopCondition(RoutineStep.CheckMap, () => CommonFunction.CheckRoutineEndState(_robotMapRoutine),
  41. () => CommonFunction.CheckRoutineStopState(_robotMapRoutine))
  42. .End(RoutineStep.End, NullFun, _delay_1ms);
  43. return Runner.Status;
  44. }
  45. private bool StartMap()
  46. {
  47. return _robotMapRoutine.Start(Module)==RState.Running;
  48. }
  49. public void Abort()
  50. {
  51. Runner.Stop("Manual Abort");
  52. }
  53. }
  54. }