using athosRT.Devices.EFEM.Task; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace athosRT.Devices.EFEM { public class TaskFactory { private Dictionary _tasks = new Dictionary();//查询字典获取要加入的task private List _hideTasks = new List();//任务添加的lsit public TaskFactory() { _tasks["MOV.INIT"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.INIT); _tasks["MOV.ORGSH"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.ORGSH); _tasks["MOV.HOME"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.HOME); _tasks["MOV.LOCK"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.LOCK); _tasks["MOV.UNLOCK"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.UNLOCK); _tasks["MOV.DOCK"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.DOCK); _tasks["MOV.UNDOCK"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.UNDOCK); _tasks["MOV.OPEN"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.OPEN); _tasks["MOV.CLOSE"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.CLOSE); _tasks["GET.CSTID"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.CSTID); _tasks["SET.CSTID"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.CSTID); _tasks["MOV.WAFSH"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.WAFSH); _tasks["GET.MAPDT"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.MAPDT); _tasks["MOV.ALIGN"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.ALIGN); _tasks["MOV.ALIGN2"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.ALIGN2); _tasks["MOV.LIFT"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.LIFT); _tasks["MOV.GOTO"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.GOTO); _tasks["MOV.LOAD"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.LOAD); _tasks["MOV.UNLOAD"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.UNLOAD); _tasks["MOV.TRANS"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.TRANS); _tasks["MOV.CHANGE"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.CHANGE); _tasks["MOV.MPNT"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.MPNT); _tasks["MOV.EMS"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.EMS); _tasks["MOV.HOLD"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.HOLD); _tasks["MOV.RESTR"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.RESTR); _tasks["MOV.ABORT"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.ABORT); _tasks["SET.ERROR"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.ERROR); _tasks["GET.ERROR"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.ERROR); _tasks["SET.THICKNESS"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.THICKNESS); _tasks["GET.THICKNESS"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.THICKNESS); _tasks["SET.EVENT"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.EVENT); _tasks["GET.EVENT"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.EVENT); _tasks["SET.SIGOUT"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.SIGOUT); _tasks["GET.SIGSTAT"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.SIGSTAT); _tasks["SET.CLAMP"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.CLAMP); _tasks["GET.CLAMP"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.CLAMP); _tasks["SET.MODE"] = (ITaskT)new TaskT(EfemCommandType.SET, EfemCommand.MODE); _tasks["GET.MODE"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.MODE); _tasks["MOV.TRANSREQ"] = (ITaskT)new TaskT(EfemCommandType.MOV, EfemCommand.TRANSREQ); _tasks["GET.TRANSREQ"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.TRANSREQ); _tasks["GET.STATE"] = (ITaskT)new TaskT(EfemCommandType.GET, EfemCommand.STATE); } public bool UnSupport(EfemCommandType type, EfemCommand cmd) { string key = string.Format("{0}.{1}", (object)type, (object)cmd); return _hideTasks.Exists((Predicate)(item => item == key)) || !this._tasks.ContainsKey(key);//检查任务中是否有 或者 字典中有没有此任务 } public ITaskT Create(EfemCommandType type, EfemCommand cmd) => !this.UnSupport(type, cmd) ? (ITaskT)((ICloneable)this._tasks[string.Format("{0}.{1}", (object)type, (object)cmd)]).Clone() : (ITaskT)null; } }