| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- using System;
 
- using Aitex.Core.RT.Routine;
 
- using Aitex.Core.RT.SCCore;
 
- using VirgoRT.Devices;
 
- using VirgoCommon;
 
- namespace VirgoRT.Modules.PMs
 
- {
 
-     class PMPostTransferRoutine : PMRoutineBase, IRoutine
 
-     {
 
-         enum RoutineStep
 
-         {
 
-             PumpDown,
 
-             SetPinDown,
 
-             SetSlitDoor,
 
-             SlitDoorDelay,
 
-             kEnd
 
-         }
 
-         private int _timeout;
 
-         private MovementPosition _liftPinPosition;
 
-         public PMPostTransferRoutine(JetPM chamber) : base(chamber)
 
-         {
 
-             Name = "PostTransfer";
 
-         }
 
-         public Result Start(params object[] objs)
 
-         {
 
-             Reset();
 
-             GetLiftPinSetting(objs);
 
-             _timeout = SC.GetValue<int>($"{Module}.PrepareTransferTimeout");
 
-             Notify("Start");
 
-             return Result.RUN;
 
-         }
 
-         public Result Monitor()
 
-         {
 
-             try
 
-             {
 
-                 SetLiftPinPos((int)RoutineStep.SetPinDown, _liftPinPosition, _timeout);
 
-                 SetSlitDoor((int)RoutineStep.SetSlitDoor, false, _timeout);
 
-                 End((int)RoutineStep.kEnd);
 
-             }
 
-             catch (RoutineBreakException)
 
-             {
 
-                 return Result.RUN;
 
-             }
 
-             catch (RoutineFaildException)
 
-             {
 
-                 Notify("Error");
 
-                 return Result.FAIL;
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 Stop(ex.Message);
 
-                 return Result.FAIL;
 
-             }
 
-             Notify("Finish");
 
-             return Result.DONE;
 
-         }
 
-         public override void Abort() { }
 
-         private void GetLiftPinSetting(object[] objs)
 
-         {
 
-             _liftPinPosition = MovementPosition.Down;
 
-             if (objs.Length >= 1 && (string)objs[0] != "Pick")
 
-             {
 
-                 int pos = SC.GetValue<int>($"{Module}.LiftPinPositionAfterPlace");
 
-                 if (pos == 1)
 
-                     _liftPinPosition = MovementPosition.Middle;
 
-                 else if (pos == 2)
 
-                     _liftPinPosition = MovementPosition.Up;
 
-             }
 
-             
 
-         }
 
-     }
 
- }
 
 
  |