#pragma once #include #include "Export.h" #include "FesDef.h" #include "FesBase.h" #include "ProtocolBase.h" #include "DNP3MasterDataProcThread.h" #include "pub_utility_api/CommonConfigParse.h" #include "DNP3MasterCommon.h" extern "C" PROTOCOLBASE_API int EX_SetBaseAddr(void *Address); extern "C" PROTOCOLBASE_API int EX_SetProperty(int FesStatus); extern "C" PROTOCOLBASE_API int EX_OpenChan(int MainChanNo,int ChanNo,int OpenFlag); extern "C" PROTOCOLBASE_API int EX_CloseChan(int MainChanNo,int ChanNo,int CloseFlag); extern "C" PROTOCOLBASE_API int EX_ChanTimer(int MainChanNo); extern "C" PROTOCOLBASE_API int EX_ExitSystem(int flag); class PROTOCOLBASE_API DNP3Master : public CProtocolBase { public: DNP3Master(); virtual ~DNP3Master(); int SetBaseAddr(void *address); int SetProperty(int IsMainFes); int OpenChan(int MainChanNo,int ChanNo,int OpenFlag); int CloseChan(int MainChanNo,int ChanNo,int CloseFlag); int ChanTimer(int MainChanNo); private: int ReadConfigParam(); int parseRtuConfig(CCommonConfigParse &configParse, const std::string &strRtuName, SDNP3MASTERAppConfParam &stParam); void ClearDataProcThreadByChanNo(int nChanNo); private: int m_ProtocolId; //本协议的ID CFesBase* m_ptrCFesBase; //CProtocolBase类中定义 DNP3MasterDataProcThreadPtrSeq m_vecDataThreadPtr; //存放所有本协议的线程处理指针 boost::unordered_map m_mapConfMap; //存储RTU对应的配置参数 };