LoadPortMapRoutine.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. using CyberX8_RT.Devices.EFEM;
  15. namespace CyberX8_RT.Modules.LPs
  16. {
  17. class LoadPortMapRoutine : ModuleRoutineBase, IRoutine
  18. {
  19. enum RoutineStep
  20. {
  21. Map,
  22. CheckMap,
  23. End,
  24. }
  25. private int _timeout = 0;
  26. private EfemRobotMapRoutine _robotMapRoutine;
  27. public LoadPortMapRoutine(LoadPortModule lpModule,EfemBase efemBase) : base(ModuleHelper.Converter(lpModule.Module))
  28. {
  29. Name = "Map";
  30. _robotMapRoutine=new EfemRobotMapRoutine(efemBase);
  31. }
  32. public RState Start(params object[] objs)
  33. {
  34. Reset();
  35. _timeout = SC.GetValue<int>("EFEM.LoadPort.MotionTimeout");
  36. Notify($"Start Map");
  37. return Runner.Start(Module, Name);
  38. }
  39. public RState Monitor()
  40. {
  41. Runner.Run(RoutineStep.Map, StartMap, _delay_1ms)
  42. .WaitWithStopCondition(RoutineStep.CheckMap, () => CommonFunction.CheckRoutineEndState(_robotMapRoutine),
  43. () => CommonFunction.CheckRoutineStopState(_robotMapRoutine))
  44. .End(RoutineStep.End, NullFun, _delay_1ms);
  45. return Runner.Status;
  46. }
  47. private bool StartMap()
  48. {
  49. return _robotMapRoutine.Start(Module)==RState.Running;
  50. }
  51. public void Abort()
  52. {
  53. Runner.Stop("Manual Abort");
  54. }
  55. }
  56. }