#pragma once #include "Global_Define.h" #include "mil.h" #pragma comment(lib, "mil.lib") #define MAX_BOARD_COUNT 4 #define BUFFERING_SIZE_MAX 200 #define M_FREE_START 100 #define MAX_DIGITIZE_COUNT 2 typedef struct tagDigStatus { int nJobIndex; int nSKipFrame; int status; // ÇöÀç »óÅÂ... // M_STOP , M_START , M_FREE_START int nCount; // ÀÐÀº ¶óÀμö... int nIndex; // À̹ÌÁö ¹öÆÛ À妽º int nDisplayFrame; int nResetFrame; }DIGSTATUS, *PDIGSTATUS; class CFrameBufferController; class CGrabberRadient : public CGrabberControl { public: CGrabberRadient(); virtual ~CGrabberRadient(); 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); /* User's processing function prototype. */ static long MFTYPE CallbackHookFunction(long HookType , MIL_ID HookId, void MPTYPE *HookDataPtr); static long MFTYPE CallbackFreeRunFunction(long HookType , MIL_ID HookId, void MPTYPE *HookDataPtr); 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 ); dqGrabIdx *GetGrabIdx(){return &m_dqCallbackFrame;} BOOL FindGrabIdx(int iScan,int iFrame); BOOL SetInsertFrame(int iScan,int iFrame); BOOL IsHasGrabFrame(); protected: BOOL Processing(long HookType, MIL_ID HookId); ////////////////////////////////////////////////////////////////////////// // Buffer public: BOOL CreateGrabBuffer(int nScanCount,int nBufSize, int nBufSizeX, int nBufSizeY); void ClearBuffer(); BOOL CheckLastError(); void SimulationGrab(int iScan); BOOL SetImageFlipX(BOOL bOn); public: _GRABBER_INIT_PARAM_ m_Param; MIL_ID m_MilSystem; // º¸µå´ç 1º¯¼ö MIL_ID m_MilDigitizer; // Ä«¸Þ¶ó º¯¼ö MIL_ID m_Milbufgrab[BUFFERING_SIZE_MAX]; DIGSTATUS m_DigitizerStatus; long m_lBord; BOOL bUART_Connect[2]; CCriticalSection m_critical; int m_nEndFrameIdx; // ÇöÀç Grab ÇÑ ¼ö int m_nStartFrameIdx; // °¡Àå ¿À·¡Àü¿¡ GrabÇÑ FrameÀÇ À妽º. int m_nSetBufferIdx; int m_nScanIndex; int m_nAllocatedGrabBufSize; BOOL m_isGrabbing; BOOL m_isLiveGrab; CFrameBufferController *m_pFrameBuffer; dqGrabIdx m_dqCallbackFrame; CCriticalSection m_csIdxLock; };