// ProtocolPMC916.h: interface for the CProtocolModbus class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_PROTOCOLPMC916_H__3A4B4E9B_C165_4415_8EC3_3F5AA66B53C9__INCLUDED_) #define AFX_PROTOCOLPMC916_H__3A4B4E9B_C165_4415_8EC3_3F5AA66B53C9__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define DEBUG_PROTOCOL 1 #include "Protocol.h" class CProtocolModbus : public CProtocol { public: virtual BOOL InitParam(PPORTPARAM pPortParam, CCommAsyn *pComm); virtual int WorkMain( int nAddr, //设备地址 BYTE Start,//起始位 BYTE StartAddr[2],//起始地址 int nRegNum,//读取的寄存器个数 BYTE FuncCode[2], int nDataLen, BYTE byWithAddrFlag, char chMsg[80]); virtual int WriteCommand(char DataBuffer[80], int nDataLen); CProtocolModbus(); virtual ~CProtocolModbus(); protected: HANDLE m_hSemComm; CRITICAL_SECTION m_csReadFinished; CRITICAL_SECTION m_csWrFinished; protected: virtual int RequestStatus( int nAddr, //设备地址 BYTE Start, //起始位 BYTE StartAddr[2], //起始地址 int nRegNum, //读取的寄存器个数 BYTE FuncCode[2]); virtual int ResponseStatus(int nDataLen, BYTE byWithAddrFlag, char chMsg[80]); virtual int RequestWrStatus( char DataBuffer[80], int nDataLen); virtual int ResponseWrStatus(char DataBuffer[80], int nDataLen); }; //BYTE GetCheckCode(const char * pSendBuf, int nEnd);//获得校验码 char ByteToAscii(BYTE btSrc); WORD AsciiToBYTE(BYTE btSrc); static unsigned char LRC(unsigned char *auchMsg, unsigned short usDataLen); #endif // !defined(AFX_PROTOCOLPMC916_H__3A4B4E9B_C165_4415_8EC3_3F5AA66B53C9__INCLUDED_)