📄 dhnetsdk.h
字号:
#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 + -