#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;}
|
|
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;
|
};
|