MFHomeRoutine.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Aitex.Core.RT.Routine;
  2. using Aitex.Core.RT.SCCore;
  3. using Venus_RT.Devices;
  4. using MECF.Framework.Common.Routine;
  5. using MECF.Framework.Common.Equipment;
  6. using Venus_Core;
  7. namespace Venus_RT.Modules.TM
  8. {
  9. class MFHomeRoutine : ModuleRoutineBase, IRoutine
  10. {
  11. private enum HomeStep
  12. {
  13. kHoming,
  14. kEnd,
  15. }
  16. private int _homingTimeout = 30000;
  17. private readonly JetTM _JetTM;
  18. private readonly ITransferRobot _robot;
  19. public MFHomeRoutine(JetTM jetTM, ITransferRobot robot) : base(ModuleName.TM)
  20. {
  21. _JetTM = jetTM;
  22. _robot = robot;
  23. Name = "TM Home";
  24. }
  25. public RState Start(params object[] objs)
  26. {
  27. Reset();
  28. _homingTimeout = SC.GetValue<int>($"{Module}.HomeTimeout") * 1000;
  29. return Runner.Start(Module, Name);
  30. }
  31. public RState Monitor()
  32. {
  33. Runner.Run((int)HomeStep.kHoming, HomeTM, CheckHomeReady, _homingTimeout)
  34. .End((int)HomeStep.kEnd, NullFun, _delay_50ms);
  35. return Runner.Status;
  36. }
  37. private bool HomeTM()
  38. {
  39. return _robot.Home();
  40. }
  41. private bool CheckHomeReady()
  42. {
  43. return _robot.Status == RState.End;
  44. }
  45. public void Abort()
  46. {
  47. }
  48. }
  49. }