using System; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using VirgoRT.Devices; namespace VirgoRT.Modules.PMs { class PMPostTransferRoutine : PMRoutineBase, IRoutine { enum RoutineStep { PumpDown, SetSlitDoor, SlitDoorDelay, kEnd } private int _timeout; public PMPostTransferRoutine(JetPM chamber) : base(chamber) { Name = "PostTransfer"; } public Result Start(params object[] objs) { Reset(); _timeout = SC.GetValue($"{Module}.PrepareTransferTimeout"); Notify("开始"); return Result.RUN; } public Result Monitor() { try { SetSlitDoor((int)RoutineStep.SetSlitDoor, false, _timeout); End((int)RoutineStep.kEnd); } catch (RoutineBreakException) { return Result.RUN; } catch (RoutineFaildException) { Notify("出错"); return Result.FAIL; } catch (Exception ex) { Stop(ex.Message); return Result.FAIL; } Notify("结束"); return Result.DONE; } public override void Abort() { } } }