#pragma once #include "MvCamera.h" #include "CCameraBase.h" #ifdef HIKVISION_CAMERA_EXPORTS #define HIKVISION_CAMERA_DLL_API __declspec(dllexport) #else #define HIKVISION_CAMERA_DLL_API //__declspec(dllimport) #endif class HIKVISION_CAMERA_DLL_API CHIKVisionCamera : public CCameraBase { public: CHIKVisionCamera(int id,string sDescribe, bool bEnable); ~CHIKVisionCamera(); virtual long Open() override; virtual void Close() override; virtual long VideoStart() override; virtual long VideoStop() override; virtual long GrabImage(ImageInfo& image) override; virtual long SetExposure(double exposure) override; virtual double GetExposure() override; virtual long SetGain(double gain) override; virtual double GetGain() override; private: static CHAR strErrorText[256]; static CHAR* GetErrText(INT nErrorNum); static bool m_bFindDevList; static MV_CC_DEVICE_INFO_LIST* m_stDevList; bool m_bOpenDevice; // ch:是否打开设备 | en:Whether to open device VOID* m_hGrabThread = NULL; // ch:取流线程句柄 | en:Grab thread handle bool m_bThreadState; MV_CC_DEVICE_INFO* m_pDeviceInfo; CMvCamera m_stMvCamera; UCHAR* GetDeviceUserDefinedName(MV_CC_DEVICE_INFO* pDeviceInfo); private: CRITICAL_SECTION m_hSaveImageMux; UINT m_nSaveImageBufSize; bool m_bGrabImageDone; UCHAR* m_pSaveImageBuf = nullptr; //图像缓存 bool m_bStartVedioBing = false; // ch:是否开始抓图 | en:Whether to start grabbing public: LONG SaveImageBuf(unsigned char* pData, MV_FRAME_OUT_INFO_EX* stImageInfo); long ImageToViewThreadProcess(); };