www.pudn.com > ITSever.rar > DVRClientDef_0.h


/************************************************************************* 
		 (Copyright (c) 2005-2007 海康威视公司研发中心) 
 
** 文件名	:	DVRClientDef_0.h 
** 创建人	:	闫春 
** 修改记录	: 
 
*************************************************************************/ 
 
 
#ifndef __DVRCLIENTDEF0_H__ 
#define __DVRCLIENTDEF0_H__ 
 
#ifndef byte 
#define byte char 
#endif 
 
#ifndef DWORD 
#define DWORD unsigned int 
#endif 
 
#ifndef BOOL 
#define BOOL bool 
#endif 
 
#define	DEF_STRLENGTH_64			64 
#define	DEF_STRLENGTH_128			128 
#define	DEF_STRLENGTH_256			256 
#define	DEF_STRLENGTH_512			512 
#define	DEF_STRLENGTH_1024			1024 
 
//语言种类定义 
#define	DEF_LANGUAGE_DEFAULT		0x00 
#define	DEF_LANGUAGE_CHINESE		0x01 
#define	DEF_LANGUAGE_ENGLISH		0x02 
#define	DEF_LANGUAGE_TAIWAN			0x03 
#define	DEF_LANGUAGE_GERMANY		0x04 
#define	DEF_LANGUAGE_JAPANESE		0x05 
 
//回调函数类型 
#define	DEF_CALLBACK_REALTIMEDATA	0x01		//实时流回调 
#define	DEF_CALLBACK_ALARMINFO		0x02		//报警回调 
#define	DEF_CALLBACK_HEARTBEAT		0x03		//心跳回调 
#define	DEF_CALLBACK_SERIALCOM		0x04		//透明通道回调 
#define DEF_CALLBACK_ALARMLISTEN	0x05		//侦听回调 
 
//窗口使用类型 
enum DLG_USE_TYPE 
{ 
	DISPLYURL	=	0,		//显示 
	CREATEURL	=	1,		//创建 
	MODIFYURL	=	2		//修改 
}; 
 
//数据块类型 
enum DVR_BLOCK_TYPE 
{ 
	STREAMHEAD	=	0,		//流头 
	STREAMDATA	=	1		//数据 
}; 
 
//通明通道类型 
enum DVR_SERIALPORT_TYPE 
{ 
	RS232	=	0,			//rs232 
	RS485	=	1			//rs485 
}; 
 
//插件基本信息 
typedef struct tagPluginInfo{ 
	char	sname[DEF_STRLENGTH_64]; 
	char	sversion[DEF_STRLENGTH_64]; 
	char	sremark[DEF_STRLENGTH_128]; 
}SPLUGININFO,*PSPLUGININFO; 
 
//设备基本信息 
typedef struct tagDeviceInfo{ 
	char	sdevicetype[DEF_STRLENGTH_64];		//设备型号 
	char	ssoftversion[DEF_STRLENGTH_64];		//软件版本 
	char	smanufactuer[DEF_STRLENGTH_64];		//生产厂家 
	char	serialnumber[DEF_STRLENGTH_64];		//设备序列号 
 
	byte	bchannelnum;						//主通道数量 
	byte	bsubchannum;						//每主通道拥有的个子通道数量 
	byte	bdisknumber;						//磁盘数量 
	byte	bioinputnum;						//IO输入数量 
	byte	biooutputnum;						//IO输出数量 
 
	byte	brs232portnum;						// 
	byte	brs485portnum;						// 
 
	DWORD	dwcapability1;						//能力字段1(暂不使用) 
	DWORD	dwcapability2;						//能力字段2(暂不使用) 
	DWORD	dwcapability3;						//能力字段3(暂不使用) 
	DWORD	dwcapability4;						//能力字段4(暂不使用) 
 
	DWORD	dwreserve1;							//预留字段1(暂不使用) 
	DWORD	dwreserve2;							//预留字段2(暂不使用) 
	DWORD	dwreserve3;							//预留字段3(暂不使用) 
	DWORD	dwreserve4;							//预留字段4(暂不使用) 
 
}SDEVICEINFO, *PSDEVICEINFO; 
 
//通道信息结构 
#define	MAX_CHANNELS	128						//最大通道数量 
#define	MAX_CHNANAME	64						//最大通道名称长度 
typedef struct{ 
	char	sname[MAX_CHNANAME];				//通道名称 
	int		ireserved1;							//保留字段(暂不使用) 
	int		ireserved2;							//保留字段(暂不使用) 
}SCHANNODE,*PSCHANNODE; 
typedef struct{ 
	unsigned int uchannels;						//通道数量 
	SCHANNODE	schannode[MAX_CHANNELS];		//通道信息 
}SCHANNELINFO,*PSCHANNELINFO; 
 
//云台信息结构 
#define	MAX_PRESETCOMMANDS	128					//最大预置命令数量 
#define	MAX_PCOMNAMELENGTH	64					//最大命令名称长度 
typedef struct{ 
	byte	btype;								//预置命令类型(0-预置位/1-预置轨迹) 
	char	sname[MAX_PCOMNAMELENGTH];			//预置命令名称 
	int		icommandid;							//预置命令序号 
	int		ireserved1;							//保留字段 
	int		ireserved2;							//保留字段 
}SPTZNODE,*PSPTZNODE; 
typedef struct{ 
	unsigned int upreset;						//预置命令数量 
	SPTZNODE	sptznode[MAX_PRESETCOMMANDS];	//预置命令名称 
}SPTZINFO,*PSPTZINFO; 
 
//状态组结构 
typedef struct{ 
	unsigned int unumbers;		//有效状态数量 
	BYTE bstate[16];			//状态数组 
 
	BOOL getstate(unsigned int uindex) 
	{ 
		if(uindex>=8*16) return FALSE; 
 
		int index,iresidue; 
		index=(int)(uindex/8); 
		iresidue = uindex-(index*8); 
		 
		return (bstate[index]&(0x01<0?TRUE:FALSE; 
	} 
 
	BOOL setstate(unsigned int uindex, BOOL bvalue) 
	{ 
		if(uindex>=8*16) return FALSE; 
 
		int index,iresidue; 
		index=(int)(uindex/8); 
		iresidue = uindex-(index*8); 
 
		if(bvalue) 
		{ 
			bstate[index] |= (0x01<