System.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #ifndef __DAHUA_GENICAM_CSYSTEM_H__
  2. #define __DAHUA_GENICAM_CSYSTEM_H__
  3. #include "Defs.h"
  4. #include "Camera.h"
  5. #include "StreamSource.h"
  6. #include "ParameterNode.h"
  7. #include "AcquisitionControl.h"
  8. #include "AnalogControl.h"
  9. #include "ImageFormatControl.h"
  10. #include "ISPControl.h"
  11. #include "UserSetControl.h"
  12. #include "DeviceControl.h"
  13. #include "TransportLayerControl.h"
  14. #include "DigitalIOControl.h"
  15. #include "EventSubscribe.h"
  16. GENICAM_NAMESPACE_BEGIN
  17. /// \~chinese
  18. /// \brief 发现设备、创建常用属性对象
  19. /// \defgroup System 设备发现、属性常用对象创建和事件订阅对象创建接口
  20. /// \~english
  21. /// \brief discover camera, and create common property instance
  22. /// \defgroup System discover camera, create common property instance and create event subscribe instance interface
  23. /// @{
  24. /// \~chinese
  25. /// \brief Class CSystem 枚举主机所有物理接口可达的在线相机、属性常用对象创建、事件订阅对象创建及获取SDK版本信息
  26. /// \~english
  27. /// \brief Class CSystem enumerate all cameras that the computer can reach, create common property object, create event subscription object, get SDK version information
  28. class GENICAM_API CSystem
  29. {
  30. public:
  31. ///< \~chinese
  32. ///枚举:物理接口类型
  33. ///< \~english
  34. ///enumeration: physical interface type
  35. enum EInterfaceType
  36. {
  37. typeGige = 0, ///< \~chinese GigE协议 ///< \~english GigE Vision Protocol
  38. typeUsb3 = 1, ///< \~chinese USB3.0协议 ///< \~english USB3.0 Vision Protocol
  39. typeCL = 2, ///< \~chinese CAMERALINK协议 ///< \~english Camera Link Protocol
  40. typePCIe = 3, ///< \~chinese PCIe协议 ///< \~english PCIe Protocol
  41. typeAll = 255 ///< \~chinese 忽略协议类型,设备发现传入此类型时,表示需发现所有接口下的设备 ///< \~english ALL Supported Protocol
  42. };
  43. ///< \~chinese
  44. ///枚举:物理接口类型扩展,支持任意接口类型的组合,只用于新的设备发现接口中
  45. ///< \~english
  46. ///enumeration: physical interface type extension, support any combination of interface types, only can be used in new camera discovery interface
  47. enum EInterfaceTypeEx
  48. {
  49. interfaceTypeGige = 0x00000001, ///< \~chinese 网卡接口类型 ///< \~english NIC type
  50. interfaceTypeUsb3 = 0x00000002, ///< \~chinese USB3.0接口类型 ///< \~english USB3.0 interface type
  51. interfaceTypeCL = 0x00000004, ///< \~chinese CAMERALINK接口类型 ///< \~english CAMERALINK interface type
  52. interfaceTypePCIe = 0x00000008, ///< \~chinese PCIe接口类型 ///< \~english PCIe interface type
  53. interfaceTypeAll = 0x00000000 ///< \~chinese 忽略接口类型,设备发现传入此类型时,表示需发现所有接口下的设备 ///< \~english ALL interfaces
  54. };
  55. /// \~chinese
  56. /// \brief CSystem单例获取接口
  57. /// \return CSystem单例对象的指针
  58. /// \~english
  59. /// \brief CSystem singleton acquisition interface
  60. /// \return CSystem pointer to the singleton object
  61. static CSystem& getInstance();
  62. /// \~chinese
  63. /// \brief 发现指定接口类型可达的设备
  64. /// \param [out] vCameraPtrList 指定接口类型所有在线设备对象列表,当interfaceType = typeAll 时,发现所有接口下的在线设备
  65. /// \param [in] interfaceType 接口类型
  66. /// \return 是否成功
  67. /// \~english
  68. /// \brief discover reachable camera which has specified interface type
  69. /// \param [out] vCameraPtrList camera instance list of specified interface type. when interfaceType = typeAll, discover camerass in all interfaces
  70. /// \param [in] interfaceType interface type.
  71. /// \return success:true, fail:false
  72. bool discovery(Infra::TVector<ICameraPtr>& vCameraPtrList, EInterfaceType interfaceType = typeAll);
  73. /// \~chinese
  74. /// \brief 根据 Camera key "厂商:序列号" 获取 Camera 智能指针
  75. /// \param [in] pCameraKey 相机的key
  76. /// \return Camera 智能指针,若传入的pCameraKey不存在或者非法,则返回空智能指针对象
  77. /// \~english
  78. /// \brief get smart pointers to Camera according to Camera key "vendor:serial number"
  79. /// \param [in] pCameraKey Camera's key
  80. /// \return Camera smart pointer. if the parameter pCameraKey does not exist or is invalid, return empty smart pointer object
  81. ICameraPtr getCameraPtr(const char * pCameraKey) const;
  82. /// \~chinese
  83. /// \brief 创建流对象
  84. /// \param [in] cameraPtr 相机智能指针对象
  85. /// \param [in] channelId 流通道号,默认为0通道
  86. /// \return 流智能指针对象
  87. /// \~english
  88. /// \brief create stream object
  89. /// \param [in] cameraPtr smart pointer to Camera
  90. /// \param [in] channelId stream channel id, default is 0
  91. /// \return smart pointer to stream
  92. IStreamSourcePtr createStreamSource(const ICameraPtr &cameraPtr, uint16_t channelId = 0);
  93. /// \~chinese
  94. /// \brief 创建事件订阅对象
  95. /// \param [in] cameraPtr 相机智能指针对象
  96. /// \return 事件订阅对象
  97. /// \~english
  98. /// \brief create event subscribe object
  99. /// \param [in] cameraPtr smart pointer to Camera
  100. /// \return event subscribe object
  101. IEventSubscribePtr createEventSubscribe(const ICameraPtr &cameraPtr);
  102. /// \~chinese
  103. /// \brief 创建AcquisitionControl对象
  104. /// \param [in] cameraPtr 相机智能指针对象
  105. /// \return AcquisitionControl智能指针对象
  106. /// \~english
  107. /// \brief create AcquisitionControl object
  108. /// \param [in] cameraPtr smart pointer to Camera
  109. /// \return AcquisitionControl object
  110. IAcquisitionControlPtr createAcquisitionControl(const ICameraPtr &cameraPtr);
  111. /// \~chinese
  112. /// \brief 创建AnalogControl对象
  113. /// \param [in] cameraPtr 相机智能指针对象
  114. /// \return AnalogControl智能指针对象
  115. /// \~english
  116. /// \brief create AnalogControl object
  117. /// \param [in] cameraPtr smart pointer to Camera
  118. /// \return AnalogControl object
  119. IAnalogControlPtr createAnalogControl(const ICameraPtr &cameraPtr);
  120. /// \~chinese
  121. /// \brief 创建ISPControl对象
  122. /// \param [in] cameraPtr 相机智能指针对象
  123. /// \return ISPControl智能指针对象
  124. /// \~english
  125. /// \brief create ISPControl object
  126. /// \param [in] cameraPtr smart pointer to Camera
  127. /// \return ISPControl object
  128. IISPControlPtr createISPControl(const ICameraPtr &cameraPtr);
  129. /// \~chinese
  130. /// \brief 创建ImageFormatControl对象
  131. /// \param [in] cameraPtr 相机智能指针对象
  132. /// \return ImageFormatControl智能指针对象
  133. /// \~english
  134. /// \brief create ImageFormatControl object
  135. /// \param [in] cameraPtr smart pointer to Camera
  136. /// \return ImageFormatControl object
  137. IImageFormatControlPtr createImageFormatControl(const ICameraPtr &cameraPtr);
  138. /// \~chinese
  139. /// \brief 创建UserSetControl对象
  140. /// \param [in] cameraPtr 相机智能指针对象
  141. /// \return UserSetControl智能指针对象
  142. /// \~english
  143. /// \brief create UserSetControl object
  144. /// \param [in] cameraPtr smart pointer to Camera
  145. /// \return UserSetControl object
  146. IUserSetControlPtr createUserSetControl(const ICameraPtr &cameraPtr);
  147. /// \~chinese
  148. /// \brief 创建DeviceControl对象
  149. /// \param [in] cameraPtr 相机智能指针对象
  150. /// \return DeviceControl智能指针对象
  151. /// \~english
  152. /// \brief create DeviceControl object
  153. /// \param [in] cameraPtr smart pointer to Camera
  154. /// \return DeviceControl object
  155. IDeviceControlPtr createDeviceControl(const ICameraPtr &cameraPtr);
  156. /// \~chinese
  157. /// \brief 创建TransportLayerControl对象
  158. /// \param [in] cameraPtr 相机智能指针对象
  159. /// \return TransportLayerControl智能指针对象
  160. /// \~english
  161. /// \brief create TransportLayerControl object
  162. /// \param [in] cameraPtr smart pointer to Camera
  163. /// \return TransportLayerControl object
  164. ITransportLayerControlPtr createTransportLayerControl(const ICameraPtr &cameraPtr);
  165. /// \~chinese
  166. /// \brief 创建DigitalIOControl对象
  167. /// \param [in] cameraPtr 相机智能指针对象
  168. /// \return DigitalIOControl智能指针对象
  169. /// \~english
  170. /// \brief create DigitalIOControl object
  171. /// \param [in] cameraPtr smart pointer to Camera
  172. /// \return DigitalIOControl object
  173. IDigitalIOControlPtr createDigitalIOControl(const ICameraPtr &cameraPtr);
  174. /// \~chinese
  175. /// \brief 获取版本信息
  176. /// \return 版本信息
  177. /// \~english
  178. /// \brief get version information
  179. /// \return version information
  180. const char* getVersion() const;
  181. private:
  182. /// \~chinese
  183. /// \brief 构造函数
  184. /// \~english
  185. /// \brief constructor function
  186. CSystem();
  187. /// \~chinese
  188. /// \brief 拷贝构造函数
  189. /// \~english
  190. /// \brief copy constructor function
  191. CSystem(const CSystem&);
  192. /// \~chinese
  193. /// \brief 赋值函数
  194. /// \~english
  195. /// \brief assignment function
  196. CSystem& operator = (const CSystem&);
  197. /// \~chinese
  198. /// \brief 析构函数
  199. /// \~english
  200. /// \brief destructor function
  201. ~CSystem();
  202. class Impl;
  203. Impl *m_pImpl;
  204. };
  205. /// @}
  206. GENICAM_NAMESPACE_END
  207. #endif//__DAHUA_GENICAM_CSYSTEM_H__