using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading.Tasks;
using TeamAAS.Camera.Enums;
using TeamAAS.Camera.Images;
namespace TeamAAS.Camera.Interfaces
{
///
/// 相机接口,定义了相机的基本属性和方法。所有相机类都应实现此接口,以确保一致的功能和行为。
///
public interface ICamera
{
///
/// 获取或设置相机的名称。此属性用于标识相机实例,便于在多个相机之间进行区分。
///
string Name { get; set; }
///
/// 获取相机的唯一标识符(GUID)。此属性用于在系统中唯一标识每个相机实例,确保不会发生冲突。
///
Guid ID { get; }
///
/// 获取或设置相机在系统中的索引位置。此属性用于在多个相机实例中进行排序和管理,便于快速访问特定相机。
///
int Index { get; set; }
///
/// 是否用IP搜索相机
///
bool IsFindByIp { get; }
///
/// 相机品牌
///
string CameraBrand { get; }
///
/// 厂商信息
///
string ManufacturerName { get; }
///
/// 模型信息
///
///
string ModelName { get; }
///
/// 序列号信息
///
///
string SerialNumber { get; }
///
/// 相机IP信息
///
///
string CameraIp { get; }
///
/// 相机类型信息
///
///
CameraType CameraType { get; }
///
/// 是否正在采集图像
///
///
bool IsGrabbing { get; }
///
/// 获取当前采集的图像
///
///
GenImage Image { get; }
///
/// 是否已连接相机
///
///
bool IsConnected { get; }
///
/// 总采集时间
///
///
TimeSpan TotalTime { get; }
///
/// 错误信息
///
///
string ErrorMessage { get; }
///
/// 图像宽度
///
///
uint ImageWidth { get; }
///
/// 图像高度
///
///
uint ImageHeight { get; }
///
/// 打开相机设备
///
///
bool OpenDevice();
///
/// 异步打开相机设备
///
///
Task OpenDeviceAsync();
///
/// 关闭相机设备
///
void CloseDevice();
///
/// 采集图像
///
///
GenImage Grab();
///
/// 开始采集图像
///
void StartGrabbing();
///
/// 停止采集图像
///
void StopGrabbing();
///
/// 曝光时间
///
///
float ExposureTime { get; set; }
///
///增益
///
///
float Gain { get; set; }
///
///伽马值
///
///
float Gamma { get; set; }
///
/// 设置曝光时间
///
///
///
bool SetExposureTime(float ExposureTime);
///
/// 获取曝光时间
///
///
float GetExposureTime();
///
/// 设置增益
///
///
///
///
bool SetGain(float Gain);
///
/// 获取增益
///
///
float GetGain();
///
/// 设置伽马值
///
///
///
bool SetGamma(float Gamma);
///
/// 获取伽马值
///
///
float GetGamma();
///
/// 本相机支持的触发模式列表(各品牌 SDK 能力不同,故为动态列表)。
/// 调用方应据此生成可选项;列表始终包含 。
///
IReadOnlyList SupportedTriggerModes { get; }
///
/// 当前生效的触发模式(未下发过时为该相机的默认模式)
///
CameraTriggerMode TriggerMode { get; }
///
/// 设置触发模式。不在 内时拒绝并置 ErrorMessage,返回 false。
///
/// 目标触发模式
/// 是否下发成功
bool SetTriggerMode(CameraTriggerMode mode);
///
/// 图像采集事件
///
///
///
///
event Action ImageCallbackEvent;
///
/// 相机连接状态改变事件
///
///
///
event Action CameraConnectChangedEvent;
}
}