You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.2 KiB
C++

#ifndef _I_CAMERA_OBJECT_H
#define _I_CAMERA_OBJECT_H
#include <QRunnable>
#include <QThreadPool>
#include <QDebug>
#include <exception>
#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<QString> IEnumAvailableCameras() {
QList<QString> 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