SDC C-Project CF Review 프로그램
LYW
2021-07-09 6bb39b058bce38f80645e1e54d03a172f74dba3b
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
#pragma once
 
class CNetClient;
#include "CHCameraControls/CameraControl.h"
#include "IOCPNetwork/NetClient.h"
#include "MessageProcessor.h"
 
namespace CHCameraControls_Network
{
    interface ICameraControl_NetClient2Parent
    {
        virtual void    ICCNC2P_CameraConnected(int nIndex, BOOL bConnected) = 0;
        virtual void    ICCNC2P_AckCameraGrab(int nIndex) = 0;
        virtual void    ICCNC2P_AckCameraSnap(int nIndex, int nCount, UINT nWaitTime) = 0;
        virtual void    ICCNC2P_AckCameraFreeze(int nIndex) = 0;
        virtual void    ICCNC2P_AckCameraAbort(int nIndex) = 0;
        virtual void    ICCNC2P_AckCameraTriggerMode(int nIndex) = 0;
        virtual void    ICCNC2P_AckSoftwareTrigger(int nIndex) = 0;
        virtual void    ICCNC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...) = 0;
        virtual void    ICCNC2P_StatusCamera(int nIndex, int nResult) = 0;
        virtual CString    ICCNC2P_GetLocalImagePath() = 0;
    };
 
    class AFX_EXT_CLASS CCameraControl_NetClient :    public CCameraControl, 
                                                    public IIOCPNetwork2Parent, 
                                                    public IMessageProcessor2Parent
    {
    public:
        CCameraControl_NetClient(int nIndex, ICameraControl_NetClient2Parent* pICCNC2P=NULL);
        virtual ~CCameraControl_NetClient(void);
 
        // camera control
        virtual    int        Connect(const CCameraControlInfo& controlInfo);
        virtual int        Grab();
        virtual int        Snap();
        virtual int        Snap(int nCount);
        virtual int        Snap(int nCount, UINT nWaitTime);
        virtual int        Freeze();
        virtual int        Abort();
        virtual int        Disconnect();
        virtual void    SetTriggerMode(int nMode, int nCount=1);
        virtual BOOL    SetTriggerProcess(int nPosUmX, int nPosUmY);
 
        virtual BOOL    SendSoftwareTrigger(int nPosUmX, int nPosUmY);
 
        // net 2 parent
        virtual void IOCPNet2P_Connected(int Type);
        virtual void IOCPNet2P_Disconnected(int Type, int nModuleNo = -1);
        virtual BOOL IOCPNet2P_Received(int Type, CNetPacket* pPacket, int nContext = -1);
 
    protected:
        // message processor 2 parent
        virtual void IMP2P_ProcessMessageData(CMessageProcessData* pData);
    
        BOOL InitNetwork( const CString& strIPAddress );
        void DeinitNetwork();
        
        // ack
        void Process_AckCameraIndex(int nIndex, int nContext);
        void Process_AckCommandCameraGrab(int nIndex);
        void Process_AckCommandCameraSnap(int nIndex);
        void Process_AckCommandCameraFreeze(int nIndex);
        void Process_AckCommandCameraAbort(int nIndex);
        void Process_AckCommandCameraTriggerMode(int nIndex);
        void Process_AckCommandSoftwareTrigger(int nIndex);
 
        // status
        void Process_StatusCamera(int nIndex, CNetPacket *pPacket);
    
        // command
        void Process_CommandCameraCaptured(int nIndex, CNetPacket *pPacket);
        void FrameCaptured(const CString& strFilePath);
    
    protected:
        ICameraControl_NetClient2Parent*    m_pICCNC2P;
        CMessageProcessor*                    m_pMessageProcessor;
        CNetClient*                            m_pNetClient;
        CRITICAL_SECTION                    m_csFrameCaptured;
        int                                    m_nFrameReceiveCount;
        int                                    m_nFrameProcessCount;
    };
};