#ifndef _I_CAMERA_OBJECT_H #define _I_CAMERA_OBJECT_H #include #include #include #include #include "baseStruct.h" class ICameraObject { public: ICameraObject(TP_CAMERA_OPTION* pCamOpt, class IPoolCallback* pCb) : m_pCamOpt(pCamOpt) , m_pCb(pCb) { m_bOpened = false; m_bStarted = false; m_nImageWidth = 0; m_nImageHeight = 0; m_nBitsPerPixel = TP_FUNCS::BitsPerPixels((emTpColorFormat)pCamOpt->format);// 0; m_nImageSize = m_nImageWidth * m_nImageHeight * ((m_nBitsPerPixel + 7) / 8); m_nColorFormat = TP_COLOR_NONE; m_nFixedFrames = 0; m_nFrameNum = 0; m_nStartCount = 0; m_oldTriggerMode = DEV_TRIGGER_MODE_STOP; m_newTriggerMode = DEV_TRIGGER_MODE_OUT; m_pCameraData = NULL; } virtual ~ICameraObject() { } virtual QList IEnumAvailableCameras() { QList ret; return ret; } virtual int IOpenCamera() = 0;//打开设备 virtual void ICloseCamera() = 0;//关闭设备 virtual int IStartCamera() = 0;//开始取流 StartGrabbing virtual void IStopCamera() = 0;//停止取流 StopGrabbing //初始化设备参数 启动时初始化设备的相关参数 图像大小、曝光、增益 virtual void InitProperty() {}; virtual bool IisDeviceAccessible() { return false; }//设备是否可达 占用 virtual bool IisDeviceConnected() { return false; }//判断相机是否处于连接状态 virtual void ISnapCamera() {}; virtual int IAutoCapture() { return 0; } virtual bool ISetProperty(TP_CAMERA_PROPERTY* pCamProperty) { return false; } virtual bool IGetProperty(TP_CAMERA_PROPERTY* pCamProperty) { return false; } void SetTriggerMode(emTpDeviceTriggerMode mode) { m_newTriggerMode = mode; } void SetFixedFrames(int nFrames) { m_nFixedFrames = nFrames; } public: TP_CAMERA_OPTION* m_pCamOpt; protected: bool m_bOpened; bool m_bStarted; long m_nImageWidth; long m_nImageHeight; long m_nImageSize;//bytes of the images int m_nBitsPerPixel; emTpColorFormat m_nColorFormat; int m_nFixedFrames; UINT m_nFrameNum; long m_nStartCount; emTpDeviceTriggerMode m_oldTriggerMode; emTpDeviceTriggerMode m_newTriggerMode; BYTE* m_pCameraData; class IPoolCallback* m_pCb{ nullptr }; private: friend class lpCameraImage; friend class CCameraPool; friend class CLibCameraes; }; class IPoolCallback { public: IPoolCallback() {} virtual ~IPoolCallback() {} virtual int IPushCameraData(ICameraObject* pCamObj) = 0; virtual int IPushCameraData2(ICameraObject* pCamObj) = 0; }; #define _USE_CAMERA_DLL #define _USE_BITFLOW #define _USE_VIRTUAL #define _USE_GIGE /*****************prefix list*************************** # DEV_DLL_BITFLOW_BI Bitflow_ # DEV_DLL_VIRTUAL_FOLDER Virtual_ # DEV_DLL_GIGE Gige_ */ #ifdef _USE_CAMERA_DLL #define API_DLL_EXPORT extern "C" __declspec(dllexport) #define API_NAME_PREFIX(pfix, fname) fname #else #defien API_DLL_EXPORT extern "C" #define API_NAME_PREFIX(pfix, fname) pfix##fname #endif #endif