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