#pragma once #include "CameraControlInfo.h" //#include #include "CHImageControls/CHImageData.h" typedef CCHImageData FrameBuffer; class CCameraBuffer; class AFX_EXT_CLASS CCameraControl { public: CCameraControl(int nIndex); virtual ~CCameraControl(); void SetCC2P(ICameraControl2Parent* pCC2P) { m_pCC2P = pCC2P; } const CCameraControlInfo* GetControlInfo() { return &m_ControlInfo; } // camera control virtual int Connect(const CCameraControlInfo& controlInfo) = 0; virtual int Grab() = 0; virtual int Snap() = 0; virtual int Snap(int nCount) = 0; virtual int Snap(int nCount, UINT nWaitTime) = 0; virtual int Freeze() = 0; virtual int Abort() = 0; virtual int Disconnect() = 0; // setting info virtual BOOL SetExposureTime(double dValue); virtual BOOL GetExposureTime(double& dValue); virtual BOOL SetExposureAuto(BOOL bAuto); virtual BOOL SetTriggerProcess(); virtual BOOL SetTriggerProcess( int nPosUmX, int nPosUmY ); virtual BOOL SetFrameRate(double dRate) { return TRUE; } // load save virtual BOOL SaveImage(const CString& strFilename); virtual BOOL SaveImage(int nIndex, const CString& strFilename); // frame image virtual BOOL GetImage(int nLeft, int nTop, int nWidth, int nHeight, BYTE* pImage); virtual BOOL GetImage(int nIndex, int nLeft, int nTop, int nWidth, int nHeight, BYTE* pImage); virtual void* GetImageAddress(); virtual void* GetImageAddress(int nIndex); virtual BOOL GetImageData(CCHImageData *pImageData); virtual BOOL GetImageData(int nIndex, CCHImageData *pImageData); virtual CCHImageData* GetImagePtr(); virtual CCHImageData* GetImagePtr(int nIndex); // connection info virtual BOOL ClearSharedMemory(int nScanIndex); virtual BOOL GetConnected() const { return m_bConnected; } virtual void SetConnected(BOOL bConnected) { m_bConnected = bConnected;} virtual BOOL DisconnectCheck() { return TRUE; } // frame info virtual int GetWidth() const { return m_nWidth; } virtual int GetWidthStep() const { return m_nWidthStep; } virtual int GetHeight() const { return m_nHeight; } virtual int GetChannels() const { return m_nChannels; } virtual int GetDepth() const { return m_nDepth; } virtual int GetLostFrames() const { return m_nLostFrame; } virtual int GetLostPackets() const { return m_nLostPacket; } virtual int GetSwCount() const { return m_nSwCount; } virtual int GetHwCount() const { return m_nHwCount; } // grabbing info virtual BOOL GetGrabbing() const { return m_bGrabbing; } virtual int GetFrameIndex() const { return m_nFrameIndex; } // mode info virtual void SetFlipMode(int nFlipMode) { m_nFlipMode = nFlipMode;} virtual int GetFlipMode() const { return m_nFlipMode; } virtual int GetTriggerMode() const { return m_nTriggerMode; } virtual int GetTriggerSource() const { return m_nTriggerSource; } virtual void SetTriggerMode(int nMode, int nCount=1) { m_nTriggerMode = nMode; } virtual void SetTriggerSource(int nSource) { m_nTriggerSource = nSource; } virtual int GetIndex() const { return m_nIndex; } virtual int GetFrameCount() const { return m_nFrameCount; } virtual void SetScanIndex(int nScanIdx) { m_nScanIndex = nScanIdx; } virtual int GetScanIndex() const { return m_nScanIndex; } protected: void AllocateFrameBuffer(int nWidth, int nHeight, int nChannels, int nFrameCount, const CString& strBufferName); void DeleteFrameBuffer(); static BOOL ImageFlip(int nFlipMode, BYTE *pSrcBuf, BYTE* pDstBuf, int nWidth, int nHeiht, int nChannels); int m_nIndex; ICameraControl2Parent* m_pCC2P; CCameraControlInfo m_ControlInfo; // connection info BOOL m_bConnected; int m_nTotalIndex; CString m_strCameraName; int m_nScanIndex; int m_nGrabCount; int m_nFrameCount; int m_nFlipMode; // frame info int m_nWidth; int m_nWidthStep; int m_nHeight; int m_nChannels; int m_nDepth; int m_nLostFrame; int m_nLostPacket; int m_nSwCount; int m_nHwCount; // grabbing info BOOL m_bGrabbing; int m_nFrameIndex; // mode info int m_nTriggerMode; int m_nTriggerSource; // shared frame buffer FrameBuffer m_curFrameImage; CCameraBuffer* m_pCameraFrameBuffer; CRITICAL_SECTION m_csFrameBuffer; BOOL bReverseX; }; extern "C" __declspec( dllexport ) CCameraControl* CameraControlNew(int nCamIndex);