mrDarker
2025-07-09 8364edfb293e9e31e0fa7899bedcef9cd393e130
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
#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;
};