|
|
|
|
|
#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
|