123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using System.Collections.Generic;
- using Aitex.Core.RT.Event;
- using Aitex.Core.RT.RecipeCenter;
- using Aitex.Core.Util;
- using Aitex.Sorter.Common;
- namespace Aitex.Sorter.RT.Module.Recipe
- {
- public class RtRecipe : Singleton<RtRecipe>
- {
- private RecipeParserTransfer1To1 _parserTransfer1To1 = new RecipeParserTransfer1To1();
- private RecipeParserTransferNToN _parserTransferNToN = new RecipeParserTransferNToN();
- private RecipeParserOrder _parserOrder = new RecipeParserOrder();
- private RecipeParserPack _parserPack = new RecipeParserPack();
- private RecipeParserAlign _parserAlign = new RecipeParserAlign();
- private RecipeParserReadWaferId _parserReadWaferId = new RecipeParserReadWaferId();
- private IRecipeParser _parser;
- public TransferInfo[] GetRecipeTransferInfo(string recipeName, HostRecipe hostRecipe, out string reason)
- {
- reason = string.Empty;
- //Normal recipe
- List<TransferInfo> _infos = new List<TransferInfo>();
- SorterRecipeXml xmlRecipe =
- new SorterRecipeXml(RecipeFileManager.Instance.LoadRecipe(ChamberSetString.System, recipeName, false),
- recipeName);
- switch (xmlRecipe.RecipeType)
- {
- case SorterRecipeType.Align:
- _parser = _parserAlign;
- break;
- case SorterRecipeType.Order:
- _parser = _parserOrder;
- break;
- case SorterRecipeType.Pack:
- _parser = _parserPack;
- break;
- case SorterRecipeType.ReadWaferId:
- _parser = _parserReadWaferId;
- break;
- case SorterRecipeType.Transfer1To1:
- _parser = _parserTransfer1To1;
- break;
- case SorterRecipeType.TransferNToN:
- _parser = _parserTransferNToN;
- break;
- default:
- _parser = null;
- break;
- }
- if (_parser == null)
- {
- reason = string.Format("recipe file {0} not valid, Type {1} not support", recipeName,
- xmlRecipe.RecipeType);
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- if (!_parser.Init(xmlRecipe, out reason))
- {
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- _infos = _parser.Parse(out reason);
- if (!string.IsNullOrEmpty(reason))
- {
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- return _infos.ToArray();
- }
- public TransferInfo[] GetRecipeTransferInfo(SorterRecipeXml recipe, out string reason)
- {
- reason = string.Empty;
- //Normal recipe
- List<TransferInfo> _infos = new List<TransferInfo>();
- switch (recipe.RecipeType)
- {
- case SorterRecipeType.Align:
- _parser = _parserAlign;
- break;
- case SorterRecipeType.Order:
- _parser = _parserOrder;
- break;
- case SorterRecipeType.Pack:
- _parser = _parserPack;
- break;
- case SorterRecipeType.ReadWaferId:
- _parser = _parserReadWaferId;
- break;
- case SorterRecipeType.Transfer1To1:
- _parser = _parserTransfer1To1;
- break;
- case SorterRecipeType.TransferNToN:
- _parser = _parserTransferNToN;
- break;
- default:
- _parser = null;
- break;
- }
- if (_parser == null)
- {
- reason = string.Format("recipe file {0} not valid, Type {1} not support", recipe.Name,
- recipe.RecipeType);
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- if (!_parser.Init(recipe, out reason))
- {
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- _infos = _parser.Parse(out reason);
- if (!string.IsNullOrEmpty(reason))
- {
- EV.PostMessage(ChamberSetString.System, EventEnum.DefaultWarning, reason);
- return null;
- }
- return _infos.ToArray();
- }
- }
- }
|