2026-03-30 17:09:29 +09:00

58 lines
2.1 KiB
C#

using Aurora;
using Aurora.Api;
using VisionCommon;
using System;
namespace VisionSequence.Pattern {
/// <summary>
/// FOV별 Grab, Find 메뉴얼 시퀀스들을 사전에 등록하여 사용한다.
/// </summary>
public class ManualGrabFindSeqManager {
private static Logger _Logger = new Logger(typeof(ManualGrabFindSeqManager).ToString());
/// <summary>
/// FOV별 Grab, Find 메뉴얼 시퀀스들을 등록한다.
/// </summary>
/// <param name="auroraEnv">Aurora 환경 변수</param>
/// <param name="register">Aurora의 SequenceRegister</param>
public static void RegisterSeq(IAuroraEnvironment auroraEnv, SequenceRegister register) {
try {
RegisterManualFindSeq(register);
RegisterManualGrabFindProcSeq(register);
}
catch (Exception e) {
_Logger.FuncE(e.Message);
}
}
private static void RegisterManualFindSeq(SequenceRegister register) {
register(VisionKeys.ManualFindSeqKey, new FindSeq().Builder(VisionKeys.ManualFindSeqKey));
}
private static void RegisterManualGrabFindProcSeq(SequenceRegister register) {
foreach (var fovInfo in VisionRecipeManager.GetFovInfos()) {
var seqName = GetSeqName(fovInfo);
register(seqName, new GrabFindProcSeq().Builder(seqName));
}
}
/// <summary>
/// 얼라인 시퀀스를 얻어온다.
/// </summary>
/// <param name="fovInfo">FOV 키 정보</param>
/// <returns>시퀀스</returns>
public static ISequence GetSeq(FovInfo fovInfo) {
var seqName = GetSeqName(fovInfo);
return VisionEnv.AuroraEnv.SequenceEntry[seqName];
}
/// <summary>
/// 시퀀스 이름을 얻어온다.
/// </summary>
/// <param name="fovInfo">FOV 키 정보</param>
/// <returns>시퀀스 이름</returns>
public static string GetSeqName(FovInfo fovInfo) {
return VisionKeys.ManualGrabFindProcSeqKey + "_" + fovInfo.GetKey();
}
}
}