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