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

📄 dhnetsdk.h

📁 大华DVR的客户端开发包和Demo,从网上是下载不到的。
💻 H
📖 第 1 页 / 共 5 页
字号:

#ifndef DHNETSDK_H
#define DHNETSDK_H

#ifdef DHNETSDK_EXPORTS
#define CLIENT_API  __declspec(dllexport) 
#else
#define CLIENT_API  __declspec(dllimport)   //VC 用
//#define CLIENT_API    extern "C" //VC 以外的编译用
#endif

#define CALLBACK __stdcall

#define CALL_METHOD  __stdcall  //__cdecl

/************************************************************************
 ** 接口枚举定义
 ***********************************************************************/
//通用云台控制命令
typedef enum _PTZ_ControlType
{
	PTZ_UP_CONTROL = 0,				//上
	PTZ_DOWN_CONTROL,			//下
	PTZ_LEFT_CONTROL,			//左
	PTZ_RIGHT_CONTROL,			//右
	PTZ_ZOOM_ADD_CONTROL,		//变倍+
	PTZ_ZOOM_DEC_CONTROL,		//变倍-
	PTZ_FOCUS_ADD_CONTROL,		//调焦+
	PTZ_FOCUS_DEC_CONTROL,		//调焦-
	PTZ_APERTURE_ADD_CONTROL,	//光圈+
	PTZ_APERTURE_DEC_CONTROL,   //光圈-
    PTZ_POINT_MOVE_CONTROL,     //转至预置点
    PTZ_POINT_SET_CONTROL,      //设置
    PTZ_POINT_DEL_CONTROL,      //删除
    PTZ_POINT_LOOP_CONTROL,     //点间巡航
    PTZ_LAMP_CONTROL            //灯光雨刷
}PTZ_ControlType;

//云台控制扩展命令
typedef enum _EXTPTZ_ControlType{
	EXTPTZ_LEFTTOP = 0X20,		//左上
	EXTPTZ_RIGHTTOP ,			//右上
	EXTPTZ_LEFTDOWN ,			//左下
	EXTPTZ_RIGHTDOWN,			//右下
	EXTPTZ_ADDTOLOOP,			//加入预置点到巡航	巡航线路	预置点值	
	EXTPTZ_DELFROMLOOP,			//删除巡航中预置点	巡航线路	预置点值	
    EXTPTZ_CLOSELOOP,			//清除巡航	巡航线路		
	EXTPTZ_STARTPANCRUISE,		//开始水平旋转			
	EXTPTZ_STOPPANCRUISE,		//停止水平旋转			
	EXTPTZ_SETLEFTBORDER,		//设置左边界			
	EXTPTZ_SETRIGHTBORDER,		//设置右边界			
	EXTPTZ_STARTLINESCAN,		//开始线扫			
    EXTPTZ_CLOSELINESCAN,		//停止线扫			
    EXTPTZ_SETMODESTART,		//设置模式开始	模式线路		
    EXTPTZ_SETMODESTOP,			//设置模式结束	模式线路		
	EXTPTZ_RUNMODE,				//运行模式	模式线路		
	EXTPTZ_STOPMODE,			//停止模式	模式线路		
	EXTPTZ_DELETEMODE,			//清除模式	模式线路		
	EXTPTZ_REVERSECOMM,			//翻转命令			
	EXTPTZ_FASTGOTO,			//快速定位	水平坐标	垂直坐标	变倍
	EXTPTZ_AUXIOPEN,			//x34	辅助开关开	辅助点		
	EXTPTZ_AUXICLOSE,			//0x35	辅助开关关	辅助点
	EXTPTZ_OPENMENU = 0X36,		//打开球机菜单
	EXTPTZ_CLOSEMENU ,			//关闭菜单
	EXTPTZ_MENUOK,				//菜单确定
	EXTPTZ_MENUCANCEL,			//菜单取消
	EXTPTZ_MENUUP,				//菜单上
	EXTPTZ_MENUDOWN,			//菜单下
	EXTPTZ_MENULEFT,			//菜单左
	EXTPTZ_MENURIGHT,			//菜单右
	EXTPTZ_TOTAL,				//最大命令值
}EXTPTZ_ControlType;

//IO控制命令
typedef enum _IOTYPE{
	ALARMINPUT = 1,				//报警输入
	ALARMOUTPUT = 2,			//报警输出
}IOTYPE;


#define _EC(x)						(0x80000000|x)
/*错误类型代号,用于GetLastError函数的返回*/
#define NET_NOERROR 				0				//没有错误
#define NET_ERROR					-1				//未知错误
#define NET_SYSTEM_ERROR			_EC(1)			//Windows系统出错
#define NET_NETWORK_ERROR			_EC(2)			//网络错误,可能是因为网络超时
#define NET_DEV_VER_NOMATCH			_EC(3)			//设备协议不匹配
#define NET_INVALID_HANDLE			_EC(4)			//句柄无效
#define NET_OPEN_CHANNEL_ERROR		_EC(5)			//打开通道失败
#define NET_CLOSE_CHANNEL_ERROR		_EC(6)			//关闭通道失败
#define NET_ILLEGAL_PARAM			_EC(7)			//用户参数不合法
#define NET_SDK_INIT_ERROR			_EC(8)			//SDK初始化出错
#define NET_SDK_UNINIT_ERROR		_EC(9)			//SDK清理出错
#define NET_RENDER_OPEN_ERROR		_EC(10)			//申请render资源出错
#define NET_DEC_OPEN_ERROR			_EC(11)			//打开解码库出错
#define NET_DEC_CLOSE_ERROR			_EC(12)			//关闭解码库出错
#define NET_MULTIPLAY_NOCHANNEL		_EC(13)			//多画面预览中检测到通道数为0
#define NET_TALK_INIT_ERROR			_EC(14)			//录音库初始化失败
#define NET_TALK_NOT_INIT			_EC(15)			//录音库未经初始化
#define	NET_TALK_SENDDATA_ERROR		_EC(16)			//发送音频数据出错
#define NET_REAL_ALREADY_SAVING		_EC(17)			//实时数据已经处于保存状态
#define NET_NOT_SAVING				_EC(18)			//未保存实时数据
#define NET_OPEN_FILE_ERROR			_EC(19)			//打开文件出错
#define NET_PTZ_SET_TIMER_ERROR		_EC(20)			//启动云台控制定时器失败
#define NET_RETURN_DATA_ERROR		_EC(21)			//对返回数据的校验出错
#define NET_INSUFFICIENT_BUFFER		_EC(22)			//没有足够的缓存
#define NET_NOT_SUPPORTED			_EC(23)			//当前SDK未支持该功能
#define NET_NO_RECORD_FOUND			_EC(24)			//查询不到录象
#define NET_NOT_AUTHORIZED			_EC(25)			//无操作权限
#define NET_NOT_NOW					_EC(26)			//暂时无法执行
#define NET_NO_TALK_CHANNEL			_EC(27)			//未发现对讲通道
#define NET_NO_AUDIO				_EC(28)			//未发现音频
#define NET_NO_INIT					_EC(29)			//CLientSDK未经初始化
#define NET_DOWNLOAD_END			_EC(30)			//下载已结束
#define NET_EMPTY_LIST				_EC(31)			//查询结果为空

#define NET_ERROR_GETCFG_SYSATTR	_EC(32)			//获取配置失败位置:系统属性
#define NET_ERROR_GETCFG_SERIAL		_EC(33)			//获取配置失败位置:序列号
#define NET_ERROR_GETCFG_GENERAL	_EC(34)			//获取配置失败位置:常规属性
#define NET_ERROR_GETCFG_DSPCAP		_EC(35)			//获取配置失败位置:DSP能力描述
#define NET_ERROR_GETCFG_NETCFG		_EC(36)			//获取配置失败位置:网络属性
#define NET_ERROR_GETCFG_CHANNAME	_EC(37)			//获取配置失败位置:通道名称
#define NET_ERROR_GETCFG_VIDEO		_EC(38)			//获取配置失败位置:视频属性
#define NET_ERROR_GETCFG_RECORD		_EC(39)			//获取配置失败位置:录象定时配置
#define NET_ERROR_GETCFG_PRONAME	_EC(40)			//获取配置失败位置:解码器协议名称
#define NET_ERROR_GETCFG_FUNCNAME	_EC(41)			//获取配置失败位置:232串口功能名称
#define NET_ERROR_GETCFG_485DECODER	_EC(42)			//获取配置失败位置:解码器属性
#define NET_ERROR_GETCFG_232COM		_EC(43)			//获取配置失败位置:232串口属性
#define NET_ERROR_GETCFG_ALARMIN	_EC(44)			//获取配置失败位置:外部报警输入属性
#define NET_ERROR_GETCFG_ALARMDET	_EC(45)			//获取配置失败位置:图像检测报警属性
#define NET_ERROR_GETCFG_SYSTIME	_EC(46)			//获取配置失败位置:设备时间
#define NET_ERROR_GETCFG_PREVIEW	_EC(47)			//获取配置失败位置:预览参数

#define NET_ERROR_SETCFG_GENERAL	_EC(48)			//设置配置失败位置:常规属性
#define NET_ERROR_SETCFG_NETCFG		_EC(49)			//设置配置失败位置:网络属性
#define NET_ERROR_SETCFG_CHANNAME	_EC(50)			//设置配置失败位置:通道名称
#define NET_ERROR_SETCFG_VIDEO		_EC(51)			//设置配置失败位置:视频属性
#define NET_ERROR_SETCFG_RECORD		_EC(52)			//设置配置失败位置:录象定时配置
#define NET_ERROR_SETCFG_485DECODER	_EC(53)			//设置配置失败位置:解码器属性
#define NET_ERROR_SETCFG_232COM		_EC(54)			//设置配置失败位置:232串口属性
#define NET_ERROR_SETCFG_ALARMIN	_EC(55)			//设置配置失败位置:外部报警输入属性
#define NET_ERROR_SETCFG_ALARMDET	_EC(56)			//设置配置失败位置:图像检测报警属性
#define NET_ERROR_SETCFG_SYSTIME	_EC(57)			//设置配置失败位置:设备时间
#define NET_ERROR_SETCFG_PREVIEW	_EC(58)			//设置配置失败位置:预览参数


#define NET_LOGIN_ERROR_PASSWORD	_EC(100)		//密码不正确
#define NET_LOGIN_ERROR_USER		_EC(101)		//帐户不存在
#define NET_LOGIN_ERROR_TIMEOUT		_EC(102)		//等待登录返回超时
#define NET_LOGIN_ERROR_RELOGGIN	_EC(103)		//帐号已登录
#define NET_LOGIN_ERROR_LOCKED		_EC(104)		//帐号已被锁定
#define NET_LOGIN_ERROR_BLACKLIST	_EC(105)		//帐号已被列为黑名单
#define NET_LOGIN_ERROR_BUSY		_EC(106)		//资源不足,系统忙
#define NET_LOGIN_ERROR_CONNECT		_EC(107)		//连接主机失败"
#define NET_LOGIN_ERROR_NETWORK		_EC(108)		//网络连接失败"

#define NET_RENDER_SOUND_ON_ERROR	_EC(120)		//Render库打开音频出错
#define NET_RENDER_SOUND_OFF_ERROR	_EC(121)		//Render库关闭音频出错
#define NET_RENDER_SET_VOLUME_ERROR	_EC(122)		//Render库控制音量出错
#define NET_RENDER_ADJUST_ERROR		_EC(123)		//Render库设置画面参数出错
#define NET_RENDER_PAUSE_ERROR		_EC(124)		//Render库暂停播放出错
#define NET_RENDER_SNAP_ERROR		_EC(125)		//Render库抓图出错
#define NET_RENDER_STEP_ERROR		_EC(126)		//Render库步进出错
#define NET_RENDER_FRAMERATE_ERROR	_EC(127)		//Render库设置帧率出错

#define NET_CONFIG_DEVBUSY			_EC(999)		//暂时无法设置
#define NET_CONFIG_DATAILLEGAL		_EC(1000)		//配置数据不合法

/************************************************************************
 ** 设备型号(DVR类型)
 ***********************************************************************/
enum NET_DEVICE_TYPE {
	NET_PRODUCT_NONE = 0,
	NET_DVR_NONREALTIME_MACE, /*!< 非实时MACE */
	NET_DVR_NONREALTIME, /*!< 非实时 */
	NET_NVS_MPEG1, /*!< 网络视频服务器 */
	NET_DVR_MPEG1_2, /*!< MPEG1二路录像机 */
	NET_DVR_MPEG1_8, /*!< MPEG1八路录像机 */
	NET_DVR_MPEG4_8, /*!< MPEG4八路录像机 */
	NET_DVR_MPEG4_16, /*!< MPEG4十六路录像机 */
	NET_DVR_MPEG4_SX2, /*!< MPEG4视新十六路录像机 */
	NET_DVR_MEPG4_ST2, /*!< MPEG4视通录像机 */
	NET_DVR_MEPG4_SH2, /*!< MPEG4视豪录像机 */
	NET_DVR_MPEG4_GBE, /*!< MPEG4视通二代增强型录像机 */
	NET_DVR_MPEG4_NVSII, /*!< MPEG4网络视频服务器II代 */
	NET_DVR_STD_NEW, /*!< 新标准配置协议 */
	NET_DVR_DDNS, /*DDNS服务器*/
};


//回调报警信息类型
#define COMM_ALARM			0x1100	//常规报警信息
#define SHELTER_ALARM		0x1101	//视频遮挡报警
#define DISK_FULL_ALARM		0X1102	//硬盘满报警
#define DISK_ERROR_ALARM	0x1103	//硬盘故障报警

/************************************************************************
 ** 常量定义
 ***********************************************************************/
#define SERIALNO_LEN 		48		//设备序列号字符长度
#define MAX_DISKNUM 		32		//最大硬盘个数
#define MAX_LINK 			6		
#define MAX_CHANNUM 		16		//最大通道个数
#define MAX_ALARMIN 		128		//最大报警输入个数
#define MAX_ALARMOUT 		64		//最大报警输出个数

#define MAX_RIGHT_NUM		100		//用户权限个数上限
#define MAX_GROUP_NUM		20		//用户组个数上限
#define MAX_USER_NUM		200		//用户个数上限
#define RIGHT_NAME_LENGTH	32		//权限名长度
#define USER_NAME_LENGTH	8		//用户名长度
#define USER_PSW_LENGTH		8		//用户密码长度
#define MEMO_LENGTH			32		//备注长度

/************************************************************************
 ** 设备信息
 ***********************************************************************/
typedef struct {
	BYTE sSerialNumber[SERIALNO_LEN];	//序列号
	BYTE byAlarmInPortNum;				//DVR报警输入个数
	BYTE byAlarmOutPortNum;				//DVR报警输出个数
	BYTE byDiskNum;						//DVR 硬盘个数
	BYTE byDVRType;						//DVR类型, 见枚举NET_DEVICE_TYPE
	BYTE byChanNum;						//DVR 通道个数
} NET_DEVICEINFO, *LPNET_DEVICEINFO;


/************************************************************************
 ** 普通报警信息
 ***********************************************************************/
typedef struct {
	int channelcount;
	int alarminputcount;
	unsigned char alarm[16];			//外部报警
	unsigned char motiondection[16];	//动态检测
	unsigned char videolost[16];		//视频丢失
} NET_CLIENT_STATE;

/************************************************************************
 ** 查询设备工作状态通道信息:现在设备支持
 ***********************************************************************/
typedef struct {
	BYTE byRecordStatic;		//通道是否在录像,0-不录像,1-手动录像,2-自动录象
	BYTE bySignalStatic;		//连接的信号状态,0-正常,1-信号丢失
	BYTE byHardwareStatic;		//通道硬件状态,0-正常,1-异常,例如DSP死掉
	char reserve;
	DWORD dwBitRate;			//实际码率
	DWORD dwLinkNum;			//客户端连接的个数
	DWORD dwClientIP[MAX_LINK];	//客户端的IP地址
}NET_DEV_CHANNELSTATE,*LPNET_DEV_CHANNELSTATE;


/************************************************************************
 ** 查询设备工作状态硬盘信息:现在设备不支持
 ***********************************************************************/
typedef struct {
	DWORD dwVolume;		//硬盘的容量
	DWORD dwFreeSpace;	//硬盘的剩余空间
	DWORD dwStatus;		//硬盘的状态,0-休眠,1-活动等
}NET_DEV_DISKSTATE,*LPNET_DEV_DISKSTATE;

/************************************************************************
 ** 时间
 ***********************************************************************/
typedef struct {
	DWORD dwYear;		//年
	DWORD dwMonth;		//月
	DWORD dwDay;		//日
	DWORD dwHour;		//时
	DWORD dwMinute;		//分
	DWORD dwSecond;		//秒
} NET_TIME,*LPNET_TIME;


/************************************************************************
 ** 查询设备工作状态
 ***********************************************************************/
typedef struct{
	DWORD dwDeviceStatic; 	//设备的状态,0x00 正常,0x01 CPU占用过高,0x02 硬件错误
	NET_DEV_DISKSTATE  stHardDiskStatic[MAX_DISKNUM]; 
	NET_DEV_CHANNELSTATE stChanStatic[MAX_CHANNUM];//通道的状态
	BYTE  byAlarmInStatic[MAX_ALARMIN]; //报警端口的状态,0-没有报警,1-有报警
	BYTE  byAlarmOutStatic[MAX_ALARMOUT]; //报警输出端口的状态,0-没有输出,1-有报警输出
	DWORD  dwLocalDisplay;//本地显示状态,0-正常,1-不正常
} NET_DEV_WORKSTATE,*LPNET_DEV_WORKSTATE;

/************************************************************************
 ** 录像文件信息
 ***********************************************************************/
typedef struct {
    unsigned int     ch;              //通道号
    char             filename[128];   //文件名
    unsigned int     size;            //文件长度
    NET_TIME         starttime;       //开始时间
    NET_TIME         endtime;         //结束时间
    unsigned int     driveno;         //磁盘号
    unsigned int     startcluster;    //起始簇号

⌨️ 快捷键说明

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