⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmbrtu.h

📁 实现了modbus RTU通讯协议的COM组件
💻 H
字号:
// CMBRTU.h : Declaration of the CCMBRTU

#ifndef __CMBRTU_H_
#define __CMBRTU_H_

#include "resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// CCMBRTU
class ATL_NO_VTABLE CCMBRTU : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CCMBRTU, &CLSID_CMBRTU>,
	public IDispatchImpl<ICMBRTU, &IID_ICMBRTU, &LIBID_MBRTULib>
{
public:
	CCMBRTU()
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_CMBRTU)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CCMBRTU)
	COM_INTERFACE_ENTRY(ICMBRTU)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// ICMBRTU
public:
	STDMETHOD(WriteRegShort)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/short sVal);
	STDMETHOD(WriteRegInt)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/int iVal);
	STDMETHOD(WriteRegFloat)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/float fVal);
	STDMETHOD(ReadRegShort)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[out]*/short *psVal);
	STDMETHOD(ReadRegInt)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[out]*/int *piVal);
	STDMETHOD(ReadRegFloat)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[out]*/float *pFloat);
	STDMETHOD(FloatToFourByte)(/*[in]*/float fVal, /*[out]*/BYTE *pByteOneHi, /*[out]*/BYTE *pByteOneLo, /*[out]*/BYTE *pByteTwoHi, /*[out]*/BYTE *pByteTwoLo);
	STDMETHOD(FourByteToFloat)(/*[in]*/BYTE byteOneHi, /*[in]*/BYTE byteOneLo, /*[in]*/BYTE byteTwoHi, /*[in]*/BYTE byteTwoLo, /*[out]*/float *pfVal);
	STDMETHOD(IntToFourByte)(/*[in]*/int iVal, /*[out]*/BYTE *pByteOneHi, /*[out]*/BYTE *pByteOneLo, /*[out]*/BYTE *pByteTwoHi, /*[out]*/BYTE *pByteTwoLo);
	STDMETHOD(FourByteToInt)(/*[in]*/BYTE byteOneHi, /*[in]*/BYTE byteOneLo, /*[in]*/BYTE byteTwoHi, /*[in]*/BYTE byteTwoLo, /*[out]*/int *piVal);
	STDMETHOD(ReadDiscretes)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/int iQuantity, /*[out]*/int *pRetLen);
	STDMETHOD(WriteCoil)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/BOOL bCoilStatus);
	STDMETHOD(WriteCoils)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/int iQuantity);
	STDMETHOD(WriteCoilsStatus)(/*[in]*/int iIndex, /*[in]*/BOOL bCoilStatus);
	STDMETHOD(ReadCoilsStatus)(/*[in]*/int iIndex, /*[out]*/BOOL *pCoilStauts);
	STDMETHOD(ReadCoils)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/int iQuantity, /*[out]*/int *pRetLen);
	STDMETHOD(ShortToTwoByte)(/*[in]*/short sVal, /*[out]*/BYTE *pbyteHi, /*[out]*/BYTE *pbyteLo);
	STDMETHOD(TwoByteToShort)(/*[in]*/BYTE byte1, /*[in]*/BYTE byte2, /*[out]*/short *psVal);
	STDMETHOD(SetRegVal)(/*[in]*/int iIndex, /*[in]*/BYTE byteVal);
	STDMETHOD(WriteRegister)(/*[in]*/int iSation, /*[in]*/int iStartAddr, /*[in]*/int iLen);
	STDMETHOD(GetRetVal)(/*[in]*/int iIndex, /*[out, retval]*/BYTE *pByte);
	STDMETHOD(GetRetVal_Cimplicity)(/*[in]*/int iIndex, /*[out, retval]*/int *piVal);
	STDMETHOD(ReadRegister)(/*[in]*/int iStation, /*[in]*/int iStartAddr, /*[in]*/int iLen, /*[out]*/int *pRetLen);
	STDMETHOD(CloseCom)();
	STDMETHOD(OpenCom)(/*[in]*/BSTR bstrComParam);
private:
	BYTE Power(BYTE iJiShu, BYTE byteMi);
	char *cParam;	
	BOOL bConnect;
	char *cReceive;
	char *cWrite;
	HANDLE hCom;
	COMSTAT cs;
	DWORD dwError;
};

#endif //__CMBRTU_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -