110 lines
4.4 KiB
C#
110 lines
4.4 KiB
C#
using Aurora.Api;
|
|
using Aurora.Api.Control;
|
|
using VisionLight;
|
|
|
|
namespace VisionCommon {
|
|
/// <summary>
|
|
/// 플라잉 리소스를 초기화하고, 이미지 및 얼라인 데이터를 인덱스별로 관리
|
|
/// </summary>
|
|
public class FlyingManager {
|
|
private static Logger _Logger = new Logger(typeof(FlyingManager).Name);
|
|
private static readonly object _Lock = new object();
|
|
|
|
/// <summary>
|
|
/// 플라잉 시작
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <param name="alignInfo">얼라인 정보(조명 Set용)</param>
|
|
/// <param name="param">추가 파라미터</param>
|
|
/// <returns>성공 유무</returns>
|
|
public static int StartFlying(FovInfo fovInfo, AlignInfo alignInfo, object param = null) {
|
|
SetLight(fovInfo, alignInfo);
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
if (camAgent.IsLiveRunning()) {
|
|
camAgent.StopLive();
|
|
}
|
|
return camAgent.StartFlying(fovInfo, param);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 종료
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <param name="param">추가 파라미터</param>
|
|
/// <returns>성공 유무</returns>
|
|
public static int StopFlying(FovInfo fovInfo, object param = null) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.StopFlying(param);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 상태 체크
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV정보</param>
|
|
/// <returns>성공 유무</returns>
|
|
public static bool IsFlyingRunning(FovInfo fovInfo) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.IsFlyingRunning();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 현재 플라잉 인덱스 가져오기
|
|
/// </summary>
|
|
/// <returns>현재 플라잉 인덱스</returns>
|
|
public static int GetCurrentFlyingIdx(FovInfo fovInfo) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.GetCurrentFlyingIdx();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 이미지 가져오기
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <param name="flyingIdx">플라잉 인덱스</param>
|
|
/// <returns>플라잉 이미지</returns>
|
|
public static object GetFlyingImage(FovInfo fovInfo, int flyingIdx) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.GetFlyingImage(flyingIdx);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 이미지 전체 가져오기
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <returns>플라잉 이미지 전체</returns>
|
|
public static object[] GetFlyingImages(FovInfo fovInfo) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.GetFlyingImages();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬
|
|
/// </summary>
|
|
/// <returns>플아잉 합성(원장) 이미지</returns>
|
|
public static object GetParentImage(FovInfo fovInfo) {
|
|
var camAgent = CameraAgentManager.GetCameraAgent(fovInfo);
|
|
return camAgent.GetParentImage();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 플라잉 조명 설정
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <param name="alignInfo">얼라인 정보</param>
|
|
private static void SetLight(FovInfo fovInfo, AlignInfo alignInfo) {
|
|
var procPatternInfo = VisionRecipeManager.GetProcPatternInfo(fovInfo, alignInfo.AlignId.ToString(), eProcPatternId.ProcPattern1);
|
|
var patternInfo = VisionRecipeManager.GetPatternInfo(fovInfo, procPatternInfo, alignInfo);
|
|
int chCnt = patternInfo?.LightInfo.LightParams.Count ?? 0;
|
|
|
|
if (chCnt == 0) {
|
|
_Logger.FuncE("The count of PatternInfo.LightInfo.LightParams is zero.");
|
|
return;
|
|
}
|
|
|
|
eLightResult res = LightHub.Instance.SetLevels(patternInfo.LightInfo.LightParams);
|
|
if (res == eLightResult.NG) {
|
|
_Logger.FuncE("Failed to set light levels.");
|
|
}
|
|
}
|
|
}
|
|
} |