123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- #ifndef __DAHUA_GENICAM_CSYSTEM_H__
- #define __DAHUA_GENICAM_CSYSTEM_H__
-
- #include "Defs.h"
- #include "Camera.h"
- #include "StreamSource.h"
- #include "ParameterNode.h"
- #include "AcquisitionControl.h"
- #include "AnalogControl.h"
- #include "ImageFormatControl.h"
- #include "ISPControl.h"
- #include "UserSetControl.h"
- #include "DeviceControl.h"
- #include "TransportLayerControl.h"
- #include "DigitalIOControl.h"
-
- #include "EventSubscribe.h"
-
- GENICAM_NAMESPACE_BEGIN
-
- /// \~chinese
- /// \brief 发现设备、创建常用属性对象
- /// \defgroup System 设备发现、属性常用对象创建和事件订阅对象创建接口
- /// \~english
- /// \brief discover camera, and create common property instance
- /// \defgroup System discover camera, create common property instance and create event subscribe instance interface
- /// @{
-
- /// \~chinese
- /// \brief Class CSystem 枚举主机所有物理接口可达的在线相机、属性常用对象创建、事件订阅对象创建及获取SDK版本信息
- /// \~english
- /// \brief Class CSystem enumerate all cameras that the computer can reach, create common property object, create event subscription object, get SDK version information
- class GENICAM_API CSystem
- {
- public:
- ///< \~chinese
- ///枚举:物理接口类型
- ///< \~english
- ///enumeration: physical interface type
- enum EInterfaceType
- {
- typeGige = 0, ///< \~chinese GigE协议 ///< \~english GigE Vision Protocol
- typeUsb3 = 1, ///< \~chinese USB3.0协议 ///< \~english USB3.0 Vision Protocol
- typeCL = 2, ///< \~chinese CAMERALINK协议 ///< \~english Camera Link Protocol
- typePCIe = 3, ///< \~chinese PCIe协议 ///< \~english PCIe Protocol
- typeAll = 255 ///< \~chinese 忽略协议类型,设备发现传入此类型时,表示需发现所有接口下的设备 ///< \~english ALL Supported Protocol
- };
-
- ///< \~chinese
- ///枚举:物理接口类型扩展,支持任意接口类型的组合,只用于新的设备发现接口中
- ///< \~english
- ///enumeration: physical interface type extension, support any combination of interface types, only can be used in new camera discovery interface
- enum EInterfaceTypeEx
- {
- interfaceTypeGige = 0x00000001, ///< \~chinese 网卡接口类型 ///< \~english NIC type
- interfaceTypeUsb3 = 0x00000002, ///< \~chinese USB3.0接口类型 ///< \~english USB3.0 interface type
- interfaceTypeCL = 0x00000004, ///< \~chinese CAMERALINK接口类型 ///< \~english CAMERALINK interface type
- interfaceTypePCIe = 0x00000008, ///< \~chinese PCIe接口类型 ///< \~english PCIe interface type
- interfaceTypeAll = 0x00000000 ///< \~chinese 忽略接口类型,设备发现传入此类型时,表示需发现所有接口下的设备 ///< \~english ALL interfaces
- };
-
- /// \~chinese
- /// \brief CSystem单例获取接口
- /// \return CSystem单例对象的指针
- /// \~english
- /// \brief CSystem singleton acquisition interface
- /// \return CSystem pointer to the singleton object
- static CSystem& getInstance();
-
- /// \~chinese
- /// \brief 发现指定接口类型可达的设备
- /// \param [out] vCameraPtrList 指定接口类型所有在线设备对象列表,当interfaceType = typeAll 时,发现所有接口下的在线设备
- /// \param [in] interfaceType 接口类型
- /// \return 是否成功
- /// \~english
- /// \brief discover reachable camera which has specified interface type
- /// \param [out] vCameraPtrList camera instance list of specified interface type. when interfaceType = typeAll, discover camerass in all interfaces
- /// \param [in] interfaceType interface type.
- /// \return success:true, fail:false
- bool discovery(Infra::TVector<ICameraPtr>& vCameraPtrList, EInterfaceType interfaceType = typeAll);
-
- /// \~chinese
- /// \brief 根据 Camera key "厂商:序列号" 获取 Camera 智能指针
- /// \param [in] pCameraKey 相机的key
- /// \return Camera 智能指针,若传入的pCameraKey不存在或者非法,则返回空智能指针对象
- /// \~english
- /// \brief get smart pointers to Camera according to Camera key "vendor:serial number"
- /// \param [in] pCameraKey Camera's key
- /// \return Camera smart pointer. if the parameter pCameraKey does not exist or is invalid, return empty smart pointer object
- ICameraPtr getCameraPtr(const char * pCameraKey) const;
-
- /// \~chinese
- /// \brief 创建流对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \param [in] channelId 流通道号,默认为0通道
- /// \return 流智能指针对象
- /// \~english
- /// \brief create stream object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \param [in] channelId stream channel id, default is 0
- /// \return smart pointer to stream
- IStreamSourcePtr createStreamSource(const ICameraPtr &cameraPtr, uint16_t channelId = 0);
-
- /// \~chinese
- /// \brief 创建事件订阅对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return 事件订阅对象
- /// \~english
- /// \brief create event subscribe object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return event subscribe object
- IEventSubscribePtr createEventSubscribe(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建AcquisitionControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return AcquisitionControl智能指针对象
- /// \~english
- /// \brief create AcquisitionControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return AcquisitionControl object
- IAcquisitionControlPtr createAcquisitionControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建AnalogControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return AnalogControl智能指针对象
- /// \~english
- /// \brief create AnalogControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return AnalogControl object
- IAnalogControlPtr createAnalogControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建ISPControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return ISPControl智能指针对象
- /// \~english
- /// \brief create ISPControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return ISPControl object
- IISPControlPtr createISPControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建ImageFormatControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return ImageFormatControl智能指针对象
- /// \~english
- /// \brief create ImageFormatControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return ImageFormatControl object
- IImageFormatControlPtr createImageFormatControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建UserSetControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return UserSetControl智能指针对象
- /// \~english
- /// \brief create UserSetControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return UserSetControl object
- IUserSetControlPtr createUserSetControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建DeviceControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return DeviceControl智能指针对象
- /// \~english
- /// \brief create DeviceControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return DeviceControl object
- IDeviceControlPtr createDeviceControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建TransportLayerControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return TransportLayerControl智能指针对象
- /// \~english
- /// \brief create TransportLayerControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return TransportLayerControl object
- ITransportLayerControlPtr createTransportLayerControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 创建DigitalIOControl对象
- /// \param [in] cameraPtr 相机智能指针对象
- /// \return DigitalIOControl智能指针对象
- /// \~english
- /// \brief create DigitalIOControl object
- /// \param [in] cameraPtr smart pointer to Camera
- /// \return DigitalIOControl object
- IDigitalIOControlPtr createDigitalIOControl(const ICameraPtr &cameraPtr);
-
- /// \~chinese
- /// \brief 获取版本信息
- /// \return 版本信息
- /// \~english
- /// \brief get version information
- /// \return version information
- const char* getVersion() const;
-
- private:
- /// \~chinese
- /// \brief 构造函数
- /// \~english
- /// \brief constructor function
- CSystem();
-
- /// \~chinese
- /// \brief 拷贝构造函数
- /// \~english
- /// \brief copy constructor function
- CSystem(const CSystem&);
-
- /// \~chinese
- /// \brief 赋值函数
- /// \~english
- /// \brief assignment function
- CSystem& operator = (const CSystem&);
-
- /// \~chinese
- /// \brief 析构函数
- /// \~english
- /// \brief destructor function
- ~CSystem();
-
- class Impl;
- Impl *m_pImpl;
- };
-
- /// @}
-
- GENICAM_NAMESPACE_END
-
- #endif//__DAHUA_GENICAM_CSYSTEM_H__
-
-
|