| 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;            }                    }    }}
 |