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

📄 system.h

📁 MDF监控源码2
💻 H
📖 第 1 页 / 共 2 页
字号:
#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			//环境监测模块

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


//通讯方式定义

//0-COM|1-UDP|2-TCP
#define COMM_COM		0			//串口通讯方式
#define COMM_UDP		1			//UDP通讯方式
#define COMM_TCP		2			//TCP通讯方式
#define COMM_485		3			//485通讯方式

#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 ;

//*通讯处理包*
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 ;


⌨️ 快捷键说明

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