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

📄 system.h.bak

📁 MDF监控源码2
💻 BAK
字号:
#ifndef _COM_TOOL_H
#define _COM_TOOL_H

#define _DEBUG_STATUS   1
#define SWITCHCOUNT		3
#define SIMULATECOUNT	3
#define CST_SUBCOUNT	72			//直流电源柜支路数

#define ID_VER				"10"	//版本号

#define ID_COM_SCAN			8000	//扫描定时器ID
#define ID_DEBUG_TEST		4001	//测试定时器ID
#define ID_MSG_TIMEOUT		6000	//短信超时定时器id
#define ID_VOICE_TIMEOUT	6001	//电话语音定时器id
#define ID_CONNECT_TIMEOUT	6002	//通话定时器id 

#define ID_UDP1_SCAN		3010
#define ID_UDP2_SCAN		3011

#define MDF_DEFAULT_PORT	9001	//缺省MDF端口
#define WEB_DEFAULT_PORT	9002	//缺省WEB端口

#define TIMER_MSG_RUN		1		//短信定时器位
#define TIMER_VOICE_RUN		2		//语音定时器位
#define TIMER_SCAN_RUN		4		//设备扫描定时器位

#define MSG_LEN				100		//短信字符串长度
#define MSG_TYPE_EQ			0		//监测设备短信
#define MSG_TYPE_WEB		1		//Web服务器短信

#define VOICE_LOOP			1		//循环播放三次
#define CALL_TIME			1		//重复拨电话三次(拨打失败)
#define MSG_TIME			1		//重复发短信三次(发送失败)

#define TIMEOUT_MSG			60000	//短信超时时间 10 秒
#define TIMEOUT_VOICE		90000	//通话拨号超时而且无响应
#define TIMEOUT_CONNECT		300000  //通话超时时间

#define ALARM_TIMEOUT		4000	//告警定时时间超时

#define WM_REFRESH			WM_USER + 1100	//监测中心刷新
#define WM_VOICE_CLOSE		WM_USER + 1200	//语音关闭
#define WM_VOICE			WM_USER + 1000	//语音消息
#define WM_SHELLNOTIFY		WM_USER + 1001	//最小化消息
#define WM_COMMRESTART		WM_USER + 1002	//服务器重启
#define WM_GSMMSG			WM_USER + 1003	//短消息发送
#define WM_SERVICESTATUS	WM_USER + 1004	//服务设备状态改变


#define WM_WRITELOG			WM_USER + 2000	//日志记录
#define WM_SHOWLOG			WM_USER + 2001	//记录显示
#define WM_SHOWERROR		WM_USER + 2002	//错误显示


#define WM_STATUS_CHANGE	WM_USER + 3001		// 设备监测端口状态改换消息. ,即告警销警处理消息
#define WM_DEVICE_ALARM		WM_USER + 3002		// 设备告警消息. 
#define WM_DEVICE_DATA		WM_USER + 3003		// 接收到设备发送回来的数据. 
#define WM_DEVICEONLINE_STATUS	WM_USER + 3004	// 设备在线离线状态. 


/*********************************************************/
/*						设备类别码定义		 			*/
#define EQU_CODE_MDF					0x81			//MDF智能告警器
#define EQU_CODE_CABLE					0x82			//电缆监测设备
#define EQU_CODE_INDUCTCIRCLE			0x83			//工频感应环
#define EQU_CODE_ACPOWERCABINET			0x2c			//交流电源分配柜
#define EQU_CODE_DCPOWERCABINET			0x25			//直流电源分配柜
#define EQU_CODE_ACPOWERBOX				0x2d			//交流电源分配箱
#define EQU_CODE_DCPOWERBOX				0x2e			//直流电源分配箱
#define EQU_CODE_AMBIENT				0x8a			//环境监测模块

/*********************************************************/


#define CONFIRM_TIME	3		//出错数据重复发送次数

#define PORT_NORMAL		0		//端口正常状态
#define PORT_WARNING	1		//端口警告状态

#define CMD_HOST		0		//本机发出的命令
#define CMD_WEB			1		//WEB服务器发出的命令	

#define	CRDR_NORMAL		0		//有正常响应返回
#define CRDR_TIMEOUT	1		//超时无返回
#define CRDR_EXCEPT		2		//异常响应
#define CRDR_ERROR		3		//未知设备非法数据

#define CRDT_HOST		0		//监测中心
#define CRDT_MODULE		1		//监测模块
#define CRDT_WEB		2		//Web服务器

#define PTC_MDF			0x81	//MDF监测设备协议
#define PTC_WEB			0x82	//Web监测服务器协议

#define PORT_SWITCH		0		//开关量
#define PORT_SIMULATE	1		//模拟量

#define COMM_SCANTIME	4500	//设备轮询时间5秒
//#define COMM_TIMEOUT	4000	//通讯超时时间4秒

//#define COMM_TYPE_ALL	0		//所有通讯方式(TCP、串口)
#define COMM_TYPE_SC	1		//串口通讯方式
#define COMM_TYPE_TCP	2		//TCP通讯方式

#define COMM_STATE_CUT	0		//通讯未连接
#define COMM_STATE_IDLE 1		//通讯空闲
#define COMM_STATE_RUN	2		//通讯进行中

#define TYPE_SWITCH		0		//开关类型
#define TYPE_SIMULATE	1		//模拟量类型

#define VOICE_NUM		0		//语音号码
#define VOICE_FILE		1		//语音文件

#define FILE_HEAD		"$2*n"	//设置文件头4字节
#define	FILE_BLOCK		'|'		//分隔符要唯一
#define FILE_DBUI		0x38	//数据库登录用户ID
#define FILE_DBPW		0x4C	//数据库登录用户密码
#define FILE_SWEBIP		0x54	//webIP地址名
#define FILE_SDBIP		0x2E	//数据库IP地址名
#define FILE_NSCP		0x2D	//串口端口
#define FILE_NGSMP		0x51	//GSM端口
#define FILE_NTCPP		0x4A	//TCP端口
#define FILE_NWEBP		0x67	//WEB端口
#define	FILE_SMSG		0x23	//短信中心
#define FILE_BMSG		0x3B	//启用短信功能
#define FILE_BVOICE		0x36	//启用语音功能
#define FILE_BWEB		0x41	//启用Web服务器
#define FILE_MASK_BM	0x33	//短信功能
#define FILE_MASK_BV	0x33	//语音功能
#define FILE_MASK_BW	0x33	//Web服务功能

#define GSM_MSG			0		//短信告警
#define GSM_VOICE		1		//语音告警

#define ALARM_LIMIT		2		//告警次数累加

#define SOCK_CU			0		//SOCKET采集单元类型
#define SOCK_WEB		1		//SOCKET服务器WEB类型

#define COMM_COM		0		//串口通讯方式
#define COMM_UDP		1		//UDP通讯方式
#define COMM_TCP		2		//TCP通讯方式



#define SERVER_START	0		//启动服务器
#define SERVER_SCAN		1		//扫描监测设备
#define SERVER_REFRESH	2		//刷新数据库
#define SERVER_STOP		3		//停止服务器

#define EQ_MAX			256		//支持设备的最大
#define PORT_MAX		128		//设备对应的最大端口 

#define WM_ERRORMESSAGE		WM_USER + 200	//错误消息
#define WM_LOGMESSAGE		WM_USER + 201	//日志消息




//*通讯协议包*
//##ModelId=4652869D0186
typedef struct {
	UCHAR	SOI ;			//起始标志
	UCHAR	VER ;			//通讯版本
	UCHAR	ADR ;			//设备地址
	UCHAR	CID1 ;			//设备类型
	UCHAR	CID2 ;			//设备命令
	UCHAR	LENGTH[2] ;		//内容长度
	UCHAR	INFO[1024] ;	//数据内容
	UCHAR	CHKSUM[2] ;		//校验码
	UCHAR	EOI ;			//结束标志
	DWORD	DataLen ;		//数据长度
} sCommPack ;

//*命令结构*
//##ModelId=4652869D0196
typedef struct { 
	UCHAR	ucCmd ;			//执行命令
	CString strPack ;		//发送命令包
	CString strTime ;		//发送时间
	int		nType ;			//命令类型 0 -- 监测中心 ; 1 -- Web服务器
}sCmd ;

//*告警屏蔽*
//##ModelId=4652869D01B5
typedef struct{
	int nTime ;
	double dUpper ;
	double dLower ;
}sAShield ;	

//*监测模块设备端口表*
//##ModelId=4652869D01B7
typedef struct {
	int nPID ;				//端口ID
	int SVMID ;				//监测模块ID
	CString strPortSort ;	//端口序号
	CString strSpotSort ;	//被监测点序号
	CString strSpotNote ;	//被监测点描述
	CString strSVDType ;	//被监测设备类型
	CString strSVDName ;	//被监测设备名称
	CString strSVDCity ;	//被监测设备所在城市
	CString strSVDArea ;	//被监测设备所在地区
	CString strSVDAddr ;	//被监测设备所在地址
	CString strSVDPlace;	//被监测设备的具体位置(机房名称/装备地点)
	CString strAlarmL1 ;	//一级告警
	CString strAlarmL2 ;	//二级告警
	CString strAlarmL3 ;	//三级告警
	int nSVDSpotNum ;		//被监测设备的被监测点数
	int nSVDContainID ;		//所在地ID
	int nSVDType ;			//被监测设备类型
	int nSpotType ;			//被监测点类型 0 开关量 ; 1 模拟量
	int nSVDID ;			//被监测设备ID
	int nType ;				//0 开关量 ; 1 模拟量
	double dValue ;			//双精度报警值
	int nState ;			//0 端口正常 1 端口报警
	int nLevel ;			//告警级别 0 为无 ,一级以上为1~n
	int nAlimitNum ;		//告警门限
	int nACount ;			//告警次数
	int nAShieldNum ;		//告警屏蔽数
	int nANum ;				//告警累积
	LPVOID	pShield ;		//告警屏蔽指针
	BOOL bIsUse ;			//是否使用标志
}sSVMPort ;

//*测模块设备结构*
//##ModelId=4652869D01D4
typedef struct {
	int			nNo ;				//设备建立时的序号
	int			nID ;				//设备ID号
	int			nTID ;				//设备类型ID
	UINT		unEQState	;		//0 正常 , 1 告警状态 2 异常设备(未能正确初始化)
	UINT		unCommState ;		//0 未连接 , 1 连接后待机 , 2 设备通讯中 ,3 设备故障
	int			nModel ;			//设备通讯模式1 串口 2 TCP
	int			nFault ;			//出错数 错误数超过5次认为通讯故障(暂定)
	int			nTimeOut ;			//超时数 超时数超过5次认为通讯断开(暂定)
	CString		strName ;			//设备的名称
	CString		strType ;			//设备的类型
	CString		strIDAddr ;			//协议包中的ADR项
	CString		strNote	  ;			//设备类型描述
	CString		strCommAddr ;		//用于电话号码、IP地址等表示。
	CString		strScanPack ;		//轮询包暂存
	sSVMPort	sPort[PORT_MAX] ;	//最大检测端口
	int			nPortNum ;			//端口总数

	LPVOID		pCmdList ;			//命令队列链表指针
	//LPVOID		pSock ;				//设备用于TCP通讯的Socket指针
	//HANDLE		hEvent ;			//设备操作状态信号旗
	//HANDLE		hCmdEvent ;			//命令队列信号旗
	BOOL		bResponse ;			//是否有响应包
	BOOL		bIsUse ;			//使用标志位
	//BOOL		bIsTimeOut ;		//是否已设置超时定时

}sCommEQ ;

//*通讯处理包*
//##ModelId=4652869D01D6
typedef struct {
	UINT		unID ;			//线程队列标示
	CString		strSource ;		//数据来源地址
	CString		strBuf ;		//数据包记录
	UCHAR		ucBuf[1024] ;	//数据缓存
	int			nRLen ;			//数据长度
	LPVOID		pSock ;			//socket 通讯指针(现仅用于Web通讯回复)
	sCommPack   InPack ;		//通讯数据包
	sCommEQ*	pEQ ;			//通讯设备指针
	UINT		unState ;		//当前状态  0 未开始处理 1 正在处理 2 处理结束 3 空闲线程
	int			nType ;			//通讯包类型 0--设备,1--Web
	//CWinThread*	pThread ;		//处理线程句柄
}sCommItem ;

//*手机电话通讯*
//##ModelId=4652869D01F4
typedef struct {
	int nID ;					//用户ID
	CString strName ;			//用户真实姓名
	CString strPhone ;			//用户电话
	CString strMobile ;			//用户手机
	BOOL bFMsg ;				//短信标志
	BOOL bFPhone ;				//电话标志
	BOOL bFMobile ;				//手机标志
}sPerson ;

//*Socket通讯*
//##ModelId=4652869D0203
typedef struct {
	LPVOID pSock ;
	CString strIP ;
	BOOL bIsConnect ;
}sSocket ;

//*本机IP地址*
//##ModelId=4652869D0213
typedef struct {
	CString strIp ;
	BYTE f0 ;
	BYTE f1 ;
	BYTE f2 ;
	BYTE f3 ;
}sHostIp ;

int BytesToString(const UCHAR* pSrc, char* pDst, int nSrcLength) ;
int StringToBytes(const char* pSrc, UCHAR* pDst, int nSrcLength) ;
int String2Hex(CString& str, BYTE *senddata,int iLen);
int MsgCopy(const char* pSrc, char* pDst,int nSrcLength) ;
UINT ServerThd(LPVOID lp) ;
UINT WriteDBThd(LPVOID lp) ;



//存储系统基本配置信息
//##ModelId=4652869D0222
typedef struct {
	CString UserID;
	CString UserPassword;
	CString DBIP;				//数据库机器名
	CString	DBNam;				//数据库名称
	CString WebIP;				//WEB服务器名
	CString	Phone;				//短信手机号码
	CString	CallTel;			//告警后的语音呼叫号码
	int		WebPort;			//WEB服务器的接收端口
	int		ServerPort;			//接收WEB指令的端口
	int		DevicePort;			//设备监测端口
	int		GSMPort;			//GSM端口
	CString	SMSCenter;			//端消息中心号码
	BOOL	SMSOpen;			//起用短信功能
	BOOL	VoiceOpen;			//起用语音功能
	UINT	MonitorStatus;		//当前监测服务状态		
	int 	Interval;			//轮询时间间隔(毫秒)
	int 	SaveLog;			//是否保存运行日志
	int 	Autostart;			//自动起动监测
	int 	PlaySound;			//播放告警声音
	CString AlarmRange;			//告警范围
} CBaseInfo;



//*通讯处理包*
//##ModelId=4652869D0233
typedef struct {
	char		ucBuf[1024];		//数据缓存
	int			nRLen;				//数据长度
	UINT		addrType;			//0-COM|1-UDP|2-TCP
	sCommPack   InPack ;			//通讯数据包
	CString		address;			//通讯设备源地址
	UINT		iPort;				//使用的端口
	UINT		unState;			//当前状态  0-未开始处理 1-处理结束 3-异常数据包
	CTime		time;				//接收时间或发送时间
	int			nFromType ;			//通讯包来源类型 0--设备,1--Web
	int			iCmd;				//发送的数据命令
} CInfoFrame ;


//*基本设备通信信息,用在发送线程中记录设备通信信息*
//##ModelId=4652869D0243
typedef struct {
	int			nID;				//设备ID
	int			nModel;				//设备通讯模式	0-UDP;1-串口;2-TCP;3--RS485
	int			iPort;				//IP协议的端口号或串口号
	int			iReceive;			//接收数
	int			iSendCount;			//发送数,当一条发送命令超过3次时,认为不在线
	int			iCmd;				//发送命令字
	CString		sIP;				//协议包中的目的IP或串口
	CString		strType;			//设备类型码
	CString		strIDAddr;			//协议包中的ADR项
	CString		strSend;			//发送的数据资料
	CTime		tmSend;				//发送时间
	CTime		tmReceive;			//接收时间
	int			iState;				//是否在线	0-不在线;	1-在线
	int			isDisable;			//是否在线	0-正常监测;	1-禁止
	
}sUnit;


//*Socket通讯*

//typedef struct {
//	LPVOID pSock ;
//	SOCKADDR_IN addrr ;
//	BOOL bIsConnect  ;
//}CSocketInfo ;//*本机IP地址*
//

//##ModelId=4652869D0252
typedef struct {
	int			SVMPID;				//端口序列ID
	int			SVMPSort;			//监测设备端口序号
	int			SVMID;				//设备ID
	CString		SVMTrueName;		//设备名称
	CString		SVMTNUM;			//设备类型号
	CString		SourceAddr;			//设备通信原地址	IP地址或串口地址
	CString		CodeAddr;			//设备地址编号
	char		AlarmState;			//当前状态			0-未告警;1-告警;
	double		value;				//当前值
	CTime		tmStartTime;		//起始时间
	CTime		tmUpdateTime;		//起始时间
	int			AlarmLevel;			//告警级别
	BOOL		onLine;				//在线状态			0-不在线;1-在线;
	CString		strComment;			//说明

}CEquipmentPort;		//监测设备端口状态


//直流电源柜数据结构
//##ModelId=4652869D0271
typedef struct {
	unsigned int m_Addr;
	unsigned int m_AddrType;
	int m_subAlarm;
	int m_Alarm;
	long  m_majorPower;				//主种电压
	long  m_minorPower;				//备路电压
	long  m_majorCarrent;			//主种电流
	long  m_minorCarrent;			//备路电流
	int   m_sub[CST_SUBCOUNT];
	CTime  m_time;	
} tyPowerDC;

//直流电源柜数据结构
//##ModelId=4652869D0280
typedef struct {
	unsigned int m_Addr;
	unsigned int m_AddType;
	int m_arrCable[12][2];
	int m_arrAlarm[4];
	CTime  m_time;	
} tyCable;




#endif

⌨️ 快捷键说明

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