using Aitex.Core.RT.Routine; using MECF.Framework.Common.Equipment; using System; using Aitex.Core.RT.SCCore; using FurnaceRT.Equipments.PMs.Routines; using System.Collections.Generic; namespace FurnaceRT.Equipments.PMs.RecipeExecutions { public class PreProcess : PMBaseRoutine, IRoutine { public enum Routine { ToReadyProcessState, Pump, PinDown, } private string _recipeName; private int _liftTimeout; private bool _isProcessRecipe; public PreProcess(ModuleName module, PMModule pm) : base(module, pm) { Module = module.ToString(); Name = "PreProcess"; } public void Init(string recipeName, bool isProcessRecipe = true) { _recipeName = recipeName; _isProcessRecipe = isProcessRecipe; } public override Result Start(params object[] objs) { RecipeHead recipeHead; List recipeSteps; Dictionary> abortRecipe; Dictionary abortRecipeName; Dictionary> subRecipe; Dictionary subRecipeName; string reason = string.Empty; if (_isProcessRecipe) { if (!RecipeParser.Parse(_recipeName, Module, out recipeHead, out recipeSteps, out reason, "Process")) { PMModule.PreprocessStartFailedWarning.Set($"Load process recipe {_recipeName} failed, {reason}"); return Result.FAIL; } PMModule.RecipeRunningInfo.MainRecipeName = _recipeName; PMModule.RecipeRunningInfo.Head = recipeHead; PMModule.RecipeRunningInfo.RecipeStepList = recipeSteps; } Reset(); Notify($"Start"); return Result.RUN; } public override Result Monitor() { try { //ToReadyProcessState((int)Routine.ToReadyProcessState, PMModule, _liftTimeout); //ExecuteRoutine((int)Routine.Pump, _pumpRoutine); //MovePinDown((int)Routine.PinDown, PMModule, _liftTimeout); } catch (RoutineBreakException) { return Result.RUN; } catch (RoutineFaildException) { return Result.FAIL; } return Result.DONE; } public override void Abort() { } } }