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