#pragma once
|
|
#include "Global_Define.h"
|
#include "GrabberControl.h"
|
#include "corapi.h"
|
|
#define MAX_BUFFER_SIZE 20
|
#define MAX_BUFFER_COUNT 200
|
enum BUFFER_COUNT{MAX_FRAME_COUNT= MAX_BUFFER_SIZE*MAX_BUFFER_COUNT};
|
|
class CFrameBufferController;
|
class CSapControl : public CGrabberControl
|
{
|
public:
|
CSapControl(void);
|
virtual ~CSapControl(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(){return m_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; }
|
virtual BOOL DumpBufferAsOneImage(int iScan, LPCTSTR pszPath) { return TRUE; }
|
BOOL FindGrabIdx(int iScan,int iFrame);
|
|
protected:
|
BOOL GetServer();
|
CORSTATUS DisplayStatus( char *functionName, CORSTATUS status);
|
BOOL CreateAcq();
|
BOOL CreateCamAndVic();
|
BOOL CreateBuffer(UINT32 uiType);
|
BOOL CreateXfer();
|
BOOL ClearBuffer();
|
BOOL CreateGrabBuffer(int nScanCount,int nBufSize, int nBufSizeX, int nBufSizeY);
|
|
BOOL DestroyBuffer();
|
BOOL DestroyXfer();
|
BOOL DestroyCamAndVic();
|
|
void SimulationGrab(int iScan);
|
BOOL SetInsertFrame(int iScan,int iFrame);
|
BOOL IsHasGrabFrame();
|
LPBYTE GetGrabFrameHeader(int nFrameNo);
|
|
static CORSTATUS CCONV XferCallback (void *context, UINT32 eventType, UINT32 eventCount);
|
|
protected:
|
_GRABBER_INIT_PARAM_ m_Param;
|
int m_nEndFrameIdx; // 泅犁 Grab 茄 荐
|
int m_nStartFrameIdx; // 啊厘 坷贰傈俊 Grab茄 Frame狼 牢郸胶.
|
int m_nSetBufferIdx;
|
int m_nScanIndex;
|
int m_nAllocatedGrabBufSize;
|
int m_nBoardID;
|
BOOL m_isGrabbing;
|
BOOL m_isLiveGrab;
|
CFrameBufferController *m_pFrameBuffer;
|
dqGrabIdx m_dqCallbackFrame;
|
CCriticalSection m_csIdxLock;
|
|
BYTE* m_pOneLargeBuffer;
|
void* m_pX64Buffer[MAX_BUFFER_COUNT]; // 角力 且寸瞪 滚欺.
|
CORBUFFER m_hBuffer[MAX_BUFFER_COUNT]; // Handle to Buffer module where acquisition will take place
|
CORBUFFER m_hFrame[MAX_FRAME_COUNT];
|
BOOL m_bIsGrabbing; // Grabbing 吝牢瘤 酒囱瘤 魄窜.
|
|
CORSERVER m_hPC; // Handle to a PC Sapera server
|
CORSERVER m_hBoard; // Handle to Sapera server that will be acquiring
|
CORCAM m_hCam; // Handle to Camera module
|
CORVIC m_hVic; // Handle to VIC module
|
CORXFER m_hXfer; // Handle to Transfer module
|
CORACQ m_hAcq; // Handle to Acquisition module
|
|
};
|