SDC C-Project CF Review 프로그램
LYW
2022-07-05 63439977901d54a01924ed76290931aeddbce66c
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#pragma once
 
#include "CameraControlInfo.h"
//#include <emmintrin.h>
 
#include "CHImageControls/CHImageData.h"
typedef CCHImageData FrameBuffer;
 
class CCameraBuffer;
 
 
class AFX_EXT_CLASS CCameraControl
{
public:
    CCameraControl(int nIndex);
    virtual ~CCameraControl();
    void    SetCC2P(ICameraControl2Parent* pCC2P)            { m_pCC2P = pCC2P; }
    const CCameraControlInfo* GetControlInfo()                { return &m_ControlInfo; }
    
    // camera control
    virtual    int        Connect(const CCameraControlInfo& controlInfo) = 0;
    virtual int        Grab() = 0;
    virtual int        Snap() = 0;
    virtual int        Snap(int nCount) = 0;
    virtual int        Snap(int nCount, UINT nWaitTime) = 0;
    virtual int        Freeze() = 0;
    virtual int        Abort() = 0;
    virtual int        Disconnect() = 0;
 
    // setting info
    virtual BOOL    SetExposureTime(double dValue);
    virtual BOOL    GetExposureTime(double& dValue);
    virtual BOOL    SetExposureAuto(BOOL bAuto);
    virtual BOOL    SetTriggerProcess();
    virtual BOOL    SetTriggerProcess( int nPosUmX, int nPosUmY );
    virtual BOOL    SetFrameRate(double dRate)        { return TRUE; }
 
    // load save 
    virtual BOOL    SaveImage(const CString& strFilename);
    virtual BOOL    SaveImage(int nIndex, const CString& strFilename);
 
    // frame image
    virtual BOOL        GetImage(int nLeft, int nTop, int nWidth, int nHeight, BYTE* pImage);
    virtual BOOL        GetImage(int nIndex, int nLeft, int nTop, int nWidth, int nHeight, BYTE* pImage);
    virtual void*        GetImageAddress();
    virtual void*        GetImageAddress(int nIndex);
 
    virtual BOOL        GetImageData(CCHImageData *pImageData);
    virtual BOOL        GetImageData(int nIndex, CCHImageData *pImageData);
 
    virtual CCHImageData*        GetImagePtr();
    virtual CCHImageData*        GetImagePtr(int nIndex);
 
    
    // connection info
    virtual BOOL    ClearSharedMemory(int nScanIndex);
    virtual BOOL    GetConnected() const                        { return m_bConnected; }
    virtual void    SetConnected(BOOL bConnected)                { m_bConnected = bConnected;}
    virtual BOOL    DisconnectCheck()                            { return TRUE; }
 
    // frame info
    virtual int        GetWidth() const                            { return m_nWidth; }
    virtual int        GetWidthStep() const                        { return m_nWidthStep; }
    virtual int        GetHeight()    const                            { return m_nHeight; }
    virtual int        GetChannels() const                            { return m_nChannels; }
    virtual int        GetDepth() const                            { return m_nDepth; }
    virtual int        GetLostFrames() const                        { return m_nLostFrame; }
    virtual int        GetLostPackets() const                        { return m_nLostPacket; }
    virtual int        GetSwCount() const                            { return m_nSwCount; }
    virtual int        GetHwCount() const                            { return m_nHwCount; }        
 
    // grabbing info
    virtual BOOL    GetGrabbing() const                            { return m_bGrabbing; }
    virtual int        GetFrameIndex() const                        { return m_nFrameIndex; }
    
    // mode info
    virtual void    SetFlipMode(int nFlipMode)                    { m_nFlipMode = nFlipMode;}
    virtual int        GetFlipMode() const                            { return m_nFlipMode; }
 
    virtual int        GetTriggerMode() const                        { return m_nTriggerMode; }
    virtual int        GetTriggerSource() const                    { return m_nTriggerSource; }
    virtual void    SetTriggerMode(int nMode, int nCount=1)        { m_nTriggerMode = nMode; }
    virtual void    SetTriggerSource(int nSource)                { m_nTriggerSource = nSource; }
 
    virtual int        GetIndex() const                            { return m_nIndex; }
    virtual int        GetFrameCount() const                        { return m_nFrameCount; }
 
    virtual void    SetScanIndex(int nScanIdx)                    { m_nScanIndex = nScanIdx; }
    virtual int        GetScanIndex() const                        { return m_nScanIndex; }
    
protected:
    void AllocateFrameBuffer(int nWidth, int nHeight, int nChannels, int nFrameCount, const CString& strBufferName);
    void DeleteFrameBuffer();
 
    static BOOL ImageFlip(int nFlipMode, BYTE *pSrcBuf, BYTE* pDstBuf, int nWidth, int nHeiht, int nChannels);
 
    int        m_nIndex;
    ICameraControl2Parent*    m_pCC2P;
    CCameraControlInfo        m_ControlInfo;
 
    // connection info
    BOOL    m_bConnected;
    int        m_nTotalIndex;
    CString m_strCameraName;
        
    int        m_nScanIndex;
    int        m_nGrabCount;
    int        m_nFrameCount;
    int        m_nFlipMode;
 
    // frame info
    int        m_nWidth;
    int        m_nWidthStep;
    int        m_nHeight;
    int        m_nChannels;
    int        m_nDepth;
    int        m_nLostFrame;
    int        m_nLostPacket;
    int        m_nSwCount;
    int     m_nHwCount;
 
    // grabbing info
    BOOL    m_bGrabbing;
    int        m_nFrameIndex;
    
    // mode info
    int        m_nTriggerMode;
    int        m_nTriggerSource;
 
 
    // shared frame buffer
    FrameBuffer            m_curFrameImage;
    CCameraBuffer*        m_pCameraFrameBuffer;
 
    CRITICAL_SECTION    m_csFrameBuffer;
 
    BOOL bReverseX;
};
extern "C" __declspec( dllexport ) CCameraControl* CameraControlNew(int nCamIndex);