class PYLONBASE_API CInstantCamera : public Basler_InstantCameraParams::CInstantCameraParams_Params
{
public:
CInstantCamera();
CInstantCamera( IPylonDevice* pDevice, ECleanup cleanupProcedure = Cleanup_Delete);
virtual ~CInstantCamera();
virtual void Attach( IPylonDevice* pDevice, ECleanup cleanupProcedure = Cleanup_Delete);
virtual bool IsPylonDeviceAttached() const;
virtual bool IsCameraDeviceRemoved() const;
virtual bool HasOwnership() const;
virtual void DestroyDevice();
virtual IPylonDevice* DetachDevice();
virtual void Open();
virtual bool IsOpen() const;
virtual void Close();
//开始拍摄
virtual void StartGrabbing( EGrabStrategy strategy = GrabStrategy_OneByOne, EGrabLoop grabLoopType = GrabLoop_ProvidedByUser);
virtual void StartGrabbing( size_t maxImages, EGrabStrategy strategy = GrabStrategy_OneByOne, EGrabLoop grabLoopType = GrabLoop_ProvidedByUser);
//返回拍摄结果
virtual bool RetrieveResult( unsigned int timeoutMs, CGrabResultPtr& grabResult, ETimeoutHandling timeoutHandling = TimeoutHandling_ThrowException);
//结束采集
virtual void StopGrabbing();
virtual bool IsGrabbing() const;
virtual bool GrabOne( unsigned int timeoutMs, CGrabResultPtr& grabResult, ETimeoutHandling timeoutHandling = TimeoutHandling_ThrowException);
virtual size_t GetQueuedBufferCount();
virtual const WaitObject& GetGrabResultWaitObject();
virtual const WaitObject& GetGrabStopWaitObject();
virtual const WaitObject& GetCameraEventWaitObject();
virtual void RegisterConfiguration( CConfigurationEventHandler* pConfigurator, ERegistrationMode mode, ECleanup cleanupProcedure);
virtual bool DeregisterConfiguration( CConfigurationEventHandler* configurator);
virtual void RegisterImageEventHandler( CImageEventHandler* pImageEventHandler, ERegistrationMode mode, ECleanup cleanupProcedure);
virtual bool DeregisterImageEventHandler( CImageEventHandler* imageEventHandler);
virtual void RegisterCameraEventHandler(
CCameraEventHandler* pCameraEventHandler,
const String_t& nodeName,
intptr_t userProvidedId,
ERegistrationMode mode,
ECleanup cleanupProcedure,
ECameraEventAvailability availability = CameraEventAvailability_Mandatory);
virtual bool DeregisterCameraEventHandler( CCameraEventHandler* cameraEventHandler, const String_t& nodeName);
virtual bool WaitForFrameTriggerReady( unsigned int timeoutMs, ETimeoutHandling timeoutHandling = TimeoutHandling_ThrowException);
virtual void ExecuteSoftwareTrigger();
virtual void SetCameraContext( intptr_t context);
virtual intptr_t GetCameraContext() const;
virtual const CDeviceInfo& GetDeviceInfo() const;
virtual GenApi::INodeMap& GetNodeMap();
virtual GenApi::INodeMap& GetTLNodeMap();
virtual GenApi::INodeMap& GetStreamGrabberNodeMap();
virtual GenApi::INodeMap& GetEventGrabberNodeMap();
virtual GenApi::INodeMap& GetInstantCameraNodeMap();
virtual void SetBufferFactory( IBufferFactory* pFactory, ECleanup cleanupProcedure = Cleanup_Delete);
//Types used by camera--------------------------------------------------
/// The type of the camera class
typedef CInstantCamera InstantCamera_t;
/// \copybrief Pylon::IPylonDevice
typedef IPylonDevice IPylonDevice_t;
/// \copybrief Pylon::CDeviceInfo
typedef Pylon::CDeviceInfo DeviceInfo_t;
/// The generic configuration event handler class
typedef CConfigurationEventHandler ConfigurationEventHandler_t;
/// The generic image event handler class
typedef CImageEventHandler ImageEventHandler_t;
/// The generic image event handler class
typedef CCameraEventHandler CameraEventHandler_t;
/// The generic grab result data
typedef CGrabResultData GrabResultData_t;
/// The generic grab result smart pointer
typedef CGrabResultPtr GrabResultPtr_t;
protected:
virtual IPylonDevice* GetDevice();
GenApi::CLock& GetLock();
GenApi::INodeMap& GetEmptyNodeMap();
// Internal use only. Subject to change without notice.
void InternalRegisterConfiguration( CConfigurationEventHandler*, ERegistrationMode, ECleanup, const long*);
// Internal use only. Subject to change without notice.
void InternalRegisterImageEventHandler( CImageEventHandler*, ERegistrationMode, ECleanup, const long*);
// Internal use only. Subject to change without notice.
void InternalRegisterCameraEventHandler( CCameraEventHandler*, const String_t&, intptr_t, ERegistrationMode, ECleanup, ECameraEventAvailability, const long*);
// Internal use only. Subject to change without notice.
bool InternalDeregisterConfiguration(const long*);
// Internal use only. Subject to change without notice.
bool InternalDeregisterImageEventHandler(const long*);
// Internal use only. Subject to change without notice.
bool InternalDeregisterCameraEventHandler(const long*, const String_t&);
// Internal use only. Subject to change without notice.
void InternalShutdownEventHandlers();
public:
// Internal use only. Subject to change without notice.
IInstantCameraExtensions& GetExtensionInterface();
private:
// The camera object can not be copied.
CInstantCamera( const CInstantCamera&);
// The camera object can not be copied.
void operator = ( const CInstantCamera&);
class CInstantCameraImpl;
CInstantCameraImpl* m_pImpl;
protected:
// Internal use only. Subject to change without notice.
friend class CGrabResultDataFactory;
// Internal use only. Subject to change without notice.
virtual CGrabResultData* CreateDeviceSpecificGrabResultData();
private:
// Internal use only. Subject to change without notice.
CGrabResultData* CreateGrabResultData();
};