Files
XplorePlane/XP.Camera/ICameraController.cs
T
2026-04-13 13:41:40 +08:00

54 lines
1.7 KiB
C#

namespace XP.Camera;
/// <summary>
/// 相机控制器接口,定义与品牌无关的相机操作契约。
/// </summary>
/// <remarks>
/// <para>所有公共方法(Open/Close/StartGrabbing/StopGrabbing/ExecuteSoftwareTrigger/参数读写)保证线程安全。</para>
/// <para>事件回调在非 UI 线程上触发,调用方如需更新 WPF 界面,应通过 Dispatcher 调度。</para>
/// </remarks>
public interface ICameraController : IDisposable
{
bool IsConnected { get; }
bool IsGrabbing { get; }
/// <summary>打开相机连接并返回设备信息。</summary>
CameraInfo Open();
/// <summary>关闭相机连接并释放资源。</summary>
void Close();
/// <summary>以软件触发模式启动图像采集。</summary>
void StartGrabbing();
/// <summary>发送一次软件触发信号以采集一帧图像。</summary>
void ExecuteSoftwareTrigger();
/// <summary>停止图像采集。</summary>
void StopGrabbing();
double GetExposureTime();
void SetExposureTime(double microseconds);
double GetGain();
void SetGain(double value);
int GetWidth();
void SetWidth(int value);
int GetHeight();
void SetHeight(int value);
string GetPixelFormat();
void SetPixelFormat(string format);
event EventHandler<ImageGrabbedEventArgs> ImageGrabbed;
event EventHandler<GrabErrorEventArgs> GrabError;
event EventHandler ConnectionLost;
}
/// <summary>
/// 相机工厂接口,负责根据品牌创建相机控制器实例。
/// </summary>
public interface ICameraFactory
{
/// <summary>根据相机品牌创建控制器实例。</summary>
ICameraController CreateController(string cameraType);
}