#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; }; };