#pragma once #include "Camera_Global.h" #include "../../Common/CameraBaseClass/IBaseCamCommon.h" #include "../../Common/CameraBaseClass/IBaseCamera.h" #include "CamParamConfig.h" #include "DialogCamPasram.h" ////////////////////////////////////////////////////////////////////////// #include "SapClassBasic.h" /// ENTITY相机接口类 class ICamera : public IBaseCamera { public: /// 初始化相机环境 static bool initEnv(); /// 关闭相机环境 static bool closeEnv(); /// 获取所有相机序列号 static QVector cameraSerial(); public: static SapManager* m_pManger; }; class EntityCamera : public ICamera { private: EntityCamera(); ~EntityCamera(void); CamParamConfig* m_pCamParamConfig; //配置参数类 class DialogCamPasram* m_pDialogCamPasram; //相机参数设置窗口 public: static EntityCamera* createCamera(QString serial); public: /// 获取配置参数类 virtual IBaseCamParamConfig* camParamConfig(); protected: /// 打开相机 bool openCamera(QString serial); /// 关闭相机 bool closeCamera(); /// 初始化 bool initialize(); private: /// 加载参数 virtual void loadCamParam(); /// 保存参数 virtual void saveCamParam(); /// 设置相机工作模式 virtual bool setWorkMode(IBaseCamCommon::CamWorkMode, bool Running = false) ; /// 相机工作模式 virtual IBaseCamCommon::CamWorkMode workMode() ; /// 相机开始工作 virtual bool startWork() ; /// 相机停止工作 virtual bool stopWork() ; /// 相机序列号 virtual QString serial() ; /// 重启相机 virtual bool restartCamera() ; /// 获取一桢图像 virtual bool captureImage(void** buf, int size) ; /// 获取图像宽 virtual int imageWidth(void) ; /// 获取图像高 virtual int imageHeight(void) ; /// 获取图像通道数 virtual int imageChannels(void) ; /// 显示设置参数窗口页面 virtual void showParamConfigWindow(int mode = 0) ; /// 获取相机最大分辨率 virtual bool getMaxSize(int& w, int& h) ; /// 设置相机分辨率 virtual bool setResolution(int w, int h) ; /// 获取已注册图像回调的数量 virtual int getReceCallBackSIze(); ///设置接收图像数据回调函数 virtual void setReceCallBack(IBaseCamCommon::receImgCallBack callBack, long long userParam, QString userID = "main"); ///设置接收Log数据回调函数 virtual void setReceLogCallBack(IBaseCamCommon::receLogCallBack callBack, long long userParam) ;//设置接收数据回调函数 /// 软件触发采图 virtual void softTriggerCap(QString userID = "main") ; private: int m_nImageChannels; QString m_strSerial; IBaseCamCommon::CamWorkMode mWorkMode; //工作模式 long long mUserParam; //回调函数用户自定义参数 long long mLogUserParam; //回调Log函数用户自定义参数 QString m_strUserID; IBaseCamCommon::CamImgData mImgCapBuffer;//捕获图像缓存 QVector m_pImgCallBack;//接收数据回调函数 private: bool SN_ToSeverName(QString strSN, char* ServerName); SapBuffer* m_pBuffers; SapTransfer* m_Xfer; SapColorConversion* m_pColorconv; BYTE* TMPBUF; int m_iImageWidth, m_iImageHeight; static void XferCallback(SapXferCallbackInfo* pInfo); static void SignalCallback(SapAcqCallbackInfo* pInfo); void GetSignalStatus(); void GetSignalStatus(SapAcquisition::SignalStatus signalStatus); BOOL m_IsSignalDetected; // TRUE 如果检测到摄像机信号 public: SapAcqDevice* m_pCamera; SapFeature* m_pFeature; private: //接收数据回调函数 IBaseCamCommon::receImgCallBack m_pReceImgFunction; //接收Log回调函数 IBaseCamCommon::receLogCallBack m_pReceLogFunction; /// 执行回调函数 void execCallFunction(IBaseCamCommon::CamImgData*, int frameCount); /// 执行Log回调函数 void execLogCallFunction(QString serial, QString Massage, long long userParam); /// 设置连续采集图像 bool setToFreeRunMode(); /// 设置软件触发模式采图 bool setToSoftwareTrigerMode(); /// 设置硬件触发 bool setToHardwareTrigerMode(); };