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

📄 publicclass.h

📁 电力故障信息采集,主要是针对南自的保护装置,这个程序用在Linux操作系统下
💻 H
字号:
#ifndef PUBLICCLASS_H#define PUBLICCLASS_H#include "ysheader.h"#include "database.h"#include "signalprocess.h"#include "ysexception.h"#include "ysmsgqueue.h"#include "yspubfunction.h"#include "yssegment.h"#include "localmutex.h"#include "ysstruct.h"#include "ysdefine.h"#include "xml.h"#include "IniFile.h"class CMessageQueue : public CBMessageQueue{    public:    CMessageQueue();    ~CMessageQueue();    public:    int CheckMessage(int *qid,long type);    bool SendMessage(int qid,long DestPid,long DestThread,unsigned int DataType,				      void* qbuf,int iSize);    bool SendMessageEx(int qid,long DestPid,long DestThread,unsigned int DataType,				      void* qbuf=NULL,int iSize=0,				      unsigned int DataFrom=0,int iResult=1,int DisplayFlag=0,				      int Level=0,long TransThread=0);    bool SendMessage(int qid,void* ppNode);    bool SendMessage(int *qid,void* ppNode);    bool ReadMessage(int qid,int pid,st_nodeinfo* msgbuf);    void ClearMessage(int qid,int pid);};class CDeviceNode{    public:    CDeviceNode();    ~CDeviceNode();    public:    int				m_ModuleState;			//模块运行状态    int				m_Level;			//接点级别    st_deviceinfo			m_deviceinfo;			//设备信息结构    DeviceInfoListType		m_ChildDevList;			//下级设备信息表    int				m_ModuleClass;			//=0一般设备;=1表示后台    public:    void ResetXunJianFlag();    int FindDeviceByEquipNo(int iEquipNo);    int FindDeviceByFlag(int iFlag /* = 0 */);    long FindDeviceWildByEquipNo(int iEquipNo);    long FindDeviceWildByFlag(int iFlag,int & iDevIndex);};class CDataNode{    public:    CDataNode();    ~CDataNode();    public:    CDataNode(CDataNode* pNode);    st_nodeinfo			m_nodeinfo;			//数据信息结构    int				m_init;};class CNodeManage{    public:    CNodeManage();    ~CNodeManage();    public:    CYsPtrList<CDataNode>		m_SendNode;    CYsPtrList<CDataNode>		m_RecvNode;    CYsPtrList<CDeviceNode>	m_DeviceNode;    CYsPtrList<CDataNode>		m_DispNode;        CLocalMutex			m_NoticSendLock;			//发送队列有数据时的通知锁    public:    CDataNode*   FindRecvDataNode();    CDataNode*   FindCmdFromRDN(int EquipNo);    CDataNode*   FindCmdFromRDN(long threadid, int EquipNo = 0);	CDataNode*   FindRecvDataNode(long ithreadid);//按照 m_CurrentThread 查找	CDataNode*   FindRecvDataNodeEx(long ithreadid);//上行,下行模块用,按照 m_TransThread 查找    void         DeleteRecvDataNode(CDataNode* pNode);    bool AddSendDataNodeEx(long DestPid,long DestThread,unsigned int DataType,int iMachineNo,char* UniqueCmd,				      void* qbuf=NULL,int iSize=0,				      unsigned int DataFrom=0,int iResult=1,int DisplayFlag=0,				      int Level=0,long TransThread=0);    bool AddSendDataNode(long DestPid,long DestThread,unsigned int DataType,		    int iMachineNo,char* UniqueCmd,int iResult=0,char* RecordFlag=NULL);    bool AddSendDataNode(CDataNode* ppNode);    bool AddRecvDataNode(CDataNode* ppNode);    bool TransSendDataNode(CDataNode* ppNode);        CDataNode*   FindSendDataNode();    void         DeleteSendDataNode(CDataNode* pNode);        CDeviceNode* FindDevicebyEquipNo(int EquipNo,int Level,int & index);        bool AddDispDataNode(void* ppNode);    CDataNode*		FindDispDataNode();    void 		DeleteDispDataNode(CDataNode* pNode);    };class CPublicClass{    public:    CPublicClass();    ~CPublicClass();    public://	CDataBase            m_DataBase;        //数据库对象    CSignal			     m_Signal;    int				     m_MsgQueueID[4];	//消息队列号    QString 		     m_dbname;    QString 		     m_dbuser;    QString 		     m_dbpass;    QString			     m_pghost;    int				     m_StationNo;       //站号    unsigned int	     m_SelfPid;			//本进程号    unsigned int	     m_SrvPid;			//后台服务进程号    QString			     m_UniqueCode;		//站点唯一编码    QString			     m_ForwardStr;    unsigned long        m_UniqueId;    QString			     m_ModuleName;	QString	        	 m_ModulePath;    CNodeManage		     m_NodeManage;		//接点管理类    bool			     m_Stop;        int			m_isDebug;                          //0=Release;1=debug    int 			m_OutToConsole;				//输出到控制台或文件(1=文件;2=控制台)    QString		m_DebugFile;				//Debug文件的名称        QString 		m_ErrorFile;        QString			     m_ClassFlag;		//模块类型                             CLocalMutex		     m_SendLock;		//发送数据队列访问锁    CLocalMutex		     m_RecvLock;		//接收队列访问锁    CLocalMutex		     m_DispLock;		//显示队列访问锁    CLocalMutex		     m_OutLock;			//输出缓存访问锁                             CLocalMutex		     m_NoticRecvLock;	//接收队列有数据时的通知锁    CLocalMutex		     m_NoticQueueLock;	//接收队列有数据时的通知锁                             st_monitorsrc	            m_MonitorData;		//报文监视设定(送自己)    QString 		     m_PushFile;    CIniProcesser	     m_Ini;    CYsPtrList<CXMLReader> m_XmlList;        public:    void MakeMessageQueue();    QString GetNewRecordIndex(QString sHeader);    QString GetWorkPath();    QString GetWorkPath(QString ModuleName);    int GetPIDbyModulName(QString ModulName);    bool GetConfigFileInfo(QString FileName);    bool StartSomeDevModule(QString ModulePath, QString ModuleName);    void GetTraceParam(QString Param);    bool OutDataToConsole(int MachineNo, QString MachineName, unsigned char* buffer, long len, int SRFlag=0);        QString GetDataFileString();    bool AnylizeParam(QString moduleName,/*QApplication &a,*/int argc, char ** argv);    void FillMachineNo(QString sMach);    bool isTraceMachine(int MachineNo);        CXMLReader* FindXmlFile(QString szFileName);};#endif

⌨️ 快捷键说明

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