mrDarker
2025-07-16 1dbe46cd9d0f181d08d5a69f72d8548628a13b9d
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
 
#pragma once
 
#include "Global_Define.h"
#include "GrabberControl.h"
#include "MilControl_Common.h"
 
class CFrameBufferController;
class CGrabberSolios : public CGrabberControl
{
public:
    CGrabberSolios();
    virtual ~CGrabberSolios();
 
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;
};