using Aurora; using Aurora.Api; using VisionCommon; using System; using System.Collections.Generic; using Aurora.Api.Devices; namespace VisionSequence.Aligner { /// /// 모든 얼라인 시퀀스들을 사전에 등록하여 사용한다. /// public class AlignProcSeqManager { private static Logger _Logger = new Logger("AlignProcSeqManager"); /// /// 얼라인 공정 시퀀스를 생성하고 등록한다. /// /// Aurora 환경 변수 /// Aurora의 SequenceRegister public static void RegisterSeq(IAuroraEnvironment auroraEnv, SequenceRegister register) { try { bool isUsed_PN_AN = false; foreach (var alignInfo in VisionRecipeManager.GetAlignInfos()) { var alignRecipe = VisionRecipeManager.GetAlignRecipe(alignInfo); SequenceBuilder seqBuilder = GetSeqBuilder(alignInfo); if (seqBuilder != null) { var seqName = GetSeqName(alignInfo); register(seqName, seqBuilder); } var procFovType = alignRecipe.ProcParams.ProcFovType; if ((procFovType == eProcFovType.C1_F1_AP2_A2 || procFovType == eProcFovType.C1_F1_SPN_AN) && !isUsed_PN_AN) { isUsed_PN_AN = true; } } if (isUsed_PN_AN) { register(VisionKeys.AlignProcSeqKey_PN_AN, new AlignProcSeq_PN_AN().Builder(VisionKeys.AlignProcSeqKey_PN_AN)); } } catch (Exception e) { _Logger.FuncE(e.Message); } } /// /// 시퀀스빌더를 얻어온다. /// /// 얼라인 키 정보 /// 시퀀스빌더 public static SequenceBuilder GetSeqBuilder(AlignInfo alignInfo) { try { var seqName = GetSeqName(alignInfo); SubSeqBase procSeq = new AlignProcSeq(seqName, alignInfo); return procSeq.Builder(seqName); } catch (Exception e) { _Logger.FuncE(e.Message); } return null; } /// /// 얼라인 시퀀스를 얻어온다. /// /// 얼라인 키 정보 /// 시퀀스 public static ISequence GetSeq(AlignInfo alignInfo) { var seqName = GetSeqName(alignInfo); return VisionEnv.AuroraEnv.SequenceEntry[seqName]; } /// /// 얼라인 시퀀스 파라미터를 얻어온다. /// /// 얼라인 키 정보 /// FOV별로 이동시킬 절대위치. null일 경우, 자동으로 Adapter에 정의된 티칭위치로 이동 /// 얼라인 공정 시퀀스 파라미터 public static AlignProcSeqParams GetAlignProcSeqParams( AlignInfo alignInfo, Dictionary fovPositions = null, eDisplayType displayType = eDisplayType.Main_1) { return new AlignProcSeqParams(alignInfo, fovPositions, displayType); } /// /// 시퀀스 이름을 얻어온다. /// /// 얼라인 키 정보 /// 시퀀스 이름 public static string GetSeqName(AlignInfo alignInfo) { return VisionKeys.AlignProcSeqKey + "_" + alignInfo.GetKey(); } } }