📄 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_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 + -