106 lines
3.9 KiB
C#
106 lines
3.9 KiB
C#
using Aurora.Api;
|
|
using Aurora.Api.DataType;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reactive.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace VisionCommon {
|
|
public abstract class CameraAgentBase {
|
|
protected FovInfo _FovInfo;
|
|
protected CameraBase _CamDev;
|
|
protected CamConfig _CamConfig;
|
|
|
|
public CameraAgentBase(FovInfo fovInfo) {
|
|
_FovInfo = fovInfo;
|
|
UpdateRecipe();
|
|
SetObservable();
|
|
}
|
|
|
|
protected void SetObservable() {
|
|
var observable = VisionEventId.GetRecipeUpdateObservable();
|
|
observable.Subscribe(_ => UpdateRecipe()); ;
|
|
}
|
|
|
|
protected void UpdateRecipe() {
|
|
_FovInfo = VisionRecipeManager.GetFovInfo(_FovInfo);
|
|
if (_FovInfo == null) {
|
|
return;
|
|
}
|
|
|
|
var camRecipe = VisionRecipeManager.GetCamRecipe(_FovInfo);
|
|
_CamDev = VisionEnv.AuroraEnv.DeviceManager[camRecipe.CamId.ToString()] as CameraBase;
|
|
_CamConfig = VisionEnv.AuroraEnv.DeviceManager.GetDeviceConfig(camRecipe.CamId.ToString()) as CamConfig;
|
|
}
|
|
|
|
public CameraBase GetDevice() => _CamDev;
|
|
|
|
public abstract int GetGrabImageFromBuffer(ICameraDisplay cameraDisplay, ref object image);
|
|
public abstract int GrabSync(ICameraDisplay cameraDisplay, ref object image);
|
|
public abstract void StartLive(ICameraDisplay cameraDisplay);
|
|
public abstract void StopLive();
|
|
public abstract bool IsLiveRunning();
|
|
public abstract ImageSize GetImageSize();
|
|
public abstract object CloneImageBuffer();
|
|
public abstract int GetExposure();
|
|
public abstract int SetExposure(int exposureTime_ms);
|
|
public abstract int ResetFlipAndRotation(FlipAndRotation flipAndRotation);
|
|
|
|
#region Activate & Deactivate
|
|
public abstract int Activate();
|
|
public abstract int Deactivate();
|
|
#endregion
|
|
|
|
#region For Flying
|
|
/// <summary>
|
|
/// 플라잉 시작
|
|
/// </summary>
|
|
/// <param name="fovInfo">FOV 정보</param>
|
|
/// <param name="param">추가 파라미터</param>
|
|
/// <returns>성공 유무</returns>
|
|
public abstract int StartFlying(FovInfo fovInfo, object param = null);
|
|
/// <summary>
|
|
/// 플라잉 종료
|
|
/// </summary>
|
|
/// <param name="param">추가 파라미터</param>
|
|
/// <returns>성공 유무</returns>
|
|
public abstract int StopFlying(object param = null);
|
|
/// <summary>
|
|
/// 플라잉 상태 체크
|
|
/// </summary>
|
|
/// <returns>성공 유무</returns>
|
|
public abstract bool IsFlyingRunning();
|
|
/// <summary>
|
|
/// 현재 플라잉 인덱스 가져오기
|
|
/// </summary>
|
|
/// <returns>현재 플라잉 인덱스</returns>
|
|
public abstract int GetCurrentFlyingIdx();
|
|
/// <summary>
|
|
/// 플라잉 이미지 가져오기
|
|
/// </summary>
|
|
/// <param name="flyingIdx">플라잉 인덱스</param>
|
|
/// <returns>플라잉 이미지</returns>
|
|
public abstract object GetFlyingImage(int flyingIdx);
|
|
/// <summary>
|
|
/// 플라잉 이미지 전체 가져오기
|
|
/// </summary>
|
|
/// <returns>플라잉 이미지 전체</returns>
|
|
public abstract object[] GetFlyingImages();
|
|
/// <summary>
|
|
/// 플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬
|
|
/// </summary>
|
|
/// <returns>플아잉 합성(원장) 이미지</returns>
|
|
public abstract object GetParentImage();
|
|
#endregion
|
|
|
|
#region For Child Image
|
|
public abstract int VerifyChildImage(ICameraDisplay cameraDisplay, ref object image);
|
|
#endregion
|
|
|
|
#region For Custumizing (장비 전용 API)
|
|
public abstract int GetInitialExposure();
|
|
#endregion
|
|
}
|
|
} |