#pragma once // CCientMgr 命令目标 #include "Product.h" #define ACTION_OPENFILE (CString)"OPEN_FILE;"//打开文件 #define ACTION_TANSPRODUCTINFO (CString)"TRANS_PRODUCT;" //传Product #define ACTION_STARTWORK (CString)"START_WORK;" //标刻指定区域 #define ACTION_TRANSFILE (CString)"TRANS_FILE;"//传文件 #define ACTION_SETSPECAILOBJ (CString)"SET_SPECAILOBJ;"//设置特殊对象 #define ACTION_BMARKSELOBJMODE (CString)"MARK_SELOBJMODE;"//设置选择加工模式 #define ACTION_SELECTOBJ (CString)"SELECT_OBJ;"//选择OBJ #define TRACK_1 (CString)"TRACK1;" #define TRACK_2 (CString)"TRACK2;" class CClientMgr : public CSocket { public: CClientMgr(); virtual ~CClientMgr(); bool Connect2Server(); void DisConnectServer(); void SendCmd_OpenFile(CString filePath); //发指令给副机,打开文件 void SendCmd_CollectData(); //发Product内容给客户端 void SendCmd_ProductInfo(CProduct product); //发Product内容给客户端 void SendCmd_SetSpecialObj(); //发指令给副机,设置特殊对象 void SendCmd_SelObj(); //发指令给副机,使之选中本机已选择的Obj void SendCmd_bMarkSelMode(int bMarkSel); //发指令给副机,设置是否为选择加工模式1是,0否 void SendCmd_StartLaserMark(int AreaIndex); //发指令给副机,标刻指定区域的数据 //void SendCmd_PauseLaserMark( ); //发指令给副机,标刻指定区域的数据 //void SendCmd_ResumeLaserMark( ); //发指令给副机,标刻指定区域的数据 //void SendCmd_AbortLaserMark(); //发指令给副机,标刻指定区域的数据 bool CheckServerDoneCmd(); //检测服务端是否完成上一条指令(必须完成才能发下一条) void SetbDisableServer(bool bDis) { m_bDisableServer = bDis; }; //设置屏蔽副机 bool IsbDisableServer(){ return m_bDisableServer; }; //查询是否屏蔽副机 CString m_ClientIP ; int m_ClientPort ; bool m_bLastCmdFinished=true;//上一条指令,客户端是否完成.完成才能发下一条指令. vector m_SelObjIndexVec; //当前所有选中的Obj索引Vec bool m_bDisableServer = false;//是否屏蔽副机 bool m_bAreaMarkDone= true;//上一条mark指令,客户端是否完成 bool m_bServerReady = false;//上一条指令,客户端是否完成 private: virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0 ); virtual void OnReceive(int nErrorCode); virtual void OnClose(int nErrorCode); virtual void OnConnect(int nErrorCode); //start--------------设定发送超时--------------------- private: virtual BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort); //重写 加入超时 BOOL SetTimeOut(UINT uTimeOut = 500);//ms级延时 BOOL KillTimeOut(); virtual BOOL OnMessagePending() override; LONGLONG m_llDtStart; UINT m_uTimeOut; //end--------------设定读写超时相关--------------------- void SendCmd_TransFile(CString filePath);//给伺服端传文件(复制到共享盘,无通信) void DoEvents(); bool m_bOnline = false; }; extern CClientMgr * gClientMgr;