TaskFactory.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using athosRT.Devices.EFEM.Task;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace athosRT.Devices.EFEM
  8. {
  9. public class TaskFactory
  10. {
  11. private Dictionary<string, ITaskT> _tasks = new Dictionary<string, ITaskT>();//查询字典获取要加入的task
  12. private List<string> _hideTasks = new List<string>();//任务添加的lsit
  13. public TaskFactory()
  14. {
  15. _tasks["MOV.INIT"] = (ITaskT)new TaskT<InitTask>(EfemCommandType.MOV, EfemCommand.INIT);
  16. _tasks["MOV.ORGSH"] = (ITaskT)new TaskT<OrgshTask>(EfemCommandType.MOV, EfemCommand.ORGSH);
  17. _tasks["MOV.HOME"] = (ITaskT)new TaskT<HomeTask>(EfemCommandType.MOV, EfemCommand.HOME);
  18. _tasks["MOV.LOCK"] = (ITaskT)new TaskT<LockTask>(EfemCommandType.MOV, EfemCommand.LOCK);
  19. _tasks["MOV.UNLOCK"] = (ITaskT)new TaskT<UnlockTask>(EfemCommandType.MOV, EfemCommand.UNLOCK);
  20. _tasks["MOV.DOCK"] = (ITaskT)new TaskT<DockTask>(EfemCommandType.MOV, EfemCommand.DOCK);
  21. _tasks["MOV.UNDOCK"] = (ITaskT)new TaskT<UnDockTask>(EfemCommandType.MOV, EfemCommand.UNDOCK);
  22. _tasks["MOV.OPEN"] = (ITaskT)new TaskT<OpenTask>(EfemCommandType.MOV, EfemCommand.OPEN);
  23. _tasks["MOV.CLOSE"] = (ITaskT)new TaskT<CloseDoorTask>(EfemCommandType.MOV, EfemCommand.CLOSE);
  24. _tasks["GET.CSTID"] = (ITaskT)new TaskT<CstidTask>(EfemCommandType.GET, EfemCommand.CSTID);
  25. _tasks["SET.CSTID"] = (ITaskT)new TaskT<SetCstidTask>(EfemCommandType.SET, EfemCommand.CSTID);
  26. _tasks["MOV.WAFSH"] = (ITaskT)new TaskT<WafshTask>(EfemCommandType.MOV, EfemCommand.WAFSH);
  27. _tasks["GET.MAPDT"] = (ITaskT)new TaskT<QueryWaferMappingTask>(EfemCommandType.GET, EfemCommand.MAPDT);
  28. _tasks["MOV.ALIGN"] = (ITaskT)new TaskT<AlignTaskEx>(EfemCommandType.MOV, EfemCommand.ALIGN);
  29. _tasks["MOV.ALIGN2"] = (ITaskT)new TaskT<AlignTaskEx2>(EfemCommandType.MOV, EfemCommand.ALIGN2);
  30. _tasks["MOV.LIFT"] = (ITaskT)new TaskT<LiftTask>(EfemCommandType.MOV, EfemCommand.LIFT);
  31. _tasks["MOV.GOTO"] = (ITaskT)new TaskT<GotoTask>(EfemCommandType.MOV, EfemCommand.GOTO);
  32. _tasks["MOV.LOAD"] = (ITaskT)new TaskT<PickTask>(EfemCommandType.MOV, EfemCommand.LOAD);
  33. _tasks["MOV.UNLOAD"] = (ITaskT)new TaskT<PlaceTask>(EfemCommandType.MOV, EfemCommand.UNLOAD);
  34. _tasks["MOV.TRANS"] = (ITaskT)new TaskT<TransferTask>(EfemCommandType.MOV, EfemCommand.TRANS);
  35. _tasks["MOV.CHANGE"] = (ITaskT)new TaskT<ExchangeTask>(EfemCommandType.MOV, EfemCommand.CHANGE);
  36. _tasks["MOV.MPNT"] = (ITaskT)new TaskT<MpntTask>(EfemCommandType.MOV, EfemCommand.MPNT);
  37. _tasks["MOV.EMS"] = (ITaskT)new TaskT<EmsTask>(EfemCommandType.MOV, EfemCommand.EMS);
  38. _tasks["MOV.HOLD"] = (ITaskT)new TaskT<HoldTask>(EfemCommandType.MOV, EfemCommand.HOLD);
  39. _tasks["MOV.RESTR"] = (ITaskT)new TaskT<RestrTask>(EfemCommandType.MOV, EfemCommand.RESTR);
  40. _tasks["MOV.ABORT"] = (ITaskT)new TaskT<AbortTask>(EfemCommandType.MOV, EfemCommand.ABORT);
  41. _tasks["SET.ERROR"] = (ITaskT)new TaskT<ClearErrorTask>(EfemCommandType.SET, EfemCommand.ERROR);
  42. _tasks["GET.ERROR"] = (ITaskT)new TaskT<QueryErrorTask>(EfemCommandType.GET, EfemCommand.ERROR);
  43. _tasks["SET.THICKNESS"] = (ITaskT)new TaskT<ThicknessTask>(EfemCommandType.SET, EfemCommand.THICKNESS);
  44. _tasks["GET.THICKNESS"] = (ITaskT)new TaskT<GetThicknessTask>(EfemCommandType.GET, EfemCommand.THICKNESS);
  45. _tasks["SET.EVENT"] = (ITaskT)new TaskT<SetEventTask>(EfemCommandType.SET, EfemCommand.EVENT);
  46. _tasks["GET.EVENT"] = (ITaskT)new TaskT<QueryEventTask>(EfemCommandType.GET, EfemCommand.EVENT);
  47. _tasks["SET.SIGOUT"] = (ITaskT)new TaskT<SigoutTask>(EfemCommandType.SET, EfemCommand.SIGOUT);
  48. _tasks["GET.SIGSTAT"] = (ITaskT)new TaskT<SigStatTask>(EfemCommandType.GET, EfemCommand.SIGSTAT);
  49. _tasks["SET.CLAMP"] = (ITaskT)new TaskT<SetClampTask>(EfemCommandType.SET, EfemCommand.CLAMP);
  50. _tasks["GET.CLAMP"] = (ITaskT)new TaskT<GetClampTask>(EfemCommandType.GET, EfemCommand.CLAMP);
  51. _tasks["SET.MODE"] = (ITaskT)new TaskT<SetModeTask>(EfemCommandType.SET, EfemCommand.MODE);
  52. _tasks["GET.MODE"] = (ITaskT)new TaskT<QueryModeTask>(EfemCommandType.GET, EfemCommand.MODE);
  53. _tasks["MOV.TRANSREQ"] = (ITaskT)new TaskT<SetTransferTask>(EfemCommandType.MOV, EfemCommand.TRANSREQ);
  54. _tasks["GET.TRANSREQ"] = (ITaskT)new TaskT<QueryTransferTask>(EfemCommandType.GET, EfemCommand.TRANSREQ);
  55. _tasks["GET.STATE"] = (ITaskT)new TaskT<QueryStateTask>(EfemCommandType.GET, EfemCommand.STATE);
  56. }
  57. public bool UnSupport(EfemCommandType type, EfemCommand cmd)
  58. {
  59. string key = string.Format("{0}.{1}", (object)type, (object)cmd);
  60. return _hideTasks.Exists((Predicate<string>)(item => item == key)) || !this._tasks.ContainsKey(key);//检查任务中是否有 或者 字典中有没有此任务
  61. }
  62. 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;
  63. }
  64. }