#pragma once #include "ClientSocket.h" #include "CommDataDef.h" // CClientSocketThread class CModbusClient : public CWinThread { DECLARE_DYNCREATE(CModbusClient) public: CModbusClient(CString strIp, int nPort, HWND hWnd); // protected constructor used by dynamic creation CModbusClient(); // protected constructor used by dynamic creation virtual ~CModbusClient(); public: virtual BOOL InitInstance(); virtual int ExitInstance(); void AnalysisRecvData(); //数据解析接口,供外部调用 void DealFrameData(BYTE* pData); int WriteMultipleRegisters(int nRegAddr, int nRegCnt, short * pWriteData); int ReadMultipleRegisters(int nRegAddr, int nRegCnt, short * pReadData); public: HWND m_hWnd; CString m_strSerIP; BYTE m_bDevID; WORD m_wTcpID; CClientSocket m_socket; BOOL m_bConnected; HANDLE m_ReadEventHandle; //读寄存器同步内核对象 HANDLE m_WriteEventHandle; //写寄存器同步内核对象 ST_MODBUS_SERVER_RSPREAD_FRAME m_stReadRspFrm; ST_MODBUS_SERVER_RSPWRT_FRAME m_stWrtRspFrm; ST_MODBUS_SERVER_RSPERR_FRAME m_stRspErrFrm; BYTE* m_pRecvDataBuffer; //数据接收缓冲区指针 BYTE* m_pDealBuf; //数据处理缓冲区指针 int m_iWritePos; int m_iReadPos; __int64 m_llDataTotalLen; __int64 m_llReadTotal; protected: DECLARE_MESSAGE_MAP() afx_msg void OnCustomMsg(WPARAM wParam,LPARAM lParam); };