ICamera.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Threading.Tasks;
  5. using TeamAAS.Camera.Enums;
  6. using TeamAAS.Camera.Images;
  7. namespace TeamAAS.Camera.Interfaces
  8. {
  9. /// <summary>
  10. /// 相机接口,定义了相机的基本属性和方法。所有相机类都应实现此接口,以确保一致的功能和行为。
  11. /// </summary>
  12. public interface ICamera
  13. {
  14. /// <summary>
  15. /// 获取或设置相机的名称。此属性用于标识相机实例,便于在多个相机之间进行区分。
  16. /// </summary>
  17. string Name { get; set; }
  18. /// <summary>
  19. /// 获取相机的唯一标识符(GUID)。此属性用于在系统中唯一标识每个相机实例,确保不会发生冲突。
  20. /// </summary>
  21. Guid ID { get; }
  22. /// <summary>
  23. /// 获取或设置相机在系统中的索引位置。此属性用于在多个相机实例中进行排序和管理,便于快速访问特定相机。
  24. /// </summary>
  25. int Index { get; set; }
  26. /// <summary>
  27. /// 是否用IP搜索相机
  28. /// </summary>
  29. bool IsFindByIp { get; }
  30. /// <summary>
  31. /// 相机品牌
  32. /// </summary>
  33. string CameraBrand { get; }
  34. /// <summary>
  35. /// 厂商信息
  36. /// </summary>
  37. string ManufacturerName { get; }
  38. /// <summary>
  39. /// 模型信息
  40. /// </summary>
  41. /// <returns></returns>
  42. string ModelName { get; }
  43. /// <summary>
  44. /// 序列号信息
  45. /// </summary>
  46. /// <returns></returns>
  47. string SerialNumber { get; }
  48. /// <summary>
  49. /// 相机IP信息
  50. /// </summary>
  51. /// <returns></returns>
  52. string CameraIp { get; }
  53. /// <summary>
  54. /// 相机类型信息
  55. /// </summary>
  56. /// <returns></returns>
  57. CameraType CameraType { get; }
  58. /// <summary>
  59. /// 是否正在采集图像
  60. /// </summary>
  61. /// <returns></returns>
  62. bool IsGrabbing { get; }
  63. /// <summary>
  64. /// 获取当前采集的图像
  65. /// </summary>
  66. /// <returns></returns>
  67. GenImage Image { get; }
  68. /// <summary>
  69. /// 是否已连接相机
  70. /// </summary>
  71. /// <returns></returns>
  72. bool IsConnected { get; }
  73. /// <summary>
  74. /// 总采集时间
  75. /// </summary>
  76. /// <returns></returns>
  77. TimeSpan TotalTime { get; }
  78. /// <summary>
  79. /// 错误信息
  80. /// </summary>
  81. /// <returns></returns>
  82. string ErrorMessage { get; }
  83. /// <summary>
  84. /// 图像宽度
  85. /// </summary>
  86. /// <returns></returns>
  87. uint ImageWidth { get; }
  88. /// <summary>
  89. /// 图像高度
  90. /// </summary>
  91. /// <returns></returns>
  92. uint ImageHeight { get; }
  93. /// <summary>
  94. /// 打开相机设备
  95. /// </summary>
  96. /// <returns></returns>
  97. bool OpenDevice();
  98. /// <summary>
  99. /// 异步打开相机设备
  100. /// </summary>
  101. /// <returns></returns>
  102. Task<bool> OpenDeviceAsync();
  103. /// <summary>
  104. /// 关闭相机设备
  105. /// </summary>
  106. void CloseDevice();
  107. /// <summary>
  108. /// 采集图像
  109. /// </summary>
  110. /// <returns></returns>
  111. GenImage Grab();
  112. /// <summary>
  113. /// 开始采集图像
  114. /// </summary>
  115. void StartGrabbing();
  116. /// <summary>
  117. /// 停止采集图像
  118. /// </summary>
  119. void StopGrabbing();
  120. /// <summary>
  121. /// 曝光时间
  122. /// </summary>
  123. /// <returns></returns>
  124. float ExposureTime { get; set; }
  125. /// <summary>
  126. ///增益
  127. /// </summary>
  128. /// <returns></returns>
  129. float Gain { get; set; }
  130. /// <summary>
  131. ///伽马值
  132. /// </summary>
  133. /// <returns></returns>
  134. float Gamma { get; set; }
  135. /// <summary>
  136. /// 设置曝光时间
  137. /// </summary>
  138. /// <param name="ExposureTime"></param>
  139. /// <returns></returns>
  140. bool SetExposureTime(float ExposureTime);
  141. /// <summary>
  142. /// 获取曝光时间
  143. /// </summary>
  144. /// <returns></returns>
  145. float GetExposureTime();
  146. /// <summary>
  147. /// 设置增益
  148. /// </summary>
  149. /// <param name="Gain"></param>
  150. /// <returns></returns>
  151. /// <returns></returns>
  152. bool SetGain(float Gain);
  153. /// <summary>
  154. /// 获取增益
  155. /// </summary>
  156. /// <returns></returns>
  157. float GetGain();
  158. /// <summary>
  159. /// 设置伽马值
  160. /// </summary>
  161. /// <param name="Gamma"></param>
  162. /// <returns></returns>
  163. bool SetGamma(float Gamma);
  164. /// <summary>
  165. /// 获取伽马值
  166. /// </summary>
  167. /// <returns></returns>
  168. float GetGamma();
  169. /// <summary>
  170. /// 本相机支持的触发模式列表(各品牌 SDK 能力不同,故为动态列表)。
  171. /// 调用方应据此生成可选项;列表始终包含 <see cref="CameraTriggerMode.跟随相机"/>。
  172. /// </summary>
  173. IReadOnlyList<CameraTriggerMode> SupportedTriggerModes { get; }
  174. /// <summary>
  175. /// 当前生效的触发模式(未下发过时为该相机的默认模式)
  176. /// </summary>
  177. CameraTriggerMode TriggerMode { get; }
  178. /// <summary>
  179. /// 设置触发模式。不在 <see cref="SupportedTriggerModes"/> 内时拒绝并置 ErrorMessage,返回 false。
  180. /// </summary>
  181. /// <param name="mode">目标触发模式</param>
  182. /// <returns>是否下发成功</returns>
  183. bool SetTriggerMode(CameraTriggerMode mode);
  184. /// <summary>
  185. /// 图像采集事件
  186. /// </summary>
  187. /// <param name="Image"></param>
  188. /// <param name="TotalTime"></param>
  189. /// <param name="ErrorMessage"></param>
  190. event Action<GenImage, TimeSpan, string> ImageCallbackEvent;
  191. /// <summary>
  192. /// 相机连接状态改变事件
  193. /// </summary>
  194. /// <param name="CameraId"></param>
  195. /// <param name="IsConnected"></param>
  196. event Action<Guid, bool> CameraConnectChangedEvent;
  197. }
  198. }