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

📄 dhnetsdk.h

📁 它是一个可以实时交互的嵌入式软件系统
💻 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_RIGHTBORDER ,		//设置右边界			
	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_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)		//配置数据不合法

//回调函数类型
#define COMM_ALARM			0x1100	//报警信息

/************************************************************************
 ** 设备型号(DVR类型)
 ***********************************************************************/
#define DVR_NONREALTIME_MACE	1 /*!< 非实时MACE */
#define DVR_NONREALTIME			2 /*!< 非实时 */
#define NVS_MPEG1				3 /*!< 网络视频服务器 */
#define DVR_MPEG1_2				4 /*!< MPEG1二路录像机 */
#define DVR_MPEG1_8				5 /*!< MPEG1八路录像机 */
#define DVR_8					6 /*!< 一代八路录像机 */
#define DVR_16					7 /*!< 一代十六路录像机 */
#define DVR_SX2					8 /*!< 二代视新十六路录像机 */
#define DVR_ST2					9 /*!< 二代视通录像机 */
#define DVR_SH2					10 /*!< 二代视豪录像机 */
#define DVR_GBE					11 /*!< 二代视通二代增强型录像机 */
#define DVR_STD_NEW				12 /*!< 新标准配置协议 */


/************************************************************************
 ** 常量定义
 ***********************************************************************/
#define SERIALNO_LEN 	48
#define MAX_DISKNUM 	32
#define MAX_LINK 		6
#define MAX_CHANNUM 	16
#define MAX_ALARMIN 	128
#define MAX_ALARMOUT 	64


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


/************************************************************************
 ** 主动上传信息
 ***********************************************************************/
typedef struct {
    int channelcount;
    int alarminputcount;
    unsigned char diskerror[MAX_DISKNUM];
    unsigned char *record;          //size:channelcount
    unsigned char *alarm;           //size:alarminputcount
    unsigned char *motiondection;   //size:channelcount
    unsigned char *videolost;       //size:channelcount
} NET_CLIENT_STATE;


/************************************************************************
 ** 查询设备工作状态通道信息:现在设备支持
 ***********************************************************************/
typedef struct {
	BYTE byRecordStatic;		//通道是否在录像,0-不录像,1-录像
	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;		//硬盘的状态,休眠,活动,不正常等
}NET_DEV_DISKSTATE,*LPNET_DEV_DISKSTATE;


/************************************************************************
 ** 查询设备工作状态
 ***********************************************************************/
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 {
	DWORD dwYear;		//年
	DWORD dwMonth;		//月
	DWORD dwDay;		//日
	DWORD dwHour;		//时
	DWORD dwMinute;		//分
	DWORD dwSecond;		//秒
} NET_TIME,*LPNET_TIME;


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


/************************************************************************
 ** 协议信息
 ***********************************************************************/
typedef struct {
	char            protocolname[12]; //协议名
	unsigned int	baudbase;	      //波特率
	unsigned char	databits; 	      //数据位
	unsigned char	stopbits;	      //停止位
	unsigned char	parity;		      //校验位
	unsigned char   reserve;
} PROTOCOL_INFO, *LPPROTOCOL_INFO;


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

⌨️ 快捷键说明

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