#pragma once #include "GrabberControl.h" #if OFFLINE_KEY == 0 #include "multicam.h" #endif class CFrameBufferController; class CGrabberMulticam : public CGrabberControl { public: CGrabberMulticam(); virtual ~CGrabberMulticam(); public: ////////////////////////////////////////////////////////////////////////// // Initialization virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber 檬扁拳 virtual BOOL InitializeBuffer(void *pParam); ////////////////////////////////////////////////////////////////////////// // Deinit virtual BOOL Deinitialize(); virtual BOOL GrabScanStart(int iScan, BOOL bFreeRun, int nPeriod, int nExposure=10, BOOL bAuto=TRUE); virtual BOOL GrabLiveStart(int nExposure=15); virtual BOOL GrabScanStop(); virtual BOOL IsGrabbing(); virtual int IsAcqFrame(int nFrameNo, int nThreadIdx = -1); virtual LPBYTE GetFrameHeader(int iScan,int nFrameNo, BOOL* bSuccess = NULL); virtual LPBYTE GetFrameHeaderLine(int iScan,int nLine, BOOL* bSuccess = NULL); virtual BOOL GetSmallImage(int iScan,LPBYTE lpIn, int nXStart, int nYStart, int nXSize, int nYSize, BOOL bMustMapping = TRUE); virtual int GetStartFrameIdx() { return m_nStartFrameIdx; } virtual int GetEndFrameIdx() { return m_nEndFrameIdx; } virtual void SetSimulFrame(int nFrame); virtual int GetGrabFrameCount(); virtual void ClearGrabIdx(); virtual stFrameIndex GetGrabFrame(); virtual stFrameIndex GetGrabFrameNoRemove(); virtual CFrameBufferController *GetFrameBuffer(){return m_pFrameBuffer;} virtual BOOL SetTriggerMode( BOOL bExTrigger ){return TRUE;} public: #if OFFLINE_KEY == 0 /* User's processing function prototype. */ static void MCAPI ProcessCallbackFunc(PMCSIGNALINFO signal_info); BOOL Processing(PMCSIGNALINFO signal_info); #endif dqGrabIdx *GetGrabIdx(){return &m_dqCallbackFrame;} BOOL FindGrabIdx(int iScan,int iFrame); BOOL SetInsertFrame(int iScan,int iFrame); BOOL IsHasGrabFrame(); protected: int OpenMulticam(void); BOOL InitMulticam(CString strCamfile,int nChannel, int nPort); void DeleteMulticam(); ////////////////////////////////////////////////////////////////////////// // Buffer public: BOOL CreateGrabBuffer(int nScanCount,int nBufSize, int nBufSizeX, int nBufSizeY); void ClearBuffer(); void SimulationGrab(int iScan); public: _GRABBER_INIT_PARAM_ m_Param; int m_nEndFrameIdx; // 泅犁 Grab 茄 荐 int m_nStartFrameIdx; // 啊厘 坷贰傈俊 Grab茄 Frame狼 牢郸胶. int m_nSetBufferIdx; int m_nScanIndex; int m_nBoardID; #if OFFLINE_KEY == 0 MCHANDLE m_hGrabChannel; #endif int m_nAllocatedGrabBufSize; BOOL m_isGrabbing; BOOL m_isLiveGrab; CFrameBufferController *m_pFrameBuffer; dqGrabIdx m_dqCallbackFrame; CCriticalSection m_csIdxLock; };