Files
monibuca/plugin/hiksdk/include/HCNetSDK.h
2025-09-09 20:12:19 +08:00

1354 lines
70 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _HC_NET_SDK_H_
#define _HC_NET_SDK_H_
#ifndef _WINDOWS_
#if (defined(_WIN32) || defined(_WIN64))
#include <winsock2.h>
#include <windows.h>
#endif
#endif
#ifndef __PLAYRECT_defined
#define __PLAYRECT_defined
typedef struct __PLAYRECT
{
int x;
int y;
int uWidth;
int uHeight;
}PLAYRECT;
#endif
#if (defined(_WIN32)) //windows
typedef unsigned __int64 UINT64;
typedef signed __int64 INT64;
#elif defined(__linux__) || defined(__APPLE__) //linux
#define BOOL int
#include <stdint.h>
typedef uint32_t DWORD;
typedef uint16_t WORD;
typedef uint16_t SHORT;
typedef uint16_t USHORT;
typedef int32_t LONG;
typedef uint8_t BYTE;
typedef uint32_t UINT;
typedef void* LPVOID;
typedef void* HANDLE;
typedef uint32_t * LPDWORD;
typedef uint64_t UINT64;
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#define __stdcall
#define CALLBACK
#define NET_DVR_API extern "C"
typedef unsigned int COLORKEY;
typedef unsigned int COLORREF;
#ifndef __HWND_defined
#define __HWND_defined
#if defined(__linux__)
typedef unsigned int HWND;
#else
typedef void* HWND;
#endif
#endif
#ifndef __HDC_defined
#define __HDC_defined
#if defined(__linux__)
typedef struct __DC
{
void* surface; //SDL Surface
HWND hWnd; //HDC window handle
}DC;
typedef DC* HDC;
#else
typedef void* HDC;
#endif
#endif
typedef struct tagInitInfo
{
int uWidth;
int uHeight;
}INITINFO;
#endif
#define SERIALNO_LEN 48 //序列号长度
#define NET_DVR_DEV_ADDRESS_MAX_LEN 129
#define NET_DVR_LOGIN_USERNAME_MAX_LEN 64
#define NET_DVR_LOGIN_PASSWD_MAX_LEN 64
#define LIGHT_PWRON 2 /* 接通灯光电源 */
#define WIPER_PWRON 3 /* 接通雨刷开关 */
#define FAN_PWRON 4 /* 接通风扇开关 */
#define HEATER_PWRON 5 /* 接通加热器开关 */
#define AUX_PWRON1 6 /* 接通辅助设备开关 */
#define AUX_PWRON2 7 /* 接通辅助设备开关 */
#define SET_PRESET 8 /* 设置预置点 */
#define CLE_PRESET 9 /* 清除预置点 */
#define ZOOM_IN 11 /* 焦距以速度SS变大(倍率变大) */
#define ZOOM_OUT 12 /* 焦距以速度SS变小(倍率变小) */
#define FOCUS_NEAR 13 /* 焦点以速度SS前调 */
#define FOCUS_FAR 14 /* 焦点以速度SS后调 */
#define IRIS_OPEN 15 /* 光圈以速度SS扩大 */
#define IRIS_CLOSE 16 /* 光圈以速度SS缩小 */
#define TILT_UP 21 /* 云台以SS的速度上仰 */
#define TILT_DOWN 22 /* 云台以SS的速度下俯 */
#define PAN_LEFT 23 /* 云台以SS的速度左转 */
#define PAN_RIGHT 24 /* 云台以SS的速度右转 */
#define UP_LEFT 25 /* 云台以SS的速度上仰和左转 */
#define UP_RIGHT 26 /* 云台以SS的速度上仰和右转 */
#define DOWN_LEFT 27 /* 云台以SS的速度下俯和左转 */
#define DOWN_RIGHT 28 /* 云台以SS的速度下俯和右转 */
#define PAN_AUTO 29 /* 云台以SS的速度左右自动扫描 */
#define FILL_PRE_SEQ 30 /* 将预置点加入巡航序列 */
#define SET_SEQ_DWELL 31 /* 设置巡航点停顿时间 */
#define SET_SEQ_SPEED 32 /* 设置巡航速度 */
#define CLE_PRE_SEQ 33 /* 将预置点从巡航序列中删除 */
#define STA_MEM_CRUISE 34 /* 开始记录轨迹 */
#define STO_MEM_CRUISE 35 /* 停止记录轨迹 */
#define RUN_CRUISE 36 /* 开始轨迹 */
#define RUN_SEQ 37 /* 开始巡航 */
#define STOP_SEQ 38 /* 停止巡航 */
#define GOTO_PRESET 39 /* 快球转到预置点 */
#define DEL_SEQ 43 /* 删除巡航路径 */
#define STOP_CRUISE 44 /* 停止轨迹 */
#define DELETE_CRUISE 45 /* 删除单条轨迹 */
#define DELETE_ALL_CRUISE 46/* 删除所有轨迹 */
#define PAN_CIRCLE 50 /* 云台以SS的速度自动圆周扫描 */
#define DRAG_PTZ 51 /* 拖动PTZ */
#define LINEAR_SCAN 52 /* 区域扫描 */ //2014-03-15
#define CLE_ALL_PRESET 53 /* 预置点全部清除 */
#define CLE_ALL_SEQ 54 /* 巡航全部清除 */
#define CLE_ALL_CRUISE 55 /* 轨迹全部清除 */
#define POPUP_MENU 56 /* 显示操作菜单 */
#define TILT_DOWN_ZOOM_IN 58 /* 云台以SS的速度下俯&&焦距以速度SS变大(倍率变大) */
#define TILT_DOWN_ZOOM_OUT 59 /* 云台以SS的速度下俯&&焦距以速度SS变小(倍率变小) */
#define PAN_LEFT_ZOOM_IN 60 /* 云台以SS的速度左转&&焦距以速度SS变大(倍率变大)*/
#define PAN_LEFT_ZOOM_OUT 61 /* 云台以SS的速度左转&&焦距以速度SS变小(倍率变小)*/
#define PAN_RIGHT_ZOOM_IN 62 /* 云台以SS的速度右转&&焦距以速度SS变大(倍率变大) */
#define PAN_RIGHT_ZOOM_OUT 63 /* 云台以SS的速度右转&&焦距以速度SS变小(倍率变小) */
#define UP_LEFT_ZOOM_IN 64 /* 云台以SS的速度上仰和左转&&焦距以速度SS变大(倍率变大)*/
#define UP_LEFT_ZOOM_OUT 65 /* 云台以SS的速度上仰和左转&&焦距以速度SS变小(倍率变小)*/
#define UP_RIGHT_ZOOM_IN 66 /* 云台以SS的速度上仰和右转&&焦距以速度SS变大(倍率变大)*/
#define UP_RIGHT_ZOOM_OUT 67 /* 云台以SS的速度上仰和右转&&焦距以速度SS变小(倍率变小)*/
#define DOWN_LEFT_ZOOM_IN 68 /* 云台以SS的速度下俯和左转&&焦距以速度SS变大(倍率变大) */
#define DOWN_LEFT_ZOOM_OUT 69 /* 云台以SS的速度下俯和左转&&焦距以速度SS变小(倍率变小) */
#define DOWN_RIGHT_ZOOM_IN 70 /* 云台以SS的速度下俯和右转&&焦距以速度SS变大(倍率变大) */
#define DOWN_RIGHT_ZOOM_OUT 71 /* 云台以SS的速度下俯和右转&&焦距以速度SS变小(倍率变小) */
#define TILT_UP_ZOOM_IN 72 /* 云台以SS的速度上仰&&焦距以速度SS变大(倍率变大) */
#define TILT_UP_ZOOM_OUT 73
//宏定义 修正后
#define MAX_NAMELEN 16 //DVR本地登陆名
#define MAX_RIGHT 32 //设备支持的权限1-12表示本地权限13-32表示远程权限
#define NAME_LEN 32 //用户名长度
#define MIN_PASSWD_LEN 8 //最小密码长度
#define PASSWD_LEN 16 //密码长度
#define STREAM_PASSWD_LEN 12 //码流加密密钥最大长度
#define MAX_PASSWD_LEN_EX 64 //密码长度64位
#define GUID_LEN 16 //GUID长度
#define DEV_TYPE_NAME_LEN 24 //设备类型名称长度
#define SERIALNO_LEN 48 //序列号长度
#define MACADDR_LEN 6 //mac地址长度
#define MAC_ADDRESS_NUM 48 //Mac地址长度
#define MAX_SENCE_NUM 16 //场景数
#define RULE_REGION_MAX 128 //最大区域
#define MAX_ETHERNET 2 //设备可配以太网络
#define MAX_NETWORK_CARD 4 //设备可配最大网卡数目
#define MAX_NETWORK_CARD_EX 12 //设备可配最大网卡数目扩展
#define PATHNAME_LEN 128 //路径长度
#define MAX_PRESET_V13 16 //预置点
#define MAX_TEST_COMMAND_NUM 32 //产线测试保留字段长度
#define MAX_NUMBER_LEN 32 //号码最大长度
#define MAX_NAME_LEN 128 //设备名称最大长度
#define MAX_INDEX_LED 8 //LED索引最大值 2013-11-19
#define MAX_CUSTOM_DIR 64 //自定义目录最大长度
#define URL_LEN_V40 256 //最大URL长度
#define CLOUD_NAME_LEN 48 //云存储服务器用户名长度
#define CLOUD_PASSWD_LEN 48 //云存储服务器密码长度
#define MAX_SENSORNAME_LEN 64 //传感器名称长度
#define MAX_SENSORCHAN_LEN 32 //传感器通道长度
#define MAX_DESCRIPTION_LEN 32 //传感器描述长度
#define MAX_DEVNAME_LEN_EX 64 //设备名称长度扩展
#define NET_SDK_MAX_FILE_PATH 256 //文件路径长度
#define MAX_TMEVOICE_LEN 64 //TME语音播报内容长度
#define ISO_8601_LEN 32 //ISO_8601时间长度
#define MODULE_INFO_LEN 32 //模块信息长度
#define VERSION_INFO_LEN 32 //版本信息长度
#define MAX_NUM_INPUT_BOARD 512 //输入板最大个数
#define MAX_SHIPSDETE_REGION_NUM 8 // 船只检测区域列表最大数目
#define MAX_RES_NUM_ONE_VS_INPUT_CHAN 8 //一个虚拟屏输入通道支持的分辨率的最大数量
#define MAX_VS_INPUT_CHAN_NUM 16 //虚拟屏输入通道最大数量
#define NET_SDK_MAX_FDID_LEN 256//人脸库ID最大长度
#define NET_SDK_MAX_PICID_LEN 256 //人脸ID最大长度
#define NET_SDK_FDPIC_CUSTOM_INFO_LEN 96 //人脸库图片自定义信息长度
#define NET_DVR_MAX_FACE_ANALYSIS_NUM 32 //最大支持单张图片识别出的人脸区域个数
#define NET_DVR_MAX_FACE_SEARCH_NUM 5 //最大支持搜索人脸区域个数
#define NET_SDK_SECRETKEY_LEN 128 //配置文件密钥长度
#define NET_SDK_CUSTOM_LEN 512 //自定义信息最大长度
#define NET_SDK_CHECK_CODE_LEN 128//校验码长度
#define RELATIVE_CHANNEL_LEN 2//报警关联的通道号的数量
#define NET_SDK_MAX_CALLEDTARGET_NAME 32 //呗呼叫目标的用户名
#define NET_SDK_MAX_HBDID_LEN 256 /*256 人体库ID最大长度*/
//小间距LED控制器
#define MAX_LEN_TEXT_CONTENT 128 //字符内容长度
#define MAX_NUM_INPUT_SOURCE_TEXT 32 //信号源可叠加的文本数量
#define MAX_NUM_OUTPUT_CHANNEL 512 //LED区域包含的输出口个数
//子窗口解码OSD
#define MAX_LEN_OSD_CONTENT 256 //OSD信息最大长度
#define MAX_NUM_OSD_ONE_SUBWND 8 //单个子窗口支持的最大OSD数量
#define MAX_NUM_SPLIT_WND 64 //单个窗口支持的最大分屏窗口数量(即子窗口数量)
#define MAX_NUM_OSD 8
//2013-11-19
#define MAX_DEVNAME_LEN 32 //设备名称最大长度
#define MAX_LED_INFO 256 //屏幕字体显示信息最大长度
#define MAX_TIME_LEN 32 //时间最大长度
#define MAX_CARD_LEN 24 //卡号最大长度
#define MAX_OPERATORNAME_LEN 32 //操作人员名称最大长度
#define THERMOMETRY_ALARMRULE_NUM 40 //热成像报警规则数
#define MAX_THERMOMETRY_REGION_NUM 40 //热度图检测区域最大支持数
#define MAX_THERMOMETRY_DIFFCOMPARISON_NUM 40 //热成像温差报警规则数
#define MAX_SHIPS_NUM 20 //船只检测最大船只数
#define MAX_SHIPIMAGE_NUM 6 //船只最大抓图数
#define KEY_WORD_NUM 3 //关键字个数
#define KEY_WORD_LEN 128 //关键字长度
//异步登录回调状态宏定义
#define ASYN_LOGIN_SUCC 1 //异步登录成功
#define ASYN_LOGIN_FAILED 0 //异步登录失败
#define NET_SDK_MAX_VERIFICATION_CODE_LEN 32 //萤石云验证码长度
#define NET_SDK_MAX_OPERATE_CODE_LEN 64 //萤石云操作码长度
#define MAX_TIMESEGMENT_V30 8 //9000设备最大时间段数
#define MAX_TIMESEGMENT 4 //8000设备最大时间段数
#define MAX_ICR_NUM 8 //抓拍机红外滤光片预置点数2013-07-09
#define MAX_VEHICLEFLOW_INFO 24 //车流量信息最大个数
#define MAX_SHELTERNUM 4 //8000设备最大遮挡区域数
#define MAX_DAYS 7 //每周天数
#define PHONENUMBER_LEN 32 //pppoe拨号号码最大长度
#define MAX_ACCESSORY_CARD 256 //配件板信息最大长度
#define MAX_DISKNUM_V30 33 //9000设备最大硬盘数/* 最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘) */
#define NET_SDK_MAX_NET_USER_NUM 64 //网络用户
#define NET_SDK_DISK_LOCATION_LEN 16 //硬盘位置长度
#define NET_SDK_SUPPLIER_NAME_LEN 32 //供应商名称长度
#define NET_SDK_DISK_MODEL_LEN 64 //硬盘型号长度
#define NET_SDK_MAX_DISK_VOLUME 33 //最大硬盘卷个数
#define NET_SDK_DISK_VOLUME_LEN 36 //硬盘卷名称长度
#define MAX_DISKNUM 16 //8000设备最大硬盘数
#define MAX_DISKNUM_V10 8 //1.2版本之前版本
#define CARD_READER_DESCRIPTION 32 //读卡器描述
#define MAX_FACE_NUM 2 //最大人脸数
#define MAX_WINDOW_V30 32 //9000设备本地显示最大播放窗口数
#define MAX_WINDOW_V40 64 //Netra 2.3.1扩展
#define MAX_WINDOW 16 //8000设备最大硬盘数
#define MAX_VGA_V30 4 //9000设备最大可接VGA数
#define MAX_VGA 1 //8000设备最大可接VGA数
#define MAX_USERNUM_V30 32 //9000设备最大用户数
#define MAX_USERNUM 16 //8000设备最大用户数
#define MAX_EXCEPTIONNUM_V30 32 //9000设备最大异常处理数
#define MAX_EXCEPTIONNUM 16 //8000设备最大异常处理数
#define MAX_LINK 6 //8000设备单通道最大视频流连接数
#define MAX_ITC_EXCEPTIONOUT 32 //抓拍机最大报警输出
#define MAX_SCREEN_DISPLAY_LEN 512 //屏幕显示字符长度
#define MAX_DECPOOLNUM 4 //单路解码器每个解码通道最大可循环解码数
#define MAX_DECNUM 4 //单路解码器的最大解码通道数(实际只有一个,其他三个保留)
#define MAX_TRANSPARENTNUM 2 //单路解码器可配置最大透明通道数
#define MAX_CYCLE_CHAN 16 //单路解码器最大轮巡通道数
#define MAX_CYCLE_CHAN_V30 64 //最大轮巡通道数(扩展)
#define MAX_DIRNAME_LENGTH 80 //最大目录长度
#define MAX_WINDOWS 16 //最大窗口数
#define MAX_STRINGNUM_V30 8 //9000设备最大OSD字符行数数
#define MAX_STRINGNUM 4 //8000设备最大OSD字符行数数
#define MAX_STRINGNUM_EX 8 //8000定制扩展
#define MAX_AUXOUT_V30 16 //9000设备最大辅助输出数
#define MAX_AUXOUT 4 //8000设备最大辅助输出数
#define MAX_HD_GROUP 16 //9000设备最大硬盘组数
#define MAX_HD_GROUP_V40 32 //设备最大硬盘组数
#define MAX_NFS_DISK 8 //8000设备最大NFS硬盘数
#define NET_SDK_VERSION_LIST_LEN 64 //算法库版本最大值
#define IW_ESSID_MAX_SIZE 32 //WIFI的SSID号长度
#define IW_ENCODING_TOKEN_MAX 32 //WIFI密锁最大字节数
#define MAX_SERIAL_NUM 64 //最多支持的透明通道路数
#define MAX_DDNS_NUMS 10 //9000设备最大可配ddns数
#define MAX_DOMAIN_NAME 64 /* 最大域名长度 */
#define MAX_EMAIL_ADDR_LEN 48 //最大email地址长度
#define MAX_EMAIL_PWD_LEN 32 //最大email密码长度
#define MAX_SLAVECAMERA_NUM 8 //从摄像机个数
#define MAX_CALIB_NUM 6 //标定点的个数
#define MAX_CALIB_NUM_EX 20 //扩展标定点的个数
#define MAX_LEDDISPLAYINFO_LEN 1024 //最大LED屏显示长度
#define MAX_PEOPLE_DETECTION_NUM 8 //最大人员检测区域数
#define MAXPROGRESS 100 //回放时的最大百分率
#define MAX_SERIALNUM 2 //8000设备支持的串口数 1-232 2-485
#define CARDNUM_LEN 20 //卡号长度
#define PATIENTID_LEN 64
#define CARDNUM_LEN_OUT 32 //外部结构体卡号长度
#define MAX_VIDEOOUT_V30 4 //9000设备的视频输出数
#define MAX_VIDEOOUT 2 //8000设备的视频输出数
#define MAX_PRESET_V30 256 /* 9000设备支持的云台预置点数 */
#define MAX_TRACK_V30 256 /* 9000设备支持的云台数 */
#define MAX_CRUISE_V30 256 /* 9000设备支持的云台巡航数 */
#define MAX_PRESET 128 /* 8000设备支持的云台预置点数 */
#define MAX_TRACK 128 /* 8000设备支持的云台数 */
#define MAX_CRUISE 128 /* 8000设备支持的云台巡航数 */
#define MAX_PRESET_V40 300 /* 云台支持的最大预置点数 */
#define MAX_CRUISE_POINT_NUM 128 /* 最大支持的巡航点的个数 */
#define MAX_CRUISEPOINT_NUM_V50 256 //最大支持的巡航点的个数扩展
#define CRUISE_MAX_PRESET_NUMS 32 /* 一条巡航最多的巡航点 */
#define MAX_FACE_PIC_NUM 30 /*人脸子图个数*/
#define LOCKGATE_TIME_NUM 4 //锁闸时间段个数
#define MAX_SERIAL_PORT 8 //9000设备支持232串口数
#define MAX_PREVIEW_MODE 8 /* 设备支持最大预览模式数目 1画面,4画面,9画面,16画面.... */
#define MAX_MATRIXOUT 16 /* 最大模拟矩阵输出个数 */
#define LOG_INFO_LEN 11840 /* 日志附加信息 */
#define DESC_LEN 16 /* 云台描述字符串长度 */
#define PTZ_PROTOCOL_NUM 200 /* 9000最大支持的云台协议数 */
#define IPC_PROTOCOL_NUM 50 //ipc 协议最大个数
#define MAX_AUDIO 1 //8000语音对讲通道数
#define MAX_AUDIO_V30 2 //9000语音对讲通道数
#define MAX_CHANNUM 16 //8000设备最大通道数
#define MAX_ALARMIN 16 //8000设备最大报警输入数
#define MAX_ALARMOUT 4 //8000设备最大报警输出数
#define MAX_AUDIOCAST_CFG_TYPE 3 //支持广播参数配置的类型数量 MP3、MPEG2、AAC
//9000 IPC接入
#define MAX_ANALOG_CHANNUM 32 //最大32个模拟通道
#define MAX_ANALOG_ALARMOUT 32 //最大32路模拟报警输出
#define MAX_ANALOG_ALARMIN 32 //最大32路模拟报警输入
#define MAX_IP_DEVICE 32 //允许接入的最大IP设备数
#define MAX_IP_DEVICE_V40 64 // 允许接入的最大IP设备数 最多可添加64个 IVMS 2000等新设备
#define MAX_IP_CHANNEL 32 //允许加入的最多IP通道数
#define MAX_IP_ALARMIN 128 //允许加入的最多报警输入数
#define MAX_IP_ALARMOUT 64 //允许加入的最多报警输出数
#define MAX_IP_ALARMIN_V40 4096 //允许加入的最多报警输入数
#define MAX_IP_ALARMOUT_V40 4096 //允许加入的最多报警输出数
#define MAX_RECORD_FILE_NUM 20 // 每次删除或者刻录的最大文件数
//SDK_V31 ATM
#define MAX_ACTION_TYPE 12 //自定义协议叠加交易行为最大行为个数
#define MAX_ATM_PROTOCOL_NUM 256 //每种输入方式对应的ATM最大协议数
#define ATM_CUSTOM_PROTO 1025 //自定义协议 值为1025
#define ATM_PROTOCOL_SORT 4 //ATM协议段数
#define ATM_DESC_LEN 32 //ATM描述字符串长度
// SDK_V31 ATM
#define MAX_IPV6_LEN 64 //IPv6地址最大长度
#define MAX_EVENTID_LEN 64 //事件ID长度
#define INVALID_VALUE_UINT32 0xffffffff //无效值
#define MAX_CHANNUM_V40 512
#define MAX_MULTI_AREA_NUM 24
//SDK 录播主机
#define COURSE_NAME_LEN 32 //课程名称
#define INSTRUCTOR_NAME_LEN 16 //授课教师
#define COURSE_DESCRIPTION_LEN 256 //课程信息
#define MAX_TIMESEGMENT_V40 16 //每节课信息
#define MAX_MIX_CHAN_NUM 16 /*目前支持的最大混音通道数,背景通道 + MIC + LINE IN + 最多4个小画面*/
#define MAX_LINE_IN_CHAN_NUM 16 //最大line in通道数
#define MAX_MIC_CHAN_NUM 16 //最大MIC通道数
#define INQUEST_CASE_NO_LEN 64 //审讯案件编号长度
#define INQUEST_CASE_NAME_LEN 64 //审讯案件名称长度
#define CUSTOM_INFO_LEN 64 //自定义信息长度
#define INQUEST_CASE_LEN 64 //审讯信息长度
#define MAX_FILE_ID_LEN 128 //视图库项目中文件ID的最大长度
#define MAX_PIC_NAME_LEN 128 //图片名称长度
/* 最大支持的通道数 最大模拟加上最大IP支持 */
#define MAX_CHANNUM_V30 ( MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL )//64
#define MAX_ALARMOUT_V40 (MAX_IP_ALARMOUT_V40 +MAX_ANALOG_ALARMOUT) //4128
#define MAX_ALARMOUT_V30 ( MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT )//96
#define MAX_ALARMIN_V30 ( MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN )//160
#define MAX_ALARMIN_V40 (MAX_IP_ALARMIN_V40 +MAX_ANALOG_ALARMOUT) //4128
#define MAX_ANALOG_ALARM_WITH_VOLT_LIMIT 16 //受电压限定的模拟报警最大输入数
#define MAX_ROIDETECT_NUM 8 //支持的ROI区域数
#define MAX_LANERECT_NUM 5 //最大车牌识别区域数
#define MAX_FORTIFY_NUM 10 //最大布防个数
#define MAX_INTERVAL_NUM 4 //最大时间间隔个数
#define MAX_CHJC_NUM 3 //最大车辆省份简称字符个数
#define MAX_VL_NUM 5 //最大虚拟线圈个数
#define MAX_DRIVECHAN_NUM 16 //最大车道数
#define MAX_COIL_NUM 3 //最大线圈个数
#define MAX_SIGNALLIGHT_NUM 6 //最大信号灯个数
#define LEN_16 16
#define LEN_32 32
#define LEN_64 64
#define LEN_31 31
#define MAX_LINKAGE_CHAN_NUM 16 //报警联动的通道的最大数量
#define MAX_CABINET_COUNT 8 //最大支持机柜数量
#define MAX_ID_LEN 48
#define MAX_PARKNO_LEN 16
#define MAX_ALARMREASON_LEN 32
#define MAX_UPGRADE_INFO_LEN 48 //获取升级文件匹配信息(模糊升级)
#define MAX_CUSTOMDIR_LEN 32 //自定义目录长度
#define MAX_LED_INFO_LEN 512//LED内容长度
#define MAX_VOICE_INFO_LEN 128//语音播报内容长度
#define MAX_LITLE_INFO_LEN 64 //纸票标题内容长度
#define MAX_CUSTOM_INFO_LEN 64 //纸票自定义信息内容长度
#define MAX_PHONE_NUM_LEN 16 //联系电话内容长度
#define MAX_APP_SERIALNUM_LEN 32 //应用序列号长度
#define AUDIOTALKTYPE_G722 0
#define AUDIOTALKTYPE_G711_MU 1
#define AUDIOTALKTYPE_G711_A 2
#define AUDIOTALKTYPE_MP2L2 5
#define AUDIOTALKTYPE_G726 6
#define AUDIOTALKTYPE_AAC 7
#define AUDIOTALKTYPE_PCM 8
#define AUDIOTALKTYPE_G722C 9
#define AUDIOTALKTYPE_MP3 15
//packet type
#define FILE_HEAD 0 //file head
#define VIDEO_I_FRAME 1 //video I frame
#define VIDEO_B_FRAME 2 //video B frame
#define VIDEO_P_FRAME 3 //video P frame
#define AUDIO_PACKET 10 //audio packet
#define PRIVT_PACKET 11 //private packet
//E frame
#define HIK_H264_E_FRAME (1 << 6) // 以前E帧不用了,深P帧也没用到
#define MAX_TRANSPARENT_CHAN_NUM 4 //每个串口允许建立的最大透明通道数
#define MAX_TRANSPARENT_ACCESS_NUM 4 //每个监听端口允许接入的最大主机数
//ITS
#define MAX_PARKING_STATUS 8 //车位状态 0代表无车1代表有车2代表压线(优先级最高), 3特殊车位
#define MAX_PARKING_NUM 4 //一个通道最大4个车位 (从左到右车位 数组03)
#define MAX_ITS_SCENE_NUM 16 //最大场景数量
#define MAX_SCENE_TIMESEG_NUM 16 //最大场景时间段数量
#define MAX_IVMS_IP_CHANNEL 128 //最大IP通道数
#define DEVICE_ID_LEN 48 //设备编号长度
#define MONITORSITE_ID_LEN 48 //显示点编号长度
#define MAX_AUXAREA_NUM 16 //辅助区域最大数目
#define MAX_SLAVE_CHANNEL_NUM 16 //最大从通道数量
#define MAX_DEVDESC_LEN 64 //设备描述信息最大长度
#define ILLEGAL_LEN 32 //违法代码长度
#define MAX_TRUCK_AXLE_NUM 10 //货车轴最大数
#define MAX_CATEGORY_LEN 8 //车牌附加信息最大字符
#define SERIAL_NO_LEN 16 //泊车位编号
#define MAX_SECRETKEY_LEN 512 //最大秘钥长度
#define MAX_INDEX_CODE_LEN 64 //最大序号长度
#define MAX_ILLEGAL_LEN 64 //违法代码最大字符长度
#define CODE_LEN 64 //授权码
#define ALIAS_LEN 32 //别名,只读
#define MAX_SCH_TASKS_NUM 10
#define MAX_SERVERID_LEN 64 //最大服务器ID的长度
#define MAX_SERVERDOMAIN_LEN 128 //服务器域名最大长度
#define MAX_AUTHENTICATEID_LEN 64 //认证ID最大长度
#define MAX_AUTHENTICATEPASSWD_LEN 32 //认证密码最大长度
#define MAX_SERVERNAME_LEN 64 //最大服务器用户名
#define MAX_COMPRESSIONID_LEN 64 //编码ID的最大长度
#define MAX_SIPSERVER_ADDRESS_LEN 128 //SIP服务器地址支持域名和IP地址
//压线报警
#define MAX_PlATE_NO_LEN 32 //车牌号码最大长度 2013-09-27
#define UPNP_PORT_NUM 12 //upnp端口映射端口数目
#define MAX_PEOPLE_DETECTION_NUM 8 //最大人员检测区域数
#define MAX_NOTICE_NUMBER_LEN 32 //公告编号最大长度
#define MAX_NOTICE_THEME_LEN 64 //公告主题最大长度
#define MAX_NOTICE_DETAIL_LEN 1024 //公告详情最大长度
#define MAX_NOTICE_PIC_NUM 6 //公告信息最大图片数量
#define MAX_DEV_NUMBER_LEN 32 //设备编号最大长度
#define LOCK_NAME_LEN 32 //锁名称
#define HOLIDAY_GROUP_NAME_LEN 32 //假日组名称长度
#define MAX_HOLIDAY_PLAN_NUM 16 //假日组最大假日计划数
#define TEMPLATE_NAME_LEN 32 //计划模板名称长度
#define MAX_HOLIDAY_GROUP_NUM 16 //计划模板最大假日组数
#define DOOR_NAME_LEN 32 //门名称
#define STRESS_PASSWORD_LEN 8 //胁迫密码长度
#define SUPER_PASSWORD_LEN 8 //胁迫密码长度
#define GROUP_NAME_LEN 32 //群组名称长度
#define GROUP_COMBINATION_NUM 8 //群组组合数
#define MULTI_CARD_GROUP_NUM 4 //单门最大多重卡组数
#define ACS_CARD_NO_LEN 32 //门禁卡号长度
#define NET_SDK_EMPLOYEE_NO_LEN 32 //工号长度
#define NET_SDK_UUID_LEN 36 //UUID长度
#define NET_SDK_EHOME_KEY_LEN 32 //EHome Key长度
#define CARD_PASSWORD_LEN 8 //卡密码长度
#define MAX_DOOR_NUM 32 //最大门数
#define MAX_CARD_RIGHT_PLAN_NUM 4 //卡权限最大计划个数
#define MAX_GROUP_NUM_128 128 //最大群组数
#define MAX_CARD_READER_NUM 64 //最大读卡器数
#define MAX_SNEAK_PATH_NODE 8 //最大后续读卡器数
#define MAX_MULTI_DOOR_INTERLOCK_GROUP 8 //最大多门互锁组数
#define MAX_INTER_LOCK_DOOR_NUM 8 //一个多门互锁组中最大互锁门数
#define MAX_CASE_SENSOR_NUM 8 //最大case sensor触发器数
#define MAX_DOOR_NUM_256 256 //最大门数
#define MAX_READER_ROUTE_NUM 16 //最大刷卡循序路径
#define MAX_FINGER_PRINT_NUM 10 //最大指纹个数
#define MAX_CARD_READER_NUM_512 512 //最大读卡器数
#define NET_SDK_MULTI_CARD_GROUP_NUM_20 20 //单门最大多重卡组数
#define ERROR_MSG_LEN 32 //下发错误信息
#define MAX_DOOR_CODE_LEN 8 //房间代码长度
#define MAX_LOCK_CODE_LEN 8 //锁代码长度
#define PER_RING_PORT_NUM 2 //每个环的端口数
#define SENSORNAME_LEN 32 //传感器名称长度
#define MAX_SENSORDESCR_LEN 64 //传感器描述长度
#define MAX_DNS_SERVER_NUM 2 //最大DNS个数
#define SENSORUNIT_LEN 32 //最大单位长度
#define WEP_KEY_MAX_SIZE 32 //最大WEP加密密钥长度
#define WEP_KEY_MAX_NUM 4 //最大WEP加密密钥个数
#define WPA_KEY_MAX_SIZE 64 //最大WPA共享密钥长度
#define MAX_SINGLE_FTPPICNAME_LEN 20 //最大单个FTP通道名称
#define MAX_CAMNAME_LEN 32 //最大通道名称
#define MAX_FTPNAME_NUM 12 //TFP名称数
#define MAX_IDCODE_LEN 128 // 识别码最大长度
#define MAX_VERSIIN_LEN 64 //版本最大长度
#define MAX_IDCODE_NUM 32 // 识别码个数
#define SDK_LEN_2048 2048
#define SDK_MAX_IP_LEN 48
#define RECT_POINT_NUM 4 //矩形角数
#define MAX_PUBLIC_KEY_LEN 512 // 最大公钥长度
#define CHIP_SERIALNO_LEN 32 //加密芯片序列号长度
#define ENCRYPT_DEV_ID_LEN 20 //设备ID长度
//MCU相关的
#define MAX_SEARCH_ID_LEN 36 //搜索标识符最大长度
#define TERMINAL_NAME_LEN 64 //终端名称长度
#define MAX_URL_LEN 512 //URL长度
#define REGISTER_NAME_LEN 64 //终端注册GK名称最大长度
//光纤
#define MAX_PORT_NUM 64 //最大端口数
#define MAX_SINGLE_CARD_PORT_NO 4 //光纤收发器单卡最大端口数
#define MAX_FUNC_CARD_NUM 32 //光纤收发器最大功能卡数
#define MAX_FC_CARD_NUM 33 //光纤收发器最大卡数
#define MAX_REMARKS_LEN 128 //注释最大长度
#define MAX_OUTPUT_PORT_NUM 32 //单路输出包含的最大输出端口数
#define MAX_SINGLE_PORT_RECVCARD_NUM 64 //单个端口连接的最大接收卡数
#define MAX_GAMMA_X_VALUE 256 //GAMMA表X轴取值个数
#define NET_DEV_NAME_LEN 64 //设备名称长度
#define NET_DEV_TYPE_NAME_LEN 64 //设备类型名称长度
#define ABNORMAL_INFO_NUM 4 //异常时间段个数
#define PLAYLIST_NAME_LEN 64 //播放表名称长度
#define PLAYLIST_ITEM_NUM 64 //播放项数目
//后端相关
#define NET_SDK_MAX_LOGIN_PASSWORD_LEN 128 //用户登录密码最大长度
#define NET_SDK_MAX_ANSWER_LEN 256 //安全问题答案最大长度
#define NET_SDK_MAX_QUESTION_LIST_LEN 32//安全问题列表最大长度
#define MAX_SCREEN_AREA_NUM 128 //屏幕区域最大数量
#define NET_SDK_MAX_THERMOMETRYALGNAME 128//测温算法库版本最大长度
#define NET_SDK_MAX_SHIPSALGNAME 128//船只算法库版本最大长度
#define NET_SDK_MAX_FIRESALGNAME 128//火点算法库版本最大长度
#define MAX_PASSPORT_NUM_LEN 16 //最大护照证件号长度
#define MAX_PASSPORT_INFO_LEN 128 //最大护照通用信息长度
#define MAX_PASSPORT_NAME_LEN 64 //最大护照姓名长度
#define MAX_PASSPORT_MONITOR_LEN 1024 //最大护照监护信息长度
#define MAX_NATIONALITY_LEN 16 //最大护照国籍长度
#define MAX_PASSPORT_TYPE_LEN 4 //最大护照证件类型长度
//修正后结束
// struct
//报警和异常处理结构(子结构)(多处使用)
typedef struct
{
DWORD dwHandleType; /*处理方式,处理方式的"或"结果*/
/*0x00: 无响应*/
/*0x01: 显示器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: Jpeg抓图并上传EMail*/
BYTE byRelAlarmOut[MAX_ALARMOUT]; //报警触发的输出通道,报警触发的输出,为1表示触发该输出
}NET_DVR_HANDLEEXCEPTION, *LPNET_DVR_HANDLEEXCEPTION;
//时间段(子结构)
typedef struct
{
//开始时间
BYTE byStartHour;
BYTE byStartMin;
//结束时间
BYTE byStopHour;
BYTE byStopMin;
}NET_DVR_SCHEDTIME, *LPNET_DVR_SCHEDTIME;
typedef struct
{
BYTE byBrightness; /*亮度,0-255*/
BYTE byContrast; /*对比度,0-255*/
BYTE bySaturation; /*饱和度,0-255*/
BYTE byHue; /*色调,0-255*/
}NET_DVR_COLOR, *LPNET_DVR_COLOR;
//NET_DVR_Login_V30()参数结构
typedef struct tagNET_DVR_DEVICEINFO_V30
{
BYTE sSerialNumber[SERIALNO_LEN]; //序列号
BYTE byAlarmInPortNum; //报警输入个数
BYTE byAlarmOutPortNum; //报警输出个数
BYTE byDiskNum; //硬盘个数
BYTE byDVRType; //设备类型, 1:DVR 2:ATM DVR 3:DVS ......
BYTE byChanNum; //模拟通道个数
BYTE byStartChan; //起始通道号,例如DVS-1,DVR - 1
BYTE byAudioChanNum; //语音通道数
BYTE byIPChanNum; //最大数字通道个数,低位
BYTE byZeroChanNum; //零通道编码个数 //2010-01-16
BYTE byMainProto; //主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp
BYTE bySubProto; //子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp
BYTE bySupport;
BYTE bySupport1;
BYTE bySupport2;
WORD wDevType;
BYTE bySupport3;
BYTE byMultiStreamProto;//是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流bit-8子码流
BYTE byStartDChan; //起始数字通道号,0表示无效
BYTE byStartDTalkChan; //起始数字对讲通道号区别于模拟对讲通道号0表示无效
BYTE byHighDChanNum; //数字通道个数,高位
BYTE bySupport4;
BYTE byLanguageType;
BYTE byVoiceInChanNum; //音频输入通道数
BYTE byStartVoiceInChanNo; //音频输入起始通道号 0表示无效
BYTE bySupport5;
BYTE bySupport6;
BYTE byMirrorChanNum; //镜像通道个数,<录播主机中用于表示导播通道>
WORD wStartMirrorChanNo; //起始镜像通道号
BYTE bySupport7;
BYTE byRes2; //保留
}NET_DVR_DEVICEINFO_V30, *LPNET_DVR_DEVICEINFO_V30;
typedef struct tagNET_DVR_DEVICEINFO_V40
{
NET_DVR_DEVICEINFO_V30 struDeviceV30;
BYTE bySupportLock; //设备支持锁定功能该字段由SDK根据设备返回值来赋值的。bySupportLock为1时dwSurplusLockTime和byRetryLoginTime有效
BYTE byRetryLoginTime; //剩余可尝试登陆的次数,用户名,密码错误时,此参数有效
BYTE byPasswordLevel; //admin密码安全等级0-无效1-默认密码2-有效密码,3-风险较高的密码。当用户的密码为出厂默认密码12345或者风险较高的密码时上层客户端需要提示用户更改密码。
BYTE byProxyType; //代理类型0-不使用代理, 1-使用socks5代理, 2-使用EHome代理
DWORD dwSurplusLockTime; //剩余时间,单位秒,用户锁定时,此参数有效
BYTE byCharEncodeType; //字符编码类型
BYTE bySupportDev5;//支持v50版本的设备参数获取设备名称和设备类型名称长度扩展为64字节
BYTE bySupport; //能力集扩展位与结果0- 不支持1- 支持
BYTE byLoginMode; //登录模式 0-Private登录 1-ISAPI登录
DWORD dwOEMCode;
int iResidualValidity; //该用户密码剩余有效天数,单位:天,返回负值,表示密码已经超期使用,例如“-3表示密码已经超期使用3天”
BYTE byResidualValidity; // iResidualValidity字段是否有效0-无效1-有效
BYTE byRes2[243];
}NET_DVR_DEVICEINFO_V40, *LPNET_DVR_DEVICEINFO_V40;
typedef void (*fLoginResultCallBack) (LONG lUserID, DWORD dwResult, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo , void* pUser);
typedef void (*REALDATACALLBACK) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser);
typedef struct tagNET_DVR_USER_LOGIN_INFO
{
char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN];
BYTE byUseTransport; //是否启用能力集透传0--不启用透传默认1--启用透传
WORD wPort;
char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN];
char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN];
fLoginResultCallBack cbLoginResult;
void *pUser;
BOOL bUseAsynLogin;
BYTE byProxyType; //0:不使用代理1使用标准代理2使用EHome代理
BYTE byUseUTCTime; //0-不进行转换,默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间SDK完成平台本地时间与设备时区的转换
BYTE byLoginMode; //0-Private 1-ISAPI 2-自适应
BYTE byHttps; //0-不适用tls1-使用tls 2-自适应
LONG iProxyID; //代理服务器序号,添加代理服务器信息时,相对应的服务器数组下表值
BYTE byVerifyMode; //认证方式0-不认证1-双向认证2-单向认证认证仅在使用TLS的时候生效;
BYTE byRes3[119];
}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO;
//图片质量
typedef struct tagNET_DVR_JPEGPARA
{
WORD wPicSize;
WORD wPicQuality; /* 图片质量系数 0-最好 1-较好 2-一般 */
}NET_DVR_JPEGPARA, *LPNET_DVR_JPEGPARA;
//软解码预览参数
typedef struct tagNET_DVR_CLIENTINFO
{
LONG lChannel;
LONG lLinkMode;
HWND hPlayWnd;
char* sMultiCastIP;
BYTE byProtoType;
BYTE byRes[3];
}NET_DVR_CLIENTINFO, *LPNET_DVR_CLIENTINFO;
#define STREAM_ID_LEN 32
//预览V40接口
typedef struct tagNET_DVR_PREVIEWINFO
{
LONG lChannel;
DWORD dwStreamType;
DWORD dwLinkMode;
HWND hPlayWnd;
DWORD bBlocked;
DWORD bPassbackRecord;
BYTE byPreviewMode;
BYTE byStreamID[STREAM_ID_LEN];
BYTE byProtoType;
BYTE byRes1;
BYTE byVideoCodingType;
DWORD dwDisplayBufNum;
BYTE byNPQMode;
BYTE byRes[215];
}NET_DVR_PREVIEWINFO, *LPNET_DVR_PREVIEWINFO;
typedef struct tagNET_DVR_BUF_INFO
{
void* pBuf; //缓冲区指针
DWORD nLen; //缓冲区长度
}NET_DVR_BUF_INFO, *LPNET_DVR_BUF_INFO;
typedef struct tagNET_DVR_IN_PARAM
{
NET_DVR_BUF_INFO struCondBuf;
NET_DVR_BUF_INFO struInParamBuf;
DWORD dwRecvTimeout;
BYTE byRes[32];
}NET_DVR_IN_PARAM,LPNET_DVR_IN_PARAM;
typedef struct tagNET_DVR_OUT_PARAM
{
NET_DVR_BUF_INFO struOutBuf;
void* lpStatusList;
BYTE byRes[32];
}NET_DVR_OUT_PARAM,LPNET_DVR_OUT_PARAM;
typedef struct tagNET_DVR_SETUPALARM_PARAM
{
DWORD dwSize;
BYTE byLevel; //布防优先级0-一等级1-二等级2-三等级(低)
BYTE byAlarmInfoType; //上传报警信息类型抓拍机支持0-老报警信息NET_DVR_PLATE_RESULT1-新报警信息(NET_ITS_PLATE_RESULT)2012-9-28
BYTE byRetAlarmTypeV40; //0--返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO, 1--设备支持NET_DVR_ALARMINFO_V40则返回NET_DVR_ALARMINFO_V40不支持则返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO
BYTE byRetDevInfoVersion; //CVR上传报警信息回调结构体版本号 0-COMM_ALARM_DEVICE 1-COMM_ALARM_DEVICE_V40
BYTE byRetVQDAlarmType; //VQD报警上传类型0-上传报报警NET_DVR_VQD_DIAGNOSE_INFO1-上传报警NET_DVR_VQD_ALARM
//1-表示人脸侦测报警扩展(INTER_FACE_DETECTION),0-表示原先支持结构(INTER_FACESNAP_RESULT)
BYTE byFaceAlarmDetection;
//Bit0- 表示二级布防是否上传图片: 0-上传1-不上传
//Bit1- 表示开启数据上传确认机制0-不开启1-开启
//Bit6- 表示雷达检测报警(eventType:radarDetection)是否开启实时上传0-不开启1-开启用于web插件实时显示雷达目标轨迹
BYTE bySupport;
//断网续传类型
//bit0-车牌检测IPC 0-不续传1-续传)
//bit1-客流统计IPC 0-不续传1-续传)
//bit2-热度图统计IPC 0-不续传1-续传)
//bit3-人脸抓拍IPC 0-不续传1-续传)
//bit4-人脸对比IPC 0-不续传1-续传)
BYTE byBrokenNetHttp;
WORD wTaskNo; //任务处理号 和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构 NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应)
BYTE byDeployType; //布防类型0-客户端布防1-实时布防
BYTE bySubScription; //订阅,按位表示,未开启订阅不上报 //占位
//Bit7-移动侦测人车分类是否传图0-不传图(V30上报)1-传图(V40上报)
BYTE byRes1[2];
BYTE byAlarmTypeURL;//bit0-表示人脸抓拍报警上传INTER_FACESNAP_RESULT0-表示二进制传输1-表示URL传输设备支持的情况下设备支持能力根据具体报警能力集判断,同时设备需要支持URL的相关服务当前是”云存储“
//bit1-表示EVENT_JSON中图片数据长传类型0-表示二进制传输1-表示URL传输设备支持的情况下设备支持能力根据具体报警能力集判断
//bit2 - 人脸比对(报警类型为COMM_SNAP_MATCH_ALARM)中图片数据上传类型0 - 二进制传输1 - URL传输
//bit3 - 行为分析(报警类型为COMM_ALARM_RULE)中图片数据上传类型0 - 二进制传输1 - URL传输本字段设备是否支持对应软硬件能力集中<isSupportBehaviorUploadByCloudStorageURL>节点是否返回且为true
BYTE byCustomCtrl;//Bit0- 表示支持副驾驶人脸子图上传: 0-不上传,1-上传
}NET_DVR_SETUPALARM_PARAM, *LPNET_DVR_SETUPALARM_PARAM;
//单IO触发抓拍功能配置
typedef struct tagNET_DVR_SNAPCFG
{
DWORD dwSize;
BYTE byRelatedDriveWay;//触发IO关联的车道号
BYTE bySnapTimes; //线圈抓拍次数0-不抓拍非0-连拍次数目前最大5次
WORD wSnapWaitTime; //抓拍等待时间单位ms取值范围[0,60000]
WORD wIntervalTime[MAX_INTERVAL_NUM];//连拍间隔时间ms
DWORD dwSnapVehicleNum; //抓拍车辆序号。
NET_DVR_JPEGPARA struJpegPara;//抓拍图片参数
BYTE byRes2[16];//保留字节
}NET_DVR_SNAPCFG, *LPNET_DVR_SNAPCFG;
//报警设备信息
typedef struct
{
BYTE byUserIDValid; /* userid是否有效 0-无效1-有效 */
BYTE bySerialValid; /* 序列号是否有效 0-无效1-有效 */
BYTE byVersionValid; /* 版本号是否有效 0-无效1-有效 */
BYTE byDeviceNameValid; /* 设备名字是否有效 0-无效1-有效 */
BYTE byMacAddrValid; /* MAC地址是否有效 0-无效1-有效 */
BYTE byLinkPortValid; /* login端口是否有效 0-无效1-有效 */
BYTE byDeviceIPValid; /* 设备IP是否有效 0-无效1-有效 */
BYTE bySocketIPValid; /* socket ip是否有效 0-无效1-有效 */
LONG lUserID; /* NET_DVR_Login()返回值, 布防时有效 */
BYTE sSerialNumber[SERIALNO_LEN]; /* 序列号 */
DWORD dwDeviceVersion; /* 版本信息 高16位表示主版本低16位表示次版本*/
char sDeviceName[NAME_LEN]; /* 设备名字 */
BYTE byMacAddr[MACADDR_LEN]; /* MAC地址 */
WORD wLinkPort; /* link port */
char sDeviceIP[128]; /* IP地址 */
char sSocketIP[128]; /* 报警主动上传时的socket IP地址 */
BYTE byIpProtocol; /* Ip协议 0-IPV4, 1-IPV6 */
BYTE byRes1[2];
BYTE bJSONBroken; //JSON断网续传标志。0不续传1续传
WORD wSocketPort;
BYTE byRes2[6];
}NET_DVR_ALARMER, *LPNET_DVR_ALARMER;
//信号丢失报警(子结构)
typedef struct
{
BYTE byEnableHandleVILost; /* 是否处理信号丢失报警 */
NET_DVR_HANDLEEXCEPTION strVILostHandleType; /* 处理方式 */
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//布防时间
}NET_DVR_VILOST, *LPNET_DVR_VILOST;
//移动侦测(子结构)
typedef struct
{
BYTE byMotionScope[18][22]; /*侦测区域,共有22*18个小宏块,为1表示改宏块是移动侦测区域,0-表示不是*/
BYTE byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
BYTE byEnableHandleMotion; /* 是否处理移动侦测 */
BYTE byEnableDisplay; /*启用移动侦测高亮显示0-否1-是*/
char reservedData;
NET_DVR_HANDLEEXCEPTION strMotionHandleType; /* 处理方式 */
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//布防时间
BYTE byRelRecordChan[MAX_CHANNUM]; //报警触发的录象通道,为1表示触发该通道
}NET_DVR_MOTION, *LPNET_DVR_MOTION;
//遮挡报警(子结构) 区域大小704*576
typedef struct
{
DWORD dwEnableHideAlarm; /* 是否启动遮挡报警 ,0-否,1-低灵敏度 2-中灵敏度 3-高灵敏度*/
WORD wHideAlarmAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAlarmAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAlarmAreaWidth; /* 遮挡区域的宽 */
WORD wHideAlarmAreaHeight; /*遮挡区域的高*/
NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType; /* 处理方式 */
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//布防时间
}NET_DVR_HIDEALARM, *LPNET_DVR_HIDEALARM;
typedef struct
{
NET_DVR_COLOR struColor[MAX_TIMESEGMENT_V30];/*图象参数(第一个有效,其他三个保留)*/
NET_DVR_SCHEDTIME struHandleTime[MAX_TIMESEGMENT_V30];/*处理时间段(保留)*/
}NET_DVR_VICOLOR, *LPNET_DVR_VICOLOR;
//遮挡区域(子结构)
typedef struct
{
WORD wHideAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAreaWidth; /* 遮挡区域的宽 */
WORD wHideAreaHeight; /*遮挡区域的高*/
}NET_DVR_SHELTER, *LPNET_DVR_SHELTER;
typedef struct
{
BYTE byRed; //RGB颜色三分量中的红色
BYTE byGreen; //RGB颜色三分量中的绿色
BYTE byBlue; //RGB颜色三分量中的蓝色
BYTE byRes; //保留
}NET_DVR_RGB_COLOR, *LPNET_DVR_RGB_COLOR;
typedef struct
{
BYTE byObjectSize;//占比参数(0~100)
BYTE byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
BYTE byRes[6];
}NET_DVR_DNMODE, *LPNET_DVR_DNMODE;
//区域框结构
typedef struct tagNET_VCA_RECT
{
float fX; //边界框左上角点的X轴坐标, 0.000~1
float fY; //边界框左上角点的Y轴坐标, 0.000~1
float fWidth; //边界框的宽度, 0.000~1
float fHeight; //边界框的高度, 0.000~1
}NET_VCA_RECT, *LPNET_VCA_RECT;
//球机位置信息
typedef struct
{
WORD wAction;//获取时该字段无效
WORD wPanPos;//水平参数
WORD wTiltPos;//垂直参数
WORD wZoomPos;//变倍参数
}NET_DVR_PTZPOS, *LPNET_DVR_PTZPOS;
//球机范围信息
typedef struct
{
WORD wPanPosMin;//水平参数min
WORD wPanPosMax;//水平参数max
WORD wTiltPosMin;//垂直参数min
WORD wTiltPosMax;//垂直参数max
WORD wZoomPosMin;//变倍参数min
WORD wZoomPosMax;//变倍参数max
}NET_DVR_PTZSCOPE, *LPNET_DVR_PTZSCOPE;
typedef struct
{
BYTE byAreaNo;//区域编号(IPC- 1~8)
BYTE byRes[3];
NET_VCA_RECT struRect;//单个区域的坐标信息(矩形) size = 16;
NET_DVR_DNMODE struDayNightDisable;//关闭模式
NET_DVR_DNMODE struDayModeParam;//白天模式
NET_DVR_DNMODE struNightModeParam;//夜晚模式
BYTE byRes1[8];
}NET_DVR_MOTION_MULTI_AREAPARAM, *LPNET_DVR_MOTION_MULTI_AREAPARAM;
typedef struct
{
BYTE byHour;//0~24
BYTE byMinute;//0~60
BYTE bySecond;//0~60
BYTE byRes;
WORD wMilliSecond; //0~1000
BYTE byRes1[2];
}NET_DVR_DAYTIME,*LPNET_DVR_DAYTIME;
typedef struct
{
NET_DVR_DAYTIME struStartTime; //开始时间
NET_DVR_DAYTIME struStopTime; //结束时间
}NET_DVR_SCHEDULE_DAYTIME, *LPNET_DVR_SCHEDULE_DAYTIME;
typedef struct
{
BYTE byDayNightCtrl;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
BYTE byAllMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭全部区域的灵敏度范围*/
BYTE byRes[2];//
NET_DVR_SCHEDULE_DAYTIME struScheduleTime;//切换时间 16
NET_DVR_MOTION_MULTI_AREAPARAM struMotionMultiAreaParam[MAX_MULTI_AREA_NUM];//最大支持24个区域
BYTE byRes1[60];
}NET_DVR_MOTION_MULTI_AREA,*LPNET_DVR_MOTION_MULTI_AREA; //1328
typedef struct
{
BYTE byMotionScope[64][96]; /*侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是*/
BYTE byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
BYTE byRes[3];
}NET_DVR_MOTION_SINGLE_AREA, *LPNET_DVR_MOTION_SINGLE_AREA;
typedef struct
{
NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; //普通模式下的单区域设
NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; //专家模式下的多区域设置
}NET_DVR_MOTION_MODE_PARAM, *LPNET_DVR_MOTION_MODE_PARAM;
typedef struct
{
DWORD dwEnableHideAlarm; /* 是否启动遮挡报警0-否1-低灵敏度2-中灵敏度3-高灵敏度*/
WORD wHideAlarmAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAlarmAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAlarmAreaWidth; /* 遮挡区域的宽 */
WORD wHideAlarmAreaHeight; /*遮挡区域的高*/
/* 信号丢失触发报警输出 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 显示器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
/*0x1000:抓图上传到云*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列从下标0 - dwRelAlarmOut -1有效如果中间遇到0xffffffff,则后续无效*/
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
BYTE byRes[64]; //保留
}NET_DVR_HIDEALARM_V40,*LPNET_DVR_HIDEALARM_V40; //遮挡报警
typedef struct
{
NET_DVR_MOTION_MODE_PARAM struMotionMode; //(5.1.0新增)
BYTE byEnableHandleMotion; /* 是否处理移动侦测 0否 1是*/
BYTE byEnableDisplay; /*启用移动侦测高亮显示0-否1-是*/
BYTE byConfigurationMode; //0~普通,1~专家(5.1.0新增)
BYTE byKeyingEnable; //启用键控移动侦测 0-不启用1-启用
/* 异常处理方式 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 显示器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
/*0x1000: 抓图上传到云*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //实际触发的报警输出号,按值表示,采用紧凑型排列从下标0 - dwRelAlarmOut -1有效如果中间遇到0xffffffff,则后续无效
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
/*触发的录像通道*/
DWORD dwMaxRecordChanNum; //设备支持的最大关联录像通道数-只读
DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* 实际触发录像通道,按值表示,采用紧凑型排列从下标0 - dwRelRecordChan -1有效如果中间遇到0xffffffff,则后续无效*/
BYTE byDiscardFalseAlarm; //启用去误报 0-无效1-不启用2-启用
BYTE byRes[127]; //保留字节
}NET_DVR_MOTION_V40,*LPNET_DVR_MOTION_V40;
typedef struct
{
DWORD dwEnableVILostAlarm; /* 是否启动信号丢失报警 ,0-否,1-是*/
/* 信号丢失触发报警输出 */
DWORD dwHandleType; //异常处理,异常处理方式的"或"结果
/*0x00: 无响应*/
/*0x01: 显示器上警告*/
/*0x02: 声音警告*/
/*0x04: 上传中心*/
/*0x08: 触发报警输出*/
/*0x10: 触发JPRG抓图并上传Email*/
/*0x20: 无线声光报警器联动*/
/*0x40: 联动电子地图(目前只有PCNVR支持)*/
/*0x200: 抓图并上传FTP*/
/*0x1000:抓图上传到云*/
DWORD dwMaxRelAlarmOutChanNum ; //触发的报警输出通道数(只读)最大支持数量
DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列从下标0 - dwRelAlarmOut -1有效如果中间遇到0xffffffff,则后续无效*/
NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*布防时间*/
BYTE byVILostAlarmThreshold; /*信号丢失报警阈值当值低于阈值认为信号丢失取值0-99*/
BYTE byRes[63]; //保留
}NET_DVR_VILOST_V40,*LPNET_DVR_VILOST_V40; //信号丢失报警
//DVR设备参数
typedef struct
{
DWORD dwSize;
BYTE sDVRName[NAME_LEN]; //DVR名称
DWORD dwDVRID; //DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
DWORD dwRecycleRecord; //是否循环录像,0:不是; 1:是
//以下不可更改
BYTE sSerialNumber[SERIALNO_LEN]; //序列号
DWORD dwSoftwareVersion; //软件版本号,高16位是主版本,低16位是次版本
DWORD dwSoftwareBuildDate; //软件生成日期,0xYYYYMMDD
DWORD dwDSPSoftwareVersion; //DSP软件版本,高16位是主版本,低16位是次版本
DWORD dwDSPSoftwareBuildDate; // DSP软件生成日期,0xYYYYMMDD
DWORD dwPanelVersion; // 前面板版本,高16位是主版本,低16位是次版本
DWORD dwHardwareVersion; // 硬件版本,高16位是主版本,低16位是次版本
BYTE byAlarmInPortNum; //DVR报警输入个数
BYTE byAlarmOutPortNum; //DVR报警输出个数
BYTE byRS232Num; //DVR 232串口个数
BYTE byRS485Num; //DVR 485串口个数
BYTE byNetworkPortNum; //网络口个数
BYTE byDiskCtrlNum; //DVR 硬盘控制器个数
BYTE byDiskNum; //DVR 硬盘个数
BYTE byDVRType; //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
BYTE byChanNum; //DVR 通道个数
BYTE byStartChan; //起始通道号,例如DVS-1,DVR - 1
BYTE byDecordChans; //DVR 解码路数
BYTE byVGANum; //VGA口的个数
BYTE byUSBNum; //USB口的个数
BYTE byAuxoutNum; //辅口的个数
BYTE byAudioNum; //语音口的个数
BYTE byIPChanNum; //最大数字通道数
}NET_DVR_DEVICECFG, *LPNET_DVR_DEVICECFG;
//DVR设备参数
typedef struct
{
DWORD dwSize;
BYTE sDVRName[NAME_LEN]; //DVR名称
DWORD dwDVRID; //DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
DWORD dwRecycleRecord; //是否循环录像,0:不是; 1:是
//以下不可更改
BYTE sSerialNumber[SERIALNO_LEN]; //序列号
DWORD dwSoftwareVersion; //软件版本号,高16位是主版本,低16位是次版本
DWORD dwSoftwareBuildDate; //软件生成日期,0xYYYYMMDD
DWORD dwDSPSoftwareVersion; //DSP软件版本,高16位是主版本,低16位是次版本
DWORD dwDSPSoftwareBuildDate; // DSP软件生成日期,0xYYYYMMDD
DWORD dwPanelVersion; // 前面板版本,高16位是主版本,低16位是次版本
DWORD dwHardwareVersion; // 硬件版本,高16位是主版本,低16位是次版本
BYTE byAlarmInPortNum; //DVR报警输入个数
BYTE byAlarmOutPortNum; //DVR报警输出个数
BYTE byRS232Num; //DVR 232串口个数
BYTE byRS485Num; //DVR 485串口个数
BYTE byNetworkPortNum; //网络口个数
BYTE byDiskCtrlNum; //DVR 硬盘控制器个数
BYTE byDiskNum; //DVR 硬盘个数
BYTE byDVRType; //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
BYTE byChanNum; //DVR 通道个数
BYTE byStartChan; //起始通道号,例如DVS-1,DVR - 1
BYTE byDecordChans; //DVR 解码路数
BYTE byVGANum; //VGA口的个数
BYTE byUSBNum; //USB口的个数
BYTE byAuxoutNum; //辅口的个数
BYTE byAudioNum; //语音口的个数
BYTE byIPChanNum; //最大数字通道数 低8位高8位见byHighIPChanNum
BYTE byZeroChanNum; //零通道编码个数
BYTE bySupport; //能力位与结果为0表示不支持1表示支持
//bySupport & 0x1, 表示是否支持智能搜索
//bySupport & 0x2, 表示是否支持备份
//bySupport & 0x4, 表示是否支持压缩参数能力获取
//bySupport & 0x8, 表示是否支持多网卡
//bySupport & 0x10, 表示支持远程SADP
//bySupport & 0x20, 表示支持Raid卡功能
//bySupport & 0x40, 表示支持IPSAN搜索
//bySupport & 0x80, 表示支持rtp over rtsp
BYTE byEsataUseage; //Esata的默认用途0-默认备份1-默认录像
BYTE byIPCPlug; //0-关闭即插即用1-打开即插即用
BYTE byStorageMode; //0-盘组模式,1-磁盘配额, 2抽帧模式, 3-自动
BYTE bySupport1; //能力位与结果为0表示不支持1表示支持
//bySupport1 & 0x1, 表示是否支持snmp v30
//bySupport1 & 0x2, 支持区分回放和下载
//bySupport1 & 0x4, 是否支持布防优先级
//bySupport1 & 0x8, 智能设备是否支持布防时间段扩展
//bySupport1 & 0x10, 表示是否支持多磁盘数超过33个
//bySupport1 & 0x20, 表示是否支持rtsp over http
WORD wDevType;//设备型号
BYTE byDevTypeName[DEV_TYPE_NAME_LEN];//设备型号名称
BYTE bySupport2; //能力集扩展位与结果为0表示不支持1表示支持
//bySupport2 & 0x1, 表示是否支持扩展的OSD字符叠加(终端和抓拍机扩展区分)
BYTE byAnalogAlarmInPortNum; //模拟报警输入个数
BYTE byStartAlarmInNo; //模拟报警输入起始号
BYTE byStartAlarmOutNo; //模拟报警输出起始号
BYTE byStartIPAlarmInNo; //IP报警输入起始号
BYTE byStartIPAlarmOutNo; //IP报警输出起始号
BYTE byHighIPChanNum; //数字通道个数高8位
BYTE byEnableRemotePowerOn;//是否启用在设备休眠的状态下远程开机功能0-不启用1-启用
WORD wDevClass; //设备大类备是属于哪个产品线0 保留1-50 DVR51-100 DVS101-150 NVR151-200 IPC65534 其他,具体分类方法见《设备类型对应序列号和类型值.docx》
BYTE byRes2[6]; //保留
}NET_DVR_DEVICECFG_V40, *LPNET_DVR_DEVICECFG_V40;
//通道图象结构(SDK_V13及之前版本)
typedef struct
{
DWORD dwSize;
BYTE sChanName[NAME_LEN];
DWORD dwVideoFormat; /* 只读 视频制式 1-NTSC 2-PAL*/
BYTE byBrightness; /*亮度,0-255*/
BYTE byContrast; /*对比度,0-255*/
BYTE bySaturation; /*饱和度,0-255 */
BYTE byHue; /*色调,0-255*/
//显示通道名
DWORD dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
WORD wShowNameTopLeftX; /* 通道名称显示位置的x坐标 */
WORD wShowNameTopLeftY; /* 通道名称显示位置的y坐标 */
//信号丢失报警
NET_DVR_VILOST struVILost;
//移动侦测
NET_DVR_MOTION struMotion;
//遮挡报警
NET_DVR_HIDEALARM struHideAlarm;
//遮挡 区域大小704*576
DWORD dwEnableHide; /* 是否启动遮挡 ,0-否,1-是*/
WORD wHideAreaTopLeftX; /* 遮挡区域的x坐标 */
WORD wHideAreaTopLeftY; /* 遮挡区域的y坐标 */
WORD wHideAreaWidth; /* 遮挡区域的宽 */
WORD wHideAreaHeight; /*遮挡区域的高*/
//OSD
DWORD dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
WORD wOSDTopLeftX; /* OSD的x坐标 */
WORD wOSDTopLeftY; /* OSD的y坐标 */
BYTE byOSDType; /* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
/*6: xx/xx/xxxx(月/日/年) */
/*7: xxxx/xx/xx(年/月/日) */
/*8: xx/xx/xxxx(日/月/年)*/
BYTE byDispWeek; /* 是否显示星期 */
BYTE byOSDAttrib; /* OSD属性:透明,闪烁 */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 闪烁,不透明 */
/* 4: 不透明,不闪烁 */
char reservedData2;
}NET_DVR_PICCFG, *LPNET_DVR_PICCFG;
typedef struct
{
DWORD dwSize;
BYTE sChanName[NAME_LEN];
DWORD dwVideoFormat; /* 只读 视频制式 1-NTSC 2-PAL */
NET_DVR_VICOLOR struViColor;// 图像参数按时间段设置
//显示通道名
DWORD dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示
WORD wShowNameTopLeftX; /* 通道名称显示位置的x坐标 */
WORD wShowNameTopLeftY; /* 通道名称显示位置的y坐标 */
//隐私遮挡
DWORD dwEnableHide; /* 是否启动遮挡 ,0-否,1-是*/
NET_DVR_SHELTER struShelter[MAX_SHELTERNUM];
//OSD
DWORD dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示
WORD wOSDTopLeftX; /* OSD的x坐标 */
WORD wOSDTopLeftY; /* OSD的y坐标 */
BYTE byOSDType; /* OSD类型(主要是年月日格式) */
/* 0: XXXX-XX-XX 年月日 */
/* 1: XX-XX-XXXX 月日年 */
/* 2: XXXX年XX月XX日 */
/* 3: XX月XX日XXXX年 */
/* 4: XX-XX-XXXX 日月年*/
/* 5: XX日XX月XXXX年 */
/*6: xx/xx/xxxx(月/日/年) */
/*7: xxxx/xx/xx(年/月/日) */
/*8: xx/xx/xxxx(日/月/年)*/
BYTE byDispWeek; /* 是否显示星期 */
BYTE byOSDAttrib; /* OSD属性:透明,闪烁 */
/* 0: 不显示OSD */
/* 1: 透明,闪烁 */
/* 2: 透明,不闪烁 */
/* 3: 不透明,闪烁 */
/* 4: 不透明,不闪烁 */
BYTE byHourOSDType; /* OSD小时制:0-24小时制,1-12小时制 */
BYTE byFontSize; //16*16(中)/8*16(英)1-32*32(中)/16*32(英)2-64*64(中)/32*64(英) 3-48*48(中)/24*48(英) 4-24*24(中)/12*24(英) 5-96*96(中)/48*96(英) 6-128*128(中)/64*128(英) 7-80*80(中)/40*80(英) 8-112*112(中)/56*112(英) 0xff-自适应(adaptive)
BYTE byOSDColorType; //0-默认黑白1-自定义2-勾边
/*当对齐方式选择国标模式时,可以分别对右下角、左下角两个区域做字符叠加。
右下角区域:
共支持6行字符叠加可以通过NET_DVR_SET_SHOWSTRING_V30/ NET_DVR_GET_SHOWSTRING_V30字符叠加接口对应NET_DVR_SHOWSTRINGINFO结构体数组中的第0至第5个下标的值。叠加字符的方式为从下到上的方式。
左下角区域:
共支持2行字符叠加可以通过NET_DVR_SET_SHOWSTRING_V3/ NET_DVR_GET_SHOWSTRING_V30字符叠加接口对应NET_DVR_SHOWSTRINGINFO结构体数组中的第6和第7个下标的值。叠加字符的方式为从下到上的方式。
*/
BYTE byAlignment;//对齐方式 0-自适应1-右对齐, 2-左对齐3-国标模式4-全部右对齐(包含叠加字符、时间以及标题等所有OSD字符)5-全部左对齐(包含叠加字符、时间以及标题等所有OSD字符)
BYTE byOSDMilliSecondEnable;//视频叠加时间支持毫秒0~不叠加, 1-叠加
NET_DVR_VILOST_V40 struVILost; //视频信号丢失报警(支持组)
NET_DVR_VILOST_V40 struAULost; /*音频信号丢失报警(支持组)*/
NET_DVR_MOTION_V40 struMotion; //移动侦测报警(支持组)
NET_DVR_HIDEALARM_V40 struHideAlarm; //遮挡报警(支持组)
NET_DVR_RGB_COLOR struOsdColor;//OSD颜色
DWORD dwBoundary; //边界值左对齐右对齐以及国标模式的边界值0-表示默认值,单位:像素;在国标模式下单位修改为字符个数范围是0,1,2
NET_DVR_RGB_COLOR struOsdBkColor; //自定义OSD背景色
BYTE byOSDBkColorMode; //OSD背景色模式0-默认1-自定义OSD背景色
BYTE byUpDownBoundary; //上下最小边界值选项单位为字符个数范围是0,1,2,国标模式下无效。byAlignment=3该字段无效通过dwBoundary进行边界配置.byAlignment不等于3的情况下 byUpDownBoundary/byLeftRightBoundary配置成功后dwBoundary值将不生效
BYTE byLeftRightBoundary; //左右最小边界值选项单位为字符个数范围是0,1,2, 国标模式下无效。byAlignment=3该字段无效通过dwBoundary进行边界配置.byAlignment不等于3的情况下 byUpDownBoundary/byLeftRightBoundary配置成功后dwBoundary值将不生效
BYTE byAngleEnabled;//OSD是否叠加俯仰角信息,0~不叠加, 1-叠加
WORD wTiltAngleTopLeftX; /* 俯仰角信息显示位置的x坐标 */
WORD wTiltAngleTopLeftY; /* 俯仰角信息显示位置的y坐标 */
BYTE byRes[108];
}NET_DVR_PICCFG_V40,*LPNET_DVR_PICCFG_V40;
//sdk function
DWORD NET_DVR_GetSDKVersion();
DWORD NET_DVR_GetSDKBuildVersion();
int NET_DVR_IsSupport();
// sdk init
BOOL NET_DVR_Init();
BOOL NET_DVR_Cleanup();
// login device
LONG NET_DVR_Login_V30(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo);
LONG NET_DVR_Login_V40(LPNET_DVR_USER_LOGIN_INFO pLoginInfo,LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo);
BOOL NET_DVR_Logout(LONG lUserID);
BOOL NET_DVR_Logout_V30(LONG lUserID);
// connect device
BOOL NET_DVR_SetConnectTime(DWORD dwWaitTime, DWORD dwTryTimes);
BOOL NET_DVR_SetReconnect(DWORD dwInterval, BOOL bEnableRecon);
// sdk capture
BOOL NET_DVR_CaptureJPEGPicture(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sPicFileName);
BOOL NET_DVR_CaptureJPEGPicture(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sPicFileName);
// stream play control
LONG NET_DVR_RealPlay_V30(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, void(*fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser), void* pUser, BOOL bBlocked);
BOOL NET_DVR_ClosePreview(LONG lUserID, DWORD nSessionID);
BOOL NET_DVR_ClosePlayBack(LONG lUserID, DWORD nSessionID);
LONG NET_DVR_RealPlay_V40(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, void* pUser);
BOOL NET_DVR_StopRealPlay(LONG lRealHandle);
BOOL NET_DVR_SaveRealData(LONG lRealHandle,char *sFileName);
BOOL NET_DVR_StopSaveRealData(LONG lRealHandle);
// device ptz control
BOOL NET_DVR_PTZControlWithSpeed(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed);
BOOL NET_DVR_PTZControlWithSpeed_Other(LONG lUserID, LONG lChannel, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed);
//云台控制相关接口
BOOL NET_DVR_PTZControl(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop);
BOOL NET_DVR_PTZControl_Other(LONG lUserID, LONG lChannel, DWORD dwPTZCommand, DWORD dwStop);
DWORD NET_DVR_GetLastError();
// alarm
BOOL NET_DVR_GetDeviceAbility(LONG lUserID, DWORD dwAbilityType, char* pInBuf, DWORD dwInLength, char* pOutBuf, DWORD dwOutLength);
BOOL NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned);
BOOL NET_DVR_SetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize);
BOOL NET_DVR_GetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD dwOutBufferSize);
BOOL NET_DVR_SetDeviceConfigEx(LONG lUserID, DWORD dwCommand, DWORD dwCount, NET_DVR_IN_PARAM *lpInParam, NET_DVR_OUT_PARAM *lpOutParam);
// 报警消息回调
typedef void (CALLBACK *MSGCallBack)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser);
BOOL NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, void* pUser);
typedef BOOL (CALLBACK *MSGCallBack_V31)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser);
BOOL NET_DVR_SetDVRMessageCallBack_V31(MSGCallBack_V31 fMessageCallBack, void* pUser);
BOOL NET_DVR_SetDVRMessageCallBack_V50(int iIndex, MSGCallBack fMessageCallBack, void* pUser);
BOOL NET_DVR_SetDVRMessageCallBack_V51(int iIndex, MSGCallBack fMsgCallBack, void* pUser);
// 报警消息监听
BOOL NET_DVR_StartListen(char *sLocalIP,WORD wLocalPort);
BOOL NET_DVR_StopListen();
LONG NET_DVR_StartListen_V30(char *sLocalIP, WORD wLocalPort, MSGCallBack DataCallback, void* pUserData);
BOOL NET_DVR_StopListen_V30(LONG lListenHandle);
BOOL NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter);
//报警
LONG NET_DVR_SetupAlarmChan(LONG lUserID);
BOOL NET_DVR_CloseAlarmChan(LONG lAlarmHandle);
LONG NET_DVR_SetupAlarmChan_V30(LONG lUserID);
BOOL NET_DVR_CloseAlarmChan_V30(LONG lAlarmHandle);
LONG NET_DVR_SetupAlarmChan_V41(LONG lUserID, LPNET_DVR_SETUPALARM_PARAM lpSetupParam);
// car capture
//BOOL NET_DVR_ManualSnap(LONG lUserID, NET_DVR_MANUALSNAP const* lpInter, LPNET_DVR_PLATE_RESULT lpOuter);
BOOL NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter);
#endif