#pragma once class CNetClient; #include "IOCPNetwork/NetClient.h" #include "CHSignalControls_Network/MessageProcessor.h" namespace CHSignalControls_Network { interface ISignalControl_NetClient2Parent { // Connected virtual int ISCNC2P_Connected(int nModuleIndex, BOOL bConnect) = 0; // status virtual int ISCNC2P_StatusCamera(int nModuleIndex, int nControl) = 0; virtual int ISCNC2P_StatusLight(int nModuleIndex, int nLight) = 0; virtual int ISCNC2P_StatusLens(int nModuleIndex, int nLens) = 0; virtual int ISCNC2P_StatusModulePos(int nModuleIndex, int nMotorUmX, int nMotorUmY, int nGlassUmX, int nGlassUmY) = 0; virtual int ISCNC2P_StatusJogSpeed(int nModuleIndex, double dJogSpeed) = 0; virtual int ISCNC2P_StatusAfm(int nModuleIndex, int nAfm) = 0; // command virtual int ISCNC2P_Command_Loading(int nModuleIndex, const char *pTransferData) = 0; virtual int ISCNC2P_Command_ReviewResult(int nModuleIndex,int nReviewModuleIndex, int nPlanIndex, int nResultCount,const char *pResultData, int nMagLevel =0, int nDrsEtcCount = 100) = 0; virtual int ISCNC2P_Command_PlanStart(int nModuleIndex, int nPlanIndex) = 0; virtual int ISCNC2P_Command_PlanEnd(int nModuleIndex, int nPlanIndex) = 0; // ack virtual void ISCNC2P_AckCommandCamera(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandLight(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandLens(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandMotorGo(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandGlassGo(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandJog(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandJogSpeed(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandAfm(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandAfmJog(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandAfmJogSpeed(int nModuleIndex) = 0; virtual void ISCNC2P_AckCommandAfmHome(int nModuleIndex) = 0; virtual void ISCNC2P_DisplayMessage(const TCHAR* lpstrFormat, ...) = 0; }; class AFX_EXT_CLASS CSignalControl_NetClient : public IIOCPNetwork2Parent, public IMessageProcessor2Parent { public: CSignalControl_NetClient(int nIndex, ISignalControl_NetClient2Parent* pISCNC2P); virtual ~CSignalControl_NetClient(void); // func int Connect( const CString& strIPAddress ); int Disconnect(); // command virtual int Send_CommandLight(int nLight); virtual int Send_CommandLens(int nLens); virtual int Send_CommandMotorGo(int nPosUmX, int nPosUmY); virtual int Send_CommandGlassGo(int nPosUmX, int nPosUmY); virtual int Send_CommandJog(int nJog); virtual int Send_CommandJogSpeed(int nJogSpeed); virtual int Send_CommandAfm(int nAfm); virtual int Send_CommandAfmJog(int nJog); virtual int Send_CommandAfmJogSpeed(int nJogSpeed); virtual int Send_CommandAfmHome(); virtual int Send_StatusReviewResult(int nModuleIndex, int nPlanIndex, int nResultCount, char* pResultData); protected: // 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); // message processor 2 parent virtual void IMP2P_ProcessMessageData(CMessageProcessData* pData); BOOL InitNetwork( const CString& strIPAddress ); void DeinitNetwork(); // status void Process_StatusLight(int nModuleIndex, CNetPacket* pPacket); void Process_StatusLens(int nModuleIndex, CNetPacket* pPacket); void Process_StatusModulePos(int nModuleIndex, CNetPacket* pPacket); void Process_StatusJogSpeed(int nModuleIndex, CNetPacket* pPacket); void Process_StatusAfm(int nModuleIndex, CNetPacket* pPacket); // Command void Process_CommandLoading(int nModuleIndex, CNetPacket* pPacket); void Process_CommandReviewResult(int nModuleIndex, CNetPacket* pPacket); void Process_CommandPlanStart(int nModuleIndex, CNetPacket* pPacket); void Process_CommandPlanEnd(int nModuleIndex, CNetPacket* pPacket); // ack void Process_AckModuleIndex(int nModuleIndex, int nContext); void Process_AckCommandLight(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandLens(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandMotorGo(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandGlassGo(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandJog(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandJogSpeed(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandAfm(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandAfmJog(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandAfmJogSpeed(int nModuleIndex, CNetPacket* pPacket); void Process_AckCommandAfmHome(int nModuleIndex, CNetPacket* pPacket); protected: int m_nIndex; ISignalControl_NetClient2Parent* m_pISCNC2P; CMessageProcessor* m_pMessageProcessor; CNetClient* m_pNetClient; }; };