#ifndef __COMM_PORT_H_ICL__ #define __COMM_PORT_H_ICL__ #include "common.h" #define MSGTYPE_BAOHU_BASE 200 #define MSGTYPE_BAOHU_103CMD MSGTYPE_BAOHU_BASE+0 #define MSGTYPE_BAOHU_103DATA MSGTYPE_BAOHU_BASE+1 #define MSGTYPE_BAOHU_SCADACMD MSGTYPE_BAOHU_BASE+2 #define MSGTYPE_BAOHU_SCADADATA MSGTYPE_BAOHU_BASE+3 // 从 config.ini 或 portconfig.ini 读信息 u_long GetPrivateProString(const char *section, const char *entry, const char *defaultstr, char *result, int len, char *inifile); int GetPrivateProInt(const char *section, const char *entry, int idefault, char *inifile); u_long GetPrivateProString2(const char *section, const char *entry, const char *defaultstr, char *result, int len, HDSFILE hFile); int GetPrivateProInt2(const char *section, const char *entry, int idefault, HDSFILE hFile); int PutDataToBuf( DATA_BUF *buf, u_char *msg, int len ); int GetDataFormBuf( DATA_BUF *databuf, u_char *buf, int len, int clrflag ); // 读设备信息,检查芯片状态和读芯片类型和频率 void ReadPortConfigInfo( u_short ); void ReadPortConfigInfoEx(u_short); void OpenAllPort( void ); void CloseOnePort( int commid ); void CloseAllPort( void ); void PollAllSerialPort( void ); void PollAllNetPort( void ); int SetPntMsg( int port, int point, void *pntmsg, BYTE type, BYTE attr ); int GetPntMsg( int port, int point, void *pntmsg, BYTE type, BYTE attr ); int SetPorvPntMsg( int port, int point, void *pntmsg, BYTE type, BYTE attr ); int GetPorvPntMsg( int port, int point, void *pntmsg, BYTE type ); int CheckPollCmdBufEmpty( int port ); int PutPollCmdToBuf( int port, int type, WORD wait, char *buf, int len ); void SendCmdFormPollCmdBuf( int port ); // wen 2005.09.08 清空指令缓冲区中的所有指令 void ClearAllCmdFromPollCmdBuf(int port); // wen 2004.10.25 公布函数接口 void ClearCmdFormPollCmdBuf( int port ); void ClearCmdFormPollCmdBufEx( int port, char *file, int line ); void ClearCmdAllFlag( int port ); int GetCmdFormPollCmdBuf( int port, u_char *buf, int len ); int ReGetCmdFormPollCmdBuf( int port, u_char *buf, int len ); int GetMaxPort(); int GetPortProtocolIdx(char *name); char *GetPortProtocolName(int Idx); // wen 2004.11.16 增加转发soe数据的处理 // 返回缓冲区中的soe数据数量 int ProvWriteSoeData( int provport, SOE_DEF *ptrSoe ); int ProvAndDelGetSoeData( int provport, SOE_DEF *ptrSoe ); int ProvHaveSoeData( int provport ); // wen 2005.02.23 void SendDataToPort(int commid, char *buf, int len); // wen 2005.02.28 void SendYkYtCommand(int commid, char *buf, int len); BOOL SendYkYtCommand2(int commid, YKYT_PARAM *pParam); int FindProvPntFromYkYtPnt(int commid, int ykytpnt, SIO_PARAM_BAOHU_DEF *pBaohuParam); BOOL ProvPortYkYtIsTimeOut( int commid, PROV_YKYT_DEF *pProvYkYt ); BOOL IsProvYkYtAck(int commid, PROV_YKYT_DEF *pProvYkYt); BOOL ShmGetDispYkYtFlag(); BOOL ShmGetDispHostLinkFlag(); // wen 2005.04.18 内存的分配与释放 void PortMemoryMalloc( int commid, int type, SIO_PARAM_BAOHU_DEF *pBaohuParam ); void PortMemoryMallocEx( int commid, int type, SIO_PARAM_BAOHU_DEF *pBaohuParam ); BOOL PortDataPntInit(int commid, int type, SIO_PARAM_BAOHU_DEF *pBaohuParam); void PortMemoryFree( int commid, SIO_PARAM_DEF *pGenParam ); void PortWriteDataFree( int commid ); BOOL IsBaoHuPtr( int commid ); BOOL IsExtInfoPtr( int commid ); BOOL IsSerialPtr( int commid ); /*! \brief 获取端口打开标识 \param commid -- 端口号 \param rwflag -- 读标识还是写标识 \返回值 retval-- 返回端口读或者写状态 */ int ShmGetPortFlag(int commid, int rwflag); // 保护数据处理 /*! \brief 发送保护数据到实际的装置 \param commid -- 端口号 \param rtumsg -- 转发的保护指令 \note 指令格式暂时用部颁103规约格式 */ void SendProtectCmdToDev(int commid, RTUMSG *rtumsg); /*! \brief 将实际装置数据保存到指令下发端口 \param rtumsg -- 转发的保护指令 \note 指令格式暂时用部颁103规约格式 */ void PutBaohuDataToPort(RTUMSG *rtumsg); void PutBaohuDataToPortEx(int commid, RTUMSG *rtumsg); /*! \brief 将数据发送到所有的scadaprotect规约端口 \param rtumsg -- 转发的保护指令 */ void SendDataToAllScadaProtectPort(RTUMSG *rtumsg); /*! \brief 获取指定装置的保护数据库 \param commid -- 端口号 \param iProvAddr -- 保护装置转发地址,端口统一编排的地址 \param ppBaoHuDB -- 存储保护装置保护数据的指针(PAI,PDI,PFIX...) \retval 返回该装置保护数据组数 */ int GetBaohuDB(int commid, int iProvAddr, GROUPDEF **ppBaoHuDB); int GetSioParam(SIO_PARAM_DEF **ppParam); int GetDevParam(DEV_DEF **ppParam); int SetCurPort(int PortNo); int GetCurPortEx(); int SetDispFlag(int iFlag); // 获取全局变量 SIO_PARAM_DEF *GetSioParamPtr(); #endif