#pragma once #include "StdAfx.h" #include "sapclassbasic.h" #include "Global_Define.h" #include "GrabberControl.h" #define ACQ_NO_IMAGE -10000 #define UM_IMAGE_GRAB (WM_USER + 1000) class CFrameBufferController; class CSapLineGrab : public CGrabberControl { public: CSapLineGrab(void); virtual ~CSapLineGrab(void); public: virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber 檬扁拳 virtual BOOL InitializeBuffer(void *pParam); 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); // Return 0 - 酒流 救嘛澜, Return -1 - 瘤况, Return 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; } virtual BOOL DumpBufferAsOneImage(int iScan, LPCTSTR pszPath) { return TRUE; } BOOL CreateGrabBuffer(int nScanCount,int nBufSize, int nBufSizeX, int nBufSizeY); void SimulationGrab(int iScan); BOOL SetInsertFrame(int iScan,int iFrame); BOOL IsHasGrabFrame(); BOOL FindGrabIdx(int iScan,int iFrame); // Main Function. BOOL CreateAcq(char *file); BOOL CreateObjects(); BOOL ActivateObjects(); // Each sap object calls it'w own create() function. void DestroyObjects(); void DeleteObjects(); // Acquisition Related. void WiatXfer(int tMS); BOOL SetScanDirection(unsigned int nDirection); void My_XferCallback(SapXferCallbackInfo *pInfo); // Buffer Handing. BOOL CreateBuffer(UINT32 uiType); BOOL ClearBuffer(); LPBYTE GetGrabFrameHeader(int nFrameNo, BOOL* bSuccess = NULL); BOOL SetFrameImage(int nFrameNo, int nStartX, int nStartY, int nWidth, int nHeight, LPBYTE lpBuffer); CORSTATUS DisplayStatus( char *functionName, CORSTATUS status); public: CFrameBufferController *m_pFrameBuffer; protected: SapAcquisition *m_pSapAcq; SapBuffer *m_pSapBuffers; SapTransfer *m_pXfer; SapView *View; int m_nGrabFrameNo; // 矫累急苞 八荤且 橇饭烙 荐俊辑 拌魂等 角力 嘛绰 橇饭烙 荐. _GRABBER_INIT_PARAM_ m_Param; int m_nBoardID; int m_nAllocatedGrabBufSize; int m_cxferCall; // Xfercallback捞 龋免等 墨款飘. int m_nScanIndex; dqGrabIdx m_dqCallbackFrame; CCriticalSection m_csIdxLock; BOOL m_bGrabLive; // Buffer Accessing. int m_nStartFrameIdx, m_nEndFrameIdx; int m_nSetBufferIdx; BOOL m_bXferCall; BOOL m_bSnapStart; };