📄 publicclass.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 + -