RtRecipe.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System.Collections.Generic;
  2. using Aitex.Core.RT.Event;
  3. using Aitex.Core.RT.RecipeCenter;
  4. using Aitex.Core.Util;
  5. using Aitex.Sorter.Common;
  6. namespace Aitex.Sorter.RT.Module.Recipe
  7. {
  8. public class RtRecipe : Singleton<RtRecipe>
  9. {
  10. private RecipeParserTransfer1To1 _parserTransfer1To1 = new RecipeParserTransfer1To1();
  11. private RecipeParserTransferNToN _parserTransferNToN = new RecipeParserTransferNToN();
  12. private RecipeParserOrder _parserOrder = new RecipeParserOrder();
  13. private RecipeParserPack _parserPack = new RecipeParserPack();
  14. private RecipeParserAlign _parserAlign = new RecipeParserAlign();
  15. private RecipeParserReadWaferId _parserReadWaferId = new RecipeParserReadWaferId();
  16. private IRecipeParser _parser;
  17. public TransferInfo[] GetRecipeTransferInfo(string recipeName, HostRecipe hostRecipe, out string reason)
  18. {
  19. reason = string.Empty;
  20. //Normal recipe
  21. List<TransferInfo> _infos = new List<TransferInfo>();
  22. SorterRecipeXml xmlRecipe =
  23. new SorterRecipeXml(RecipeFileManager.Instance.LoadRecipe(ChamberSetString.System, recipeName, false),
  24. recipeName);
  25. switch (xmlRecipe.RecipeType)
  26. {
  27. case SorterRecipeType.Align:
  28. _parser = _parserAlign;
  29. break;
  30. case SorterRecipeType.Order:
  31. _parser = _parserOrder;
  32. break;
  33. case SorterRecipeType.Pack:
  34. _parser = _parserPack;
  35. break;
  36. case SorterRecipeType.ReadWaferId:
  37. _parser = _parserReadWaferId;
  38. break;
  39. case SorterRecipeType.Transfer1To1:
  40. _parser = _parserTransfer1To1;
  41. break;
  42. case SorterRecipeType.TransferNToN:
  43. _parser = _parserTransferNToN;
  44. break;
  45. default:
  46. _parser = null;
  47. break;
  48. }
  49. if (_parser == null)
  50. {
  51. reason = string.Format("recipe file {0} not valid, Type {1} not support", recipeName,
  52. xmlRecipe.RecipeType);
  53. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  54. return null;
  55. }
  56. if (!_parser.Init(xmlRecipe, out reason))
  57. {
  58. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  59. return null;
  60. }
  61. _infos = _parser.Parse(out reason);
  62. if (!string.IsNullOrEmpty(reason))
  63. {
  64. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  65. return null;
  66. }
  67. return _infos.ToArray();
  68. }
  69. public TransferInfo[] GetRecipeTransferInfo(SorterRecipeXml recipe, out string reason)
  70. {
  71. reason = string.Empty;
  72. //Normal recipe
  73. List<TransferInfo> _infos = new List<TransferInfo>();
  74. switch (recipe.RecipeType)
  75. {
  76. case SorterRecipeType.Align:
  77. _parser = _parserAlign;
  78. break;
  79. case SorterRecipeType.Order:
  80. _parser = _parserOrder;
  81. break;
  82. case SorterRecipeType.Pack:
  83. _parser = _parserPack;
  84. break;
  85. case SorterRecipeType.ReadWaferId:
  86. _parser = _parserReadWaferId;
  87. break;
  88. case SorterRecipeType.Transfer1To1:
  89. _parser = _parserTransfer1To1;
  90. break;
  91. case SorterRecipeType.TransferNToN:
  92. _parser = _parserTransferNToN;
  93. break;
  94. default:
  95. _parser = null;
  96. break;
  97. }
  98. if (_parser == null)
  99. {
  100. reason = string.Format("recipe file {0} not valid, Type {1} not support", recipe.Name,
  101. recipe.RecipeType);
  102. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  103. return null;
  104. }
  105. if (!_parser.Init(recipe, out reason))
  106. {
  107. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  108. return null;
  109. }
  110. _infos = _parser.Parse(out reason);
  111. if (!string.IsNullOrEmpty(reason))
  112. {
  113. EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
  114. return null;
  115. }
  116. return _infos.ToArray();
  117. }
  118. }
  119. }