#ifndef DHNETSDK_H #define DHNETSDK_H #if (defined(_MSC_VER)) #include #ifdef NETSDK_EXPORTS #if(defined(_WIN64) || defined(WIN64)) #define CLIENT_NET_API #else #define CLIENT_NET_API __declspec(dllexport) #endif #else #define CLIENT_NET_API __declspec(dllimport) #endif #define CALLBACK __stdcall #define CALL_METHOD __stdcall //__cdecl #define INT64 __int64 #define TP_U64 unsigned __int64 #ifndef LLONG #ifdef _WIN64 #define LLONG INT64 #else #define LLONG LONG #endif #endif #ifndef LDWORD #ifdef _WIN64 #define LDWORD INT64 #else #define LDWORD DWORD #endif #endif #else //non-windows #define CLIENT_NET_API extern "C" #define CALL_METHOD #define CALLBACK #ifndef INTERNAL_COMPILE #define RELEASE_HEADER #endif #ifdef RELEASE_HEADER #define WORD unsigned short #define DWORD unsigned int #define LONG int #define LPDWORD DWORD* #ifdef __OBJC__ #include "objc/objc.h" #else #define BOOL int #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define BYTE unsigned char #define UINT unsigned int #define HDC void* #define HWND void* #define LPVOID void* #ifndef NULL #define NULL 0 #endif #define LLONG long #define INT64 long long #define TP_U64 unsigned long long #define LDWORD long #ifndef MAX_PATH #define MAX_PATH 260 #endif #ifndef DEF_RECT ///@brief rect typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT; #define DEF_RECT #endif #else //内部编译 #include "../../SRC/Platform/osIndependent.h" #define INT64 int64 #define TP_U64 uint64 #endif // RELEASE_HEADER #endif // linux #ifndef LDWORD #if (defined(WIN32) || defined(_WIN32) || defined(_WIN64)) #ifdef _WIN64 #define LDWORD __int64 #else //WIN32 #define LDWORD DWORD #endif #else //linux #define LDWORD long #endif #endif #ifdef __cplusplus extern "C" { #endif /************************************************************************ ** 常量定义 ***********************************************************************/ #define DH_SERIALNO_LEN 48 // 设备序列号字符长度 #define DH_MAX_DISKNUM 256 // 最大硬盘个数 #define DH_MAX_SDCARDNUM 32 // 最大SD卡个数 #define DH_MAX_BURNING_DEV_NUM 32 // 最大刻录设备个数 #define DH_BURNING_DEV_NAMELEN 32 // 刻录设备名字最大长度 #define DH_MAX_LINK 6 #define DH_MAX_CHANNUM 16 // 最大通道个数 #define DH_MAX_DECODER_CHANNUM 64 // 解码器最大通道数 #define DH_MAX_ALARMIN 128 // 最大报警输入个数 #define DH_MAX_ALARMOUT 64 // 最大报警输出个数 #define DH_MAX_RIGHT_NUM 100 // 用户权限个数上限 #define DH_MAX_GROUP_NUM 20 // 用户组个数上限 #define DH_MAX_USER_NUM 200 // 用户个数上限 #define DH_RIGHT_NAME_LENGTH 32 // 权限名长度 #define DH_USER_NAME_LENGTH 8 // 用户名长度 #define DH_USER_PSW_LENGTH 8 // 用户密码长度 #define DH_CUSTOM_NAME_LENGTH 32 // 自定义名称长度 #define DH_USER_NAME_LEN_EX 32 // 用户名长度,用于新平台扩展 #define DH_USER_PSW_LEN_EX 32 // 用户密码长度,用于新平台扩展 #define DH_MEMO_LENGTH 32 // 备注长度 #define DH_MAX_STRING_LEN 128 #define MAX_STRING_LINE_LEN 6 // 最多六行 #define MAX_PER_STRING_LEN 20 // 每行最大长度 #define DH_MAX_MAIL_NAME_LEN 64 // 新的邮件结构体支持的用户名长度 #define DH_MAX_MAIL_PSW_LEN 64 // 新的邮件结构体支持的密码长度 #define DH_SPEEDLIMIT_TYPE_LEN 32 // 限速类型字符串长度 #define DH_VEHICLE_TYPE_LEN 32 // 车载自定义信息类型字符串长度 #define DH_VEHICLE_INFO_LEN 32 // 车载自定义信息字符串长度 #define DH_VEHICLE_DRIVERNO_LEN 32 // 车载自定义信息司机工号字符串长度 #define DH_MAX_CROSSING_NUM 128 // 最大点位 #define DH_MAX_CROSSING_ID 32 // 路口序列号最大长度 #define DH_MAX_CARD_INFO_LEN 256 // 卡号信息最大长度 #define DH_MAX_CHANNUM_EX 32 // 最大通道数扩展 #define DH_MAX_SAERCH_IP_NUM 256 // 最大搜索IP个数 #define DH_MAX_HARDDISK_TYPE_LEN 32 // 硬盘型号最大长度 #define DH_MAX_HARDDISK_SERIAL_LEN 32 // 硬盘序列号最大长度 #define DH_MAX_SIM_LEN 16 // SIM卡的值的最大长度 #define DH_MAX_SIM_NUM 10 // 车载SIM卡最大个数 #define DH_GATEWAY_MAX_SIM_NUM 8 // 网关SIM卡最大个数 #define DH_MAX_VERSION_LEN 32 // 软件版本号最大长度 #define DH_MAX_MDN_LEN 36 // MDN的值的最大长度 #define DH_MAX_NETINTERFACE_NUM 64 // 支持的网卡个数 #define DH_EVENT_NAME_LEN 128 // 事件名称长度 #define DH_STORAGE_NAME_LEN 128 // 存储设备名称长度 #define DH_MAX_CARPORTLIGHT_NUM 4 // 最大车位灯个数 #define DH_STATION_NAME_LEN 32 // 车站站点名称长度 #define PTZ_PRESET_NAME_LEN 64 // 云台预置点名称长度 #define DH_MAX_GUARD_DETECT_ID_COUNT 64 // 最大的岗亭检测ID个数 #define DH_MAX_VERSION_STR 64 // 版本字符串最大长度 #define DH_MAX_AUDIO_MATRIX_OUTPUT 8 // 每个音频矩阵支持的最大输出通道数 #define DH_MAX_CHANNEL_COUNT 16 // 支持最大通道数叠加 #define DH_COMMON_STRING_4 4 // 通用字符串长度4 #define DH_COMMON_STRING_8 8 // 通用字符串长度8 #define DH_COMMON_STRING_16 16 // 通用字符串长度16 #define DH_COMMON_STRING_32 32 // 通用字符串长度32 #define DH_COMMON_STRING_36 36 // 通用字符串长度36 #define DH_COMMON_STRING_64 64 // 通用字符串长度64 #define DH_COMMON_STRING_128 128 // 通用字符串长度128 #define DH_COMMON_STRING_256 256 // 通用字符串长度256 #define DH_COMMON_STRING_512 512 // 通用字符串长度512 #define DH_COMMON_STRING_1024 1024 // 通用字符串长度1024 #define DH_COMMON_STRING_2048 2048 // 通用字符串长度2048 #define DH_MAX_ACCESS_NAME_LEN 64 // 门禁名称长度 #define DH_MAX_EXALARMCHANNEL_NAME_LEN 128 // 扩展模块报警通道名称长度 #define DH_MAX_ALARM_SUBSYSTEM_NUM 256 // 最大报警子系统个数 #define DH_MAX_BELL_NUM 4 // 最大警号个数 #define DH_MAX_KEYBOARD_NUM 256 // 最大键盘数 #define MAX_GOURP_NUM 128 // 目标库最大个数 #define MAX_PWD_MODIFIEDTIME_LEN 20 // 密码修改时间最大长度 #define MAX_ONVIF_USER_NUM 20 // Onvif用户上限个数 #define DH_MAX_POS_EXCHANGE_INFO 64 // 每次查询POS交易信息时,交易信息数组的最大值 #define NET_INTERFACE_DEFAULT_TIMEOUT 3000 // 接口默认超时时间 #define DH_MAX_BUSCARD_NUM 64 // 公交卡号最大长度 #define DH_MAX_POS_MAC_NUM 8 // 刷卡机Mac码最大长度 #define DH_MAX_MARK_FILE_NAME_LEN 124 // 录像控制文件名最大长度 #define NET_MAX_ATTACHMENT_NUM 8 // 最大车辆物件数量 #define NET_MAX_ANNUUALINSPECTION_NUM 8 // 最大年检标识位置 #define NET_MAX_EVENT_PIC_NUM 6 // 最大原始图片张数 #define NET_MAX_MONTH_NUM 31 // 最大月份个数 #define NET_IPADDRSTR_LEN 46 // IP地址字符串长度 支持 ipv4-mapped-on-ipv6 #define NET_MAX_AP_NUM 3 // 最大AP个数 #define MAX_WEP_KEY_NUM 4 // 最大WEP密码个数 #define MAX_CARNO_LEN 20 // 最大车辆号长度 #define MAX_COACHNO_LEN 12 // 最大车厢号长度 #define MAX_WORKPATTERN_NUM 2 // 最大工作模式个数 #define MAX_NETPORT_NUM 5 // 最大网口个数 #define MAX_ANTIFLICKERMODE_COUNT 8 // 最大防闪烁模式最大个数 #define MAX_CATEGORY_LEN 64 // 最大物体类型长度 #define MAX_DANGER_GRADE_NUM 8 // 最大包裹危险等级个数 #define MAX_INSIDE_OBJECT_TYPE_NUM 32 // 最大包裹中物品类型个数 #define MAX_PATH_LEN 260 // 最大路径长度 #define MAX_XRAY_CHANNEL_NUM 10 // 最大X光检各类包裹数量统计信息的通道个数 #define MAX_HISTORY_TEMPERATURE_NUM 64 // 最大历史温度值的个数 #define MAX_TEMPERATURE_POINT_NUM 8 // 最大监测温度点的个数 #define MAX_GROUP_LEN 128 // 最大的组名长度 #define MAX_ILLEGAL_LOGIN_IP_LEN 40 // 最大的非法登陆IP长度 #define DH_COMMON_STRING_20 20 // 通用字符串长度20 #define MAX_EVENT_ID_LEN 52 // 国标事件ID最大长度 #define MAX_HUMANTRAIT_EVENT_LEN 36 // 补充人体特征上报事件最大长度 #define DH_COMMON_STRING_24 24 // 通用字符串长度24 #define MAX_TEMPERATUREEX_POINT_NUM 12 // 最大监测温度点的个数 #define MAX_PIRPARAM_NUM 10 // 最大pir配置的数组个数 #define MAX_ENCRYPT_SYSTEM_INFO_CONTENT_LEN 8192 // 加密系统信息内容的最大长度 #define MAX_LOCAL_EXT_ALARM_NAME_LEN 64 // 最大报警盒子的报警通道名称长度 #define MAX_TASK_ID_LEN 64 // 最大的任务ID长度 #define MAX_FILE_PATH_LEN 256 // 最大的图片路径长度 #define MAX_IMAGE_INFO_NUM 8 // 最大的图片信息个数 #define MAX_DIAL_RESULT_LEN 2048 // 最大的分析结果字符串长度 #define MAX_COUNTRY_CODE_LEN 4 // 最大的国家代号长度 #define MAX_PROVINCE_CODE_LEN 64 // 最大的省份代号长度 #define MAX_CITY_CODE_LEN 64 // 最大的城市代号长度 #define MAX_AREA_CODE_LEN 64 // 最大的区域代号长度 #define MAX_REQ_INFO_LEN 1600 // 最大的请求文件长度 #define MAX_SIP_SVR_ID_LEN 24 // 最大的SIP服务器ID长度 #define MAX_SIP_DOMAIN_LEN 128 // 最大的SIP域长度 #define MAX_SIP_SVR_IP_LEN 128 // 最大的SIP服务器IP长度 #define MAX_SIP_SERVER_DEVICE_ID_LEN 24 // 最大的设备编号长度 #define MAX_REG_PASSWORD_LEN 24 // 最大的注册密码长度 #define MAX_CIVIL_CODE_LEN 24 // 最大的行政区划代码长度 #define MAX_INTERVIDEO_ID_LEN 24 // 最大的接入模块识别码长度 #define MAX_CHANNEL_ID_LEN 24 // 最大的通道编号长度 #define MAX_SIP_SERVER_NUM 5 // 最大的SIP服务器信息个数 #define MAX_GB28181_PROTOCOL_VERSION 16 // 最大的GB28181协议版本长度 #define DH_MAX_FACEDETECT_FEATURE_NUM 32 // 目标特征最大个数 #define MAX_ATTACHMENT_NUM 8 // 最大车内物品个数 #define MAX_ERRORCODE_NUM 512 // 最大错误码个数 #define MAX_PUSH_STREAM_AUTH_SSID 80 // 设备推流鉴权ID最大长度 #define DH_MAX_IPADDRV4_LEN 16 // IPv4地址字符串长度 #define DH_MAX_IPADDRV6_LEN 64 // IPv6地址字符串长度 // 远程配置结构体相关常量 #define DH_MAX_MAIL_ADDR_LEN 128 // 邮件发(收)地址最大长度 #define DH_MAX_MAIL_SUBJECT_LEN 64 // 邮件主题最大长度 #define DH_MAX_IPADDR_LEN 16 // IP地址字符串长度 #define DH_MAX_IPADDR_LEN_EX 40 // 扩展IP地址字符串长度, 支持IPV6 #define DH_MACADDR_LEN 40 // MAC地址字符串长度 #define DH_MAX_URL_LEN 128 // URL字符串长度 #define DH_MAX_DEV_ID_LEN 48 // 机器编号最大长度 #define DH_MAX_HOST_NAMELEN 64 // 主机名长度, #define DH_MAX_HOST_PSWLEN 32 // 密码长度 #define DH_MAX_NAME_LEN 16 // 通用名字字符串长度 #define DH_MAX_ETHERNET_NUM 2 // 以太网口最大个数 #define DH_MAX_ETHERNET_NUM_EX 10 // 扩展以太网口最大个数 #define DH_DEV_SERIALNO_LEN 48 // 序列号字符串长度 #define DH_DEV_CLASS_LEN 16 // 设备类型字符串(如"IPC")长度 #define DH_DEV_TYPE_LEN 32 // 设备型号字符串(如"IPC-F725")长度 #define DH_N_WEEKS 7 // 一周的天数 #define DH_N_TSECT 6 // 通用时间段个数 #define DH_N_REC_TSECT 6 // 录像时间段个数 #define DH_N_COL_TSECT 2 // 颜色时间段个数 #define DH_CHAN_NAME_LEN 32 // 通道名长度,DVR DSP能力限制,最多32字节 #define DH_N_ENCODE_AUX 3 // 扩展码流个数 #define DH_N_TALK 1 // 最多对讲通道个数 #define DH_N_COVERS 1 // 遮挡区域个数 #define DH_N_CHANNEL 16 // 最大通道个数 #define DH_N_ALARM_TSECT 2 // 报警提示时间段个数 #define DH_MAX_ALARMOUT_NUM 16 // 报警输出口个数上限 #define DH_MAX_AUDIO_IN_NUM 16 // 音频输入口个数上限 #define DH_MAX_VIDEO_IN_NUM 16 // 视频输入口个数上限 #define DH_MAX_ALARM_IN_NUM 16 // 报警输入口个数上限 #define DH_MAX_DISK_NUM 16 // 硬盘个数上限,暂定为16 #define DH_MAX_DECODER_NUM 16 // 解码器(485)个数上限 #define DH_MAX_232FUNCS 10 // 232串口功能个数上限 #define DH_MAX_232_NUM 2 // 232串口个数上限 #define DH_MAX_232_NUM_EX 16 // 扩展串口配置个数上限 #define DH_MAX_DECPRO_LIST_SIZE 100 // 解码器协议列表个数上限 #define DH_FTP_MAXDIRLEN 240 // FTP文件目录最大长度 #define DH_MATRIX_MAXOUT 16 // 矩阵输出口最大个数 #define DH_TOUR_GROUP_NUM 6 // 矩阵输出组最大个数 #define DH_MAX_DDNS_NUM 10 // 设备支持的ddns服务器最大个数 #define DH_MAX_SERVER_TYPE_LEN 32 // ddns服务器类型,最大字符串长度 #define DH_MAX_DOMAIN_NAME_LEN 256 // ddns域名,最大字符串长度 #define DH_MAX_DDNS_ALIAS_LEN 32 // ddns服务器别名,最大字符串长度 #define DH_MAX_DEFAULT_DOMAIN_LEN 60 // ddns默认域名,最大字符串长度 #define DH_MOTION_ROW 32 // 动态检测区域的行数 #define DH_MOTION_COL 32 // 动态检测区域的列数 #define DH_STATIC_ROW 32 // 静态检测区域的行数 #define DH_STATIC_COL 32 // 静态检测区域的列数 #define DH_FTP_USERNAME_LEN 64 // FTP配置,用户名最大长度 #define DH_FTP_PASSWORD_LEN 64 // FTP配置,密码最大长度 #define DH_TIME_SECTION 2 // FTP配置,每天时间段个数 #define DH_FTP_MAX_PATH 240 // FTP配置,文件路径名最大长度 #define DH_FTP_MAX_SUB_PATH 128 // FTP配置,文件路径名最大长度 #define DH_INTERVIDEO_UCOM_CHANID 32 // 平台接入配置,通通道ID #define DH_INTERVIDEO_UCOM_DEVID 32 // 平台接入配置,通设备ID #define DH_INTERVIDEO_UCOM_REGPSW 16 // 平台接入配置,通注册密码 #define DH_INTERVIDEO_UCOM_USERNAME 32 // 平台接入配置,通用户名 #define DH_INTERVIDEO_UCOM_USERPSW 32 // 平台接入配置,通密码 #define DH_INTERVIDEO_NSS_IP 32 // 平台接入配置,IP #define DH_INTERVIDEO_NSS_SERIAL 32 // 平台接入配置,serial #define DH_INTERVIDEO_NSS_USER 32 // 平台接入配置,user #define DH_INTERVIDEO_NSS_PWD 50 // 平台接入配置,password #define DH_MAX_VIDEO_COVER_NUM 16 // 遮挡区域最大个数 #define DH_MAX_WATERMAKE_DATA 4096 // 水印图片数据最大长度 #define DH_MAX_WATERMAKE_LETTER 128 // 水印文字最大长度 #define DH_MAX_WLANDEVICE_NUM 10 // 最多搜索出的无线设备个数 #define DH_MAX_WLANDEVICE_NUM_EX 32 // 最多搜索出的无线设备个数 #define MAX_WLAN_DEVICE_NUM 128 // 最多搜索出的无线设备个数 #define DH_MAX_ALARM_NAME 64 // 地址长度 #define DH_MAX_REGISTER_SERVER_NUM 10 // 主动注册服务器个数 #define DH_SNIFFER_FRAMEID_NUM 6 // 6个FRAME ID 选项 #define DH_SNIFFER_CONTENT_NUM 4 // 每个FRAME对应的4个抓包内容 #define DH_SNIFFER_CONTENT_NUM_EX 8 // 每个FRAME对应的8个抓包内容 #define DH_SNIFFER_PROTOCOL_SIZE 20 // 协议名字长度 #define DH_MAX_PROTOCOL_NAME_LENGTH 20 #define DH_SNIFFER_GROUP_NUM 4 // 4组抓包设置 #define MAX_PATH_STOR 240 // 远程目录的长度 #define DH_ALARM_OCCUR_TIME_LEN 40 // 新的报警上传时间的长度 #define DH_VIDEO_OSD_NAME_NUM 64 // 叠加的名称长度,目前支持32个英文,16个中文 #define DH_VIDEO_CUSTOM_OSD_NUM 8 // 支持的自定义叠加的数目,不包含时间和通道 #define DH_VIDEO_CUSTOM_OSD_NUM_EX 256 // 支持的自定义叠加的数目,不包含时间和通道 #define DH_CONTROL_AUTO_REGISTER_NUM 100 // 支持定向主动注册服务器的个数 #define DH_MMS_RECEIVER_NUM 100 // 支持短信接收者的个数 #define DH_MMS_SMSACTIVATION_NUM 100 // 支持短信发送者的个数 #define DH_MMS_DIALINACTIVATION_NUM 100 // 支持拨号发送者的个数 #define DH_MAX_ALARMOUT_NUM_EX 32 // 报警输出口个数上限扩展 #define DH_MAX_VIDEO_IN_NUM_EX 32 // 视频输入口个数上限扩展 #define DH_MAX_ALARM_IN_NUM_EX 32 // 报警输入口个数上限 #define DH_MAX_IPADDR_OR_DOMAIN_LEN 64 // IP地址字符串长度 #define DH_MAX_CALLID 32 // 呼叫ID #define DH_MAX_OBJECT_LIST 16 // 智能分析设备检测到的物体ID个数上限 #define DH_MAX_OBJECT_NUM 32 // 最大object个数 #define DH_MAX_RULE_LIST 16 // 智能分析设备规则个数上限 #define DH_MAX_POLYGON_NUM 16 // 多边形最大顶点个数 #define DH_MAX_DETECT_LINE_NUM 20 // 规则检测线最大顶点数 #define DH_MAX_DETECT_REGION_NUM 20 // 规则检测区域最大顶点数 #define MAX_CARGO_CHANNEL_NUM 8 // 最大货物通道数 #define DH_MAX_TRACK_LINE_NUM 20 // 物体运动轨迹最大顶点数 #define DH_MAX_CANDIDATE_NUM 50 // 目标识别最大匹配数 #define DH_MAX_PERSON_IMAGE_NUM 48 // 每个人员对应的最大目标图片数 #define DH_MAX_FENCE_LINE_NUM 2 // 围栏最大曲线数 #define MAX_SMART_VALUE_NUM 30 // 最多的smart信息个数 #define DH_MACHINE_NAME_NUM 64 // 机器名称长度 #define DH_INTERVIDEO_AMP_DEVICESERIAL 48 // 平台接入配置 设备序列号字符串长度 #define DH_INTERVIDEO_AMP_DEVICENAME 16 // 平台接入配置 设备名称字符串长度 #define DH_INTERVIDEO_AMP_USER 32 // 平台接入配置 注册用户名字符串长度 #define DH_INTERVIDEO_AMP_PWD 32 // 平台接入配置 注册密码字符串长度 #define MAX_SUBMODULE_NUM 32 // 最多子模块信息个数 #define DH_MAX_CARWAY_NUM 8 // 交通抓拍,最大车道数 #define DH_MAX_SNAP_SIGNAL_NUM 3 // 一个车道的最大抓拍张数 #define DH_MAX_CARD_NUM 128 // 卡号的最大个数 #define DH_MAX_CARDINFO_LEN 32 // 每条卡号最长字符数 #define MAX_COMPANION_CARD_NUM 6 // 陪同者卡号最大个数 #define DH_MAX_CONTROLER_NUM 64 // 最大支持控制器数目 #define DH_MAX_LIGHT_NUM 32 // 最多控制灯组数 #define DH_MAX_SNMP_COMMON_LEN 64 // snmp 读写数据长度 #define DH_MAX_DDNS_STATE_LEN 128 // DDNS 状态信息长度 #define DH_MAX_PHONE_NO_LEN 16 // 电话号码长度 #define DH_MAX_MSGTYPE_LEN 32 // 导航类型或短信息类型长度 #define DH_MAX_MSG_LEN 256 // 导航和短信息长度 #define DH_MAX_DRIVINGDIRECTION 256 // 行驶方向字符串长度 #define DH_MAX_GRAB_INTERVAL_NUM 4 // 多张图片抓拍个数 #define DH_MAX_FLASH_NUM 5 // 最多支持闪光灯个数 #define DH_MAX_LANE_NUM 8 // 视频分析设备每个通道对应车道数上限 #define DH_MAX_ISCSI_PATH_NUM 64 // ISCSI远程目录最大数量 #define DH_MAX_WIRELESS_CHN_NUM 256 // 无线路由最大信道数 #define DH_PROTOCOL3_BASE 100 // 三代协议版本基数 #define DH_PROTOCOL3_SUPPORT 11 // 只支持3代协议 #define DH_MAX_CHANMASK 64 // 通道掩码最大值 #define DH_MAX_STAFF_NUM 20 // 浓缩视频配置信息中标尺数上限 #define DH_MAX_CALIBRATEBOX_NUM 10 // 浓缩视频配置信息中标定区域数上限 #define DH_MAX_EXCLUDEREGION_NUM 10 // 浓缩视频配置信息中排除区域数上限 #define DH_MAX_POLYLINE_NUM 20 // 浓缩视频配置信息中标尺线数 #define DH_MAX_COLOR_NUM 16 // 最大颜色数目 #define MAX_OBJFILTER_NUM 16 // 最大过滤种类个数 #define DH_MAX_SYNOPSIS_STATE_NAME 64 // 视频浓缩状态字符串长度 #define DH_MAX_SYNOPSIS_QUERY_FILE_COUNT 10 // 视频浓缩相关原始文件按照路径查找时文件个数上限 #define DH_MAX_SSID_LEN 36 // SSID长度 #define DH_MAX_APPIN_LEN 16 // PIN码长度 #define DH_NETINTERFACE_NAME_LEN 260 // 网口名称长度 #define DH_NETINTERFACE_TYPE_LEN 260 // 网络类型长度 #define DH_MAX_CONNECT_STATUS_LEN 260 // 连接状态字符串长度 #define DH_MAX_MODE_LEN 64 // 3G支持的网络模式长度 #define DH_MAX_MODE_NUM 64 // 3G支持的网络模式个数 #define DH_MAX_COMPRESSION_TYPES_NUM 16 // 视频编码格式最多种类个数 #define DH_MAX_CAPTURE_SIZE_NUM 64 // 视频分辨率个数 #define DH_NODE_NAME_LEN 64 // 组织结构节点名称长度 #define MAX_CALIBPOINTS_NUM 256 // 支持最大标定点数 #define DH_MAX_ATTR_NUM 32 // 显示单元属性最大数量 #define DH_MAX_CLOUDCONNECT_STATE_LEN 128 // 云注册连接状态信息长度 #define DH_MAX_IPADDR_EX_LEN 128 // 扩展IP地址最大长度 #define DH_MAX_PLATE_NUMBER_LEN 32 // 车牌字符串长度 #define DH_MAX_AUTHORITY_LIST_NUM 16 // 权限列表最大个数 #define DH_MAX_CITY_NAME_LEN 64 // 城市名称最大长度 #define DH_MAX_PROVINCE_NAME_LEN 64 // 省份名称最大长度 #define DH_MAX_PERSON_ID_LEN 32 // 人员id最大长度 #define MAX_FACE_AREA_NUM 8 // 最大目标区域个数 #define MAX_FACE_DB_NUM 8 // 最大目标数据库个数 #define MAX_EVENT_NAME 128 // 最长事件名 #define DH_MAX_ETH_NAME 64 // 最大网卡名 #define DH_MAX_PERSON_NAME_LEN 64 // 人员名字最大长度 #define DH_N_SCHEDULE_TSECT 8 // 时间表元素个数 #define DH_MAX_URL_NUM 8 // URL最大个数 #define DH_MAX_LOWER_MITRIX_NUM 16 // 最大下位矩阵数 #define DH_MAX_BURN_CHANNEL_NUM 32 // 最大刻录通道数 #define DH_MAX_NET_STRORAGE_BLOCK_NUM 64 // 最大远程存储区块数量 #define DH_MAX_CASE_PERSON_NUM 32 // 案件人员最大数量 #define DH_MAX_MULTIPLAYBACK_CHANNEL_NUM 64 // 最大多通道预览回放通道数 #define DH_MAX_MULTIPLAYBACK_SPLIT_NUM 32 // 最大多通道预览回放分割模式数 #define DH_MAX_AUDIO_ENCODE_TYPE 64 // 最大语音编码类型个数 #define MAX_LOG_PATH_LEN 260 // 日志路径名最大长度 #define MAX_CARD_RECORD_FIELD_NUM 16 // 卡号录像最大域数量 #define DH_BATTERY_NUM_MAX 16 // 最大电池数量 #define DH_POWER_NUM_MAX 16 // 最大电源数量 #define DH_MAX_AUDIO_PATH 260 // 最大音频文件路长度 #define DH_MAX_DOORNAME_LEN 128 // 最大门禁名称长度 #define DH_MAX_CARDPWD_LEN 64 // 最大门禁名称长度 #define NET_MAX_FISHEYE_MOUNTMODE_NUM 4 // 最大鱼眼安装模式个数 #define NET_MAX_FISHEYE_CALIBRATEMODE_NUM 16 // 最大鱼眼矫正模式个数 #define NET_MAX_FISHEYE_EPTZCMD_NUM 64 // 最大鱼眼电子云台操作个数 #define POINT_NUM_IN_PAIR 2 // 标定点对中的点数量 #define MAX_POINT_PAIR_NUM 128 // 标定点最大数量 #define CHANNEL_NUM_IN_POINT_GROUP 2 // 标定点中的视频通道数 #define MAX_POINT_GROUP_NUM 32 // 标定点组最大数量, 每两个通道进行拼接需要一组标定点 #define MAX_LANE_INFO_NUM 32 // 最大车道信息数 #define MAX_LANE_DIRECTION_NUM 8 // 车道方向总数 #define DH_MAX_MONITORWALL_NUM 32 // 电视墙最大数量 #define DH_MAX_OPTIONAL_URL_NUM 8 // 备用url最大数量 #define DH_MAX_CAMERA_CHANNEL_NUM 1024 // 最大摄像机通道数 #define MAX_SIMILARITY_COUNT 1024 // 最大目标对比库阈值个数 #define MAX_FEATURESTATE_NUM 4 // 最大目标组建模状态个数 #define MAX_FILE_SUMMARY_NUM 32 // 最大文件摘要数 #define MAX_AUDIO_ENCODE_NUM 64 // 最大支持音频编码个数 #define MAX_MONITORWALL_NAME_LEN 64 // 电视墙名称最大长度 #define MAX_FLASH_LIGHT_NUM 8 // 最大支持的爆闪灯(闪光灯)个数 #define MAX_STROBOSCOPIC_LIGHT_NUM 8 // 最大支持的频闪灯个数 #define MAX_MOSAIC_NUM 8 // 最大支持的马赛克数量 #define MAX_MOSAIC_CHANNEL_NUM 256 // 支持马赛克叠加的最多通道数量 #define MAX_FIREWARNING_INFO_NUM 4 // 最大热成像着火点报警信息个数 #define MAX_AXLE_NUM 8 // 最大车轴数量 #define DH_MAX_BULLET_HOLES 10 // 最大的弹孔数 #define MAX_PLATE_NUM 64 // 每张图片中包含的最大车牌个数 #define MAX_PREVIEW_CHANNEL_NUM 64 // 最大导播预览的通道数量 #define MAX_EVENT_RESTORE_UUID 36 // 事件重传uuid数组大小 #define MAX_EVENT_RESTORE_CODE_NUM 8 // 最大事件重传类型个数 #define MAX_EVENT_RESOTER_CODE_TYPE 32 // 事件重传类型数组大小 #define MAX_SNAP_TYPE 3 // 抓图类型数量 #define MAX_MAINFORMAT_NUM 4 // 最大支持主码流类型数量 #define CUSTOM_TITLE_LEN 1024 // 自定义标题名称长度(扩充到1024) #define MAX_CUSTOM_TITLE_NUM 8 // 编码物件自定义标题最大数量 #define FORMAT_TYPE_LEN 16 // 编码类型名最大长度 #define MAX_CHANNEL_NAME_LEN 256 // 通道名称最大长度 #define MAX_VIRTUALINFO_DOMAIN_LEN 64 // 虚拟身份上网域名长度 #define MAX_VIRTUALINFO_TITLE_LEN 64 // 虚拟身份上网标题长度 #define MAX_VIRTUALINFO_USERNAME_LEN 32 // 虚拟身份用户名长度 #define MAX_VIRTUALINFO_PASSWORD_LEN 32 // 虚拟身份密码长度 #define MAX_VIRTUALINFO_PHONENUM_LEN 12 // 虚拟身份手机号长度 #define MAX_VIRTUALINFO_IMEI_LEN 16 // 虚拟身份国际移动设备标识长度 #define MAX_VIRTUALINFO_IMSI_LEN 16 // 虚拟身份国际移动用户识别码长度 #define MAX_VIRTUALINFO_LATITUDE_LEN 16 // 虚拟身份经度长度 #define MAX_VIRTUALINFO_LONGITUDE_LEN 16 // 虚拟身份纬度长度 #define MAX_VIRTUALINFO_NUM 1024 // 最大虚拟身份信息个数 #define MAX_CALL_ID_LEN 64 // 呼叫ID长度 #define MAX_FACE_DATA_LEN 2048 // 目标模版数据最大长度 #define MAX_FACE_DATA_NUM 20 // 目标模版最大个数 #define MAX_PHOTO_COUNT 5 // 目标照片最大个数 #define MAX_FINGERPRINT_NUM 10 // 最大信息个数 #define MAX_RINGFILE_NUM 64 // 最大门铃音频文件个数 #define MAX_VIDEOIN_CONFLICT_NUM 128 // 视频输出能力冲突最大组合数 #define MAX_COURSE_LOGIC_CHANNEL 64 // 录播主机最大逻辑通道数 #define MAX_COMMON_STRING_8 8 // 通用字符串长度8 #define MAX_COMMON_STRING_16 16 // 通用字符串长度16 #define MAX_COMMON_STRING_32 32 // 通用字符串长度32 #define MAX_COMMON_STRING_64 64 // 通用字符串长度64 #define MAX_MAN_LIST_COUNT 64 // 人员列表最大数量 #define MAX_COMMON_STRING_128 128 // 通用字符串长度128 #define MAX_STREAM_NUM 4 // 最大码流个数 #define MAX_CELL_PHONE_NUMBER_LEN 32 // 最大手机号长度 #define MAX_MAIL_LEN 64 // 邮箱最大长度 #define MAX_USER_NAME_LEN 128 // 最大用户名长度 #define MAX_PWD_LEN 128 // 最大密码长度 #define MAX_SECURITY_CODE_LEN 16 // 平台发送到预留手机/邮箱中安全码最大长度 #define MAX_PWD_SPEC_CHARS_ARRAY_LEN 128 // 密码规范中密码特殊字符列表最大长度 #define MAX_PWD_BASIC_CHARS_ARRAY_LEN 128 // 密码规范中支持的基本字符类型列表最大长度 #define MAX_COMMON_STRING_512 512 // 通用字符串长度512 #define MAX_RFIDELETAG_CARDID_LEN 16 // RFID 电子车牌标签信息中卡号最大长度 #define MAX_RFIDELETAG_DATE_LEN 16 // RFID 电子车牌标签信息中时间最大长度 #define MAX_LINK_NAME_LEN 16 // 连接名称长度 #define MAX_SERVER_ADDRESS_LEN 64 // 服务器IP长度 #define LINK_LAYER_VPN_NUM 64 // 链路层VPN配置个数 #define MAX_SERVER_IP_LEN 32 // 服务器IP长度 #define MAX_SCENICSPOT_POINTS_NUM 256 // 总共有多少个景物点信息 #define MAX_ACCESSSUBCONTROLLER_NUM 64 // 最大门禁分控器数量 #define MAX_ACCESSDOOR_NUM 128 // 最大门数量 #define MAX_ACCESS_READER_NUM 32 // 门禁单个门最大读卡器数量 #define MAX_ACCESS_POINT_NUM 32 // 反潜路径最大节点个数 #define MAX_CONFIG_NAME_LEN 128 // 最大配置名称长度 #define MAX_PLATE_NUMBER_LEN 64 // 最大车牌号码长度 #define MAX_MASTER_OF_CAR_LEN 32 // 最大车主姓名长度 #define MAX_USER_TYPE_LEN 32 // 最大用户类型长度 #define MAX_SUB_USER_TYPE_LEN 64 // 最大用户子类型长度 #define MAX_REMARKS_LEN 64 // 最大备注信息长度 #define MAX_PARK_CHARGE_LEN 32 // 最大停车费长度 #define MAX_IN_TIME_LEN 32 // 最大车辆入场时间长度 #define MAX_OUT_TIME_LEN 32 // 最大车辆出场时间长度 #define MAX_CUSTOM_LEN 128 // 最大自定义显示长度 #define MAX_DEAL_NUM_LEN 32 // 最大小票交易号长度 #define MAX_STORE_NO_LEN 32 // 最大店号长度 #define MAX_STORE_NAME_LEN 32 // 最大店名长度 #define MAX_STORE_EMPLOYEE_ID_LEN 32 // 最大收银员工号长度 #define MAX_PRODUCT_NO_LEN 32 // 最大商品代码长度 #define MAX_PRODUCT_NAME_LEN 32 // 最大商品名称长度 #define MAX_PRODUCT_CATEGORY_LEN 32 // 最大商品类别长度 #define DH_MAX_FINGER_PRINT 10 // 信息ID数组最大长度 #define MAX_SUBCHANNEL_NUM 16 // 视频子通道(采集器)最大个数 #define MAX_NAME_LENGTH 32 // 最大姓名长度 #define MAX_SNAP_URL_LEN 128 // 最大抓图地址长度 #define MAX_CODE_LEN 64 // 最大物品编号长度 #define MAX_PERSON_INFO_NUM 4 // 最大目标信息个数 #define MAX_GOOD_INFO_NUM 128 // 最大物品信息个数 #define MAX_SUB_TAG_NUM 20 // 子标签最大个数 #define MAX_MANUFACTURER_LEN 32 // 最大的Mac地址所属制造商长度 #define MAX_MACHISTORY_SSID_LEN 24 // 最大的历史SSID长度 #define MAX_MACHISTORY_SSID_NUM 5 // 历史SSID的最大个数 #define MAX_ROUTE_NUM 16 // 最大路由数量 #define MAX_MCU_NUM 10 // 最大报警主机单片机个数 #define MAX_ALARM_CHANNEL_NAME_LEN 64 // 最大报警名称长度 #define MAX_INSIDEOBJECT_NUM 32 // 最大包裹内物品个数 #define DH_PRETASK_CHANNEL 4 // 视频浓缩预处理任务 #define MAX_AGE_NUM 2 // 最大年龄个数 #define MAX_EMOTION_NUM 8 // 最大表情条件的个数 #define MAX_CLASS_NUMBER_LEN 32 // 最大班级长度 #define MAX_PHONENUMBER_LEN 16 // 最大电话长度 #define MAX_NASFILE_NUM 8 // 最大NAS文件个数 #define MAX_CROWD_DETECTION_NAME_LEN 128 // 最大人群密度检测事件名称长度 #define MAX_CROWD_LIST_NUM 5 // 最大全局拥挤人群密度列表个数 #define MAX_REGION_LIST_NUM 8 // 最大人数超限的报警区域ID列表个数 #define MAX_RECORD_ENCRYPT_PASSWD_LEN 128 // 最大的录像加密密码长度 #define MAX_EVENT_NAME_LEN 128 // 最大事件名称长度 #define MAX_ABSTRACT_INFO_NUM 100 // 最大目标特征向量重建结果个数 #define MAX_ACCESS_FLOOR_NUM 64 // 最大楼层数量 #define MAX_TARGET_OBJECT_NUM 100 // 最大目标物体信息个数 #define MAX_MACADDR_NUM 8 // 最大物理地址个数 #define MAX_ADD_DEVICE_NUM 16 // 最大添加设备个数 #define MAX_LINK_DEVICE_NUM 1024 // 最大连接设备个数 #define MAX_DEVICE_CHANNEL_NUM 1024 // 设备最大通道个数 #define MAX_PLATE_TAILNUM 10 // 最大限号个数 #define MAX_OBJECT_NUM_EX 100 // 对象的最大个数 #define MAX_LOCAL_IP_LEN 64 // 最大本地IP长度 #define MAX_LV_NAME_NUM 64 // 最大的分区名称个数 #define MAX_LV_NAME_LEN 128 // 最大的分区名称长度 #define MAX_KEY_LEN 64 // 最大的关键字长度 #define MAX_FILE_FINDER_PATH_NUM 10 // 最大的查询文件路径个数 #define MAX_FILE_FINDER_PATH_LEN 256 // 最大的查询文件路径长度 #define MAX_FILE_LIST_NUM 16 // 最大的查询文件列表个数 #define MAX_FILE_LIST_LEN 256 // 最大的查询文件列表长度 #define MAX_PARKINGLOCK_STATE_NUM 6 // 最大车位锁状态个数 #define MAX_COMMON_STRING_256 256 // 通用字符串长度256 #define MAX_COMMON_STRING_2048 2048 // 通用字符串长度2048 #define MAX_RESOURCE_LEN 64 // 最大资源文件长度 #define MAX_COMPANY_NAME_LEN 200 // 单位名称最大长度 #define MAX_CONTACT_LEN 16 // 接收安全码的联系方式最大长度 #define MAX_RADAR_SD_NUM 24 // 单雷达联动的最大球机数 #define MAX_FLEXION_INFO_NUM 512 // 拐点信息最大个数 #define MAX_CALIBRATE_PLOYGON_AREA_NUM 20 // 标定多边形区域最大顶点个数 #define MAX_CALIBRATE_RECT_NUM 10 // 标定框最大个数 #define MAX_SCENE_NUM 32 // 最大场景个数 #define MAX_SNAP_SHOT_NUM 8 // 最大抓拍张数 #define MAX_AIRPORT_VEHICLE_OBJECT_NUM 16 // 最大机场保障车检测个数 #define MAX_UPGRADER_SERIAL_INFO 8 // 设备中可升级程序的最大个数 // 查询类型,对应CLIENT_QueryDevState接口 #define DH_DEVSTATE_COMM_ALARM 0x0001 // 查询普通报警状态(包括外部报警,视频丢失,动态检测) #define DH_DEVSTATE_SHELTER_ALARM 0x0002 // 查询遮挡报警状态 #define DH_DEVSTATE_RECORDING 0x0003 // 查询录象状态 #define DH_DEVSTATE_DISK 0x0004 // 查询硬盘信息 #define DH_DEVSTATE_RESOURCE 0x0005 // 查询系统资源状态 #define DH_DEVSTATE_BITRATE 0x0006 // 查询通道码流 #define DH_DEVSTATE_CONN 0x0007 // 查询设备连接状态 #define DH_DEVSTATE_PROTOCAL_VER 0x0008 // 查询网络协议版本号,pBuf = int* #define DH_DEVSTATE_TALK_ECTYPE 0x0009 // 查询设备支持的语音对讲格式列表,见结构体DHDEV_TALKFORMAT_LIST #define DH_DEVSTATE_SD_CARD 0x000A // 查询SD卡信息(IPC类产品) #define DH_DEVSTATE_BURNING_DEV 0x000B // 查询刻录机信息 #define DH_DEVSTATE_BURNING_PROGRESS 0x000C // 查询刻录进度 #define DH_DEVSTATE_PLATFORM 0x000D // 查询设备支持的接入平台 #define DH_DEVSTATE_CAMERA 0x000E // 查询摄像头属性信息(IPC类产品),pBuf = DHDEV_CAMERA_INFO *,可以有多个结构体 #define DH_DEVSTATE_SOFTWARE 0x000F // 查询设备软件版本信息 #define DH_DEVSTATE_LANGUAGE 0x0010 // 查询设备支持的语音种类 #define DH_DEVSTATE_DSP 0x0011 // 查询DSP能力描述(对应结构体DHDEV_DSP_ENCODECAP) #define DH_DEVSTATE_OEM 0x0012 // 查询OEM信息 #define DH_DEVSTATE_NET 0x0013 // 查询网络运行状态信息 #define DH_DEVSTATE_TYPE 0x0014 // 查询设备类型 #define DH_DEVSTATE_SNAP 0x0015 // 查询功能属性(IPC类产品) #define DH_DEVSTATE_RECORD_TIME 0x0016 // 查询最早录像时间和最近录像时间 #define DH_DEVSTATE_NET_RSSI 0x0017 // 查询无线网络信号强度,见结构体DHDEV_WIRELESS_RSS_INFO #define DH_DEVSTATE_BURNING_ATTACH 0x0018 // 查询附件刻录选项 #define DH_DEVSTATE_BACKUP_DEV 0x0019 // 查询备份设备列表 #define DH_DEVSTATE_BACKUP_DEV_INFO 0x001a // 查询备份设备详细信息 #define DH_DEVSTATE_BACKUP_FEEDBACK 0x001b // 备份进度反馈 #define DH_DEVSTATE_ATM_QUERY_TRADE 0x001c // 查询ATM交易类型 #define DH_DEVSTATE_SIP 0x001d // 查询sip状态 #define DH_DEVSTATE_VICHILE_STATE 0x001e // 查询车载wifi状态 #define DH_DEVSTATE_TEST_EMAIL 0x001f // 查询邮件配置是否成功 #define DH_DEVSTATE_SMART_HARD_DISK 0x0020 // 查询硬盘smart信息 #define DH_DEVSTATE_TEST_SNAPPICTURE 0x0021 // 查询抓图设置是否成功 #define DH_DEVSTATE_STATIC_ALARM 0x0022 // 查询静态报警状态 #define DH_DEVSTATE_SUBMODULE_INFO 0x0023 // 查询设备子模块信息 #define DH_DEVSTATE_DISKDAMAGE 0x0024 // 查询硬盘坏道能力 #define DH_DEVSTATE_IPC 0x0025 // 查询设备支持的IPC能力, 见结构体DH_DEV_IPC_INFO #define DH_DEVSTATE_ALARM_ARM_DISARM 0x0026 // 查询报警布撤防状态 #define DH_DEVSTATE_ACC_POWEROFF_ALARM 0x0027 // 查询ACC断电报警状态(返回一个DWORD, 1表示断电,0表示通电) #define DH_DEVSTATE_TEST_FTP_SERVER 0x0028 // 测试FTP服务器连接 #define DH_DEVSTATE_3GFLOW_EXCEED 0x0029 // 查询3G流量超出阈值状态,(见结构体DHDEV_3GFLOW_EXCEED_STATE_INFO) #define DH_DEVSTATE_3GFLOW_INFO 0x002a // 查询3G网络流量信息,见结构体DH_DEV_3GFLOW_INFO #define DH_DEVSTATE_VIHICLE_INFO_UPLOAD 0x002b // 车载自定义信息上传(见结构体ALARM_VEHICLE_INFO_UPLOAD) #define DH_DEVSTATE_SPEED_LIMIT 0x002c // 查询限速报警状态(见结构体 ALARM_SPEED_LIMIT) #define DH_DEVSTATE_DSP_EX 0x002d // 查询DSP扩展能力描述(对应结构体DHDEV_DSP_ENCODECAP_EX) #define DH_DEVSTATE_3GMODULE_INFO 0x002e // 查询3G模块信息(对应结构体DH_DEV_3GMODULE_INFO) #define DH_DEVSTATE_MULTI_DDNS 0x002f // 查询多DDNS状态信息(对应结构体DH_DEV_MULTI_DDNS_INFO) #define DH_DEVSTATE_CONFIG_URL 0x0030 // 查询设备配置URL信息(对应结构体DH_DEV_URL_INFO) #define DH_DEVSTATE_HARDKEY 0x0031 // 查询HardKey状态(对应结构体DHDEV_HARDKEY_STATE) #define DH_DEVSTATE_ISCSI_PATH 0x0032 // 查询ISCSI路径列表(对应结构体DHDEV_ISCSI_PATHLIST) #define DH_DEVSTATE_DLPREVIEW_SLIPT_CAP 0x0033 // 查询设备本地预览支持的分割模式(对应结构体DEVICE_LOCALPREVIEW_SLIPT_CAP) #define DH_DEVSTATE_WIFI_ROUTE_CAP 0x0034 // 查询无线路由能力信息(对应结构体DHDEV_WIFI_ROUTE_CAP) #define DH_DEVSTATE_ONLINE 0x0035 // 查询设备的在线状态(返回一个DWORD, 1表示在线, 0表示断线) #define DH_DEVSTATE_PTZ_LOCATION 0x0036 // 查询云台状态信息(对应结构体 DH_PTZ_LOCATION_INFO) #define DH_DEVSTATE_MONITOR_INFO 0x0037 // 画面监控辅助信息(对应结构体DHDEV_MONITOR_INFO) #define DH_DEVSTATE_SUBDEVICE 0x0300 // 查询子设备(电源, 风扇等)状态(对应结构体CFG_DEVICESTATUS_INFO) #define DH_DEVSTATE_RAID_INFO 0x0038 // 查询RAID状态(对应结构体ALARM_RAID_INFO) #define DH_DEVSTATE_TEST_DDNSDOMAIN 0x0039 // 测试DDNS域名是否可用 #define DH_DEVSTATE_VIRTUALCAMERA 0x003a // 查询虚拟摄像头状态(对应 DHDEV_VIRTUALCAMERA_STATE_INFO) #define DH_DEVSTATE_TRAFFICWORKSTATE 0x003b // 获取设备工作视频/线圈模式状态等(对应DHDEV_TRAFFICWORKSTATE_INFO) #define DH_DEVSTATE_ALARM_CAMERA_MOVE 0x003c // 获取摄像机移位报警事件状态(对应ALARM_CAMERA_MOVE_INFO) #define DH_DEVSTATE_ALARM 0x003e // 获取外部报警状态(对应 NET_CLIENT_ALARM_STATE) #define DH_DEVSTATE_VIDEOLOST 0x003f // 获取视频丢失报警状态(对应 NET_CLIENT_VIDEOLOST_STATE) #define DH_DEVSTATE_MOTIONDETECT 0x0040 // 获取动态监测报警状态(对应 NET_CLIENT_MOTIONDETECT_STATE) #define DH_DEVSTATE_DETAILEDMOTION 0x0041 // 获取详细的动态监测报警状态(对应 NET_CLIENT_DETAILEDMOTION_STATE) #define DH_DEVSTATE_VEHICLE_INFO 0x0042 // 获取车载自身各种硬件信息(对应 DHDEV_VEHICLE_INFO) #define DH_DEVSTATE_VIDEOBLIND 0x0043 // 获取视频遮挡报警状态(对应 NET_CLIENT_VIDEOBLIND_STATE) #define DH_DEVSTATE_3GSTATE_INFO 0x0044 // 查询3G模块相关信息(对应结构体DHDEV_VEHICLE_3GMODULE) #define DH_DEVSTATE_NETINTERFACE 0x0045 // 查询网络接口信息(对应 DHDEV_NETINTERFACE_INFO) #define DH_DEVSTATE_PICINPIC_CHN 0x0046 // 查询画中画通道号(对应DWORD数组) #define DH_DEVSTATE_COMPOSITE_CHN 0x0047 // 查询融合屏通道信息(对应DH_COMPOSITE_CHANNEL数组) #define DH_DEVSTATE_WHOLE_RECORDING 0x0048 // 查询设备整体录像状态(对应BOOL), 只要有一个通道在录像,即为设备整体状态为录像 #define DH_DEVSTATE_WHOLE_ENCODING 0x0049 // 查询设备整体编码状态(对应BOOL), 只要有一个通道在编码,即为设备整体状态为编码 #define DH_DEVSTATE_DISK_RECORDE_TIME 0x004a // 查询设备硬盘录像时间信息(pBuf = DEV_DISK_RECORD_TIME*,可以有多个结构体) #define DH_DEVSTATE_BURNER_DOOR 0x004b // 是否已弹出刻录机光驱门(对应结构体 NET_DEVSTATE_BURNERDOOR) #define DH_DEVSTATE_GET_DATA_CHECK 0x004c // 查询光盘数据校验进度(对应 NET_DEVSTATE_DATA_CHECK) #define DH_DEVSTATE_ALARM_IN_CHANNEL 0x004f // 查询报警输入通道信息(对应NET_ALARM_IN_CHANNEL数组) #define DH_DEVSTATE_ALARM_CHN_COUNT 0x0050 // 查询报警通道数(对应NET_ALARM_CHANNEL_COUNT) #define DH_DEVSTATE_PTZ_VIEW_RANGE 0x0051 // 查询云台可视域状态(对应 DH_OUT_PTZ_VIEW_RANGE_STATUS ) #define DH_DEVSTATE_DEV_CHN_COUNT 0x0052 // 查询设备通道信息(对应NET_DEV_CHN_COUNT_INFO) #define DH_DEVSTATE_RTSP_URL 0x0053 // 查询设备支持的RTSP URL列表,见结构体DEV_RTSPURL_LIST #define DH_DEVSTATE_LIMIT_LOGIN_TIME 0x0054 // 查询设备登录的在线超时时间,返回一个BTYE,(单位:分钟) ,0表示不限制,非零正整数表示限制的分钟数 #define DH_DEVSTATE_GET_COMM_COUNT 0x0055 // 获取串口数 见结构体NET_GET_COMM_COUNT #define DH_DEVSTATE_RECORDING_DETAIL 0x0056 // 查询录象状态详细信息(pBuf = NET_RECORD_STATE_DETAIL*) #define DH_DEVSTATE_PTZ_PRESET_LIST 0x0057 // 获取当前云台的预置点列表(对应结构NET_PTZ_PRESET_LIST) #define DH_DEVSTATE_EXTERNAL_DEVICE 0x0058 // 外接设备信息(pBuf = NET_EXTERNAL_DEVICE*) #define DH_DEVSTATE_GET_UPGRADE_STATE 0x0059 // 获取设备升级状态(对应结构DHDEV_UPGRADE_STATE_INFO) #define DH_DEVSTATE_MULTIPLAYBACK_SPLIT_CAP 0x005a // 获取多通道预览分割能力( 对应结构体 NET_MULTIPLAYBACK_SPLIT_CAP ) #define DH_DEVSTATE_BURN_SESSION_NUM 0x005b // 获取刻录会话总数(pBuf = int*) #define DH_DEVSTATE_PROTECTIVE_CAPSULE 0x005c // 查询防护舱状态(对应结构体ALARM_PROTECTIVE_CAPSULE_INFO) #define DH_DEVSTATE_GET_DOORWORK_MODE 0x005d // 获取门锁控制模式( 对应 NET_GET_DOORWORK_MODE) #define DH_DEVSTATE_PTZ_ZOOM_INFO 0x005e // 查询云台获取光学变倍信息(对应 DH_OUT_PTZ_ZOOM_INFO ) #define DH_DEVSTATE_POWER_STATE 0x0152 // 查询电源状态(对应结构体DH_POWER_STATUS) #define DH_DEVSTATE_ALL_ALARM_CHANNELS_STATE 0x153 // 查询报警通道状态(对应结构体 NET_CLIENT_ALARM_CHANNELS_STATE) #define DH_DEVSTATE_ALARMKEYBOARD_COUNT 0x0154 // 查询串口上连接的报警键盘数(对应结构体NET_ALARMKEYBOARD_COUNT) #define DH_DEVSTATE_EXALARMCHANNELS 0x0155 // 查询扩展报警模块通道映射关系(对应结构体 NET_EXALARMCHANNELS) #define DH_DEVSTATE_GET_BYPASS 0x0156 // 查询通道旁路状态(对应结构体 NET_DEVSTATE_GET_BYPASS) #define DH_DEVSTATE_ACTIVATEDDEFENCEAREA 0x0157 // 获取激活的防区信息(对应结构体 NET_ACTIVATEDDEFENCEAREA) #define DH_DEVSTATE_DEV_RECORDSET 0x0158 // 查询设备记录集信息(对应 NET_CTRL_RECORDSET_PARAM) #define DH_DEVSTATE_DOOR_STATE 0x0159 // 查询门禁状态(对应NET_DOOR_STATUS_INFO) #define DH_DEVSTATE_ANALOGALARM_CHANNELS 0x1560 // 模拟量报警输入通道映射关系(对应NET_ANALOGALARM_CHANNELS) #define DH_DEVSTATE_GET_SENSORLIST 0x1561 // 获取设备支持的传感器列表(对应 NET_SENSOR_LIST) #define DH_DEVSTATE_ALARM_CHANNELS 0x1562 // 查询开关量报警模块通道映射关系(对应结构体 NET_ALARM_CHANNELS) // 如果设备不支持查询扩展报警模块通道,可以用该功能查询扩展通道的逻辑通道号,并当做本地报警通道使用 #define DH_DEVSTATE_GET_ALARM_SUBSYSTEM_ACTIVATESTATUS 0x1563 // 获取当前子系统启用状态( 对应 NET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES) #define DH_DEVSTATE_AIRCONDITION_STATE 0x1564 // 获取空调工作状态(对应 NET_GET_AIRCONDITION_STATE) #define DH_DEVSTATE_ALARMSUBSYSTEM_STATE 0x1565 // 获取子系统状态(对应NET_ALARM_SUBSYSTEM_STATE) #define DH_DEVSTATE_ALARM_FAULT_STATE 0x1566 // 获取故障状态(对应 NET_ALARM_FAULT_STATE_INFO) #define DH_DEVSTATE_DEFENCE_STATE 0x1567 // 获取防区状态(对应 NET_DEFENCE_STATE_INFO, 和旁路状态变化事件、本地报警事件、报警信号源事件的状态描述有区别,不能混用,仅个别设备使用) #define DH_DEVSTATE_CLUSTER_STATE 0x1568 // 获取集群状态(对应 NET_CLUSTER_STATE_INFO) #define DH_DEVSTATE_SCADA_POINT_LIST 0x1569 // 获取点位表路径信息(对应 NET_SCADA_POINT_LIST_INFO) #define DH_DEVSTATE_SCADA_INFO 0x156a // 获取监测点位信息(对应 NET_SCADA_INFO) #define DH_DEVSTATE_SCADA_CAPS 0x156b // 获取SCADA能力集(对应 NET_SCADA_CAPS) #define DH_DEVSTATE_GET_CODEID_COUNT 0x156c // 获取对码成功的总条数(对应 NET_GET_CODEID_COUNT) #define DH_DEVSTATE_GET_CODEID_LIST 0x156d // 查询对码信息(对应 NET_GET_CODEID_LIST) #define DH_DEVSTATE_ANALOGALARM_DATA 0x156e // 查询模拟量通道数据(对应 NET_GET_ANALOGALARM_DATA) #define DH_DEVSTATE_VTP_CALLSTATE 0x156f // 获取视频电话呼叫状态(对应 NET_GET_VTP_CALLSTATE) #define DH_DEVSTATE_SCADA_INFO_BY_ID 0x1570 // 通过设备、获取监测点位信息(对应 NET_SCADA_INFO_BY_ID) #define DH_DEVSTATE_SCADA_DEVICE_LIST 0x1571 // 获取当前主机所接入的外部设备ID(对应 NET_SCADA_DEVICE_LIST) #define DH_DEVSTATE_DEV_RECORDSET_EX 0x1572 // 查询设备记录集信息(带二进制数据)(对应 NET_CTRL_RECORDSET_PARAM) #define DH_DEVSTATE_ACCESS_LOCK_VER 0x1573 // 获取门锁软件版本号(对应 NET_ACCESS_LOCK_VER) #define DH_DEVSTATE_MONITORWALL_TVINFO 0x1574 // 获取电视墙显示信息(对应 NET_CTRL_MONITORWALL_TVINFO) #define DH_DEVSTATE_GET_ALL_POS 0x1575 // 获取所有用户可用Pos设备配置信息(对应 NET_POS_ALL_INFO) #define DH_DEVSTATE_GET_ROAD_LIST 0x1576 // 获取城市及路段编码信息(对应 NET_ROAD_LIST_INFO) #define DH_DEVSTATE_GET_HEAT_MAP 0x1577 // 获取热度统计信息(对应 NET_QUERY_HEAT_MAP) #define DH_DEVSTATE_GET_WORK_STATE 0x1578 // 获取盒子工作状态信息(对应 NET_QUERY_WORK_STATE) #define DH_DEVSTATE_GET_WIRESSLESS_STATE 0x1579 // 获取无线设备状态信息(对应 NET_GET_WIRELESS_DEVICE_STATE) #define DH_DEVSTATE_GET_REDUNDANCE_POWER_INFO 0x157a // 获取冗余电源信息(对应 NET_GET_REDUNDANCE_POWER_INFO) #define DH_DEVSTATE_GET_ACCESSORY_STATUS 0x157b // 获取配件状态(对应 NET_GET_ACCESSORY_STATUS) #define DH_DEVSTATE_GET_PTZ_TOURS 0x157c // 获取已经设置的巡航线路列表(对应 NET_GET_PTZ_TOURS_INFO) #define DH_DEVSTATE_GET_DEVWIRELESSSIGNAL_LIST 0x157d // 获取无线设备信号强度(对应 NET_GET_DEVWIRELESSSIGNAL_LIST ) #define DH_DEVSTATE_GET_ACCESSORY_INFO 0x157e // 获取配件信息(对应 NET_GET_ACCESSORY_INFO) #define DH_DEVSTATE_GET_UPNP_STATUS 0x157f // 获取UPnP映射状态(对应 NET_GET_UPNPSTATUS_INFO) ////////////////////////////////////////////////////////////////////// // 用于设置结构体 dwSize 成员的宏 #define _setdwSize(stu) ((stu).dwSize = sizeof(stu)) #define POINTERSIZE sizeof(void*) ////////////////////////////////////////////////////////////////////// #define CFG_MAX_ACCESSCONTROL_NUM 8 // 最大门禁操作的组合数 #define CFG_MAX_SUMMARY_LEN 1024 // 叠加到JPEG图片的摘要信息最大长度 #define CFG_MAX_DBKEY_NUM 64 // 数据库关键字最大值 #define CFG_MAX_CHANNELNAME_LEN 64 // 最大通道名称长度 #define CFG_MAX_VIDEO_CHANNEL_NUM 256 // 最大通道数256 #define CFG_MAX_CHANNEL_COUNT 16 #define CFG_MAX_PSTN_SERVER_NUM 8 // 最大报警电话服务器数 ///@brief 三态布尔类型 typedef enum tagNET_THREE_STATUS_BOOL { BOOL_STATUS_FALSE = 0 , BOOL_STATUS_TRUE , BOOL_STATUS_UNKNOWN , //未知 }NET_THREE_STATUS_BOOL; ////////////////////////////////////////////////////////////////////// ///@brief 空调工作模式 typedef enum __EM_AIRCONDITION_MODE { AIRCONDITION_MODE_UNKNOWN = 0, AIRCONDITION_MODE_AUTO, // 自动 AIRCONDITION_MODE_HOT, // 制热 AIRCONDITION_MODE_COLD, // 制冷 AIRCONDITION_MODE_WET, // 除湿 AIRCONDITION_MODE_WIND, // 通风 } EM_AIRCONDITION_MODE; ///@brief 空调送风模式 typedef enum __EM_AIRCONDITION_WINDMODE { AIRCONDITION_WINDMODE_UNKNOWN = 0, AIRCONDITION_WINDMODE_STOP, // 停止 AIRCONDITION_WINDMODE_AUTO, // 自动 AIRCONDITION_WINDMODE_HIGH, // 高速 AIRCONDITION_WINDMODE_MIDDLE, // 中速 AIRCONDITION_WINDMODE_LOW, // 低速 } EM_AIRCONDITION_WINDMODE; ///@brief 空调工作状态信息烟雾检测 typedef struct tagNET_AIRCONDITION_STATE_INFO { DWORD dwSize; BOOL bIsOnline; // 是否在线 BOOL bIsON; // 是否开启 int nTemperature; // 空调设定温度 EM_AIRCONDITION_MODE emAirconditionMode; // 空调工作模式 EM_AIRCONDITION_WINDMODE emAirconditionWindMode; // 空调送风模式 float fActualTemperature; // 环境实际温度 }NET_AIRCONDITION_STATE_INFO; ///@brief 获取空调工作状态(对应DH_DEVSTATE_AIRCONDITION_STATE命令) typedef struct tagNET_GET_AIRCONDITION_STATE { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 NET_AIRCONDITION_STATE_INFO stuAirConditionState; // 空调工作状态信息 }NET_GET_AIRCONDITION_STATE; ///@brief 开关量报警通道信息 typedef struct tagNET_ALARM_CHANNEL_INFO { DWORD dwSize; int nSlot; // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推 int nChannel; // 非本地报警通道在扩展模块上的通道号, 从0开始 char szName[DH_COMMON_STRING_128]; // 通道名称 }NET_ALARM_CHANNEL_INFO; ///@brief 本地(或远程)开关量报警通道和逻辑通道号映射关系 typedef struct tagNET_ALARM_CHANNELS { DWORD dwSize; int nMaxAlarmChannels; // 最大通道数 int nRetAlarmChannels; // 返回的通道数 NET_ALARM_CHANNEL_INFO* pstuChannelInfo; // 通道信息,用户分配内存 }NET_ALARM_CHANNELS; ///@brief 报警子系统状态类型 typedef enum __EM_ALARM_SUBSYSTEM_STATE_TYPE { ALARM_SUBSYSTEM_STATE_UNKNOWN = 0, ALARM_SUBSYSTEM_STATE_ACTIVE, // 已激活 ALARM_SUBSYSTEM_STATE_INACTIVE, // 未激活 ALARM_SUBSYSTEM_STATE_UNDISTRIBUTED, // 未分配 }EM_ALARM_SUBSYSTEM_STATE_TYPE; ///@brief 报警子系统状态, CLIENT_QueryDevState对应命令DH_DEVSTATE_ALARMSUBSYSTEM_STATE typedef struct tagNET_ALARM_SUBSYSTEM_STATE { DWORD dwSize; int nMaxAlarmSubSystem; // 有效子系统个数 EM_ALARM_SUBSYSTEM_STATE_TYPE emState[DH_MAX_ALARM_SUBSYSTEM_NUM]; // 子系统状态信息 }NET_ALARM_SUBSYSTEM_STATE; ///@brief 故障类型 typedef enum __EM_ALARM_FAULT_STATE_TYPE { EM_ALARM_FAULT_STATE_ALL = 0, // 所有类型 EM_ALARM_FAULT_STATE_CONNECTFAULT, // 连接故障 EM_ALARM_FAULT_STATE_BELLFAULT, // 警号故障 EM_ALARM_FAULT_STATE_KBFAULT, // 键盘故障 EM_ALARM_FAULT_STATE_KBTAMPER, // 键盘防拆 EM_ALARM_FAULT_STATE_SENSORSHORTOUT, // 传感器短路 EM_ALARM_FAULT_STATE_SENSORTAMPER, // 传感器防拆 }EM_ALARM_FAULT_STATE_TYPE; ///@brief 报警故障状态, 输入参数 typedef struct tagNET_IN_ALARM_FAULT_STATE { DWORD dwSize; EM_ALARM_FAULT_STATE_TYPE emType; // 待查询的类型 }NET_IN_ALARM_FAULT_STATE; ///@brief 报警故障状态, 输出参数 typedef struct tagNET_OUT_ALARM_FAULT_STATE { DWORD dwSize; int nConnectFaultState; // 0: 未知, 1: 正常, 2:故障 int nBell; // 警号有效个数 int anBellState[DH_MAX_BELL_NUM]; // 警号故障状态信息 0: 未知, 1: 正常, 2:故障 int nFaultKeyboard; // 键盘故障有效个数 int anFaultKeyboard[DH_MAX_KEYBOARD_NUM]; // 键盘故障信息 0: 未知, 1: 正常, 2:故障 int nTamperKeyboard; // 键盘有效防拆个数 int anTamperKeyboard[DH_MAX_KEYBOARD_NUM]; // 键盘防拆信息 0: 未知, 1: 正常, 2:故障 int nShortOutSensor; // 传感器有效短路个数 int anShortOutSensor[DH_MAX_ALARMIN]; // 传感器短路信息 0: 未知, 1: 正常, 2:故障 int nTamperSensor; // 传感器有效防拆个数 int anTamperSensor[DH_MAX_ALARMIN]; // 传感器防拆信息 0: 未知, 1: 正常, 2:故障 }NET_OUT_ALARM_FAULT_STATE; ///@brief 报警故障状态, CLIENT_QueryDevState对应命令DH_DEVSTATE_ALARM_FAULT_STATE typedef struct tagNET_ALARM_FAULT_STATE_INFO { DWORD dwSize; NET_IN_ALARM_FAULT_STATE stuIn; // 输入参数 NET_OUT_ALARM_FAULT_STATE stuOut; // 输出参数 }NET_ALARM_FAULT_STATE_INFO; ///@brief 防区状态类型 typedef enum __EM_DEFENCE_STATE_TYPE { EM_DEFENCE_STATE_UNKNOWN = 0, EM_DEFENCE_STATE_BYPASS, // 旁路 EM_DEFENCE_STATE_OPEN, // 打开, 指撤防情况下发生报警 EM_DEFENCE_STATE_CLOSE, // 关闭 EM_DEFENCE_STATE_ALARMING, // 报警, 指布防情况下发生报警 EM_DEFENCE_STATE_ISOLATED, //隔离 EM_DEFENCE_STATE_SHORT, //短路 EM_DEFENCE_STATE_BREAK, //断路 EM_DEFENCE_STATE_INTRUDED, //防拆 }EM_DEFENCE_STATE_TYPE; ///@brief 防区状态信息的输入参数 typedef struct tagNET_IN_DEFENCE_STATE_INFO { DWORD dwSize; int nDefenceNum; // 防区有效个数, -1表示查询所有防区 int anDefence[DH_MAX_ALARMIN]; // 待查询的防区号 }NET_IN_DEFENCE_STATE_INFO; ///@brief 防区状态信息的输出参数 typedef struct tagNET_OUT_DEFENCE_STATE_INFO { DWORD dwSize; int nDefenceNum; // 防区有效个数 EM_DEFENCE_STATE_TYPE anDefenceState[DH_MAX_ALARMIN]; // 防区状态信息 }NET_OUT_DEFENCE_STATE_INFO; ///@brief 获取防区状态信息的输入参数 typedef struct tagNET_IN_GET_DEFENCE_STATE_INFO { int nDefenceNum; // 防区有效个数, -1表示查询所有防区 int anDefence[512]; // 待查询的防区号 BYTE byReserved[512]; //保留字节 }NET_IN_GET_DEFENCE_STATE_INFO; ///@brief 获取防区状态信息的输出参数 typedef struct tagNET_OUT_GET_DEFENCE_STATE_INFO { int nDefenceNum; // 防区有效个数 EM_DEFENCE_STATE_TYPE anDefenceState[512]; // 防区状态信息 BYTE byReserved[512]; //保留字节 }NET_OUT_GET_DEFENCE_STATE_INFO; ///@brief 防区状态信息, CLIENT_QueryDevState对应命令DH_DEVSTATE_DEFENCE_STATE typedef struct tagNET_DEFENCE_STATE_INFO { DWORD dwSize; // 结构体大小 NET_IN_DEFENCE_STATE_INFO stuIn; // 输入参数 NET_OUT_DEFENCE_STATE_INFO stuOut; // 输出参数 }NET_DEFENCE_STATE_INFO; ///@brief 防区状态信息, CLIENT_QueryDevState对应命令DH_DEVSTATE_DEFENCE_STATE typedef struct tagNET_GET_DEFENCE_STATE_INFO { DWORD dwSize; NET_IN_GET_DEFENCE_STATE_INFO stuIn; // 输入参数 NET_OUT_GET_DEFENCE_STATE_INFO stuOut; // 输出参数 }NET_GET_DEFENCE_STATE_INFO; ///@brief 视频电话呼叫类型 typedef enum tagEM_NET_VTP_CALL_TYPE { EM_NET_VTP_CALL_TYPE_SIP = 0, // SIP呼叫 EM_NET_VTP_CALL_TYPE_GSM, // GSM呼叫 EM_NET_VTP_CALL_TYPE_PRIVATE, // 私有协议呼叫 }EM_NET_VTP_CALL_TYPE; ///@brief 视频电话呼叫状态类型 typedef enum tagEM_NET_VTP_CALL_STATE_TYPE { EM_NET_VTP_CALL_STATE_UNKNOWN = 0, EM_NET_VTP_CALL_STATE_IDLE, // 初始状态 EM_NET_VTP_CALL_STATE_CALLING, // 主叫呼叫状态(对方未回应) EM_NET_VTP_CALL_STATE_CALLED, // 被叫呼叫状态 EM_NET_VTP_CALL_STATE_RINGING, // 主叫回铃状态(对方回应, 但没有接听) EM_NET_VTP_CALL_STATE_CONNECTING, // 通话中状态 EM_NET_VTP_CALL_STATE_CONNECTING2, // 通话中2状态(通话媒体变更后的通话中状态) EM_NET_VTP_CALL_STATE_DISCONNECT, // 通话挂断状态 }EM_NET_VTP_CALL_STATE_TYPE; ///@brief 获取视频电话呼叫状态 (对应 DH_DEVSTATE_VTP_CALLSTATE) typedef struct tagNET_GET_VTP_CALLSTATE { DWORD dwSize; EM_NET_VTP_CALL_TYPE emCallType; // 待查询的呼叫类型, 输入参数 char szCallID[DH_COMMON_STRING_128]; // 待查询的对讲唯一标识, 输入参数 const char* szTargetID; // 待转发的设备ID, 为NULL表示不转发, 输入参数 EM_NET_VTP_CALL_STATE_TYPE emCallState; // 呼叫状态 }NET_GET_VTP_CALLSTATE; // 查询类型,对应CLIENT_QueryRemotDevState接口 #define DH_DEVSTATE_ALARM_REMOTE 0x1000 // 获取远程设备外部报警(对应 ALARM_REMOTE_ALARM_INFO) #define DH_DEVSTATE_ALARM_FRONTDISCONNECT 0x1001 // 获取前端IPC断网报警(对应结构体ALARM_FRONTDISCONNET_INFO) #define DH_DEVSTATE_GET_TRACKMOVESTATUS 0x1002 // 获取联动状态(对应 PTZ_GET_TRACKMOVESTATUS_INFO) // 配置类型,对应CLIENT_GetDevConfig和CLIENT_SetDevConfig接口 #define DH_DEV_DEVICECFG 0x0001 // 设备属性配置 #define DH_DEV_NETCFG 0x0002 // 网络配置 #define DH_DEV_CHANNELCFG 0x0003 // 图象通道配置 #define DH_DEV_PREVIEWCFG 0x0004 // 预览参数配置 #define DH_DEV_RECORDCFG 0x0005 // 录像配置 #define DH_DEV_COMMCFG 0x0006 // 串口属性配置 #define DH_DEV_ALARMCFG 0x0007 // 报警属性配置 #define DH_DEV_TIMECFG 0x0008 // DVR时间配置 #define DH_DEV_TALKCFG 0x0009 // 对讲参数配置 #define DH_DEV_AUTOMTCFG 0x000A // 自动维护配置 #define DH_DEV_VEDIO_MARTIX 0x000B // 本机矩阵控制策略配置 #define DH_DEV_MULTI_DDNS 0x000C // 多ddns服务器配置 #define DH_DEV_SNAP_CFG 0x000D // 抓图相关配置 #define DH_DEV_WEB_URL_CFG 0x000E // HTTP路径配置 #define DH_DEV_FTP_PROTO_CFG 0x000F // FTP上传配置 #define DH_DEV_INTERVIDEO_CFG 0x0010 // 平台接入配置,此时channel参数代表平台类型, // channel=4: 代表贝尔阿尔卡特;channel=10:代表力维;channel=11:代表U网通;channel=51:代表天地阳光 #define DH_DEV_VIDEO_COVER 0x0011 // 区域遮挡配置 #define DH_DEV_TRANS_STRATEGY 0x0012 // 传输策略配置,画质优先\流畅性优先 #define DH_DEV_DOWNLOAD_STRATEGY 0x0013 // 录象下载策略配置,高速下载\普通下载 #define DH_DEV_WATERMAKE_CFG 0x0014 // 图象水印配置 #define DH_DEV_WLAN_CFG 0x0015 // 无线网络配置 #define DH_DEV_WLAN_DEVICE_CFG 0x0016 // 搜索无线设备配置 #define DH_DEV_REGISTER_CFG 0x0017 // 主动注册参数配置 #define DH_DEV_CAMERA_CFG 0x0018 // 摄像头属性配置 #define DH_DEV_INFRARED_CFG 0x0019 // 红外报警配置 #define DH_DEV_SNIFFER_CFG 0x001A // Sniffer抓包配置 #define DH_DEV_MAIL_CFG 0x001B // 邮件配置 #define DH_DEV_DNS_CFG 0x001C // DNS服务器配置 #define DH_DEV_NTP_CFG 0x001D // NTP配置 #define DH_DEV_AUDIO_DETECT_CFG 0x001E // 音频检测配置 #define DH_DEV_STORAGE_STATION_CFG 0x001F // 存储位置配置 #define DH_DEV_PTZ_OPT_CFG 0x0020 // 云台操作属性(已经废除,请使用CLIENT_GetPtzOptAttr获取云台操作属性) #define DH_DEV_DST_CFG 0x0021 // 夏令时配置 #define DH_DEV_ALARM_CENTER_CFG 0x0022 // 报警中心配置 #define DH_DEV_VIDEO_OSD_CFG 0x0023 // 视频OSD叠加配置 #define DH_DEV_CDMAGPRS_CFG 0x0024 // CDMA\GPRS网络配置 #define DH_DEV_IPFILTER_CFG 0x0025 // IP过滤配置 #define DH_DEV_TALK_ENCODE_CFG 0x0026 // 语音对讲编码配置 #define DH_DEV_RECORD_PACKET_CFG 0x0027 // 录像打包长度配置 #define DH_DEV_MMS_CFG 0x0028 // 短信MMS配置 #define DH_DEV_SMSACTIVATION_CFG 0x0029 // 短信激活无线连接配置 #define DH_DEV_DIALINACTIVATION_CFG 0x002A // 拨号激活无线连接配置 #define DH_DEV_SNIFFER_CFG_EX 0x0030 // 网络抓包配置 #define DH_DEV_DOWNLOAD_RATE_CFG 0x0031 // 下载速度限制 #define DH_DEV_PANORAMA_SWITCH_CFG 0x0032 // 全景切换报警配置 #define DH_DEV_LOST_FOCUS_CFG 0x0033 // 失去焦点报警配置 #define DH_DEV_ALARM_DECODE_CFG 0x0034 // 报警解码器配置 #define DH_DEV_VIDEOOUT_CFG 0x0035 // 视频输出参数配置 #define DH_DEV_POINT_CFG 0x0036 // 预制点使能配置 #define DH_DEV_IP_COLLISION_CFG 0x0037 // Ip冲突检测报警配置 #define DH_DEV_OSD_ENABLE_CFG 0x0038 // OSD叠加使能配置 #define DH_DEV_LOCALALARM_CFG 0x0039 // 本地报警配置(结构体DH_ALARMIN_CFG_EX) #define DH_DEV_NETALARM_CFG 0x003A // 网络报警配置(结构体DH_ALARMIN_CFG_EX) #define DH_DEV_MOTIONALARM_CFG 0x003B // 动检报警配置(结构体DH_MOTION_DETECT_CFG_EX) #define DH_DEV_VIDEOLOSTALARM_CFG 0x003C // 视频丢失报警配置(结构体DH_VIDEO_LOST_CFG_EX) #define DH_DEV_BLINDALARM_CFG 0x003D // 视频遮挡报警配置(结构体DH_BLIND_CFG_EX) #define DH_DEV_DISKALARM_CFG 0x003E // 硬盘报警配置(结构体DH_DISK_ALARM_CFG_EX) #define DH_DEV_NETBROKENALARM_CFG 0x003F // 网络中断报警配置(结构体DH_NETBROKEN_ALARM_CFG_EX) #define DH_DEV_ENCODER_CFG 0x0040 // 数字通道的前端编码器信息(混合DVR使用,结构体DEV_ENCODER_CFG) #define DH_DEV_TV_ADJUST_CFG 0x0041 // TV调节配置(channel代表TV号(0开始),类型结构体) #define DH_DEV_ABOUT_VEHICLE_CFG 0x0042 // 车载相关配置 #define DH_DEV_ATM_OVERLAY_ABILITY 0x0043 // 获取atm叠加支持能力信息 #define DH_DEV_ATM_OVERLAY_CFG 0x0044 // atm叠加配置,新atm特有 #define DH_DEV_DECODER_TOUR_CFG 0x0045 // 解码器解码轮巡配置 #define DH_DEV_SIP_CFG 0x0046 // SIP配置 #define DH_DEV_VICHILE_WIFI_AP_CFG 0x0047 // wifi ap配置 #define DH_DEV_STATICALARM_CFG 0x0048 // 静态报警配置 #define DH_DEV_DECODE_POLICY_CFG 0x0049 // 设备的解码策略配置(结构体DHDEV_DECODEPOLICY_CFG,channel为解码通道0开始) #define DH_DEV_MACHINE_CFG 0x004A // 机器相关的配置(结构体DHDEV_MACHINE_CFG) #define DH_DEV_MAC_COLLISION_CFG 0x004B // MAC冲突检测配置(结构体 ALARM_MAC_COLLISION_CFG) #define DH_DEV_RTSP_CFG 0x004C // RTSP配置(对应结构体DHDEV_RTSP_CFG) #define DH_DEV_232_COM_CARD_CFG 0x004E // 232串口卡号信号事件配置(对应结构体COM_CARD_SIGNAL_LINK_CFG) #define DH_DEV_485_COM_CARD_CFG 0x004F // 485串口卡号信号事件配置(对应结构体COM_CARD_SIGNAL_LINK_CFG) #define DH_DEV_FTP_PROTO_CFG_EX 0x0050 // FTP上传扩展配置(对应结构体DHDEV_FTP_PROTO_CFG_EX) #define DH_DEV_SYSLOG_REMOTE_SERVER 0x0051 // SYSLOG 远程服务器配置(对应结构体DHDEV_SYSLOG_REMOTE_SERVER) #define DH_DEV_COMMCFG_EX 0x0052 // 扩展串口属性配置(对应结构体DHDEV_COMM_CFG_EX) #define DH_DEV_NETCARD_CFG 0x0053 // 卡口信息配置(对应结构体DHDEV_NETCARD_CFG) #define DH_DEV_BACKUP_VIDEO_FORMAT 0x0054 // 视频备份格式配置(对应结构体DHDEV_BACKUP_VIDEO_FORMAT) #define DH_DEV_STREAM_ENCRYPT_CFG 0x0055 // 码流加密配置(对应结构体DHEDV_STREAM_ENCRYPT) #define DH_DEV_IPFILTER_CFG_EX 0x0056 // IP过滤配置扩展(对应结构体DHDEV_IPIFILTER_CFG_EX) #define DH_DEV_CUSTOM_CFG 0x0057 // 用户自定义配置(对应结构体DHDEV_CUSTOM_CFG) #define DH_DEV_WLAN_DEVICE_CFG_EX 0x0058 // 搜索无线设备扩展配置(对应结构体DHDEV_WLAN_DEVICE_LIST_EX) #define DH_DEV_ACC_POWEROFF_CFG 0x0059 // ACC断线事件配置(对应结构体DHDEV_ACC_POWEROFF_CFG) #define DH_DEV_EXPLOSION_PROOF_CFG 0x005a // 防爆盒报警事件配置(对应结构体DHDEV_EXPLOSION_PROOF_CFG) #define DH_DEV_NETCFG_EX 0x005b // 网络扩展配置(对应结构体DHDEV_NET_CFG_EX) #define DH_DEV_LIGHTCONTROL_CFG 0x005c // 灯光控制配置(对应结构体DHDEV_LIGHTCONTROL_CFG) #define DH_DEV_3GFLOW_CFG 0x005d // 3G流量信息配置(对应结构体DHDEV_3GFLOW_INFO_CFG) #define DH_DEV_IPV6_CFG 0x005e // IPv6配置(对应结构体DHDEV_IPV6_CFG) #define DH_DEV_SNMP_CFG 0x005f // Snmp配置(对应结构体DHDEV_NET_SNMP_CFG), 设置完成后需要重启设备 #define DH_DEV_SNAP_CONTROL_CFG 0x0060 // 抓图开关配置(对应结构体DHDEV_SNAP_CONTROL_CFG) #define DH_DEV_GPS_MODE_CFG 0x0061 // GPS定位模式配置(对应结构体DHDEV_GPS_MODE_CFG) #define DH_DEV_SNAP_UPLOAD_CFG 0x0062 // 图片上传配置信息(对应结构体 DHDEV_SNAP_UPLOAD_CFG) #define DH_DEV_SPEED_LIMIT_CFG 0x0063 // 限速配置信息(对应结构体DHDEV_SPEED_LIMIT_CFG) #define DH_DEV_ISCSI_CFG 0x0064 // iSCSI配置(对应结构体DHDEV_ISCSI_CFG), 设置完成后需要重启设备 #define DH_DEV_WIRELESS_ROUTING_CFG 0x0065 // 无线路由配置(对应结构体DHDEV_WIRELESS_ROUTING_CFG) #define DH_DEV_ENCLOSURE_CFG 0x0066 // 电子围栏配置(对应结构体DHDEV_ENCLOSURE_CFG) #define DH_DEV_ENCLOSURE_VERSION_CFG 0x0067 // 电子围栏版本号配置(对应结构体DHDEV_ENCLOSURE_VERSION_CFG) #define DH_DEV_RIAD_EVENT_CFG 0x0068 // Raid事件配置(对应结构体DHDEV_RAID_EVENT_CFG) #define DH_DEV_FIRE_ALARM_CFG 0x0069 // 火警报警配置(对应结构体DHDEV_FIRE_ALARM_CFG) #define DH_DEV_LOCALALARM_NAME_CFG 0x006a // 本地名称报警配置(对应Name1&&name2&&name3...格式字符串) #define DH_DEV_URGENCY_RECORD_CFG 0x0070 // 紧急存储配置(对应结构体DHDEV_URGENCY_RECORD_CFG) #define DH_DEV_ELEVATOR_ATTRI_CFG 0x0071 // 电梯运行参数配置(对应结构体DHDEV_ELEVATOR_ATTRI_CFG) #define DH_DEV_ATM_OVERLAY_CFG_EX 0x0072 // atm叠加配置,新atm特有,支持大于32通道的设备(对应结构体DHDEV_ATM_OVERLAY_CONFIG_EX) #define DH_DEV_MACFILTER_CFG 0x0073 // MAC过滤配置(对应结构体DHDEV_MACFILTER_CFG) #define DH_DEV_MACIPFILTER_CFG 0x0074 // MAC,IP过滤(要求ip,mac是一一对应的)配置(对应结构体DHDEV_MACIPFILTER_CFG) #define DH_DEV_STREAM_ENCRYPT_TIME_CFG 0x0075 // 码流加密(加密计划)配置(对应结构体DHEDV_STREAM_ENCRYPT) #define DH_DEV_LIMIT_BIT_RATE_CFG 0x0076 // 限码流配置(对应结构体 DHDEV_LIMIT_BIT_RATE) #define DH_DEV_SNAP_CFG_EX 0x0077 // 抓图相关配置扩展(对应结构体 DHDEV_SNAP_CFG_EX) #define DH_DEV_DECODER_URL_CFG 0x0078 // 解码器url配置(对应结构体DHDEV_DECODER_URL_CFG) #define DH_DEV_TOUR_ENABLE_CFG 0x0079 // 轮巡使能配置(对应结构体DHDEV_TOUR_ENABLE_CFG) #define DH_DEV_VICHILE_WIFI_AP_CFG_EX 0x007a // wifi ap配置扩展(对应结构体DHDEV_VEHICLE_WIFI_AP_CFG_EX) #define DH_DEV_ENCODER_CFG_EX 0x007b // 数字通道的前端编码器信息扩展,(对应结构体 DEV_ENCODER_CFG_EX) // 下面几个是虚点测速仪的几个配置项 #define DH_DEV_ITC_HWS000_RA_CFG 0x007c // 虚点测速仪雷达角度配置(对应一个int值) #define DH_DEV_ITC_HWS000_HS_CFG 0x007d // 虚点测速仪超速触发值配置(对应一个int值) #define DH_DEV_ITC_HWS000_LS_CFG 0x007e // 虚点测速仪欠速触发值配置(对应一个int值) #define DH_DEV_ITC_HWS000_FL_CFG 0x007f // 虚点测速仪闪光灯亮度配置(对应一个int值) #define DH_DEV_ITC_HWS000_OC_CFG 0x0080 // 虚点测速仪超速总计数配置(对应一个int值) #define DH_DEV_ITC_HWS000_LC_CFG 0x0081 // 虚点测速仪欠速总计数配置(对应一个int值) #define DH_DEV_ITC_HWS000_AC_CFG 0x0082 // 虚点测速仪违章总计数配置(对应一个int值) #define DH_DEV_ITC_HWS000_FC_CFG 0x0083 // 虚点测速仪闪光灯闪烁次数配置(对应一个int值) #define DH_DEV_ITC_HWS000_ALL_CFG 0x0084 // 虚点测速仪查询以上全部的数值配置(对应DEV_ITC_HWS000_ALL_CFG) #define DH_DEV_ITC_HWS000_CLEAR_COUNT_CFG 0x0085 // 虚点测速仪清零4种计数配置(OC,LC,AC,FC 对应一个int值) #define DH_DEV_IPV4_CFG 0x0086 // IPV4配置(对应结构体 DEV_IPV4_CFG) #define DH_DEV_ENCODER_CFG_EX2 0x0087 // 数字通道的前端编码器信息扩展,(对应结构体 DEV_ENCODER_CFG_EX2) #define DH_DEV_WLAN_DEVICE_CFG_EX2 0x0088 // 搜索无线设备扩展配置(对应结构体DHDEV_WLAN_DEVICE_LIST_EX2) #define DH_DEV_USER_END_CFG 1000 #define DH_DEV_ITC_HWS000_CFG_ITEM_NUM 8 // 虚点测速仪的配置项数目 ///@brief 虚点测速仪所有配置项 typedef struct tagDEV_ITC_HWS000_ALL_CFG { DWORD dwSize; int nValue[DH_DEV_ITC_HWS000_CFG_ITEM_NUM]; // 配置项的值 // 从索引0开始 依次是雷达角度,超速触发值,欠速触发值,闪光灯亮度,超速总计数,欠速总计数,违章总计数,闪光灯闪烁次数 }DEV_ITC_HWS000_ALL_CFG; // 报警类型,对应CLIENT_StartListen接口 #define DH_COMM_ALARM 0x1100 // 常规报警(包括外部报警,视频丢失,动态检测) #define DH_SHELTER_ALARM 0x1101 // 视频遮挡报警 #define DH_DISK_FULL_ALARM 0x1102 // 硬盘满报警 #define DH_DISK_ERROR_ALARM 0x1103 // 硬盘故障报警 #define DH_SOUND_DETECT_ALARM 0x1104 // 音频检测报警 #define DH_ALARM_DECODER_ALARM 0x1105 // 报警解码器报警 // 扩展报警类型,对应CLIENT_StartListenEx接口 #define DH_ALARM_ALARM_EX 0x2101 // 外部报警,数据字节数与设备报警通道个数相同,每个字节表示一个报警通道的报警状态,1为有报警,0为无报警。 #define DH_MOTION_ALARM_EX 0x2102 // 动态检测报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的动态检测报警状态,1为有报警,0为无报警。 #define DH_VIDEOLOST_ALARM_EX 0x2103 // 视频丢失报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的视频丢失报警状态,1为有报警,0为无报警。 #define DH_SHELTER_ALARM_EX 0x2104 // 视频遮挡报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的遮挡(黑屏)报警状态,1为有报警,0为无报警。 #define DH_SOUND_DETECT_ALARM_EX 0x2105 // 音频检测报警,数据为16个字节,每个字节表示一个视频通道的音频检测报警状态,1为有报警,0为无报警。 #define DH_DISKFULL_ALARM_EX 0x2106 // 硬盘满报警,数据为1个字节,1为有硬盘满报警,0为无报警。 #define DH_DISKERROR_ALARM_EX 0x2107 // 坏硬盘报警,数据为32个字节,每个字节表示一个硬盘的故障报警状态,1为有报警,0为无报警。 #define DH_ENCODER_ALARM_EX 0x210A // 编码器报警,数据为16个字节,每个字节表示一个通道编码器状态,1为有报警,0为无报警。 #define DH_URGENCY_ALARM_EX 0x210B // 紧急报警,数据为16个字节,每个字节表示一个通道编码器状态,1为有报警,0为无报警。 #define DH_WIRELESS_ALARM_EX 0x210C // 无线报警,数据为16个字节,每个字节表示一个通道编码器状态,1为有报警,0为无报警。 #define DH_NEW_SOUND_DETECT_ALARM_EX 0x210D // 新音频检测报警,报警信息的结构体见DH_NEW_SOUND_ALARM_STATE; #define DH_ALARM_DECODER_ALARM_EX 0x210E // 报警解码器报警,报警信息的结构体见 ALARM_DECODER_ALARM #define DH_DECODER_DECODE_ABILITY 0x210F // 解码器:解码能力报警,数据为一个字节,0:能正常解码 1:表示超出解码能力。 #define DH_FDDI_DECODER_ABILITY 0x2110 // 光纤编码器状态报警,报警信息的结构体见 ALARM_FDDI_ALARM #define DH_PANORAMA_SWITCH_ALARM_EX 0x2111 // 切换场景报警,数据为16个字节,每个字节表示一个通道编码器状态,1为有报警,0为无报警。 #define DH_LOSTFOCUS_ALARM_EX 0x2112 // 失去焦点报警,数据为16个字节,每个字节表示一个通道编码器状态,1为有报警,0为无报警。 #define DH_OEMSTATE_EX 0x2113 // oem报停状态,数据为 1 BYTE。 #define DH_DSP_ALARM_EX 0x2114 // DSP报警,报警信息的结构体见 DSP_ALARM #define DH_ATMPOS_BROKEN_EX 0x2115 // atm和pos机断开报警, 数据为 1 BYTE,0:连接断开 1:连接正常 #define DH_RECORD_CHANGED_EX 0x2116 // 录像状态变化报警,报警信息为 ALARM_RECORDING_CHANGED 数组 #define DH_CONFIG_CHANGED_EX 0x2117 // 配置发生变化报警,数据 无 #define DH_DEVICE_REBOOT_EX 0x2118 // 设备重启报警,数据 无 #define DH_WINGDING_ALARM_EX 0x2119 // 线圈/车检器故障报警(对应结构体 ALARM_WINGDING_INFO) #define DH_TRAF_CONGESTION_ALARM_EX 0x211A // 交通阻塞报警(车辆出现异常停止或者排队)(对应结构体 ALARM_TRAF_CONGESTION_INFO) #define DH_TRAF_EXCEPTION_ALARM_EX 0x211B // 交通异常报警(交通流量趋于0或异常空闲)(对应结构体 ALARM_TRAF_EXCEPTION_INFO) #define DH_EQUIPMENT_FILL_ALARM_EX 0x211C // 补光设备故障报警(对应结构体 ALARM_EQUIPMENT_FILL_INFO) #define DH_ALARM_ARM_DISARM_STATE 0x211D // 报警布撤防状态(对应结构体 ALARM_EQUIPMENT_FILL_INFO) #define DH_ALARM_ACC_POWEROFF 0x211E // ACC断电报警,数据为 DWORD 0:ACC通电 1:ACC断电 #define DH_ALARM_3GFLOW_EXCEED 0x211F // 3G流量超出阈值报警(对应结构体 DHDEV_3GFLOW_EXCEED_STATE_INFO) #define DH_ALARM_SPEED_LIMIT 0x2120 // 限速报警(对应结构体 ALARM_SPEED_LIMIT) #define DH_ALARM_VEHICLE_INFO_UPLOAD 0x2121 // 车载自定义信息上传 (对应结构体 ALARM_VEHICLE_INFO_UPLOAD) #define DH_STATIC_ALARM_EX 0x2122 // 静态检测报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的静态检测报警状态,1为有报警,0为无报警。 #define DH_PTZ_LOCATION_EX 0x2123 // 云台定位信息(对应结构体 DH_PTZ_LOCATION_INFO) #define DH_ALARM_CARD_RECORD_UPLOAD 0x2124 // 卡号录像信息上传(对应结构体 ALARM_CARD_RECORD_INFO_UPLOAD) #define DH_ALARM_ATM_INFO_UPLOAD 0x2125 // ATM交易信息上传(对应结构体 ALARM_ATM_INFO_UPLOAD) #define DH_ALARM_ENCLOSURE 0x2126 // 电子围栏报警(对应结构体 ALARM_ENCLOSURE_INFO) #define DH_ALARM_SIP_STATE 0x2127 // SIP状态报警(对应结构体 ALARM_SIP_STATE) #define DH_ALARM_RAID_STATE 0x2128 // RAID异常报警(对应结构体 ALARM_RAID_INFO) #define DH_ALARM_CROSSING_SPEED_LIMIT 0x2129 // 路口限速报警(对应结构体 ALARM_SPEED_LIMIT) #define DH_ALARM_OVER_LOADING 0x212A // 超载报警(对应结构体ALARM_OVER_LOADING) #define DH_ALARM_HARD_BRAKING 0x212B // 急刹车报警(对应机构体ALARM_HARD_BRAKING) #define DH_ALARM_SMOKE_SENSOR 0x212C // 烟感报警(对应结构体ALARM_SMOKE_SENSOR) #define DH_ALARM_TRAFFIC_LIGHT_FAULT 0x212D // 交通灯故障报警(对应结构体ALARM_TRAFFIC_LIGHT_FAULT) #define DH_ALARM_TRAFFIC_FLUX_STAT 0x212E // 交通流量统计报警(对应结构体ALARM_TRAFFIC_FLUX_LANE_INFO) #define DH_ALARM_CAMERA_MOVE 0x212F // 摄像机移位报警事件(对应结构体ALARM_CAMERA_MOVE_INFO) #define DH_ALARM_DETAILEDMOTION 0x2130 // 详细动检报警上报信息(对应结构体ALARM_DETAILEDMOTION_CHNL_INFO) #define DH_ALARM_STORAGE_FAILURE 0x2131 // 存储异常报警(对应结构体 ALARM_STORAGE_FAILURE 数组) #define DH_ALARM_FRONTDISCONNECT 0x2132 // 前端IPC断网报警(对应结构体ALARM_FRONTDISCONNET_INFO) #define DH_ALARM_ALARM_EX_REMOTE 0x2133 // 远程外部报警(对应结构体 ALARM_REMOTE_ALARM_INFO) #define DH_ALARM_BATTERYLOWPOWER 0x2134 // 电池电量低报警(对应结构体ALARM_BATTERYLOWPOWER_INFO) #define DH_ALARM_TEMPERATURE 0x2135 // 温度异常报警(对应结构体 ALARM_TEMPERATURE_INFO) #define DH_ALARM_TIREDDRIVE 0x2136 // 疲劳驾驶报警(对应结构体 ALARM_TIREDDRIVE_INFO) #define DH_ALARM_LOST_RECORD 0x2137 // 丢录像事件报警(对应结构体ALARM_LOST_RECORD) #define DH_ALARM_HIGH_CPU 0x2138 // CPU占用率过高事件报警(对应结构体 ALARM_HIGH_CPU) #define DH_ALARM_LOST_NETPACKET 0x2139 // 网络发送数据丢包事件报警(对应结构体 ALARM_LOST_NETPACKET) #define DH_ALARM_HIGH_MEMORY 0x213A // 内存占用率过高事件报警(对应结构体ALARM_HIGH_MEMORY) #define DH_LONG_TIME_NO_OPERATION 0x213B // WEB用户长时间无操作事件(无扩展信息) #define DH_BLACKLIST_SNAP 0x213C // 禁止名单车辆抓拍事件(对应结构体DH_BLACKLIST_SNAP_INFO) #define DH_ALARM_DISK 0x213E // 硬盘报警(对应 ALARM_DISK_INFO 数组) #define DH_ALARM_FILE_SYSTEM 0x213F // 文件系统报警(对应ALARM_FILE_SYSTEM_INFO数组) #define DH_ALARM_IVS 0x2140 // 智能报警事件(对应结构体ALARM_IVS_INFO) #define DH_ALARM_GOODS_WEIGHT_UPLOAD 0x2141 // 货重信息上报(对应ALARM_GOODS_WEIGHT_UPLOAD_INFO) #define DH_ALARM_GOODS_WEIGHT 0x2142 // 货重信息报警(对应ALARM_GOODS_WEIGHT_INFO) #define DH_GPS_STATUS 0x2143 // GPS定位信息(对应 NET_GPS_STATUS_INFO) #define DH_ALARM_DISKBURNED_FULL 0x2144 // 硬盘刻录满报警(对应 ALARM_DISKBURNED_FULL_INFO) #define DH_ALARM_STORAGE_LOW_SPACE 0x2145 // 存储容量不足事件(对应 ALARM_STORAGE_LOW_SPACE_INFO) #define DH_ALARM_DISK_FLUX 0x2160 // 硬盘数据异常事件(对应 ALARM_DISK_FLUX) #define DH_ALARM_NET_FLUX 0x2161 // 网络数据异常事件(对应 ALARM_NET_FLUX) #define DH_ALARM_FAN_SPEED 0x2162 // 风扇转速异常事件(对应 ALARM_FAN_SPEED) #define DH_ALARM_STORAGE_FAILURE_EX 0x2163 // 存储错误报警(对应结构体ALARM_STORAGE_FAILURE_EX) #define DH_ALARM_RECORD_FAILED 0x2164 // 录像异常报警(对应结构体ALARM_RECORD_FAILED_INFO) #define DH_ALARM_STORAGE_BREAK_DOWN 0x2165 // 存储崩溃事件(对应结构体 ALARM_STORAGE_BREAK_DOWN_INFO) #define DH_ALARM_VIDEO_ININVALID 0x2166 // 视频输入通道失效事件(例:配置的视频输入通道码流,超出设备处理能力)ALARM_VIDEO_ININVALID_INFO #define DH_ALARM_VEHICLE_TURNOVER 0x2167 // 车辆侧翻报警事件(对应结构体ALARM_VEHICEL_TURNOVER_EVENT_INFO) #define DH_ALARM_VEHICLE_COLLISION 0x2168 // 车辆撞车报警事件(对应结构体ALARM_VEHICEL_COLLISION_EVENT_INFO) #define DH_ALARM_VEHICLE_CONFIRM 0x2169 // 车辆上传信息事件(对应结构体ALARM_VEHICEL_CONFIRM_INFO) #define DH_ALARM_VEHICLE_LARGE_ANGLE 0x2170 // 车载摄像头大角度扭转事件(对应结构体ALARM_VEHICEL_LARGE_ANGLE) #define DH_ALARM_TALKING_INVITE 0x2171 // 设备请求对方发起对讲事件(对应结构体ALARM_TALKING_INVITE_INFO) #define DH_ALARM_ALARM_EX2 0x2175 // 本地报警事件(对应结构体 ALARM_ALARM_INFO_EX2,对DH_ALARM_ALARM_EX升级) #define DH_ALARM_VIDEO_TIMING 0x2176 // 视频定时检测事件(对应结构体ALARM_VIDEO_TIMING) #define DH_ALARM_COMM_PORT 0x2177 // 串口事件(对应结构体ALARM_COMM_PORT_EVENT_INFO) #define DH_ALARM_AUDIO_ANOMALY 0x2178 // 音频异常事件(对应结构体ALARM_AUDIO_ANOMALY) #define DH_ALARM_AUDIO_MUTATION 0x2179 // 声强突变事件(对应结构体ALARM_AUDIO_MUTATION) #define DH_EVENT_TYREINFO 0x2180 // 轮胎信息上报事件(对应结构体EVENT_TYRE_INFO) #define DH_ALARM_POWER_ABNORMAL 0x2181 // 冗余电源异常报警(对应结构体ALARM_POWER_ABNORMAL_INFO) #define DH_EVENT_REGISTER_OFF 0x2182 // 车载设备主动下线事件(对应结构体 EVENT_REGISTER_OFF_INFO) #define DH_ALARM_NO_DISK 0x2183 // 无硬盘报警(对应结构体ALARM_NO_DISK_INFO) #define DH_ALARM_FALLING 0x2184 // 跌落事件报警(对应结构体ALARM_FALLING_INFO) #define DH_ALARM_PROTECTIVE_CAPSULE 0x2185 // 防护舱事件(对应结构体ALARM_PROTECTIVE_CAPSULE_INFO) #define DH_ALARM_NO_RESPONSE 0x2186 // 呼叫未应答警报(对应结构体ALARM_NO_RESPONSE_INFO) #define DH_ALARM_CONFIG_ENABLE_CHANGE 0x2187 // 配置使能改变上报事件(对应结构体 ALARM_CONFIG_ENABLE_CHANGE_INFO) #define DH_EVENT_CROSSLINE_DETECTION 0x2188 // 警戒线事件( 对应结构体 ALARM_EVENT_CROSSLINE_INFO ) #define DH_EVENT_CROSSREGION_DETECTION 0x2189 // 警戒区事件( 对应结构体 ALARM_EVENT_CROSSREGION_INFO ) #define DH_EVENT_LEFT_DETECTION 0x218a // 物品遗留事件( 对应结构体 ALARM_EVENT_LEFT_INFO ) #define DH_EVENT_FACE_DETECTION 0x218b // 目标检测事件( 对应结构体 ALARM_EVENT_FACE_INFO ) #define DH_ALARM_IPC 0x218c // IPC报警,IPC通过DVR或NVR上报的本地报警(对应结构体 ALARM_IPC_INFO) #define DH_EVENT_TAKENAWAYDETECTION 0x218d // 物品搬移事件(对应结构体 ALARM_TAKENAWAY_DETECTION_INFO) #define DH_EVENT_VIDEOABNORMALDETECTION 0x218e // 视频异常事件(对应结构体 ALARM_VIDEOABNORMAL_DETECTION_INFO) #define DH_EVENT_MOTIONDETECT 0x218f // 视频移动侦测事件(对应结构体 ALARM_MOTIONDETECT_INFO) #define DH_ALARM_PIR 0x2190 // PIR警报(对应BYTE*, pBuf长度dwBufLen) #define DH_ALARM_STORAGE_HOT_PLUG 0x2191 // 存储热插拔事件(对应结构体 ALARM_STORAGE_HOT_PLUG_INFO) #define DH_ALARM_FLOW_RATE 0x2192 // 流量使用情况事件(对应结构体 ALARM_FLOW_RATE_INFO) #define DH_ALARM_MOVEDETECTION 0x2193 // 移动事件(对应ALARM_MOVE_DETECTION_INFO) #define DH_ALARM_WANDERDETECTION 0x2194 // 徘徊事件(对应ALARM_WANDERDETECTION_INFO) #define DH_ALARM_CROSSFENCEDETECTION 0x2195 // 翻越围栏事件(对应ALARM_CROSSFENCEDETECTION_INFO) #define DH_ALARM_PARKINGDETECTION 0x2196 // 非法停车事件(对应ALARM_PARKINGDETECTION_INFO) #define DH_ALARM_RIOTERDETECTION 0x2197 // 人员聚集事件(对应ALARM_RIOTERDETECTION_INFO) #define DH_ALARM_FRONTDISCONNECT_V3 0x2198 // 前端IPC断网报警,三代报警(对应结构体ALARM_FRONTDISCONNET_INFO) #define DH_ALARM_KEYPAD_TAMPER 0x2199 // 键盘防拆事件(对应结构体 ALARM_KEYPAD_TAMPER_INFO) #define DH_ALARM_KEYPAD_FAILURE 0x219A // 键盘掉线事件(对应结构体 ALARM_KEYPAD_FAILURE_INFO) #define DH_ALARM_NOT_CLEAR_CAR 0x219B // 未清车告警事件(对应结构体 ALARM_NOT_CLEAR_CAR_INFO) #define DH_ALARM_WIRELESS_DEVBATTERY_LOSS 0x219C // 探测器电池丢失事件(对应结构体 ALARM_WIRELESS_DEVBATTERY_LOSS_INFO) #define DH_ALARM_SIREN_TAMPER 0x219D // 警号防拆事件(对应结构体 ALARM_SIREN_TAMPER_INFO) #define DH_ALARM_KEYPAD_LOCK 0x219E // 键盘锁定事件(对应结构体 ALARM_KEYPAD_LOCK_INFO) #define DH_ALARM_ALARMNET 0x219F // 网络报警事件(对应结构体 ALARM_ALARMNET_INFO) #define DH_ALARM_PIC_UPLOAD_ALARM 0x21A0 // 图片上传对外通知平台事件(对应结构体 NET_ALARM_PIC_UPLOAD_ALARM_INFO) #define DH_ALARM_CHANG_BAI_VEHICLE_PROHIBITED 0x21A1 // 禁行时间段车辆移动上报事件(对应结构体 NET_ALARM_CHANG_BAI_VEHICLE_PROHIBITED_INFO) #define DH_ALARM_USER_PASS_CONFIRM 0x21A2 // 用户通过闸机进入或离开事件(对应结构体 NET_ALARM_USER_PASS_CONFIRM_INFO) #define DH_ALARM_INSUFFICIENT_QUOTA_SPACE 0x21A4 // 配额容量不足事件(对应结构体 NET_ALARM_INSUFFICIENT_QUOTA_SPACE_INFO) #define DH_ALARM_REID_CLUSTER_STATE 0x21A5 // REID项目上报设备聚档状态事件(对应结构体 NET_ALARM_REID_CLUSTER_STATE_INFO) #define DH_ALARM_SAMPO_USER_INFORMATION 0x21A6 // 设备向平台上报用户的信息事件(对应结构体 NET_ALARM_SAMPO_USER_INFORMATION_INFO) #define DH_ALARM_SAMPO_SERVICE_ALARM 0x21A7 // 设备向平台上报用户请求的服务事件(对应结构体 NET_ALARM_SAMPO_SERVICE_ALARM_INFO) #define DH_ALARM_SIA_EVENT 0x21A8 // 上报SIA服务器事件报警(对应结构体 NET_ALARM_SIA_EVENT_INFO) #define DH_ALARM_AP_CONNECT 0x21A9 // 连接热点事件报警(对应结构体 NET_ALARM_AP_CONNECT_INFO) #define DH_ALARM_DGS_ERROR_REPORT 0x21AA // 诊断故障码上报事件(对应结构体 NET_ALARM_DGS_ERROR_REPORT) #define DH_ALARM_RESIDENT_ALARM 0x21AB // 驻留报警(对应结构体 NET_ALARM_RESIDENT_ALARM) // 事件类型 0x3000 ~ 0x300c 内部状态通知 #define DH_CONFIG_RESULT_EVENT_EX 0x3000 // 修改配置的返回码;返回结构见DEV_SET_RESULT #define DH_REBOOT_EVENT_EX 0x3001 // 设备重启事件;如果未发送重启命令,当前修改的配置不会立即生效 #define DH_AUTO_TALK_START_EX 0x3002 // 设备主动邀请开始语音对讲 #define DH_AUTO_TALK_STOP_EX 0x3003 // 设备主动停止语音对讲 #define DH_CONFIG_CHANGE_EX 0x3004 // 设备配置发生改变 #define DH_IPSEARCH_EVENT_EX 0x3005 // IP搜索事件, 返回字符串格式如下:DevName::Manufacturer::MAC::IP::Port::DevType::POEPort::SubMask::GateWay&&DevName::Manufacturer::MAC::IP::Port::DevType::POEPort::SubMask::GateWay &&… #define DH_AUTO_RECONNECT_FAILD 0x3006 // 自动重连失败事件 #define DH_REALPLAY_FAILD_EVENT 0x3007 // 预览失败事件,返回结构体DEV_PLAY_RESULT #define DH_PLAYBACK_FAILD_EVENT 0x3008 // 回放失败事件,返回结构体DEV_PLAY_RESULT #define DH_IVS_TRAFFIC_REALFLOWINFO 0x3009 // 交通实时流量信息事件ALARM_IVS_TRAFFIC_REALFLOW_INFO #define DH_DEVICE_ABORT_EVENT 0x300a // 客户端被踢出, 对应结构体 DEV_CLIENT_ABORT_INFO #define DH_TALK_FAILD_EVENT 0x300b // 请求语音对讲失败, 对应结构体 DEV_TALK_RESULT #define DH_START_LISTEN_FINISH_EVENT 0x300c // 订阅事件接口完成异步通知事件, 信息为 START_LISTEN_FINISH_RESULT_INFO #define DH_YUEQINGLIGHTING_STATE_EVENT 0x300d // 平台统计灯光开关的时间事件, 对应的结构体 DEV_YUEQINGLIGHTING_STATE_INFO #define DH_ALARM_VIOLATE_NO_FLY_TIME 0x300e // 违反禁飞事件, 对应结构体 ALARM_VIOLATE_NO_FLY_TIME_INFO #define DH_ALARM_BOX_ALARM 0x300f // 报警盒通道的触发报警事件 (对应结构体 ALARM_BOX_ALARM_INFO ) #define DH_ALARM_SOSALERT 0x3010 // SOS求救报警(对应结构体ALARM_SOSALERT_INFO) #define DH_ALARM_GYROABNORMALATTITUDE 0x3011 // 车辆的紧急制动、侧翻等状态导致的姿态异常进行报警(对应 ALARM_GYROABNORMALATTITUDE_INFO) #define DH_ALARM_ALARMOUTPUT 0x3012 // 输出通道状态改变事件(对应结构体ALARM_ALARMOUTPUT_INFO) #define DH_ALARM_PSTNREPORTFAILURE 0x3013 // 电话报警未接警事件(对应结构体ALARM_PSTNREPORTFAILURE_INFO) #define DH_ALARM_NOGSMFIELD 0x3014 // 通信模块掉线或者sim卡没插(对应结构体ALARM_NOGSMFIELD_INFO) #define DH_ALARM_SMARTMOTION_HUMAN 0x3015 // 智能视频移动侦测事件(人) (对应结构体 ALARM_SMARTMOTION_HUMAN_INFO) #define DH_ALARM_SMARTMOTION_VEHICLE 0x3016 // 智能视频移动侦测事件(车) (对应结构体 ALARM_SMARTMOTION_VEHICLE_INFO) #define DH_ALARM_MOTION_RECORD_ALARM 0x3017 // 动检录像报警(对应结构体ALARM_MOTION_RECORD_INFO) #define DH_ALARM_SMARTHOME_GET_AUTHORIZED 0x3018 // 室内机告知平台需要获取授权二维码信息 ( 对应结构体 ALARM_SMARTHOME_GET_AUTHORIZED ) #define DH_ALARM_SMARTHOME_UPDATE_SCENE 0x3019 // 室内机告知平台需要更新智能家居场景列表 ( 对应结构体 ALARM_SMARTHOME_UPDATE_SCENE ) #define DH_ALARM_ASG 0x3020 // ASG报警 ( 对应结构体 ALARM_ASG_INFO ) #define DH_ALARM_ASGSTAY 0x3021 // 闸机滞留报警事件( 对应结构体 ALARM_ASGSTAY_INFO ) #define DH_ALARM_ASGFOLLOWING 0x3022 // 闸机尾随报警事件( 对应结构体 ALARM_ASGFOLLOWING_INFO ) #define DH_ALARM_ASGCLIMBOVER 0x3023 // 闸机翻越报警事件( 对应结构体 ALARM_ASGCLIMBOVER_INFO ) #define DH_ALARM_ASGBREAKDOWN 0x3024 // 闸机故障事件( 对应结构体 ALARM_ASGBREAKDOWN_INFO ) #define DH_ALARM_LIFTCONTROL_REQUEST 0x3025 // 梯控上报事件(对应结构体 ALARM_LIFTCONTROL_REQUEST_INFO) #define DH_ALARM_REMOTE_DEVICE_GPS 0x3026 // 远程设备GPS事件(对应结构体 ALARM_REMOTE_DEVICE_GPS_INFO) #define DH_ALARM_ENTRANCE_CAR_STAT_INFO 0x3027 // 出入口过车统计信息 (对应结构体 ALARM_ENTRANCE_CAR_STAT_INFO) #define DH_ALARM_ASG_INTRUDED 0x3028 // 闸机机箱防拆事件(对应结构体 ALARM_ASG_INTRUDED_INFO) #define DH_ALARM_IDCARDINFO_CHECK 0x3029 // 证件信息上报,平台核验开门事件(对应结构体 ALARM_IDCARDINFO_CHECK_INFO) #define DH_ALARM_REQUEST_APPOINTMENT_INFO 0x302a // 请求预约信息 (对应 ALARM_REQUEST_APPOINTMENT_INFO ) #define DH_ALARM_COURSE_RECORD_UPLOAD 0x302b // 录播录像上传结束事件 (对应 ALARM_COURSE_RECORD_UPLOAD_INFO) #define DH_ALARM_REQUEST_RECORD 0x302c // 请求录像(对应 ALARM_REQUEST_RECORD_INFO ) #define DH_ALARM_REQUEST_SNAP 0x302d // 请求抓图(对应 ALARM_REQUEST_SNAP_INFO ) #define DH_ALARM_PARKING_OVERLOAD 0x302e // 停车场过载事件(对应结构体 ALARM_PARKING_OVERLOAD_INFO) #define DH_ALARM_VTS_CALLING_STATE 0x302f // VTS呼叫处理状态事件(对应结构体 ALARM_VTS_CALLING_STATE_INFO) #define DH_ALARM_DRUG_EXPLOSIVE_DETECTION 0x3030 // 毒品炸药探测事件(对应结构体 ALARM_DRUG_EXPLOSIVE_DETECTION_INFO) #define DH_ALARM_LIQUID_DETECTION 0x3031 // 液体探测事件(对应结构体 ALARM_LIQUID_DETECTION_INFO) #define DH_ALARM_ASG_ANTIPINCH 0x3032 // 闸机门翼防夹事件(对应结构体 ALARM_ASG_ANTIPINCH_INFO) #define DH_ALARM_STORAGE_NOT_EXIST 0x3167 // 存储组不存在事件(对应结构体 ALARM_STORAGE_NOT_EXIST_INFO) #define DH_ALARM_NET_ABORT 0x3169 // 网络故障事件(对应结构体 ALARM_NETABORT_INFO) #define DH_ALARM_IP_CONFLICT 0x3170 // IP冲突事件(对应结构体 ALARM_IP_CONFLICT_INFO) #define DH_ALARM_MAC_CONFLICT 0x3171 // MAC冲突事件(对应结构体 ALARM_MAC_CONFLICT_INFO) #define DH_ALARM_POWERFAULT 0x3172 // 电源故障事件(对应结构体ALARM_POWERFAULT_INFO) #define DH_ALARM_CHASSISINTRUDED 0x3173 // 机箱入侵(防拆)报警事件(对应结构体ALARM_CHASSISINTRUDED_INFO) #define DH_ALARM_ALARMEXTENDED 0x3174 // 本地扩展报警事件(对应结构体 ALARM_ALARMEXTENDED_INFO) #define DH_ALARM_ARMMODE_CHANGE_EVENT 0x3175 // 布撤防状态变化事件(对应结构体ALARM_ARMMODE_CHANGE_INFO) #define DH_ALARM_BYPASSMODE_CHANGE_EVENT 0x3176 // 旁路状态变化事件(对应结构体ALARM_BYPASSMODE_CHANGE_INFO) #define DH_ALARM_ACCESS_CTL_NOT_CLOSE 0x3177 // 门禁未关事件(对应结构体ALARM_ACCESS_CTL_NOT_CLOSE_INFO) #define DH_ALARM_ACCESS_CTL_BREAK_IN 0x3178 // 闯入事件(对应结构体ALARM_ACCESS_CTL_BREAK_IN_INFO) #define DH_ALARM_ACCESS_CTL_REPEAT_ENTER 0x3179 // 反复进入事件(对应结构体ALARM_ACCESS_CTL_REPEAT_ENTER_INFO) #define DH_ALARM_ACCESS_CTL_DURESS 0x3180 // 胁迫卡刷卡事件(对应结构体ALARM_ACCESS_CTL_DURESS_INFO) #define DH_ALARM_ACCESS_CTL_EVENT 0x3181 // 门禁事件(对应结构体 ALARM_ACCESS_CTL_EVENT_INFO) #define DH_URGENCY_ALARM_EX2 0x3182 // 紧急报警EX2(对DH_URGENCY_ALARM_EX的升级,对应结构体ALARM_URGENCY_ALARM_EX2, 人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助 #define DH_ALARM_INPUT_SOURCE_SIGNAL 0x3183 // 报警输入源信号事件(只要有输入就会产生该事件, 不论防区当前的模式,无法屏蔽, 对应 ALARM_INPUT_SOURCE_SIGNAL_INFO ) #define DH_ALARM_ANALOGALARM_EVENT 0x3184 // 模拟量报警输入通道事件(对应结构体ALARM_ANALOGALARM_EVENT_INFO) #define DH_ALARM_ACCESS_CTL_STATUS 0x3185 // 门禁状态事件(对应结构体ALARM_ACCESS_CTL_STATUS_INFO) #define DH_ALARM_ACCESS_SNAP 0x3186 // 门禁抓图事件(对应结构体ALARM_ACCESS_SNAP_INFO) #define DH_ALARM_ALARMCLEAR 0x3187 // 消警事件(对应结构体ALARM_ALARMCLEAR_INFO) #define DH_ALARM_CIDEVENT 0x3188 // CID事件(对应结构体 ALARM_CIDEVENT_INFO) #define DH_ALARM_TALKING_HANGUP 0x3189 // 设备主动挂断对讲事件(对应结构体ALARM_TALKING_HANGUP_INFO) #define DH_ALARM_BANKCARDINSERT 0x318a // 银行卡插卡事件(对应结构体ALARM_BANKCARDINSERT_INFO) #define DH_ALARM_RCEMERGENCY_CALL 0x318b // 紧急呼叫报警事件(对应结构体 ALARM_RCEMERGENCY_CALL_INFO) #define DH_ALARM_OPENDOORGROUP 0x318c // 多人组合开门事件(对应结构体ALARM_OPEN_DOOR_GROUP_INFO) #define DH_ALARM_FINGER_PRINT 0x318d // 获取信息事件(对应结构体 ALARM_CAPTURE_FINGER_PRINT_INFO) #define DH_ALARM_CARD_RECORD 0x318e // 卡号录像事件(对应结构体 ALARM_CARD_RECORD_INFO) #define DH_ALARM_SUBSYSTEM_STATE_CHANGE 0x318f // 子系统状态改变事件(对应结构体ALARM_SUBSYSTEM_STATE_CHANGE_INFO) #define DH_ALARM_BATTERYPOWER_EVENT 0x3190 // 电池电量定时通知事件(对应结构体 ALARM_BATTERYPOWER_INFO ) #define DH_ALARM_BELLSTATUS_EVENT 0x3191 // 警号状态事件(对应结构体ALARM_BELLSTATUS_INFO) #define DH_ALARM_DEFENCE_STATE_CHANGE_EVENT 0x3192 // 防区状态变化事件(对应结构体ALARM_DEFENCE_STATUS_CHANGE_INFO), // 和布防撤防变化事件、旁路状态变化事件中的状态定义不同, // 该状态通过CLIENT_QueryDevState()接口的DH_DEVSTATE_DEFENCE_STATE命令获取 #define DH_ALARM_TICKET_STATISTIC 0x3193 // 车票统计信息事件(对应结构体 ALARM_TICKET_STATISTIC) #define DH_ALARM_LOGIN_FAILIUR 0x3194 // 登陆失败事件(对应结构体ALARM_LOGIN_FAILIUR_INFO) #define DH_ALARM_MODULE_LOST 0x3195 // 扩展模块掉线事件(对应结构体 ALARM_MODULE_LOST_INFO) #define DH_ALARM_PSTN_BREAK_LINE 0x3196 // PSTN掉线事件(对应结构体ALARM_PSTN_BREAK_LINE_INFO) #define DH_ALARM_ANALOG_PULSE 0x3197 // 模拟量报警事件(瞬时型事件), 特定传感器类型时才触发(对应结构体ALARM_ANALOGPULSE_INFO) #define DH_ALARM_MISSION_CONFIRM 0x3198 // 任务确认事件(对应结构体 ALARM_MISSION_CONFIRM_INFO) #define DH_ALARM_DEVICE_MSG_NOTIFY 0x3199 // 设备向平台发通知的事件(对应结构体 ALARM_DEVICE_MSG_NOTIFY_INFO) #define DH_ALARM_VEHICLE_STANDING_OVER_TIME 0x319A // 停车超时报警(对应结构体 ALARM_VEHICLE_STANDING_OVER_TIME_INFO) #define DH_ALARM_ENCLOSURE_ALARM 0x319B // 电子围栏事件(对应结构体 ALARM_ENCLOSURE_ALARM_INFO) #define DH_ALARM_GUARD_DETECT 0x319C // 岗亭检测事件,此事件岗亭有第一个人时上报start事件,岗亭最后一个人离开时上报stop 事件(对应结构体ALARM_GUARD_DETECT_INFO) #define DH_ALARM_GUARD_INFO_UPDATE 0x319D // 岗亭信息更新事件,只要岗亭有人员出入就上报(对应结构体ALARM_GUARD_UPDATE_INFO) #define DH_ALARM_NODE_ACTIVE 0x319E // 节点激活事件(对应结构体ALARM_NODE_ACTIVE_INFO) #define DH_ALARM_VIDEO_STATIC 0x319F // 视频静态检测事件(对应结构体 ALARM_VIDEO_STATIC_INFO) #define DH_ALARM_REGISTER_REONLINE 0x31a0 // 主动注册设备重新登陆事件(对应结构体ALARM_REGISTER_REONLINE_INFO) #define DH_ALARM_ISCSI_STATUS 0x31a1 // ISCSI告警事件(对应结构体 ALARM_ISCSI_STATUS_INFO) #define DH_ALARM_SCADA_DEV_ALARM 0x31a2 // 检测采集设备报警事件(对应结构体 ALARM_SCADA_DEV_INFO) #define DH_ALARM_AUXILIARY_DEV_STATE 0x31a3 // 辅助设备状态(对应结构体ALARM_AUXILIARY_DEV_STATE) #define DH_ALARM_PARKING_CARD 0x31a4 // 停车刷卡事件(对应结构体ALARM_PARKING_CARD) #define DH_ALARM_PROFILE_ALARM_TRANSMIT 0x31a5 // 报警传输事件(对应结构体ALARM_PROFILE_ALARM_TRANSMIT_INFO) #define DH_ALARM_VEHICLE_ACC 0x31a6 // 车辆ACC报警事件(对应结构体 ALARM_VEHICLE_ACC_INFO) #define DH_ALARM_TRAFFIC_SUSPICIOUSCAR 0x31a7 // 嫌疑车辆上报事件(对应结构体 ALARM_TRAFFIC_SUSPICIOUSCAR_INFO) #define DH_ALARM_ACCESS_LOCK_STATUS 0x31a8 // 门锁状态事件(对应结构体 ALARM_ACCESS_LOCK_STATUS_INFO) #define DH_ALARM_FINACE_SCHEME 0x31a9 // 理财经办事件(对应结构体 ALARM_FINACE_SCHEME_INFO) #define DH_ALARM_HEATIMG_TEMPER 0x31aa // 热成像测温点温度异常报警事件(对应结构体 ALARM_HEATIMG_TEMPER_INFO) #define DH_ALARM_TALKING_IGNORE_INVITE 0x31ab // 设备取消对讲请求事件(对应结构体ALARM_TALKING_IGNORE_INVITE_INFO) #define DH_ALARM_BUS_SHARP_TURN 0x31ac // 车辆急转事件(对应结构体ALARM_BUS_SHARP_TURN_INFO) #define DH_ALARM_BUS_SCRAM 0x31ad // 车辆急停事件(对应结构体ALARM_BUS_SCRAM_INFO) #define DH_ALARM_BUS_SHARP_ACCELERATE 0x31ae // 车辆急加速事件(对应结构体ALARM_BUS_SHARP_ACCELERATE_INFO) #define DH_ALARM_BUS_SHARP_DECELERATE 0x31af // 车辆急减速事件(对应结构体ALARM_BUS_SHARP_DECELERATE_INFO) #define DH_ALARM_ACCESS_CARD_OPERATE 0x31b0 // 门禁卡数据操作事件(对应结构体ALARM_ACCESS_CARD_OPERATE_INFO) #define DH_ALARM_POLICE_CHECK 0x31b1 // 警员签到事件(对应结构体ALARM_POLICE_CHECK_INFO) #define DH_ALARM_NET 0x31b2 // 网络报警事件(对应结构体 ALARM_NET_INFO) #define DH_ALARM_NEW_FILE 0x31b3 // 新文件事件(对应结构体ALARM_NEW_FILE_INFO) #define DH_ALARM_FIREWARNING 0x31b5 // 热成像着火点事件 (对应结构体 ALARM_FIREWARNING_INFO) #define DH_ALARM_RECORD_LOSS 0x31b6 // 录像丢失事件,指硬盘完好的情况下,发生误删等原因引起(对应结构体ALARM_RECORD_LOSS_INFO) #define DH_ALARM_VIDEO_FRAME_LOSS 0x31b7 // 视频丢帧事件,比如网络不好或编码能力不足引起的丢帧(对应结构体ALARM_VIDEO_FRAME_LOSS_INFO) #define DH_ALARM_RECORD_VOLUME_FAILURE 0x31b8 // 由保存录像的磁盘卷发生异常,引起的录像异常(对应结构体 ALARM_RECORD_VOLUME_FAILURE_INFO) #define DH_EVENT_SNAP_UPLOAD 0x31b9 // 图上传完成事件(对应结构体EVENT_SNAP_UPLOAD_INFO) #define DH_ALARM_AUDIO_DETECT 0x31ba // 音频检测事件(对应结构体 ALARM_AUDIO_DETECT ) #define DH_ALARM_UPLOADPIC_FAILCOUNT 0x31bb // 上传中盟失败数据个数(对应结构体ALARM_UPLOADPIC_FAILCOUNT_INFO) #define DH_ALARM_POS_MANAGE 0x31bc // POS管理事件事件(对应结构体 ALARM_POS_MANAGE_INFO ) #define DH_ALARM_REMOTE_CTRL_STATUS 0x31bd // 无线遥控器状态事件(对应结构体 ALARM_REMOTE_CTRL_STATUS ) #define DH_ALARM_PASSENGER_CARD_CHECK 0x31be // 废弃, 乘客刷卡事件(对应结构体 ALARM_PASSENGER_CARD_CHECK ) #define DH_ALARM_SOUND 0x31bf // 声音事件(对应结构体 ALARM_SOUND ) #define DH_ALARM_LOCK_BREAK 0x31c0 // 撬锁事件(对应结构体 ALARM_LOCK_BREAK_INFO ) #define DH_ALARM_HUMAN_INSIDE 0x31c1 // 舱内有人事件(对应结构体ALARM_HUMAN_INSIDE_INFO) #define DH_ALARM_HUMAN_TUMBLE_INSIDE 0x31c2 // 舱内有人摔倒事件(对应结构体ALARM_HUMAN_TUMBLE_INSIDE_INFO) #define DH_ALARM_DISABLE_LOCKIN 0x31c3 // 闭锁进门按钮触发事件(对应ALARM_DISABLE_LOCKIN_INFO) #define DH_ALARM_DISABLE_LOCKOUT 0x31c4 // 闭锁出门按钮触发事件(对应结构体ALARM_DISABLE_LOCKOUT_INFO) #define DH_ALARM_UPLOAD_PIC_FAILED 0x31c5 // 违章数据上传失败事件(对应结构体 ALARM_UPLOAD_PIC_FAILED_INFO ) #define DH_ALARM_FLOW_METER 0x31c6 // 水流量统计信息上报事件(对应结构体 ALARM_FLOW_METER_INFO) #define DH_ALARM_WIFI_SEARCH 0x31c7 // 获取到周围环境中WIFI设备上报事件(对应结构体 ALARM_WIFI_SEARCH_INFO) #define DH_ALARM_WIRELESSDEV_LOWPOWER 0x31C8 // 获取无线设备低电量上报事件(对应结构体ALARM_WIRELESSDEV_LOWPOWER_INFO) #define DH_ALARM_PTZ_DIAGNOSES 0x31c9 // 云台诊断事件(对应结构体ALARM_PTZ_DIAGNOSES_INFO) #define DH_ALARM_FLASH_LIGHT_FAULT 0x31ca // 爆闪灯(闪光灯)报警事件 (对应结构体 ALARM_FLASH_LIGHT_FAULT_INFO) #define DH_ALARM_STROBOSCOPIC_LIGTHT_FAULT 0x31cb // 频闪灯报警事件 (对应结构体 ALARM_STROBOSCOPIC_LIGTHT_FAULT_INFO) #define DH_ALARM_HUMAM_NUMBER_STATISTIC 0x31cc // 人数量/客流量统计事件 (对应结构体 ALARM_HUMAN_NUMBER_STATISTIC_INFO) #define DH_ALARM_VIDEOUNFOCUS 0x31ce // 视频虚焦报警(对应结构体 ALARM_VIDEOUNFOCUS_INFO) #define DH_ALARM_BUF_DROP_FRAME 0x31cd // 录像缓冲区丢帧事件(对应结构体 ALARM_BUF_DROP_FRAME_INFO) #define DH_ALARM_DOUBLE_DEV_VERSION_ABNORMAL 0x31cf // 双控设备主板与备板之间版本信息不一致异常事件 (对应结构体 ALARM_DOUBLE_DEV_VERSION_ABNORMAL_INFO) #define DH_ALARM_DCSSWITCH 0x31d0 // 主备切换事件 集群切换报警 (对应结构体 ALARM_DCSSWITCH_INFO) #define DH_ALARM_RADAR_CONNECT_STATE 0x31d1 // 雷达状态事件(对应结构体 ALARM_RADAR_CONNECT_STATE_INFO) #define DH_ALARM_DEFENCE_ARMMODE_CHANGE 0x31d2 // 防区布撤防状态改变事件(对应结构体 ALARM_DEFENCE_ARMMODECHANGE_INFO) #define DH_ALARM_SUBSYSTEM_ARMMODE_CHANGE 0x31d3 // 子系统布撤防状态改变事件(对应结构体 ALARM_SUBSYSTEM_ARMMODECHANGE_INFO) #define DH_ALARM_RFID_INFO 0x31d4 // 红外线检测信息事件(对应结构体 ALARM_RFID_INFO) #define DH_ALARM_SMOKE_DETECTION 0x31d5 // 烟雾报警事件(对应结构体 ALARM_SMOKE_DETECTION_INFO) #define DH_ALARM_BETWEENRULE_TEMP_DIFF 0x31d6 // 热成像规则间温差异常报警(对应结构体 ALARM_BETWEENRULE_DIFFTEMPER_INFO) #define DH_ALARM_TRAFFIC_PIC_ANALYSE 0x31d7 // 图片二次分析事件(对应 ALARM_PIC_ANALYSE_INFO) #define DH_ALARM_HOTSPOT_WARNING 0x31d8 // 热成像热点异常报警(对应结构体 ALARM_HOTSPOT_WARNING_INFO) #define DH_ALARM_COLDSPOT_WARNING 0x31d9 // 热成像冷点异常报警(对应结构体 ALARM_COLDSPOT_WARNING_INFO) #define DH_ALARM_FIREWARNING_INFO 0x31da // 热成像火情事件信息上报(对应结构体 ALARM_FIREWARNING_INFO_DETAIL) #define DH_ALARM_FACE_OVERHEATING 0x31db // 热成像人体温度异常预警(对应结构体 ALARM_FACE_OVERHEATING_INFO) #define DH_ALARM_SENSOR_ABNORMAL 0x31dc // 探测器异常报警(对应结构体 ALARM_SENSOR_ABNORMAL_INFO) #define DH_ALARM_PATIENTDETECTION 0x31de // 监控病人活动状态报警事件(对应结构体 ALARM_PATIENTDETECTION_INFO) #define DH_ALARM_RADAR_HIGH_SPEED 0x31df // 雷达监测超速报警事件 智能楼宇专用 (对应结构体 ALARM_RADAR_HIGH_SPEED_INFO) #define DH_ALARM_POLLING_ALARM 0x31e0 // 设备巡检报警事件 智能楼宇专用 (对应结构体 ALARM_POLLING_ALARM_INFO) #define DH_ALARM_ITC_HWS000 0x31e1 // 虚点测速仪设备事件与报警(对应结构体 ALARM_ITC_HWS000) #define DH_ALARM_TRAFFICSTROBESTATE 0x31e2 // 道闸栏状态事件(对应结构体 ALARM_TRAFFICSTROBESTATE_INFO) #define DH_ALARM_TELEPHONE_CHECK 0x31e3 // 手机号码上报事件(对应结构体 ALARM_TELEPHONE_CHECK_INFO) #define DH_ALARM_PASTE_DETECTION 0x31e4 // 贴条事件(对应结构体 ALARM_PASTE_DETECTION_INFO ) #define DH_ALARM_SHOOTINGSCORERECOGNITION 0x31e5 // 打靶像机事件(对应结构体 ALARM_PIC_SHOOTINGSCORERECOGNITION_INFO) #define DH_ALARM_SWIPEOVERTIME 0x31e6 // 超时未刷卡事件(对应结构体 ALARM_SWIPE_OVERTIME_INFO) #define DH_ALARM_DRIVING_WITHOUTCARD 0x31e7 // 无卡驾驶事件(对应结构体 ALARM_DRIVING_WITHOUTCARD_INFO) #define DH_ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION 0x31e8 //闯红灯事件(对应结构体 ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION_INFO ) #define DH_ALARM_FIGHTDETECTION 0x31e9 // 斗殴事件(对应结构体 NET_ALARM_FIGHTDETECTION) #define DH_ALARM_OIL_4G_OVERFLOW 0x31ea // 4G流量超过阈值的报警事件(对应结构体 NET_ALARM_OIL_4G_OVERFLOW_INFO) #define DH_ALARM_ACCESSIDENTIFY 0x31eb // VTO目标识别事件(对应结构体 NET_ALARM_ACCESSIDENTIFY) #define DH_ALARM_POWER_SWITCHER_ALARM 0x31ec // 供电电源开关状态异常报警事件(对应结构体 DEV_ALRAM_POWERSWITCHER_INFO) #define DH_ALARM_SCENNE_CHANGE_ALARM 0x31ed // 场景变更事件(对应结构体 ALARM_PIC_SCENECHANGE_INFO)原来是VideoAbnormalDetection的SceneChange子事件,因需求变更,改为单独事件类型 #define DH_ALARM_WIFI_VIRTUALINFO_SEARCH 0x31ef // WIFI虚拟身份上报事件(对应结构体 ALARM_WIFI_VIRTUALINFO_SEARCH_INFO) #define DH_ALARM_TRAFFIC_OVERSPEED 0x31f0 // 超速事件(对应结构体 ALARM_TRAFFIC_OVERSPEED_INFO) #define DH_ALARM_TRAFFIC_UNDERSPEED 0x31f1 // 欠速事件(对应结构体 ALARM_TRAFFIC_UNDERSPEED_INFO) #define DH_ALARM_TRAFFIC_PEDESTRAIN 0x31f2 // 交通行人事件(对应结构体 ALARM_TRAFFIC_PEDESTRAIN_INFO) #define DH_ALARM_TRAFFIC_JAM 0x31f3 // 交通拥堵事件(对应结构体 ALARM_TRAFFIC_JAM) #define DH_ALARM_TRAFFIC_PARKING 0x31f4 // 违章停车事件(对应结构体 ALARM_TRAFFIC_PARKING_INFO) #define DH_ALARM_TRAFFIC_THROW 0x31f5 // 交通抛洒物品事件(对应结构体 ALARM_TRAFFIC_THROW_INFO) #define DH_ALARM_TRAFFIC_RETROGRADE 0x31f6 // 逆行事件(对应结构体 ALARM_TRAFFIC_RETROGRADE_INFO) #define DH_ALARM_VTSTATE_UPDATE 0x31f7 // VTS状态上报(对应结构体 ALARM_VTSTATE_UPDATE_INFO) #define DH_ALARM_CALL_NO_ANSWERED 0x31f8 // 直连情况下,呼叫无答应事件(对应结构体 NET_ALARM_CALL_NO_ANSWERED_INFO) #define DH_ALARM_USER_LOCK_EVENT 0x31f9 // 用户锁定报警事件 #define DH_ALARM_RETROGRADE_DETECTION 0x31fa // 人员逆行事件(对应结构体 ALARM_RETROGRADE_DETECTION_INFO) #define DH_ALARM_AIO_APP_CONFIG_EVENT 0x31fb // AIO报警事件(对应结构体 ALARM_AIO_APP_CONFIG_EVENT) #define DH_ALARM_RAID_STATE_EX 0x31fc // RAID异常报警(对应结构体 ALARM_RAID_INFO_EX) #define DH_ALARM_STORAGE_IPC_FAILURE 0x31fd // IPC的存储介质故障事件(IPC SD卡异常)(对应结构体 ALARM_STORAGE_IPC_FAILURE_INFO) #define DH_ALARM_DEVICE_STAY 0x31fe // 静止报警,如果设备坐标在指定时间内没有变化,触发静止报警信息(对应的结构体 ALARM_DEVICE_STAY_INFO) #define DH_ALARM_SUB_WAY_DOOR_STATE 0x31ff // 地铁车厢门状态(对应结构体 ALARM_SUB_WAY_DOOR_STATE_INFO) #define DH_ALARM_SUB_WAY_PECE_SWITCH 0x3200 // 地铁PECE柜门状态(对应结构体 ALARM_SUB_WAY_PECE_SWITCH_INFO) #define DH_ALARM_SUB_WAY_FIRE_ALARM 0x3201 // 地铁火警事件(对应结构体 ALARM_SUB_WAY_FIRE_ALARM_INFO) #define DH_ALARM_SUB_WAY_EMER_HANDLE 0x3202 // 地铁乘客紧急手柄动作(对应结构体 ALARM_SUB_WAY_EMER_HANDLE_INFO) #define DH_ALARM_SUB_WAY_CAB_COVER 0x3203 // 地铁司机室盖板状态(对应结构体 ALARM_SUB_WAY_CAB_COVER_INFO) #define DH_ALARM_SUB_WAY_DERA_OBST 0x3204 // 地铁检测到障碍物或脱轨(对应结构体 ALARM_SUB_WAY_DERA_OBST_INFO) #define DH_ALARM_SUB_WAY_PECU_CALL 0x3205 // 地铁客室报警器状态(对应结构体 ALARM_SUB_WAY_PECU_CALL_INFO) #define DH_ALARM_BOX 0x3206 // 报警盒子报警事件 (对应结构体 ALARM_BOX_INFO) #define DH_ALARM_DOOR_CLOSEDMANUALLY 0x3207 // 人为关门事件(对应结构体 ALARM_DOOR_CLOSEDMANUALLY_INFO) #define DH_ALARM_DOOR_NOTCLOSED_LONGTIME 0x3208 // 门超长时间未关报警事件(对应结构体 ALARM_DOOR_NOTCLOSED_LONGTIME_INFO) #define DH_ALARM_UNDER_VOLTAGE 0x3209 // 电压低于9V, 电源欠压报警, 视频流以红色OSD图标叠加形式报警 (对应结构体 ALARM_UNDER_VOLTAGE_INFO ) #define DH_ALARM_OVER_VOLTAGE 0x320a // 电压高于19V, 电源过压报警, 视频流以红色OSD图标叠加形式报警 (对应结构体 ALARM_OVER_VOLTAGE_INFO ) #define DH_ALARM_CUT_LINE 0x320b // 剪断报警(对应结构体ALARM_CUT_LINE_INFO) #define DH_ALARM_VIDEOMOTION_EVENT 0x320c // 动检事件(对应结构体 ALARM_VIDEOMOTION_EVENT_INFO) #define DH_ALARM_WIDE_VIEW_REGION_EVENT 0x320d // WideViewRegions事件(对应结构体 ALARM_WIDE_VIEW_REGION_EVENT_INFO) A平台发该事件到球机,将该事件转发给B平台 #define DH_ALARM_FIBRE_OPTIC_ABORT 0x320e // 断纤报警(对应结构体 ALARM_FIBRE_OPTIC_ABORT) #define DH_ALARM_TAIL_DETECTION 0x320f // 尾随事件(对应结构体 ALARM_TAIL_DETECTION_INFO) #define DH_ALARM_BITRATES_OVERLIMIT 0x3210 // 相机码流大于通道解码规格报警(对应结构体 ALARM_BITRATES_OVERLIMIT_INFO) #define DH_ALARM_RECORD_CHANGED_EX 0x3211 // 录像状态变化报警(对应结构体 ALARM_RECORD_CHANGED_INFO_EX) #define DH_ALARM_HIGH_DECIBEL 0x3212 // 声音高分贝检测报警(对应结构体 ALARM_HIGH_DECIBEL_INFO) #define DH_ALARM_SHAKE_DETECTION 0x3213 // 摇晃检测报警(对应结构体 ALARM_SHAKE_DETECTION_INFO) #define DH_ALARM_TUMBLE_DETECTION 0x3214 // 倒地报警事件(对应结构体 ALARM_TUMBLE_DETECTION_INFO) #define DH_ALARM_ACCESS_CTL_MALICIOUS 0x3215 // 恶意开门事件(对应结构体 ALARM_ACCESS_CTL_MALICIOUS) #define DH_ALARM_ACCESS_CTL_USERID_REGISTER 0x3216 // 用户已注册事件(对应结构体 ALARM_ACCESS_CTL_USERID_REGISTER) #define DH_ALARM_ACCESS_CTL_REVERSELOCK 0x3217 // 锁体状态信息变化事件(对应结构体 ALARM_ACCESS_CTL_REVERSELOCK) #define DH_ALARM_ACCESS_CTL_USERID_DELETE 0x3218 // 删除用户事件(对应结构体 ALARM_ACCESS_CTL_USERID_DELETE) #define DH_ALARM_ACCESS_DOOR_BELL 0x3219 // 响铃事件(对应结构体 ALARM_ACCESS_DOOR_BELL_INFO) #define DH_ALARM_ACCESS_FACTORY_RESET 0x321a // 门锁恢复出厂(对应结构体 ALARM_ACCESS_FACTORY_RESET) #define DH_ALARM_POLICE_RECORD_PROGRESS 0x321b // MPT录像导入NVR的进度事件(对应结构体 ALARM_POLICE_RECORD_PROGRESS_INFO) #define DH_ALARM_POLICE_PLUGIN 0x321c // MPT接入拔出设备事件(对应结构体 ALARM_POLICE_PLUGIN_INFO) #define DH_ALARM_GPS_NOT_ALIGNED 0x321d // GPS未定位报警(对应结构体 ALARM_GPS_NOT_ALIGNED_INFO) #define DH_ALARM_WIRELESS_NOT_CONNECTED 0x321e // 网络未连接报警(包括wifi,3G/4G)(对应结构体 ALARM_WIRELESS_NOT_CONNECTED_INFO) #define DH_ALARM_CABINET 0x321f // 云柜设备发送的物品存放单号信息实时上报事件(对应结构体 ALARM_CABINET_INFO) #define DH_SWITCH_SCREEN 0x3220 // 切换屏幕事件 #define DH_ALARM_NEAR_DISTANCE_DETECTION 0x3221 // 近距离接触报警(对应结构体ALARM_NEAR_DISTANCE_INFO) #define DH_ALARM_MAN_STAND_DETECTION 0x3222 // 立体视觉站立报警(对应结构体ALARM_MAN_STAND_INFO) #define DH_ALARM_MAN_NUM_DETECTION 0x3223 // 立体视觉区域内人数统计报警(对应结构体ALARM_MAN_NUM_INFO) #define DH_MCS_GENERAL_CAPACITY_LOW 0x3224 // 微云常规容量事件(对应结构体ALARM_MCS_GENERAL_CAPACITY_LOW_INFO) #define DH_MCS_DATA_NODE_OFFLINE 0x3225 // 微云存储节点下线事件(对应结构体ALARM_MCS_DATA_NODE_OFFLINE_INFO) #define DH_MCS_DISK_OFFLINE 0x3226 // 微云磁盘下线事件(对应结构体ALARM_MCS_DISK_OFFLINE_INFO) #define DH_MCS_DISK_SLOW 0x3227 // 微云磁盘变慢事件(对应结构体ALARM_MCS_DISK_SLOW_INFO) #define DH_MCS_DISK_BROKEN 0x3228 // 微云磁盘损坏事件(对应结构体ALARM_MCS_DISK_BROKEN_INFO) #define DH_MCS_DISK_UNKNOW_ERROR 0x3229 // 微云磁盘未知错误事件(对应结构体ALARM_MCS_DISK_UNKNOW_ERROR_INFO) #define DH_MCS_METADATA_SERVER_ABNORMAL 0x322a // 微云元数据服务器异常事件(对应结构体ALARM_MCS_METADATA_SERVER_ABNORMAL_INFO) #define DH_MCS_CATALOG_SERVER_ABNORMAL 0x322b // 微云目录服务器异常事件(对应结构体ALARM_MCS_CATALOG_SERVER_ABNORMAL_INFO) #define DH_MCS_GENERAL_CAPACITY_RESUME 0x322c // 微云常规容量恢复事件(对应结构体ALARM_MCS_GENERAL_CAPACITY_RESUME_INFO) #define DH_MCS_DATA_NODE_ONLINE 0x322d // 微云存储节点上线事件(对应结构体ALARM_MCS_DATA_NODE_ONLINE_INFO) #define DH_MCS_DISK_ONLINE 0x322e // 微云磁盘上线事件(对应结构体ALARM_MCS_DISK_ONLINE_INFO) #define DH_MCS_METADATA_SLAVE_ONLINE 0x322f // 微云元数据备机上线事件(对应结构体ALARM_MCS_METADATA_SLAVE_ONLINE_INFO) #define DH_MCS_CATALOG_SERVER_ONLINE 0x3230 // 微云目录服务器上线事件(对应结构体ALARM_MCS_CATALOG_SERVER_ONLINE_INFO) #define DH_ALARM_OFFLINE_LOGSYNC 0x3231 // 同步离线日志事件(对应结构体 ALARM_OFFLINE_LOGSYNC_INFO) #define DH_ALARM_UPGRADE_STATE 0x3232 // 设备升级状态事件(对应结构体 ALARM_UPGRADE_STATE) #define DH_ALARM_LABELINFO 0x3233 // IPC新增(2017.4),RFID标签信息采集事件(对应结构体 ALARM_LABELINFO) #define DH_ALARM_TIRED_PHYSIOLOGICAL 0x3234 // 生理疲劳事件(对应结构体 ALARM_TIRED_PHYSIOLOGICAL) #define DH_ALARM_CALLING_WHEN_DRIVING 0x3235 // 开车打电话事件(对应结构体 ALARM_CALLING_WHEN_DRIVING) #define DH_ALARM_TRAFFIC_DRIVER_SMOKING 0x3236 // 开车抽烟事件(对应结构体 ALARM_TRAFFIC_DRIVER_SMOKING) #define DH_ALARM_TRAFFIC_DRIVER_LOWER_HEAD 0x3237 // 开车低头报警事件(对应结构体 ALARM_TRAFFIC_DRIVER_LOWER_HEAD) #define DH_ALARM_TRAFFIC_DRIVER_LOOK_AROUND 0x3238 // 开车左顾右盼报警事件(对应结构体 ALARM_TRAFFIC_DRIVER_LOOK_AROUND) #define DH_ALARM_TRAFFIC_DRIVER_LEAVE_POST 0x3239 // 开车离岗报警事件(对应结构体 ALARM_TRAFFIC_DRIVER_LEAVE_POST) #define DH_ALARM_TRAFFIC_DRIVER_YAWN 0x323a // 开车打哈欠报警事件(对应结构体 ALARM_TRAFFIC_DRIVER_YAWN) #define DH_ALARM_AUTO_INSPECTION 0x323b // 设备自检事件(对应结构体 ALARM_AUTO_INSPECTION) #define DH_ALARM_TRAFFIC_VEHICLE_POSITION 0x323c // 车辆位置事件(对应的结构体 ALARM_TRAFFIC_VEHICLE_POSITION) #define DH_ALARM_FACE_VERIFICATION_ACCESS_SNAP 0x323d // 目标认证开门抓图信息事件(对应结构体 ALARM_FACE_VERIFICATION_ACCESS_SNAP_INFO) #define DH_ALARM_VIDEOBLIND 0x323e // 视频遮挡事件(对应结构体ALARM_VIDEO_BLIND_INFO) #define DH_ALARM_DRIVER_NOTCONFIRM 0x323f // 司机未按确认按钮报警事件(对应结构体ALARM_DRIVER_NOTCONFIRM_INFO) #define DH_ALARM_FACEINFO_COLLECT 0x3240 // 目标信息录入事件(对应ALARM_FACEINFO_COLLECT_INFO) #define DH_ALARM_HIGH_SPEED 0x3241 // 车辆超速报警事件(对应 ALARM_HIGH_SPEED_INFO) #define DH_ALARM_VIDEO_LOSS 0x3242 // 视频丢失事件(对应 ALARM_VIDEO_LOSS_INFO) #define DH_ALARM_MPTBASE_CONNECT 0x3243 // 设备与底座连接状态事件(对应结构体ALARM_MPTBASE_CONNECT) #define DH_ALARM_LATEST_SHUTDOWN 0x3244 // 设备上次关机状态事件(对应结构体 ALARM_LATEST_SHUTDOWN) // ------------- 机器人专用事件 ------------------ #define DH_ALARM_ROBOT_COLLISION 0x3245 // 机器人碰撞事件(对应结构体 ALARM_ROBOT_COLLISION) #define DH_ALARM_ROBOT_FALLENDOWN 0x3246 // 机器人跌倒事件(对应结构体 ALARM_ROBOT_FALLENDOWN) #define DH_ALARM_ROBOT_UNRECOGNIZED2DCODE 0x3247 // 机器人二维码本身码值错误事件(对应结构体 ALARM_ROBOT_UNRECOGNIZED2DCODE) #define DH_ALARM_ROBOT_WRONG2DCODE 0x3248 // 机器人错误二位码事件(对应的结构体 ALARM_ROBOT_WRONG2DCODE) #define DH_ALARM_ROBOT_ROADBLOCKED 0x3249 // 机器人路障事件(对应结构体 ALARM_ROBOT_ROADBLOCKED) #define DH_ALARM_ROBOT_FAULT 0x324a // 机器人故障事件(对应结构体 ALARM_ROBOT_FAULT) #define DH_ALARM_ROBOT_OVERLOAD 0x324b // 机器人超载事件(对应结构体 ALARM_ROBOT_OVERLOAD) #define DH_ALARM_ROBOT_YAWEXCEPTION 0x324c // 机器人意外偏航事件(对应 ALARM_ROBOT_YAWEXCEPTION) #define DH_ALARM_ROBOT_LOADTIMEOUT 0x324e // 机器人上料异常(对应 ALARM_ROBOT_LOADTIMEOUT ) #define DH_ALARM_ROBOT_UNLOADTIMEOUT 0x324f // 机器人卸料异常事件(对应 ALARM_ROBOT_UNLOADTIMEOUT) #define DH_ALARM_ROBOT_MAPUPDATE 0x3250 // 机器人地图更新事件(对应 ALARM_ROBOT_MAPUPDATE) #define DH_ALARM_ROBOT_BRAKE 0x3252 // 机器人紧急刹车事件(对应 ALARM_ROBOT_BRAKE) #define DH_ALARM_ROBOT_MANUAL_INTERVENTION 0x3253 // 机器人人工干预事件(对应 ALARM_ROBOT_MANUAL_INTERVENTION) //机器人事件预留至0x3299 // ----------------------------------------------- #define DH_ALARM_VIDEO_TALK_PATH 0x324d // 对讲路径事件(对应结构体 ALARM_VIDEO_TALK_PATH_INFO) #define DH_ALARM_CGIRECORD 0x3251 // cgi触发手动录像(对应 ALARM_CGIRECORD) #define DH_ALARM_BATTERY_TEMPERATURE 0x3254 // 电池温度上报事件(对应 ALARM_BATTERY_TEMPERATURE_INFO) #define DH_ALARM_TIRE_PRESSURE 0x3255 // 胎压上报事件(对应 ALARM_TIRE_PRESSURE_INFO ) #define DH_ALARM_VTH_CONFLICT 0x3256 // 房间号冲突冲突上报事件(对应 ALARM_VTH_CONFLICT_INFO) #define DH_ALARM_ACCESS_CTL_BLACKLIST 0x3257 // 门禁禁止名单刷卡事件上报(对应 ALARM_ACCESS_CTL_BLACKLIST) #define DH_ALARM_ROBOT_EMERGENCY_STOP 0x3258 // 机器人紧急停车按钮事件(对应 ALARM_ROBOT_EMERFEBCY_STOP) #define DH_ALARM_ROBOT_PATH_PLAN_FAILED 0x3259 // 机器人路径规划失败事件(对应 ALARM_ROBOT_PATH_PLAN_FAILED) #define DH_ALARM_ROBOT_LOCAL_MAP_UPLOAD 0x325a // 机器人本地地图上传事件(对应 ALARM_ROBOT_LOCAL_MAP_UPLOAD) #define DH_ALARM_ROBOT_SHELF_ERROR 0x325b // 机器人货架异常事件(对应 ALARM_ROBOT_SHELF_ERROR) #define DH_ALARM_ROBOT_SENSOR_ERROR 0x325c // 机器人传感器异常事件(对应 ALARM_ROBOT_SENSOR_ERROR) #define DH_ALARM_ROBOT_DERAILMENT 0x325d // 机器人脱轨事件(对应 ALARM_ROBOT_DERAILMENT) #define DH_ALARM_ROBOT_MOTOR_UNINIT 0x325e // 机器人电机抱闸未使能事件(对应 ALARM_ROBOT_MOTOR_UNINIT) #define DH_ALARM_ROBOT_PREVENT_FALLING 0x325f // 机器人防跌落事件(对应 ALARM_ROBOT_PREVENT_FALLING) #define DH_ALARM_ROBOT_LOCATION_EXCEPTION 0x3260 // 机器人定位异常事件(对应 ALARM_ROBOT_LOCATION_EXCEPTION ) #define DH_ALARM_ROBOT_UPGRADER_FAIL 0x3261 // 机器人升级失败反馈(对应 ALARM_ROBOT_UPGRADER_FAIL) #define DH_ALARM_ROBOT_CHARGING_ERROR 0x3262 // 机器人充电异常事件(对应 ALARM_ROBOT_CHARGING_ERROR) #define DH_ALARM_ROBOT_STATIONCHARGING_ERROR 0x3263 // 机器人充电桩充电异常事件(对应 ALARM_ROBOT_STATIONCHARGING_ERROR) #define DH_ALARM_ROBOT_CAMERA_ABNORMAL 0x3264 // 机器人相机异常事件(对应 ALARM_ROBOT_CAMERA_ABNORMAL) #define DH_ALARM_ROBOT_ERROR_REPORT 0x3265 // 机器人故障信息(对应 ALARM_ROBOT_ERROR_REPORT) #define DH_ALARM_ROBOT_DOOR_CONTROL_REQUEST 0x3266 // 机器人门控制请求事件(对应 ALARM_ROBOT_DOOR_CONTROL_REQUEST_INFO) #define DH_ALARM_ROBOT_FAILEDTO_CONTROLROOM 0x3267 // 机器人打开充电房门失败事件(对应 ALARM_ROBOT_FAILEDTO_CONTROLROOM) #define DH_ALARM_ROBOT_ABNORMAL2DCODE 0x3268 // 机器人二维码异常事件(对应 ALARM_ROBOT_ABNORMAL2DCODE) #define DH_ALARM_ROBOT_SECURITYDOGINVALID 0x3269 // 机器人加密狗无效事件(对应 ALARM_ROBOT_SECURITYDOGINVALID) #define DH_ALARM_ROBOT_LOCKAREA_BLOCKED 0x326a // 机器人锁定区域阻塞事件(对应 ALARM_ROBOT_LOCKAREA_BLOCKED) #define DH_ALARM_ROBOT_REQUEST_CANCLE_TASK 0x326b // 机器人通知平台取消当前任务事件(对应 ALARM_ROBOT_REQUEST_CANCLE_TASK) #define DH_ALARM_ROBOT_FORK_BLOCK 0x326c // 机器人货叉遇障事件(对应 ALARM_ROBOT_FORK_BLOCK) #define DH_ALARM_ROBOT_SHUT_DOWN 0x326d // 机器人关机事件(对应 ALARM_ROBOT_SHUT_DOWN) #define DH_ALARM_ROBOT_LASER_HEAD_DIRTY 0x326e // 机器人激光头脏事件(对应 ALARM_ROBOT_LASER_HEAD_DIRTY) #define DH_ALARM_ROBOT_UNTRACK 0x326f // 机器人不上轨报警事件(对应 ALARM_ROBOT_UNTRACK) #define DH_ALARM_ROBOT_IN_ELEVATOR 0x3270 // 机器人到达电梯事件(对应 ALARM_ROBOT_IN_ELEVATOR) #define DH_ALARM_ROBOT_CORRECT_LOACATION 0x3271 // 机器人重定位事件(对应 ALARM_ROBOT_CORRECT_LOACATION) #define DH_ALARM_ROBOT_SLIP 0x3272 // 机器人打滑事件(对应 ALARM_ROBOT_SLIP) #define DH_ALARM_ROBOT_LOAD_HEIGHT_ALARM 0x3273 // 机货物超高事件(对应 ALARM_ROBOT_LOAD_HEIGHT_ALARM) #define DH_ALARM_ROBOT_EMERGENCY_STOP_EX 0x3274 // 机器人急停事件扩展(对应 ALARM_ROBOT_EMERGENCY_STOP_EX) //新增事件从0x3300开始 #define DH_ALARM_USERLOCK 0x3300 // 用户锁定报警事件(对应 ALARM_USERLOCK_INFO) #define DH_ALARM_DOWNLOAD_REMOTE_FILE 0x3301 // 下载远程文件事件(对应ALARM_DOWNLOAD_REMOTE_FILE_INFO) #define DH_ALARM_NASFILE_STATUS 0x3302 // NAS文件状态事件(对应结构体 ALARM_NASFILE_STATUS_INFO) #define DH_ALARM_TALKING_CANCELCALL 0x3303 // 设备呼叫中取消呼叫事件(对应结构体 ALARM_TALKING_CANCELCALL_INFO) #define DH_ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP 0x3304 // 未授权卡恶意刷卡事件(对应结构体 ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP)已废弃,复用DH_ALARM_ACCESS_CTL_MALICIOUS事件 #define DH_ALARM_CROWD_DETECTION 0x3305 // 人群密度检测事件(对应结构体 ALARM_CROWD_DETECTION_INFO) #define DH_ALARM_FACE_FEATURE_ABSTRACT 0x3306 // 目标特征向量重建结果事件(对应结构体ALARM_FACE_FEATURE_ABSTRACT_INFO) #define DH_ALARM_RECORD_SCHEDULE_CHANGE 0x3307 // 录像计划改变事件(对应结构体 ALARM_RECORD_SCHEDULE_CHANGE_INFO) #define DH_ALARM_NTP_CHANGE 0x3308 // NTP配置修改事件(对应结构体 ALARM_NTP_CHANGE_INFO) #define DH_ALARM_HDD_TEMPERATUREALARM 0x3309 // 硬盘温度报警事件(对应结构体 ALARM_HDD_TEMPERATUREALARM_INFO) #define DH_ALARM_HDD_HEALTHALARM 0x330a // 硬盘健康状况报警事件(对应结构体 ALARM_HDD_HEALTHALARM_INFO) #define DH_ALARM_HDD_SHAKEALARM 0x330b // 硬盘震动报警事件(对应结构体 ALARM_HDD_SHAKEALARM_INFO) #define DH_ALARM_PATROL_STATUS 0x330c // 未巡更报警事件(对应结构体 ALARM_PATROL_STATUS_INFO) #define DH_ALARM_CITIZEN_PICTURE_COMPARE 0x330d // 人证比对事件(对应结构体 ALARM_CITIZEN_PICTURE_COMPARE_INFO) /* start 报警主机事件,预留58个事件*/ #define DH_ALARM_AREAARM_MODECHANGE 0x330e // 区域防区模式改变(对应结构体ALARM_AREAARM_MODECHANGE_INFO) #define DH_ALARM_ZONEMODULELOST 0x330f // 防区模块掉线(对应结构提ALARM_ZONEMODULE_LOST_INFO) #define DH_ALARM_AREAALARM 0x3310 // 区域报警(对应结构体ALARM_AREAALARM_INFO) #define DH_ALARM_ZONEOPEN 0x3311 // 防区打开(对应结构体ALARM_ZONEOPEN_INFO) #define DH_ALARM_SYSTEMTAMPER 0x3312 // 防拆事件(对应结构体ALARM_SYSTEMTAMPER_INFO) #define DH_ALARM_ALARMREGION_MAXEVENTID 0x3348 // 报警主机新品事件最大值,这个值不可用 /* end 报警主机事件,预留58个事件 */ #define DH_ALARM_LAW_ENFORCEMENT_INFO 0x3349 // 实时上报执法终端设备信息事件(对应的结构体 ALARM_LAW_ENFORCEMENT_INFO) #define DH_ALARM_CONGESTION_DETECTION 0x334A // 道路场景车辆拥堵报警事件(对应 ALARM_CONGESTION_DETECTION_INFO) #define DH_ALARM_VEHICLELIMIT_DETECTION 0x334B // 停车场场景下停车车辆上限报警(对应 ALARM_VEHICLELIMIT_DETECTION_INFO) #define DH_ALARM_TRAFFIC_PARKING_TIMEOUT 0x334C // 停车时长超限事件(对应的结构体 ALARM_TRAFFIC_PARKING_TIMEOUT_INFO) /* end 报警主机事件,预留64个事件*/ #define DH_ALARM_DISTANCE_DETECTION 0x334e // 异常间距事件(对应 ALARM_DISTANCE_DETECTION_INFO) #define DH_ALARM_STAY_DETECTION 0x334f // 停留事件(对应 ALARM_STAY_DETECTION_INFO) #define DH_ALARM_DEVBOARDHOTPLUG 0x3350 // 双控设备热插拔事件(对应结构体 ALARM_DEVBOARDHOTPLUG_INFO) #define DH_ALARM_HOMESCENE_CHANGE 0x3351 // 智能家居场景变化事件(对应结构体ALARM_HOMESCENE_CHANGE_INFO) #define DH_ALARM_STORAGE_WORKDIRECTORY_SWITCH 0x3352 // 当前工作目录切换事件(对应结构体 ALARM_STORAGE_WORKDIRECTORY_SWITCH_INFO) #define DH_ALARM_TRAFFIC_LINKAGEALARM 0x3353 // 各种违章事件联动报警输出事件(对应结构体 ALARM_TRAFFIC_LINKAGEALARM_INFO) #define DH_ALARM_COAXIAL_ALARM_LOCAL 0x3354 // 同轴开关量报警事件(对应结构体 ALARM_COAXIAL_ALARM_LOCAL_INFO) #define DH_ALARM_NAS_FILE_REMOVE_STATUS 0x3355 // NAS文件删除状态事件(对应结构体 ALARM_NAS_FILE_REMOVE_STATUS_INFO) #define DH_ALARM_NAS_APK_INSTALL_REQUEST 0x3356 // 请求设备安装APK事件(对应结构体 ALARM_NAS_APK_INSTALL_REQUEST_INFO) #define DH_ALARM_NAS_APK_INSTALL_STATUS 0x3357 // 设备安装APK状态事件(对应结构体 ALARM__APK_INSTALL_STATUS_INFO) #define DH_ALARM_FILE_COMPRESS_STATUS 0x3358 // 文件压缩解压状态事件(对应结构体 ALARM_FILE_COMPRESSS_STATUS_INFO) #define DH_ALARM_STRANGER_ALARM 0x3359 // 陌生人报警事件(对应结构体 ALARM_STRANGER_ALARM_INFO) #define DH_ALARM_QR_CODE_CHECK 0x335a // 二维码上报事件(对应结构体 ALARM_QR_CODE_CHECK_INFO) #define DH_ALARM_ACCESS_CTL_LOCK_MODE 0x335b // 门锁模式事件(对应结构体 ALARM_ACCESS_CTL_LOCK_MODE_INFO) #define DH_ALARM_LOCK_ROOM_NUM_BIND 0x335c // 房间号绑定事件(对应结构体 ALARM_LOCK_ROOM_NUM_BIND_INFO) #define DH_ALARM_LEAVE_DETECTION 0x335d // 离岗检测(对应结构体 ALARM_LEAVE_DETECTION_INFO) #define DH_ALARM_TRAFFICGZJJ_QUEUE_LEN 0x335e // 交通排队长度事件(对应结构体 ALARM_TRAFFICGZJJ_QUEUE_LEN_INFO) #define DH_ALARM_TRAFFIC_XINKONG 0x335f // 交通态势报警事件(对接结构体 ALARM_TRAFFIC_XINKONG_INFO) #define DH_ALARM_DEVICE_ABNORMAL 0x3360 // 设备异常事件 (对应结构体 ALARM_DEVICE_ABNORMAL_INFO ) /* start 雷球联动事件,预留64个事件*/ #define DH_ALARM_RADAR_REGIONDETECTION 0x3370 // 雷达区域检测事件(对应结构体 ALARM_RADAR_REGIONDETECTION_INFO) #define DH_ALARM_RADAR_LINEDETECTION 0x3371 // 雷达警戒线/绊线检测事件(对应结构体ALARM_RADAR_LINEDETECTION_INFO) #define DH_ALARM_RADAR_MAXEVENTID 0x3433 // 雷达新品事件最大值,这个值不可用 /* end 雷球联动事件,预留64个事件*/ #define DH_ALARM_JABLOTRON_ALARM 0x3434 // 客户报警产品(对应结构体 ALARM_JABLOTRONALARM_INFO) #define DH_ALARM_FACE_RECOGNITION 0x3435 // 目标识别事件(对应结构体 ALARM_FACE_RECOGNITION_INFO) #define DH_ALARM_VEHICLE_OILLEVEL 0x3436 // 车载燃料液位事件(对应结构体 ALARM_VEHICLE_OILLEVEL_INFO) #define DH_ALARM_VEHICLE_LOAD 0x3437 // 车载燃料载重事件(对应结构体 ALARM_VEHICLE_LOAD_INFO) #define DH_ALARM_VEHICLE_STATE 0x3438 // 车辆状态事件(对应结构体 ALARM_VEHICLE_STATE_INFO) #define DH_ALARM_IMSI_CHECK 0x3439 // IMSI校验事件(对应结构体 ALARM_IMSI_CHECK_INFO) #define DH_ALARM_BLIND_ALARM 0x343A // 进入盲区事件(对应结构体 ALARM_BLIND_ALARM_INFO) #define DH_ALARM_VEHICLE_MAINTAINCE 0x343B // 车载人员维护事件(对应结构体 ALARM_VEHICLE_MAINTAINCE_INFO) #define DH_ALARM_PARKINGLOCK_STATE 0x343C // 车位锁状态变化事件(对应结构体 ALARM_PARKINGLOCK_STATE_INFO) #define DH_ALARM_FIRE_DETECTION 0x343D // 火警事件(对于的结构体 ALARM_FIRE_DETECTION_INFO) #define DH_ALARM_NAS_SERVER_STATE 0x343E // NAS共享服务器异常报警事件(对应结构体 ALARM_NAS_SERVER_STATE_INFO ) #define DH_ALARM_VOLUME_GROUP_FAULT 0x343F // 存储池异常报警事件(对应结构体 ALARM_VOLUME_GROUP_FAULT_INFO) #define DH_ALARM_DISK_CHECK 0x3440 // 磁盘巡检报警事件(对应结构体 ALARM_DISK_CHECK_INFO) #define DH_ALARM_PHONECALL_DETECT 0x3441 // 打电话检测事件(对应结构体 ALARM_PHONECALL_DETECT_INFO) #define DH_ALARM_FLOATINGOBJECT_DETECTION 0x3442 // 漂浮物检测事件(对应结构体 ALARM_FLOATINGOBJECT_DETECTION_INFO) #define DH_ALARM_WATER_LEVEL_DETECTION 0x3443 // 水位检测事件(对应结构体 ALARM_WATER_LEVEL_DETECTION_INFO) #define DH_ALARM_LOW_SPEED 0x3444 // 怠速报警即低速报警(对应结构体 ALARM_LOW_SPEED_INFO) #define DH_ALARM_TRAFFIC_VEHICLEINOUT 0x3445 // 车辆进出车道报警(对应结构体 ALARM_TRAFFIC_VEHICLEINOUT_INFO) #define DH_ALARM_TRAFFIC_JUNCTION 0x3446 // 交通路口事件(对应结构体 ALARM_TAFFIC_JUNCTION_INFO) #define DH_ALARM_DOOR_CONTROL 0x3447 // 报警输出联动开门事件 (对应结构体 ALARM_DOOR_CONTROL_INFO) #define DH_ALARM_ARMSTATE 0x3448 // 防区状态事件 (对应结构体 ALARM_ARMSTATE_INFO) #define DH_ALARM_TICKET_INFO_REPORT 0x3449 // 车票信息上报事件 (对应 ALARM_TICKET_INFO_REPORT) #define DH_ALARM_TRAFFIC_LAMP_WORK_STATE 0x344E // 交通相机通过串口与补光灯连接获取补光灯的状态信息事件 (对应 ALARM_TRAFFIC_LAMP_WORK_STATE_INFO) #define DH_ALARM_ENGINE_FAILURE_STATUS 0x344F // 发动机故障状态上报(对应 ALARM_ENGINE_FAILURE_STATUS_INFO) #define DH_ALARM_HIGH_TOSS_DETECT 0x3450 // 高空抛物检测事件(对应 ALARM_HIGH_TOSS_DETECT_INFO) #define DH_ALARM_PARKING_LOT_STATUS_DETECTION 0X3451 // 室外停车位状态检测事件 (对应结构体 ALARM_PARKING_LOT_STATUS_DETECTION) #define DH_ALARM_STORAGE_HEALTH_ABNORMAL 0x3452 // 硬盘健康报警事件(对应 ALARM_STORAGE_HEALTH_ABNORMAL_INFO) #define DH_ALARM_CLEAR_CAR 0x3453 // 清车报警事件(对应 ALARM_CLEAR_CAR_INFO) #define DH_ALARM_ANATOMY_TEMP_DETECT 0x3454 // 人体温智能检测事件(对应结构体 ALARM_ANATOMY_TEMP_DETECT_INFO) #define DH_ALARM_REGULATOR_ABNORMAL 0x3455 // 标准黑体源异常报警事件(对应结构体 ALARM_REGULATOR_ABNORMAL_INFO) #define DH_ALARM_DHOP_CUSTOM 0x3456 // Dhop自定义事件(start/stop, 对应 ALARM_DHOP_CUSTOM_INFO) #define DH_ALARM_DHOP_CUSTOM_ONCE 0x3457 // Dhop自定义事件(pulse, 对应 ALARM_DHOP_CUSTOM_INFO) #define DH_ALARM_TRAFFIC_LIGHT_STATE 0x3458 // 交通灯状态报警(对应 ALARM_TRAFFIC_LIGHT_STATE_INFO) #define DH_ALARM_SWIPCARD_STATUS 0x3459 // 刷卡机状态报警(对应 ALARM_SWIPCARD_STATUS_INFO) #define DH_ALARM_AUDIOHOST_STATE 0x345A // 音频主机状态报警(对应 ALARM_AUDIOHOST_STATE_INFO) #define DH_ALARM_PTZ_ABNORMAL 0x345B // 云台异常检测事件(对应结构体 ALARM_PTZ_ABNORMAL_INFO) #define DH_ALARM_STORAGEFORMAT 0x345C // 硬盘格式化事件 (对应结构体 ALARM_STORAGEFORMAT_INFO ) #define DH_ALARM_APPCMDSTATE 0x345D // 透传信令到Dhop的App事件 (对应结构体 ALARM_APPCMDSTATE_INFO ) #define DH_ALARM_BLUE_TOOTH_HEADSET_ALARM 0x345E // 蓝牙耳机"一键报警"事件(对应结构体 ALARM_BLUE_TOOTH_HEADSET_ALARM_INFO ) #define DH_ALARM_SOLARCELL_SYSTEM_INFO 0x345F // 太阳能系统信息上报(对应结构体 ALARM_SOLARCELL_SYSTEM_INFO) #define DH_ALARM_REGION_PARKING_TIMEOUT 0x3460 // 区间车位停车超时(对应结构体 ALARM_REGION_PARKING_TIMEOUT_INFO) #define DH_ALARM_REGION_PARKING_NO_ENTRY_RECORD 0x3461 // 区间车位停车驶出没有驶入记录(对应结构体 ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO) #define DH_ALARM_OVER_LOAD 0x3462 // 超载(对应的结构体 ALARM_OVER_LOAD_INFO) #define DH_ALARM_WIRELESS_LOG_INFO 0x3463 // 智能网关日志或者二进制数据(对应结构体 ALARM_WIRELESS_LOG_INFO) #define DH_ALARM_TIME_TO_POWEROFF 0x3464 // 电池相机达到拉流预览时间上限关机通知事件 (对应结构体 ALARM_TIME_TO_POWEROFF_INFO ) #define DH_ALARM_TRAFFIC_LIGHT_FAULT_STATE 0x3465 // 交通灯故障报警事件(对应结构体 ALARM_TRAFFIC_LIGHT_FAULT_INFO) #define DH_ALARM_VEHICLE_PERIPHERAL 0x3466 // 车载外设异常报警 (对应结构体 ALARM_VEHICLE_PERIPHERAL_INFO ) #define DH_ALARM_FIRE_LANE_DETECTION 0x3467 // 消防占道检测事件(对应 ALARM_FIRE_LANE_DETECTION_INFO ) #define DH_ALARM_FIRE_LINE_DETECTION 0x3468 // 进入消防通道检测 (对应 ALARM_FIRE_LINE_DETECTION_INFO) #define DH_ALARM_DISK_HEALTH_FAILURE 0x3469 // 硬盘健康异常事件 (对应 ALARM_DISK_HEALTH_FAILURE_INFO) #define DH_ALARM_VEHICLE_INOUT 0x346A // 车辆出入事件 (对应 ALARM_VEHICLE_INOUT_INFO) #define DH_ALARM_REFRIGE_SHUT_DOWN 0x346B // 当制冷机进入关闭倒计时时进行提示(对应 ALARM_REFRIGE_SHUT_DOWN_INFO) #define DH_ALARM_AROUD_4G_PROBE_SEARCH 0x346C // 手机识别码探测事件 (对应 ALARM_AROUD_4G_PROBE_SEARCH_INFO ) #define DH_ALARM_DISS_ASSEMBLY 0x3471 // 设备机体拆解事件 (对应结构体 ALARM_DISS_ASSEMBLY_INFO #define DH_ALARM_SLEEP_CONTROL_STATUS 0x3472 // 休眠状态事件 (对应结构体 ALARM_SLEEP_CONTROL_STATUS_INFO ) #define DH_ALARM_REMOTE_DISASSEMBLY 0x3473 // 远端设备机体拆解事件 ( 对应结构体 ALARM_REMOTE_DISASSEMBLY_INFO ) #define DH_ALARM_NONMOTOR_ENTRYING 0x3474 // 非机动车进入电梯事件(对应 ALARM_NONMOTOR_ENTRYING_INFO) #define DH_ALARM_SCREENSAVER 0x3475 // 智网产品,屏保事件(对应结构体 ALARM_SCREENSAVER_INFO) #define DH_ALARM_ABN_POST_DETECTION 0x3476 // 岗位人数或人员异常事件,IPC首次提交 (对应结构体 ALARM_ABN_POST_DETECTION_INFO) #define DH_ALARM_CITY_MOTORPARKING 0x3477 // 城市机动车违停事件(对应结构体 ALARM_CITY_MOTORPARKING_INFO) #define DH_ALARM_RECORD_BACKUP_FAILURE 0x3478 // 录像备份失败事件 (对应结构体 ALARM_RECORD_BACKUP_FAILURE_INFO ) #define DH_ALARM_EMERGENCY_FILE_UPLOAD 0x3479 // MPT设备要求主动上传指定文件给平台事件(对应结构体 ALARM_EMERGENCY_FILE_UPLOAD) #define DH_ALARM_COAXIAL_HIGH_TEMPERATURE 0x347A // 超温报警事件(对应结构体 ALARM_COAXIAL_HIGH_TEMPERATURE_INFO) #define DH_ALARM_COAXIAL_LOW_TEMPERATURE 0x347B // 失温报警事件(对应结构体 ALARM_COAXIAL_LOW_TEMPERATURE_INFO) #define DH_ALARM_BREED_DETECTION 0x347C // 智慧养殖检测事件(对应结构体 ALARM_BREED_DETECTION_INFO) #define DH_ALARM_CHANNEL_RECSHORTAGE 0x347D // 通道录像不足配置的天数事件(对应结构体 ALARM_CHANNEL_RECSHORTAGE_INFO) #define DH_ALARM_EMERGENCY_FILE_UPLOAD_CANCEL 0x347E // MPT设备要求平台取消下载事件(对应结构体 ALARM_EMERGENCY_FILE_UPLOAD_CANCEL_INFO) #define DH_ALARM_SECURITY_INSPECTOR_OVERTIME_ON_DUTY 0x347F // 安检员超时在岗事件(对应结构体 ALARM_SECURITY_INSPECTOR_OVERTIME_ON_DUTY_INFO) #define DH_ALARM_SECURITY_INSPECTOR_NOT_CONFIRM_PACKAGE 0x3480 // 安检员未确认包裹事件(对应结构体 ALARM_SECURITY_INSPECTOR_NOT_CONFIRM_PACKAGE_INFO) #define DH_ALARM_WORKSUIT_FEATURE_ABSTRACT 0x3481 // 工装特征向量建模结果上报事件(对应结构体ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO) #define DH_ALARM_RUN_DETECTION 0x3482 // 奔跑检测事件(对应结构体 ALARM_RUN_DETECTION_INFO) #define DH_ALARM_ANATOMY_TEMPDETECT_TO_PHONE 0x3483 // 专用于手机推送的人体测温事件(对应结构体ALARM_ANATOMY_TEMPDETECT_TO_PHONE_INFO) #define DH_ALARM_CHANNEL_CAPS_CHANGE 0x3484 // 通道智能能力变化事件(对应结构体ALARM_CHANNEL_CAPS_CHANGE_INFO) #define DH_ALARM_RAIN_FALL_MSG 0x3485 // 雨量数据上报事件(对应结构体 ALARM_RAIN_FALL_MSG_INFO) #define DH_ALARM_VEHICLE_DETENTION 0x3486 // 车道滞留事件(对应结构体ALARM_VEHICLE_DETENTION_INFO) #define DH_ALARM_ANIMAL_DETECTION 0x3487 // 动物检测事件(对应结构体ALARM_ANIMAL_DETECTION_INFO) #define DH_ALARM_ASG_SELFCHECK 0x3488 // 闸机自检事件(对应结构体ALARM_ASG_SELFCHECK_INFO) #define DH_ALARM_GPS_REPORTING_PLATFORM 0x3489 // GPS上报平台事件(对应结构体ALARM_GPS_REPORTING_PLATFORM) #define DH_ALARM_HOSPITAL_ALARM 0x348A // 医护对讲的报警事件,用来上报护理、报警、托管等事件(对应结构体 ALARM_HOSPITAL_ALARM_INFO) #define DH_ALARM_CUTLINE 0x348B // 报警线剪断报警事件(对应结构体 ALARM_CUTLINE) #define DH_ALARM_VIDEOTALK 0x348C // 对讲记录事件(对应结构体 ALARM_VIDEOTALK_INFO) #define DH_ALARM_PREVENT_FREE_RIDE 0x348D // 公交系统上报逃票异常报警事件(对应结构体 ALARM_PREVENT_FREE_RIDE_INFO) #define DH_ALARM_BLIND_SPOT_DETECTION 0x348E // 右侧盲区报警(对应结构体 ALARM_BLIND_SPOT_DETECTION_INFO) #define DH_ALARM_WATER_SPEED_DETECTION 0x348F // 水流速检测事件(对应结构体 ALARM_WATER_SPEED_DETECTION_INFO) #define DH_ALARM_HUMIDITY_ALARM 0x3490 // 湿度报警事件(对应结构体 ALARM_HUMIDITY_ALARM_INFO) #define DH_ALARM_SIP_REGISTER_RESULT 0x3491 // 注册状态事件(对应结构体 ALARM_SIP_REGISTER_RESULT_INFO) #define DH_ALARM_GESTURE_DETECTION 0x3492 // 手势检测事件(对应结构体 ALARM_GESTURE_DETECTION_INFO) #define DH_ALARM_DEFENSE_CHANGE 0x3493 // 撤布防事件(对应结构体 ALARM_DEFENSE_CHANGE_INFO) #define DH_ALARM_ABNORMAL_RESTART 0x3494 // 异常重启事件,重启后上报(对应结构体 ALARM_ABNORMAL_RESTART_INFO) #define DH_ALARM_DOUBLEDOOR 0x3495 // 互锁联动AB门双开/双闭报警 (对应结构体 ALARM_DOUBLEDOOR_INFO) #define DH_ALARM_OPENOUT_TIMESECTION 0x3496 // 时间段外开门报警事件 (对应结构体 ALARM_OPENOUT_TIMESECTION_INFO) #define DH_ALARM_SERVICESTART 0x3497 // 营业状态事件 (对应结构体 ALARM_SERVICESTART_INFO) #define DH_ALARM_WIRELESSDEV_POWERLESS 0x3498 // 探测器主电丢失事件 (对应结构体 ALARM_WIRELESSDEV_POWERLESS_INFO) #define DH_ALARM_PUBLISHINFO_CONFIRM 0x3499 // 室内机上报平台通知已经阅读公告事件 (对应结构体 ALARM_PUBLISHINFO_CONFIRM_INFO) #define DH_ALARM_LEFUNCTION_STATUS_SYNC 0x349A // App界面显示设备某些特定的状态变化事件(对应结构体 ALARM_LEFUNCTION_STATUS_SYNC_INFO) #define DH_ALARM_WATER_QUALITY_DETECTION 0x349B // 水质检测上报事件(对应结构体 ALARM_WATER_QUALITY_DETECTION_INFO) #define DH_ALARM_TRAFFIC_FLOW_QUEUE 0x349C // 交通路口排队事件(对应结构体 ALARM_TRAFFIC_FLOW_QUEUE_INFO) #define DH_ALARM_TRAFFIC_FLOW_JUNTION 0x349D // 交通路口过车事件(对应结构体 ALARM_TRAFFIC_FLOW_JUNTION_INFO) #define DH_ALARM_TRAFFIC_FLOW_VEHICLE_STOP 0x349E // 交通路口停车事件(对应结构体 ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO) #define DH_ALARM_TRAFFIC_FLOW_STAT 0x349F // 交通路口车道统计事件(对应结构体 ALARM_TRAFFIC_FLOW_STAT_INFO) #define DH_ALARM_TRAFFIC_FLOW_STAT_EX 0x34A0 // 交通路口车道统计拓展事件(对应结构体 ALARM_TRAFFIC_FLOW_STAT_EX_INFO) #define DH_ALARM_SCREEN_DISPLAY_ALARM 0x34A1 // 设备接入的显示连接状态改变(对应结构体 ALARM_SCREEN_DISPLAY_ALARM_INFO) #define DH_ALARM_YE_BAO_ALARM 0x34A2 // 野保相机报警上报事件(对应结构体ALARM_YE_BAO_ALARM_INFO) #define DH_ALARM_AI_PICKUP_WORK_STATE 0x34A3 // 拾音器工作状态报警事件(对应结构体 ALARM_AI_PICKUP_WORK_STATE_INFO) #define DH_ALARM_INTELLI_TYPE_CHANGE 0x34A4 // 智能方案大类变更报警事件(对应结构体 ALARM_INTELLI_TYPE_CHANGE_INFO) #define DH_ALARM_TRAFFIC_CAR_PASSING 0x34A5 // 车辆进出虚拟线圈状态事件(对应结构体 ALARM_TRAFFIC_CAR_PASSING_INFO) #define DH_ALARM_HUMAN_ANIMAL_COEXISTENCE 0x34A6 // 人和动物检测事件(对应结构体 ALARM_HUMAN_ANIMAL_COEXISTENCE_INFO) #define DH_ALARM_MINIINDOOR_RADAR_ALARM 0x34A7 // Mini雷达报警事件(对应结构体 NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO) #define DH_ALARM_MEMORY_OVER_LOAD 0x34A8 // 内存使用率过高事件(对应结构体 NET_ALARM_MEMORY_OVER_LOAD_INFO) #define DH_ALARM_CPU_OVER_LOAD 0x34A9 // CPU占用率过高事件(对应结构体 NET_ALARM_CPU_OVER_LOAD_INFO) #define DH_ALARM_EAS_ANTITHEFT 0x34AA // EAS防盗报警事件(对应结构体 NET_ALARM_EAS_ANTITHEFT ) #define DH_ALARM_EAS_TRANSMIT_COIL 0x34AB // EAS发射线圈故障事件(对应结构体 NET_ALARM_EAS_TRANSMIT_COIL) #define DH_ALARM_EAS_RECEIVE_COIL 0x34AC // EAS接收线圈故障(对应结构体 NET_ALARM_EAS_RECEIVE_COIL) #define DH_ALARM_EAS_TAG_RESIDENT 0x34AD // EAS标签驻留报警(对应结构体 NET_ALARM_EAS_TAG_RESIDENT) #define DH_ALARM_EAS_ANTENNA_POWER_FAULT 0x34AE // EAS天线电源故障报警事件(对应结构体 NET_ALARM_EAS_ANTENNA_POWER_FAULT) #define DH_ALARM_SAFETY_ABNORMAL 0x34AF // 安全报警事件(对应结构体 NET_ALARM_SAFETY_ABNORMAL_INFO) #define DH_ALARM_PARKING_SPACE_DETECTOR_STATE 0x34B0 // 车位状态变化报警(对应结构体 NET_ALARM_PARKING_SPACE_DETECTOR_STATE_INFO) #define DH_ALARM_REQUEST_IDLE_MODE 0x34B1 // 请求进入休眠模式事件(对应结构体 NET_ALARM_REQUEST_IDLE_MODE) #define DH_ALARM_FORCE_INTO_IDLE_MODE 0x34B2 // 强制进入休眠模式通知(对应结构体 NET_ALARM_FORCE_INTO_IDLE_MODE) #define DH_ALARM_REMOTE_APPROVAL 0x34B3 // 金融远程审批事件(对应结构体 NET_ALARM_REMOTE_APPROVAL_INFO) #define DH_ALARM_DYNAMIC_PWDLOCK_FOR_INIT 0x34B4 // 动态密码锁发起初始化通知事件(对应结构体 NET_ALARM_DYNAMIC_PWDLOCK_FOR_INIT_INFO) #define DH_ALARM_DYNAMIC_PWDLOCK_UPLOAD_RANDOMCODE 0x34B5 // 密码锁上报随机码事件(对应结构体 NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO) #define DH_ALARM_DYNAMIC_PWDLOCK_FOR_OPEN 0x34B6 // 密码锁发起开锁流程通知事件(对应结构体 NET_ALARM_DYNAMIC_PWDLOCK_FOR_OPEN_INFO) #define DH_ALARM_DYNAMIC_PWDLOCK_CLOSE 0x34B7 // 密码锁闭锁事件(对应结构体 NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO) #define DH_ALARM_SYNCUSER_INFO 0x34B8 // 主备机之间用户信息改变通知事件(对应 NET_ALARM_SYNCUSER_INFO) #define DH_ALARM_GAS_TANK_DETECTION 0x34B9 // 煤气罐检测事件(对应结构体 NET_ALARM_GAS_TANK_DETECTION_INFO) #define DH_ALARM_LOSS_FRAME_ALARM 0x34BA // 录像丢帧报警事件(对应结构体 NET_ALARM_LOSS_FRAME_ALARM_INFO) #define DH_ALARM_INTELLI_MODULE_HIGH_TEMP 0x34BB // 智能模块温度异常事件(对应结构体 NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO) #define DH_ALARM_INTELLI_MODULE_OFFLINE 0x34BC // 智能模块断线事件(对应结构体 NET_ALARM_INTELLI_MODULE_OFFLINE_INFO) #define DH_ALARM_SSD_HEALTH_FAILURE 0x34BD // SSD健康故障事件(对应结构体 NET_ALARM_SSD_HEALTH_FAILURE_INFO) #define DH_ALARM_ABNORMALLOGIN 0x34BE // 异常登录事件(对应结构体 NET_ALARM_ABNORMALLOGIN_INFO) #define DH_ALARM_INTELLITRACK_EVENT 0x34BF // PTZ信息事件(对应结构体 NET_ALARM_INTELLITRACK_EVENT_INFO) #define DH_ALARM_RF_JAMMING 0x34C0 // RF干扰事件(对应结构体 NET_ALARM_RF_JAMMING_INFO) #define DH_ALARM_ARMING_FAILURE 0x34C1 // 布防失败事件(对应结构体 NET_ALARM_ARMING_FAILURE_INFO) #define DH_ALARM_USER_MODIFIED 0x34C2 // 用户信息被修改(增加、删除、修改)事件(对应结构体 NET_ALARM_USER_MODIFIED_INFO) #define DH_ALARM_MANUAL_TEST 0x34C3 // 手动测试事件(对应结构体 NET_ALARM_MANUAL_TEST_INFO) #define DH_ALARM_DEVICE_MODIFIED 0x34C4 // 设备设息修改(增加、删除、修改)事件(对应结构体 NET_ALARM_DEVICE_MODIFIED_INFO) #define DH_ALARM_ATS_FAULT 0x34C5 // 报警传输系统故障事件(对应结构体 NET_ALARM_ATS_FAULT_INFO) #define DH_ALARM_ARC_OFFLINE 0x34C6 // 报警接收中心离线事件(对应结构体 NET_ALARM_ARC_OFFLINE_INFO) #define DH_ALARM_WIFI_FAILURE 0x34C7 // wifi故障事件(对应结构体 NET_ALARM_WIFI_FAILURE_INFO) #define DH_ALARM_OVER_TEMPERATURE 0x34C8 // 超温报警事件(对应结构体 NET_ALARM_OVER_TEMPERATURE_INFO) #define DH_ALARM_TRAFFIC_ROADALERT 0x34C9 // 道路安全预警事件(对应结构体 NET_ALARM_TRAFFIC_ROADALERT_INFO) #define DH_ALARM_TRAFFIC_CROSSLANE 0x34CA // 违章变道事件(对应结构体 NET_ALARM_TRAFFIC_CROSSLANE_INFO) #define DH_ALARM_TRAFFIC_OVERYELLOWLINE 0x34CB // 压线事件(对应结构体 NET_ALARM_TRAFFIC_OVERYELLOWLINE_INFO) #define DH_ALARM_TRAFFIC_ACCIDENT 0x34CC // 交通事故事件(对应结构体 NET_ALARM_TRAFFIC_ACCIDENT_INFO) #define DH_ALARM_TRAFFIC_ROADBLOCK 0x34CD // 交通路障检测事件(对应结构体 NET_ALARM_TRAFFIC_ROADBLOCK_INFO) #define DH_ALARM_TRAFFIC_ROADCONSTRUCTION 0x34CE // 交通道路施工检测事件(对应结构体 NET_ALARM_TRAFFIC_ROADCONSTRUCTION_INFO) #define DH_ALARM_TRAFFIC_CARDISTANCESHORT 0x34CF // 车间距过小报警事件(对应结构体 NET_ALARM_TRAFFIC_CARDISTANCESHORT_INFO) #define DH_ALARM_TRAFFIC_VEHICLERACING 0x34D0 // 飙车事件(对应结构体 NET_ALARM_TRAFFIC_VEHICLERACING_INFO) #define DH_ALARM_STORAGE_OVERLOAD 0x34D1 // 配额超负荷事件(对应结构体 NET_ALARM_STORAGE_OVERLOAD_INFO) #define DH_ALARM_ZONE_MODE_CHANGE 0x34D2 // 防区状态改变事件(对应结构体 NET_ALARM_ZONE_MODE_CHANGE_INFO) #define DH_ALARM_PSTN_PERIODIC_TEST 0x34D3 // PSTN定期测试事件(对应结构体 NET_ALARM_PSTN_PERIODIC_TEST_INFO) #define DH_ALARM_TALKING_PHONE_CALLING 0x34D4 // 电话呼叫事件(对应结构体NET_ALARM_TALKING_PHONE_CALLING_INFO) #define DH_ALARM_NO_PASSAGE 0x34D5 // 人员超时未通行事件(对应结构体 NET_ALARM_NO_PASSAGE_INFO) #define DH_ALARM_HOSPITAL_TALK_CONTROL 0x34D6 // 设备上报谈话事件(对应结构体 NET_ALARM_HOSPITAL_TALK_CONTROL_INFO) #define DH_ALARM_BLUETOOTH_EVENT 0x34D7 // 蓝牙状态与电量状态上报事件(对应结构体 NET_ALARM_BLUETOOTH_INFO) #define DH_ALARM_SENSITIVE_WORDS 0x34D8 // 敏感词报警事件(对应结构体 NET_ALARM_SENSITIVE_WORDS_INFO) #define DH_ALARM_DISK_NUMBER_CHANGE 0x34D9 // 硬盘数量变化报警事件(对应结构体 NET_ALARM_DISK_NUMBER_CHANGE_INFO) #define DH_ALARM_SMOKING_DETECT 0x34DA // 吸烟行为报警(对应结构体 NET_ALARM_SMOKING_DETECT_INFO) #define DH_ALARM_SITE_OVERTIME_ALARM 0x34DB // 站点超时报警(对应结构体 NET_ALARM_SITE_OVERTIME_ALARM_INFO) #define DH_ALARM_SMART_SOUND_DETECT 0x34DC // 智能声音检测事件(对应 NET_ALARM_SMART_SOUND_DETECT_INFO) #define DH_ALARM_REQ_WORK_TIME_CALC 0x34DD // 查询剩余加班额度事件(对应 NET_ALARM_REQ_WORK_TIME_CALC_INFO) #define DH_ALARM_XRAY_EMERGENCY_ALARM 0x34DE // X光机一键报警事件(对应 NET_ALARM_XRAY_EMERGENCY_ALARM_INFO) // 信号机事件 #define DH_ALARM_RTSC_PHASE_RUNING 0x5001 // RTSC跑动暂停事件(对应ALARM_RTSC_PHASE_RUNNING_INFO) #define DH_ALARM_RTSC_LAMP_RUNING 0x5002 // RTSC灯暂停事件(对应ALARM_RTSC_LAMP_RUNNING_INFO) #define DH_ALARM_RTSC_RUNING 0x5003 // 信号机运行事件(对应ALARM_RTSC_RUNNING_INFO) #define DH_ALARM_RTSC_TRAFFIC 0x5004 // 信号机交通信息事件(对应ALARM_RTSC_TRAFFIC_INFO) // 消防类报警事件 #define DH_ALARM_HY_FIRE_DETECTION 0x6001 // 消防类火焰检测事件(对应ALARM_HY_FIRE_DETECTION_INFO) #define DH_ALARM_HY_SMOG_DETECTION 0x6002 // 消防类烟雾检测事件(对应ALARM_HY_SMOG_DETECTION_INFO) #define DH_ALARM_HY_INFIRE_PASSAGE_DETECTION 0x6003 // 消防类疏散通道阻塞事件(对应ALARM_HY_INFIRE_PASSAGE_DETECTION_INFO) #define DH_ALARM_HY_OUTFIRE_PASSAGE_DETECTION 0x6004 // 消防类消防车通道占用/消防登高面占用事件(对应ALARM_HY_OUTFIRE_PASSAGE_DETECTION_INFO) #define DH_ALARM_HY_MAN_LEAVING_DETECTION 0x6005 // 消防类消控室人员离岗事件(对应ALARM_HY_MAN_LEAVING_DETECTION_INFO) #define DH_ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT 0x6006 // 消防离线故障事件(对应ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO) #define DH_ALARM_HY_FIRE_CONTROL_SENSOR_FAULT 0x6007 // 消防传感器故障事件(对应ALARM_HY_FIRE_CONTROL_SENSOR_FAULT_INFO) #define DH_ALARM_HY_FIRE_CONTROL_DISMANTLE_FAULT 0x6008 // 消防设备拆除事件(对应ALARM_HY_FIRE_CONTROL_DISMANTLE_FAULT_INFO) // 安检类报警事件 #define DH_ALARM_XRAY_PIP_COMMUNICATION_ABNORMITY 0x7001 // X射线画中画通讯异常事件(对应结构体ALARM_XRAY_PIP_COMMUNICATION_ABNORMITY_INFO) #define DH_ALARM_XRAY_ACQUISITION_SYSTEM_ABNORMITY 0x7002 // X光机图像采集系统通信异常事件(对应结构体ALARM_XRAY_ACQUISITION_SYSTEM_ABNORMITY_INFO) #define DH_ALARM_XRAY_EMERGENCY_STOP 0x7003 // X光机紧急停止事件(对应结构体ALARM_XRAY_EMERGENCY_STOP_INFO) #define DH_ALARM_XRAY_DETECTOR_PROTECTION_OPEN 0x7004 // X光机接收器件防护装置打开事件(对应结构体ALARM_XRAY_DETECTOR_PROTECTION_OPEN_INFO) #define DH_ALARM_XRAY_MACHINE_SHELL_OPEN 0x7005 // X光机外罩打开事件(对应结构体ALARM_XRAY_MACHINE_SHELL_OPEN_INFO) #define DH_ALARM_XRAY_KEYBOARD_ABNORMITY 0x7006 // X光机操作键盘通信异常事件(对应结构体ALARM_XRAY_KEYBOARD_ABNORMITY_INFO) #define DH_ALARM_XRAY_TRANSMISSION_BELT_ABNORMITY 0x7007 // X光机图像传送带状态异常事件(对应结构体ALARM_XRAY_TRANSMISSION_BELT_ABNORMITY_INFO) #define DH_ALARM_POWER_GROUND_DETECTION_ABNORMAL 0x7008 // X光机接地异常检测事件(对应结构体ALARM_POWER_GROUND_DETECTION_ABNORMAL_INFO) #define DH_ALARM_XRAY_SOURCE_ABNORMITY 0x7009 // X光机X射线发生器故障事件(对应结构体ALARM_XRAY_SOURCE_ABNORMITY_INFO) // 报警上传功能的报警类型,对应CLIENT_StartService接口、NEW_ALARM_UPLOAD结构体. #define DH_UPLOAD_ALARM 0x4000 // 外部报警 #define DH_UPLOAD_MOTION_ALARM 0x4001 // 动态检测报警 #define DH_UPLOAD_VIDEOLOST_ALARM 0x4002 // 视频丢失报警 #define DH_UPLOAD_SHELTER_ALARM 0x4003 // 视频遮挡报警 #define DH_UPLOAD_SOUND_DETECT_ALARM 0x4004 // 音频检测报警 #define DH_UPLOAD_DISKFULL_ALARM 0x4005 // 硬盘满报警 #define DH_UPLOAD_DISKERROR_ALARM 0x4006 // 坏硬盘报警 #define DH_UPLOAD_ENCODER_ALARM 0x4007 // 编码器报警 #define DH_UPLOAD_DECODER_ALARM 0x400B // 报警解码器报警 #define DH_UPLOAD_EVENT 0x400C // 定时上传的 #define DH_UPLOAD_IVS 0x400D // 智能报警, 对应结构体ALARM_UPLOAD_IVS_INFO #define DH_UPLOAD_SMOKESENSOR_ALARM 0x400E // 烟感报警, 对应结构体ALARM_UPLOAD_SMOKESENSOR_INFO #define DH_UPLOAD_ALARM_EX 0x400F // 外部报警扩展,对应结构体 ALARM_UPLOAD_ALARMEX_INFO #define DH_UPLOAD_REMOTE_LOGIN_FAILD_ALARM 0x4010 // 远程登录失败报警, 对应结构体 ALARM_UPLOAD_LOGIN_FAILED_INFO #define DH_UPLOAD_CUSTOM 0x4011 // 扩展字段由客户自定义,pParam:扩展数据指针,dwParamLen:扩展数据长度 #define DH_UPLOAD_FRONTDISCONNECT_ALARM 0x4012 // 前端断网报警, 对应结构体 NEW_ALARM_UPLOAD #define DH_UPLOAD_ALARM_IPC 0x4013 // IPC外部报警, 对应结构体 NEW_ALARM_UPLOAD #define DH_UPLOAD_NET_ALARM 0x4014 // 网络报警输入(网络触发,而非设备本地输入报警有信号), 对应结构体 NEW_ALARM_UPLOAD #define DH_UPLOAD_ALARM_RAID 0x4015 // Raid异常事件, 对应结构体 NEW_ALARM_UPLOAD #define DH_UPLOAD_SCENE_CHANGE 0x4016 // 场景变更, 对应结构体 NEW_ALARM_UPLOAD #define DH_UPLOAD_PIRDETECTION 0x4017 // pir 设备检测报警, 对应结构体ALARM_UPLOAD_PIRDETECTION_INFO #define DH_UPLOAD_PIRTAMPER 0x4018 // pir 设备防拆报警, 对应结构体ALARM_UPLOAD_PIRTAMPER_INFO #define DH_UPLOAD_PIRCLOAK 0x4019 // pir 设备光线遮挡报警, 对应结构体 ALARM_UPLOAD_PIRCLOAK_INFO #define DH_UPLOAD_PIRSHOCK 0x401A // pir 设备震动报警, 对应结构体ALARM_UPLOAD_PIRSHOCK_INFO #define DH_UPLOAD_PIRFAILURE 0x401B // pir 设备传感器故障报警, 对应结构体ALARM_UPLOAD_PIRFAILURE_INFO #define DH_UPLOAD_PIRBATTERYLOW 0x401C // pir 设备电池电量低报警, 对应结构体ALARM_UPLOAD_PIRBATTERYLOW_INFO #define DH_UPLOAD_PIRMISSINGCALL 0x401D // pir 设备信号丢失报警, 对应结构体ALARM_UPLOAD_PIRMISSINGCALL_INFO #define DH_UPLOAD_VIDEO_UNFOCUS 0x401E // 视频虚焦事件, 对应结构体ALARM_UPLOAD_VIDEO_UNFOCUS_INFO #define DH_UPLOAD_ALARMPIR 0x401F // PIR报警事件, 对应结构体ALARM_UPLOAD_ALARMPIR_INFO #define DH_UPLOAD_ALARM_EX2 0x4020 // 本地报警事件, 对应结构体 ALARM_ALARM_INFO_EX2 #define DH_UPLOAD_BYPASSMODE_CHANGE_EVENT 0x4021 // 旁路状态变化事件, 对应结构体ALARM_BYPASSMODE_CHANGE_INFO #define DH_UPLOAD_CHASSISINTRUDED 0x4022 // 机箱入侵(防拆)报警事件, 对应结构体ALARM_CHASSISINTRUDED_INFO #define DH_UPLOAD_RCEMERGENCY_CALL 0x4023 // 紧急呼叫报警事件, 对应结构体 ALARM_RCEMERGENCY_CALL_INFO #define DH_UPLOAD_ARMMODE_CHANGE_EVENT 0x4024 // 布撤防状态变化事件, 对应结构体ALARM_ARMMODE_CHANGE_INFO #define DH_UPLOAD_SUBSYSTEM_ARMMODE_CHANGE 0x4025 // 子系统布撤防状态改变事件, 对应结构体 ALARM_SUBSYSTEM_ARMMODECHANGE_INFO #define DH_UPLOAD_DEFENCE_ARMMODE_CHANGE 0x4026 // 防区布撤防状态改变事件, 对应结构体 ALARM_DEFENCE_ARMMODECHANGE_INFO #define DH_UPLOAD_POWERFAULT 0x4027 // 电源故障事件, 对应结构体ALARM_POWERFAULT_INFO #define DH_UPLOAD_HEARTBEAT_ALARM 0x4028 // 心跳报警,对应结构体ALARM_UPLOAD_HEARTBEAT_INFO #define DH_UPLOAD_ONLINE_ALARM 0x4029 // 在线报警,对应结构体ALARM_UPLOAD_ONLINE_INFO #define DH_UPLOAD_KEYPAD_TAMPER 0x402A // 键盘防拆事件,对应结构体ALARM_UPLOAD_KEYPAD_TAMPER_INFO #define DH_UPLOAD_PROGRAM_MODE 0x402B // 键盘输入进入/退出编程模式指令,对应结构体ALARM_UPLOAD_PROGRAM_MODE_INFO #define DH_UPLOAD_PSTN_PERIODIC_TEST 0x402C // PSTN定期测试事件,对应结构体ALARM_UPLOAD_PSTN_PERIODIC_TEST_INFO #define DH_UPLOAD_PROFILE_ALARM_TRANSMIT 0x402D // 报警传输事件, 对应结构体 ALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO #define DH_UPLOAD_USER_LOCK 0x402E // 用户登录锁定事件, 对应结构体 ALARM_UPLOAD_USER_LOCK_INFO // 订阅Bus状态对应事件上报(CLIENT_AttachBusState) #define DH_ALARM_BUS_DRIVER_CHECK 0x0001 // 司机签到事件(对应结构体 ALARM_BUS_DRIVER_CHECK_INFO) #define DH_ALARM_BUS_IMPORT_SITE 0x0002 // 进站事件(对应结构体 ALARM_BUS_IMPORT_SITE_INFO) #define DH_ALARM_BUS_EXPORT_SITE 0x0003 // 离站事件(对应结构体 ALARM_BUS_EXPORT_SITE_INFO) #define DH_ALARM_BUS_ABNORMAL 0x0004 // 车辆异常事件(对应结构体 ALARM_BUS_ABNORMAL_INFO) #define DH_ALARM_BUS_DOOR_OPEN 0x0005 // 车门打开事件(对应结构体 ALARM_VEHICLE_DOOR_OPEN_INFO) #define DH_ALARM_BUS_CUR_MILEAGE 0x0006 // 当前里程事件(对应结构体 ALARM_BUS_CUR_MILEAGE_INFO) #define DH_ALARM_BUS_CUR_OIL 0x0007 // 当前油耗情况事件(对应结构体 ALARM_BUS_CUR_OIL_INFO) #define DH_ALARM_BUS_LOW_OIL 0x0008 // 低油量报警事件(对应结构体 ALARM_BUS_LOW_OIL_INFO) #define DH_ALARM_BUS_PASSENGER_CARD_CHECK 0x0009 // 乘客刷卡事件(对应结构体 ALARM_PASSENGER_CARD_CHECK ) #define DH_ALARM_BUS_VEHICLE_STANDING_OVER_TIME 0x000a // 停车超时事件(对应结构体 ALARM_VEHICLE_STANDING_OVER_TIME_INFO ) #define DH_ALARM_BUS_DRIVE_AFTER_WORK 0x000b // 非工作时间事件(对应结构体 ALARM_DVRIVE_AFTER_WORK ) #define DH_ALARM_BUS_PAD_SHUTDOWN 0x000c // PAD关机事件, DVR上报PadShutdown消息, PAD收到后自动延时关机(对应结构体 ALARM_BUS_PAD_SHUTDOWN_INFO) #define DH_ALARM_BUS_TIRED_DRIVE_CHECK 0x000d // 疲劳驾驶事件(对应结构体 ALARM_TIRED_DRIVE_CHECK_INFO ) #define DH_ALARM_BUS_STEAL_OIL 0x000e // 偷油事件(对应结构体 ALARM_BUS_STEAL_OIL_INFO) #define DH_ALARM_BUS_CIRCUIT_SHIFT 0x000f // 线路偏移事件(对应结构体 ALARM_BUS_CIRCUIT_SHIFT_INFO) #define DH_ALARM_BUS_ROUTE_OVERTIME 0x0010 // 线路超时事件(对应结构体 ALARM_BUS_ROUTE_OVERTIME_INFO) #define DH_ALARM_BUS_VEHICLE_CARRY_ALARM 0x0011 // 载重报警事件(对应结构体 ALARM_BUS_VEHICLE_CARRY_ALARM_INFO) #define DH_ALARM_BUS_VEHICLE_PAULIN_ALARM 0x0012 // 篷布报警事件(对应结构体 ALARM_BUS_VEHICLE_PAULIN_ALARM_INFO) #define DH_ALARM_BUS_VEHICLE_LIFT_ALARM 0x0013 // 举升报警事件(对应结构体 ALARM_BUS_VEHICLE_LIFT_ALARM_INFO) #define DH_ALARM_BUS_FIRE_PRESSURE_ALARM 0x0014 // 火灾压力传感器报警事件(对应结构体 ALARM_BUS_FIRE_PRESSURE_ALARM_INFO) #define DH_ALARM_BUS_ADD_OIL 0x0015 // 油量增加检测事件(对应 NET_ALARM_BUS_ADD_OIL_INFO) // 异步接口回调类型 #define RESPONSE_DECODER_CTRL_TV 0x00000001 // 对应CLIENT_CtrlDecTVScreen接口 #define RESPONSE_DECODER_SWITCH_TV 0x00000002 // 对应CLIENT_SwitchDecTVEncoder接口 #define RESPONSE_DECODER_PLAYBACK 0x00000003 // 对应CLIENT_DecTVPlayback接口 #define RESPONSE_EXCHANGE_DATA 0x00000004 // 对应CLIENT_ExchangeData接口 #define RESPONSE_ASYN_QUERY_RECORDFILE 0x00000005 // 对应CLIENT_StartQueryRecordFile接口 // CLIENT_FileTransmit接口传输文件类型 #define DH_DEV_UPGRADEFILETRANS_START 0x0000 // 开始升级文件上传(对应结构体 DHDEV_UPGRADE_FILE_INFO) #define DH_DEV_UPGRADEFILETRANS_SEND 0x0001 // 发送升级文件 #define DH_DEV_UPGRADEFILETRANS_STOP 0x0002 // 停止发送升级文件 #define DH_DEV_BLACKWHITETRANS_START 0x0003 // 开始发送禁止/允许名单(对应结构体 DHDEV_BLACKWHITE_LIST_INFO) #define DH_DEV_BLACKWHITETRANS_SEND 0x0004 // 发送禁止/允许名单 #define DH_DEV_BLACKWHITETRANS_STOP 0x0005 // 停止发送禁止/允许名单 #define DH_DEV_BLACKWHITE_LOAD 0x0006 // 下载禁止/允许名单(对应结构体DHDEV_LOAD_BLACKWHITE_LIST_INFO) #define DH_DEV_BLACKWHITE_LOAD_STOP 0x0007 // 停止下载禁止/允许名单 #define DH_DEV_FILETRANS_STOP 0x002B // 停止文件上传 #define DH_DEV_FILETRANS_BURN 0x002C // 刻录文件上传 // 分辨率列表,用于与分辨率掩码进行与、或操作 #define DH_CAPTURE_SIZE_D1 0x00000001 #define DH_CAPTURE_SIZE_HD1 0x00000002 #define DH_CAPTURE_SIZE_BCIF 0x00000004 #define DH_CAPTURE_SIZE_CIF 0x00000008 #define DH_CAPTURE_SIZE_QCIF 0x00000010 #define DH_CAPTURE_SIZE_VGA 0x00000020 #define DH_CAPTURE_SIZE_QVGA 0x00000040 #define DH_CAPTURE_SIZE_SVCD 0x00000080 #define DH_CAPTURE_SIZE_QQVGA 0x00000100 #define DH_CAPTURE_SIZE_SVGA 0x00000200 #define DH_CAPTURE_SIZE_XVGA 0x00000400 #define DH_CAPTURE_SIZE_WXGA 0x00000800 #define DH_CAPTURE_SIZE_SXGA 0x00001000 #define DH_CAPTURE_SIZE_WSXGA 0x00002000 #define DH_CAPTURE_SIZE_UXGA 0x00004000 #define DH_CAPTURE_SIZE_WUXGA 0x00008000 #define DH_CAPTURE_SIZE_LFT 0x00010000 #define DH_CAPTURE_SIZE_720 0x00020000 #define DH_CAPTURE_SIZE_1080 0x00040000 #define DH_CAPTURE_SIZE_1_3M 0x00080000 #define DH_CAPTURE_SIZE_2M 0x00100000 #define DH_CAPTURE_SIZE_5M 0x00200000 #define DH_CAPTURE_SIZE_3M 0x00400000 #define DH_CAPTURE_SIZE_5_0M 0x00800000 #define DH_CPTRUTE_SIZE_1_2M 0x01000000 #define DH_CPTRUTE_SIZE_1408_1024 0x02000000 #define DH_CPTRUTE_SIZE_8M 0x04000000 #define DH_CPTRUTE_SIZE_2560_1920 0x08000000 #define DH_CAPTURE_SIZE_960H 0x10000000 #define DH_CAPTURE_SIZE_960_720 0x20000000 // 编码模式列表,用于与编码模式掩码进行与、或操作 #define DH_CAPTURE_COMP_DIVX_MPEG4 0x00000001 #define DH_CAPTURE_COMP_MS_MPEG4 0x00000002 #define DH_CAPTURE_COMP_MPEG2 0x00000004 #define DH_CAPTURE_COMP_MPEG1 0x00000008 #define DH_CAPTURE_COMP_H263 0x00000010 #define DH_CAPTURE_COMP_MJPG 0x00000020 #define DH_CAPTURE_COMP_FCC_MPEG4 0x00000040 #define DH_CAPTURE_COMP_H264 0x00000080 #define DH_CAPTURE_COMP_H265 0x00000100 #define DH_CAPTURE_COMP_SVAC 0x00000200 // 报警联动动作,用于与报警联动动作掩码进行与、或操作 #define DH_ALARM_UPLOAD 0x00000001 #define DH_ALARM_RECORD 0x00000002 #define DH_ALARM_PTZ 0x00000004 #define DH_ALARM_MAIL 0x00000008 #define DH_ALARM_TOUR 0x00000010 #define DH_ALARM_TIP 0x00000020 #define DH_ALARM_OUT 0x00000040 #define DH_ALARM_FTP_UL 0x00000080 #define DH_ALARM_BEEP 0x00000100 #define DH_ALARM_VOICE 0x00000200 #define DH_ALARM_SNAP 0x00000400 // "恢复默认配置"掩码,可进行与、或操作, 接口CLIENT_ControlDevice类型DH_CTRL_RESTOREDEFAULT #define DH_RESTORE_COMMON 0x00000001 // 普通设置 #define DH_RESTORE_CODING 0x00000002 // 编码设置 #define DH_RESTORE_VIDEO 0x00000004 // 录像设置 #define DH_RESTORE_COMM 0x00000008 // 串口设置 #define DH_RESTORE_NETWORK 0x00000010 // 网络设置 #define DH_RESTORE_ALARM 0x00000020 // 报警设置 #define DH_RESTORE_VIDEODETECT 0x00000040 // 视频检测 #define DH_RESTORE_PTZ 0x00000080 // 云台控制 #define DH_RESTORE_OUTPUTMODE 0x00000100 // 输出模式 #define DH_RESTORE_CHANNELNAME 0x00000200 // 通道名称 #define DH_RESTORE_VIDEOINOPTIONS 0x00000400 // 摄像头属性 #define DH_RESTORE_CPS 0x00000800 // 智能交通 #define DH_RESTORE_INTELLIGENT 0x00001000 // 视频分析 #define DH_RESTORE_REMOTEDEVICE 0x00002000 // 远程设备配置 #define DH_RESTORE_DECODERVIDEOOUT 0x00004000 // 解码轮巡 #define DH_RESTORE_LINKMODE 0x00008000 // 连接模式 #define DH_RESTORE_COMPOSITE 0x00010000 // 融合屏 #define DH_RESTORE_ALL 0x80000000 // 全部重置 // 云台属性列表--低四个字节掩码 #define PTZ_DIRECTION 0x00000001 // 方向 #define PTZ_ZOOM 0x00000002 // 变倍 #define PTZ_FOCUS 0x00000004 // 聚焦 #define PTZ_IRIS 0x00000008 // 光圈 #define PTZ_ALARM 0x00000010 // 报警功能 #define PTZ_LIGHT 0x00000020 // 灯光 #define PTZ_SETPRESET 0x00000040 // 设置预置点 #define PTZ_CLEARPRESET 0x00000080 // 清除预置点 #define PTZ_GOTOPRESET 0x00000100 // 转至预置点 #define PTZ_AUTOPANON 0x00000200 // 水平开始 #define PTZ_AUTOPANOFF 0x00000400 // 水平结束 #define PTZ_SETLIMIT 0x00000800 // 设置边界 #define PTZ_AUTOSCANON 0x00001000 // 自动扫描开始 #define PTZ_AUTOSCANOFF 0x00002000 // 自动扫描开停止 #define PTZ_ADDTOUR 0x00004000 // 增加巡航点 #define PTZ_DELETETOUR 0x00008000 // 删除巡航点 #define PTZ_STARTTOUR 0x00010000 // 开始巡航 #define PTZ_STOPTOUR 0x00020000 // 结束巡航 #define PTZ_CLEARTOUR 0x00040000 // 删除巡航 #define PTZ_SETPATTERN 0x00080000 // 设置模式 #define PTZ_STARTPATTERN 0x00100000 // 开始模式 #define PTZ_STOPPATTERN 0x00200000 // 停止模式 #define PTZ_CLEARPATTERN 0x00400000 // 清除模式 #define PTZ_POSITION 0x00800000 // 快速定位 #define PTZ_AUX 0x01000000 // 辅助开关 #define PTZ_MENU 0x02000000 // 球机菜单 #define PTZ_EXIT 0x04000000 // 退出球机菜单 #define PTZ_ENTER 0x08000000 // 确认 #define PTZ_ESC 0x10000000 // 取消 #define PTZ_MENUUPDOWN 0x20000000 // 菜单上下操作 #define PTZ_MENULEFTRIGHT 0x40000000 // 菜单左右操作 #define PTZ_OPT_NUM 0x80000000 // 操作的个数 // 高四个字节掩码 #define PTZ_DEV 0x00000001 // 云台控制 #define PTZ_MATRIX 0x00000002 // 矩阵控制 // 抓图视频编码类型 #define CODETYPE_MPEG4 0 #define CODETYPE_H264 1 #define CODETYPE_JPG 2 // 码流控制列表 #define DH_CAPTURE_BRC_CBR 0 #define DH_CAPTURE_BRC_VBR 1 // 帧类型掩码定义 #define FRAME_TYPE_MOTION 0x00000001 // 动检帧 #define FRAME_TYPE_HUMAN 0x00000002 // 动检帧(人) #define FRAME_TYPE_VEHICLE 0x00000004 // 动检帧(车) // 智能分析事件类型 #define EVENT_IVS_ALL 0x00000001 // 订阅所有事件 #define EVENT_IVS_CROSSLINEDETECTION 0x00000002 // 警戒线事件(对应 DEV_EVENT_CROSSLINE_INFO) #define EVENT_IVS_CROSSREGIONDETECTION 0x00000003 // 警戒区事件(对应 DEV_EVENT_CROSSREGION_INFO) #define EVENT_IVS_PASTEDETECTION 0x00000004 // 贴条事件(对应 DEV_EVENT_PASTE_INFO) #define EVENT_IVS_LEFTDETECTION 0x00000005 // 物品遗留事件(对应 DEV_EVENT_LEFT_INFO) #define EVENT_IVS_STAYDETECTION 0x00000006 // 停留事件(对应 DEV_EVENT_STAY_INFO) #define EVENT_IVS_WANDERDETECTION 0x00000007 // 徘徊事件(对应 DEV_EVENT_WANDER_INFO) #define EVENT_IVS_PRESERVATION 0x00000008 // 物品保全事件(对应 DEV_EVENT_PRESERVATION_INFO) #define EVENT_IVS_MOVEDETECTION 0x00000009 // 移动事件(对应 DEV_EVENT_MOVE_INFO) #define EVENT_IVS_TAILDETECTION 0x0000000A // 尾随事件(对应 DEV_EVENT_TAIL_INFO) #define EVENT_IVS_RIOTERDETECTION 0x0000000B // 聚众事件(对应 DEV_EVENT_RIOTERL_INFO) #define EVENT_IVS_FIREDETECTION 0x0000000C // 火警事件(对应 DEV_EVENT_FIRE_INFO) #define EVENT_IVS_SMOKEDETECTION 0x0000000D // 烟雾报警事件(对应 DEV_EVENT_SMOKE_INFO) #define EVENT_IVS_FIGHTDETECTION 0x0000000E // 斗殴事件(对应 DEV_EVENT_FIGHT_INFO) #define EVENT_IVS_FLOWSTAT 0x0000000F // 流量统计事件(对应 DEV_EVENT_FLOWSTAT_INFO) #define EVENT_IVS_NUMBERSTAT 0x00000010 // 数量统计事件(对应 DEV_EVENT_NUMBERSTAT_INFO) #define EVENT_IVS_CAMERACOVERDDETECTION 0x00000011 // 摄像头覆盖事件(保留) #define EVENT_IVS_CAMERAMOVEDDETECTION 0x00000012 // 摄像头移动事件(保留) #define EVENT_IVS_VIDEOABNORMALDETECTION 0x00000013 // 视频异常事件(对应 DEV_EVENT_VIDEOABNORMALDETECTION_INFO) #define EVENT_IVS_VIDEOBADDETECTION 0x00000014 // 视频损坏事件(保留) #define EVENT_IVS_TRAFFICCONTROL 0x00000015 // 交通管理事件(对应 DEV_EVENT_TRAFFICCONTROL_INFO) #define EVENT_IVS_TRAFFICACCIDENT 0x00000016 // 交通事故事件(对应 DEV_EVENT_TRAFFICACCIDENT_INFO) #define EVENT_IVS_TRAFFICJUNCTION 0x00000017 // 交通路口事件----老规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO) #define EVENT_IVS_TRAFFICGATE 0x00000018 // 交通卡口事件----老规则(对应 DEV_EVENT_TRAFFICGATE_INFO) #define EVENT_TRAFFICSNAPSHOT 0x00000019 // 交通抓拍事件(对应 DEV_EVENT_TRAFFICSNAPSHOT_INFO) #define EVENT_IVS_FACEDETECT 0x0000001A // 目标检测事件 (对应 DEV_EVENT_FACEDETECT_INFO) #define EVENT_IVS_TRAFFICJAM 0x0000001B // 交通拥堵事件(对应 DEV_EVENT_TRAFFICJAM_INFO) #define EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE 0x0000001C // 非机动车占机动车车道事件(对应 DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO) #define EVENT_IVS_TRAFFIC_RUNREDLIGHT 0x00000100 // 交通违章-闯红灯事件(对应 DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO) #define EVENT_IVS_TRAFFIC_OVERLINE 0x00000101 // 交通违章-压车道线事件(对应 DEV_EVENT_TRAFFIC_OVERLINE_INFO) #define EVENT_IVS_TRAFFIC_RETROGRADE 0x00000102 // 交通违章-逆行事件(对应 DEV_EVENT_TRAFFIC_RETROGRADE_INFO) #define EVENT_IVS_TRAFFIC_TURNLEFT 0x00000103 // 交通违章-违章左转(对应 DEV_EVENT_TRAFFIC_TURNLEFT_INFO) #define EVENT_IVS_TRAFFIC_TURNRIGHT 0x00000104 // 交通违章-违章右转(对应 DEV_EVENT_TRAFFIC_TURNRIGHT_INFO) #define EVENT_IVS_TRAFFIC_UTURN 0x00000105 // 交通违章-违章掉头(对应 DEV_EVENT_TRAFFIC_UTURN_INFO) #define EVENT_IVS_TRAFFIC_OVERSPEED 0x00000106 // 交通违章-超速(对应 DEV_EVENT_TRAFFIC_OVERSPEED_INFO) #define EVENT_IVS_TRAFFIC_UNDERSPEED 0x00000107 // 交通违章-低速(对应 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO) #define EVENT_IVS_TRAFFIC_PARKING 0x00000108 // 交通违章-违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_INFO) #define EVENT_IVS_TRAFFIC_WRONGROUTE 0x00000109 // 交通违章-不按车道行驶(对应 DEV_EVENT_TRAFFIC_WRONGROUTE_INFO) #define EVENT_IVS_TRAFFIC_CROSSLANE 0x0000010A // 交通违章-违章变道(对应 DEV_EVENT_TRAFFIC_CROSSLANE_INFO) #define EVENT_IVS_TRAFFIC_OVERYELLOWLINE 0x0000010B // 交通违章-压黄线 (对应 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO) #define EVENT_IVS_TRAFFIC_DRIVINGONSHOULDER 0x0000010C // 交通违章-路肩行驶事件(对应 DEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO) #define EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE 0x0000010E // 交通违章-黄牌车占道事件(对应 DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO) #define EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY 0x0000010F // 交通违章-礼让行人/斑马线行人优先事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO) #define EVENT_IVS_ELECTROSPARKDETECTION 0x00000110 // 电火花事件(对应 DEV_EVENT_ELECTROSPARK_INFO) #define EVENT_IVS_TRAFFIC_NOPASSING 0x00000111 // 交通违章-禁止通行事件(对应 DEV_EVENT_TRAFFIC_NOPASSING_INFO) #define EVENT_IVS_ABNORMALRUNDETECTION 0x00000112 // 异常奔跑事件(对应 DEV_EVENT_ABNORMALRUNDETECTION_INFO) #define EVENT_IVS_RETROGRADEDETECTION 0x00000113 // 人员逆行事件(对应 DEV_EVENT_RETROGRADEDETECTION_INFO) #define EVENT_IVS_INREGIONDETECTION 0x00000114 // 区域内检测事件(对应 DEV_EVENT_INREGIONDETECTION_INFO) #define EVENT_IVS_TAKENAWAYDETECTION 0x00000115 // 物品搬移事件(对应 DEV_EVENT_TAKENAWAYDETECTION_INFO) #define EVENT_IVS_PARKINGDETECTION 0x00000116 // 非法停车事件(对应 DEV_EVENT_PARKINGDETECTION_INFO) #define EVENT_IVS_FACERECOGNITION 0x00000117 // 目标识别事件(对应 DEV_EVENT_FACERECOGNITION_INFO) #define EVENT_IVS_TRAFFIC_MANUALSNAP 0x00000118 // 交通手动抓拍事件(对应 DEV_EVENT_TRAFFIC_MANUALSNAP_INFO) #define EVENT_IVS_TRAFFIC_FLOWSTATE 0x00000119 // 交通流量统计事件(对应 DEV_EVENT_TRAFFIC_FLOW_STATE) #define EVENT_IVS_TRAFFIC_STAY 0x0000011A // 交通滞留事件(对应 DEV_EVENT_TRAFFIC_STAY_INFO) #define EVENT_IVS_TRAFFIC_VEHICLEINROUTE 0x0000011B // 有车占道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO) #define EVENT_ALARM_MOTIONDETECT 0x0000011C // 视频移动侦测事件(对应 DEV_EVENT_ALARM_INFO) #define EVENT_ALARM_LOCALALARM 0x0000011D // 外部报警事件(对应 DEV_EVENT_ALARM_INFO) #define EVENT_IVS_PSRISEDETECTION 0x0000011E // 囚犯起身事件(对应 DEV_EVENT_PSRISEDETECTION_INFO) #define EVENT_IVS_CROSSFENCEDETECTION 0x0000011F // 翻越围栏事件(对应 DEV_EVENT_CROSSFENCEDETECTION_INFO) #define EVENT_IVS_TRAFFIC_TOLLGATE 0x00000120 // 交通违章-卡口事件----新规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO) #define EVENT_IVS_DENSITYDETECTION 0x00000121 // 人员密集度检测(对应 DEV_EVENT_DENSITYDETECTION_INFO) #define EVENT_IVS_VIDEODIAGNOSIS 0x00000122 // 视频诊断结果事件(对应 NET_VIDEODIAGNOSIS_COMMON_INFO 和 NET_REAL_DIAGNOSIS_RESULT) #define EVENT_IVS_QUEUEDETECTION 0x00000123 // 排队检测报警事件(对应 DEV_EVENT_QUEUEDETECTION_INFO) #define EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE 0x00000124 // 占用公交车道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO) #define EVENT_IVS_TRAFFIC_BACKING 0x00000125 // 违章倒车事件(对应 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO) #define EVENT_IVS_AUDIO_ABNORMALDETECTION 0x00000126 // 声音异常检测(对应 DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO) #define EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT 0x00000127 // 交通违章-闯黄灯事件(对应 DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO) #define EVENT_IVS_CLIMBDETECTION 0x00000128 // 攀高检测事件(对应 DEV_EVENT_IVS_CLIMB_INFO) #define EVENT_IVS_LEAVEDETECTION 0x00000129 // 离岗检测事件(对应 DEV_EVENT_IVS_LEAVE_INFO) #define EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX 0x0000012A // 黄网格线抓拍事件(对应 DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO) #define EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING 0x0000012B // 车位有车事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO) #define EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING 0x0000012C // 车位无车事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO) #define EVENT_IVS_TRAFFIC_PEDESTRAIN 0x0000012D // 交通行人事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO) #define EVENT_IVS_TRAFFIC_THROW 0x0000012E // 交通抛洒物品事件(对应 DEV_EVENT_TRAFFIC_THROW_INFO) #define EVENT_IVS_TRAFFIC_IDLE 0x0000012F // 交通空闲事件(对应 DEV_EVENT_TRAFFIC_IDLE_INFO) #define EVENT_ALARM_VEHICLEACC 0x00000130 // 车载ACC断电报警事件(对应 DEV_EVENT_ALARM_VEHICLEACC_INFO) #define EVENT_ALARM_VEHICLE_TURNOVER 0x00000131 // 车辆侧翻报警事件(对应 DEV_EVENT_VEHICEL_ALARM_INFO) #define EVENT_ALARM_VEHICLE_COLLISION 0x00000132 // 车辆撞车报警事件(对应 DEV_EVENT_VEHICEL_ALARM_INFO) #define EVENT_ALARM_VEHICLE_LARGE_ANGLE 0x00000133 // 车载摄像头大角度扭转事件 #define EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE 0x00000134 // 车位压线事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO) #define EVENT_IVS_MULTISCENESWITCH 0x00000135 // 多场景切换事件(对应 DEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO) #define EVENT_IVS_TRAFFIC_RESTRICTED_PLATE 0x00000136 // 受限车牌事件(对应 DEV_EVENT_TRAFFIC_RESTRICTED_PLATE) #define EVENT_IVS_TRAFFIC_OVERSTOPLINE 0x00000137 // 压停止线事件(对应 DEV_EVENT_TRAFFIC_OVERSTOPLINE) #define EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT 0x00000138 // 交通未系安全带事件(对应 DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT) #define EVENT_IVS_TRAFFIC_DRIVER_SMOKING 0x00000139 // 驾驶员抽烟事件(对应 DEV_EVENT_TRAFFIC_DRIVER_SMOKING) #define EVENT_IVS_TRAFFIC_DRIVER_CALLING 0x0000013A // 驾驶员打电话事件(对应 DEV_EVENT_TRAFFIC_DRIVER_CALLING) #define EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT 0x0000013B // 行人闯红灯事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO) #define EVENT_IVS_TRAFFIC_PASSNOTINORDER 0x0000013C // 未按规定依次通行(对应 DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO) #define EVENT_IVS_OBJECT_DETECTION 0x00000141 // 物体特征检测事件 #define EVENT_ALARM_ANALOGALARM 0x00000150 // 模拟量报警通道的报警事件(对应DEV_EVENT_ALARM_ANALOGALRM_INFO) #define EVENT_IVS_CROSSLINEDETECTION_EX 0x00000151 // 警戒线扩展事件 #define EVENT_ALARM_COMMON 0x00000152 // 普通录像 #define EVENT_ALARM_VIDEOBLIND 0x00000153 // 视频遮挡事件(对应 DEV_EVENT_ALARM_VIDEOBLIND) #define EVENT_ALARM_VIDEOLOSS 0x00000154 // 视频丢失事件 #define EVENT_IVS_GETOUTBEDDETECTION 0x00000155 // 下床事件(对应 DEV_EVENT_GETOUTBED_INFO) #define EVENT_IVS_PATROLDETECTION 0x00000156 // 巡逻检测事件(对应 DEV_EVENT_PATROL_INFO) #define EVENT_IVS_ONDUTYDETECTION 0x00000157 // 站岗检测事件(对应 DEV_EVENT_ONDUTY_INFO) #define EVENT_IVS_NOANSWERCALL 0x00000158 // 门口机呼叫未响应事件 #define EVENT_IVS_STORAGENOTEXIST 0x00000159 // 存储组不存在事件 #define EVENT_IVS_STORAGELOWSPACE 0x0000015A // 硬盘空间低报警事件 #define EVENT_IVS_STORAGEFAILURE 0x0000015B // 存储错误事件 #define EVENT_IVS_PROFILEALARMTRANSMIT 0x0000015C // 报警传输事件(对应 DEV_EVENT_PROFILE_ALARM_TRANSMIT_INFO) #define EVENT_IVS_VIDEOSTATIC 0x0000015D // 视频静态检测事件(对应 DEV_EVENT_ALARM_VIDEOSTATIC_INFO) #define EVENT_IVS_VIDEOTIMING 0x0000015E // 视频定时检测事件(对应 DEV_EVENT_ALARM_VIDEOTIMING_INFO) #define EVENT_IVS_HEATMAP 0x0000015F // 热度图(对应 CFG_IVS_HEATMAP_INFO) #define EVENT_IVS_CITIZENIDCARD 0x00000160 // 证件信息读取事件(对应 DEV_EVENT_ALARM_CITIZENIDCARD_INFO) #define EVENT_IVS_PICINFO 0x00000161 // 图片信息事件(对应 DEV_EVENT_ALARM_PIC_INFO) #define EVENT_IVS_NETPLAYCHECK 0x00000162 // 上网登记事件(对应 DEV_EVENT_ALARM_NETPLAYCHECK_INFO) #define EVENT_IVS_TRAFFIC_JAM_FORBID_INTO 0x00000163 // 车辆拥堵禁入事件(对应 DEV_EVENT_ALARM_JAMFORBIDINTO_INFO) #define EVENT_IVS_SNAPBYTIME 0x00000164 // 定时抓图事件(对应DEV_EVENT_SNAPBYTIME) #define EVENT_IVS_PTZ_PRESET 0x00000165 // 云台转动到预置点事件(对应 DEV_EVENT_ALARM_PTZ_PRESET_INFO) #define EVENT_IVS_RFID_INFO 0x00000166 // 红外线检测信息事件(对应 DEV_EVENT_ALARM_RFID_INFO) #define EVENT_IVS_STANDUPDETECTION 0x00000167 // 人起立检测事件 #define EVENT_IVS_QSYTRAFFICCARWEIGHT 0x00000168 // 交通卡口称重事件(对应 DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO) #define EVENT_IVS_TRAFFIC_COMPAREPLATE 0x00000169 // 卡口前后车牌合成事件(对应DEV_EVENT_TRAFFIC_COMPAREPLATE_INFO) #define EVENT_IVS_SHOOTINGSCORERECOGNITION 0x0000016A // 打靶像机事件(对应 DEV_EVENT_SHOOTING_SCORE_RECOGNITION_INFO,CFG_IVS_SHOOTINGSCORERECOGNITION_INFO) #define EVENT_IVS_TRAFFIC_FCC 0x0000016B // 加油站提枪、挂枪事件(对应 DEV_EVENT_TRAFFIC_FCC_INFO) #define EVENT_IVS_TRAFFIC_TRANSFINITE 0x0000016C // 违章超限抓图上报事件(对应 DEV_EVENT_TRAFFIC_TRANSFINITE_INFO) #define EVENT_IVS_SCENE_CHANGE 0x0000016D // 场景变更事件(对应 DEV_ALRAM_SCENECHANGE_INFO,CFG_VIDEOABNORMALDETECTION_INFO) #define EVENT_IVS_LETRACK 0x0000016E // 简单跟踪事件(暂未有具体事件) #define EVENT_IVS_OBJECT_ACTION 0x0000016F // 物体检测事件(暂未有具体事件) #define EVENT_IVS_TRAFFIC_ANALYSE_PRESNAP 0x00000170 // 预分析抓拍图片事件(对应 DEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO) #define EVENT_ALARM_EQSTATE 0x00000171 // 智能插座电量状态上报(暂未有具体事件) #define EVENT_IVS_ALARM_IPC 0x00000172 // DVR/NVR设备上的IPC报警(对应 DEV_EVENT_ALARM_IPC_INFO) #define EVENT_IVS_POS_RECORD 0x00000173 // POS录像查询事件(暂未有具体事件) #define EVENT_IVS_NEAR_DISTANCE_DETECTION 0x00000174 // 近距离接触事件(对应 DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO) #define EVENT_IVS_OBJECTSTRUCTLIZE_PERSON 0x00000175 // 行人特征检测事件(对应 DEV_EVENT_OBJECTSTRUCTLIZE_PERSON_INFO) #define EVENT_IVS_OBJECTSTRUCTLIZE_NONMOTOR 0x00000176 // 非机动车特征检测事件(对应 DEV_EVENT_OBJECTSTRUCTLIZE_NONMOTOR_INFO) #define EVENT_IVS_TUMBLE_DETECTION 0x00000177 // 倒地报警事件(对应 DEV_EVENT_TUMBLE_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_ALL 0x000001FF // 所有以traffic开头的事件,目前指的是 // EVENT_IVS_TRAFFICCONTROL -> EVENT_TRAFFICSNAPSHOT // EVENT_IVS_TRAFFIC_RUNREDLIGHT -> EVENT_IVS_TRAFFIC_UNDERSPEED #define EVENT_IVS_VIDEOANALYSE 0x00000200 // 所有智能分析事件 #define EVENT_IVS_LINKSD 0x00000201 // LinkSD事件(对应 DEV_EVENT_LINK_SD) #define EVENT_IVS_VEHICLEANALYSE 0x00000202 // 车辆特征检测分析(对应DEV_EVENT_VEHICLEANALYSE) #define EVENT_IVS_FLOWRATE 0x00000203 // 流量使用情况事件(对应 DEV_EVENT_FLOWRATE_INFO) #define EVENT_IVS_ACCESS_CTL 0x00000204 // 门禁事件 (对应 DEV_EVENT_ACCESS_CTL_INFO) #define EVENT_IVS_SNAPMANUAL 0x00000205 // SnapManual事件(对应 DEV_EVENT_SNAPMANUAL) #define EVENT_IVS_TRAFFIC_ELETAGINFO 0x00000206 // RFID电子车牌标签事件(对应 DEV_EVENT_TRAFFIC_ELETAGINFO_INFO) #define EVENT_IVS_TRAFFIC_TIREDPHYSIOLOGICAL 0x00000207 // 生理疲劳驾驶事件(对应 DEV_EVENT_TIREDPHYSIOLOGICAL_INFO) #define EVENT_IVS_TRAFFIC_BUSSHARPTURN 0x00000208 // 车辆急转报警事件(对应DEV_EVENT_BUSSHARPTURN_INFO) #define EVENT_IVS_CITIZEN_PICTURE_COMPARE 0x00000209 // 人证比对事件(对应 DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO) #define EVENT_IVS_TRAFFIC_TIREDLOWERHEAD 0x0000020A // 开车低头报警事件(对应DEV_EVENT_TIREDLOWERHEAD_INFO) #define EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND 0x0000020B // 开车左顾右盼报警事件(对应DEV_EVENT_DRIVERLOOKAROUND_INFO) #define EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST 0x0000020C // 开车离岗报警事件(对应DEV_EVENT_DRIVERLEAVEPOST_INFO) #define EVENT_IVS_MAN_STAND_DETECTION 0x0000020D // 立体视觉站立事件(对应DEV_EVENT_MANSTAND_DETECTION_INFO) #define EVENT_IVS_MAN_NUM_DETECTION 0x0000020E // 立体视觉区域内人数统计事件(对应DEV_EVENT_MANNUM_DETECTION_INFO) #define EVENT_IVS_STEREO_NUMBERSTAT 0x0000020F // 客流量统计事件(暂未有具体事件) #define EVENT_IVS_TRAFFIC_DRIVERYAWN 0x00000210 // 开车打哈欠事件(对应DEV_EVENT_DRIVERYAWN_INFO) #define EVENT_IVS_NUMBERSTAT_PLAN 0x00000211 // 客流量统计计划(暂未有具体事件,球机使用,对应规则配置结构体 CFG_NUMBERSTAT_INFO) #define EVENT_IVS_HEATMAP_PLAN 0x00000212 // 热度图计划(暂未有具体事件,球机使用,对应规则配置结构体 CFG_IVS_HEATMAP_INFO) #define EVENT_IVS_CALLNOANSWERED 0x00000213 // 呼叫无答应事件 #define EVENT_IVS_IGNOREINVITE 0x00000214 // 无视邀请事件 #define EVENT_IVS_HUMANTRAIT 0x00000215 // 人体特征事件(对应 DEV_EVENT_HUMANTRAIT_INFO) #define EVENT_ALARM_LE_HEADDETECTION 0x00000216 // 乐橙人头检测事件(对应 DEV_EVENT_LE_HEADDETECTION_INFO) #define EVENT_IVS_FACEANALYSIS 0x00000217 // 目标分析事件 (暂未有具体事件) #define EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT 0x00000218 // 左转不礼让直行事件(对应 DEV_EVENT_TURNLEFTAFTERSTRAIGHT_INFO) #define EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN 0x00000219 // 大弯小转事件(对应 DEV_EVENT_BIGBENDSMALLTURN_INFO) #define EVENT_IVS_ROAD_CONSTRUCTION 0x0000021A // 道路施工监测事件(对应DEV_EVENT_ROAD_CONSTRUCTION_INFO) #define EVENT_IVS_ROAD_BLOCK 0x0000021B // 路障检测事件(对应DEV_EVENT_ROAD_BLOCK_INFO) #define EVENT_IVS_TRAFFIC_QUEUEJUMP 0x0000021C // 车辆加塞事件(对应 DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO) #define EVENT_IVS_VEHICLE_SUSPICIOUSCAR 0x0000021D // 嫌疑车辆事件(对应 DEV_EVENT_VEHICLE_SUSPICIOUSCAR_INFO) #define EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT 0x0000021E // 右转不礼让直行事件(对应 DEV_EVENT_TURNRIGHTAFTERSTRAIGHT_INFO) #define EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE 0x0000021F // 右转不礼让直行行人(对应 DEV_EVENT_TURNRIGHTAFTERPEOPLE_INFO) #define EVENT_IVS_INSTALL_CARDREADER 0x00000220 // 安装读卡器事件(对应 DEV_EVENT_INSTALL_CARDREADER_INFO) #define EVENT_ALARM_YALE_DROPBOX_BADTOKEN 0x00000221 // Yale token失效事件,只用于订阅手机推送 #define EVENT_IVS_ACC_OFF_SNAP 0x00000222 // 车载设备断电前抓拍上传事件(对应 DEV_EVENT_ACC_OFF_SNAP_INFO) #define EVENI_IVS_XRAY_DETECTION 0x00000223 // X光检测事件 (对应 DEV_EVENT_XRAY_DETECTION_INFO) #define EVENT_IVS_NOTCLEARCAR 0x00000224 // 未清车告警(对应 DEV_EVENT_NOTCLEARCAR_INFO) #define EVENT_IVS_SOSALEART 0x00000225 // sos求救报警(对应 DEV_EVENT_SOSALEART_INFO) #define EVENT_IVS_OVERLOAD 0x00000226 // 超载抓图(对应 DEV_EVENT_OVERLOAD_INFO) #define EVENT_IVS_NONWORKINGTIME 0x00000227 // 非工作时间告警(对应 DEV_EVENT_NONWORKINGTIME_INFO) #define EVENT_IVS_TRAFFIC_HIGH_BEAM 0x00000228 // 远光灯违章事件(对应 DEV_EVENT_TRAFFIC_HIGH_BEAM_INFO) #define EVENT_IVS_TRAFFIC_TRUCKFORBID 0x00000229 // 禁止货车事件(对应 DEV_EVENT_TRAFFICTRUCKFORBID_INFO) #define EVENT_IVS_DRIVINGWITHOUTCARD 0x0000022A // 无卡驾驶报警事件(对应 DEV_EVENT_DRIVINGWITHOUTCARD_INFO) #define EVENT_IVS_HIGHSPEED 0x0000022B // 车辆超速报警事件(对应 DEV_EVENT_HIGHSPEED_INFO) #define EVENT_IVS_CROWDDETECTION 0x0000022C // 人群密度检测事件(对应结构体 DEV_EVENT_CROWD_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_CARDISTANCESHORT 0x0000022D // 车间距过小报警事件(对应 DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO) #define EVENT_IVS_PEDESTRIAN_JUNCTION 0x00000230 // 行人卡口事件(对应 DEV_EVENT_PEDESTRIAN_JUNCTION_INFO) #define EVENT_IVS_VEHICLE_RECOGNITION 0x00000231 // 车牌对比事件(中石化智慧加油站项目)(对应 DEV_EVENT_VEHICLE_RECOGNITION_INFO) #define EVENT_IVS_PASS_CHANGE 0x00000232 // 预置点图片变化事件 (对应 DEV_EVENT_PASS_CHANGE_INFO) #define EVENT_IVS_TRAFFIC_PARKING_SPACEDETECTION 0x00000233 // 违停相机单球车位检测规则事件 #define EVENT_IVS_TRAFFIC_WAITINGAREA 0x00000234 // 违章进入待行区事件(对应 DEV_EVENT_TRAFFIC_WAITINGAREA_INFO) #define EVENT_IVS_TRAFFIC_BAN 0x00000235 // 机动车违法禁令标识事件(对应 DEV_EVENT_TRAFFIC_BAN_INFO) #define EVENT_IVS_POS_EXCHANGE 0x00000236 // POS机交易事件(对应 DEV_EVENT_POS_EXCHANGE_INFO) #define EVENT_IVS_STEREO_FIGHTDETECTION 0x00000237 // 立体行为分析打架/剧烈运动检测规则(仅用于规则配置,对应事件 EVENT_IVS_FIGHTDETECTION) #define EVENT_IVS_STEREO_DISTANCE_DETECTION 0x00000238 // 立体行为分析间距异常/人员靠近检测(仅用于规则配置,对应事件) #define EVENT_IVS_STEREO_STEREOFALLDETECTION 0x00000239 // 立体行为分析跌倒检测规则(仅用于规则配置,对应事件 EVENT_IVS_TUMBLE_DETECTION) #define EVENT_IVS_STEREO_STAYDETECTION 0x0000023A // 立体行为分析人员滞留检测规则(仅用于规则配置,对应事件 EVENT_IVS_STAYDETECTION) #define EVENT_IVS_BANNER_DETECTION 0x0000023B // 拉横幅事件(对应 DEV_EVENT_BANNER_DETECTION_INFO) #define EVENT_IVS_NORMAL_FIGHTDETECTION 0x0000023C // 普通打架事件(只用于普通打架规则, 事件采用EVENT_IVS_FIGHTDETECTION) #define EVENT_IVS_ELEVATOR_ABNORMAL 0x0000023D // 电动扶梯运行异常事件 (对应DEV_EVENT_ELEVATOR_ABNORMAL_INFO) #define EVENT_IVS_NONMOTORDETECT 0x0000023E // 非机动车检测 (对应结构体 DEV_EVENT_NONMOTORDETECT_INFO) #define EVENT_IVS_VEHICLEDETECT 0x0000023F // 机动车检测 (只用于规则配置,事件采用EVENT_IVS_TRAFFICJUNCTION) #define EVENT_IVS_TRAFFIC_PARKING_B 0x00000240 // 交通违章-B类违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_B_INFO) #define EVENT_IVS_TRAFFIC_PARKING_C 0x00000241 // 交通违章-C类违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_C_INFO) #define EVENT_IVS_TRAFFIC_PARKING_D 0x00000242 // 交通违章-D类违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_D_INFO) #define EVENT_IVSS_FACEATTRIBUTE 0x00000243 // IVSS目标检测事件 (暂未有具体事件) #define EVENT_IVSS_FACECOMPARE 0x00000244 // IVSS目标识别事件 (暂未有具体事件) #define EVENT_IVS_FIREWARNING 0x00000245 // 火警事件(对应 DEV_EVENT_FIREWARNING_INFO) #define EVENT_IVS_SHOPPRESENCE 0x00000246 // 商铺占道经营事件(对应 DEV_EVENT_SHOPPRESENCE_INFO) #define EVENT_IVS_WASTEDUMPED 0x00000247 // 垃圾违章倾倒事件(对应 DEV_EVENT_WASTEDUMPED_INFO) #define EVENT_IVS_SPILLEDMATERIAL_DETECTION 0x00000248 // 抛洒物检测事件(对应 DEV_EVENT_SPILLEDMATERIAL_DETECTION_INFO) #define EVENT_IVS_STEREO_MANNUM_DETECTION 0x00000249 // 立体行为分析人数异常检测 (仅用于规则配置,对应事件 EVENT_IVS_MAN_NUM_DETECTION) #define EVENT_IVS_DISTANCE_DETECTION 0x0000024A // 异常间距事件 (对应 DEV_EVENT_DISTANCE_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD 0x0000024B // 非机动车超载事件 (对应 DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO) #define EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT 0x0000024C // 非机动车未戴安全帽事件 (对应 DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO) #define EVENT_IVS_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING 0x0000024D // 拥堵滞留斑马线事件 (对应 DEV_EVENT_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO) #define EVENT_IVS_FLOWBUSINESS 0x0000024E // 流动摊贩事件 (对应 DEV_EVENT_FLOWBUSINESS_INFO) #define EVENT_IVS_CITY_MOTORPARKING 0x0000024F // 城市机动车违停事件 (对应 DEV_EVENT_CITY_MOTORPARKING_INFO) #define EVENT_IVS_CITY_NONMOTORPARKING 0x00000250 // 城市机非动车违停事件 (对应 DEV_EVENT_CITY_NONMOTORPARKING_INFO) #define EVENT_IVS_LANEDEPARTURE_WARNNING 0X00000251 // 车道偏移预警(对应 DEV_EVENT_LANEDEPARTURE_WARNNING_INFO) #define EVENT_IVS_FORWARDCOLLISION_WARNNING 0x00000252 // 前向碰撞预警(对应 DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO) #define EVENT_IVS_MATERIALSSTAY 0x00000253 // 物料堆放事件(对应 DEV_EVENT_MATERIALSSTAY_INFO) #define EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA 0x00000254 // 非机动车装载伞具(对应 DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO) #define EVENT_IVS_JABLOTRON_ALARM 0x00000255 // 客户报警产品 #define EVENT_IVS_VIDEOUNFOCUS_ALARM 0x00000256 // 视频虚焦事件(对应DEV_EVENT_VIDEOUNFOCUS_INFO) #define EVENT_IVS_FLOATINGOBJECT_DETECTION 0x00000257 // 漂浮物检测事件 (对应 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO) #define EVENT_IVS_SHIP_DETECTION 0x00000258 // 船舶检测事件 (对应 DEV_EVENT_SHIP_DETECTION_INFO) #define EVENT_IVS_AIRPLANE_DETECTION 0x00000259 // 飞机行为检测事件(对应 DEV_EVENT_AIRPLANE_DETECTION_INFO) #define EVENT_IVS_PHONECALL_DETECT 0x0000025A // 打电话检测事件(对应 DEV_EVENT_PHONECALL_DETECT_INFO) #define EVENT_IVS_SMOKING_DETECT 0x0000025B // 吸烟检测事件(对应 DEV_EVENT_SMOKING_DETECT_INFO) #define EVENT_IVS_RADAR_SPEED_LIMIT_ALARM 0x0000025C // 雷达限速报警事件(对应 DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO) #define EVENT_IVS_WATER_LEVEL_DETECTION 0x0000025D // 水位检测事件 (对应 DEV_EVENT_WATER_LEVEL_DETECTION_INFO) #define EVENT_IVS_HOLD_UMBRELLA 0x0000025E // 违规撑伞检测事件 (对应 DEV_EVENT_HOLD_UMBRELLA_INFO) #define EVENT_IVS_GARBAGE_EXPOSURE 0x0000025F // 垃圾暴露检测事件 (对应 DEV_EVENT_GARBAGE_EXPOSURE_INFO) #define EVENT_IVS_DUSTBIN_OVER_FLOW 0x00000260 // 垃圾桶满溢检测事件 (对应 DEV_EVENT_DUSTBIN_OVER_FLOW_INFO) #define EVENT_IVS_DOOR_FRONT_DIRTY 0x00000261 // 门前脏乱检测事件 (对应 DEV_EVENT_DOOR_FRONT_DIRTY_INFO) #define EVENT_IVS_QUEUESTAY_DETECTION 0X00000262 // 排队滞留时间报警事件 (对应 DEV_EVENT_QUEUESTAY_DETECTION_INFO) #define EVENT_IVS_QUEUENUM_DETECTION 0X00000263 // 排队人数异常报警事件(对应 DEV_EVENT_QUEUENUM_DETECTION_INFO) #define EVENT_IVS_GENERATEGRAPH_DETECTION 0X00000264 // 生成图规则事件(对应 DEV_EVENT_GENERATEGRAPH_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_PARKING_MANUAL 0x00000265 // 交通违章-手动取证(对应 DEV_EVENT_TRAFFIC_PARKING_MANUAL_INFO) #define EVENT_IVS_HELMET_DETECTION 0x00000266 // 安全帽检测事件(对应 DEV_EVENT_HELMET_DETECTION_INFO) #define EVENT_IVS_DEPOSIT_DETECTION 0x00000267 // 包裹堆积程度检测事件(对应 DEV_EVENT_DEPOSIT_DETECTION_INFO) #define EVENT_IVS_HOTSPOT_WARNING 0x00000268 // 热点异常报警事件(对应 DEV_EVENT_HOTSPOT_WARNING_INFO) #define EVENT_IVS_WEIGHING_PLATFORM_DETECTION 0x00000269 // 称重平台检测事件(对应 DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO) #define EVENT_IVS_CLASSROOM_BEHAVIOR 0x0000026A // 课堂行为分析事件(对应 DEV_EVENT_CLASSROOM_BEHAVIOR_INFO) #define EVENT_IVS_VEHICLE_DISTANCE_NEAR 0x0000026B // 安全驾驶车距过近报警事件(对应 DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO) #define EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL 0x0000026C // 驾驶员异常报警事件(对应 DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO) #define EVENT_IVS_TRAFFIC_DRIVER_CHANGE 0x0000026D // 驾驶员变更报警事件(对应 DEV_EVENT_TRAFFIC_DRIVER_CHANGE_INFO) #define EVENT_IVS_WORKCLOTHES_DETECT 0x0000026E // 工装(安全帽/工作服等)检测事件(对应 DEV_EVENT_WORKCLOTHES_DETECT_INFO) #define EVENT_IVS_SECURITYGATE_PERSONALARM 0x0000026F // 安检门人员报警事件(对应 DEV_EVENT_SECURITYGATE_PERSONALARM_INFO) #define EVENT_IVS_STAY_ALONE_DETECTION 0x00000270 // 单人独处事件(对应 DEV_EVENT_STAY_ALONE_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_ROAD_BLOCK 0x00000271 // 交通路障检测事件(对应 DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO) #define EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION 0x00000272 // 交通道路施工检测事件(对应 DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO) #define EVENT_IVS_XRAY_DETECT_BYOBJECT 0x00000273 // X光按物体检测规则配置, 对应事件 EVENI_IVS_XRAY_DETECTION #define EVENT_IVS_WORKSTATDETECTION 0x00000274 // 作业统计事件(对应 DEV_EVENT_WORKSTATDETECTION_INFO) #define EVENT_IVS_INFRAREDBLOCK 0x00000275 // 红外阻断事件(对应 DEV_EVENT_INFRAREDBLOCK_INFO) #define EVENT_IVS_FEATURE_ABSTRACT 0x00000276 // 特征提取事件(对应 DEV_EVENT_FEATURE_ABSTRACT_INFO) #define EVENT_IVS_INTELLI_SHELF 0x00000277 // 智能补货事件(对应 DEV_EVENT_INTELLI_SHELF_INFO) #define EVENT_IVS_PANORAMA_SHOT 0x00000278 // 全景抓拍事件(对应 DEV_EVENT_PANORAMA_SHOT_INFO) #define EVENT_ALARM_SMARTMOTION_HUMAN 0x00000279 // 智能视频移动侦测事件(人), (对应 DEV_EVENT_SMARTMOTION_HUMAN_INFO) #define EVENT_ALARM_SMARTMOTION_VEHICLE 0x0000027A // 智能视频移动侦测事件(车), (对应 DEV_EVENT_SMARTMOTION_VEHICLE_INFO) #define EVENT_IVS_CAR_DRIVING_IN_OUT 0x0000027B // 车辆驶入驶出状态事件(对应 DEV_EVENT_CAR_DRIVING_IN_OUT_INFO) #define EVENT_IVS_PARKINGSPACE_STATUS 0x0000027C // 停车位状态事件(对应 DEV_EVENT_PARKINGSPACE_STATUS_INFO) #define EVENT_IVS_VIOLENT_THROW_DETECTION 0x0000027D // 暴力抛物检测(对应 DEV_EVENT_VIOLENT_THROW_DETECTION_INFO) #define EVENT_IVS_TRAMCARSECTIONS_DETECTION 0x0000027E // 矿车超挂报警事件(对应 DEV_EVENT_TRAMCARSECTIONS_DETECTION_INFO) #define EVENT_IVS_ALARM_BOX_ALARM 0x0000027F // 报警盒通道的触发报警事件, 目前只用于订阅手机推送 #define EVENT_IVS_FACE_COMPARISION 0x00000280 // 目标比对事件, 专用于手机推送的目标识别事件, 目前只用于订阅手机推送 #define EVENT_IVS_FACEBODY_DETECT 0x00000281 // 人像检测事件(对应 DEV_EVENT_FACEBODY_DETECT_INFO) #define EVENT_IVS_FACEBODY_ANALYSE 0x00000282 // 人像识别事件(对应 DEV_EVENT_FACEBODY_ANALYSE_INFO) #define EVENT_IVS_GASSTATION_VEHICLE_DETECT 0x00000283 // 加油站车辆检测事件 (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO) #define EVENT_IVS_CONGESTION_DETECTION 0x00000284 // 道路场景车辆拥堵报警事件(对应 DEV_EVENT_CONGESTION_DETECTION_INFO) #define EVENT_IVS_VEHICLELIMIT_DETECTION 0x00000285 // 停车场场景下停车车辆上限报警(对应 DEV_EVENT_VEHICLELIMIT_DETECTION_INFO) #define EVENT_IVS_ANIMAL_DETECTION 0x00000286 // 动物检测事件,(对应 DEV_EVENT_ANIMAL_DETECTION_INFO) #define EVENT_IVS_SHOP_WINDOW_POST 0x00000287 // 橱窗张贴事件 (对应 DEV_EVENT_SHOP_WINDOW_POST_INFO) #define EVENT_IVS_SHOP_SIGN_ABNORMAL 0x00000288 // 店招异常事件 (对应 DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO) #define EVENT_IVS_BREED_DETECTION 0x00000289 // 智慧养殖检测事件 (对应 DEV_EVENT_BREED_DETECTION_INFO) #define EVENT_IVS_AIRPORT_VEHICLE_DETECT 0x0000028A // 机场智能保障车辆检测事件 (对应 DEV_EVENT_AIRPORT_VEHICLE_DETECT_INFO) #define EVENT_IVS_PIG_TEMPERATURE_DETECT 0x0000028B // 智慧养殖猪体温检测 (只用于规则配置) #define EVENT_IVS_MAN_CAR_COEXISTANCE 0x0000028C // 人车共存事件 (对应 DEV_EVENT_MAN_CAR_COEXISTANCE_INFO) #define EVENT_IVS_HIGH_TOSS_DETECT 0x0000028D // 高空抛物检测(对应DEV_EVENT_HIGH_TOSS_DETECT_INFO) #define EVENT_IVS_ELECTRIC_GLOVE_DETECT 0x0000028E // 电力检测手套检测事件(对应DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO) #define EVENT_IVS_ELECTRIC_LADDER_DETECT 0x0000028F // 电力检测梯子检测事件(对应DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO) #define EVENT_IVS_ELECTRIC_CURTAIN_DETECT 0x00000290 // 电力检测布幔检测事件(对应DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO) #define EVENT_IVS_ELECTRIC_FENCE_DETECT 0x00000291 // 电力检测围栏检测事件(对应DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO) #define EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT 0x00000292 // 电力检测标识牌检测事件(对应DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO) #define EVENT_IVS_ELECTRIC_BELT_DETECT 0x00000293 // 电力检测安全带检测事件(对应DEV_EVENT_ELECTRIC_BELT_DETECT_INFO) #define EVENT_IVS_RADAR_LINE_DETECTION 0x00000294 // 雷达警戒线/绊线检测(对应DEV_EVENT_RADAR_LINE_DETECTION_INFO) #define EVENT_IVS_RADAR_REGION_DETECTION 0x00000295 // 雷达警戒区检测事件(对应DEV_EVENT_RADAR_REGION_DETECTION_INFO) #define EVENT_IVS_AUDIO_INTENSITY 0x00000296 // 异常音事件(对应 DEV_EVENT_AUDIO_INTENSITY_INFO) #define EVENT_IVS_PARKING_LOT_STATUS_DETECTION 0x00000297 // 室外停车位状态检测 (对应 DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO) #define EVENT_IVS_VEHICLE_COMPARE 0x00000298 // (只用于规则配置) #define EVENT_IVS_DREGS_UNCOVERED 0x00000299 // 渣土车未遮盖载货检测事件(对应 DEV_EVENT_DREGS_UNCOVERED_INFO) #define EVENT_IVS_WALK_DETECTION 0x0000029A // 走动检测事件(对应 DEV_EVENT_WALK_DETECTION_INFO) #define EVENT_IVS_BACK_TO_DETECTION 0x0000029B // 背对检测事件(对应 DEV_EVENT_BACK_TO_DETECTION_INFO) #define EVENT_IVS_WRITE_ON_THE_BOARD_DETECTION 0x0000029C // 板书检测事件(对应 DEV_EVENT_WRITE_ON_THE_BOARD_DETECTION_INFO) #define EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION 0x0000029D // 智慧厨房穿着检测事件(对不戴口罩、厨师帽以及颜色不符合规定的厨师服进行报警)(对应 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO) #define EVENT_IVS_SLEEP_DETECT 0x0000029E // 睡觉检测事件(对应 DEV_EVENT_SLEEP_DETECT_INFO) #define EVENT_IVS_WALK_AROUND_DETECT 0x0000029F // 随意走动检测事件(对应 DEV_EVENT_WALK_AROUND_DETECT_INFO) #define EVENT_IVS_PLAY_MOBILEPHONE 0x00000300 // 玩手机事件(对应 DEV_EVENT_PLAY_MOBILEPHONE_INFO) #define EVENT_IVS_FINANCE_CONTRABAND_DETECT 0x00000301 // 智慧金融违规物品检测事件(对应 DEV_EVENT_FINANCE_CONTRABAND_DETECT_INFO) #define EVENT_IVS_FINANCE_CASH_TRANSACTION 0x00000302 // 智慧金融现金交易检测事件(对应 DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO) #define EVENT_IVS_ANATOMY_TEMP_DETECT 0x00000303 // 人体温智能检测事件(对应 DEV_EVENT_ANATOMY_TEMP_DETECT_INFO) #define EVENT_IVS_ACTIVITY_ANALYSE 0x00000304 // 活跃度统计规则 (只用于规则配置) #define EVENT_IVS_DOOR_STATUS 0x00000305 // 门状态事件(对应 DEV_EVENT_DOOR_STATUS_INFO) #define EVENT_IVS_DHOP_CUSTOM 0x00000306 // Dhop自定义事件(start/stop, 对应 DEV_EVENT_DHOP_CUSTOM_INFO) #define EVENT_IVS_DHOP_CUSTOM_ONCE 0x00000307 // Dhop自定义事件(Pulse, 对应 DEV_EVENT_DHOP_CUSTOM_INFO) #define EVENT_IVS_FOG_DETECTION 0x00000308 // 起雾检测事件(对应 DEV_EVENT_FOG_DETECTION) #define EVENT_IVS_TRAFFIC_VEHICLE_BC 0x00000309 // 飙车事件(对应 DEV_EVENT_TRAFFIC_VEHICLE_BC ) #define EVENT_IVS_TRAFFIC_MOTOR_OVERLOAD 0x0000030A // 机动车超载(对应 DEV_EVENT_TRAFFIC_MOTOR_OVERLOAD_INFO) #define EVENT_IVS_TRAFFIC_PLATE_OCCLUSION 0x0000030B // 车牌污损(对应 DEV_EVENT_TRAFFIC_PLATE_OCCLUSION_INFO) #define EVENT_IVS_NONMOTOR_ENTRYING 0x0000030C // 非机动车进入电梯(对应 DEV_EVENT_NONMOTOR_ENTRYING_INFO) #define EVENT_IVS_WATER_STAGE_MONITOR 0x0000030D // 水位监测事件, 目前仅用于任务型智能分析 (对应 DEV_EVENT_WATER_STAGE_MONITOR_INFO) #define EVENT_IVS_TRAFFIC_ROAD_ALERT 0x0000030E // 道路安全预警(对应 DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO) #define EVENT_IVS_BREAK_RULE_BUILDING_DETECTION 0x0000030F // 违章建筑检测事件(对应 DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_NONMOTOR_RUN_REDLIGHT 0x00000310 // 非机动车闯红灯 (对应 DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO ) #define EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE 0x00000311 // 占用应急车道事件(对应 DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO ) #define EVENT_IVS_PRAM_DETECTION 0x00000312 // 婴儿车检测事件 (对应 DEV_EVENT_PRAM_DETECTION_INFO ) #define EVENT_IVS_STEREO_PRAM_DETECTION 0x00000313 // 立体行为婴儿车检测事件 (只用于规则配置) #define EVENT_IVS_BIG_BAGGAGE_DETECTION 0x00000314 // 大件行李箱检测事件 (对应 DEV_EVENT_BIG_BAGGAGE_DETECTION_INFO ) #define EVENT_IVS_STEREO_BIG_BAGGAGE_DETECTION 0x00000315 // 立体行为大件行李箱检测事件 (只用于规则配置) #define EVENT_IVS_TICKET_EVADE_DETECTION 0x00000316 // 逃票检测事件 (对应 DEV_EVENT_TICKET_EVADE_DETECTION_INFO ) #define EVENT_IVS_STEREO_TICKET_EVADE_DETECTION 0x00000317 // 立体行为逃票检测事件 (只用于规则配置) #define EVENT_IVS_POWERLINE_FOREIGN_DETECITON 0x00000318 // 输电线异物检测 (对应 DEV_EVENT_POWERLINE_FOREIGN_DETEC_INFO) #define EVENT_IVS_TRAFFIC_OVER_GUIDE_LINE 0x00000319 // 压导流线 (对应 DEV_EVENT_TRAFFIC_OVER_GUIDE_LINE_INFO) #define EVENT_IVS_TRAFFIC_CAR_MEASUREMENT 0x00000320 // 交通卡口测量(车辆长、宽、高度、重量等)事件 (对应 DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO) #define EVENT_IVS_TRAFFIC_WRONG_TURN_LIGHT 0x00000321 // 不安规定使用转向灯事件(对应 DEV_EVENT_TRAFFIC_WRONG_TURN_LIGHT_INFO) #define EVENT_IVS_TRAFFIC_REAREND_ACCIDENT 0x00000322 // 交通事故事件(对应 DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO) #define EVENT_IVS_DO_TALK_ACTION 0x00000323 // 对讲动作事件(对应 DEV_EVENT_DO_TALK_ACTION_INFO) #define EVENT_IVS_FIRE_LANE_DETECTION 0x00000324 // 消防占道检测事件(对应 DEV_EVENT_FIRE_LANE_DETECTION_INFO) #define EVENT_IVS_PARKING_DETECTION_FOR_PRMA 0x00000325 // 全景异常停车事件 (只用于规则配置) #define EVENT_IVS_TRAFFIC_JAM_FOR_PRMA 0x00000326 // 全景交通拥堵事件 (只用于规则配置) #define EVENT_IVS_TRAFFIC_ACCIDENT_FOR_PRMA 0x00000327 // 全景交通事故事件 (只用于规则配置) #define EVENT_IVS_TRAFFIC_NON_MOTOR_RETROGRADE 0x00000328 // 非机动车逆行事件(对应 DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO) #define EVENT_IVS_TRAFFIC_NON_MOTOR_OVER_STOP_LINE 0x00000329 // 非机动车越线停车事件(对应 DEV_EVENT_TRAFFIC_NON_MOTOR_OVER_STOP_LINE_INFO) #define EVENT_IVS_CAR_DRIVING_IN 0x00000330 // 车辆驶入事件(对应 DEV_EVENT_CAR_DRIVING_IN_INFO) #define EVENT_IVS_CAR_DRIVING_OUT 0x00000331 // 车辆驶出事件(对应 DEV_EVENT_CAR_DRIVING_OUT_INFO) #define EVENT_IVS_PORTRAIT_DETECTION 0x00000332 // 人像检测 (只用于规则配置) #define EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT 0x00000333 // 特殊车辆检测 (对应 DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO ) #define EVENT_IVS_TRAFFIC_HEAD_LAMP_OFF 0x00000334 // 未开照明灯事件(对应 DEV_EVENT_TRAFFIC_HEAD_LAMP_OFF_INFO) #define EVENT_IVS_TRAFFIC_NONMOTOR 0x00000335 // 交通非机动车事件检测, 智能服务器使用 ( DEV_EVENT_TRAFFIC_NONMOTOR_INFO ) #define EVENT_IVS_TRAFFIC_BOARD 0x00000336 // 交通违章上下客事件检测 (对应 DEV_EVENT_TRAFFIC_BOARD_INFO ) #define EVENT_IVS_TRAFFIC_VISIBILITY 0x00000337 // 交通能见度事件检测 (对应 DEV_EVENT_TRAFFIC_VISIBILITY_INFO ) #define EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS 0x00000338 // 交通车辆清洁度检测事件检测 (对应 DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO) #define EVENT_IVS_TRAFFICFLOW_FOR_PRMA 0x00000339 // 全景交通车流 (只用于规则配置) #define EVENT_IVS_TRUCKNOTCLEAN_FOR_PRMA 0x0000033A // 工程车未清洗 对应 DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO #define EVENT_IVS_ROADOCCUPATION_BY_FOREIGNOBJECT 0x0000033B // 异物占道事件 (对应 DEV_EVENT_ROADOCCUPATION_BY_FOREIGNOBJECT_INFO ) #define EVENT_IVS_TRAFFICFLOW_OVER 0x0000033C // 车流量超过上限 ( 对应 DEV_EVENT_TRAFFICFLOW_OVER_INFO ) #define EVENT_IVS_GOODS_DETECTION 0x0000033D // 违规物品检测事件 ( 对应 DEV_EVENT_GOODS_DETECTION_INFO ) #define EVENT_IVS_CONVEYORBLOCK_DETECTION 0x0000033E // 传送带阻塞报警事件 (对应DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO ) #define EVENT_IVS_ANYTHING_DETECT 0x0000033F // 全物体类型检测事件 ( 对应 DEV_EVENT_ANYTHING_DETECT_INFO ) #define EVENT_IVS_OBJECT_ABNORMAL 0x00000340 // 目标异常事件(对应 DEV_EVENT_OBJECT_ABNORMAL_INFO ) #define EVENT_IVS_DRIVE_ASSISTANT 0x00000341 // 辅助驾驶 (只用于规则配置) #define EVENT_IVS_DRIVE_ACTION_ANAYLSE 0x00000342 // 驾驶行为分析 (只用于规则配置) #define EVENT_IVS_DRIVE_HANDSOFF_STEERING_WHEEL 0x00000343 // 驾驶行为分析 手离开方向盘检测 (对应 DEV_EVENT_DRIVE_HANDSOFF_STEERING_WHEEL_INFO) #define EVENT_IVS_DRIVE_BLIND_SPOT 0x00000344 // 驾驶行为分析 盲点检测 (对应 DEV_EVENT_BLIND_SPOT_DETECTION_INFO) #define EVENT_IVS_ARTICLE_DETECTION 0x00000345 // 物品检测(只用于规则配置), 对应事件 EVENT_IVS_LEFTDETECTION 或者 EVENT_IVS_TAKENAWAYDETECTION #define EVENT_IVS_TRAFFIC_PARKINGSPACE_MANUALSNAP 0x00000346 // 路侧停车位手动抓图 (对应 DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO ) #define EVENT_IVS_STREET_SUNCURE 0x00000347 // 沿街晾晒事件 (对应DEV_EVENT_STREET_SUNCURE_INFO ) #define EVENT_IVS_OUTDOOR_ADVERTISEMENT 0x00000348 // 户外广告事件 (对应DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO ) #define EVENT_IVS_HUDDLE_MATERIAL 0x00000349 // 乱堆物料检测事件 (对应DEV_EVENT_HUDDLE_MATERIAL_INFO ) #define EVENT_IVS_FIRE_LINE_DETECTION 0x0000034A // 进入消防通道检测 (对应 DEV_EVENT_FIRE_LINE_DETECTION_INFO) #define EVENT_IVS_OCCUPY_BUS_LANE 0x0000034B // 违法占用公交车道(对应 DEV_EVENT_OCCUPY_BUS_LANE_INFO) #define EVENT_IVS_DISTRESS_DETECTION 0x0000034C // 求救检测事件 ( 对应 DEV_EVENT_DISTRESS_DETECTION_INFO ) #define EVENT_IVS_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT 0x0000034D // 交通副驾驶未系安全带事件 (对应 DEV_EVENT_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT ) #define EVENT_IVS_TRAFFIC_SPEED_CHANGE_DETECTION 0x0000034E // 交通变速检测事件(对应 DEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO ) #define EVENT_IVS_FOLLOW_CAR_ALARM 0x0000034F // 跟车报警(对应 DEV_EVENT_FOLLOW_CAR_ALARM_INFO) #define EVENT_IVS_CONVEYER_BELT_DETECT 0x00000350 // 传送带检测, 仅用于规则配置, 对应规则结构体CFG_CONVEYER_BELT_DETECT_INFO, 对应事件 // EVENT_IVS_CONVEYER_BELT_BULK/EVENT_IVS_CONVEYER_BELT_NONLOAD/EVENT_IVS_CONVEYER_BELT_RUNOFF/EVENT_IVS_CONVEYORBLOCK_DETECTION/EVENT_IVS_CONVEYER_BELT_COAL_RATIO #define EVENT_IVS_CONVEYER_BELT_BULK 0x00000351 // 传送带大块异物检测事件(对应DEV_EVENT_CONVEYER_BELT_BULK_INFO ) #define EVENT_IVS_CONVEYER_BELT_NONLOAD 0x00000352 // 传送带空载检测事件(对应DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO ) #define EVENT_IVS_CONVEYER_BELT_RUNOFF 0x00000353 // 传送带跑偏检测事件(对应 DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO ) #define EVENT_IVS_CONVEYER_BELT_COAL_RATIO 0x00000354 // 传送带煤量检测(对应DEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO ) #define EVENT_IVS_PACKBROKEN_DETECTION 0x00000355 // 包裹破损检测事件 ( 对应 DEV_EVENT_PACKBROKEN_DETECTION_INFO ) #define EVENT_IVS_PACKLAND_DETECTION 0x00000356 // 包裹着地检测事件 ( 对应 DEV_EVENT_PACKLAND_DETECTION_INFO ) #define EVENT_IVS_PACKOPEN_DETECTION 0x00000357 // 开箱验示检测事件 ( 对应 DEV_EVENT_PACKOPEN_DETECTION_INFO ) #define EVENT_IVS_TRAFFIC_TURN_RIGHT_NO_STOP 0x00000358 // 右转不停再起步事件 ( 对应 DEV_EVENT_TRAFFIC_TURN_RIGHT_NO_STOP_INFO ) #define EVENT_IVS_TRAFFIC_CROSSING_GUARDRAIL 0x00000359 // 跨越护栏事件 ( 对应 DEV_EVENT_TRAFFIC_CROSSING_GUARDRAIL_INFO ) #define EVENT_IVS_EMERGENCY 0x0000035A // 人为触发的紧急事件,一般处理是联动外部通讯功能请求帮助 (对应 DEV_EVENT_EMERGENCY_INFO) #define EVENT_IVS_TRAFFIC_PARKING_STATISTICS 0x0000035B // 车位统计事件(对应 DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO) #define EVENT_IVS_HEAT_IMAGING_TEMPER 0x0000035C // 热成像测温点温度异常报警事件(对应结构体 DEV_EVENT_HEAT_IMAGING_TEMPER_INFO) #define EVENT_IVS_SCALPER_ALARM 0x0000035D // 黄牛高频报警事件 (对应 DEV_EVENT_SCALPER_ALARM_INFO) #define EVENT_IVS_ROAD_OBSTACLE_DETECTION 0x0000035E // 道路障碍物检测事件(对应 DEV_EVENT_ROAD_OBSTACLE_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_BRIGANDAGE_CAR 0x0000035F // 盗抢车辆事件(对应 DEV_EVENT_TRAFFIC_BRIGANDAGE_CAR_INFO) #define EVENT_IVS_TRAFFIC_COUNTERFEIT_PLATE_CAR 0x00000360 // 假牌车辆事件(对应 DEV_EVENT_TRAFFIC_COUNTERFEIT_PLATE_CAR_INFO) #define EVENT_IVS_TRAFFIC_FAKE_PLATE_CAR 0x00000361 // 套牌车辆事件(对应 DEV_EVENT_TRAFFIC_FAKE_PLATE_CAR_INFO) #define EVENT_IVS_SEWAGE_DETECTION 0x00000362 // 排污检测事件(对应 DEV_EVENT_SEWAGE_DETECTION_INFO) #define EVENT_IVS_WATERCOLOR_DETECTION 0x00000363 // 水体颜色事件(对应 DEV_EVENT_WATERCOLOR_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_MOTORCYCLE_FORBID 0x00000364 // 禁摩事件 (对应 DEV_EVENT_TRAFFIC_MOTORCYCLE_FORBID) #define EVENT_IVS_VIDEO_NORMAL_DETECTION 0x00000365 // 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件 DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO #define EVENT_IVS_TRAFFIC_TURN_RIGHT_OVER_LINE 0x00000366 // 右转弯压线事件(对应 DEV_EVENT_TRAFFIC_TURN_RIGHT_OVER_LINE_INFO) #define EVENT_IVS_MANUAL_ALARM 0x00000367 // 人工报警事件 (对应 DEV_EVENT_MANUAL_ALARM_INFO ) #define EVENT_IVS_TRAFFIC_DRIVE_ON_LINE 0x00000368 // 骑线行驶事件(对应DEV_EVENT_TRAFFIC_DRIVE_ON_LINE_INFO) #define EVENT_IVS_OBJECT_PLACEMENT_DETECTION 0x00000369 // 物品放置检测事件(对应DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO) #define EVENT_IVS_OBJECT_REMOVAL_DETECTION 0x0000036A // 物品拿取检测事件(对应DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO) #define EVENT_IVS_FIRE_DOOR_DETECTION 0x0000036B // 防火门检测事件(对应DEV_EVENT_FIRE_DOOR_DETECTION_INFO) #define EVENT_IVS_FIRE_EXTINGUISHER_DETECTION 0x0000036C // 灭火器检测事件(对应DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO) #define EVENT_IVS_DOOR_NOT_CLOSE 0x0000036D // 门未关事件(对应DEV_EVENT_DOOR_NOT_CLOSE_INFO) #define EVENT_IVS_VEHICLE_PERIPHERAL_ALARM 0x0000036E // 车载外设异常报警事件(对应DEV_EVENT_VEHICLE_PERIPHERAL_ALARM_INFO) #define EVENT_IVS_PARKING_LIMIT_DETECTION 0x0000036F // 车位阈值变化报警(对应DEV_EVENT_PARKING_LIMIT_DETECTION_INFO) #define EVENT_IVS_PARKING_STATUS_CHANGE_DETECTION 0x00000370 // 车位状态变化报警(对应DEV_EVENT_PARKING_STATUS_CHANGE_DETECTION_INFO) #define EVENT_IVS_DIALRECOGNITION 0x00000371 // 仪表检测事件(对应DEV_EVENT_DIALRECOGNITION_INFO) #define EVENT_IVS_ELECTRICFAULT_DETECT 0x00000372 // 仪表类缺陷检测事件(对应DEV_EVENT_ELECTRICFAULTDETECT_INFO) #define EVENT_IVS_TRASH_WITHOUT_COVER_DETECTION 0x00000373 // 垃圾桶未盖盖子检测事件(对应DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO) #define EVENT_IVS_SECURITY_INSPECTOR_LOOKAROUND 0x00000374 // 安检员左顾右盼报警事件(对应DEV_EVENT_SECURITY_INSPECTOR_LOOKAROUND_INFO) #define EVENT_IVS_SECURITY_INSPECTOR_LOWERHEAD 0x00000375 // 安检员低头报警事件(对应DEV_EVENT_SECURITY_INSPECTOR_LOWERHEAD_INFO) #define EVENT_IVS_SECURITY_INSPECTOR_TIRED 0x00000376 // 安检员疲劳报警事件(对应DEV_EVENT_SECURITY_INSPECTOR_TIRED_INFO) #define EVENT_IVS_SECURITY_INSPECTOR_YAWN 0x00000377 // 安检员打哈欠报警事件(对应DEV_EVENT_SECURITY_INSPECTOR_YAWN_INFO) #define EVENT_IVS_AIPICK_DETECT 0x00000378 // 智能拾音器语音识别事件(对应DEV_EVENT_AIPICK_DETECT_INFO) #define EVENT_IVS_TRAFFIC_LIGHT_FAULT 0x00000379 // 交通灯故障报警事件(对应DEV_EVENT_TRAFFIC_LIGHT_FAULT_INFO) #define EVENT_IVS_TRAFFIC_LANE_INDICATOR_FAULT 0x0000037A // 交通变道指示牌故障事件(对应DEV_EVENT_TRAFFIC_LANE_INDICATOR_FAULT_INFO) #define EVENT_IVS_WATER_SPEED_DETECTION 0x0000037B // 水流速检测事件(对应 DEV_EVENT_WATER_SPEED_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_PARKING_BACKING 0x0000037C // 出入口倒车驶离事件(对应DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO) #define EVENT_IVS_VALVE_ABNORMAL 0x0000037D // 阀门异常检测事件(对应 DEV_EVENT_VALVE_ABNORMAL_INFO) #define EVENT_IVS_DISCHARGE_PORT_ABNORMAL 0x0000037E // 出料口异常检测事件(对应 DEV_EVENT_DISCHARGE_PORT_ABNORMAL_INFO) #define EVENT_IVS_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED 0x0000037F //违法裁人事件(对应 DEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO) #define EVENT_IVS_BARELAND_DETECTION 0x00000380 // 裸土检测事件(DEV_EVENT_BARELAND_DETECTION_INFO) #define EVENT_IVS_CONSUMPTION_EVENT 0x00000381 // 消费事件(对应 DEV_EVENT_CONSUMPTION_EVENT_INFO) #define EVENT_IVS_TOUCH_ELECTROSTATIC_BALL 0x00000382 // 触摸静电球事件(对应DEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO) #define EVENT_IVS_OXYGEN_CYLINDER_DETECTION 0x00000383 // 氧气瓶检测事件(对应DEV_EVENT_OXYGEN_CYLINDER_DETECTION_INFO) #define EVENT_IVS_XRAY_UNPACKING_CHECK 0x00000384 // X光开包检查事件(对应DEV_EVENT_XRAY_UNPACKING_CHECK_INFO) #define EVENT_IVS_GENERAL_ATTITUDE_DETECTION 0x00000385 // 姿态检测事件(对应 DEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO) #define EVENT_IVS_SNAP_TASK 0x00000386 // 非接入式任务抓图事件(对应 DEV_EVENT_SNAP_TASK_INFO) #define EVENT_IVS_TRAFFIC_CHANGE_LANE_CONTINUES 0x00000387 //机动车连续变道违法事件(对应 DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO) #define EVENT_IVS_SPRAY_DETECT 0x00000388 //喷洒异常检测事件(对应 DEV_EVENT_SPRAY_DETECT_INFO) #define EVENT_IVS_SILICON_FIRE_DETECTION 0x00000389 // 刺火检测事件(对应 DEV_EVENT_SILICON_FIRE_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_PARKING_ON_RIGHT_TURN_ROUTE 0x0000038A // 右转道违停(对应DEV_EVENT_TRAFFIC_PARKING_ON_RIGHT_TURN_ROUTE_INFO) #define EVENT_IVS_PERSONNEL_COEXISTENCE 0x0000038B // 人员共存事件(对应 DEV_EVENT_PERSONNEL_COEXISTENCE_INFO) #define EVENT_IVS_GENEAL_ATTITUDE 0x0000038C // 通用姿态行为事件(对应 DEV_EVENT_GENEAL_ATTITUDE_INFO) #define EVENT_IVS_CASH_BOX_STATE 0x0000038D // 款箱状态事件(对应 DEV_EVENT_CASH_BOX_STATE_INFO) #define EVENT_IVS_LEAKAGE_DETECTION 0x0000038E // 渗漏检测事件(对应 DEV_EVENT_LEAKAGE_DETECTION_INFO) #define EVENT_IVS_LADLE_NO_DETECTION 0x0000038F // 钢包编号识别事件(对应 DEV_EVENT_LADLE_NO_DETECTION_INFO) #define EVENT_IVS_FISHING_DETECTION 0x00000390 // 钓鱼检测事件(对应 DEV_EVENT_FISHING_DETECTION_INFO ) #define EVENT_IVS_ALARM_ACCESSORY 0x00000391 // 报警配件事件(对应 DEV_EVENT_ALARM_ACCESSORY_INFO) #define EVENT_IVS_WIRELESS_DEV_LOWPOWER 0x00000392 // 无线设备低电量事件(对应 DEV_EVENT_WIRELESS_DEV_LOWPOWER_INFO) #define EVENT_IVS_SENSOR_ABNORMAL 0x00000393 // 探测器异常报警(对应 DEV_EVENT_SENSOR_ABNORMAL_INFO) #define EVENT_IVS_MODULE_LOST 0x00000394 // 模块断线报警事件(对应 DEV_EVENT_MODULE_LOST_INFO) #define EVENT_IVS_CROWD_LEVEL_DETECTION 0x00000395 // 拥挤程度检测事件(对应 DEV_EVENT_CROWD_LEVEL_DETECTION_INFO) #define EVENT_IVS_REGION_DEFENSE_DETECTION 0x00000396 // 区域看防事件(对应 DEV_EVENT_REGION_DEFENSE_DETECTION_INFO) #define EVENT_IVS_DUSTBIN_DETECTION 0x00000397 // 垃圾桶检测事件(对应 DEV_EVENT_DUSTBIN_DETECTION_INFO) #define EVENT_IVS_DIALRECOGNITION_EX 0x00000398 // 仪表检测事件(对应DEV_EVENT_DIALRECOGNITION_INFO) #define EVENT_IVS_OCR_DETECTION 0x00000399 // OCR检测事件(对应 DEV_EVENT_OCR_DETECTION_INFO) #define EVENT_IVS_ROAD_CONDITIONS_DETECTION 0x0000039A // 路面检测事件(对应DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO) #define EVENT_IVS_NEAR_OBJECT_DETECT 0x0000039B // 近物体检测事件(对应DEV_EVENT_NEAR_OBJECT_DETECT_INFO) #define EVENT_IVS_OBJECT_NUM_DETECTION 0x0000039C // 区域内计数事件(对应 DEV_EVENT_OBJECT_NUM_DETECTION_INFO, 注意该事件不支持单独使用,仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则) #define EVENT_IVS_OPEN_INTELLI 0x0000039D // 开放智能事件(对应 DEV_EVENT_OPEN_INTELLI_INFO) #define EVENT_IVS_CRANE_LOAD_STAY_DETECTION 0x0000039E // 天车吊物滞留事件(对应 DEV_EVENT_CRANE_LOAD_STAY_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_DRIVER_NO_BELT 0x00000400 // 未系安全带报警事件(对应DEV_EVENT_TRAFFIC_DRIVER_NO_BELT_INFO) #define EVENT_IVS_RIDING_MOTOR_CYCLE 0x00000401 // 摩托车骑跨检测事件(对应DEV_EVENT_RIDING_MOTOR_CYCLE_INFO) #define EVENT_IVS_CONVEYOR_ARTICLE_TYPE 0x00000402 // 传送带异物检测事件(对应DEV_EVENT_CONVEYOR_ARTICLE_TYPE_INFO) #define EVENT_IVS_BLIND_ALARM 0x00000403 // 盲区报警事件(对应 DEV_EVENT_BLIND_ALARM_INFO) #define EVENT_IVS_TRAFFIC_SPEED_DROP_SHARPLY 0x00000404 // 车辆速度剧减事件(对应 DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO) #define EVENT_IVS_GESTURE_DETECTION 0x00000405 // 手势检测事件(对应 DEV_EVENT_GESTURE_DETECTION_INFO) #define EVENT_IVS_HEAD_LIFT_DETECTION 0x00000406 // 抬头检测事件(对应 DEV_EVENT_HEAD_LIFT_DETECTION_INFO) #define EVENT_IVS_DRAINING_DETECTION 0x00000407 // 排水检测识别事件(对应 DEV_EVENT_DRAINING_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_CROSSING_SPEEDY 0x00000408 // 斑马线不减速事件 (对应 DEV_EVENT_TRAFFIC_CROSSING_SPEEDY_INFO) #define EVENT_IVS_TRAFFIC_LARGECAR_NO_STOP 0x00000409 // 大车右转不停车事件(对应 DEV_EVENT_TRAFFIC_LARGECAR_NO_STOP_INFO) #define EVENT_IVS_TRAFFIC_OVERTAKE_ONRIGHT 0x0000040A // 右侧超车事件(对应 DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO) #define EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED 0x0000040B // 大车占道事件(对应 DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO) #define EVENT_IVS_TRAFFIC_SMALL_DISPLACEMENT 0x0000040C // 车辆缓行事件(对应 DEV_EVENT_TRAFFIC_SMALL_DISPLACEMENT_INFO) #define EVENT_IVS_GREEN_BELT 0x0000040D // 绿化带报警事件(对应 DEV_EVENT_GREEN_BELT_ALARM_INFO) #define EVENT_IVS_ROAD_DAMAGE 0x0000040E // 道路损坏报警事件(对应 DEV_EVENT_ROAD_DAMAGE_ALARM_INFO) #define EVENT_IVS_TRAFFIC_SERPENTINE_CHANGE_LANE 0x0000040F // 蛇形变道事件(对应 DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO) #define EVENT_IVS_PERSON_TRANS_DETECTION 0x00000410 // 人员传输检测事件(对应 DEV_EVENT_IVS_PERSON_TRANS_DETECTION_INFO) #define EVENT_IVS_HUMAN_ANIMAL_COEXISTENCE 0x00000411 // 人和动物检测事件(对应 DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO) #define EVENT_IVS_TANK_CAPACITY_DETECTION 0x00000412 // 贮柜储量检测事件(对应 DEV_EVENT_IVS_TANK_CAPACITY_DETECTION_INFO) #define EVENT_IVS_TANK_DUMPING_DETECTION 0x00000413 // 周转箱倒料不干净检测事件(对应 DEV_EVENT_IVS_TANK_DUMPING_DETECTION_INFO) #define EVENT_IVS_TANK_OVERFLOW_DETECTION 0x00000414 // 尘棒箱满溢检测事件(对应 DEV_EVENT_IVS_TANK_OVERFLOW_DETECTION_INFO) #define EVENT_IVS_DUSTBIN_RETREAT 0x00000416 // 垃圾桶撤离检测事件(对应 NET_DEV_EVENT_DUSTBIN_RETREAT_INFO) #define EVENT_IVS_SCRAPSTEEL_DETECT 0x00000417 // 废钢检测事件(对应 NET_DEV_EVENT_SCRAPSTEEL_DETECT_INFO) #define EVENT_IVS_SIGNAL_LIGHT_ON_DETECTION 0x00000418 // 信号灯同亮检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHT_ON_DETECTION_INFO) #define EVENT_IVS_SIGNAL_LIGHT_FLASHYELLOW_DETECTION 0x00000419 // 单色灯黄闪检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHT_FLASHYELLOW_DETECTION_INFO) #define EVENT_IVS_SIGNAL_LIGHT_NOBRIGHT_DETECTION 0x0000041A // 信号灯亮度不足检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHT_NOBRIGHT_DETECTION_INFO) #define EVENT_IVS_SIGNAL_LIGHT_BLOCKING_DETECTION 0x0000041B // 信号灯遮挡检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHT_BLOCKING_DETECTION_INFO) #define EVENT_IVS_SIGNAL_LIGHT_ALWAYSON_DETECTION 0x0000041C // 单色灯常亮检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHT_ALWAYSON_DETECTION_INFO) #define EVENT_IVS_LEDSCREEN_NOTLIGHTUP_DETECTION 0x0000041D // LED屏不亮检测事件(对应 NET_DEV_EVENT_LEDSCREEN_NOTLIGHTUP_DETECTION_INFO) #define EVENT_IVS_SIGNAL_LIGHTOFF_DETECTION 0x0000041E // 信号灯不亮检测事件(对应 NET_DEV_EVENT_SIGNAL_LIGHTOFF_DETECTION_INFO) #define EVENT_IVS_PIC_COMPARE_DETECTION 0x0000041F // 图片比对不上报警事件(对应 NET_DEV_EVENT_PIC_COMPARE_DETECTION_INFO) #define EVENT_IVS_CHANGE_DETECTION 0x00000420 // 差异检测事件(对应 NET_DEV_EVENT_CHANGE_DETECTION_INFO) #define EVENT_IVS_LINK_AGE_RADAR_ALARM 0x00000421 // 联动事件(作为细节事件、联动球机时发送)(对应 NET_DEV_EVENT_LINK_AGE_RADAR_ALARM_INFO) #define EVENT_IVS_VEHICLE_STATE 0x00000422 // 车辆状态事件(对应 NET_DEV_EVENT_VEHICLE_STATE_INFO) #define EVENT_IVS_PASS_WINDOW_DELIVERY 0x00000423 // 隔窗递物检测事件(对应 NET_DEV_EVENT_PASS_WINDOW_DELIVERY_INFO) #define EVENT_IVS_DOOR_STATE_DETECTION 0x00000424 // 开关门检测事件(对应 NET_DEV_EVENT_DOOR_STATE_DETECTION_INFO) #define EVENT_IVS_WASTE_MIXED_INVEST 0x00000425 // 垃圾混投事件(对应 NET_DEV_EVENT_WASTE_MIXED_INVEST_INFO) #define EVENT_IVS_UNBROKEN_TRASHBAG 0x00000426 // 垃圾袋未破袋检测事件(对应 NET_DEV_EVENT_UNBROKEN_TRASHBAG_INFO) #define EVENT_IVS_PERSON_CARRY_TRASHBAG 0x00000427 // 人员拎袋报警事件(对应 NET_DEV_EVENT_PERSON_CARRY_TRASHBAG_INFO) #define EVENT_IVS_UNATTENDED_DETENTION 0x00000428 // 无人值守检测事件(对应 NET_DEV_EVENT_UNATTENDED_DETENTION_INFO) #define EVENT_IVS_DROP_DETECTION 0x00000429 // 滴漏检测事件(对应 NET_DEV_EVENT_DROP_DETECTION_INFO) #define EVENT_IVS_TEMPERATURE_ALARM 0x0000042A // 温度报警事件(对应 NET_DEV_EVENT_TEMPERATURE_ALARM_INFO) #define EVENT_IVS_HUMIDITY_ALARM 0x0000042B // 湿度报警事件(对应 NET_DEV_EVENT_HUMIDITY_ALARM_INFO) #define EVENT_IVS_POWER_SWITCHER_ALARM 0x0000042C // 电量报警事件(对应 NET_DEV_EVENT_POWER_SWITCHER_ALARM_INFO) #define EVENT_IVS_GAS_TANK_DETECTION 0x0000042D // 煤气罐检测事件(对应 NET_DEV_EVENT_GAS_TANK_DETECTION_INFO) #define EVENT_IVS_TRAFFIC_OCCUPYING_THEPATH 0x0000042E // 占道事件(对应 NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO) #define EVENT_IVS_ILLEGAL_CARRIAGE 0x0000042F // 非法运输事件(对应 NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO) #define EVENT_IVS_SILICON_FIREPUTTER_DETECTION 0x00000430 // 刺火推杆检测事件(对应 NET_EVENT_SILICON_FIREPUTTER_DETECTION_INFO) #define EVENT_IVS_ALARM_METHANE_ALARM 0x00000431 // 甲烷报警事件(对应结构体 NET_DEV_EVENT_METHANE_ALARM_INFO) #define EVENT_IVS_ALARM_TORPEDO_DETECT 0x00000432 // 鱼雷罐报警事件(对应结构体 NET_DEV_EVENT_TORPEDO_DETECT_ALARM_INFO) #define EVENT_IVS_FINANCIAL_CABINET_ALARM_EVENT 0x00000433 // 金融业务库异常事件(对应 NET_DEV_EVENT_FINANCIAL_CABINET_ALARM_EVENT_INFO) #define EVENT_IVS_SCRAPSTEEL_DANGER_DETECT 0x00000434 // 废钢危险品事件(对应 NET_DEV_EVENT_SCRAPSTEEL_DANGER_DETECT_INFO) #define EVENT_IVS_TRAFFIC_RUNASTOP_SIGN 0x00000435 // 闯行停车标志事件(对应 NET_DEV_EVENT_TRAFFIC_RUNASTOP_SIGN_INFO) #define EVENT_IVS_IRCUT_MODESWITCH_ALARM_EVENT 0x00000436 // IRCUT模式切换事件(对应 NET_DEV_EVENT_IRCUT_MODESWITCH_ALARM_INFO) #define EVENT_IVS_TRAFFIC_VEHICLE_OVERLOAD 0x00000437 // 超员检测事件(对应 NET_DEV_EVENT_TRAFFIC_VEHICLE_OVERLOAD_INFO) #define EVENT_IVS_REMOTE_APPROVAL_ALARM 0x00000438 // 金融远程审批事件(对应 NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO) #define EVENT_IVS_ANTI_COUNTERFEIT 0x00000439 // 防造假检测事件(对应 NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO) #define EVENT_IVS_TRAFFIC_SPEED_DIFFPREWARNING 0x0000043A // 速度差预警事件(对应 NET_DEV_EVENT_TRAFFIC_SPEED_DIFFPREWARNING_INFO) #define EVENT_IVS_TRAFFIC_DRIVER_IDENTIFIED 0x0000043B // 驾驶员比对成功通知事件(对应 NET_DEV_EVENT_TRAFFIC_DRIVER_IDENTIFIED_INFO) #define EVENT_IVS_TRAFFIC_QUEUE_OVERFLOW 0x0000043C // 排队溢出事件(对应 NET_DEV_EVENT_TRAFFIC_QUEUE_OVERFLOW_INFO) #define EVENT_IVS_TRAFFIC_QUEUE_TIMEOUT 0x0000043D // 排队超限事件(对应 NET_DEV_EVENT_TRAFFIC_QUEUE_TIMEOUT_INFO) #define EVENT_IVS_RAILING_PASS_DETECTION 0x0000043E // 隔栏传物事件(对应结构体 NET_DEV_EVENT_RAILING_PASS_DETECTION_INFO) #define EVENT_IVS_MULTI_MAN_NUM_DETECTION 0x0000043F // 讯问会见室人数报警事件(对应 NET_DEV_EVENT_MULTI_MAN_NUM_DETECTION_INFO) #define EVENT_IVS_OBJECT_QUANTITY_DETECTION 0x00000440 // 目标类型和数量检测报警事件(对应 NET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO) #define EVENT_IVS_USERMANAGER_FOR_TWSDK 0x00000441 // 用户信息上报事件(对应 NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO) #define EVENT_IVS_DRIVE_ASSISTANT_ALARM 0x00000442 // 驱动辅助报警(对应 NET_DEV_EVENT_DRIVE_ASSISTANT_ALARM_INFO) #define EVENT_IVS_CROSSLINE_STAT 0x00000443 // 绊线计数事件(对应 NET_DEV_EVENT_CROSSLINE_STAT_INFO),(注意该事件暂时不支持单独使用,仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则)) #define EVENT_IVS_REGIONNUM_STAT 0x00000444 // 域内计数事件(对应 NET_DEV_EVENT_REGIONNUM_STAT_INFO),(注意该事件暂时不支持单独使用,仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则)) #define EVENT_IVS_FISH_STATE_DETECTION 0x00000445 // 鱼类状态检测报警(对应 NET_DEV_EVENT_FISH_STATE_DETECTION_INFO) #define EVENT_IVS_CONVEYOR_NTH_TO_STH_DETECTION 0x00000446 // 传送带载体从无到有检测报警事件(对应 NET_DEV_EVENT_CONVEYOR_NTH_TO_STH_DETECTION_INFO) #define EVENT_IVS_POSITION_SNAP 0x00000447 // 按位置抓图事件(对应 NET_DEV_EVENT_POSITION_SNAP_INFO) #define EVENT_IVS_DRIVER_MISMATCH_CERTIFICATE 0x00000448 // 司机人证不符事件(对应 NET_DEV_EVENT_DRIVER_MISMATCH_CERTIFICATE_INFO) #define EVENT_IVS_DRIVER_MISMATCH_VEHICLE 0x00000449 // 司机人车不符事件(对应 NET_DEV_EVENT_DRIVER_MISMATCH_VEHICLE_INFO) #define EVENT_IVS_CERTIFICATE_MISMATCH_VEHICLE 0x0000044A // 司机证车不符事件(对应 NET_DEV_EVENT_CERTIFICATE_MISMATCH_VEHICLE_INFO) #define EVENI_IVS_XRAY_DETECT_PACKAGE 0x0000044B // X光机检测包裹事件 (对应 NET_EVENT_XRAY_DETECT_PACKAGE_INFO) #define EVENT_IVS_CONVEYOR_STH_TO_NTH_DETECTION 0x0000044C // 传送带载体从有到无检测报警事件(对应 NET_DEV_EVENT_CONVEYOR_STH_TO_NTH_DETECTION_INFO) #define EVENT_IVS_CO_LOW_ALARM 0x0000044D // CO低浓度报警事件(对应 NET_DEV_EVENT_CO_LOW_ALARM_INFO) #define EVENT_IVS_CO_HIGH_ALARM 0x0000044E // CO高浓度报警事件(对应 NET_DEV_EVENT_CO_HIGH_ALARM_INFO) #define EVENT_IVS_TIMECHANGE_FOR_TWSDK 0x0000044F // 系统时间被修改报警事件(对应 NET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO) #define EVENT_IVS_CIGARETTE_CASE_DETECTION 0x00000450 // 烟盒检测事件(对应 NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO) #define EVENT_IVS_CONVEYOR_BELT_STATUS 0x00000451 // 传送带运动状态检测报警事件(对应 NET_DEV_EVENT_CONVEYOR_BELT_STATUS_INFO) #define EVENT_IVS_HOSPITAL_TALK_CONTROL 0x00000452 // 设备上报谈话事件(对应 NET_DEV_EVENT_HOSPITAL_TALK_CONTROL_INFO) #define EVENT_IVS_PASSENGER_FLOW_ALARM 0x00000453 // 校车上下客事件(对应 NET_DEV_EVENT_PASSENGER_FLOW_ALARM_INFO) #define EVENT_IVS_SCHOOL_BUS_SWIPE_CARD 0x00000454 // 学生刷卡事件(对应 NET_DEV_EVENT_SCHOOL_BUS_SWIPE_CARD_INFO) #define EVENT_IVS_COLD_SPOT_WARNING 0x00000455 // 冷点报警 (对应 NET_DEV_EVENT_COLD_SPOT_WARNING_INFO) #define EVENT_IVS_TRAFFIC_PLATE_ABNORMAL 0x00000456 // 车牌异常检测(对应 NET_DEV_EVENT_TRAFFIC_PLATE_ABNORMAL_INFO) #define EVENT_IVS_TRAFFIC_ACCELERATION_RAPID 0x00000457 // 急加速事件(对应 NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO) #define EVENT_IVS_TRAFFIC_TURN_SHARP 0x00000458 // 急转弯事件(对应 NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO) #define EVENT_IVS_GARBAGE_PLASTICBAG 0x00000459 // 打包垃圾检测事件(对应 NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO) #define EVENT_IVS_DOOR_STATUS_FOR_BOX 0x0000045A // 智能柜门状态上报 (对应 NET_DEV_EVENT_DOOR_STATUS_FOR_BOX_INFO) #define EVENT_IVS_COLLISION_CONFLICT 0x0000045B // 碰撞冲突事件(对应 NET_DEV_EVENT_COLLISION_CONFLICT_INFO) #define EVENT_IVS_PHOTOGRAPH_DETECTION 0x0000045C // 拍摄行为检测事件(对应 NET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO) #define EVENT_IVS_REFUELING_GUN_PERSON 0x0000045D // 提枪识别动作事件(对应 NET_DEV_EVENT_REFUELING_GUN_PERSON_INFO) // 消防类报警事件 #define EVENT_HY_FIRE_DETECTION 0x01000001 // 消防类火焰检测事件(对应DEV_EVENT_HY_FIRE_DETECTION_INFO) #define EVENT_HY_SMOG_DETECTION 0x01000002 // 消防类烟雾检测事件(对应DEV_EVENT_HY_SMOG_DETECTION_INFO) #define EVENT_HY_INFIRE_PASSAGE_DETECTION 0x01000003 // 消防类疏散通道阻塞事件(对应DEV_EVENT_HY_INFIRE_PASSAGE_DETECTION_INFO) #define EVENT_HY_OUTFIRE_PASSAGE_DETECTION 0x01000004 // 消防类消防车通道占用/消防登高面占用事件(对应DEV_EVENT_HY_OUTFIRE_PASSAGE_DETECTION_INFO) #define EVENT_HY_MAN_LEAVING_DETECTION 0x01000005 // 消防类消控室人员离岗事件(对应DEV_EVENT_HY_MAN_LEAVING_DETECTION_INFO) //设备存储点类型,设备的盘组概念 #define STOR_POINT_READ_WRITE 0x00001001 // 读写组,原型为"ReadWrite*","ReadWrite*",代表读写组, 中间的"*"可以为空,可以为一个数字 #define STOR_POINT_READ_ONLY 0x00001002 // 只读组 #define STOR_POINT_REDUNDANT 0x00001003 // 冗余组,和"ReadWirte"组一个冗余副本 #define STOR_POINT_BACKUP 0x00001004 // 备份组,数据写满后停止,不会循环覆盖 #define STOR_POINT_DRAW_FRAME 0x00001005 // 历史抽帧组,实时录像在指定时间后,抽帧并写入该组 #define STOR_POINT_NAS_FTP 0x00001006 // 远程网络存储组(协议类型FTP),可能会有多个 #define STOR_POINT_NAS_NFS 0x00001007 // 远程网络存储组(协议类型NFS),可能会有多个 #define STOR_POINT_NAS_SMB 0x00001008 // 远程网络存储组(协议类型SMB),可能会有多个 #define STOR_POINT_NAS_ISCSI 0x00001009 // 远程网络存储组(协议类型ISCSI),可能会有多个 #define STOR_POINT_NAS_CLOUD 0x0000100A // 远程网络存储组(协议类型Cloud),可能会有多个 //流量统计事件使用宏 #define FLOWSTAT_ADDR_NAME 16 //上下行地点名长 //针对接口CLIENT_OperateTrafficList各类字符串长度定义 #define DH_TARFFIC_NAME_LEN 16 #define DH_CREATE_TIME_LEN 32 #define DH_AUTHORITY_NUM 16 // 错误类型代号,对应CLIENT_GetLastError接口的返回值 #define _EC(x) (0x80000000|x) #define NET_NOERROR 0 // 没有错误 #define NET_ERROR -1 // 未知错误 #define NET_SYSTEM_ERROR _EC(1) // 系统出错 #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) // 网络SDK未经初始化 #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_GETCFG_AUTOMT _EC(48) // 获取自动维护配置失败 #define NET_ERROR_GETCFG_VIDEOMTRX _EC(49) // 获取视频矩阵配置失败 #define NET_ERROR_GETCFG_COVER _EC(50) // 获取区域遮挡配置失败 #define NET_ERROR_GETCFG_WATERMAKE _EC(51) // 获取图象水印配置失败 #define NET_ERROR_GETCFG_MULTICAST _EC(52) // 获取配置失败位置:组播端口按通道配置 #define NET_ERROR_SETCFG_GENERAL _EC(55) // 修改常规属性失败 #define NET_ERROR_SETCFG_NETCFG _EC(56) // 修改网络配置失败 #define NET_ERROR_SETCFG_CHANNAME _EC(57) // 修改通道名称失败 #define NET_ERROR_SETCFG_VIDEO _EC(58) // 修改视频属性失败 #define NET_ERROR_SETCFG_RECORD _EC(59) // 修改录象配置失败 #define NET_ERROR_SETCFG_485DECODER _EC(60) // 修改解码器属性失败 #define NET_ERROR_SETCFG_232COM _EC(61) // 修改232串口配置失败 #define NET_ERROR_SETCFG_ALARMIN _EC(62) // 修改外部输入报警配置失败 #define NET_ERROR_SETCFG_ALARMDET _EC(63) // 修改动态检测报警配置失败 #define NET_ERROR_SETCFG_SYSTIME _EC(64) // 修改设备时间失败 #define NET_ERROR_SETCFG_PREVIEW _EC(65) // 修改预览参数失败 #define NET_ERROR_SETCFG_AUTOMT _EC(66) // 修改自动维护配置失败 #define NET_ERROR_SETCFG_VIDEOMTRX _EC(67) // 修改视频矩阵配置失败 #define NET_ERROR_SETCFG_COVER _EC(68) // 修改区域遮挡配置失败 #define NET_ERROR_SETCFG_WATERMAKE _EC(69) // 修改图象水印配置失败 #define NET_ERROR_SETCFG_WLAN _EC(70) // 修改无线网络信息失败 #define NET_ERROR_SETCFG_WLANDEV _EC(71) // 选择无线网络设备失败 #define NET_ERROR_SETCFG_REGISTER _EC(72) // 修改主动注册参数配置失败 #define NET_ERROR_SETCFG_CAMERA _EC(73) // 修改摄像头属性配置失败 #define NET_ERROR_SETCFG_INFRARED _EC(74) // 修改红外报警配置失败 #define NET_ERROR_SETCFG_SOUNDALARM _EC(75) // 修改音频报警配置失败 #define NET_ERROR_SETCFG_STORAGE _EC(76) // 修改存储位置配置失败 #define NET_AUDIOENCODE_NOTINIT _EC(77) // 音频编码接口没有成功初始化 #define NET_DATA_TOOLONGH _EC(78) // 数据过长 #define NET_UNSUPPORTED _EC(79) // 设备不支持该操作 #define NET_DEVICE_BUSY _EC(80) // 设备资源不足 #define NET_SERVER_STARTED _EC(81) // 服务器已经启动 #define NET_SERVER_STOPPED _EC(82) // 服务器尚未成功启动 #define NET_LISTER_INCORRECT_SERIAL _EC(83) // 输入序列号有误 #define NET_QUERY_DISKINFO_FAILED _EC(84) // 获取硬盘信息失败 #define NET_ERROR_GETCFG_SESSION _EC(85) // 获取连接Session信息 #define NET_USER_FLASEPWD_TRYTIME _EC(86) // 输入密码错误超过限制次数 #define NET_LOGIN_ERROR_PASSWORD_EXPIRED _EC(99) // 密码过期 #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_LOGIN_ERROR_SUBCONNECT _EC(109) // 登录设备成功,但无法创建视频通道,请检查网络状况 #define NET_LOGIN_ERROR_MAXCONNECT _EC(110) // 超过最大连接数 #define NET_LOGIN_ERROR_PROTOCOL3_ONLY _EC(111) // 只支持3代协议 #define NET_LOGIN_ERROR_UKEY_LOST _EC(112) // 未插入U盾或U盾信息错误 #define NET_LOGIN_ERROR_NO_AUTHORIZED _EC(113) // 客户端IP地址没有登录权限 #define NET_LOGIN_ERROR_USER_OR_PASSOWRD _EC(117) // 账号或密码错误 #define NET_LOGIN_ERROR_DEVICE_NOT_INIT _EC(118) // 设备尚未初始化,不能登录,请先初始化设备 #define NET_LOGIN_ERROR_LIMITED _EC(119) // 登录受限,可能是IP受限、时间段受限、有效期受限 #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_RENDER_DISPLAYREGION_ERROR _EC(128) // Render库设置显示区域出错 #define NET_RENDER_GETOSDTIME_ERROR _EC(129) // Render库获取当前播放时间出错 #define NET_GROUP_EXIST _EC(140) // 组名已存在 #define NET_GROUP_NOEXIST _EC(141) // 组名不存在 #define NET_GROUP_RIGHTOVER _EC(142) // 组的权限超出权限列表范围 #define NET_GROUP_HAVEUSER _EC(143) // 组下有用户,不能删除 #define NET_GROUP_RIGHTUSE _EC(144) // 组的某个权限被用户使用,不能出除 #define NET_GROUP_SAMENAME _EC(145) // 新组名同已有组名重复 #define NET_USER_EXIST _EC(146) // 用户已存在 #define NET_USER_NOEXIST _EC(147) // 用户不存在 #define NET_USER_RIGHTOVER _EC(148) // 用户权限超出组权限 #define NET_USER_PWD _EC(149) // 保留帐号,不容许修改密码 #define NET_USER_FLASEPWD _EC(150) // 密码不正确 #define NET_USER_NOMATCHING _EC(151) // 密码不匹配 #define NET_USER_INUSE _EC(152) // 账号正在使用中 #define NET_ERROR_GETCFG_ETHERNET _EC(300) // 获取网卡配置失败 #define NET_ERROR_GETCFG_WLAN _EC(301) // 获取无线网络信息失败 #define NET_ERROR_GETCFG_WLANDEV _EC(302) // 获取无线网络设备失败 #define NET_ERROR_GETCFG_REGISTER _EC(303) // 获取主动注册参数失败 #define NET_ERROR_GETCFG_CAMERA _EC(304) // 获取摄像头属性失败 #define NET_ERROR_GETCFG_INFRARED _EC(305) // 获取红外报警配置失败 #define NET_ERROR_GETCFG_SOUNDALARM _EC(306) // 获取音频报警配置失败 #define NET_ERROR_GETCFG_STORAGE _EC(307) // 获取存储位置配置失败 #define NET_ERROR_GETCFG_MAIL _EC(308) // 获取邮件配置失败 #define NET_CONFIG_DEVBUSY _EC(309) // 暂时无法设置 #define NET_CONFIG_DATAILLEGAL _EC(310) // 配置数据不合法 #define NET_ERROR_GETCFG_DST _EC(311) // 获取夏令时配置失败 #define NET_ERROR_SETCFG_DST _EC(312) // 设置夏令时配置失败 #define NET_ERROR_GETCFG_VIDEO_OSD _EC(313) // 获取视频OSD叠加配置失败 #define NET_ERROR_SETCFG_VIDEO_OSD _EC(314) // 设置视频OSD叠加配置失败 #define NET_ERROR_GETCFG_GPRSCDMA _EC(315) // 获取CDMA\GPRS网络配置失败 #define NET_ERROR_SETCFG_GPRSCDMA _EC(316) // 设置CDMA\GPRS网络配置失败 #define NET_ERROR_GETCFG_IPFILTER _EC(317) // 获取IP过滤配置失败 #define NET_ERROR_SETCFG_IPFILTER _EC(318) // 设置IP过滤配置失败 #define NET_ERROR_GETCFG_TALKENCODE _EC(319) // 获取语音对讲编码配置失败 #define NET_ERROR_SETCFG_TALKENCODE _EC(320) // 设置语音对讲编码配置失败 #define NET_ERROR_GETCFG_RECORDLEN _EC(321) // 获取录像打包长度配置失败 #define NET_ERROR_SETCFG_RECORDLEN _EC(322) // 设置录像打包长度配置失败 #define NET_DONT_SUPPORT_SUBAREA _EC(323) // 不支持网络硬盘分区 #define NET_ERROR_GET_AUTOREGSERVER _EC(324) // 获取设备上主动注册服务器信息失败 #define NET_ERROR_CONTROL_AUTOREGISTER _EC(325) // 主动注册重定向注册错误 #define NET_ERROR_DISCONNECT_AUTOREGISTER _EC(326) // 断开主动注册服务器错误 #define NET_ERROR_GETCFG_MMS _EC(327) // 获取mms配置失败 #define NET_ERROR_SETCFG_MMS _EC(328) // 设置mms配置失败 #define NET_ERROR_GETCFG_SMSACTIVATION _EC(329) // 获取短信激活无线连接配置失败 #define NET_ERROR_SETCFG_SMSACTIVATION _EC(330) // 设置短信激活无线连接配置失败 #define NET_ERROR_GETCFG_DIALINACTIVATION _EC(331) // 获取拨号激活无线连接配置失败 #define NET_ERROR_SETCFG_DIALINACTIVATION _EC(332) // 设置拨号激活无线连接配置失败 #define NET_ERROR_GETCFG_VIDEOOUT _EC(333) // 查询视频输出参数配置失败 #define NET_ERROR_SETCFG_VIDEOOUT _EC(334) // 设置视频输出参数配置失败 #define NET_ERROR_GETCFG_OSDENABLE _EC(335) // 获取osd叠加使能配置失败 #define NET_ERROR_SETCFG_OSDENABLE _EC(336) // 设置osd叠加使能配置失败 #define NET_ERROR_SETCFG_ENCODERINFO _EC(337) // 设置数字通道前端编码接入配置失败 #define NET_ERROR_GETCFG_TVADJUST _EC(338) // 获取TV调节配置失败 #define NET_ERROR_SETCFG_TVADJUST _EC(339) // 设置TV调节配置失败 #define NET_ERROR_CONNECT_FAILED _EC(340) // 请求建立连接失败 #define NET_ERROR_SETCFG_BURNFILE _EC(341) // 请求刻录文件上传失败 #define NET_ERROR_SNIFFER_GETCFG _EC(342) // 获取抓包配置信息失败 #define NET_ERROR_SNIFFER_SETCFG _EC(343) // 设置抓包配置信息失败 #define NET_ERROR_DOWNLOADRATE_GETCFG _EC(344) // 查询下载限制信息失败 #define NET_ERROR_DOWNLOADRATE_SETCFG _EC(345) // 设置下载限制信息失败 #define NET_ERROR_SEARCH_TRANSCOM _EC(346) // 查询串口参数失败 #define NET_ERROR_GETCFG_POINT _EC(347) // 获取预制点信息错误 #define NET_ERROR_SETCFG_POINT _EC(348) // 设置预制点信息错误 #define NET_SDK_LOGOUT_ERROR _EC(349) // SDK没有正常登出设备 #define NET_ERROR_GET_VEHICLE_CFG _EC(350) // 获取车载配置失败 #define NET_ERROR_SET_VEHICLE_CFG _EC(351) // 设置车载配置失败 #define NET_ERROR_GET_ATM_OVERLAY_CFG _EC(352) // 获取atm叠加配置失败 #define NET_ERROR_SET_ATM_OVERLAY_CFG _EC(353) // 设置atm叠加配置失败 #define NET_ERROR_GET_ATM_OVERLAY_ABILITY _EC(354) // 获取atm叠加能力失败 #define NET_ERROR_GET_DECODER_TOUR_CFG _EC(355) // 获取解码器解码轮巡配置失败 #define NET_ERROR_SET_DECODER_TOUR_CFG _EC(356) // 设置解码器解码轮巡配置失败 #define NET_ERROR_CTRL_DECODER_TOUR _EC(357) // 控制解码器解码轮巡失败 #define NET_GROUP_OVERSUPPORTNUM _EC(358) // 超出设备支持最大用户组数目 #define NET_USER_OVERSUPPORTNUM _EC(359) // 超出设备支持最大用户数目 #define NET_ERROR_GET_SIP_CFG _EC(368) // 获取SIP配置失败 #define NET_ERROR_SET_SIP_CFG _EC(369) // 设置SIP配置失败 #define NET_ERROR_GET_SIP_ABILITY _EC(370) // 获取SIP能力失败 #define NET_ERROR_GET_WIFI_AP_CFG _EC(371) // 获取WIFI ap配置失败 #define NET_ERROR_SET_WIFI_AP_CFG _EC(372) // 设置WIFI ap配置失败 #define NET_ERROR_GET_DECODE_POLICY _EC(373) // 获取解码策略配置失败 #define NET_ERROR_SET_DECODE_POLICY _EC(374) // 设置解码策略配置失败 #define NET_ERROR_TALK_REJECT _EC(375) // 拒绝对讲 #define NET_ERROR_TALK_OPENED _EC(376) // 对讲被其他客户端打开 #define NET_ERROR_TALK_RESOURCE_CONFLICIT _EC(377) // 资源冲突 #define NET_ERROR_TALK_UNSUPPORTED_ENCODE _EC(378) // 不支持的语音编码格式 #define NET_ERROR_TALK_RIGHTLESS _EC(379) // 无权限 #define NET_ERROR_TALK_FAILED _EC(380) // 请求对讲失败 #define NET_ERROR_GET_MACHINE_CFG _EC(381) // 获取机器相关配置失败 #define NET_ERROR_SET_MACHINE_CFG _EC(382) // 设置机器相关配置失败 #define NET_ERROR_GET_DATA_FAILED _EC(383) // 设备无法获取当前请求数据 #define NET_ERROR_MAC_VALIDATE_FAILED _EC(384) // MAC地址验证失败 #define NET_ERROR_GET_INSTANCE _EC(385) // 获取服务器实例失败 #define NET_ERROR_JSON_REQUEST _EC(386) // 生成的json字符串错误 #define NET_ERROR_JSON_RESPONSE _EC(387) // 响应的json字符串错误 #define NET_ERROR_VERSION_HIGHER _EC(388) // 协议版本低于当前使用的版本 #define NET_SPARE_NO_CAPACITY _EC(389) // 热备操作失败, 容量不足 #define NET_ERROR_SOURCE_IN_USE _EC(390) // 显示源被其他输出占用 #define NET_ERROR_REAVE _EC(391) // 高级用户抢占低级用户资源 #define NET_ERROR_NETFORBID _EC(392) // 禁止入网 #define NET_ERROR_GETCFG_MACFILTER _EC(393) // 获取MAC过滤配置失败 #define NET_ERROR_SETCFG_MACFILTER _EC(394) // 设置MAC过滤配置失败 #define NET_ERROR_GETCFG_IPMACFILTER _EC(395) // 获取IP/MAC过滤配置失败 #define NET_ERROR_SETCFG_IPMACFILTER _EC(396) // 设置IP/MAC过滤配置失败 #define NET_ERROR_OPERATION_OVERTIME _EC(397) // 当前操作超时 #define NET_ERROR_SENIOR_VALIDATE_FAILED _EC(398) // 高级校验失败 #define NET_ERROR_DEVICE_ID_NOT_EXIST _EC(399) // 设备ID不存在 #define NET_ERROR_UNSUPPORTED _EC(400) // 不支持当前操作 #define NET_ERROR_PROXY_DLLLOAD _EC(401) // 代理库加载失败 #define NET_ERROR_PROXY_ILLEGAL_PARAM _EC(402) // 代理用户参数不合法 #define NET_ERROR_PROXY_INVALID_HANDLE _EC(403) // 代理句柄无效 #define NET_ERROR_PROXY_LOGIN_DEVICE_ERROR _EC(404) // 代理登入前端设备失败 #define NET_ERROR_PROXY_START_SERVER_ERROR _EC(405) // 启动代理服务失败 #define NET_ERROR_SPEAK_FAILED _EC(406) // 请求喊话失败 #define NET_ERROR_NOT_SUPPORT_F6 _EC(407) // 设备不支持此F6接口调用 #define NET_ERROR_CD_UNREADY _EC(408) // 光盘未就绪 #define NET_ERROR_DIR_NOT_EXIST _EC(409) // 目录不存在 #define NET_ERROR_UNSUPPORTED_SPLIT_MODE _EC(410) // 设备不支持的分割模式 #define NET_ERROR_OPEN_WND_PARAM _EC(411) // 开窗参数不合法 #define NET_ERROR_LIMITED_WND_COUNT _EC(412) // 开窗数量超过限制 #define NET_ERROR_UNMATCHED_REQUEST _EC(413) // 请求命令与当前模式不匹配 #define NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR _EC(414) // Render库启用高清图像内部调整策略出错 #define NET_ERROR_UPGRADE_FAILED _EC(415) // 设备升级失败 #define NET_ERROR_NO_TARGET_DEVICE _EC(416) // 找不到目标设备 #define NET_ERROR_NO_VERIFY_DEVICE _EC(417) // 找不到验证设备 #define NET_ERROR_CASCADE_RIGHTLESS _EC(418) // 无级联权限 #define NET_ERROR_LOW_PRIORITY _EC(419) // 低优先级 #define NET_ERROR_REMOTE_REQUEST_TIMEOUT _EC(420) // 远程设备请求超时 #define NET_ERROR_LIMITED_INPUT_SOURCE _EC(421) // 输入源超出最大路数限制 #define NET_ERROR_SET_LOG_PRINT_INFO _EC(422) // 设置日志打印失败 #define NET_ERROR_PARAM_DWSIZE_ERROR _EC(423) // 入参的dwsize字段出错 #define NET_ERROR_LIMITED_MONITORWALL_COUNT _EC(424) // 电视墙数量超过上限 #define NET_ERROR_PART_PROCESS_FAILED _EC(425) // 部分过程执行失败 #define NET_ERROR_TARGET_NOT_SUPPORT _EC(426) // 该功能不支持转发 #define NET_ERROR_VISITE_FILE _EC(510) // 访问文件失败 #define NET_ERROR_DEVICE_STATUS_BUSY _EC(511) // 设备忙 #define NET_USER_PWD_NOT_AUTHORIZED _EC(512) // 修改密码无权限 #define NET_USER_PWD_NOT_STRONG _EC(513) // 密码强度不够 #define NET_ERROR_NO_SUCH_CONFIG _EC(514) // 没有对应的配置 #define NET_ERROR_AUDIO_RECORD_FAILED _EC(515) // 录音失败 #define NET_ERROR_SEND_DATA_FAILED _EC(516) // 数据发送失败 #define NET_ERROR_OBSOLESCENT_INTERFACE _EC(517) // 废弃接口 #define NET_ERROR_INSUFFICIENT_INTERAL_BUF _EC(518) // 内部缓冲不足 #define NET_ERROR_NEED_ENCRYPTION_PASSWORD _EC(519) // 修改设备ip时,需要校验密码 #define NET_ERROR_NOSUPPORT_RECORD _EC(520) // 设备不支持此记录集 #define NET_ERROR_DEVICE_IN_UPGRADING _EC(521) // 设备正在升级 #define NET_ERROR_ANALYSE_TASK_NOT_EXIST _EC(522) // 智能分析任务不存在 #define NET_ERROR_ANALYSE_TASK_FULL _EC(523) // 智能分析任务已经满 #define NET_ERROR_DEVICE_RESTART _EC(524) // 设备重启 #define NET_ERROR_DEVICE_SHUTDOWN _EC(525) // 设备关机 #define NET_ERROR_FILE_SYSTEM_ERROR _EC(526) // 文件系统错误 #define NET_ERROR_HARDDISK_WRITE_ERROR _EC(527) // 硬盘写错误 #define NET_ERROR_HARDDISK_READ_ERROR _EC(528) // 硬盘读错误 #define NET_ERROR_NO_HARDDISK_RECORD_LOG _EC(529) // 无硬盘记录日志 #define NET_ERROR_NO_HARDDISK _EC(530) // 无工作盘(没有读写盘) #define NET_ERROR_HARDDISK_OTHER_ERRORS _EC(531) // 硬盘其他错误 #define NET_ERROR_HARDDISK_BADSECTORS_MINOR_ERRORS _EC(532) // 硬盘坏道轻微错误 #define NET_ERROR_HARDDISK_BADSECTORS_CRITICAL_ERRORS _EC(533) // 硬盘坏道严重错误 #define NET_ERROR_HARDDISK_PHYSICAL_BADSECTORS_SLIGHT _EC(534) // 硬盘物理坏道轻微 #define NET_ERROR_HARDDISK_PHYSICAL_BADSECTORS_SERIOUS _EC(535) // 硬盘物理坏道严重 #define NET_ERROR_NETWORK_DISCONNECTION_ALARM _EC(536) // 断网报警 #define NET_ERROR_NETWORK_DISCONNECTION _EC(537) // 网络断开 #define NET_ERROR_SET_SOURCE_EXCEED _EC(538) // 设置视频源数量超出限制 #define NET_ERROR_SIZE_EXCEED _EC(539) // 上传文件尺寸超出范围(uploadFile方法) #define NET_ERROR_LOGOPEN_DISABLE _EC(540) // 存在日志配置文件,以日志打印配置文件为准,日志打印接口失效 #define NET_ERROR_STREAM_PACKAGE_ERROR _EC(541) // 封装音频头失败 #define NET_ERROR_SERIALIZE_ERROR _EC(1010) // 数据序列化错误 #define NET_ERROR_DESERIALIZE_ERROR _EC(1011) // 数据反序列化错误 #define NET_ERROR_LOWRATEWPAN_ID_EXISTED _EC(1012) // 该无线ID已存在 #define NET_ERROR_LOWRATEWPAN_ID_LIMIT _EC(1013) // 无线ID数量已超限 #define NET_ERROR_LOWRATEWPAN_ID_ABNORMAL _EC(1014) // 无线异常添加 #define NET_ERROR_ENCRYPT _EC(1015) // 加密数据失败 #define NET_ERROR_PWD_ILLEGAL _EC(1016) // 新密码不合规范 #define NET_ERROR_DEVICE_ALREADY_INIT _EC(1017) // 设备已经初始化 #define NET_ERROR_SECURITY_CODE _EC(1018) // 安全码错误 #define NET_ERROR_SECURITY_CODE_TIMEOUT _EC(1019) // 安全码超出有效期 #define NET_ERROR_GET_PWD_SPECI _EC(1020) // 获取密码规范失败 #define NET_ERROR_NO_AUTHORITY_OF_OPERATION _EC(1021) // 无权限进行该操作 #define NET_ERROR_DECRYPT _EC(1022) // 解密数据失败 #define NET_ERROR_2D_CODE _EC(1023) // 2D code校验失败 #define NET_ERROR_INVALID_REQUEST _EC(1024) // 非法的RPC请求 #define NET_ERROR_PWD_RESET_DISABLE _EC(1025) // 密码重置功能已关闭 #define NET_ERROR_PLAY_PRIVATE_DATA _EC(1026) // 显示私有数据,比如规则框等失败 #define NET_ERROR_ROBOT_OPERATE_FAILED _EC(1027) // 机器人操作失败 #define NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT _EC(1028) // 图片大小超限 #define NET_ERROR_USERID_INVALID _EC(1029) // 用户ID不存在 #define NET_ERROR_EXTRACTFEATURE_FAILED _EC(1030) // 照片特征值提取失败 #define NET_ERROR_PHOTO_EXIST _EC(1031) // 照片已存在 #define NET_ERROR_PHOTO_OVERFLOW _EC(1032) // 照片数量超过上限 #define NET_ERROR_CHANNEL_ALREADY_OPENED _EC(1033) // 通道已经打开 #define NET_ERROR_CREATE_SOCKET _EC(1034) // 创建套接字失败 #define NET_ERROR_CHANNEL_NUM _EC(1035) // 通道号错误 #define NET_ERROR_PHOTO_FORMAT _EC(1036) // 图片格式错误 #define NET_ERROR_DIGITAL_CERTIFICATE_INTERNAL_ERROR _EC(1037) // 内部错误(比如:相关硬件问题,获取公钥失败,内部接口调用失败,写文件失败等等) #define NET_ERROR_DIGITAL_CERTIFICATE_GET_ID_FAILED _EC(1038) // 获取设备ID失败 #define NET_ERROR_DIGITAL_CERTIFICATE_IMPORT_ILLEGAL _EC(1039) // 证书文件非法(格式不支持或者不是证书文件) #define NET_ERROR_DIGITAL_CERTIFICATE_SN_ERROR _EC(1040) // 证书sn重复或错误或不规范 #define NET_ERROR_DIGITAL_CERTIFICATE_COMMON_NAME_ILLEGAL _EC(1041) // 证书commonName非法(本地设备证书与系统中的不匹配devid_cryptoID,或者对端的不符合规则(devid_crytoID)) #define NET_ERROR_DIGITAL_CERTIFICATE_NO_ROOT_CERT _EC(1042) // 根证书未导入或不存在 #define NET_ERROR_DIGITAL_CERTIFICATE_CERT_REVOKED _EC(1043) // 证书被吊销 #define NET_ERROR_DIGITAL_CERTIFICATE_CERT_INVALID _EC(1044) // 证书不可用或未生效或已过期 #define NET_ERROR_DIGITAL_CERTIFICATE_CERT_ERROR_SIGN _EC(1045) // 证书签名不匹配 #define NET_ERROR_DIGITAL_CERTIFICATE_COUNTS_UPPER_LIMIT _EC(1046) // 超出证书导入上限 #define NET_ERROR_DIGITAL_CERTIFICATE_CERT_NO_EXIST _EC(1047) // 证书文件不存在(导出证书或者获取对应证书的公钥) #define NET_ERROR_DEFULAT_SEARCH_PORT _EC(1048) // 默认搜索端口无法使用(5050,37810) #define NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_STOUP _EC(1049) // 批量添加目标停止 #define NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_ERROR _EC(1050) // 批量添加目标失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED _EC(1051) // 组ID超过最大值 #define NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_NOT_IN_REGISTER_GROUP _EC(1052) // 组ID不存在或为空 #define NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_NOT_FOUND _EC(1053) // 无图片数据 #define NET_ERROR_FACE_RECOGNITION_SERVER_GENERATE_GROUP_ID_FAILED _EC(1054) // 生成组ID超出范围 #define NET_ERROR_FACE_RECOGNITION_SERVER_SET_CONFIG_FAILED _EC(1055) // 设置配置失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_FILE_OPEN_FAILED _EC(1056) // 图片文件打开失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_FILE_READ_FAILED _EC(1057) // 图片文件读取失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_FILE_WRITE_FAILED _EC(1058) // 图片文件写入失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_DPI_ERROR _EC(1059) // 图片分辨率异常 #define NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_PX_ERROR _EC(1060) // 图片像素异常 #define NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_SIZE_ERROR _EC(1061) // 图片大小不对 #define NET_ERROR_FACE_RECOGNITION_SERVER_DATA_BASE_ERROR _EC(1062) // 数据库操作失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_FACE_MAX_NUM _EC(1063) // 人员数量超过限制 #define NET_ERROR_FACE_RECOGNITION_SERVER_BIRTH_DAY_FORMAT_ERROR _EC(1064) // 生日日期格式错误 #define NET_ERROR_FACE_RECOGNITION_SERVER_UID_ERROR _EC(1065) // 人员UID不存在或为空 #define NET_ERROR_FACE_RECOGNITION_SERVER_TOKEN_ERROR _EC(1066) // 令牌不存在或为空 #define NET_ERROR_FACE_RECOGNITION_SERVER_BEGIN_NUM_OVER_RUN _EC(1067) // 查询起始数大于总数 #define NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_NUM_ZERO _EC(1068) // 需手动建模人数为0 #define NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_INIT_ERROR _EC(1069) // 建模分析器启动失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_AUTO_ABSTRACT_STATE _EC(1070) // 设备正在自动建模 #define NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_STATE _EC(1071) // 设备正在手动建模 #define NET_ERROR_FACE_RECOGNITION_SERVER_IM_EX_STATE _EC(1072) // 设备正在导入导出 #define NET_ERROR_FACE_RECOGNITION_SERVER_PIC_WRITE_FAILED _EC(1073) // 图片写入失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_SPACE_EXCEED _EC(1074) // 超出目标库空间大小限制 #define NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_PIC_COUNT_EXCEED _EC(1075) // 超出目标库图片数量限制 #define NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_NOT_FOUND _EC(1076) // 目标库不存在 #define NET_ERROR_FACE_RECOGNITION_SERVER_FIND_RECORDS_ERROR _EC(1077) // 查询原目标库数据结果无效 #define NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_PERSON_ERROR _EC(1078) // 删除原目标库数据失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_GROUP_ERROR _EC(1079) // 删除目标库失败 #define NET_ERROR_FACE_RECOGNITION_SERVER_NAME_FORMAT_ERROR _EC(1080) // 命名格式错误 #define NET_ERROR_FACE_RECOGNITION_SERVER_FILEPATH_NOT_SET _EC(1081) // 图片保存路径未设置 #define NET_ERROR_DEVICE_PARSE_PROTOCOL _EC(1079) // 设备解析协议错误 #define NET_ERROR_DEVICE_INVALID_REQUEST _EC(1080) // 设备返回无效请求 #define NET_ERROR_DEVICE_INTERNAL_ERROR _EC(1081) // 设备内部错误 #define NET_ERROR_DEVICE_REQUEST_TIMEOUT _EC(1082) // 设备内部请求超时 #define NET_ERROR_DEVICE_KEEPALIVE_FAIL _EC(1083) // 设备保活失败 #define NET_ERROR_DEVICE_NETWORK_ERROR _EC(1084) // 设备网络错误 #define NET_ERROR_DEVICE_UNKNOWN_ERROR _EC(1085) // 设备内部未知错误 #define NET_ERROR_DEVICE_COM_INTERFACE_NOTFOUND _EC(1086) // 设备组件接口没有找到 #define NET_ERROR_DEVICE_COM_IMPLEMENT_NOTFOUND _EC(1087) // 设备组件实现没有找到 #define NET_ERROR_DEVICE_COM_NOTFOUND _EC(1088) // 设备接入组件没有找到 #define NET_ERROR_DEVICE_COM_INSTANCE_NOTEXIST _EC(1089) // 设备接入组件实例不存在 #define NET_ERROR_DEVICE_CREATE_COM_FAIL _EC(1090) // 设备组件工厂创建组件失败 #define NET_ERROR_DEVICE_GET_COM_FAIL _EC(1091) // 设备组件工厂获取组件实例失败 #define NET_ERROR_DEVICE_BAD_REQUEST _EC(1092) // 设备业务请求不被接受 #define NET_ERROR_DEVICE_REQUEST_IN_PROGRESS _EC(1093) // 设备已经在处理请求,不接受重复请求 #define NET_ERROR_DEVICE_LIMITED_RESOURCE _EC(1094) // 设备资源不足 #define NET_ERROR_DEVICE_BUSINESS_TIMEOUT _EC(1095) // 设备业务超时 #define NET_ERROR_DEVICE_TOO_MANY_REQUESTS _EC(1096) // 设备接收过多请求 #define NET_ERROR_DEVICE_NOT_ALREADY _EC(1097) // 设备未准备就绪,不接受业务请求 #define NET_ERROR_DEVICE_SEARCHRECORD_TIMEOUT _EC(1098) // 设备录像查询超时 #define NET_ERROR_DEVICE_SEARCHTIME_INVALID _EC(1099) // 设备录像查询时间无效 #define NET_ERROR_DEVICE_SSID_INVALID _EC(1100) // 设备校验SSID无效 #define NET_ERROR_DEVICE_CHANNEL_STREAMTYPE_ERROR _EC(1101) // 设备校验通道号或码流类型无效 #define NET_ERROR_DEVICE_STREAM_PACKINGFORMAT_UNSUPPORT _EC(1102) // 设备不支持该码流打包格式 #define NET_ERROR_DEVICE_AUDIO_ENCODINGFORMAT_UNSUPPORT _EC(1103) // 设备不支持该语音编码格式 #define NET_ERROR_SECURITY_ERROR_SUPPORT_GUI _EC(1104) // 校验请求安全码失败,可使用本地GUI方式重置密码 #define NET_ERROR_SECURITY_ERROR_SUPPORT_MULT _EC(1105) // 校验请求安全码失败,可使用APP、configtool工具重置密码 #define NET_ERROR_SECURITY_ERROR_SUPPORT_UNIQUE _EC(1106) // 校验请求安全码失败,可登陆Web页面重置密码 #define NET_ERROR_STREAMCONVERTOR_DEFECT _EC(1107) // 转码库缺失 #define NET_ERROR_SECURITY_GENERATE_SAFE_CODE _EC(1108) // 调用加密库产生安全码失败 #define NET_ERROR_SECURITY_GET_CONTACT _EC(1109) // 获取联系方式失败 #define NET_ERROR_SECURITY_GET_QRCODE _EC(1110) // 获取重置密码的二维码信息失败 #define NET_ERROR_SECURITY_CANNOT_RESET _EC(1111) // 设备未初始化,无法重置 #define NET_ERROR_SECURITY_NOT_SUPPORT_CONTACT_MODE _EC(1112) // 不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱 #define NET_ERROR_SECURITY_RESPONSE_TIMEOUT _EC(1113) // 对端响应超时 #define NET_ERROR_SECURITY_AUTHCODE_FORBIDDEN _EC(1114) // 尝试校验AuthCode次数过多,禁止校验 #define NET_ERROR_TRANCODE_LOGIN_REMOTE_DEV _EC(1115) // (虚拟转码)登陆远程设备失败 #define NET_ERROR_TRANCODE_NOFREE_CHANNEL _EC(1116) // (虚拟转码)没有可用的通道资源 #define NET_ERROR_VK_INFO_DECRYPT_FAILED _EC(1117) // VK信息解密失败 #define NET_ERROR_VK_INFO_DESERIALIZE_FAILED _EC(1118) // VK信息解析失败 #define NET_ERROR_GDPR_ABILITY_NOT_ENABLE _EC(1119) // SDK GDPR功能未使能 /*门禁快速导入及复核错误码 start*/ #define NET_ERROR_FAST_CHECK_NO_AUTH _EC(1120) // 门禁快速复核:无权限 #define NET_ERROR_FAST_CHECK_NO_FILE _EC(1121) // 门禁快速复核:文件不存在 #define NET_ERROR_FAST_CHECK_FILE_FAIL _EC(1122) // 门禁快速复核:文件准备失败 #define NET_ERROR_FAST_CHECK_BUSY _EC(1123) // 门禁快速复核:系统忙 #define NET_ERROR_FAST_CHECK_NO_PASSWORD _EC(1124) // 门禁快速复核:未定义密码, 不允许导出 #define NET_ERROR_IMPORT_ACCESS_SEND_FAILD _EC(1125) // 门禁快速导入:发送门禁数据失败 #define NET_ERROR_IMPORT_ACCESS_BUSY _EC(1126) // 门禁快速导入:系统忙, 已经有导入任务 #define NET_ERROR_IMPORT_ACCESS_DATAERROR _EC(1127) // 门禁快速导入:数据包检验失败 #define NET_ERROR_IMPORT_ACCESS_DATAINVALID _EC(1128) // 门禁快速导入:数据包非法 #define NET_ERROR_IMPORT_ACCESS_SYNC_FALID _EC(1129) // 门禁快速导入:同步失败,数据库无法生成 #define NET_ERROR_IMPORT_ACCESS_DBFULL _EC(1130) // 门禁快速导入:数据库已满, 无法导入 #define NET_ERROR_IMPORT_ACCESS_SDFULL _EC(1131) // 门禁快速导入:存储空间已满, 无法导入 #define NET_ERROR_IMPORT_ACCESS_CIPHER_ERROR _EC(1132) // 门禁快速导入:导入压缩包密码不对 /*门禁快速导入及复核错误码 end*/ #define NET_ERROR_INVALID_PARAM _EC(1133) // 参数无效 #define NET_ERROR_INVALID_PASSWORD _EC(1134) // 密码无效 #define NET_ERROR_INVALID_FINGERPRINT _EC(1135) // 信息无效 #define NET_ERROR_INVALID_FACE _EC(1136) // 目标无效 #define NET_ERROR_INVALID_CARD _EC(1137) // 卡无效 #define NET_ERROR_INVALID_USER _EC(1138) // 用户无效 #define NET_ERROR_GET_SUBSERVICE _EC(1139) // 能力集子服务获取失败 #define NET_ERROR_GET_METHOD _EC(1140) // 获取组件的方法集失败 #define NET_ERROR_GET_SUBCAPS _EC(1141) // 获取资源实体能力集失败 #define NET_ERROR_UPTO_INSERT_LIMIT _EC(1142) // 已达插入上限 #define NET_ERROR_UPTO_MAX_INSERT_RATE _EC(1143) // 已达最大插入速度 #define NET_ERROR_ERASE_FINGERPRINT _EC(1144) // 清除信息数据失败 #define NET_ERROR_ERASE_FACE _EC(1145) // 清除目标数据失败 #define NET_ERROR_ERASE_CARD _EC(1146) // 清除卡数据失败 #define NET_ERROR_NO_RECORD _EC(1147) // 没有记录 #define NET_ERROR_NOMORE_RECORDS _EC(1148) // 查找到最后,没有更多记录 #define NET_ERROR_RECORD_ALREADY_EXISTS _EC(1149) // 下发卡或信息时,数据重复 #define NET_ERROR_EXCEED_MAX_FINGERPRINT_PERUSER _EC(1150) // 超过个人最大信息记录数 #define NET_ERROR_EXCEED_MAX_CARD_PERUSER _EC(1151) // 超过个人最大卡片记录数 #define NET_ERROR_EXCEED_ADMINISTRATOR_LIMIT _EC(1152) // 超过门禁管理员个数限制 #define NET_LOGIN_ERROR_DEVICE_NOT_SUPPORT_HIGHLEVEL_SECURITY_LOGIN _EC(1153) // 设备不支持高安全等级登录 #define NET_LOGIN_ERROR_DEVICE_ONLY_SUPPORT_HIGHLEVEL_SECURITY_LOGIN _EC(1154) // 设备只支持高安全等级登录 #define NET_ERROR_VIDEO_CHANNEL_OFFLINE _EC(1155) // 表示此视频通道处于离线,拉流失败 #define NET_ERROR_USERID_FORMAT_INCORRECT _EC(1156) // 用户编号不规范 #define NET_ERROR_CANNOT_FIND_CHANNEL_RELATE_TO_SN _EC(1157) // 找不到该SN对应的通道 #define NET_ERROR_TASK_QUEUE_OF_CHANNEL_IS_FULL _EC(1158) // 该通道的任务队列满 #define NET_ERROR_APPLY_USER_INFO_BLOCK_FAIL _EC(1159) // 申请不到新的用户信息(权限)块 #define NET_ERROR_EXCEED_MAX_PASSWD_PERUSER _EC(1160) // 用户密码数量超过限制 #define NET_ERROR_PARSE_PROTOCOL _EC(1161) // 设备内部异常引起协议解析错误 #define NET_ERROR_CARD_NUM_EXIST _EC(1162) // 卡号已存在 #define NET_ERROR_FINGERPRINT_EXIST _EC(1163) // 信息已存在 #define NET_ERROR_OPEN_PLAYGROUP_FAIL _EC(1164) // 打开播放组失败 #define NET_ERROR_ALREADY_IN_PLAYGROUP _EC(1165) // 已位于播放组中 #define NET_ERROR_QUERY_PLAYGROUP_TIME_FAIL _EC(1166) // 查询播放组时间失败 #define NET_ERROR_SET_PLAYGROUP_BASECHANNEL_FAIL _EC(1167) // 设置播放组基准通道失败 #define NET_ERROR_SET_PLAYGROUP_DIRECTION_FAIL _EC(1168) // 设置播放组方向失败 #define NET_ERROR_SET_PLAYGROUP_SPEED_FAIL _EC(1169) // 设置播放组速度失败 #define NET_ERROR_ADD_PLAYGROUP_FAIL _EC(1170) // 加入播放组失败 #define NET_ERROR_EXPORT_AOL_LOGFILE_NO_AUTH _EC(1171) // 导出AOL日志:无权限 #define NET_ERROR_EXPORT_AOL_LOGFILE_NO_FILE _EC(1172) // 导出AOL日志:文件不存在 #define NET_ERROR_EXPORT_AOL_LOGFILE_FILE_FAIL _EC(1173) // 导出AOL日志:文件准备失败 #define NET_ERROR_EXPORT_AOL_LOGFILE_BUSY _EC(1174) // 导出AOL日志:系统忙 // 设备上APP安装相关错误码 #define NET_ERROR_EMPTY_LICENSE _EC(1175) // License为空 #define NET_ERROR_UNSUPPORTED_MODE _EC(1176) // 不支持该模式 #define NET_ERROR_URL_APP_NOT_MATCH _EC(1177) // URL与APP不匹配 #define NET_ERROR_READ_INFO_FAILED _EC(1178) // 读取信息失败 #define NET_ERROR_WRITE_FAILED _EC(1179) // 写入失败 #define NET_ERROR_NO_SUCH_APP _EC(1180) // 未找到APP #define NET_ERROR_VERIFIF_FAILED _EC(1181) // 校验失败 #define NET_ERROR_LICENSE_OUT_DATE _EC(1182) // License已过期 #define NET_ERROR_UPGRADE_PROGRAM_TOO_OLD _EC(1183) // 升级程序版本过低 #define NET_ERROR_SECURE_TRANSMIT_BEEN_CUT _EC(1184) // 加密传输被裁剪 #define NET_ERROR_DEVICE_NOT_SUPPORT_SECURE_TRANSMIT _EC(1185) // 设备不支持安全传输 #define NET_ERROR_EXTRA_STREAM_LOGIN_FAIL_CAUSE_BY_MAIN_STREAM _EC(1186) // 主码流成功的情况下,辅码流登录失败 #define NET_ERROR_EXTRA_STREAM_CLOSED_BY_REMOTE_DEVICE _EC(1187) // 辅码流被前端关闭 /*目标库导入导出错误码 start*/ #define NET_ERROR_IMPORT_FACEDB_SEND_FAILD _EC(1188) // 目标库导入:发送目标库数据失败 #define NET_ERROR_IMPORT_FACEDB_BUSY _EC(1189) // 目标库导入:系统忙, 已经有导入任务 #define NET_ERROR_IMPORT_FACEDB_DATAERROR _EC(1190) // 目标库导入:数据包检验失败 #define NET_ERROR_IMPORT_FACEDB_DATAINVALID _EC(1191) // 目标库导入:数据包非法 #define NET_ERROR_IMPORT_FACEDB_UPGRADE_FAILD _EC(1192) // 目标库导入:上传失败 #define NET_ERROR_IMPORT_FACEDB_NO_AUTHORITY _EC(1193) // 目标库导入:用户无权限 #define NET_ERROR_IMPORT_FACEDB_ABNORMAL_FILE _EC(1194) // 目标库导入:文件格式异常 #define NET_ERROR_IMPORT_FACEDB_SYNC_FALID _EC(1195) // 目标库导入:同步失败,数据库无法生成 #define NET_ERROR_IMPORT_FACEDB_DBFULL _EC(1196) // 目标库导入:数据库已满, 无法导入 #define NET_ERROR_IMPORT_FACEDB_SDFULL _EC(1197) // 目标库导入:存储空间已满, 无法导入 #define NET_ERROR_IMPORT_FACEDB_CIPHER_ERROR _EC(1198) // 目标库导入:导入压缩包密码不对 #define NET_ERROR_EXPORT_FACEDB_NO_AUTH _EC(1199) // 目标库导出:无权限 #define NET_ERROR_EXPORT_FACEDB_NO_FILE _EC(1200) // 目标库导出:文件不存在 #define NET_ERROR_EXPORT_FACEDB_FILE_FAIL _EC(1201) // 目标库导出:文件准备失败 #define NET_ERROR_EXPORT_FACEDB_BUSY _EC(1202) // 目标库导出:系统忙 #define NET_ERROR_EXPORT_FACEDB_NO_PASSWORD _EC(1203) // 目标库导出:未定义密码, 不允许导出 /*目标库导入导出错误码 end*/ #define NET_ERROR_REQUESTED_TOO_MUCH_DATA _EC(1204) // 获取了过多的数据,设备无法处理 #define NET_ERROR_BATCH_PROCESS_ERROR _EC(1205) // 在业务批量执行过程中有错误发生 #define NET_ERROR_OPERATION_CANCELLED _EC(1206) // 某种原因,业务被取消执行 #define NET_ERROR_DEVICE_INVALID _EC(1207) // 设备型号不对,无法进一步处理 #define NET_ERROR_DEVICE_UNAVAILABLE _EC(1208) // 无法获取到设备状态信息 #define NET_ERROR_FINGERPRINT_DOWNLOAD_FAIL _EC(1209) // 信息通过URL下载方式下载失败 #define NET_ERROR_ACCOUNT_IN_USE _EC(1210) // 账户登录中 #define NET_ERROR_IRIS_INFO_NOT_EXISTED _EC(1211) // 更新用户眼睛信息时,用户不存在目标 #define NET_ERROR_INVALID_IRIS_DATA _EC(1212) // 下发的眼睛数据格式、特征值大小错误 #define NET_ERROR_IRIS_ALREADY_EXIST _EC(1213) // 眼睛信息已存在 #define NET_ERROR_ERASE_IRIS_FAILED _EC(1214) // 眼睛信息删除失败 #define NET_ERROR_EXCEED_MAX_IRIS_GROUP_COUNT_PER_USER _EC(1215) // 超出个人所支持的眼睛信息组数量,两个眼睛(左右眼)为一组 #define NET_ERROR_EXCEED_MAX_IRIS_COUNT_PER_GROUP _EC(1216) // 超出个人单组眼睛信息所能记录的最大数量 /* 目标图片操作错误码 范围 _EC(1300) ~ _EC(1400) */ #define NET_ERROR_FACEMANAGER_NO_FACE_DETECTED _EC(1300) // 图片中检测到0个目标 #define NET_ERROR_FACEMANAGER_MULTI_FACE_DETECTED _EC(1301) // 图片中检测到多个目标,无法返回特征 #define NET_ERROR_FACEMANAGER_PICTURE_DECODING_ERROR _EC(1302) // 图片解码错误 #define NET_ERROR_FACEMANAGER_LOW_PICTURE_QUALITY _EC(1303) // 图片质量太低 #define NET_ERROR_FACEMANAGER_NOT_RECOMMENDED _EC(1304) // 结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别 #define NET_ERROR_FACEMANAGER_FACE_FEATURE_ALREADY_EXIST _EC(1305) // 目标特征已存在 #define NET_ERROR_FACEMANAGER_FACE_ANGLE_OVER_THRESHOLDS _EC(1307) // 目标角度超过配置阈值 #define NET_ERROR_FACEMANAGER_FACE_RADIO_EXCEEDS_RANGE _EC(1308) // 目标占比超出范围,算法建议占比:不要超过2/3;不要小于1/3 #define NET_ERROR_FACEMANAGER_FACE_OVER_EXPOSED _EC(1309) // 目标过爆 #define NET_ERROR_FACEMANAGER_FACE_UNDER_EXPOSED _EC(1310) // 目标欠爆 #define NET_ERROR_FACEMANAGER_BRIGHTNESS_IMBALANCE _EC(1311) // 目标亮度不均衡 ,用于判断阴阳脸 #define NET_ERROR_FACEMANAGER_FACE_LOWER_CONFIDENCE _EC(1312) // 目标的置信度低 #define NET_ERROR_FACEMANAGER_FACE_LOW_ALIGN _EC(1313) // 目标对齐分数低 #define NET_ERROR_FACEMANAGER_FRAGMENTARY_FACE_DETECTED _EC(1314) // 目标存在遮挡、残缺不全 #define NET_ERROR_FACEMANAGER_PUPIL_DISTANCE_NOT_ENOUGH _EC(1315) // 目标瞳距小于阈值 #define NET_ERROR_FACEMANAGER_FACE_DATA_DOWNLOAD_FAILED _EC(1316) // 目标数据下载失败 // 平台下发采集指令错误码 #define NET_ERROR_CITIZENMANAGER_ERROR_WORKINGMODE_ERROR _EC(1317) // 工作模式错误 #define NET_ERROR_CITIZENMANAGER_ERROR_CAPTURE_BUSY _EC(1318) // 采集繁忙中 #define NET_ERROR_CITIZENMANAGER_ERROR_CAPTURE_TYPE_ERROR _EC(1319) // 不支持该采集方式 #define NET_ERROR_NORMAL_USER_NOTSUPPORT _EC(1320) // 普通用户不支持下发 // 制冷机 #define NET_ERROR_THERMOGRAPHY_REF_SENSOR_OPEN_INVALID _EC(1321) // 制冷机强制开机无效,当天开启次数已用完 #define NET_ERROR_THERMOGRAPHY_REF_DELAY_SHUT_DOWN_INVALID _EC(1322) // 制冷机延迟关闭无效,当天已达到延迟次数 #define NET_ERROR_CITIZENID_EXIST _EC(1323) // 证件号已存在 #define NET_ERROR_FACEMANAGER_FACE_FFE_FAILED _EC(1324) // 目标可检测,但特征值提取失败(算法场景) #define NET_ERROR_FACEMANAGER_PHOTO_FEATURE_FAILED_FOR_FA _EC(1325) // 目标照片因口罩,帽子,墨镜等目标属性不符合而提取特征值错误 #define NET_ERROR_FACEMANAGER_FACE_DATA_PHOTO_INCOMPLETE _EC(1326) // 目标照片不完整 #define NET_ERROR_DATABASE_ERROR_INSERT_OVERFLOW _EC(1327) // 数据库插入越上限 /*工装检测合规库错误码 start*/ #define NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUPID_EXCEED _EC(1328) // 工装检测合规库:组ID超过最大值 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACT_INIT_ERROR _EC(1329) // 工装检测合规库:建模分析器启动失败 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUPID_NOT_FOUND _EC(1330) // 工装检测合规库:组ID不存在或为空 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_DATABASE_ERROR _EC(1331) // 工装检测合规库:数据库操作失败(指的是database操作) #define NET_ERROR_WORKSUIT_COMPARE_SERVER_TOKEN_ERROR _EC(1332) // 工装检测合规库:令牌不存在或为空 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_BEGINNUM_OVERRUN _EC(1333) // 工装检测合规库:查询起始数大于总数 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACT_STATE _EC(1334) // 工装检测合规库:设备正在建模 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_BIGPIC_MAXNUM _EC(1335) // 工装检测合规库:单次导入全景图数量超过限制 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_OBJECT_MAXNUM _EC(1336) // 工装检测合规库:工装数量超过限制 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUP_SPACE_EXCEED _EC(1337) // 工装检测合规库:超出合规库空间大小限制 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACTNUM_ZERO _EC(1338) // 工装检测合规库:需手动建模数量为0 #define NET_ERROR_WORKSUIT_COMPARE_SERVER_INVALID_PARAM _EC(1339) // 工装检测合规库:无效参数 /*工装检测合规库错误码 end*/ #define NET_ERROR_CARD_NOT_EXIST _EC(1340) // 卡号不存在 #define NET_ERROR_TEMPORARY_OUTDATED _EC(1341) // 临时库过时 /*设备分压业务特有错误码start, 范围_EC(1401) ~ _EC(1500)*/ #define NET_SUBBIZ_INVALID_SOCKET _EC(1401) // 无效的连接 #define NET_SUBBIZ_PAUSE_ERROR _EC(1402) // 暂停媒体文件下载失败 #define NET_SUBBIZ_GET_PORT_ERROR _EC(1403) // 获取私有隧道向上侦听端口失败 /*设备分压业务特有错误码End*/ /************************************************************************ ** 枚举定义 ***********************************************************************/ ///@brief 获取网卡信息类型 CLIENT_QueryNetStat 接口使用 typedef enum tagEM_NET_QUERY_TYPE { NET_APP_DATA_STAT , // 获取协议栈统计数据,(输入结构体NET_IN_NETAPP_NET_DATA_STAT,输出结构体NET_OUT_NETAPP_NET_DATA_STAT) NET_APP_LINK_STAT , // 获取物理链路状态,(输入结构体NET_IN_NETAPP_LINK_STATUS,输出结构体NET_OUT_NETAPP_LINK_STATUS) }EM_NET_QUERY_TYPE; ///@brief 抓图类型 CLIENT_CapturePictureEx 接口使用 typedef enum tagNET_CAPTURE_FORMATS { NET_CAPTURE_BMP, // BMP NET_CAPTURE_JPEG, // 100%质量的JPEG NET_CAPTURE_JPEG_70, // 70%质量的JPEG NET_CAPTURE_JPEG_50, // 50%质量的JPEG NET_CAPTURE_JPEG_30, // 30%质量的JPEG NET_CAPTURE_JPEG_10 // 10%质量的JPEG }NET_CAPTURE_FORMATS; ///@brief 设备类型 typedef enum tagNET_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, // LB系列录像机 NET_DVR_MEPG4_ST2, // GB系列录像机 NET_DVR_MEPG4_SH2, // HB系列录像机 10 NET_DVR_MPEG4_GBE, // GBE系列录像机 NET_DVR_MPEG4_NVSII, // II代网络视频服务器 NET_DVR_STD_NEW, // 新标准配置协议 NET_DVR_DDNS, // DDNS服务器 NET_DVR_ATM, // ATM机 NET_NB_SERIAL, // 二代非实时NB系列机器 NET_LN_SERIAL, // LN系列产品 NET_BAV_SERIAL, // BAV系列产品 NET_SDIP_SERIAL, // SDIP系列产品 NET_IPC_SERIAL, // IPC系列产品 20 NET_NVS_B, // NVS B系列 NET_NVS_C, // NVS H系列 NET_NVS_S, // NVS S系列 NET_NVS_E, // NVS E系列 NET_DVR_NEW_PROTOCOL, // 从QueryDevState中查询设备类型,以字符串格式 NET_NVD_SERIAL, // 解码器 NET_DVR_N5, // N5 NET_DVR_MIX_DVR, // 混合DVR NET_SVR_SERIAL, // SVR系列 NET_SVR_BS, // SVR-BS 30 NET_NVR_SERIAL, // NVR系列 NET_DVR_N51, // N51 NET_ITSE_SERIAL, // ITSE 智能分析盒 NET_ITC_SERIAL, // 智能交通像机设备 NET_HWS_SERIAL, // 雷达测速仪HWS NET_PVR_SERIAL, // 便携式音视频录像机 NET_IVS_SERIAL, // IVS(智能视频服务器系列) NET_IVS_B, // 通用智能视频侦测服务器 NET_IVS_F, // 目标识别服务器 NET_IVS_V, // 视频质量诊断服务器 40 NET_MATRIX_SERIAL, // 矩阵 NET_DVR_N52, // N52 NET_DVR_N56, // N56 NET_ESS_SERIAL, // ESS NET_IVS_PC, // 人数统计服务器 NET_PC_NVR, // pc-nvr NET_DSCON, // 大屏控制器 NET_EVS, // 网络视频存储服务器 NET_EIVS, // 嵌入式智能分析视频系统 NET_DVR_N6, // DVR-N6 50 NET_UDS, // 万能解码器 NET_AF6016, // 银行报警主机 NET_AS5008, // 视频网络报警主机 NET_AH2008, // 网络报警主机 NET_A_SERIAL, // 报警主机系列 NET_BSC_SERIAL, // 门禁系列产品 NET_NVS_SERIAL, // NVS系列产品 NET_VTO_SERIAL, // VTO系列产品 NET_VTNC_SERIAL, // VTNC系列产品 NET_TPC_SERIAL, // TPC系列产品, 即热成像设备 60 NET_ASM_SERIAL, // 无线中继设备 NET_VTS_SERIAL, // 管理机 NET_ARC2016C, // 报警主机ARC2016C NET_ASA, // 考勤机 NET_VTT_SERIAL, // 行业对讲终端 NET_VTA_SERIAL, // 报警柱 NET_VTNS_SERIAL, // SIP服务器 NET_VTH_SERIAL, // 室内机 NET_IVSS, // IVSS产品 NET_ASG, // 目标道闸 NET_RADAR, // 雷达产品 NET_RADAR_PTZ, // 雷达系统 NET_RADAR_CAM, // 摄像雷达 NET_ASE, // 梯控设备 NET_XRAY_SERVER, // 安检服务器 NET_XRAY_DEVICE, // 安检一体机 NET_SECURITY_GATE, // 安检门 NET_TS, // 以太网交换机 NET_GP, // 工牌相机 NET_EAS, //商超防盗天线 }NET_DEVICE_TYPE ; ///@brief 语言种类 typedef enum __LANGUAGE_TYPE { DH_LANGUAGE_ENGLISH, // 英文 DH_LANGUAGE_CHINESE_SIMPLIFIED, // 简体中文 DH_LANGUAGE_CHINESE_TRADITIONAL, // 繁体中文 DH_LANGUAGE_ITALIAN, // 意大利文 DH_LANGUAGE_SPANISH, // 西班牙文 DH_LANGUAGE_JAPANESE, // 日文版 DH_LANGUAGE_RUSSIAN, // 俄文版 DH_LANGUAGE_FRENCH, // 法文版 DH_LANGUAGE_GERMAN, // 德文版 DH_LANGUAGE_PORTUGUESE, // 葡萄牙语 DH_LANGUAGE_TURKEY, // 土尔其语 DH_LANGUAGE_POLISH, // 波兰语 DH_LANGUAGE_ROMANIAN, // 罗马尼亚 DH_LANGUAGE_HUNGARIAN, // 匈牙利语 DH_LANGUAGE_FINNISH, // 芬兰语 DH_LANGUAGE_ESTONIAN, // 爱沙尼亚语 DH_LANGUAGE_KOREAN, // 韩语 DH_LANGUAGE_FARSI, // 波斯语 DH_LANGUAGE_DANSK, // 丹麦语 DH_LANGUAGE_CZECHISH, // 捷克文 DH_LANGUAGE_BULGARIA, // 保加利亚文 DH_LANGUAGE_SLOVAKIAN, // 斯洛伐克语 DH_LANGUAGE_SLOVENIA, // 斯洛文尼亚文 DH_LANGUAGE_CROATIAN, // 克罗地亚语 DH_LANGUAGE_DUTCH, // 荷兰语 DH_LANGUAGE_GREEK, // 希腊语 DH_LANGUAGE_UKRAINIAN, // 乌克兰语 DH_LANGUAGE_SWEDISH, // 瑞典语 DH_LANGUAGE_SERBIAN, // 塞尔维亚语 DH_LANGUAGE_VIETNAMESE, // 越南语 DH_LANGUAGE_LITHUANIAN, // 立陶宛语 DH_LANGUAGE_FILIPINO, // 菲律宾语 DH_LANGUAGE_ARABIC, // 阿拉伯语 DH_LANGUAGE_CATALAN, // 加泰罗尼亚语 DH_LANGUAGE_LATVIAN, // 拉脱维亚语 DH_LANGUAGE_THAI, // 泰语 DH_LANGUAGE_HEBREW, // 希伯来语 DH_LANGUAGE_Bosnian, // 波斯尼亚文 } DH_LANGUAGE_TYPE; ///@brief 升级类型 typedef enum __EM_UPGRADE_TYPE { DH_UPGRADE_BIOS_TYPE = 1, // BIOS升级 DH_UPGRADE_WEB_TYPE, // WEB升级 DH_UPGRADE_BOOT_YPE, // BOOT升级 DH_UPGRADE_CHARACTER_TYPE, // 汉字库 DH_UPGRADE_LOGO_TYPE, // LOGO DH_UPGRADE_EXE_TYPE, // EXE,例如播放器等 DH_UPGRADE_DEVCONSTINFO_TYPE, // 设备固有信息设置(如:硬件ID,MAC,序列号) DH_UPGRADE_PERIPHERAL_TYPE, // 外设接入从片(如车载287芯片) DH_UPGRADE_GEOINFO_TYPE, // 地理信息定位芯片 DH_UPGRADE_MENU, // 菜单(设备操作界面的图片) DH_UPGRADE_ROUTE, // 线路文件(如公交线路) DH_UPGRADE_ROUTE_STATE_AUTO, // 报站音频(与线路配套的报站音频) DH_UPGRADE_SCREEN, // 调度屏(如公交操作屏) } EM_UPGRADE_TYPE; ///@brief 录象类型(定时、动态检测、报警) typedef enum __REC_TYPE { DH_REC_TYPE_TIM = 0, DH_REC_TYPE_MTD, DH_REC_TYPE_ALM, DH_REC_TYPE_NUM = 3, } REC_TYPE; ///@brief 网络类型 typedef enum __GPRSCDMA_NETWORK_TYPE { DH_TYPE_AUTOSEL = 0, // 自动选择 DH_TYPE_TD_SCDMA, // TD-SCDMA网络 DH_TYPE_WCDMA, // WCDMA网络 DH_TYPE_CDMA_1x, // CDMA 1.x网络 DH_TYPE_EDGE, // GPRS网络 DH_TYPE_EVDO, // EVDO网络 DH_TYPE_WIFI, // 无线 } EM_GPRSCDMA_NETWORK_TYPE; ///@brief 接口类型,对应CLIENT_SetSubconnCallBack接口 typedef enum __EM_INTERFACE_TYPE { DH_INTERFACE_OTHER = 0x00000000, // 未知接口 DH_INTERFACE_REALPLAY, // 实时预览接口 DH_INTERFACE_PREVIEW, // 多画面预览接口 DH_INTERFACE_PLAYBACK, // 回放接口 DH_INTERFACE_DOWNLOAD, // 下载接口 DH_INTERFACE_REALLOADPIC, // 下载智能图片接口 } EM_INTERFACE_TYPE; ///@brief 视频预览断开事件类型 typedef enum _EM_REALPLAY_DISCONNECT_EVENT_TYPE { DISCONNECT_EVENT_REAVE, // 表示高级用户抢占低级用户资源 DISCONNECT_EVENT_NETFORBID, // 禁止入网 DISCONNECT_EVENT_SUBCONNECT, // 动态子链接断开 }EM_REALPLAY_DISCONNECT_EVENT_TYPE; ///@brief 事件文件的文件标签类型 typedef enum __EM_EVENT_FILETAG { DH_ATMBEFOREPASTE = 1, // ATM贴条前 DH_ATMAFTERPASTE, // ATM贴条后 }EM_EVENT_FILETAG; ///@brief IPC类型 typedef enum __EM_IPC_TYPE { DH_IPC_PRIVATE, // 私有 DH_IPC_AEBELL, // AEBELL DH_IPC_PANASONIC, // PANASONIC DH_IPC_SONY, // SONY DH_IPC_DYNACOLOR, // Dynacolor DH_IPC_TCWS = 5, // TCWS DH_IPC_SAMSUNG, // SAMSUNG DH_IPC_YOKO, // YOKO DH_IPC_AXIS, // AXIS DH_IPC_SANYO, // SANYO DH_IPC_BOSH = 10, // Bosch DH_IPC_PECLO, // Peclo DH_IPC_PROVIDEO, // Provideo DH_IPC_ACTI, // ACTi DH_IPC_VIVOTEK, // Vivotek DH_IPC_ARECONT = 15, // Arecont DH_IPC_PRIVATEEH, // PrivateEH DH_IPC_IMATEK, // IMatek DH_IPC_SHANY, // Shany DH_IPC_VIDEOTREC, // VIDEOTREC DH_IPC_URA = 20, // Ura DH_IPC_BITICINO, // Bticino DH_IPC_ONVIF, // Onvif协议类型 DH_IPC_SHEPHERD, // SHEPHERD DH_IPC_YAAN, // YAAN DH_IPC_AIRPOINT = 25, // Airpop DH_IPC_TYCO, // TYCO DH_IPC_XUNMEI, // XUNMEI DH_IPC_HIKVISION, DH_IPC_LG, // LG DH_IPC_AOQIMAN = 30, // AOQIMAN DH_IPC_BAOKANG, // BAOKANG DH_IPC_WATCHNET, // Watchnet DH_IPC_XVISION, // Xvision DH_IPC_FUSITSU, // FUSITSU DH_IPC_CANON = 35, // Canon DH_IPC_GE, // GE DH_IPC_Basler, // Basler DH_IPC_Patro, // Patro DH_IPC_CPKNC, // CPPLUS K系列 DH_IPC_CPRNC = 40, // CPPLUS R系列 DH_IPC_CPUNC, // CPPLUS U系列 DH_IPC_CPPLUS, // CPPLUS IPC DH_IPC_XunmeiS, // XunmeiS,实际协议为Onvif DH_IPC_GDDW, // GDDW DH_IPC_PSIA = 45, // PSIA DH_IPC_GB2818, // GB2818 DH_IPC_GDYX, // GDYX DH_IPC_OTHER, // 由用户自定义 DH_IPC_CPUNR, // CPPLUS NVR DH_IPC_CPUAR = 50, // CPPLUS DVR DH_IPC_AIRLIVE, // Airlive DH_IPC_NPE, // NPE DH_IPC_AXVIEW, // AXVIEW DH_IPC_DFWL, // DFWL DH_IPC_HYUNDAI = 56, // HYUNDAI DVR DH_IPC_APHD, // APHD DH_IPC_WELLTRANS , // WELLTRANS DH_IPC_CDJF, // CDJF DH_IPC_JVC = 60, // JVC DH_IPC_INFINOVA, // INFINOVA DH_IPC_ADT, // ADT DH_IPC_SIVIDI, // SIVIDI DH_IPC_CPUNP, // CPPLUS 球机 DH_IPC_HX = 65, // HX DH_IPC_TJGS, // TJGS DH_IPC_MULTICAST = 79, // 组播 DH_IPC_RVI = 84, // RVi DH_IPC_HONEYWELL = 95, // Honeywell }EM_IPC_TYPE; ///@brief H264 编码级别 typedef enum __EM_H264_PROFILE_RANK { DH_PROFILE_BASELINE = 1, // 提供I/P帧,仅支持progressive(逐行扫描)和CAVLC DH_PROFILE_MAIN, // 提供I/P/B帧,支持progressiv和interlaced,提供CAVLC或CABAC DH_PROFILE_EXTENDED, // 提供I/P/B/SP/SI帧,仅支持progressive(逐行扫描)和CAVLC DH_PROFILE_HIGH = 4, // 即FRExt,Main_Profile基础上新增:8x8 intra prediction(8x8 帧内预测), custom // quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式 }EM_H264_PROFILE_RANK; ///@brief 硬盘的状态 typedef enum __EM_DISK_TYPE { DH_DISK_READ_WRITE, // 读写驱动器 DH_DISK_READ_ONLY, // 只读驱动器 DH_DISK_BACKUP, // 备份驱动器或媒体驱动器 DH_DISK_REDUNDANT, // 冗余驱动器 DH_DISK_SNAPSHOT, // 快照驱动器 }EM_DISK_TYPE; ///@brief 码流加密算法工作模式 typedef enum __EM_ENCRYPT_ALOG_WORKMODE { ENCRYPT_ALOG_WORKMODE_ECB, // ECB模式 ENCRYPT_ALOG_WORKMODE_CBC, // CBC模式 ENCRYPT_ALOG_WORKMODE_CFB, // CFB模式 ENCRYPT_ALOG_WORKMODE_OFB, // OFB模式 }EM_ENCRYPT_ALOG_WORKMODE; ///@brief PPP拨号状态 typedef enum __EM_MOBILE_PPP_STATE { MOBILE_PPP_UP = 0, // 链接已经建立 MOBILE_PPP_DOWN, // ppp连接断开 MOBILE_PPP_CONNECTING, // 正在创建链接 MOBILE_PPP_CLOSEING, // 正在关闭PPP链接 } EM_MOBILE_PPP_STATE; ///@brief 网卡所处状态 typedef enum __EM_3GMOBILE_STATE { MOBILE_MODULE_OFF, // 表示3g网卡模块关闭 MOBILE_MODULE_STARTING, // 表示3g网卡模块正在启动 MOBILE_MODULE_WORKING, // 表示3g网卡模块正在工作中 }EM_3GMOBILE_STATE; ///@brief 登录类型 typedef enum tagEM_LOGIN_SPAC_CAP_TYPE { EM_LOGIN_SPEC_CAP_TCP = 0, // TCP登陆, 默认方式 EM_LOGIN_SPEC_CAP_ANY = 1, // 无条件登陆 EM_LOGIN_SPEC_CAP_SERVER_CONN = 2, // 主动注册的登入 EM_LOGIN_SPEC_CAP_MULTICAST = 3, // 组播登陆 EM_LOGIN_SPEC_CAP_UDP = 4, // UDP方式下的登入 EM_LOGIN_SPEC_CAP_MAIN_CONN_ONLY = 6, // 只建主连接下的登入 EM_LOGIN_SPEC_CAP_SSL = 7, // SSL加密方式登陆 EM_LOGIN_SPEC_CAP_INTELLIGENT_BOX = 9, // 登录智能盒远程设备 EM_LOGIN_SPEC_CAP_NO_CONFIG = 10, // 登录设备后不做取配置操作 EM_LOGIN_SPEC_CAP_U_LOGIN = 11, // 用U盾设备的登入 EM_LOGIN_SPEC_CAP_LDAP = 12, // LDAP方式登录 EM_LOGIN_SPEC_CAP_AD = 13, // AD(ActiveDirectory)登录方式 EM_LOGIN_SPEC_CAP_RADIUS = 14, // Radius 登录方式 EM_LOGIN_SPEC_CAP_SOCKET_5 = 15, // Socks5登陆方式 EM_LOGIN_SPEC_CAP_CLOUD = 16, // 云登陆方式 EM_LOGIN_SPEC_CAP_AUTH_TWICE = 17, // 二次鉴权登陆方式 EM_LOGIN_SPEC_CAP_TS = 18, // TS码流客户端登陆方式 EM_LOGIN_SPEC_CAP_P2P = 19, // 为P2P登陆方式 EM_LOGIN_SPEC_CAP_MOBILE = 20, // 手机客户端登陆 EM_LOGIN_SPEC_CAP_TLS_ADAPTER = 21, // 自适应tls加密 EM_LOGIN_SPEC_CAP_TLS_COMPEL = 22, // 强制tls加密 EM_LOGIN_SPEC_CAP_TLS_MAIN_ONLY = 23, // 部分tls加密 EM_LOGIN_SPEC_CAP_INVALID // 无效的登陆方式 }EM_LOGIN_SPAC_CAP_TYPE; /////////////////////////////预览相关///////////////////////////////// ///@brief 预览类型,对应CLIENT_RealPlayEx接口 typedef enum _RealPlayType { DH_RType_Realplay = 0, // 实时预览 DH_RType_Multiplay, // 多画面预览 DH_RType_Realplay_0, // 实时预览-主码流,等同于DH_RType_Realplay DH_RType_Realplay_1, // 实时预览-从码流1 DH_RType_Realplay_2, // 实时预览-从码流2 DH_RType_Realplay_3, // 实时预览-从码流3 DH_RType_Multiplay_1, // 多画面预览-1画面 DH_RType_Multiplay_4, // 多画面预览-4画面 DH_RType_Multiplay_8, // 多画面预览-8画面 DH_RType_Multiplay_9, // 多画面预览-9画面 DH_RType_Multiplay_16, // 多画面预览-16画面 DH_RType_Multiplay_6, // 多画面预览-6画面 DH_RType_Multiplay_12, // 多画面预览-12画面 DH_RType_Multiplay_25, // 多画面预览-25画面 DH_RType_Multiplay_36, // 多画面预览-36画面 DH_RType_Multiplay_64, // 多画面预览-64画面 DH_RType_Multiplay_255, // 不修改当前预览通道数 DH_RType_Realplay_Audio, // 只拉音频, 非通用 DH_RType_Realplay_Test = 255, // 带宽测试码流 } DH_RealPlayType; /////////////////////////////云台相关///////////////////////////////// ///@brief 通用云台控制命令 typedef enum _PTZ_ControlType { DH_PTZ_UP_CONTROL = 0, // 上 速度对应parma2(1-8) DH_PTZ_DOWN_CONTROL, // 下 速度对应parma2(1-8) DH_PTZ_LEFT_CONTROL, // 左 速度对应parma2(1-8) DH_PTZ_RIGHT_CONTROL, // 右 速度对应parma2(1-8) DH_PTZ_ZOOM_ADD_CONTROL, // 变倍+ 对应param2 DH_PTZ_ZOOM_DEC_CONTROL, // 变倍- 对应param2 DH_PTZ_FOCUS_ADD_CONTROL, // 调焦- 对应param2 DH_PTZ_FOCUS_DEC_CONTROL, // 调焦+ 对应param2 DH_PTZ_APERTURE_ADD_CONTROL, // 光圈+ 对应param2 DH_PTZ_APERTURE_DEC_CONTROL, // 光圈- 对应param2 DH_PTZ_POINT_MOVE_CONTROL, // 转至预置点 param2为预置点序号 DH_PTZ_POINT_SET_CONTROL, // 设置 param2为预置点序号,最大序号可以从云台能力集中获取 param4可以传预置点名称,预置点名称最大有效值为63字节。param3需传入个bool类型,当param3为ture时,预置点名称最大为255字符。 DH_PTZ_POINT_DEL_CONTROL, // 删除 param2为预置点序号 DH_PTZ_POINT_LOOP_CONTROL, // 点间巡航 param1为巡航线路 DH_PTZ_LAMP_CONTROL // 灯光雨刷 对应param1(1-开启,0-关闭) } DH_PTZ_ControlType; ///@brief 云台控制扩展命令 typedef enum _EXTPTZ_ControlType { DH_EXTPTZ_LEFTTOP = 0x20, // 左上 DH_EXTPTZ_RIGHTTOP, // 右上 DH_EXTPTZ_LEFTDOWN, // 左下 DH_EXTPTZ_RIGHTDOWN, // 右下 DH_EXTPTZ_ADDTOLOOP, // 加入预置点到巡航 巡航线路 预置点值 DH_EXTPTZ_DELFROMLOOP, // 删除巡航中预置点 巡航线路 预置点值 DH_EXTPTZ_CLOSELOOP, // 清除巡航 巡航线路 DH_EXTPTZ_STARTPANCRUISE, // 开始水平旋转 DH_EXTPTZ_STOPPANCRUISE, // 停止水平旋转 DH_EXTPTZ_SETLEFTBORDER, // 设置左边界 DH_EXTPTZ_SETRIGHTBORDER, // 设置右边界 DH_EXTPTZ_STARTLINESCAN, // 开始线扫 DH_EXTPTZ_CLOSELINESCAN, // 停止线扫 DH_EXTPTZ_SETMODESTART, // 设置模式开始 模式线路 DH_EXTPTZ_SETMODESTOP, // 设置模式结束 模式线路 DH_EXTPTZ_RUNMODE, // 运行模式 模式线路 DH_EXTPTZ_STOPMODE, // 停止模式 模式线路 DH_EXTPTZ_DELETEMODE, // 清除模式 模式线路 DH_EXTPTZ_REVERSECOMM, // 翻转命令 DH_EXTPTZ_FASTGOTO, // 快速定位 水平坐标(-8191~8191) 垂直坐标(-8191~8191) 变倍(-16~16) DH_EXTPTZ_AUXIOPEN, // 辅助开关开 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE) DH_EXTPTZ_AUXICLOSE, // 辅助开关关 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE) DH_EXTPTZ_OPENMENU = 0x36, // 打开球机菜单 DH_EXTPTZ_CLOSEMENU, // 关闭菜单 DH_EXTPTZ_MENUOK, // 菜单确定 DH_EXTPTZ_MENUCANCEL, // 菜单取消 DH_EXTPTZ_MENUUP, // 菜单上 DH_EXTPTZ_MENUDOWN, // 菜单下 DH_EXTPTZ_MENULEFT, // 菜单左 DH_EXTPTZ_MENURIGHT, // 菜单右 DH_EXTPTZ_ALARMHANDLE = 0x40, // 报警联动云台 parm1:报警输入通道;parm2:报警联动类型1-预置点2-线扫3-巡航;parm3:联动值,如预置点号 DH_EXTPTZ_MATRIXSWITCH = 0x41, // 矩阵切换 parm1:预览器号(视频输出号);parm2:视频输入号;parm3:矩阵号 DH_EXTPTZ_LIGHTCONTROL, // 灯光控制器 DH_EXTPTZ_EXACTGOTO, // 三维精确定位 parm1:水平角度(0~3600);parm2:垂直坐标(-1800-1800);parm3:变倍(1~128),变倍为档位,并非实际变倍倍数 DH_EXTPTZ_RESETZERO, // 三维定位重设零位 DH_EXTPTZ_MOVE_ABSOLUTELY, // 绝对移动控制命令,param4对应结构 PTZ_CONTROL_ABSOLUTELY DH_EXTPTZ_MOVE_CONTINUOUSLY, // 持续移动控制命令,param4对应结构 PTZ_CONTROL_CONTINUOUSLY DH_EXTPTZ_GOTOPRESET, // 云台控制命令,以一定速度转到预置位点,parm4对应结构PTZ_CONTROL_GOTOPRESET DH_EXTPTZ_SET_VIEW_RANGE = 0x49, // 设置可视域(param4对应结构 PTZ_VIEW_RANGE_INFO) DH_EXTPTZ_FOCUS_ABSOLUTELY = 0x4A, // 绝对聚焦(param4对应结构PTZ_FOCUS_ABSOLUTELY) DH_EXTPTZ_HORSECTORSCAN = 0x4B, // 水平扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效) DH_EXTPTZ_VERSECTORSCAN = 0x4C, // 垂直扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效) DH_EXTPTZ_SET_ABS_ZOOMFOCUS = 0x4D, // 设定绝对焦距、聚焦值,param1为焦距,范围:[0,255],param2为聚焦,范围:[0,255],param3、param4无效 DH_EXTPTZ_SET_FISHEYE_EPTZ = 0x4E, // 控制鱼眼电子云台,param4对应结构 PTZ_CONTROL_SET_FISHEYE_EPTZ DH_EXTPTZ_SET_TRACK_START = 0x4F, // 轨道机开始控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE, param1、param2、param3无效) DH_EXTPTZ_SET_TRACK_STOP = 0x50, // 轨道机停止控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE,param1、param2、param3无效) DH_EXTPTZ_RESTART = 0x51, // 云台重启命令(param1、param2、param3 param4 均无效,dwStop设置为FALSE) DH_EXTPTZ_INTELLI_TRACKMOVE = 0x52, // 云台连续移动,枪球联动专用,param4对应结构 PTZ_CONTROL_INTELLI_TRACKMOVE DH_EXTPTZ_SET_FOCUS_REGION = 0x53, // 设置区域聚焦参数(param4对应结构体为PTZ_CONTROL_SET_FOCUS_REGION,dwStop传FALSE,param1、param2、param3无效) DH_EXTPTZ_PAUSELINESCAN = 0x54, // 暂停线扫(param1、param2、param3param4均无效,dwStop设置为FALSE) DH_EXTPTZ_INTELLI_SETLENSWISDOMSTATE = 0x55,// 目标跟踪时设置聚焦模式(param4对应结构体为PTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE,dwStop传FALSE,param1、param2、param3无效) DH_EXTPTZ_INTELLI_SETFOCUSAREA = 0x56, // 设置聚焦区域(param4对应结构体为PTZ_CONTROL_INTELLI_SETFOCUSAREA,dwStop传FALSE,param1、param2、param3无效) // 注:目标跟踪若不需设置聚焦区域,因聚焦区域会沿袭上次主动设置状态,故需主动调用此接口取消设置聚焦区域 DH_EXTPTZ_UP_TELE = 0x70, // 上 + TELE param1=速度(1-8),下同 DH_EXTPTZ_DOWN_TELE, // 下 + TELE DH_EXTPTZ_LEFT_TELE, // 左 + TELE DH_EXTPTZ_RIGHT_TELE, // 右 + TELE DH_EXTPTZ_LEFTUP_TELE, // 左上 + TELE DH_EXTPTZ_LEFTDOWN_TELE, // 左下 + TELE DH_EXTPTZ_TIGHTUP_TELE, // 右上 + TELE DH_EXTPTZ_RIGHTDOWN_TELE, // 右下 + TELE DH_EXTPTZ_UP_WIDE, // 上 + WIDE param1=速度(1-8),下同 DH_EXTPTZ_DOWN_WIDE, // 下 + WIDE DH_EXTPTZ_LEFT_WIDE, // 左 + WIDE DH_EXTPTZ_RIGHT_WIDE, // 右 + WIDE DH_EXTPTZ_LEFTUP_WIDE, // 左上 + WIDE DH_EXTPTZ_LEFTDOWN_WIDE, // 左下 + WIDE DH_EXTPTZ_TIGHTUP_WIDE, // 右上 + WIDE DH_EXTPTZ_RIGHTDOWN_WIDE, // 右下 + WIDE DH_EXTPTZ_GOTOPRESETSNAP = 0x80, // 转至预置点并抓图 DH_EXTPTZ_DIRECTIONCALIBRATION = 0x82, // 校准云台方向(双方向校准) DH_EXTPTZ_SINGLEDIRECTIONCALIBRATION = 0x83, // 校准云台方向(单防线校准),param4对应结构 NET_IN_CALIBRATE_SINGLEDIRECTION DH_EXTPTZ_MOVE_RELATIVELY = 0x84, // 云台相对定位,param4对应结构 NET_IN_MOVERELATIVELY_INFO DH_EXTPTZ_SET_DIRECTION = 0x85, // 设置云台方向, param4对应结构 NET_IN_SET_DIRECTION_INFO DH_EXTPTZ_BASE_MOVE_ABSOLUTELY = 0x86, // 精准绝对移动控制命令, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_INFO(通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO ),若bSupportReal为TRUE则设备支持该操作) DH_EXTPTZ_BASE_MOVE_CONTINUOUSLY, // 云台连续移动控制命令, param4 对应结构 NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO. 通过 CFG_CAP_CMD_PTZ 命令获取云台能力集 // 若 CFG_PTZ_PROTOCOL_CAPS_INFO 中 stuMoveContinuously 字段的 stuType.bSupportExtra 为 TRUE, 表示设备支持该操作 DH_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE, // 设置当前位置聚焦值, param4对应结构体 NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO DH_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYPT, // 绝对定位独立控制PT并能以度/秒为单位的速度控制, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO DH_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYZOOM, // 绝对定位独立控制zoom,并能控制变倍速度, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO DH_EXTPTZ_STOP_MOVE, // 云台移动停止,同时也停止巡航模式,param4对应结构体 NET_IN_STOP_MOVE_INFO DH_EXTPTZ_START, // 开始云台控制,param4对应结构体 NET_IN_PTZ_START_INFO DH_EXTPTZ_STOP, // 结束云台控制,param4对应结构体 NET_IN_PTZ_STOP_INFO DH_EXTPTZ_START_PATTERN_RECORD, // 开始模式记录,param4对应结构体 NET_IN_START_PATTERN_RECORD_INFO DH_EXTPTZ_STOP_PATTERN_RECORD, // 停止模式记录,param4对应结构体 NET_IN_STOP_PATTERN_RECORD_INFO DH_EXTPTZ_START_PATTERN_REPLAY, // 开始模式回放,param4对应结构体 NET_IN_START_PATTERN_REPLAY_INFO DH_EXTPTZ_STOP_PATTERN_REPLAY, // 停止模式回放,param4对应结构体 NET_IN_STOP_PATTERN_REPLAY_INFO DH_EXTPTZ_MOVE_DIRECTLY, // 云台三维定位, param4对应结构体 NET_IN_MOVE_DIRECTLY_INFO DH_EXTPTZ_TOTAL, // 最大命令值 } DH_EXTPTZ_ControlType; ///@brief 鱼眼电子云台控制命令 typedef enum tagNET_FISHEYE_EPTZ_CMD { NET_FISHEYE_EPTZ_CMD_UNKOWN, // 未知类型 NET_FISHEYE_EPTZ_CMD_ZOOMIN, // 放大,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_ZOOMOUT, // 缩小,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_UP, // 向上移动,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_DOWN, // 向下移动,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_LEFT, // 向左移动,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_RIGHT, // 向右移动,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_ROTATECLOCK, // 自动顺时针旋转,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_ROTATEANTICLOCK, // 自动逆时针旋转,dwParam1表示步长,范围1~8 NET_FISHEYE_EPTZ_CMD_STOP, // 终止自动旋转操作 NET_FISHEYE_EPTZ_CMD_TAPVIEW, // 显示指定位置,即点即看,dwParam1表示eptz(电子云台)的焦点横坐标,即焦点在矫正后的图像中的横坐标,取值不超过矫正后输出图像的宽 // dwParam2表示eptz(电子云台)的焦点纵坐标,即焦点在矫正后的图像中的纵坐标,取值不超过矫正后输出图像的高 NET_FISHEYE_EPTZ_CMD_SHOEREGION, // 框选放大,wParam1表示所选矩形中心点的横坐标, // dwParam2表示所选矩形中心点的纵坐标,dwParam3表示所选矩形的宽 // dwParam4表示所选矩形的高 }NET_FISHEYE_EPTZ_CMD; ///@brief 轨道机控制命令 typedef enum tagNET_TRACK_CONTROL_CMD { NET_TRACK_CONTROL_CMD_UP, // 向上移动,dwParam1表示步长,范围1~8 NET_TRACK_CONTROL_CMD_DOWN, // 向下移动,dwParam1表示步长,范围1~8 NET_TRACK_CONTROL_CMD_LEFT, // 向左移动,dwParam1表示步长,范围1~8 NET_TRACK_CONTROL_CMD_RIGHT, // 向右移动,dwParam1表示步长,范围1~8 NET_TRACK_CONTROL_CMD_SETPRESET, // 设置预置点,dwParam1表示预置点值 NET_TRACK_CONTROL_CMD_CLEARPRESET, // 清除预置点,dwParam1表示预置点值 NET_TRACK_CONTROL_CMD_GOTOPRESET, // 转至预置点,dwParam1表示预置点值 } NET_TRACK_CONTROL_CMD; ///@brief 鱼眼矫正模式 typedef enum tagNET_CALIBRATE_MODE { NET_FISHEYE_CALIBRATE_MODE_UNKOWN, // 未知模式 NET_FISHEYE_CALIBRATE_MODE_ORIGIAL, // 原始图像模式 NET_FISHEYE_CALIBRATE_MODE_CONFIG, // 配置模 NET_FISHEYE_CALIBRATE_MODE_PANORAMA, // 全景模式 NET_FISHEYE_CALIBRATE_MODE_DOUBLEPANORAMA, // 双全景模式 NET_FISHEYE_CALIBRATE_MODE_ORIGIALPLUSTHREEEPTZREGION, // 1+3模式(一个原始鱼眼图像加3个EPtz图像) NET_FISHEYE_CALIBRATE_MODE_SINGLE, // 单画面EPtz模式(只有一个EPtz画面) NET_FISHEYE_CALIBRATE_MODE_FOUREPTZREGION, // 4画面模式(4个EPtz控制画面) NET_FISHEYE_CALIBRATE_MODE_NORMAL, // 普通模式 }NET_FISHEYE_CALIBRATE_MODE; ///@brief 鱼眼类型 typedef enum tagNET_FISHEYE_TYPE { NET_FISHEYE_UNKOWN =0 , //未知 NET_FISHEYE_CHIP , //仅支持设备端鱼眼矫正 NET_FISHEYE_PLUGIN , //仅支持控件鱼眼矫正 NET_FISHEYE_CHIP_PLUGIN , //二者都支持 }NET_FISHEYE_TYPE; ///@brief 鱼眼安装模式 typedef enum tagNET_FISHEYE_MOUNT_MODE { NET_FISHEYE_MOUNT_MODE_UNKOWN, // 未知模式 NET_FISHEYE_MOUNT_MODE_CEIL, // 顶装模式 NET_FISHEYE_MOUNT_MODE_WALL, // 壁装模式 NET_FISHEYE_MOUNT_MODE_FLOOR, // 地装模式 }NET_FISHEYE_MOUNT_MODE; /////////////////////////////日志相关///////////////////////////////// ///@brief 日志查询类型 typedef enum _DH_LOG_QUERY_TYPE { DHLOG_ALL = 0, // 所有日志 DHLOG_SYSTEM, // 系统日志 DHLOG_CONFIG, // 配置日志 DHLOG_STORAGE, // 存储相关 DHLOG_ALARM, // 报警日志 DHLOG_RECORD, // 录象相关 DHLOG_ACCOUNT, // 帐号相关 DHLOG_CLEAR, // 清除日志 DHLOG_PLAYBACK, // 回放相关 DHLOG_MANAGER // 前端管理运行相关 } DH_LOG_QUERY_TYPE; ///@brief 日志类型 typedef enum _DH_LOG_TYPE { DH_LOG_REBOOT = 0x0000, // 设备重启 DH_LOG_SHUT, // 设备关机 DH_LOG_REPORTSTOP, DH_LOG_REPORTSTART, DH_LOG_UPGRADE = 0x0004, // 设备升级 DH_LOG_SYSTIME_UPDATE = 0x0005, // 系统时间更新 DH_LOG_GPS_TIME_UPDATE = 0x0006, // GPS时间更新 DH_LOG_AUDIO_TALKBACK, // 语音对讲, true代表开启,false代表关闭 DH_LOG_COMM_ADAPTER, // 透明传输, true代表开启,false代表关闭 DH_LOG_NET_TIMING, // 网络校时 DH_LOG_CONFSAVE = 0x0100, // 保存配置 DH_LOG_CONFLOAD, // 读取配置 DH_LOG_FSERROR = 0x0200, // 文件系统错误 DH_LOG_HDD_WERR, // 硬盘写错误 DH_LOG_HDD_RERR, // 硬盘读错误 DH_LOG_HDD_TYPE, // 设置硬盘类型 DH_LOG_HDD_FORMAT, // 格式化硬盘 DH_LOG_HDD_NOSPACE, // 当前工作盘空间不足 DH_LOG_HDD_TYPE_RW, // 设置硬盘类型为读写盘 DH_LOG_HDD_TYPE_RO, // 设置硬盘类型为只读盘 DH_LOG_HDD_TYPE_RE, // 设置硬盘类型为冗余盘 DH_LOG_HDD_TYPE_SS, // 设置硬盘类型为快照盘 DH_LOG_HDD_NONE, // 无硬盘记录 DH_LOG_HDD_NOWORKHDD, // 无工作盘(没有读写盘) DH_LOG_HDD_TYPE_BK, // 设置硬盘类型为备份盘 DH_LOG_HDD_TYPE_REVERSE, // 设置硬盘类型为保留分区 DH_LOG_HDD_START_INFO = 0x20e , // 记录开机时的硬盘信息 DH_LOG_HDD_WORKING_DISK, // 记录换盘后的工作盘号 DH_LOG_HDD_OTHER_ERROR, // 记录硬盘其它错误 DH_LOG_HDD_SLIGHT_ERR, // 硬盘存在轻微问题 DH_LOG_HDD_SERIOUS_ERR, // 硬盘存在严重问题 DH_LOG_HDD_NOSPACE_END, // 当前工作盘空间不足报警结束 DH_LOG_HDD_TYPE_RAID_CONTROL, // Raid操作 DH_LOG_HDD_TEMPERATURE_HIGH, // 温度过高 DH_LOG_HDD_TEMPERATURE_LOW, // 温度过低 DH_LOG_HDD_ESATA_REMOVE, // 移除eSATA DH_LOG_ALM_IN = 0x0300, // 外部输入报警开始 DH_LOG_NETALM_IN, // 网络报警输入 DH_LOG_ALM_END = 0x0302, // 外部输入报警停止 DH_LOG_LOSS_IN, // 视频丢失报警开始 DH_LOG_LOSS_END, // 视频丢失报警结束 DH_LOG_MOTION_IN, // 动态检测报警开始 DH_LOG_MOTION_END, // 动态检测报警结束 DH_LOG_ALM_BOSHI, // 报警器报警输入 DH_LOG_NET_ABORT = 0x0308, // 网络断开 DH_LOG_NET_ABORT_RESUME, // 网络恢复 DH_LOG_CODER_BREAKDOWN, // 编码器故障 DH_LOG_CODER_BREAKDOWN_RESUME, // 编码器故障恢复 DH_LOG_BLIND_IN, // 视频遮挡 DH_LOG_BLIND_END, // 视频遮挡恢复 DH_LOG_ALM_TEMP_HIGH, // 温度过高 DH_LOG_ALM_VOLTAGE_LOW, // 电压过低 DH_LOG_ALM_BATTERY_LOW, // 电池容量不足 DH_LOG_ALM_ACC_BREAK, // ACC断电 DH_LOG_ALM_ACC_RES, DH_LOG_GPS_SIGNAL_LOST, // GPS无信号 DH_LOG_GPS_SIGNAL_RESUME, // GPS信号恢复 DH_LOG_3G_SIGNAL_LOST, // 3G无信号 DH_LOG_3G_SIGNAL_RESUME, // 3G信号恢复 DH_LOG_ALM_IPC_IN, // IPC外部报警 DH_LOG_ALM_IPC_END, // IPC外部报警恢复 DH_LOG_ALM_DIS_IN, // 断网报警 DH_LOG_ALM_DIS_END, // 断网报警恢复 DH_LOG_ALM_UPS_IN, // UPS告警 DH_LOG_ALM_UPS_END, // UPS告警恢复 DH_LOG_ALM_NAS_IN, // NAS服务器异常报警 DH_LOG_ALM_NAS_END, // NAS服务器异常报警恢复 DH_LOG_ALM_REDUNDANT_POWER_IN, // 冗余电源告警 DH_LOG_ALM_REDUNDANT_POWER_END, // 冗余电源告警恢复 DH_LOG_ALM_RECORD_FAILED_IN, // 录像失败告警 DH_LOG_ALM_RECORD_FAILED_END, // 录像失败告警恢复 DH_LOG_ALM_VGEXCEPT_IN, // 存储池异常报警 DH_LOG_ALM_VGEXCEPT_END, // 存储池异常报警恢复 DH_LOG_ALM_FANSPEED_IN, // 风扇报警开始 DH_LOG_ALM_FANSPEED_END, // 风扇报警结束 DH_LOG_ALM_DROP_FRAME_IN, // 丢帧报警开始 DH_LOG_ALM_DROP_FRAME_END, // 丢帧报警结束 DH_LOG_ALM_DISK_STATE_CHECK, // 磁盘预检巡检报警事件日志类型 DH_LOG_ALARM_COAXIAL_SMOKE, // 同轴烟感报警事件 DH_LOG_ALARM_COAXIAL_TEMP_HIGH, // 同轴温度报警事件 DH_LOG_ALARM_COAXIAL_ALM_IN, // 同轴外部报警事件 DH_LOG_INFRAREDALM_IN = 0x03a0, // 无线报警开始 DH_LOG_INFRAREDALM_END, // 无线报警结束 DH_LOG_IPCONFLICT, // IP冲突 DH_LOG_IPCONFLICT_RESUME, // IP恢复 DH_LOG_SDPLUG_IN, // SD卡插入(DH_LOG_ITEM中的reserved值为3表示U盘插入) DH_LOG_SDPLUG_OUT, // SD卡拔出(DH_LOG_ITEM中的reserved值为3表示U盘拔出) DH_LOG_NET_PORT_BIND_FAILED, // 网络端口绑定失败 DH_LOG_HDD_BEEP_RESET, // 硬盘错误报警蜂鸣结束 DH_LOG_MAC_CONFLICT, // MAC冲突 DH_LOG_MAC_CONFLICT_RESUME, // MAC冲突恢复 DH_LOG_ALARM_OUT, // 报警输出状态 DH_LOG_ALM_RAID_STAT_EVENT, // RAID状态变化事件 DH_LOG_ABLAZE_ON, // 火警报警,烟感或温度 DH_LOG_ABLAZE_OFF, // 火警报警 恢复 DH_LOG_INTELLI_ALARM_PLUSE, // 智能脉冲型报警 DH_LOG_INTELLI_ALARM_IN, // 智能报警开始 DH_LOG_INTELLI_ALARM_END, // 智能报警结束 DH_LOG_3G_SIGNAL_SCAN, // 3G信号检测 DH_LOG_GPS_SIGNAL_SCAN, // GPS信号检测 DH_LOG_AUTOMATIC_RECORD = 0x0400, // 自动录像 DH_LOG_MANUAL_RECORD = 0x0401, // 手动录象 DH_LOG_CLOSED_RECORD, // 停止录象 DH_LOG_LOGIN = 0x0500, // 登录 DH_LOG_LOGOUT, // 注销 DH_LOG_ADD_USER, // 添加用户 DH_LOG_DELETE_USER, // 删除用户 DH_LOG_MODIFY_USER, // 修改用户 DH_LOG_ADD_GROUP, // 添加用户组 DH_LOG_DELETE_GROUP, // 删除用户组 DH_LOG_MODIFY_GROUP, // 修改用户组 DH_LOG_NET_LOGIN = 0x0508, // 网络用户登录 DH_LOG_MODIFY_PASSWORD, // 修改密码 DH_LOG_CLEAR = 0x0600, // 清除日志 DH_LOG_SEARCHLOG, // 查询日志 DH_LOG_SEARCH = 0x0700, // 录像查询 DH_LOG_DOWNLOAD, // 录像下载 DH_LOG_PLAYBACK, // 录像回放 DH_LOG_BACKUP, // 备份录像文件 DH_LOG_BACKUPERROR, // 备份录像文件失败 DH_LOG_BACK_UPRT, // 实时备份,即光盘刻录 DH_LOG_BACKUPCLONE, // 光盘复制。 DH_LOG_DISK_CHANGED, // 手动换盘 DH_LOG_IMAGEPLAYBACK, // 图片回放 DH_LOG_LOCKFILE, // 锁定录像 DH_LOG_UNLOCKFILE, // 解锁录像 DH_LOG_ATMPOS, // ATM卡号叠加添加日志 DH_PLAY_PAUSE, // 暂停回放 DH_PLAY_START, // 正放 LOG_PLAY_STOP, // 停止回放 LOG_PLAY_BACK, // 倒放 LOG_PLAY_FAST, // 快放 LOG_PLAY_SLOW, // 慢放 LOG_SMART_SEARCH, // 智能检索 LOG_RECORD_SNAP, // 录像抓图 LOG_ADD_TAG, // 添加标签 LOG_DEL_TAG, // 删除标签 LOG_USB_IN, // 发现USB设备 LOG_USB_OUT, // USB设备断开连接 LOG_BACKUP_FILE, // 文件备份 LOG_BACKUP_LOG, // 日志备份 LOG_BACKUP_CONFIG, // 配置备份 DH_LOG_TIME_UPDATE = 0x0800, // 时间同步 DH_LOG_REMOTE_STATE = 0x0850, // 远程日志 DH_LOG_USER_DEFINE = 0x0900, DH_LOG_TYPE_NR = 10, } DH_LOG_TYPE; ///@brief 扩展日志类型,对应CLIENT_QueryLogEx接口,条件(int nType = 1;参数reserved = &nType) typedef enum _DH_NEWLOG_TYPE { DH_NEWLOG_REBOOT = 0x0000, // 设备重启 DH_NEWLOG_SHUT, // 设备关机 DH_NEWLOG_REPORTSTOP, DH_NEWLOG_REPORTSTART, DH_NEWLOG_UPGRADE = 0x0004, // 设备升级 DH_NEWLOG_SYSTIME_UPDATE = 0x0005, // 系统时间更新 DH_NEWLOG_GPS_TIME_UPDATE = 0x0006, // GPS时间更新 DH_NEWLOG_AUDIO_TALKBACK, // 语音对讲, true代表开启,false代表关闭 DH_NEWLOG_COMM_ADAPTER, // 透明传输, true代表开启,false代表关闭 DH_NEWLOG_NET_TIMING, // 网络校时 DH_NEWLOG_CONFSAVE = 0x0100, // 保存配置 DH_NEWLOG_CONFLOAD, // 读取配置 DH_NEWLOG_FSERROR = 0x0200, // 文件系统错误 DH_NEWLOG_HDD_WERR, // 硬盘写错误 DH_NEWLOG_HDD_RERR, // 硬盘读错误 DH_NEWLOG_HDD_TYPE, // 设置硬盘类型 DH_NEWLOG_HDD_FORMAT, // 格式化硬盘 DH_NEWLOG_HDD_NOSPACE, // 当前工作盘空间不足 DH_NEWLOG_HDD_TYPE_RW, // 设置硬盘类型为读写盘 DH_NEWLOG_HDD_TYPE_RO, // 设置硬盘类型为只读盘 DH_NEWLOG_HDD_TYPE_RE, // 设置硬盘类型为冗余盘 DH_NEWLOG_HDD_TYPE_SS, // 设置硬盘类型为快照盘 DH_NEWLOG_HDD_NONE, // 无硬盘记录日志 DH_NEWLOG_HDD_NOWORKHDD, // 无工作盘(没有读写盘) DH_NEWLOG_HDD_TYPE_BK, // 设置硬盘类型为备份盘 DH_NEWLOG_HDD_TYPE_REVERSE, // 设置硬盘类型为保留分区 DH_NEWLOG_HDD_START_INFO = 0x20e, // 记录开机时的硬盘信息 DH_NEWLOG_HDD_WORKING_DISK, // 记录换盘后的工作盘号 DH_NEWLOG_HDD_OTHER_ERROR, // 记录硬盘其它错误 DH_NEWLOG_HDD_SLIGHT_ERR, // 硬盘存在轻微问题 DH_NEWLOG_HDD_SERIOUS_ERR, // 硬盘存在严重问题 DH_NEWLOG_HDD_NOSPACE_END, // 当前工作盘空间不足报警结束 DH_NEWLOG_HDD_TYPE_RAID_CONTROL, // Raid操作 DH_NEWLOG_HDD_TEMPERATURE_HIGH, // 温度过高 DH_NEWLOG_HDD_TEMPERATURE_LOW, // 温度过低 DH_NEWLOG_HDD_ESATA_REMOVE, // 移除eSATA DH_NEWLOG_ALM_IN = 0x0300, // 外部输入报警开始 DH_NEWLOG_NETALM_IN, // 网络报警 DH_NEWLOG_ALM_END = 0x0302, // 外部输入报警停止 DH_NEWLOG_LOSS_IN, // 视频丢失报警开始 DH_NEWLOG_LOSS_END, // 视频丢失报警结束 DH_NEWLOG_MOTION_IN, // 动态检测报警开始 DH_NEWLOG_MOTION_END, // 动态检测报警结束 DH_NEWLOG_ALM_BOSHI, // 报警器报警输入 DH_NEWLOG_NET_ABORT = 0x0308, // 网络断开 DH_NEWLOG_NET_ABORT_RESUME, // 网络恢复 DH_NEWLOG_CODER_BREAKDOWN, // 编码器故障 DH_NEWLOG_CODER_BREAKDOWN_RESUME, // 编码器故障恢复 DH_NEWLOG_BLIND_IN, // 视频遮挡 DH_NEWLOG_BLIND_END, // 视频遮挡恢复 DH_NEWLOG_ALM_TEMP_HIGH, // 温度过高 DH_NEWLOG_ALM_VOLTAGE_LOW, // 电压过低 DH_NEWLOG_ALM_BATTERY_LOW, // 电池容量不足 DH_NEWLOG_ALM_ACC_BREAK, // ACC断电 DH_NEWLOG_ALM_ACC_RES, DH_NEWLOG_GPS_SIGNAL_LOST, // GPS无信号 DH_NEWLOG_GPS_SIGNAL_RESUME, // GPS信号恢复 DH_NEWLOG_3G_SIGNAL_LOST, // 3G无信号 DH_NEWLOG_3G_SIGNAL_RESUME, // 3G信号恢复 DH_NEWLOG_ALM_IPC_IN, // IPC外部报警 DH_NEWLOG_ALM_IPC_END, // IPC外部报警恢复 DH_NEWLOG_ALM_DIS_IN, // 断网报警 DH_NEWLOG_ALM_DIS_END, // 断网报警恢复 DH_NEWLOG_INFRAREDALM_IN = 0x03a0, // 无线报警开始 DH_NEWLOG_INFRAREDALM_END, // 无线报警结束 DH_NEWLOG_IPCONFLICT, // IP冲突 DH_NEWLOG_IPCONFLICT_RESUME, // IP恢复 DH_NEWLOG_SDPLUG_IN, // SD卡插入 DH_NEWLOG_SDPLUG_OUT, // SD卡拔出 DH_NEWLOG_NET_PORT_BIND_FAILED, // 网络端口绑定失败 DH_NEWLOG_HDD_BEEP_RESET, // 硬盘错误报警蜂鸣结束 DH_NEWLOG_MAC_CONFLICT, // MAC冲突 DH_NEWLOG_MAC_CONFLICT_RESUME, // MAC冲突恢复 DH_NEWLOG_ALARM_OUT, // 报警输出状态 DH_NEWLOG_ALM_RAID_STAT_EVENT, // RAID状态变化事件 DH_NEWLOG_ABLAZE_ON, // 火警报警,烟感或温度 DH_NEWLOG_ABLAZE_OFF, // 火警报警 恢复 DH_NEWLOG_INTELLI_ALARM_PLUSE, // 智能脉冲型报警 DH_NEWLOG_INTELLI_ALARM_IN, // 智能报警开始 DH_NEWLOG_INTELLI_ALARM_END, // 智能报警结束 DH_NEWLOG_3G_SIGNAL_SCAN, // 3G信号检测 DH_NEWLOG_GPS_SIGNAL_SCAN, // GPS信号检测 DH_NEWLOG_AUTOMATIC_RECORD = 0x0400, // 自动录象 DH_NEWLOG_MANUAL_RECORD, // 手动录象开 DH_NEWLOG_CLOSED_RECORD, // 停止录象 DH_NEWLOG_LOGIN = 0x0500, // 登录 DH_NEWLOG_LOGOUT, // 注销 DH_NEWLOG_ADD_USER, // 添加用户 DH_NEWLOG_DELETE_USER, // 删除用户 DH_NEWLOG_MODIFY_USER, // 修改用户 DH_NEWLOG_ADD_GROUP, // 添加用户组 DH_NEWLOG_DELETE_GROUP, // 删除用户组 DH_NEWLOG_MODIFY_GROUP, // 修改用户组 DH_NEWLOG_NET_LOGIN = 0x0508, // 网络用户登录 DH_NEWLOG_CLEAR = 0x0600, // 清除日志 DH_NEWLOG_SEARCHLOG, // 查询日志 DH_NEWLOG_SEARCH = 0x0700, // 录像查询 DH_NEWLOG_DOWNLOAD, // 录像下载 DH_NEWLOG_PLAYBACK, // 录像回放 DH_NEWLOG_BACKUP, // 备份录像文件 DH_NEWLOG_BACKUPERROR, // 备份录像文件失败 DH_NEWLOG_BACK_UPRT, // 实时备份,即光盘刻录 DH_NEWLOG_BACKUPCLONE, // 光盘复制。 DH_NEWLOG_DISK_CHANGED, // 手动换盘 DH_NEWLOG_IMAGEPLAYBACK, // 图片回放 DH_NEWLOG_LOCKFILE, // 锁定录像 DH_NEWLOG_UNLOCKFILE, // 解锁录像 DH_NEWLOG_ATMPOS, // ATM卡号叠加添加日志 DH_NEWLOG_TIME_UPDATE = 0x0800, // 时间更新 DH_NEWLOG_REMOTE_STATE = 0x0850, // 远程日志 DH_NEWLOG_USER_DEFINE = 0x0900, DH_NEWLOG_TYPE_NR = 10, } DH_NEWLOG_TYPE; ///////////////////////////语音对讲相关/////////////////////////////// ///@brief 语音编码类型 typedef enum __TALK_CODING_TYPE { DH_TALK_UNKNOWN = -1, // 未知 DH_TALK_DEFAULT = 0, // 无头PCM DH_TALK_PCM = 1, // 带头PCM DH_TALK_G711a, // G711a DH_TALK_AMR, // AMR DH_TALK_G711u, // G711u DH_TALK_G726, // G726 DH_TALK_G723_53, // G723_53 DH_TALK_G723_63, // G723_63 DH_TALK_AAC, // AAC DH_TALK_OGG, // OGG DH_TALK_G729 = 10, // G729 DH_TALK_MPEG2, // MPEG2 DH_TALK_MPEG2_Layer2, // MPEG2-Layer2 DH_TALK_G722_1, // G.722.1 DH_TALK_ADPCM = 21, // ADPCM DH_TALK_MP3 = 22, // MP3 } DH_TALK_CODING_TYPE; ///@brief 录像文件类型 typedef enum __NET_RECORD_TYPE { NET_RECORD_TYPE_ALL, // 所有录像 NET_RECORD_TYPE_NORMAL, // 普通录像 NET_RECORD_TYPE_ALARM, // 外部报警录像 NET_RECORD_TYPE_MOTION, // 动检报警录像 }NET_RECORD_TYPE; ///@brief 对讲方式 typedef enum __EM_USEDEV_MODE { DH_TALK_CLIENT_MODE, // 设置客户端方式进行语音对讲 DH_TALK_SERVER_MODE, // 设置服务器方式进行语音对讲 DH_TALK_ENCODE_TYPE, // 设置语音对讲编码格式(对应DHDEV_TALKDECODE_INFO) DH_ALARM_LISTEN_MODE, // 设置报警订阅方式 DH_CONFIG_AUTHORITY_MODE, // 设置通过权限进行配置管理 DH_TALK_TALK_CHANNEL, // 设置对讲通道(0~MaxChannel-1) DH_RECORD_STREAM_TYPE, // 设置待查询及按时间回放的录像码流类型(0-主辅码流,1-主码流,2-辅码流1,3-辅码流2,4-辅码流3,) DH_TALK_SPEAK_PARAM, // 设置语音参数,对应结构体 NET_SPEAK_PARAM DH_RECORD_TYPE, // 设置按时间录像回放及下载的录像文件类型(详见NET_RECORD_TYPE) DH_TALK_MODE3, // 设置三代设备的语音对讲参数, 对应结构体 NET_TALK_EX DH_PLAYBACK_REALTIME_MODE , // 设置实时回放功能(0-关闭,1开启) DH_TALK_TRANSFER_MODE, // 设置语音对讲是否为转发模式, 对应结构体 NET_TALK_TRANSFER_PARAM DH_TALK_VT_PARAM, // 设置VT对讲参数, 对应结构体 NET_VT_TALK_PARAM DH_TARGET_DEV_ID, // 设置目标设备标示符, 用以查询新系统能力(非0-转发系统能力消息) DH_AUDIO_RECORD_LENGTH = 15, // 设置录音缓存, 对应为一个int } EM_USEDEV_MODE; ///@brief 鞋子类型 typedef enum tagEM_SHOES_TYPE { EM_SHOES_UNKNOWN, // 未知 EM_SHOES_LEATHER, // 皮鞋 EM_SHOES_BOOTS, // 靴子 EM_SHOES_CASUAL, // 休闲鞋 EM_SHOES_SANDALS, // 凉鞋 EM_SHOES_SNEAKERS, // 运动鞋 EM_SHOES_SLIPPER, // 拖鞋 EM_SHOES_OTHERS , // 其他 EM_SHOES_SHOECOVER, // 鞋套 } EM_SHOES_TYPE; ///@brief 音频数据 typedef enum __EM_TALK_DATA_TYPE { NET_TALK_DATA_LOCAL_AUDIO = 0, // 本地录音库采集的音频数据 NET_TALK_DATA_RECV_AUDIO, // 收到的设备发过来的音频数据 NET_TALK_DATA_RESPOND, // 对讲呼叫响应数据 NET_TALK_DATA_RECV_VIDEO, // 收到的设备发过来的视频数据 }EM_TALK_DATA_TYPE; ///@brief 视频编码格式 typedef struct tagNET_TALK_VIDEO_FORMAT { DWORD dwSize; DWORD dwCompression; // 视频压缩格式 int nFrequency; // 视频采样频率 }NET_TALK_VIDEO_FORMAT; ///@brief 三代设备的语音对讲参数,对应CLIENT_SetDeviceMode()的DH_TALK_MODE3命令 typedef struct tagNET_TALK_EX { DWORD dwSize; int nChannel; // 通道号 int nAudioPort; // 音频传输侦听端口 int nWaitTime; // 等待时间, 单位ms,为0则使用默认值 HWND hVideoWnd; // 可视对讲视频显示窗口 NET_TALK_VIDEO_FORMAT stuVideoFmt; // 视频编码格式 char szMulticastAddr[DH_MAX_IPADDR_LEN_EX]; // 组播地址 WORD wMulticastLocalPort; // 组播本地端口 WORD wMulticastRemotePort; // 组播远程端口 }NET_TALK_EX; ///@brief AMR编码类型 typedef enum __EM_ARM_ENCODE_MODE { DH_TALK_AMR_AMR475 = 1, // AMR475编码 DH_TALK_AMR_AMR515, // AMR515编码 DH_TALK_AMR_AMR59, // AMR59编码 DH_TALK_AMR_AMR67, // AMR67编码 DH_TALK_AMR_AMR74, // AMR74编码 DH_TALK_AMR_AMR795, // AMR795编码 DH_TALK_AMR_AMR102, // AMR102编码 DH_TALK_AMR_AMR122, // AMR122编码 } EM_ARM_ENCODE_MODE; ///@brief 语音参数 typedef struct __NET_SPEAK_PARAM { DWORD dwSize; // 结构体大小 int nMode; // 0:对讲(默认模式),1:喊话;从喊话切换到对讲要重新设置 // 2: 单向监听,若切换到其他模式要重新设置 int nSpeakerChannel; // 扬声器通道号,喊话时有效 BOOL bEnableWait; // 开启对讲时是否等待设备的响应,默认不等待.TRUE:等待;FALSE:不等待 // 超时时间由CLIENT_SetNetworkParam设置,对应NET_PARAM的nWaittime字段 } NET_SPEAK_PARAM; ///@brief 是否开启语音对讲的转发模式 typedef struct tagNET_TALK_TRANSFER_PARAM { DWORD dwSize; BOOL bTransfer; // 是否开启语音对讲转发模式, TRUE: 开启转发, FALSE: 关闭转发 }NET_TALK_TRANSFER_PARAM; /////////////////////////////控制相关///////////////////////////////// ///@brief 控制类型,对应 CLIENT_ControlDevice 接口 typedef enum _CtrlType { DH_CTRL_REBOOT = 0, // 重启设备 DH_CTRL_SHUTDOWN, // 关闭设备 DH_CTRL_DISK, // 硬盘管理 DH_KEYBOARD_POWER = 3, // 网络键盘 DH_KEYBOARD_ENTER, DH_KEYBOARD_ESC, DH_KEYBOARD_UP, DH_KEYBOARD_DOWN, DH_KEYBOARD_LEFT, DH_KEYBOARD_RIGHT, DH_KEYBOARD_BTN0, DH_KEYBOARD_BTN1, DH_KEYBOARD_BTN2, DH_KEYBOARD_BTN3, DH_KEYBOARD_BTN4, DH_KEYBOARD_BTN5, DH_KEYBOARD_BTN6, DH_KEYBOARD_BTN7, DH_KEYBOARD_BTN8, DH_KEYBOARD_BTN9, DH_KEYBOARD_BTN10, DH_KEYBOARD_BTN11, DH_KEYBOARD_BTN12, DH_KEYBOARD_BTN13, DH_KEYBOARD_BTN14, DH_KEYBOARD_BTN15, DH_KEYBOARD_BTN16, DH_KEYBOARD_SPLIT, DH_KEYBOARD_ONE, DH_KEYBOARD_NINE, DH_KEYBOARD_ADDR, DH_KEYBOARD_INFO, DH_KEYBOARD_REC, DH_KEYBOARD_FN1, DH_KEYBOARD_FN2, DH_KEYBOARD_PLAY, DH_KEYBOARD_STOP, DH_KEYBOARD_SLOW, DH_KEYBOARD_FAST, DH_KEYBOARD_PREW, DH_KEYBOARD_NEXT, DH_KEYBOARD_JMPDOWN, DH_KEYBOARD_JMPUP, DH_KEYBOARD_10PLUS, DH_KEYBOARD_SHIFT, DH_KEYBOARD_BACK, DH_KEYBOARD_LOGIN , // 新网络键盘功能 DH_KEYBOARD_CHNNEL , // 切换视频通道 DH_TRIGGER_ALARM_IN = 100, // 触发报警输入 DH_TRIGGER_ALARM_OUT, // 触发报警输出 DH_CTRL_MATRIX, // 矩阵控制 DH_CTRL_SDCARD, // SD卡控制(IPC产品)参数同硬盘控制 DH_BURNING_START, // 刻录机控制,开始刻录 DH_BURNING_STOP, // 刻录机控制,结束刻录 DH_BURNING_ADDPWD, // 刻录机控制,叠加密码(以'\0'为结尾的字符串,最大长度8位) DH_BURNING_ADDHEAD, // 刻录机控制,叠加片头(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n') DH_BURNING_ADDSIGN, // 刻录机控制,叠加打点到刻录信息(参数无) DH_BURNING_ADDCURSTOMINFO, // 刻录机控制,自定义叠加(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n') DH_CTRL_RESTOREDEFAULT, // 恢复设备的默认设置 DH_CTRL_CAPTURE_START, // 触发设备抓图 DH_CTRL_CLEARLOG, // 清除日志(不支持二次认证和鉴权) DH_TRIGGER_ALARM_WIRELESS = 200, // 触发无线报警(IPC产品) DH_MARK_IMPORTANT_RECORD, // 标识重要录像文件 DH_CTRL_DISK_SUBAREA, // 网络硬盘分区 DH_BURNING_ATTACH, // 刻录机控制,附件刻录. DH_BURNING_PAUSE, // 刻录暂停 DH_BURNING_CONTINUE, // 刻录继续 DH_BURNING_POSTPONE, // 刻录顺延 DH_CTRL_OEMCTRL, // 报停控制 DH_BACKUP_START, // 设备备份开始 DH_BACKUP_STOP, // 设备备份停止 DH_VIHICLE_WIFI_ADD, // 车载手动增加WIFI配置 DH_VIHICLE_WIFI_DEC, // 车载手动删除WIFI配置 DH_BUZZER_START, // 蜂鸣器控制开始 DH_BUZZER_STOP, // 蜂鸣器控制结束 DH_REJECT_USER, // 剔除用户 DH_SHIELD_USER, // 屏蔽用户 DH_RAINBRUSH, // 智能交通, 雨刷控制 DH_MANUAL_SNAP, // 智能交通, 手动抓拍 (对应结构体 MANUAL_SNAP_PARAMETER) DH_MANUAL_NTP_TIMEADJUST, // 手动NTP校时 DH_NAVIGATION_SMS, // 导航信息和短消息 DH_CTRL_ROUTE_CROSSING, // 路线点位信息 DH_BACKUP_FORMAT, // 格式化备份设备 DH_DEVICE_LOCALPREVIEW_SLIPT, // 控制设备端本地预览分割(对应结构体DEVICE_LOCALPREVIEW_SLIPT_PARAMETER) DH_CTRL_INIT_RAID, // RAID初始化 DH_CTRL_RAID, // RAID操作 DH_CTRL_SAPREDISK, // 热备盘操作 DH_WIFI_CONNECT, // 手动发起WIFI连接(对应结构体WIFI_CONNECT) DH_WIFI_DISCONNECT, // 手动断开WIFI连接(对应结构体WIFI_CONNECT) DH_CTRL_ARMED, // 布撤防操作 DH_CTRL_IP_MODIFY, // 修改前端IP(对应结构体DHCTRL_IPMODIFY_PARAM) DH_CTRL_WIFI_BY_WPS, // wps连接wifi(对应结构体DHCTRL_CONNECT_WIFI_BYWPS) DH_CTRL_FORMAT_PATITION, // 格式化分区(对应结构体DH_FORMAT_PATITION) DH_CTRL_EJECT_STORAGE, // 手动卸载设备(对应结构体DH_EJECT_STORAGE_DEVICE) DH_CTRL_LOAD_STORAGE, // 手动装载设备(对应结构体DH_LOAD_STORAGE_DEVICE) DH_CTRL_CLOSE_BURNER, // 关闭刻录机光驱门(对应结构体 NET_CTRL_BURNERDOOR) 一般需要等6秒 DH_CTRL_EJECT_BURNER, // 弹出刻录机光驱门(对应结构体 NET_CTRL_BURNERDOOR) 一般需要等4秒 DH_CTRL_CLEAR_ALARM, // 消警(对应结构体 NET_CTRL_CLEAR_ALARM) DH_CTRL_MONITORWALL_TVINFO, // 电视墙信息显示(对应结构体 NET_CTRL_MONITORWALL_TVINFO) DH_CTRL_START_VIDEO_ANALYSE, // 开始视频智能分析(对应结构体 NET_CTRL_START_VIDEO_ANALYSE) DH_CTRL_STOP_VIDEO_ANALYSE, // 停止视频智能分析(对应结构体 NET_CTRL_STOP_VIDEO_ANALYSE) DH_CTRL_UPGRADE_DEVICE, // 控制启动设备升级,由设备独立完成升级过程,不需要传输升级文件 DH_CTRL_MULTIPLAYBACK_CHANNALES, // 切换多通道预览回放的通道(对应结构体 NET_CTRL_MULTIPLAYBACK_CHANNALES) DH_CTRL_SEQPOWER_OPEN, // 电源时序器打开开关量输出口(对应 NET_CTRL_SEQPOWER_PARAM) DH_CTRL_SEQPOWER_CLOSE, // 电源时序器关闭开关量输出口(对应 NET_CTRL_SEQPOWER_PARAM) DH_CTRL_SEQPOWER_OPEN_ALL, // 电源时序器打开开关量输出口组(对应 NET_CTRL_SEQPOWER_PARAM) DH_CTRL_SEQPOWER_CLOSE_ALL, // 电源时序器关闭开关量输出口组(对应 NET_CTRL_SEQPOWER_PARAM) DH_CTRL_PROJECTOR_RISE, // 投影仪上升(对应 NET_CTRL_PROJECTOR_PARAM) DH_CTRL_PROJECTOR_FALL, // 投影仪下降(对应 NET_CTRL_PROJECTOR_PARAM) DH_CTRL_PROJECTOR_STOP, // 投影仪停止(对应 NET_CTRL_PROJECTOR_PARAM) DH_CTRL_INFRARED_KEY, // 红外按键(对应 NET_CTRL_INFRARED_KEY_PARAM) DH_CTRL_START_PLAYAUDIO, // 设备开始播放音频文件(对应结构体 NET_CTRL_START_PLAYAUDIO) DH_CTRL_STOP_PLAYAUDIO, // 设备停止播放音频文件 DH_CTRL_START_ALARMBELL, // 开启警号(对应结构体 NET_CTRL_ALARMBELL) DH_CTRL_STOP_ALARMBELL, // 关闭警号(对应结构体 NET_CTRL_ALARMBELL) DH_CTRL_ACCESS_OPEN, // 门禁控制-开门(对应结构体 NET_CTRL_ACCESS_OPEN) DH_CTRL_SET_BYPASS, // 设置旁路功能(对应结构体 NET_CTRL_SET_BYPASS) DH_CTRL_RECORDSET_INSERT, // 添加记录,获得记录集编号(对应 NET_CTRL_RECORDSET_INSERT_PARAM) DH_CTRL_RECORDSET_UPDATE, // 更新某记录集编号的记录(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_RECORDSET_REMOVE, // 根据记录集编号删除某记录(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_RECORDSET_CLEAR, // 清除所有记录集信息(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_ACCESS_CLOSE, // 门禁控制-关门(对应结构体 NET_CTRL_ACCESS_CLOSE) DH_CTRL_ALARM_SUBSYSTEM_ACTIVE_SET, // 报警子系统激活设置(对应结构体NET_CTRL_ALARM_SUBSYSTEM_SETACTIVE) DH_CTRL_FORBID_OPEN_STROBE, // 禁止设备端开闸(对应结构体 NET_CTRL_FORBID_OPEN_STROBE) DH_CTRL_OPEN_STROBE, // 开启道闸(对应结构体 NET_CTRL_OPEN_STROBE) DH_CTRL_TALKING_REFUSE, // 对讲拒绝接听(对应结构体 NET_CTRL_TALKING_REFUSE) DH_CTRL_ARMED_EX, // 布撤防操作(对应结构体 CTRL_ARM_DISARM_PARAM_EX), 对CTRL_ARM_DISARM_PARAM 升级,建议用这个 DH_CTRL_REMOTE_TALK, // 远程对讲控制(对应结构体NET_CTRL_REMOTETALK_PARAM) DH_CTRL_NET_KEYBOARD = 400, // 网络键盘控制(对应结构体 DHCTRL_NET_KEYBOARD) DH_CTRL_AIRCONDITION_OPEN, // 打开空调(对应结构体 NET_CTRL_OPEN_AIRCONDITION) DH_CTRL_AIRCONDITION_CLOSE, // 关闭空调(对应结构体 NET_CTRL_CLOSE_AIRCONDITION) DH_CTRL_AIRCONDITION_SET_TEMPERATURE, // 设定空调温度(对应结构体 NET_CTRL_SET_TEMPERATURE) DH_CTRL_AIRCONDITION_ADJUST_TEMPERATURE, // 调节空调温度(对应结构体 NET_CTRL_ADJUST_TEMPERATURE) DH_CTRL_AIRCONDITION_SETMODE, // 设置空调工作模式(对应结构体 NET_CTRL_ADJUST_TEMPERATURE) DH_CTRL_AIRCONDITION_SETWINDMODE, // 设置空调送风模式(对应结构体 NET_CTRL_AIRCONDITION_SETMODE) DH_CTRL_RESTOREDEFAULT_EX , // 恢复设备的默认设置新协议(对应结构体NET_CTRL_RESTORE_DEFAULT) // 恢复配置优先使用该枚举,如果接口失败, // 且CLIENT_GetLastError返回NET_UNSUPPORTED,再尝试使用DH_CTRL_RESTOREDEFAULT恢复配置 DH_CTRL_NOTIFY_EVENT, // 向设备发送事件(对应结构体 NET_NOTIFY_EVENT_DATA) DH_CTRL_SILENT_ALARM_SET, // 无声报警设置 DH_CTRL_START_PLAYAUDIOEX, // 设备开始语音播报(对应结构体 NET_CTRL_START_PLAYAUDIOEX) DH_CTRL_STOP_PLAYAUDIOEX, // 设备停止语音播报 DH_CTRL_CLOSE_STROBE, // 关闭道闸(对应结构体 NET_CTRL_CLOSE_STROBE) DH_CTRL_SET_ORDER_STATE, // 设置车位预定状态(对应结构体 NET_CTRL_SET_ORDER_STATE) DH_CTRL_RECORDSET_INSERTEX, // 添加信息记录,获得记录集编号(对应 NET_CTRL_RECORDSET_INSERT_PARAM) DH_CTRL_RECORDSET_UPDATEEX, // 更新信息记录集编号的记录(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_CAPTURE_FINGER_PRINT, // 信息采集(对应结构体 NET_CTRL_CAPTURE_FINGER_PRINT) DH_CTRL_ECK_LED_SET, // 停车场出入口控制器LED设置(对应结构体 NET_CTRL_ECK_LED_SET_PARAM) DH_CTRL_ECK_IC_CARD_IMPORT, // 智能停车系统出入口机IC卡信息导入(对应结构体 NET_CTRL_ECK_IC_CARD_IMPORT_PARAM) DH_CTRL_ECK_SYNC_IC_CARD, // 智能停车系统出入口机IC卡信息同步指令,收到此指令后,设备删除原有IC卡信息(对应结构体 NET_CTRL_ECK_SYNC_IC_CARD_PARAM) DH_CTRL_LOWRATEWPAN_REMOVE, // 删除指定无线设备(对应结构体 NET_CTRL_LOWRATEWPAN_REMOVE) DH_CTRL_LOWRATEWPAN_MODIFY, // 修改无线设备信息(对应结构体 NET_CTRL_LOWRATEWPAN_MODIFY) DH_CTRL_ECK_SET_PARK_INFO, // 智能停车系统出入口机设置车位信息(对应结构体 NET_CTRL_ECK_SET_PARK_INFO_PARAM) DH_CTRL_VTP_DISCONNECT, // 挂断视频电话(对应结构体 NET_CTRL_VTP_DISCONNECT) DH_CTRL_UPDATE_FILES, // 远程投放多媒体文件更新(对应结构体 NET_CTRL_UPDATE_FILES) DH_CTRL_MATRIX_SAVE_SWITCH, // 保存上下位矩阵输出关系(对应结构体 NET_CTRL_MATRIX_SAVE_SWITCH) DH_CTRL_MATRIX_RESTORE_SWITCH, // 恢复上下位矩阵输出关系(对应结构体 NET_CTRL_MATRIX_RESTORE_SWITCH) DH_CTRL_VTP_DIVERTACK, // 呼叫转发响应(对应结构体 NET_CTRL_VTP_DIVERTACK) DH_CTRL_RAINBRUSH_MOVEONCE, // 雨刷来回刷一次,雨刷模式配置为手动模式时有效(对应结构体 NET_CTRL_RAINBRUSH_MOVEONCE) DH_CTRL_RAINBRUSH_MOVECONTINUOUSLY, // 雨刷来回循环刷,雨刷模式配置为手动模式时有效(对应结构体 NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY) DH_CTRL_RAINBRUSH_STOPMOVE, // 雨刷停止刷,雨刷模式配置为手动模式时有效(对应结构体 NET_CTRL_RAINBRUSH_STOPMOVE) DH_CTRL_ALARM_ACK, // 报警事件确认(对应结构体 NET_CTRL_ALARM_ACK) // DH_CTRL_ALARM_ACK 该操作切勿在报警回调接口中调用 DH_CTRL_RECORDSET_IMPORT, // 批量导入记录集信息(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_DELIVERY_FILE, // 向视频输出口投放视频和图片文件, 楼宇对讲使用,同一时间投放(对应NET_CTRL_DELIVERY_FILE) DH_CTRL_FORCE_BREAKING, // 强制产生违章类型(对应 NET_CTRL_FORCE_BREAKING) DH_CTRL_RESTORE_EXCEPT, // 恢复除指定配置外的其他配置为默认(对应 NET_CTRL_RESTORE_EXCEPT) DH_CTRL_SET_PARK_INFO, // 设置停车信息,平台设置给相机,内容用于点阵屏显示(对应结构体 NET_CTRL_SET_PARK_INFO) DH_CTRL_CLEAR_SECTION_STAT, // 清除当前时间段内人数统计信息, 重新从0开始计算(对应结构体NET_CTRL_CLEAR_SECTION_STAT_INFO) DH_CTRL_DELIVERY_FILE_BYCAR, // 向视频输出口投放视频和图片文件, 车载使用,广告单独时间投放(对应NET_CTRL_DELIVERY_FILE_BYCAR) DH_CTRL_ECK_GUIDINGPANEL_CONTENT, // 设置诱导屏显示内容(对应结构体 NET_CTRL_ECK_GUIDINGPANEL_CONTENT) DH_CTRL_SET_SAFE_LEVEL, // 设置门禁安全等级(对应结构体,pInBuf= NET_IN_SET_SAFE_LEVEL*, pOutBuf= NET_OUT_SET_SAFE_LEVEL * ) DH_CTRL_VTP_INVITEACK, // 对讲请求回复(对应结构体 NET_CTRL_VTP_INVITEACK) DH_CTRL_ACCESS_RESET_PASSWORD, // 门禁控制-重置密码(对应结构体 NET_CTRL_ACCESS_RESET_PASSWORD) DH_CTRL_ACCESS_CALL_LIFT, // 门禁控制-呼梯(对应结构体 NET_CTRL_ACCESS_CALL_LIFT) DH_CTRL_RECORDSET_REMOVEEX, // 根据记录集编号删除某记录(对应NET_CTRL_RECORDSET_PARAM) DH_CTRL_ADJUST_BRIGHT, // 调节灯光亮度(对应结构体 NET_CTRL_ADJUST_BRIGHT) DH_CTRL_CLEARLOG_EX, // 清除日志(支持二次认证和鉴权, 对应结构体 NET_CTRL_CLEARLOG_EX) // 以下命令只在 CLIENT_ControlDeviceEx 上有效 DH_CTRL_THERMO_GRAPHY_ENSHUTTER = 0x10000, // 设置热成像快门启用/禁用, pInBuf= NET_IN_THERMO_EN_SHUTTER*, pOutBuf= NET_OUT_THERMO_EN_SHUTTER * DH_CTRL_RADIOMETRY_SETOSDMARK, // 设置测温项的osd为高亮, pInBuf= NET_IN_RADIOMETRY_SETOSDMARK*, pOutBuf= NET_OUT_RADIOMETRY_SETOSDMARK * DH_CTRL_AUDIO_REC_START_NAME, // 开启音频录音并得到录音名, pInBuf = NET_IN_AUDIO_REC_MNG_NAME *, pOutBuf = NET_OUT_AUDIO_REC_MNG_NAME * DH_CTRL_AUDIO_REC_STOP_NAME, // 关闭音频录音并返回文件名称, pInBuf = NET_IN_AUDIO_REC_MNG_NAME *, pOutBuf = NET_OUT_AUDIO_REC_MNG_NAME * DH_CTRL_SNAP_MNG_SNAP_SHOT, // 即时抓图(又名手动抓图), pInBuf = NET_IN_SNAP_MNG_SHOT *, pOutBuf = NET_OUT_SNAP_MNG_SHOT * DH_CTRL_LOG_STOP, // 强制同步缓存数据到数据库并关闭数据库, pInBuf = NET_IN_LOG_MNG_CTRL *, pOutBuf = NET_OUT_LOG_MNG_CTRL * DH_CTRL_LOG_RESUME, // 恢复数据库, pInBuf = NET_IN_LOG_MNG_CTRL *, pOutBuf = NET_OUT_LOG_MNG_CTRL * DH_CTRL_POS_ADD, // 增加一个Pos设备, pInBuf = NET_IN_POS_ADD *, pOutBuf = NET_OUT_POS_ADD * DH_CTRL_POS_REMOVE, // 删除一个Pos设备, pInBuf = NET_IN_POS_REMOVE *, pOutBuf = NET_OUT_POS_REMOVE * DH_CTRL_POS_REMOVE_MULTI, // 批量删除Pos设备, pInBuf = NET_IN_POS_REMOVE_MULTI *, pOutBuf = NET_OUT_POS_REMOVE_MULTI * DH_CTRL_POS_MODIFY, // 修改一个Pos设备, pInBuf = NET_IN_POS_ADD *, pOutBuf = NET_OUT_POS_ADD * DH_CTRL_SET_SOUND_ALARM, // 触发有声报警, pInBuf = NET_IN_SOUND_ALARM *, pOutBuf = NET_OUT_SOUND_ALARM * DH_CTRL_AUDIO_MATRIX_SILENCE, // 音频举证一键静音控制(对应pInBuf = NET_IN_AUDIO_MATRIX_SILENCE, pOutBuf = NET_OUT_AUDIO_MATRIX_SILENCE) DH_CTRL_MANUAL_UPLOAD_PICTURE, // 设置手动上传, pInBuf = NET_IN_MANUAL_UPLOAD_PICTURE *, pOutBUf = NET_OUT_MANUAL_UPLOAD_PICTURE * DH_CTRL_REBOOT_NET_DECODING_DEV, // 重启网络解码设备, pInBuf = NET_IN_REBOOT_NET_DECODING_DEV *, pOutBuf = NET_OUT_REBOOT_NET_DECODING_DEV * DH_CTRL_SET_IC_SENDER, // ParkingControl 设置发卡设备, pInBuf = NET_IN_SET_IC_SENDER *, pOutBuf = NET_OUT_SET_IC_SENDER * DH_CTRL_SET_MEDIAKIND, // 设置预览码流组成,如仅音频,仅视频,音视频 pInBuf = NET_IN_SET_MEDIAKIND *, pOutBuf = NET_OUT_SET_MEDIAKIND * // 配合功能列表能力集使用, EN_ENCODE_CHN,2-预览支持音视频分开获取 DH_CTRL_LOWRATEWPAN_ADD, // 增加无线设备信息(对应结构体 pInBuf = NET_CTRL_LOWRATEWPAN_ADD *, pOutBUf = NULL) DH_CTRL_LOWRATEWPAN_REMOVEALL, // 删除所有的无线设备信息(对应结构体 pInBuf = NET_CTRL_LOWRATEWPAN_REMOVEALL *, pOutBUf = NULL) DH_CTRL_SET_DOOR_WORK_MODE, // 设置门锁工作模式(对应结构体 pInBuf = NET_IN_CTRL_ACCESS_SET_DOOR_WORK_MODE *, pOutBUf = NULL) DH_CTRL_TEST_MAIL, // 测试邮件 pInBuf = NET_IN_TEST_MAIL *, pOutBUf = NET_OUT_TEST_MAIL * DH_CTRL_CONTROL_SMART_SWITCH, // 控制智能开关 pInBuf = NET_IN_CONTROL_SMART_SWITCH *, pOutBUf = NET_OUT_CONTROL_SMART_SWITCH * DH_CTRL_LOWRATEWPAN_SETWORKMODE, // 设置探测器的工作模式(对应结构体pInBuf = NET_IN_CTRL_LOWRATEWPAN_SETWORKMODE *, pOutBUf = NULL) DH_CTRL_COAXIAL_CONTROL_IO, // 发送同轴IO控制命令(对应结构体pInBuf = NET_IN_CONTROL_COAXIAL_CONTROL_IO*, pOutBUf = NET_OUT_CONTROL_COAXIAL_CONTROL_IO*) DH_CTRL_START_REMOTELOWRATEWPAN_ALARMBELL, // 开启无线警号 (对应结构体pInBuf = NET_IN_START_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_START_REMOTELOWRATEWPAN_ALARMBELL*) DH_CTRL_STOP_REMOTELOWRATEWPAN_ALARMBELL, // 关闭无线警号 (对应结构体pInBuf = NET_IN_STOP_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_STOP_REMOTELOWRATEWPAN_ALARMBELL*) DH_CTRL_THERMO_DO_FFC, // 热成像FFC校准(对应结构体 pInBuf = NET_IN_THERMO_DO_FFC *,pOutBuf = NET_OUT_THERMO_DO_FFC *) DH_CTRL_THERMO_FIX_FOCUS, // 热成像双目定焦调(对应结构体 pInBuf = NET_IN_THERMO_FIX_FOCUS *,pOutBuf = NET_OUT_THERMO_FIX_FOCUS *) DH_CTRL_SET_THIRD_CALLSTATUS, // 设置对讲状态(对应结构体pInBuf = NET_IN_VTP_THIRDCALL_STATUS*, pOutBuf = NET_OUT_VTP_THIRDCALL_STATUS*) DH_CTRL_ACCESS_CLEAR_STATUS, // 门禁-清除用户进出门状态 (对应结构体pInBuf = NET_IN_ACCESS_CLEAR_STATUS*, pOutBuf = NET_OUT_ACCESS_CLEAR_STATUS *) DH_CTRL_ACCESS_DEAL_RECORD, // 门禁-查询/设置用户进出门记录 (对应结构体pInBuf = NET_IN_ACCESS_DEAL_RECORD*, pOutBuf = NET_OUT_ACCESS_DEAL_RECORD*) DH_CTRL_QUERY_DELIVERED_FILE, // 向视频输出口查询广告信息,楼宇对讲使用,(对应结构体pInBuf = NET_IN_CTRL_QUERY_DELIVERYE_FILE*, pOutBuf = NET_OUT_CTRL_QUERY_DELIVERYE_FILE*) DH_CTRL_SET_PARK_CONTROL_INFO, // 设置停车控制信息(点阵屏和语音播报的控制)(对应结构体pInBuf = NET_IN_SET_PARK_CONTROL_INFO*, pOutBuf = NET_OUT_SET_PARK_CONTROL_INFO*) DH_CTRL_CHANGE_SUSTAIN, // 修改图片广告文件的停留时间,(对应结构体pInBuf = NET_IN_CTRL_CHANGE_SUSTAIN*, pOutBuf = NET_OUT_CTRL_CHANGE_SUSTAIN*) DH_CTRL_DEVVIDEOINPUT_LIGHT, // 控制灯光,(对应结构体pInBuf = NET_IN_CTRL_DEVVIDEOINPUT_LIGHT*, pOutBuf = NET_OUT_CTRL_DEVVIDEOINPUT_LIGHT*) DH_CTRL_SNAP_TASK_ADD, // 下发抓图任务(对应结构体pInBuf = NET_IN_CTRL_SNAP_TASK_ADD*, pOutBuf = NET_OUT_CTRL_SNAP_TASK_ADD*) DH_CTRL_QUERY_DELIVERED_FILE_EX, // 向视频输出口查询广告信息扩展,楼宇对讲使用,(对应结构体pInBuf = NET_IN_CTRL_QUERY_DELIVERYE_FILE_EX*, pOutBuf = NET_OUT_CTRL_QUERY_DELIVERYE_FILE_EX*) /**********LowRateWPAN控制(0x10100-0x10150)**********************************************************************************/ DH_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL = 0x10100, // 获取无线设备信号强度(对应结构体 pInBuf = NET_IN_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL *,pOutBuf = NET_OUT_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL *) DH_CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM, // 设置配件信息(对应结构体pInBuf = NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM *,pOutBuf = NULL) } CtrlType; #define DH_MAX_WIRELESS_DEV_NUM 80 //无线设备最大数量 ///@brief 获取无线设备信号强度入参(对应DH_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL) typedef struct tagNET_IN_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL { DWORD dwSize; //结构体大小 int nStartIndex; //开始的索引号,从0开始 int nDevStateNum; //本次获取的设备状态条数,此值小于等于能力集中MaxPageSize字段的值 }NET_IN_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL; ///@brief 无线设备信号信息 typedef struct tagNET_WIRELESSDEVSIGNAL_INFO { char szDevSN[32]; //设备序列号 UINT unSignal; //无线信号强度百分比 BYTE byReserver[512]; //保留字节 }NET_WIRELESSDEVSIGNAL_INFO; ///@brief 获取无线设备信号强度出参(对应DH_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL) typedef struct tagNET_OUT_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL { DWORD dwSize; //结构体大小 int nWirelessDevNum; //获取无线设备数量 NET_WIRELESSDEVSIGNAL_INFO stuDevSignal[DH_MAX_WIRELESS_DEV_NUM];//无线设备信号强度 }NET_OUT_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL; ///@brief 保存上下位矩阵输出关系参数(对应命令DH_CTRL_MATRIX_SAVE_SWITCH) typedef struct tagNET_CTRL_MATRIX_SAVE_SWITCH { DWORD dwSize; const char* pszName; // 上下位矩阵输出关系名称 } NET_CTRL_MATRIX_SAVE_SWITCH; ///@brief 恢复上下位矩阵输出关系参数(对应命令DH_CTRL_MATRIX_RESTORE_SWITCH) typedef struct tagNET_CTRL_MATRIX_RESTORE_SWITCH { DWORD dwSize; const char* pszName; // 上下位矩阵输出关系名称 } NET_CTRL_MATRIX_RESTORE_SWITCH; ///@brief 恢复默认配置新协议输入参数 typedef struct tagNET_CTRL_RESTORE_DEFAULT { DWORD dwSize; const char* szCfgNames; // 配置名称以'&&'为间隔,配置名参见dhconfigsdk.h的CLIENT_GetNewDevConfig和CLIENT_SetNewDevConfig接口的配置命令 }NET_CTRL_RESTORE_DEFAULT; ///@brief 恢复相机默认设置输入参数 typedef struct tagNET_CTRL_RESTORE_EXCEPT { DWORD dwSize; char szCfgName[DH_MAX_STRING_LEN]; // 配置名称;如果有多个配置,则用&&分割;配置名参见dhconfigsdk.h的CLIENT_GetNewDevConfig和CLIENT_SetNewDevConfig接口的配置命令 }NET_CTRL_RESTORE_EXCEPT; ///@brief 打开空调参数(对应命令DH_CTRL_AIRCONDITION_OPEN) typedef struct tagNET_CTRL_OPEN_AIRCONDITION { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 } NET_CTRL_OPEN_AIRCONDITION; ///@brief 关闭空调参数(对应命令DH_CTRL_AIRCONDITION_CLOSE) typedef struct tagNET_CTRL_CLOSE_AIRCONDITION { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 } NET_CTRL_CLOSE_AIRCONDITION; ///@brief 设置空调温度参数(对应命令DH_CTRL_AIRCONDITION_SET_TEMPERATURE) typedef struct tagNET_CTRL_SET_TEMPERATURE { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 int nTemperature; // 温度值(单位:摄氏度) } NET_CTRL_SET_TEMPERATURE; ///@brief 调节空调温度参数(对应命令DH_CTRL_AIRCONDITION_ADJUST_TEMPERATURE) typedef struct tagNET_CTRL_ADJUST_TEMPERATURE { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 int nTemperatureScale; // 设置的值, 如-1表示温度下调一度(单位:摄氏度) } NET_CTRL_ADJUST_TEMPERATURE; ///@brief 设置空调工作模式参数(对应命令DH_CTRL_AIRCONDITION_SETMODE) typedef struct tagNET_CTRL_AIRCONDITION_SETMODE { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 EM_AIRCONDITION_MODE emAirconditionMode; // 空调工作模式 int nTemperature; // 设置的值(单位:摄氏度) } NET_CTRL_AIRCONDITION_SETMODE; ///@brief 设置空调送风模式参数(对应命令DH_CTRL_AIRCONDITION_SETWINDMODE) typedef struct tagNET_CTRL_AIRCONDITION_SETWINDMODE { DWORD dwSize; char szDeviceID[DH_MAX_DEV_ID_LEN]; // 设备惟一标识符 EM_AIRCONDITION_WINDMODE emAirconditionWindMode; // 空调送风模式 } NET_CTRL_AIRCONDITION_SETWINDMODE; ///@brief IO控制命令,对应CLIENT_QueryIOControlState接口 typedef enum _IOTYPE { DH_ALARMINPUT = 1, // 控制报警输入,对应结构体为ALARM_CONTROL DH_ALARMOUTPUT = 2, // 控制报警输出,对应结构体为ALARM_CONTROL DH_DECODER_ALARMOUT = 3, // 控制报警解码器输出,对应结构体为DECODER_ALARM_CONTROL DH_WIRELESS_ALARMOUT = 5, // 控制无线报警输出,对应结构体为ALARM_CONTROL DH_ALARM_TRIGGER_MODE = 7, // 报警触发方式(手动,自动,关闭),使用TRIGGER_MODE_CONTROL结构体 } DH_IOTYPE; /////////////////////////////配置相关///////////////////////////////// ///@brief 分辨率枚举,供DH_DSP_ENCODECAP使用 typedef enum _CAPTURE_SIZE { CAPTURE_SIZE_D1, // 704*576(PAL) 704*480(NTSC),兼容WWxHH,下同 CAPTURE_SIZE_HD1, // 352*576(PAL) 352*480(NTSC) CAPTURE_SIZE_BCIF, // 704*288(PAL) 704*240(NTSC) CAPTURE_SIZE_CIF, // 352*288(PAL) 352*240(NTSC) CAPTURE_SIZE_QCIF, // 176*144(PAL) 176*120(NTSC) CAPTURE_SIZE_VGA, // 640*480 CAPTURE_SIZE_QVGA, // 320*240 CAPTURE_SIZE_SVCD, // 480*480 CAPTURE_SIZE_QQVGA, // 160*128 CAPTURE_SIZE_SVGA, // 800*592 CAPTURE_SIZE_XVGA, // 1024*768 CAPTURE_SIZE_WXGA, // 1280*800 CAPTURE_SIZE_SXGA, // 1280*1024 CAPTURE_SIZE_WSXGA, // 1600*1024 CAPTURE_SIZE_UXGA, // 1600*1200 CAPTURE_SIZE_WUXGA, // 1920*1200 CAPTURE_SIZE_LTF, // 240*192,ND1 CAPTURE_SIZE_720, // 1280*720 CAPTURE_SIZE_1080, // 1920*1080 CAPTURE_SIZE_1_3M, // 1280*960 CAPTURE_SIZE_2M, // 1872*1408,2_5M CAPTURE_SIZE_5M, // 3744*1408 CAPTURE_SIZE_3M, // 2048*1536 CAPTURE_SIZE_5_0M, // 2432*2050 CPTRUTE_SIZE_1_2M, // 1216*1024 CPTRUTE_SIZE_1408_1024, // 1408*1024 CPTRUTE_SIZE_8M, // 3296*2472 CPTRUTE_SIZE_2560_1920, // 2560*1920(5_1M) CAPTURE_SIZE_960H, // 960*576(PAL) 960*480(NTSC) CAPTURE_SIZE_960_720, // 960*720 CAPTURE_SIZE_NHD, // 640*360 CAPTURE_SIZE_QNHD, // 320*180 CAPTURE_SIZE_QQNHD, // 160*90 CAPTURE_SIZE_960_540, // 960*540 CAPTURE_SIZE_640_352, // 640*352 CAPTURE_SIZE_640_400, // 640*400 CAPTURE_SIZE_320_192, // 320*192 CAPTURE_SIZE_320_176, // 320*176 CAPTURE_SIZE_SVGA1, // 800*600 CAPTURE_SIZE_2560_1440, // 2560*1440 CAPTURE_SIZE_2304_1296, // 2304*1296 CAPTURE_SIZE_2592_1520, // 2592*1520 CAPTURE_SIZE_4000_3000, // 4000*3000 CAPTURE_SIZE_2880_2880, // 2880*2880 CAPTURE_SIZE_2880_2160, // 2880*2160 CAPTURE_SIZE_2688_1520, // 2688*1520 CAPTURE_SIZE_2592_1944, // 2592*1944 CAPTURE_SIZE_3072_1728, // 3072*1728 CAPTURE_SIZE_3072_2048, // 3072*2048 CAPTURE_SIZE_3840_2160, // 3840*2160 CAPTURE_SIZE_NR=255 } CAPTURE_SIZE; ///@brief 分辨率枚举,细分到具体分辨率 typedef enum tagEM_CAPTURE_SIZE_EX { EM_CAPTURE_SIZE_EX_D1, // D1 704*576(PAL) 704*480(NTSC),兼容WWxHH,下同 EM_CAPTURE_SIZE_EX_D1_PAL, // 704*576(PAL) EM_CAPTURE_SIZE_EX_D1_NTSC, // 704*480(NTSC) EM_CAPTURE_SIZE_EX_HD1, // HD1 352*576(PAL) 352*480(NTSC) EM_CAPTURE_SIZE_EX_HD1_PAL, // 352*576(PAL) EM_CAPTURE_SIZE_EX_HD1_NTSC, // 352*480(NTSC) EM_CAPTURE_SIZE_EX_BCIF, // BCIF 704*288(PAL) 704*240(NTSC) EM_CAPTURE_SIZE_EX_BCIF_PAL, // 704*288(PAL) EM_CAPTURE_SIZE_EX_BCIF_NTSC, // 704*240(NTSC) EM_CAPTURE_SIZE_EX_CIF, // CIF 352*288(PAL) 352*240(NTSC) EM_CAPTURE_SIZE_EX_CIF_PAL, // 352*288(PAL) EM_CAPTURE_SIZE_EX_CIF_NTSC, // 352*240(NTSC) EM_CAPTURE_SIZE_EX_QCIF, // QCIF 176*144(PAL) 176*120(NTSC) EM_CAPTURE_SIZE_EX_QCIF_PAL, // 176*144(PAL) EM_CAPTURE_SIZE_EX_QCIF_NTSC, // 176*120(NTSC) EM_CAPTURE_SIZE_EX_VGA, // 640*480 EM_CAPTURE_SIZE_EX_QVGA, // 320*240 EM_CAPTURE_SIZE_EX_SVCD, // 480*480 EM_CAPTURE_SIZE_EX_QQVGA, // 160*128 EM_CAPTURE_SIZE_EX_SVGA, // 800*592 EM_CAPTURE_SIZE_EX_XVGA, // 1024*768 EM_CAPTURE_SIZE_EX_WXGA, // 1280*800 EM_CAPTURE_SIZE_EX_SXGA, // 1280*1024 EM_CAPTURE_SIZE_EX_WSXGA, // 1600*1024 EM_CAPTURE_SIZE_EX_UXGA, // 1600*1200 EM_CAPTURE_SIZE_EX_WUXGA, // 1920*1200 EM_CAPTURE_SIZE_EX_LTF, // 240*192,ND1 EM_CAPTURE_SIZE_EX_720, // 1280*720 EM_CAPTURE_SIZE_EX_1080, // 1920*1080 EM_CAPTURE_SIZE_EX_1_3M, // 1280*960 EM_CAPTURE_SIZE_EX_2M, // 1872*1408,2_5M EM_CAPTURE_SIZE_EX_5M, // 3744*1408 EM_CAPTURE_SIZE_EX_3M, // 2048*1536 EM_CAPTURE_SIZE_EX_5_0M, // 2432*2050 EM_CAPTURE_SIZE_EX_1_2M, // 1216*1024 EM_CAPTURE_SIZE_EX_1408_1024, // 1408*1024 EM_CAPTURE_SIZE_EX_8M, // 3296*2472 EM_CAPTURE_SIZE_EX_2560_1920, // 2560*1920(5_1M) EM_CAPTURE_SIZE_EX_960H, // 960H 960*576(PAL) 960*480(NTSC) EM_CAPTURE_SIZE_EX_960H_PAL, // 960*576(PAL) EM_CAPTURE_SIZE_EX_960H_NTSC, // 960*480(NTSC) EM_CAPTURE_SIZE_EX_960_720, // 960*720 EM_CAPTURE_SIZE_EX_NHD, // 640*360 EM_CAPTURE_SIZE_EX_QNHD, // 320*180 EM_CAPTURE_SIZE_EX_QQNHD, // 160*90 EM_CAPTURE_SIZE_EX_960_540, // 960*540 EM_CAPTURE_SIZE_EX_640_352, // 640*352 EM_CAPTURE_SIZE_EX_640_400, // 640*400 EM_CAPTURE_SIZE_EX_320_192, // 320*192 EM_CAPTURE_SIZE_EX_320_176, // 320*176 EM_CAPTURE_SIZE_EX_SVGA1, // 800*600 EM_CAPTURE_SIZE_EX_2560_1440, // 2560*1440 EM_CAPTURE_SIZE_EX_2304_1296, // 2304*1296 EM_CAPTURE_SIZE_EX_2592_1520, // 2592*1520 EM_CAPTURE_SIZE_EX_4000_3000, // 4000*3000 EM_CAPTURE_SIZE_EX_2880_2880, // 2880*2880 EM_CAPTURE_SIZE_EX_2880_2160, // 2880*2160 EM_CAPTURE_SIZE_EX_2688_1520, // 2688*1520 EM_CAPTURE_SIZE_EX_2592_1944, // 2592*1944 EM_CAPTURE_SIZE_EX_3072_1728, // 3072*1728 EM_CAPTURE_SIZE_EX_3072_2048, // 3072*2048 EM_CAPTURE_SIZE_EX_3840_2160, // 3840*2160 EM_CAPTURE_SIZE_EX_NR=255 } EM_CAPTURE_SIZE_EX; ///@brief 配置文件类型,供CLIENT_ExportConfigFile接口使用 typedef enum __DH_CONFIG_FILE_TYPE { DH_CONFIGFILE_ALL = 0, // 全部配置文件 DH_CONFIGFILE_LOCAL, // 本地配置文件 DH_CONFIGFILE_NETWORK, // 网络配置文件 DH_CONFIGFILE_USER, // 用户配置文件 } DH_CONFIG_FILE_TYPE; ///@brief NTP typedef enum __DH_TIME_ZONE_TYPE { DH_TIME_ZONE_0, // (0, 0*3600,"GMT+00:00") DH_TIME_ZONE_1, // (1, 1*3600,"GMT+01:00") DH_TIME_ZONE_2, // (2, 2*3600,"GMT+02:00") DH_TIME_ZONE_3, // (3, 3*3600,"GMT+03:00") DH_TIME_ZONE_4, // (4, 3*3600+1800,"GMT+03:30") DH_TIME_ZONE_5, // (5, 4*3600,"GMT+04:00") DH_TIME_ZONE_6, // (6, 4*3600+1800,"GMT+04:30") DH_TIME_ZONE_7, // (7, 5*3600,"GMT+05:00") DH_TIME_ZONE_8, // (8, 5*3600+1800,"GMT+05:30") DH_TIME_ZONE_9, // (9, 5*3600+1800+900,"GMT+05:45") DH_TIME_ZONE_10, // (10, 6*3600,"GMT+06:00") DH_TIME_ZONE_11, // (11, 6*3600+1800,"GMT+06:30") DH_TIME_ZONE_12, // (12, 7*3600,"GMT+07:00") DH_TIME_ZONE_13, // (13, 8*3600,"GMT+08:00") DH_TIME_ZONE_14, // (14, 9*3600,"GMT+09:00") DH_TIME_ZONE_15, // (15, 9*3600+1800,"GMT+09:30") DH_TIME_ZONE_16, // (16, 10*3600,"GMT+10:00") DH_TIME_ZONE_17, // (17, 11*3600,"GMT+11:00") DH_TIME_ZONE_18, // (18, 12*3600,"GMT+12:00") DH_TIME_ZONE_19, // (19, 13*3600,"GMT+13:00") DH_TIME_ZONE_20, // (20, -1*3600,"GMT-01:00") DH_TIME_ZONE_21, // (21, -2*3600,"GMT-02:00") DH_TIME_ZONE_22, // (22, -3*3600,"GMT-03:00") DH_TIME_ZONE_23, // (23, -3*3600-1800,"GMT-03:30") DH_TIME_ZONE_24, // (24, -4*3600,"GMT-04:00") DH_TIME_ZONE_25, // (25, -5*3600,"GMT-05:00") DH_TIME_ZONE_26, // (26, -6*3600,"GMT-06:00") DH_TIME_ZONE_27, // (27, -7*3600,"GMT-07:00") DH_TIME_ZONE_28, // (28, -8*3600,"GMT-08:00") DH_TIME_ZONE_29, // (29, -9*3600,"GMT-09:00") DH_TIME_ZONE_30, // (30, -10*3600,"GMT-10:00") DH_TIME_ZONE_31, // (31, -11*3600,"GMT-11:00") DH_TIME_ZONE_32, // (32, -12*3600,"GMT-12:00") } DH_TIME_ZONE_TYPE; ///@brief 抓图类型 typedef enum _SNAP_TYPE { SNAP_TYP_TIMING = 0, SNAP_TYP_ALARM, SNAP_TYP_NUM = 2, } SNAP_TYPE; ///@brief 连接状态 typedef enum _CONNECT_STATE { CONNECT_STATE_UNCONNECT = 0, // 未连连接 CONNECT_STATE_CONNECTING, // 正在连接 CONNECT_STATE_CONNECTED, // 已连接 CONNECT_STATE_EMPTY, // 通道未配置,无信息 CONNECT_STATE_CHANGED, // 连接的设备信息有改动 CONNECT_STATE_ERROR = 255, // 未知设备状态 } CONNECT_STATE; ///@brief 抓拍模式 typedef enum tagDH_TRAFFIC_SNAP_MODE { DH_TRAFFIC_SNAP_MODE_COIL = 1, // 线圈抓拍 DH_TRAFFIC_SNAP_MODE_COIL_PICANALYSIS, // 线圈抓拍, 图片分析 DH_TRAFFIC_SNAP_MODE_STREAM, // 视频抓拍 DH_TRAFFIC_SNAP_MODE_STREAM_IDENTIFY, // 视频抓拍, 并且识别 } DH_TRAFFIC_SNAP_MODE; ///@brief 车位灯类型 typedef enum { NET_CARPORTLIGHT_TYPE_RED, // 红灯 NET_CARPORTLIGHT_TYPE_GREEN, // 绿灯 }NET_CARPORTLIGHT_TYPE; ///@brief 车位灯亮灯方式 typedef enum { NET_CARPORTLIGHT_MODE_OFF, // 灭 NET_CARPORTLIGHT_MODE_ON, // 亮 NET_CARPORTLIGHT_MODE_GLINT, // 闪烁 }NET_CARPORTLIGHT_MODE; /////////////////////////////智能交通相关///////////////////////////////// ///@brief 禁止/允许名单操作类型 typedef enum _EM_OPERATE_TYPE { NET_TRAFFIC_LIST_INSERT, // 增加记录操作(对应结构体 NET_INSERT_RECORD_INFO) NET_TRAFFIC_LIST_UPDATE, // 更新记录操作(对应结构体 NET_UPDATE_RECORD_INFO) NET_TRAFFIC_LIST_REMOVE, // 删除记录操作(对应结构体 NET_REMOVE_RECORD_INFO) NET_TRAFFIC_LIST_MAX, }EM_RECORD_OPERATE_TYPE ; ///@brief 车牌类型 typedef enum _EM_NET_PLATE_TYPE { NET_PLATE_TYPE_UNKNOWN, NET_PLATE_TYPE_NORMAL, // "Normal" 蓝牌黑牌 NET_PLATE_TYPE_YELLOW, // "Yellow" 黄牌 NET_PLATE_TYPE_DOUBLEYELLOW, // "DoubleYellow" 双层黄尾牌 NET_PLATE_TYPE_POLICE, // "Police" 警牌 NET_PLATE_TYPE_WJ, NET_PLATE_TYPE_OUTERGUARD, NET_PLATE_TYPE_DOUBLEOUTERGUARD, NET_PLATE_TYPE_SAR, // "SAR" 港澳特区号牌 NET_PLATE_TYPE_TRAINNING, // "Trainning" 教练车号牌 NET_PLATE_TYPE_PERSONAL, // "Personal" 个性号牌 NET_PLATE_TYPE_AGRI, // "Agri" 农用牌 NET_PLATE_TYPE_EMBASSY, // "Embassy" 使馆号牌 NET_PLATE_TYPE_MOTO, // "Moto" 摩托车号牌 NET_PLATE_TYPE_TRACTOR, // "Tractor" 拖拉机号牌 NET_PLATE_TYPE_OFFICIALCAR, // "OfficialCar" 公务车 NET_PLATE_TYPE_PERSONALCAR, // "PersonalCar" 私家车 NET_PLATE_TYPE_WARCAR, NET_PLATE_TYPE_OTHER, // "Other" 其他号牌 NET_PLATE_TYPE_CIVILAVIATION, // "Civilaviation" 民航号牌 NET_PLATE_TYPE_BLACK, // "Black" 黑牌 NET_PLATE_TYPE_PURENEWENERGYMICROCAR, // "PureNewEnergyMicroCar" 纯电动新能源小车 NET_PLATE_TYPE_MIXEDNEWENERGYMICROCAR, // "MixedNewEnergyMicroCar" 混合新能源小车 NET_PLATE_TYPE_PURENEWENERGYLARGECAR, // "PureNewEnergyLargeCar" 纯电动新能源大车 NET_PLATE_TYPE_MIXEDNEWENERGYLARGECAR, // "MixedNewEnergyLargeCar" 混合新能源大车 NET_PLATE_TYPE_HONGKONG, // "Hongkong" 香港号牌 NET_PLATE_TYPE_MAKAO, // "Makao" 澳门号牌 }EM_NET_PLATE_TYPE; ///@brief 车牌颜色 typedef enum _EM_NET_PLATE_COLOR_TYPE { NET_PLATE_COLOR_OTHER, // 其他颜色 NET_PLATE_COLOR_BLUE, // 蓝色 "Blue" NET_PLATE_COLOR_YELLOW, // 黄色 "Yellow" NET_PLATE_COLOR_WHITE, // 白色 "White" NET_PLATE_COLOR_BLACK, // 黑色 "Black" NET_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT, // 黄底黑字 "YellowbottomBlackText" NET_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT, // 蓝底白字 "BluebottomWhiteText" NET_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT, // 黑底白字 "BlackBottomWhiteText" NET_PLATE_COLOR_SHADOW_GREEN, // 渐变绿 "ShadowGreen" NET_PLATE_COLOR_YELLOW_GREEN, // 黄绿双拼 "YellowGreen" }EM_NET_PLATE_COLOR_TYPE; ///@brief 车辆类型 typedef enum _EM_NET_VEHICLE_TYPE { NET_VEHICLE_TYPE_UNKNOW, // 未知类型 NET_VEHICLE_TYPE_MOTOR, // "Motor" 机动车 NET_VEHICLE_TYPE_NON_MOTOR, // "Non-Motor"非机动车 NET_VEHICLE_TYPE_BUS, // "Bus"公交车 NET_VEHICLE_TYPE_BICYCLE, // "Bicycle" 自行车 NET_VEHICLE_TYPE_MOTORCYCLE, // "Motorcycle"摩托车 NET_VEHICLE_TYPE_UNLICENSEDMOTOR, // "UnlicensedMotor": 无牌机动车 NET_VEHICLE_TYPE_LARGECAR, // "LargeCar" 大型汽车 NET_VEHICLE_TYPE_MICROCAR, // "MicroCar" 小型汽车 NET_VEHICLE_TYPE_EMBASSYCAR, // "EmbassyCar" 使馆汽车 NET_VEHICLE_TYPE_MARGINALCAR, // "MarginalCar" 领馆汽车 NET_VEHICLE_TYPE_AREAOUTCAR, // "AreaoutCar" 境外汽车 NET_VEHICLE_TYPE_FOREIGNCAR, // "ForeignCar" 外籍汽车 NET_VEHICLE_TYPE_DUALTRIWHEELMOTORCYCLE, // "DualTriWheelMotorcycle"两、三轮摩托车 NET_VEHICLE_TYPE_LIGHTMOTORCYCLE, // "LightMotorcycle" 轻便摩托车 NET_VEHICLE_TYPE_EMBASSYMOTORCYCLE, // "EmbassyMotorcycle "使馆摩托车 NET_VEHICLE_TYPE_MARGINALMOTORCYCLE, // "MarginalMotorcycle "领馆摩托车 NET_VEHICLE_TYPE_AREAOUTMOTORCYCLE, // "AreaoutMotorcycle "境外摩托车 NET_VEHICLE_TYPE_FOREIGNMOTORCYCLE, // "ForeignMotorcycle "外籍摩托车 NET_VEHICLE_TYPE_FARMTRANSMITCAR, // "FarmTransmitCar" 农用运输车 NET_VEHICLE_TYPE_TRACTOR, // "Tractor" 拖拉机 NET_VEHICLE_TYPE_TRAILER, // "Trailer" 挂车 NET_VEHICLE_TYPE_COACHCAR, // "CoachCar"教练汽车 NET_VEHICLE_TYPE_COACHMOTORCYCLE, // "CoachMotorcycle "教练摩托车 NET_VEHICLE_TYPE_TRIALCAR, // "TrialCar" 试验汽车 NET_VEHICLE_TYPE_TRIALMOTORCYCLE, // "TrialMotorcycle "试验摩托车 NET_VEHICLE_TYPE_TEMPORARYENTRYCAR, // "TemporaryEntryCar"临时入境汽车 NET_VEHICLE_TYPE_TEMPORARYENTRYMOTORCYCLE, // "TemporaryEntryMotorcycle"临时入境摩托车 NET_VEHICLE_TYPE_TEMPORARYSTEERCAR, // "TemporarySteerCar"临时行驶车 NET_VEHICLE_TYPE_PASSENGERCAR, // "PassengerCar" 客车 NET_VEHICLE_TYPE_LARGETRUCK, // "LargeTruck" 大货车 NET_VEHICLE_TYPE_MIDTRUCK, // "MidTruck" 中货车 NET_VEHICLE_TYPE_SALOONCAR, // "SaloonCar" 轿车 NET_VEHICLE_TYPE_MICROBUS, // "Microbus"面包车 NET_VEHICLE_TYPE_MICROTRUCK, // "MicroTruck"小货车 NET_VEHICLE_TYPE_TRICYCLE, // "Tricycle"三轮车 NET_VEHICLE_TYPE_PASSERBY, // "Passerby" 行人 }EM_NET_VEHICLE_TYPE; ///@brief 车身颜色 typedef enum _EM_NET_VEHICLE_COLOR_TYPE { NET_VEHICLE_COLOR_OTHER, //其他颜色 NET_VEHICLE_COLOR_WHITE, //白色 "White" NET_VEHICLE_COLOR_BLACK, //黑色 "Black" NET_VEHICLE_COLOR_RED, //红色 "Red" NET_VEHICLE_COLOR_YELLOW, //黄色 "Yellow" NET_VEHICLE_COLOR_GRAY, //灰色 "Gray" NET_VEHICLE_COLOR_BLUE, //蓝色 "Blue" NET_VEHICLE_COLOR_GREEN, //绿色 "Green" NET_VEHICLE_COLOR_PINK, //粉红色 "Pink" NET_VEHICLE_COLOR_PURPLE, //紫色 "Purple" NET_VEHICLE_COLOR_BROWN, //棕色 "Brown" }EM_NET_VEHICLE_COLOR_TYPE; ///@brief 布控类型 typedef enum _EM_NET_TRAFFIC_CAR_CONTROL_TYPE { NET_CAR_CONTROL_OTHER, // 其他 NET_CAR_CONTROL_OVERDUE_NO_CHECK, // "OverdueNoCheck" NET_CAR_CONTROL_BRIGANDAGE_CAR, // "BrigandageCar" NET_CAR_CONTROL_BREAKING, // "Breaking" NET_CAR_CONTROL_CAUSETROUBLE_ESCAPE, // "CausetroubleEscape" NET_CAR_CONTROL_CAUSETROUBLE_OVERDUEPARKING, // "OverdueParking" NET_CAR_CONTROL_COUNTERFEI_PLATE_CAR, // "CounterfeitPlateCar" NET_CAR_CONTROL_FAKE_PLATE_CAR, // "FakePlateCar" NET_CAR_CONTROL_FOCAL_CAR, // "FocalCar" NET_CAR_CONTROL_GUARANTEE_CAR, // "GuaranteeCar" NET_CAR_CONTROL_FOLLOW_CAR, // "FollowCar" }EM_NET_TRAFFIC_CAR_CONTROL_TYPE; ///@brief 权限类型 typedef enum _EM_NET_AUTHORITY_TYPE { NET_AUTHORITY_UNKNOW, NET_AUTHORITY_OPEN_GATE, //开闸权限 }EM_NET_AUTHORITY_TYPE; ///@brief 记录集信息类型 typedef enum _EM_NET_RECORD_TYPE { NET_RECORD_UNKNOWN, NET_RECORD_TRAFFICREDLIST, // 交通允许名单账户记录 // 查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体 // 记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体 NET_RECORD_TRAFFICBLACKLIST, // 交通禁止名单账号记录 // 查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体 // 记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体 NET_RECORD_BURN_CASE, // 刻录案件记录 // 查询条件对应 FIND_RECORD_BURN_CASE_CONDITION 结构体 // 记录信息对应 NET_BURN_CASE_INFO 结构体 NET_RECORD_ACCESSCTLCARD, // 门禁卡 // 查询条件对应 FIND_RECORD_ACCESSCTLCARD_CONDITION 结构体 // 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARD 结构体 NET_RECORD_ACCESSCTLPWD, // 门禁密码 // 查询条件对应 FIND_RECORD_ACCESSCTLPWD_CONDITION 结构体 // 记录信息对应 NET_RECORDSET_ACCESS_CTL_PWD NET_RECORD_ACCESSCTLCARDREC, // 门禁出入记录(必须同时按卡号和时间段查询,建议用NET_RECORD_ACCESSCTLCARDREC_EX查询) // 查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION 结构体 // 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体 NET_RECORD_ACCESSCTLHOLIDAY, // 假日记录集 // 查询条件对应 FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION 结构体 // 记录信息对应 NET_RECORDSET_HOLIDAY 结构体 NET_RECORD_TRAFFICFLOW_STATE, // 查询交通流量记录 // 查询条件对应 FIND_RECORD_TRAFFICFLOW_CONDITION 结构体 // 记录信息对应 NET_RECORD_TRAFFIC_FLOW_STATE 结构体 NET_RECORD_VIDEOTALKLOG, // 通话记录 // 查询条件对应 FIND_RECORD_VIDEO_TALK_LOG_CONDITION 结构体 // 记录信息对应 NET_RECORD_VIDEO_TALK_LOG 结构体 NET_RECORD_REGISTERUSERSTATE, // 状态记录 // 查询条件对应 FIND_RECORD_REGISTER_USER_STATE_CONDITION 结构体 // 记录信息对应 NET_RECORD_REGISTER_USER_STATE 结构体 NET_RECORD_VIDEOTALKCONTACT, // 联系人记录 // 查询条件对应 FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION 结构体 // 记录信息对应 NET_RECORD_VIDEO_TALK_CONTACT 结构体 NET_RECORD_ANNOUNCEMENT, //公告记录 //查询条件对应 FIND_RECORD_ANNOUNCEMENT_CONDITION 结构体 //记录信息对应 NET_RECORD_ANNOUNCEMENT_INFO 结构体 NET_RECORD_ALARMRECORD, //报警记录 //查询条件对应 FIND_RECORD_ALARMRECORD_CONDITION 结构体 //记录信息对应 NET_RECORD_ALARMRECORD_INFO 结构体 NET_RECORD_COMMODITYNOTICE, // 下发商品记录 // 查询条件对应 FIND_RECORD_COMMODITY_NOTICE_CONDITION 结构体 // 记录信息对应 NET_RECORD_COMMODITY_NOTICE 结构体 NET_RECORD_HEALTHCARENOTICE, // 就诊信息记录 // 查询条件对应 FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION 结构体 // 记录信息对应 NET_RECORD_HEALTH_CARE_NOTICE 结构体 NET_RECORD_ACCESSCTLCARDREC_EX, // 门禁出入记录(可选择部分条件查询,建议替代NET_RECORD_ACCESSCTLCARDREC) // 查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX 结构体 // 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体 NET_RECORD_GPS_LOCATION, // GPS位置信息记录, 只实现import和clear // 记录信息对应 NET_RECORD_GPS_LOCATION_INFO 结构体 NET_RECORD_RESIDENT, // 公租房租户信息 // 查询条件对应 FIND_RECORD_RESIDENT_CONDTION结构体 // 记录信息对应 NET_RECORD_RESIDENT_INFO 结构体 NET_RECORD_SENSORRECORD, // 监测量数据记录 // 查询条件对应 FIND_RECORD_SENSORRECORD_CONDITION 结构体 // 记录信息对应 NET_RECORD_SENSOR_RECORD 结构体 NET_RECORD_ACCESSQRCODE, //开门二维码记录集 //记录信息对应 NET_RECORD_ACCESSQRCODE_INFO 结构体 NET_RECORD_ELECTRONICSTAG, // 电子车牌查询 // 查询条件对应FIND_RECORD_ELECTRONICSTAG_CONDITION 结构体 // 记录信息对应NET_RECORD_ELECTRONICSTAG_INFO 结构体 NET_RECORD_ACCESS_BLUETOOTH, // 蓝牙开门记录集 // 查询条件对应 FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_BLUETOOTH_INFO 结构体 NET_RECORD_ACCESS_ALARMRECORD, // 门禁报警记录集 // 查询条件对应 FIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_ALARMRECORD_INFO 结构体 NET_RECORD_ACCESS_DOORSTATUS, // 开关门事件记录 // 查询条件对应 FIND_RECORD_ACCESS_DOORSTATUS_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_DOORSTATUS_INFO 结构体 NET_RECORD_ACCESSCTL_COMMON_PASSWORD, // 楼宇通用开门密码 // 查询条件对应 FIND_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO 结构体 NET_RECORD_ACCESS_MOBILE_PUSH_RESULT, // VTO设备推送信息记录 // 条件查询对应 FIND_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO NET_RECORD_HOSPITAL_USER, // 医院人员信息表 // 查询条件对应 FIND_RECORD_HOSPITAL_USER_CONDITION 结构体 // 记录信息对应 NET_RECORD_HOSPITAL_USER_INFO 结构体 NET_RECORD_HOSPITAL_DEVICE, // 医院设备信息表 // 查询条件对应 FIND_RECORD_HOSPITAL_DEVICE_CONDITION 结构体 // 记录信息对应 NET_RECORD_HOSPITAL_DEVICE_INFO 结构体 NET_RECORD_ACCESS_CONSUMPTION, // 消费记录 // 查询条件对应 FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION 结构体 // 记录信息对应 NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO 结构体 }EM_NET_RECORD_TYPE; ///@brief 时间类型 typedef enum { NET_TIME_TYPE_ABSLUTE, // 绝对时间 NET_TIME_TYPE_RELATIVE, // 相对时间,相对于视频文件头帧为时间基点,头帧对应于UTC(0000-00-00 00:00:00) }EM_TIME_TYPE; ///@brief 颜色类型 typedef enum { NET_COLOR_TYPE_RED, // 红色 NET_COLOR_TYPE_YELLOW, // 黄色 NET_COLOR_TYPE_GREEN, // 绿色 NET_COLOR_TYPE_CYAN, // 青色 NET_COLOR_TYPE_BLUE, // 蓝色 NET_COLOR_TYPE_PURPLE, // 紫色 NET_COLOR_TYPE_BLACK, // 黑色 NET_COLOR_TYPE_WHITE, // 白色 NET_COLOR_TYPE_MAX = 8, }EM_COLOR_TYPE; /////////////////////////////目标识别相关///////////////////////////////// ///@brief 人员类型 typedef enum { PERSON_TYPE_UNKNOWN, PERSON_TYPE_NORMAL, // 普通人员 PERSON_TYPE_SUSPICION, // 嫌疑人员 PERSON_TYPE_ARGXT, // ARGXT PERSON_TYPE_VIP, // 重要人员 PERSON_TYPE_FATECHECK, // 打假人员 PERSON_TYPE_STAFF, // 工作人员 }EM_PERSON_TYPE; ///@brief 证件类型 typedef enum { CERTIFICATE_TYPE_UNKNOWN, CERTIFICATE_TYPE_IC, // 证件 CERTIFICATE_TYPE_PASSPORT, // 护照 CERTIFICATE_TYPE_OUTERGUARD, // 军官证 CERTIFICATE_TYPE_STUDENT, // 学生证 CERTIFICATE_TYPE_POLICE, // 警官证 CERTIFICATE_TYPE_LAWYER, // 律师 }EM_CERTIFICATE_TYPE; ///@brief 目标识别数据库操作 typedef enum { NET_FACERECONGNITIONDB_UNKOWN, NET_FACERECONGNITIONDB_ADD, // 添加人员信息和目标样本,如果人员已经存在,图片数据和原来的数据合并 NET_FACERECONGNITIONDB_DELETE, // 删除人员信息和目标样本 NET_FACERECONGNITIONDB_MODIFY, // 修改人员信息和目标样本,人员的UID标识必填 NET_FACERECONGNITIONDB_DELETE_BY_UID, // 通过UID删除人员信息和目标样本 NET_FACERECONGNITIONDB_DELETE_BY_UUID, // 通过UUID删除人员信息和目标样本 }EM_OPERATE_FACERECONGNITIONDB_TYPE; ///@brief 目标对比模式 typedef enum { NET_FACE_COMPARE_MODE_UNKOWN, NET_FACE_COMPARE_MODE_NORMAL, // 正常 NET_FACE_COMPARE_MODE_AREA, // 指定目标区域组合区域 NET_FACE_COMPARE_MODE_AUTO, // 智能模式,算法根据目标各个区域情况自动选取组合 }EM_FACE_COMPARE_MODE; ///@brief 目标区域 typedef enum { NET_FACE_AREA_TYPE_UNKOWN, NET_FACE_AREA_TYPE_EYEBROW, // 眉毛 NET_FACE_AREA_TYPE_EYE, // 眼睛 NET_FACE_AREA_TYPE_NOSE, // 鼻子 NET_FACE_AREA_TYPE_MOUTH, // 嘴巴 NET_FACE_AREA_TYPE_CHEEK, // 脸颊 }EM_FACE_AREA_TYPE; ///@brief 目标数据类型 typedef enum { NET_FACE_DB_TYPE_UNKOWN, NET_FACE_DB_TYPE_HISTORY, // 历史数据库,存放的是检测出的目标信息,一般没有包含目标对应人员信息 NET_FACE_DB_TYPE_BLACKLIST, // 禁止名单数据库(现在用作注册库) NET_FACE_DB_TYPE_WHITELIST, // 允许名单数据库,废弃 NET_FACE_DB_TYPE_ALARM , // 报警库, 废弃 NET_FACE_DB_TYPE_PASSERBY, // 路人库 }EM_FACE_DB_TYPE; ///@brief 目标识别事件类型 typedef enum { NET_FACERECOGNITION_ALARM_TYPE_UNKOWN, NET_FACERECOGNITION_ALARM_TYPE_ALL, // 禁止/允许名单 NET_FACERECOGNITION_ALARM_TYPE_BLACKLIST, // 禁止名单 NET_FACERECOGNITION_ALARM_TYPE_WHITELIST, // 允许名单 }EM_FACERECOGNITION_ALARM_TYPE; ///@brief 目标识别目标类型 typedef enum { EM_FACERECOGNITION_FACE_TYPE_UNKOWN, EM_FACERECOGNITION_FACE_TYPE_ALL, // 所有目标 EM_FACERECOGNITION_FACE_TYPE_REC_SUCCESS, // 识别成功 EM_FACERECOGNITION_FACE_TYPE_REC_FAIL, // 识别失败 }EM_FACERECOGNITION_FACE_TYPE; ///@brief 帧类型枚举值 typedef enum __EM_FRAME_TYPE { EM_FRAME_UNKOWN, // 未知类型 EM_FRAME_TYPE_MOTION, // 动检帧,对应帧信息结构体 NET_MOTION_FRAME_INFO }EM_FRAME_TYPE; /////////////////////////////淘汰类型///////////////////////////////// ///@brief 配置类型,目前使用该枚举的接口已淘汰,请不要使用 typedef enum _CFG_INDEX { CFG_GENERAL = 0, // 普通 CFG_COMM, // 串口 CFG_NET, // 网络 CFG_RECORD, // 录像 CFG_CAPTURE, // 图像设置 CFG_PTZ, // 云台 CFG_DETECT, // 动态检测 CFG_ALARM, // 报警 CFG_DISPLAY, // 显示 CFG_RESERVED, // 保留,使类型连贯 CFG_TITLE = 10, // 通道标题 CFG_MAIL = 11, // 邮件功能 CFG_EXCAPTURE = 12, // 预览图像设置 CFG_PPPOE = 13, // pppoe设置 CFG_DDNS = 14, // DDNS设置 CFG_SNIFFER = 15, // 网络预览捕获设置 CFG_DSPINFO = 16, // 编码能力信息 CFG_COLOR = 126, // 颜色配置信息 CFG_ALL, // 保留 } CFG_INDEX; /************************************************************************ ** 结构体定义 ***********************************************************************/ ///@brief 显示区域相对于原显示窗口的坐标 typedef struct { double dleft; //显示区域相对于原显示窗口的左坐标 double dright; //显示区域相对于原显示窗口的右坐标 double dtop; //显示区域相对于原显示窗口的上坐标 double dbottom; //显示区域相对于原显示窗口的下坐标 } DH_DISPLAYRREGION; ///@brief 时间信息 typedef struct tagNET_TIME { DWORD dwYear; // 年 DWORD dwMonth; // 月 DWORD dwDay; // 日 DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 } NET_TIME,*LPNET_TIME; ///@brief 时间信息 typedef struct tagNET_TIME_EX { DWORD dwYear; // 年 DWORD dwMonth; // 月 DWORD dwDay; // 日 DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 DWORD dwMillisecond; // 毫秒 DWORD dwUTC; // utc时间(获取时0表示无效,非0有效 下发无效) DWORD dwReserved[1]; // 预留字段 } NET_TIME_EX,*LPNET_TIME_EX; ///@brief 时间信息 typedef struct tagNET_TIME_EX1 { DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 } NET_TIME_EX1; ///@brief UTC时间 typedef struct tagUTCTime { unsigned int utc; // utc时间 unsigned int tolerance; // 容差,表示容许设置时间和当前差多少秒内不做修改 (下发时用到) char reserved[8]; // 预留字段 }NET_UTCTIME, *LPNET_UTCTIME; ///@brief 日志信息里的时间定义 typedef struct _DHDEVTIME { DWORD second:6; // 秒 1-60 DWORD minute:6; // 分 1-60 DWORD hour:5; // 时 1-24 DWORD day:5; // 日 1-31 DWORD month:4; // 月 1-12 DWORD year:6; // 年 2000-2063 } DHDEVTIME, *LPDHDEVTIME; ///@brief 能力 typedef struct tagRANGE { float fMax; // 最大值 float fMin; // 最小值 BOOL abStep; // 是否启用步长 float fStep; // 步长 BOOL abDefault; // 是否启用默认值 float fDefault; // 默认值 char reserved[16]; } RANGE; ///@brief 平场自动校正周期范围 typedef struct tagNET_FFCPERIOD_RANGE { int nMaxN; // 最大值(NTSC制式) int nMaxP; // 最大值(PAL制式) int nMin; // 最小值 int nStep; // 步长 BYTE reserved[16]; } NET_FFCPERIOD_RANGE; ///@brief 回调数据(异步接口) typedef struct __NET_CALLBACK_DATA { int nResultCode; // 返回码;0:成功 char *pBuf; // 接收数据, 缓冲是由用户开辟的,从接口形参传入,大小为nRetLen int nRetLen; // 接收长度 LLONG lOperateHandle; // 操作句柄 void* userdata; // 操作对应用户参数 char reserved[16]; } NET_CALLBACK_DATA, *LPNET_CALLBACK_DATA; ///@brief 事件公共字段扩展结构体: 该结构体仅用于 普通报警事件类型(不带图报警事件类型) 和 智能报警事件类型(带图报警事件类型) 的公共字段扩展使用 typedef struct tagNET_EVENT_INFO_EXTEND { BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 stuRealUTC,否则 stuRealUTC 字段无效(用原事件结构体中的 事件发生时间/事件触发时间(UTC) 字段) char byReserved[4]; // 仅用于字节对齐 NET_TIME_EX stuRealUTC; // 事件发生的时间(标准UTC时间(不带时区夏令时偏差)), 由于事件的UTC时间在产品线之间使用的差异性, 故增加RealUTC作为标准UTC时间, 平台在收到事件解析首优先级是RealUTC, 其次是UTC. BOOL bIsEventsTypeValid; // 事件类型是否有效 UINT szEventsType; // 事件类型, bIsEventsTypeValid为TRUE时有效, 0:正常抓图事件, 1:邮件联动抓图事件(图片通过第二路抓图码流上来,和正常抓图的图片可以不一样) char szReserved[1012]; // 保留字节 }NET_EVENT_INFO_EXTEND; ///////////////////////////预览相关定义/////////////////////////////// ///@brief 回调视频数据帧的帧参数结构体 typedef struct _tagVideoFrameParam { BYTE encode; // 编码类型 BYTE frametype; // I = 0, P = 1, B = 2... BYTE format; // PAL - 0, NTSC - 1 BYTE size; // CIF - 0, HD1 - 1, 2CIF - 2, D1 - 3, VGA - 4, QCIF - 5, QVGA - 6 , // SVCD - 7,QQVGA - 8, SVGA - 9, XVGA - 10,WXGA - 11,SXGA - 12,WSXGA - 13,UXGA - 14,WUXGA - 15, LFT - 16, 720 - 17, 1080 - 18 ,1_3M-19 // 2M-20, 5M-21;当size=255时,成员变量width,height 有效 DWORD fourcc; // 如果是H264编码则总为0,否则值为*( DWORD*)"DIVX",即0x58564944 WORD width; // 宽,单位是像素,当size=255时有效 WORD height; // 高,单位是像素,当size=255时有效 NET_TIME struTime; // 时间信息 } tagVideoFrameParam; ///@brief 回调音频数据帧的帧参数结构体 typedef struct _tagCBPCMDataParam { BYTE channels; // 声道数 BYTE samples; // 采样 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050, 4 - 32000, 5 - 44100, 6 - 48000 BYTE depth; // 采样深度 取值8或者16等。直接表示 BYTE param1; // 0 - 指示无符号,1-指示有符号 DWORD reserved; // 保留 } tagCBPCMDataParam; ///@brief 转码帧数据类型 typedef enum tagEM_STREAMCONVERT_FRAMEDATA_TYPE { EM_STREAMCONVERT_FRAMEDATA_UNKNOWN, // 未知 EM_STREAMCONVERT_FRAMEDATA_VIDEO, // 视频帧 EM_STREAMCONVERT_FRAMEDATA_AUDIO, // 音频帧 } EM_STREAMCONVERT_FRAMEDATA_TYPE; ///@brief 转码流数据信息 typedef struct tagNET_STREAMCONVERT_INFO { EM_STREAMCONVERT_FRAMEDATA_TYPE emDataType; // 转码帧数据类型 void* pFrameInfo; // 帧信息 // 当emDataType 为 EM_STREAMCONVERT_FRAMEDATA_VIDEO 时,对应 tagVideoFrameParam 结构体 // 当emDataType 为 EM_STREAMCONVERT_FRAMEDATA_AUDIO 时,对应 tagCBPCMDataParam 结构体 }NET_STREAMCONVERT_INFO; ///@brief 通道画面字幕叠加的数据结构 typedef struct _DH_CHANNEL_OSDSTRING { BOOL bEnable; // 使能 DWORD dwPosition[MAX_STRING_LINE_LEN]; //各行字符的位置 用1-9整数表示,与小键盘位置对应 // 7左上 8上 9右上 // 4左 5中 6右 // 1左下 2下 3右下 char szStrings[MAX_STRING_LINE_LEN][MAX_PER_STRING_LEN]; // 最多六行字符,每行最多20个字节 } DH_CHANNEL_OSDSTRING; ///@brief 回调YUV数据的参数结构体 typedef struct _tagCBYUVDataParam { long nWidth; // 图象的宽 long nHeight; // 图象的高 NET_TIME stNetTime; // 码流中的时间 DWORD reserved[2]; // 保留 } tagCBYUVDataParam; ///////////////////////////回放相关定义/////////////////////////////// ///@brief 录像查询类型 typedef enum tagEmQueryRecordType { EM_RECORD_TYPE_ALL = 0, // 所有录像 EM_RECORD_TYPE_ALARM = 1, // 外部报警录像 EM_RECORD_TYPE_MOTION_DETECT = 2, // 动态检测报警录像 EM_RECORD_TYPE_ALARM_ALL = 3, // 所有报警录像 EM_RECORD_TYPE_CARD = 4, // 卡号查询 EM_RECORD_TYPE_CONDITION = 5, // 按条件查询 EM_RECORD_TYPE_JOIN = 6, // 组合查询 EM_RECORD_TYPE_CARD_PICTURE = 8, // 按卡号查询图片,HB-U、NVS等使用 EM_RECORD_TYPE_PICTURE = 9, // 查询图片,HB-U、NVS等使用 EM_RECORD_TYPE_FIELD = 10, // 按字段查询 EM_RECORD_TYPE_INTELLI_VIDEO = 11, // 智能录像查询 EM_RECORD_TYPE_NET_DATA = 15, // 查询网络数据,金桥网吧等使用 EM_RECORD_TYPE_TRANS_DATA = 16, // 查询透明串口数据录像 EM_RECORD_TYPE_IMPORTANT = 17, // 查询重要录像 EM_RECORD_TYPE_TALK_DATA = 18, // 查询录音文件 EM_RECORD_TYPE_POS = 19, // POS录像 EM_RECORD_TYPE_INVALID = 256, // 无效的查询类型 }EM_QUERY_RECORD_TYPE; ///@brief 录像文件信息 typedef struct tagNET_RECORDFILE_INFO { unsigned int ch; // 通道号 char filename[124]; // 文件名 unsigned int framenum; // 文件总帧数 unsigned int size; // 文件长度, 单位为Kbyte NET_TIME starttime; // 开始时间 NET_TIME endtime; // 结束时间 unsigned int driveno; // 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像) unsigned int startcluster; // 起始簇号 BYTE nRecordFileType; // 录象文件类型 0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片, 5: 智能录像, 19: POS录像, 255:所有录像 BYTE bImportantRecID; // 0:普通录像 1:重要录像 BYTE bHint; // 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 ) BYTE bRecType; // 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像 } NET_RECORDFILE_INFO, *LPNET_RECORDFILE_INFO; ///@brief 录像或抓图文件标志 typedef enum _EM_RECORD_SNAP_FLAG_TYPE { FLAG_TYPE_UNKNOW = -1 , //未知 FLAG_TYPE_TIMING , //定时文件 FLAG_TYPE_MANUAL , //手动文件 FLAG_TYPE_MARKED , //重要文件 FLAG_TYPE_EVENT , //事件文件 FLAG_TYPE_MOSAIC , //合成图片 FLAG_TYPE_CUTOUT , //抠图图片 FLAG_TYPE_LEAVE_WORD , //留言文件 FLAG_TYPE_TALKBACK_LOCAL_SIDE , //对讲本地方文件 FLAG_TYPE_TALKBACK_REMOTE_SIDE , //对讲远程方文件 FLAG_TYPE_SYNOPSIS_VIDEO , //浓缩视频 FLAG_TYPE_ORIGINAL_VIDEO , //原始视频 FLAG_TYPE_PRE_ORIGINAL_VIDEO , //已经预处理的原始视频 FLAG_TYPE_BLACK_PLATE , //禁止名单图片 FLAG_TYPE_ORIGINAL_PIC , //原始图片 FLAG_TYPE_CARD, //卡号录像 FLAG_TYPE_MAX = 128, }EM_RECORD_SNAP_FLAG_TYPE; ///@brief 录像文件信息(扩展) typedef struct tagNET_RECORDFILE_INFOEX { NET_RECORDFILE_INFO stuRecordFileInfo; // 录像文件信息 BYTE bReserved1[4]; // 字节对齐 int nEventLists[256]; // 关联的事件列表,事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 EM_RECORD_SNAP_FLAG_TYPE emFlagsList[128]; // 文件标志 int nFlagCount; // 文件标志总个数; BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuRecordFileInfo中的starttime和endtime有效(仅使用stuRecordFileInfo中的starttime和endtime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 BYTE bReserved[452]; // 预留字节 } NET_RECORDFILE_INFOEX, *LPNET_RECORDFILE_INFOEX; ///@brief 浓缩录像文件信息 typedef struct tagNET_SynopsisFileInfo { DWORD dwSize; // 该结构体大小 char szFileName[MAX_PATH]; // 文件名,例如C:\a.dav NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 unsigned int nTaskID; // 在服务器里的标示,与文件名2选1使用 BYTE bFileType; // 1-视频浓缩录像文件,2-视频浓缩源文件 BYTE byMode; // 下载模式: 0-按文件下载, 1-按时间下载, 2-按文件偏移下载 BYTE bReserved[2]; unsigned int nFileLength; // 文件大小,单位:KB unsigned int nStartFileOffset; // 起始文件偏移, 单位: KB unsigned int nEndFileOffset; // 结束文件偏移, 单位: KB int nChannel; // 通道号, NVR回放专用(没有TaskID), 对浓缩服务器无效 int nCluster; // 簇号, NVR回放专用(没有TaskID), 对浓缩服务器无效 }NET_SYNOPSISFILE_INFO, *LPNET_SYNOPSISFILE_INFO; ///@brief 回放数据回调函数原形 // pBuffer: 数据缓冲区,内存由SDK内部申请释放 // 若设备传过来的码流是不加密的,dwDataType:0-不加密的录像文件原始数据 // 若设备传过来的码流是加密的,dwDataType: 0-解密后的私有码流(帧数据),2-加密的原始码流 typedef int (CALLBACK *fDataCallBack)(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief 回放数据原始回调函数原形 // pBuffer: 数据缓冲区,内存由SDK内部申请释放 // 无论设备传的码流是不是加密的,都回调原始码流 typedef int (CALLBACK *fOriDataCallBack)(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief 回放进度回调函数原形 // dwDownLoadSize == -1 表示用户回放或者下载进度完成 // dwDownLoadSize ==- 2 表示用户没有回放或者下载操作权限 typedef void (CALLBACK *fDownLoadPosCallBack)(LLONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, LDWORD dwUser); ///@brief 多通道回放预览参数 typedef struct __NET_MULTI_PLAYBACK_PARAM { DWORD dwSize; int nChannels[DH_MAX_MULTIPLAYBACK_CHANNEL_NUM]; // 预览通道号 int nChannelNum; // 预览通道数 int nType; // 回放文件类型,0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片 NET_TIME stStartTime; // 回放开始时间 NET_TIME stEndTime; // 回放结束时间 int nFPS; // 帧率,1~25 int nBitRate; // 码流值,192~1024 char szResolution[DH_MAX_CAPTURE_SIZE_NUM]; // 分辨率,"D1"、"HD1"、"2CIF"、"CIF"、"QCIF" int nWaitTime; // 超时等待时间 HWND hWnd; // 视频播放窗口句柄 fDataCallBack fDownLoadDataCallBack; // 视频数据回调 LDWORD dwDataUser; // 视频数据用户数据 fDownLoadPosCallBack cbDownLoadPos; // 回放进度回调 LDWORD dwPosUser; // 进度回调用户数据 }NET_MULTI_PLAYBACK_PARAM; ///@brief 某月的各天是否存在录像的状态信息 typedef struct { BYTE flag[32]; //某月内的各天是否存在录像的状态掩码,0表示没有,1表示有。 BYTE Reserved[64]; //保留 }NET_RECORD_STATUS, *LPNET_RECORD_STATUS; ///@brief 异步查询结果回调函数原形, // nError = 0 表示查询成功; // nError = 1 表示内存申请失败; // nError = 2 表示超时, 即超时时间内未查完指定时间段的情况, pFileinfos,nFileNum返回已查到的录像列表; // nError = 3 表示设备返回数据校验不通过; // nError = 4 发送查询请求失败 // nError = 5 参数错误 // nError = 6 打开通道失败 // nError = 7 无权限 typedef void (CALLBACK *fQueryRecordFileCallBack)(LLONG lQueryHandle, LPNET_RECORDFILE_INFO pFileinfos, int nFileNum, int nError, void *pReserved, LDWORD dwUser); ///@brief 异步查询结果回调函数原形(扩展), nError含义与非扩展回调fQueryRecordFileCallBack 中返回的一样 typedef void (CALLBACK *fQueryRecordFileCallBackEx)(LLONG lQueryHandle, LPNET_RECORDFILE_INFOEX pFileinfos, int nFileNum, int nError, void *pReserved, LDWORD dwUser); ///@brief 是否合并录像 typedef enum tagNET_EM_COMBINATION_MODE { EM_COMBINATION_MODE_DEFAULT = 0, // 默认为合并 EM_COMBINATION_MODE_YES, // 合并 EM_COMBINATION_MODE_NO, // 不合并 }NET_EM_COMBINATION_MODE; ///@brief CLIENT_StartQueryRecordFile接口输入参数 typedef struct tagNET_IN_START_QUERY_RECORDFILE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nChannelId; // 待查询通道号, 从0开始 int nRecordFileType; // 待查询录像类型, 详见 EM_QUERY_RECORD_TYPE 类型 int nStreamType; // 查询码流类型,0-主辅码流,1-主码流,2-辅码流 NET_TIME stStartTime; // 查询起始时间 NET_TIME stEndTime; // 查询结束时间 char* pchCardid; // 卡号信息,仅当按照卡号查询时有效,由用户分配内存 // 如果nRecordFileType = 4或5或10,内存大小不超过256字节 // 如果nRecordFileType = 8,内存大小不超过20字节 int nWaitTime; // 超时等待时间,单位ms fQueryRecordFileCallBack cbFunc; // 查询结果回调函数 LDWORD dwUser; // 用户信息 BOOL bByTime; // 是否根据时间查询 NET_EM_COMBINATION_MODE emCombination; // 查询结果是否合并录像文件 fQueryRecordFileCallBackEx cbFuncEx; // 查询结果回调函数(扩展), 与非扩展回调cbFunc 共用dwUser BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥 }NET_IN_START_QUERY_RECORDFILE; ///@brief CLIENT_StartQueryRecordFile接口输出参数 typedef struct tagNET_OUT_START_QUERY_RECORDFILE { DWORD dwSize; // 结构体大小 LLONG lQueryHandle; // 返回句柄 }NET_OUT_START_QUERY_RECORDFILE; ///@brief 对象目标类型 typedef enum tagEM_OBJECT_TYPE { EM_OBJECT_TYPE_UNKNOWN = -1, // 未知 EM_OBJECT_TYPE_FACE, // 目标 EM_OBJECT_TYPE_HUMAN, // 人体 EM_OBJECT_TYPE_VECHILE, // 机动车 EM_OBJECT_TYPE_NOMOTOR, // 非机动车 EM_OBJECT_TYPE_ALL, // 所有类型 } EM_OBJECT_TYPE; ///@brief 事件信息 typedef struct tagEVENT_INFO { int nEvent; // 事件类型,参见智能事件类型,如 EVENT_IVS_ALL EM_OBJECT_TYPE arrayObejctType[16]; // 支持的物体类型,当前支持 EM_OBJECT_TYPE_HUMAN, EM_OBJECT_TYPE_VECHILE, EM_OBJECT_TYPE_NOMOTOR, EM_OBJECT_TYPE_ALL int nObjectCount; // szObejctType 数量 BYTE byReserved[512]; // 预留字段 }EVENT_INFO; ///@brief 从设备类型 typedef enum tagEM_SUBCLASSID_TYPE { EM_SUBCLASSID_UNKNOWN, // 未知 EM_SUBCLASSID_ASSISTDEVICE, // 辅助设备 (ITSE使用) }EM_SUBCLASSID_TYPE; ///@brief 加密算法类型 typedef enum tagEM_ALGORITHM_TYPE { EM_ALGORITHM_TYPE_UNKNOWN, // 未知加密算法 EM_ALGORITHM_TYPE_AES256_OFB, // AES256-OFB加密算法 EM_ALGORITHM_TYPE_SM4_OFB, // SM加密算法 }EM_ALGORITHM_TYPE; ///@brief 是否加密 typedef enum tagEM_IS_ENCRYPT { EM_IS_ENCRYPT_UNKNOWN, // 未知 EM_IS_ENCRYPT_YES, // 已加密 EM_IS_ENCRYPT_NO, // 未加密 }EM_IS_ENCRYPT; ///@brief 是否当前vk typedef enum tagEM_IS_CURRENT_VK { EM_IS_CURRENT_VK_UNKNOWN, // 未知 EM_IS_CURRENT_VK_CURRENT, // 当前 EM_IS_CURRENT_VK_PRE, // 之前 }EM_IS_CURRENT_VK; ///@brief VK二值对信息 typedef struct tagNET_VKINFO { char szVKID[128]; // VKID char szVK[128]; // VK EM_ALGORITHM_TYPE emAlgorithmType; // 加密算法类型 int nRetVKIDLen; // 返回的VKID字段的实际大小 int nRetVKLen; // 返回的VK实际大小 EM_IS_ENCRYPT emIsEncrypt; // 是否加密 EM_IS_CURRENT_VK emIsCurrent; // 是否是当前VK 0 :未知,1:当前, 2:之前 BYTE byReserved[492]; // 保留字节 }NET_VKINFO; ///@brief VK信息回调(pBuffer内存由SDK内部申请释放),dwError值可以dhnetsdk.h中找到相应的解释,比如NET_NOERROR,NET_ERROR_VK_INFO_DECRYPT_FAILED等 typedef void (CALLBACK *fVKInfoCallBack)(LLONG lRealHandle, NET_VKINFO* pBuffer, DWORD dwError, LDWORD dwUser, void* pReserved); ///@brief 录像回放入参信息 typedef struct tagNET_IN_PLAY_BACK_BY_TIME_INFO { NET_TIME stStartTime; // 开始时间 NET_TIME stStopTime; // 结束时间 HWND hWnd; // 播放窗格, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 LDWORD dwDataUser; // 数据回调用户信息 int nPlayDirection; // 播放方向, 0:正放; 1:倒放; int nWaittime; // 接口超时时间, 目前倒放使用 EVENT_INFO* pstuEventInfo; // 事件信息,用户分配内存,不用时赋值为NULL UINT nEventInfoCount; // pstuEventInfo 个数,最大为 16 EM_SUBCLASSID_TYPE emSubClass; // 从设备类型 fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwVKInfoUser; // VK信息回调用户信息 fOriDataCallBack pOriDataCallBack; //原始数据回调 LDWORD dwOriDataUser; //原始数据回调用户信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stStopTime), 为FALSE表示仅下发stStartTime, stStopTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // 录像的起始UTC时间(标准UTC时间) NET_TIME stuEndTimeRealUTC; // 录像的结束UTC时间(标准UTC时间) BYTE bReserved[940-2*POINTERSIZE]; // 预留字段 }NET_IN_PLAY_BACK_BY_TIME_INFO; ///@brief 录像回放出参信息 typedef struct tagNET_OUT_PLAY_BACK_BY_TIME_INFO { BYTE bReserved[1024]; // 预留字节 }NET_OUT_PLAY_BACK_BY_TIME_INFO; ///@brief 录像回放速度 typedef enum tagEM_PLAY_BACK_SPEED { EM_PLAY_BACK_SPEED_SLOW_32 = -5, // 1/32倍慢放 EM_PLAY_BACK_SPEED_SLOW_16 = -4, // 1/16倍慢放 EM_PLAY_BACK_SPEED_SLOW_8, // 1/8倍慢放 EM_PLAY_BACK_SPEED_SLOW_4, // 1/4倍慢放 EM_PLAY_BACK_SPEED_SLOW_2, // 1/2倍慢放 EM_PLAY_BACK_SPEED_NORMAL = 0, // 正常速度 EM_PLAY_BACK_SPEED_FAST_2, // 2倍快放 EM_PLAY_BACK_SPEED_FAST_4, // 4倍快放 EM_PLAY_BACK_SPEED_FAST_8, // 8倍快放 EM_PLAY_BACK_SPEED_FAST_16, // 16倍快放 EM_PLAY_BACK_SPEED_FAST_32, // 32倍快放 }EM_PLAY_BACK_SPEED; ///@brief 动检帧检索区域 typedef struct { unsigned short left; // 0~8191 unsigned short right; // 0~8191 unsigned short top; // 0~8191 unsigned short bottom; // 0~8191 } MotionDetectRect; ///@brief 智能回放信息 typedef struct { MotionDetectRect motion_rect; // 动检帧检索区域 NET_TIME stime; // 回放的开始时间 NET_TIME etime; // 回放的结束时间 BYTE bStart; // 开始停止命令: 1,开始,2:停止 BYTE reserved[116]; } IntelligentSearchPlay, *LPIntelligentSearchPlay; ///@brief 最早录像时间 typedef struct { int nChnCount; // 通道数目 NET_TIME stuFurthestTime[16]; // 最早录像时间,有效值为前面0 到 (nChnCount-1)个.如果某通道没有录象的话,最早录象时间全为0 DWORD dwFurthestTimeAllSize; // 当通道个数大于16时,使用。表示下面pStuFurthestTimeAll这块内存大小。 NET_TIME* pStuFurthestTimeAll; // 当通道个数大于16时,使用。此部分内存需要用户申请,申请大小为(通道个数*sizeof(NET_TIME))。 BYTE bReserved[376]; // 保留字段 } NET_FURTHEST_RECORD_TIME; ///@brief CLIENT_FindFrameInfo 接口输入参数 typedef struct __NET_IN_FIND_FRAMEINFO_PRAM { DWORD dwSize; // 结构体大小 BOOL abFileName; // 文件名是否作为有效的查询条件,若文件名有效,则不用填充文件信息(stRecordInfo) char szFileName[MAX_PATH]; // 文件名 NET_RECORDFILE_INFO stuRecordInfo; // 文件信息 DWORD dwFramTypeMask; // 帧类型掩码,FRAME_TYPE_MOTION 动检帧; FRAME_TYPE_HUMAN动检帧(人); FRAME_TYPE_VEHICLE动检帧(车) BOOL bSendByUTCTime; // 是否使用UTC时间 NET_TIME stuStartTimeRealUTC; // UTC开始时间 NET_TIME stuEndTimeRealUTC; // UTC结束时间 }NET_IN_FIND_FRAMEINFO_PRAM; ///@brief CLIENT_FindFrameInfo 接口输出参数 typedef struct __NET_OUT_FIND_FRAMEINFO_PRAM { DWORD dwSize; // 结构体大小 LLONG lFindHandle; // 文件查找句柄 }NET_OUT_FIND_FRAMEINFO_PRAM; ///@brief 动检帧信息 typedef struct __NET_MOTION_FRAME_INFO { DWORD dwSize; // 结构体大小 NET_TIME stuTime; // 当前帧,时间戳 int nMotionRow; // 动态检测区域的行数 int nMotionCol; // 动态检测区域的列数 BYTE byRegion[DH_MOTION_ROW][DH_MOTION_COL];// 检测区域,最多32*32块区域 int nHumanMotionRow; // 人动态检测区域的行数 int nHumanMotionCol; // 人动态检测区域的列数 BYTE byHumanRegion[DH_MOTION_ROW][DH_MOTION_COL]; // 人检测区域, 最多32*32块区域 int nVehicleMotionRow; // 车动态检测区域的行数 int nVehicleMotionCol; // 车动态检测区域的列数 BYTE byVehicleRegion[DH_MOTION_ROW][DH_MOTION_COL]; // 车检测区域, 最多32*32块区域 }NET_MOTION_FRAME_INFO; ///@brief 文件帧信息 typedef struct __NET_FILE_FRAME_INFO { DWORD dwSize; // 结构体大小 int nChannelId; // 通道号 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 WORD wRecType; // 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像 WORD wFameType; // 帧类型,详见EM_FRAME_TYPE void* pFramInfo; // 对应类型帧信息,空间由用户申请,建议申请内存大小为sizeof(NET_MOTION_FRAME_INFO) NET_TIME stuStartTimeRealUTC; // UTC开始时间 NET_TIME stuEndTimeRealUTC; // UTC结束时间 }NET_FILE_FRAME_INFO; ///@brief CLIENT_FindNextFrameInfo 接口输入参数 typedef struct __NET_IN_FINDNEXT_FRAMEINFO_PRAM { DWORD dwSize; // 结构体大小 int nFramCount; // 待查询帧条数,0,表示查询符合查询条件的所有帧信息 }NET_IN_FINDNEXT_FRAMEINFO_PRAM; ///@brief CLIENT_FindNextFrameInfo 接口输出参数 typedef struct __NET_OUT_FINDNEXT_FRAMEINFO_PRAM { DWORD dwSize; // 结构体大小 NET_FILE_FRAME_INFO* pFramInfos; // 帧信息,由用户申请空间,空间大小为 sizeof(NET_FILE_FRAME_INFO) * nMaxFramCount int nMaxFramCount; // 用户申请的帧信息个数 int nRetFramCount; // 实际返回的帧信息个数 }NET_OUT_FINDNEXT_FRAMEINFO_PRAM; #define MAX_LABEL_ARRAY 1024 ///@brief 标签数组 typedef struct tagNET_FILE_STREAM_TAG_INFO { DWORD dwSize; // 结构体大小 NET_TIME stuTime; // 标签时间 char szContext[DH_COMMON_STRING_64]; // 标签内容,中文必须使用utf8编码 char szUserName[DH_COMMON_STRING_32]; // 用户名,中文必须使用utf8编码,EVS增加 char szChannelName[DH_COMMON_STRING_64]; // 通道名称,中文必须使用utf8编码,EVS增加 int nDuration; // 打标的录像持续时间,单位秒 } NET_FILE_STREAM_TAG_INFO; ///@brief 文件类型 typedef enum tagNET_FILE_STREAM_TYPE { NET_FILE_STREAM_TYPE_UNKNOWN = 0, // 未知 NET_FILE_STREAM_TYPE_NORMAL, // 普通 NET_FILE_STREAM_TYPE_ALARM, // 报警 NET_FILE_STREAM_TYPE_DETECTION, // 动检 } NET_FILE_STREAM_TYPE; ///@brief 查询到的标签信息 typedef struct tagNET_FILE_STREAM_TAG_INFO_EX { DWORD dwSize; NET_TIME stuTime; // 标签所对于视频的时间,精确到秒 int nMillisecond; // 毫秒 int nSequence; // 视频序列号 char szContext[DH_COMMON_STRING_64]; // 标签内容,中文必须使用utf8编码 NET_TIME stuStartTime; // 录像文件开始时间 NET_TIME stuEndTime; // 录像文件结束时间 NET_FILE_STREAM_TYPE emType; // 文件类型 char szUserName[DH_COMMON_STRING_32]; // 用户名,中文必须使用utf8编码,EVS增加 char szChannelName[DH_COMMON_STRING_64]; // 通道名称,中文必须使用utf8编码,EVS增加 int nDuration; // 打标的录像持续时间,单位秒 } NET_FILE_STREAM_TAG_INFO_EX; ///@brief CLIENT_FileStreamClearTags / CLIENT_FileStreamSetTags 接口输入参数 typedef struct tagNET_IN_FILE_STREAM_TAGS_INFO { DWORD dwSize; // 结构体大小 int nArrayCount; // 标签数组个数 NET_FILE_STREAM_TAG_INFO* pstuTagInfo; // 标签数组,各项内容关系为"且", 用户分配内存,大小为sizeof(NET_FILE_STREAM_TAG_INFO)*nArrayCount } NET_IN_FILE_STREAM_TAGS_INFO; ///@brief CLIENT_FileStreamClearTags / CLIENT_FileStreamSetTags 接口输出参数 typedef struct tagNET_OUT_FILE_STREAM_TAGS_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_FILE_STREAM_TAGS_INFO; ///@brief CLIENT_FileStreamGetTags 接口输入参数 typedef struct tagNET_IN_FILE_STREAM_GET_TAGS_INFO { DWORD dwSize; // 结构体大小 } NET_IN_FILE_STREAM_GET_TAGS_INFO; ///@brief CLIENT_FileStreamGetTags / CLIENT_FileStreamfilterTags 接口输出参数 typedef struct tagNET_OUT_FILE_STREAM_GET_TAGS_INFO { DWORD dwSize; // 结构体大小 int nMaxNumber; // 标签数组最大个数 int nRetTagsNumber; // 标签数组实际返回的个数 NET_FILE_STREAM_TAG_INFO_EX* pstuTagInfo; // 标签数组 } NET_OUT_FILE_STREAM_GET_TAGS_INFO; ///@brief CLIENT_FileStreamFilterTags 接口输入参数 typedef struct tagNET_IN_FILE_STREAM_FILTER_TAGS_INFO { DWORD dwSize; // 结构体大小 char szContext[DH_COMMON_STRING_64]; // 标签内容,中文必须使用utf8编码 char szUserName[DH_COMMON_STRING_32]; // 用户名,中文必须使用utf8编码,EVS增加 char szChannelName[DH_COMMON_STRING_64]; // 通道名称,中文必须使用utf8编码,EVS增加 } NET_IN_FILE_STREAM_FILTER_TAGS_INFO; ///@brief 子标签信息 typedef struct tagNET_TAGMANAGER_SUB_TAG_INFO { NET_TIME stuTime; // 子标签时间 char szSubTagName[DH_COMMON_STRING_64]; // 子标签名字 BYTE byReserved[512]; // 保留字段 }NET_TAGMANAGER_SUB_TAG_INFO; ///@brief 标签信息。该标签有开始和结束时间,与 NET_FILE_STREAM_TAG_INFO_EX 不同 typedef struct tagNET_TAGMANAGER_TAG_INFO { char szContext[DH_COMMON_STRING_64]; // 标签内容 NET_TIME stuStartTime; // 录像标签开始时间 NET_TIME stuEndTime; // 录像标签结束时间 int nSubTagVaildNum; // 子标签有效个数 NET_TAGMANAGER_SUB_TAG_INFO stuSubTag[MAX_SUB_TAG_NUM]; // 子标签数组 BYTE byReserved[1024]; // 保留字段 }NET_TAGMANAGER_TAG_INFO; ///@brief 标签查询的条件信息 typedef struct tagNET_FINDTAGS_CONDITION_INFO { char szContext[DH_COMMON_STRING_64]; // 标签内容 BYTE byReserved[1024]; // 保留字段 }NET_FINDTAGS_CONDITION_INFO; ///@brief 查询标签信息, CLIENT_FileStreamFindTags 输入参数 typedef struct tagNET_IN_FINDTAGS_INFO { DWORD dwSize; BOOL bConditionEnable; // 为True时, stuCondition有效, lToken无效; 为False时, stuCondition无效, lToken有效 NET_FINDTAGS_CONDITION_INFO stuCondition; // 查询条件,第一次查询时使用 UINT lToken; // 查询句柄,第二次查询时开始使用,由第一次的 NET_OUT_FINDTAGS_INFO 获取 int nOffset; // 查询偏移量 int nCount; // 单次查询数量,不超过60 }NET_IN_FINDTAGS_INFO; ///@brief // 查询标签信息, CLIENT_FileStreamFindTags 输出参数 typedef struct tagNET_OUT_FINDTAGS_INFO { DWORD dwSize; UINT lToken; // 查询句柄,第一次查询返回 int nTotal; // 设备返回的记录总数 int nMaxTagsNumber; // 标签数组(pstuTagInfo)最大个数, 不小于 NET_IN_FINDTAGS_INFO 的nCount字段 int nRetTagsNumber; // 标签数组(pstuTagInfo)实际返回的个数 NET_TAGMANAGER_TAG_INFO* pstuTagInfo; // 标签数组指针, 用户分配内存, 大小为sizeof(NET_TAGMANAGER_TAG_INFO)*nMaxTagsNumber }NET_OUT_FINDTAGS_INFO; ///@brief 标签状态 typedef struct tagNET_TAGMANAGER_TAGSTATE_INFO { int nChannel; // 通道号 char szContext[DH_COMMON_STRING_64]; // 标签内容,废弃,请使用szContextEx NET_TIME stuStartTime; // 标签开始时间 int nSubTagVaildNum; // 子标签(stuSubTag)有效个数 NET_TAGMANAGER_SUB_TAG_INFO stuSubTag[MAX_SUB_TAG_NUM]; // 子标签数组 char szContextEx[DH_COMMON_STRING_256]; // 标签内容扩展 BYTE byReserved[768]; // 保留字段 }NET_TAGMANAGER_TAGSTATE_INFO; ///@brief 获取设备打标签状态, CLIENT_TagManagerGetTagState 输入参数 typedef struct tagNET_IN_TAGMANAGER_GETTAGSTATE_INFO { DWORD dwSize; }NET_IN_TAGMANAGER_GETTAGSTATE_INFO; ///@brief 获取设备打标签状态, CLIENT_TagManagerGetTagState 输出参数 typedef struct tagNET_OUT_TAGMANAGER_GETTAGSTATE_INFO { DWORD dwSize; // 结构体大小 int nState; // 打标签状态, 0未打标签, 1正在打标签 int nMaxTagStaeNumber; // 标签数组(pstuTagStateInfo)的最大个数 int nRetTagStaeNumber; // 标签数组(pstuTagStateInfo)的实际返回的个数 NET_TAGMANAGER_TAGSTATE_INFO* pstuTagStateInfo; // 标签数组的指针, 用户分配内存, 大小为sizeof(NET_TAGMANAGER_TAGSTATE_INFO)*nMaxTagStaeNumber }NET_OUT_TAGMANAGER_GETTAGSTATE_INFO; ///@brief 开始打标签, CLIENT_TagManagerStartTag 输入参数 typedef struct tagNET_IN_TAGMANAGER_STARTTAG_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szContext[DH_COMMON_STRING_64]; // 标签内容 char szContextEx[DH_COMMON_STRING_256]; // 标签内容扩展 bool bIsUsingContextEx; // 扩展标签是否有用 }NET_IN_TAGMANAGER_STARTTAG_INFO; ///@brief 开始打标签, CLIENT_TagManagerStartTag 输出参数 typedef struct tagNET_OUT_TAGMANAGER_STARTTAG_INFO { DWORD dwSize; }NET_OUT_TAGMANAGER_STARTTAG_INFO; ///@brief 打子标签, CLIENT_TagManagerSetSubTag 输入参数 typedef struct tagNET_IN_TAGMANAGER_SETSUBTAG_INFO { DWORD dwSize; int nChannel; // 通道号 char szSubTagName[DH_COMMON_STRING_64]; // 子标签名字 }NET_IN_TAGMANAGER_SETSUBTAG_INFO; ///@brief 打子标签, CLIENT_TagManagerSetSubTag 输出参数 typedef struct tagNET_OUT_TAGMANAGER_SETSUBTAG_INFO { DWORD dwSize; }NET_OUT_TAGMANAGER_SETSUBTAG_INFO; ///@brief 停止打标签, CLIENT_TagManagerStopTag 输入参数 typedef struct tagNET_IN_TAGMANAGER_STOPTAG_INFO { DWORD dwSize; int nChannel; // 通道号 }NET_IN_TAGMANAGER_STOPTAG_INFO; ///@brief 停止打标签, CLIENT_TagManagerStopTag 输出参数 typedef struct tagNET_OUT_TAGMANAGER_STOPTAG_INFO { DWORD dwSize; }NET_OUT_TAGMANAGER_STOPTAG_INFO; ///@brief 获取标签查询能力, CLIENT_TagManagerGetCaps 输入参数 typedef struct tagNET_IN_TAGMANAGER_GETCAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_TAGMANAGER_GETCAPS_INFO; ///@brief 获取标签查询能力, CLIENT_TagManagerGetCaps 输出参数 typedef struct tagNET_OUT_TAGMANAGER_GETCAPS_INFO { DWORD dwSize; // 结构体大小 UINT nMaxCount; // 每次最大查询条数 }NET_OUT_TAGMANAGER_GETCAPS_INFO; ///@brief 开始查询标签信息, CLIENT_TagManagerStartFind 输入参数 typedef struct tagNET_IN_TAGMANAGER_STARTFIND_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道 char szContext[DH_COMMON_STRING_256]; // 标签内容 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 }NET_IN_TAGMANAGER_STARTFIND_INFO; ///@brief 开始查询标签信息, CLIENT_TagManagerStartFind 输出参数 typedef struct tagNET_OUT_TAGMANAGER_STARTFIND_INFO { DWORD dwSize; // 结构体大小 int nTotalCount; // 查询返回的条数 }NET_OUT_TAGMANAGER_STARTFIND_INFO; ///@brief 获取标签查询结果信息, CLIENT_TagManagerDoFind 输入参数 typedef struct tagNET_IN_TAGMANAGER_DOFIND_INFO { DWORD dwSize; // 结构体大小 int nBeginNumber; // 起始查询编号 int nCount; // 查询数量, 最大请参考CLIENT_TagManagerGetCaps返回的设备查询能力 }NET_IN_TAGMANAGER_DOFIND_INFO; ///@brief 子标签信息 typedef struct tagNET_FINDSUBTAG_INFO { NET_TIME stuStartTime; // 子标签开始时间 char szSubTagName[DH_COMMON_STRING_64]; // 子标签内容 BYTE byReserved[128]; // 保留字节 }NET_FINDSUBTAG_INFO; ///@brief 录像标签信息 typedef struct tagNET_FINDTAG_INFO { char szContext[DH_COMMON_STRING_256]; // 标签内容 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nSubtagInfoCount; // 子标签信息个数 NET_FINDSUBTAG_INFO stuSubTagInfo[20]; // 子标签信息 BYTE byReserved[1020]; // 保留字节 }NET_FINDTAG_INFO; ///@brief 获取标签查询结果信息, CLIENT_TagManagerDoFind 输出参数 typedef struct tagNET_OUT_TAGMANAGER_DOFIND_INFO { DWORD dwSize; // 结构体大小 UINT nMaxTagInfoCount; // 本次查询最多可以接受到标签数量,用户预先分配好的pstuTagInfo内存个数 UINT nRetTagInfoCount; // 设备返回的实际标签数量,返回0或者小于CLIENT_TagManagerDoFind查询的Count都代表查询结束 NET_FINDTAG_INFO* pstuTagInfo; // 查找的标签信息,需要用户预先分配好内存 }NET_OUT_TAGMANAGER_DOFIND_INFO; ///////////////////////////报警相关定义/////////////////////////////// ///@brief 普通报警信息 typedef struct { int channelcount; int alarminputcount; unsigned char alarm[16]; // 外部报警 unsigned char motiondection[16]; // 动态检测 unsigned char videolost[16]; // 视频丢失 } NET_CLIENT_STATE; ///@brief 普通报警信息 typedef struct { int channelcount; int alarminputcount; unsigned char alarm[32]; // 外部报警 unsigned char motiondection[32]; // 动态检测 unsigned char videolost[32]; // 视频丢失 BYTE bReserved[32]; } NET_CLIENT_STATE_EX; ///@brief 外部报警状态信息对应结构体 typedef struct { DWORD dwSize; int alarminputcount; DWORD dwAlarmState[DH_MAX_CHANMASK]; //每一个DWORD按位表示32通道的报警状态, 0-表示无报警, 1-表示有报警 }NET_CLIENT_ALARM_STATE; ///@brief 视频丢失报警状态信息对应结构体 typedef struct { DWORD dwSize; int channelcount; DWORD dwAlarmState[DH_MAX_CHANMASK]; //每一个DWORD按位表示32通道的报警状态, 0-表示无报警, 1-表示有报警 }NET_CLIENT_VIDEOLOST_STATE; ///@brief 动态检测报警状态信息对应结构体 typedef struct { DWORD dwSize; int channelcount; DWORD dwAlarmState[DH_MAX_CHANMASK]; //每一个DWORD按位表示32通道的报警状态, 0-表示无报警, 1-表示有报警 }NET_CLIENT_MOTIONDETECT_STATE; ///@brief 视频遮挡报警状态信息对应结构体 typedef struct { DWORD dwSize; int channelcount; DWORD dwAlarmState[DH_MAX_CHANMASK]; //每一个DWORD按位表示32通道的报警状态, 0-表示无报警, 1-表示有报警 }NET_CLIENT_VIDEOBLIND_STATE; ///@brief 查询 动态检测报警状态详细信息对应结构体 typedef struct { DWORD dwSize; int nChannelID; // 通道号 BOOL bAlarm; // 是否报警 TRUE/FALSE int nLevel; // 报警级别,单位千分之,以动检发生小格数除以总小格数计算 }NET_CLIENT_DETAILEDMOTION_STATE; ///@brief 报警IO控制 typedef struct { unsigned short index; // 端口序号 unsigned short state; // 端口状态,0 - 关闭,1 - 打开 } ALARM_CONTROL; ///@brief 触发方式 typedef struct { unsigned short index; // 端口序号 unsigned short mode; // 触发方式(0关闭1手动2自动);不设置的通道,sdk默认将保持原来的设置。 BYTE bReserved[28]; } TRIGGER_MODE_CONTROL; ///@brief 报警解码器控制 typedef struct { int decoderNo; // 报警解码器号,从0开始 unsigned short alarmChn; // 报警输出口,从0开始 unsigned short alarmState; // 报警输出状态;1:打开,0:关闭 } DECODER_ALARM_CONTROL; ///@brief 呼叫无应答报警事件 typedef struct __ALARM_NO_RESPONSE_INFO { DWORD dwSize; char szCallID[DH_MAX_CALLID]; //Call ID }ALARM_NO_RESPONSE_INFO; ///@brief 报警上传功能的报警信息 typedef struct { DWORD dwAlarmType; // 报警类型,dwAlarmType = DH_UPLOAD_EVENT时,dwAlarmMask和bAlarmDecoderIndex是无效的 DWORD dwAlarmMask; // 报警信息掩码,按位表示各报警通道状态 char szGlobalIP[DH_MAX_IPADDR_LEN]; // 客户端IP地址,建议使用szGlobalIPEx char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // 客户端域名 int nPort; // 报警上传时客户端连接的端口 char szAlarmOccurTime[DH_ALARM_OCCUR_TIME_LEN]; // 报警发生的时间 BYTE bAlarmDecoderIndex; // 表示第几个报警解码器,dwAlarmType = DH_UPLOAD_DECODER_ALARM 才有效. BYTE bChannelIndex; // 通道掩码起始值(0,1,2...)大于0有效,和 dwHighAlarmMask 共同表示高于32通道的报警状态 // 如 bChannelIndex=1,表示dwHighAlarmMask为通道33-64的报警状态 BYTE bReserved[2]; DWORD dwHighAlarmMask; // 高于32通道的报警信息掩码,按位表示各报警通道状态 BYTE bReservedSpace[8]; char szGlobalIPEx[MAX_LOCAL_IP_LEN]; // 客户端IP地址,支持IPv6 } NEW_ALARM_UPLOAD; ///@brief 报警中心: pir 设备检查报警 typedef struct tagALARM_UPLOAD_PIRDETECTION_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRDETECTION_INFO; ///@brief 报警中心: pir 设备防拆报警 typedef struct tagALARM_UPLOAD_PIRTAMPER_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRTAMPER_INFO; ///@brief 报警中心: pir 设备光线遮挡报警 typedef struct tagALARM_UPLOAD_PIRCLOAK_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRCLOAK_INFO; ///@brief 报警中心: pir 设备震动报警 typedef struct tagALARM_UPLOAD_PIRSHOCK_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRSHOCK_INFO; ///@brief 报警中心: pir 设备传感器故障报警 typedef struct tagALARM_UPLOAD_PIRFAILURE_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRFAILURE_INFO; ///@brief 报警中心: pir 设备电池电量低报警 typedef struct tagALARM_UPLOAD_PIRBATTERYLOW_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRBATTERYLOW_INFO; ///@brief 报警中心: pir 设备信号丢失报警 typedef struct tagALARM_UPLOAD_PIRMISSINGCALL_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_PIRMISSINGCALL_INFO; ///@brief 报警中心: 视频虚焦事件 typedef struct tagALARM_UPLOAD_VIDEO_UNFOCUS_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_VIDEO_UNFOCUS_INFO; ///@brief 报警中心: PIR报警事件 typedef struct tagALARM_UPLOAD_ALARMPIR_INFO { int nIndex; // 序列号 NET_TIME_EX UTC; // 事件发生的时间 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作, 0表示脉冲事件,1表示事件开始,2表示事件结束; BYTE byReserved[1024]; // 保留 } ALARM_UPLOAD_ALARMPIR_INFO; ///@brief 报警中心心跳事件 typedef struct tagALARM_UPLOAD_HEARTBEAT_INFO { char szGlobalIP[DH_MAX_IPADDR_LEN]; // 客户端IP地址,建议使用szGlobalIPEx char szMAC[DH_MACADDR_LEN]; // MAC地址 int nKeepAlive; // 设备端保活时间,即多久会发一个保活包。单位:秒 NET_TIME_EX stuTime; // 事件发生时间 char szGlobalIPEx[MAX_LOCAL_IP_LEN]; // 客户端IP地址,支持IPv6 BYTE byReserved[960]; // 保留字节 }ALARM_UPLOAD_HEARTBEAT_INFO; ///@brief 报警中心上线/断线事件 typedef struct tagALARM_UPLOAD_ONLINE_INFO { char szGlobalIP[DH_MAX_IPADDR_LEN]; // 客户端IP地址,建议使用szGlobalIPEx int nPort; // 客户端端口 NET_TIME_EX stuTime; // 事件发生时间 BOOL bOnLine; // 在线:TRUE(在线) FALSE(断线) char szGlobalIPEx[MAX_LOCAL_IP_LEN]; // 客户端IP地址,支持IPv6 BYTE byReserved[956]; // 保留字节 }ALARM_UPLOAD_ONLINE_INFO; ///@brief 报警中心烟感报警事件 typedef struct __ALARM_UPLOAD_SMOKESENSOR_INFO { DWORD dwSize; char szGlobalIP[DH_MAX_IPADDR_LEN]; // 客户端IP地址,建议使用szGlobalIPEx char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // 客户端域名 int nPort; // 报警上传时客户端连接的端口 char szAlarmOccurTime[DH_ALARM_OCCUR_TIME_LEN]; // 报警发生的时间 int nChannel; // 报警通道 从0开始 BYTE byHighTemperature; // 1:温度异常报警开始,0:温度异常报警结束 BYTE bySmoke; // 1:烟感报警开始,0:烟感报警结束 char szGlobalIPEx[MAX_LOCAL_IP_LEN]; // 客户端IP地址,支持IPv6 }ALARM_UPLOAD_SMOKESENSOR_INFO; ///@brief 警戒区入侵方向 typedef enum tagNET_CROSSREGION_DIRECTION_INFO { EM_CROSSREGION_DIRECTION_UNKNOW = 0 , EM_CROSSREGION_DIRECTION_ENTER , //进入 EM_CROSSREGION_DIRECTION_LEAVE , //离开 EM_CROSSREGION_DIRECTION_APPEAR , //出现 EM_CROSSREGION_DIRECTION_DISAPPEAR , //消失 }NET_CROSSREGION_DIRECTION_INFO; ///@brief 报警中心智能报警事件 typedef struct __ALARM_UPLOAD_IVS_INFO { DWORD dwSize; NET_TIME stuTime; // 事件发生时间 char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // 客户端域名 int nChannelID; // 通道号,从0开始 char szType[MAX_PATH]; // 报警类型, 检测规则 // "CrossLineDetection" 警戒线 // "CrossFenceDetection" 穿越围栏 // "CrossRegionDetection" 警戒区 // "PasteDetection" ATM贴条 // "LeftDetection" 物品遗留 // "Preservation" 物品保全 // "TakenAwayDetection" 物品搬移 // "StayDetection" 停留/滞留 // "ParkingDetection" 非法停车 // "WanderDetection" 徘徊 // "MoveDetection" 运动 // "TailDetection" 尾随 // "RioterDetection" 聚集 // "FightDetection" 打架 // "RetrogradeDetection" 逆行 // "FireDetection" 火焰 // "SmokeDetection" 烟雾 // "NumberStat" 数量统计 // "VideoAbnormalDetection" 视频异常 // "FaceDetection" 目标检测 // "TargetRecognition" 目标识别 // "DensityDetection" 密集度检测 // "QueueDetection" 排队检测 int nState; // 报警状态,0-报警复位,1-报警置位, 2-脉冲式报警 char szRuleName[DH_COMMON_STRING_128]; // 规则名称 char szIPAddress[DH_MAX_IPADDR_LEN_EX]; // 设备IP地址 int nPort; // 设备端口号 char szMacAddress[DH_MACADDR_LEN]; // 设备端mac地址 char szPicFilePath[MAX_PATH]; // 图片存放文件夹路径 int nPicFileNum; // 当前报警对应的图片文件个数 int nUploadPicFileNum; // 已上传FTP的图片文件个数 DWORD dwChannelMask; // 抓图视频通道的掩码,15表示此次报警抓图的有1,2,3,4通道 NET_CROSSREGION_DIRECTION_INFO emDirection; // 警戒区入侵方向, 仅在szType 为CrossRegionDetection 时有效 } ALARM_UPLOAD_IVS_INFO; ///@brief 报警中心外部报警扩展信息 typedef struct _ALARM_UPLOAD_ALARMEX_INFO { DWORD dwSize; NET_TIME stuTime; // 事件发生时间 char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // 客户端域名 DWORD dwAlarmMask; // 报警信息掩码,按位表示各报警通道状态, 7表示1,2,3报警输入通道 char szDevMac[DH_MACADDR_LEN]; // 设备端mac地址 char szPicFilePath[MAX_PATH]; // 图片存放文件夹路径 int nPicFileNum; // 当前报警对应的图片文件个数 int nUploadPicFileNum; // 已上传FTP的图片文件个数 char szAreaName[DH_COMMON_STRING_128]; // 防区名称 DWORD dwChannelMask; // 抓图视频通道的掩码,15表示此次报警抓图的有1,2,3,4通道 }ALARM_UPLOAD_ALARMEX_INFO; ///@brief 登陆失败类型 typedef enum _EM_LOGIN_FAILED_TYPE { LOGIN_FAILED_UNKNOW = 0 , LOGIN_FAILED_PASSWORD , //密码不正确 LOGIN_FAILED_USER , //帐号不存在 LOGIN_FAILED_TIMEOUT , //等待登录返回超时 LOGIN_FAILED_RELOGGIN , //帐号已经登录 LOGIN_FAILED_LOCKED , //帐号已被锁定 LOGIN_FAILED_BLACKLIST , //帐号被列入禁止名单 LOGIN_FAILED_ERROR_BUSY , //资源不足,系统忙 LOGIN_FAILED_VERSION , //版本不对,无法登陆 }EM_LOGIN_FAILED_TYPE; ///@brief 远程登录失败报警信息 typedef struct __ALARM_UPLOAD_LOGIN_FAILED_INFO { DWORD dwSize; EM_LOGIN_FAILED_TYPE emFailedType; //登陆失败类型 char szDeviceIP[DH_COMMON_STRING_64]; //登入设备IP DWORD nDevicePort; //登入设备端口 }ALARM_UPLOAD_LOGIN_FAILED_INFO; ///@brief 录像状态变化报警信息 typedef struct { int nChannel; // 录像通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[12]; } ALARM_RECORDING_CHANGED; ///@brief 视频码流类型 typedef enum tagNET_STREAM_TYPE { NET_EM_STREAM_ERR, // 其它 NET_EM_STREAM_MAIN, // "Main"-主码流 NET_EM_STREAM_EXTRA_1, // "Extra1"-辅码流1 NET_EM_STREAM_EXTRA_2, // "Extra2"-辅码流2 NET_EM_STREAM_EXTRA_3, // "Extra3"-辅码流3 NET_EM_STREAM_SNAPSHOT, // "Snapshot"-抓图码流 NET_EM_STREAM_OBJECT, // "Object"-物体流 NET_EM_STREAM_AUTO, // "Auto"-自动选择合适码流 NET_EM_STREAM_PREVIEW, // "Preview"-预览裸数据码流 NET_EM_STREAM_NONE, // 无视频码流(纯音频) }NET_STREAM_TYPE; ///@brief 录像状态变化报警(DH_ALARM_RECORD_CHANGED_EX) typedef struct __ALARM_RECORD_CHANGED_INFO_EX { int nAction; // 0:开始 1:停止 int nChannel; // 通道 char szStoragePoint[DH_COMMON_STRING_64]; // 录像存储点 NET_STREAM_TYPE emStreamType; // 录像码流 char szUser[DH_COMMON_STRING_128]; // 操作用户 BYTE byReserved[828]; // 保留 } ALARM_RECORD_CHANGED_INFO_EX; ///@brief MPT录像导入NVR的进度事件(DH_ALARM_POLICE_RECORD_PROGRESS) typedef struct tagALARM_POLICE_RECORD_PROGRESS_INFO { int nAction; // 0:pulse,-1未知 int nUsbSlot; // MPT所在USB槽位号 UINT nTotalSize; // 文件总大小,单位KB UINT nTransferSize; // 已经导入NVR的文件大小,单位KB BYTE byReserved[1024]; // 保留 }ALARM_POLICE_RECORD_PROGRESS_INFO; ///@brief MPT设备状态 typedef enum tagEM_MPT_STATE { EM_MPT_STATE_UNKNOWN, // 未知 EM_MPT_STATE_PLUGIN_OUT, // 设备拔出 EM_MPT_STATE_PLUGIN_IN_WORKING_PROPERLY, // 设备插入且工作正常 EM_MPT_STATE_PLUGIN_IN_STORAGE_ERROR, // 设备插入但存储介质损坏 }EM_MPT_STATE; ///@brief MPT插入拔出设备事件(DH_ALARM_POLICE_PLUGIN) typedef struct tagALARM_POLICE_PLUGIN_INFO { int nAction; // 0:pulse,-1未知 int nUsbSlot; // MPT所在USB槽位号 EM_MPT_STATE eState; // MPT状态 char szSerialNumber[DH_COMMON_STRING_32]; // MPT设备序列号 BYTE byReserved[1024]; // 保留 }ALARM_POLICE_PLUGIN_INFO; ///@brief GPS未定位报警(DH_ALARM_GPS_NOT_ALIGNED) typedef struct tagALARM_GPS_NOT_ALIGNED_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 NET_TIME_EX stuStartTime; // 开始时间,nAction为2时上报此字段 BYTE byReserved[988]; // 保留字节 }ALARM_GPS_NOT_ALIGNED_INFO; ///@brief 网络未连接报警(包括wifi,3G/4G)(DH_ALARM_WIRELESS_NOT_CONNECTED) typedef struct tagALARM_WIRELESS_NOT_CONNECTED_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 }ALARM_WIRELESS_NOT_CONNECTED_INFO; ///@brief 离线日志同步状态 typedef enum tagEM_OFFLINE_LOGSYNC_STATE { EM_OFFLINE_LOGSYNC_STATE_UNKNOWN, // 未知 EM_OFFLINE_LOGSYNC_STATE_SUCCEEDED, // 成功 EM_OFFLINE_LOGSYNC_STATE_FAILED, // 失败 }EM_OFFLINE_LOGSYNC_STATE; ///@brief 同步离线日志事件 typedef struct tagALARM_OFFLINE_LOGSYNC_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 int nDevAddrs; // 分控制器ID EM_OFFLINE_LOGSYNC_STATE emState; //同步情况 BYTE byReserved[1024]; // 保留字节 }ALARM_OFFLINE_LOGSYNC_INFO; #define NET_MAX_WINDINGID_NUM 8 ///@brief 线圈/车检器报警 typedef struct __ALARM_WINGDING_INFO { int nDriveWayID; // 车道号 int nWindingID; // 线圈ID,此字段废除,以nWindingIDs为准 NET_TIME stuTime; // 报警发生时间 int nState; // 设备状态,0表示故障恢复,1表示发生故障 DWORD dwChannel; // 报警的通道号 char reserve[28]; int nWindingIDNum; // 线圈ID个数 int nWindingIDs[NET_MAX_WINDINGID_NUM]; // 具体线圈ID NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_WINGDING_INFO; ///@brief 交通拥塞报警 typedef struct __ALARM_TRAF_CONGESTION_INFO { int nDriveWayID; // 车道号 int nCongestionLevel; // 交通拥塞等级:1,2,3,4,5,6;1级最严重 NET_TIME stuTime; // 报警发生时间 int nState; // 设备状态,0表示故障恢复,1表示发生故障 DWORD dwChannel; // 报警的通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[28]; } ALARM_TRAF_CONGESTION_INFO; ///@brief 交通异常报警 typedef struct __ALARM_TRAF_EXCEPTION_INFO { int nDriveWayID; // 车道号 NET_TIME stuTime; // 报警发生时间 int nState; // 设备状态,0表示故障恢复,1表示发生故障 DWORD dwChannel; // 报警的通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[28]; } ALARM_TRAF_EXCEPTION_INFO; ///@brief 补光设备故障报警 typedef struct __ALARM_EQUIPMENT_FILL_INFO { int nDriveWayID; // 车道号 NET_TIME stuTime; // 报警发生时间 int nState; // 设备状态,0表示故障恢复,1表示发生故障 DWORD dwChannel; // 报警的通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[28]; // 保留字节 } ALARM_EQUIPMENT_FILL_INFO; ///@brief 报警布撤防状态信息 typedef struct __ALARM_ARM_DISARM_STATE_INFO { BYTE bState; // 布撤防状态,0表示撤防,1表示布防,2表示强制布防 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[32]; // 保留字节 } ALARM_ARM_DISARM_STATE_INFO; ///@brief 3G流量超出阈值状态信息 typedef struct __DHDEV_3GFLOW_EXCEED_STATE_INFO { BYTE bState; // 3G流量超出阈值状态,0表示未超出阀值,1表示超出阀值 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[32]; // 保留字节 } DHDEV_3GFLOW_EXCEED_STATE_INFO; ///@brief 限速报警或路口限速报警 (DH_DEVSTATE_SPEED_LIMIT) typedef struct __ALARM_SPEED_LIMIT { char szType[DH_SPEEDLIMIT_TYPE_LEN]; // 限速报警类别:LowerSpeed, UpperSpeed int iSpeedLimit; // 限速 单位KM/H int iSpeed; // 速度 单位KM/H char szCrossingID[DH_MAX_CROSSING_ID]; // 路口序列号 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 DHDEVTIME stTime; // 报警发生时间 BYTE bOffline; // 0-实时 1-补传 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserve[24]; }ALARM_SPEED_LIMIT; ///@brief 超载报警 typedef struct __ALARM_OVER_LOADING { NET_TIME stuCurTime; // 当前时间 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 char szDriverNo[DH_VEHICLE_DRIVERNO_LEN];// 驾驶员ID DWORD dwCurSpeed; // 当前速度 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[128]; }ALARM_OVER_LOADING; ///@brief 急刹车报警 typedef struct __ALARM_HARD_BRAKING { NET_TIME stuCurTime; // 当前时间 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 char szDriverNo[DH_VEHICLE_DRIVERNO_LEN]; // 驾驶员ID DWORD dwCurSpeed; // 当前速度 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[128]; }ALARM_HARD_BRAKING; ///@brief 烟感报警 typedef struct __ALARM_SMOKE_SENSOR { NET_TIME stuCurTime; // 当前时间 int nChannel; // 报警通道 BYTE byHighTemperature; // 1:温度异常报警开始,0:温度异常报警结束 BYTE bySmoke; // 1:烟感报警开始,0:烟感报警结束 char reserve1[2]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReservrd[128]; }ALARM_SMOKE_SENSOR; ///@brief 交通灯故障报警 typedef struct _LIGHT_INFO { BYTE byDirection; // 交通灯方向: 1-左行,2-右行,3-直行, 4-掉头 BYTE byState; // 交通灯状态: 1-故障,2-正常 BYTE byReserved[62]; // 保留字节 }LIGHT_INFO; ///@brief 交通灯故障原因 typedef struct __ALARM_TRAFFIC_LIGHT_FAULT { NET_TIME stTime; // 报警发生时间 int nInfoNumber; // 故障信息数 LIGHT_INFO stLightInfo[8]; // 交通灯故障信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[128]; // 保留字段 }ALARM_TRAFFIC_LIGHT_FAULT; ///@brief 流量统计报警通道信息 typedef struct __ALARM_TRAFFIC_FLUX_LANE_INFO { NET_TIME stuCurTime; // 当前时间 int nLane; // 车道号 int nState; // 状态值:1-表示拥堵, 2-表示拥堵恢复, 3-表示正常, 4-表示中断, 5-表示中断恢复 int nFlow; // 流量值,单位:辆/分 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[124]; // 保留 }ALARM_TRAFFIC_FLUX_LANE_INFO; ///@brief SIP状态改变报警() typedef struct __ALARM_SIP_STATE { int nChannelID; BYTE byStatus; //0:注册成功,1:未注册,2:无效,3:注册中,4:通话中 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[64]; // 保留 }ALARM_SIP_STATE; ///@brief 车载自定义信息上传(DH_DEVSTATE_VIHICLE_INFO_UPLOAD) typedef struct __ALARM_VEHICLE_INFO_UPLOAD { char szType[DH_VEHICLE_TYPE_LEN]; // 信息类别: DriverCheck:司机签入签出 char szCheckInfo[DH_VEHICLE_INFO_LEN]; // 签入:CheckIn、签出:CheckOut char szDirverNO[DH_VEHICLE_DRIVERNO_LEN]; // 司机工号字符串 DHDEVTIME stTime; // 报警发生时间 BYTE bOffline; // 0-实时 1-补传 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[64]; }ALARM_VEHICLE_INFO_UPLOAD; ///@brief 卡号录像信息上传 typedef struct __ALARM_CARD_RECORD_INFO_UPLOAD { int nChannel; // 通道号 BOOL bEnable; // 是否正在卡号录像 char szCardInfo[DH_MAX_CARD_INFO_LEN]; // 卡号信息 NET_TIME stuTime; // 该卡号生效起始时间 BOOL bPreviewOverlayEn; // 预览叠加使能 BYTE byOverlayPos; // 叠加位置,1-左上,2-左下,3-右上,4-右下 char reserve1[3]; // 字节对齐 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[64]; }ALARM_CARD_RECORD_INFO_UPLOAD; ///@brief 交易类型 typedef enum __ATMTradeTypes{ TRADE_TYPE_INC = 0, //插卡INSERTCARD TRADE_TYPE_WDC, //退卡WITHDRAWCARD TRADE_TYPE_CKT, //校时CHECKTIME TRADE_TYPE_INQ, //查询 TRADE_TYPE_CWD, //取款 TRADE_TYPE_PIN, //改密 TRADE_TYPE_TFR, //转帐 TRADE_TYPE_DEP, //存款 TRADE_TYPE_NCINQ, //无卡查询 TRADE_TYPE_NCDEP, //无卡存款 TRADE_TYPE_OTHERS, //其它 TRADE_TYPE_ALL, //总 }DH_eATMTradeTypes; ///@brief 交易信息 typedef struct __ALARM_ATM_INFO_UPLOAD_CHNL { int nChannel; // 查询的第几通道ATM叠加信息,范围0-N-1(N表示通道数) char szATMID[32]; // ATM终端号 char szCardNo[32]; // 卡号 例:6222421541208230456 char szTradetime[32]; // 交易时间 例:20111118112200表示2011-11-18 11:22:00 DH_eATMTradeTypes emTradeType; // 交易类型 范围: ATMTradeTypes int nAmount; // 交易金额 0-4294967296 BYTE byRerved[32]; // 保留 }ALARM_ATM_INFO_UPLOAD_CHNL; ///@brief ATM交易信息上传(DH_ALARM_ATM_INFO_UPLOAD)事件对应结构体 typedef struct __ALARM_ATM_INFO_UPLOAD { int nCnt; ALARM_ATM_INFO_UPLOAD_CHNL m_stAtmInfo[DH_MAX_CHANNUM]; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_ATM_INFO_UPLOAD; ///@brief 摄像机移位报警事件 typedef struct __ALARM_CAMERA_MOVE_INFO { int nChannelNum; // 报警发生通道数 unsigned char alarmChannels[DH_MAX_CHANNUM_EX]; // 发生报警通道号信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[128]; }ALARM_CAMERA_MOVE_INFO; ///@brief 详细动检报警信息 typedef struct __ALARM_DETAILEDMOTION_CHNL_INFO { DWORD dwSize; int nChannelID; // 通道号 BOOL bAlarm; // 是否报警 TRUE/FALSE int nLevel; // 报警级别,单位千分之,以动检发生小格数除以总小格数计算 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_DETAILEDMOTION_CHNL_INFO; ///@brief 存储异常报警 typedef struct __ALARM_STORAGE_FAILURE { DWORD dwSize; // 结构体大小 UINT ActionType; // 0:停止, 1:开始 char szProtocol[DH_MAX_STRING_LEN]; // 协议类型,目前只支持FTP char szServerAddr[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 服务器IP地址 DWORD dwPort; // 端口号 NET_TIME stuTime; // 事件发生时间 int nChannel; // 通道号, 从1开始, 0表示不区分通道 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_STORAGE_FAILURE; ///@brief 数据来源 typedef enum tagEM_DATE_SOURCE { EM_DATE_SOURCE_GPS, // GPS EM_DATE_SOURCE_INERTIALNAVIGATION, // 惯性导航数据 }EM_DATE_SOURCE; ///@brief GPS状态信息 typedef struct _NET_GPS_STATUS_INFO { NET_TIME revTime; // 定位时间 char DvrSerial[50]; // 设备序列号 BYTE byRserved1[6]; // 对齐字节 double longitude; // 经度(单位是百万分之度,范围0-360度) double latidude; // 纬度(单位是百万分之度,范围0-180度) double height; // 高度(米) double angle; // 方向角(正北方向为原点,顺时针为正) double speed; // 速度(单位km/H) WORD starCount; // 定位星数, emDateSource为 EM_DATE_SOURCE_GPS时有效 BYTE byRserved2[2]; // 对齐字节 NET_THREE_STATUS_BOOL antennaState; // 天线状态, emDateSource为 EM_DATE_SOURCE_GPS时有效 NET_THREE_STATUS_BOOL orientationState; // 定位状态 int workStae; // 工作状态(0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算 // emDateSource为 EM_DATE_SOURCE_GPS时有效 int nAlarmCount; // 发生的报警位置个数 int nAlarmState[128]; // 发生的报警位置,值可能多个, emDateSource为 EM_DATE_SOURCE_GPS时有效 BYTE bOffline; // 0-实时 1-补传 BYTE bSNR; // GPS信噪比,表示GPS信号强度,值越大,信号越强 范围:0~100,0表示不可用 BYTE byRserved3[2]; // 对齐字节 EM_DATE_SOURCE emDateSource; // 数据来源 int nSignalStrength; // 在当前工作模式下(GPS或北斗等系统)的信号强度 float fHdop; // 水平精度因子惯性导航时无效 float fPdop; // 位置精度因子,惯性导航时无效 int nMileage; // 总里程, 单位 米 BYTE byRserved[96]; // 保留字节 } NET_GPS_STATUS_INFO,*LPNET_GPS_STATUS_INFO; ///@brief 前端断网报警信息 typedef struct __ALARM_FRONTDISCONNET_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 从1开始 int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 事件发生时间 char szIpAddress[MAX_PATH]; // 前端IPC的IP地址 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 仅部分设备有效。报警类型为DH_ALARM_FRONTDISCONNECT时,此字段无效。 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_FRONTDISCONNET_INFO; ///@brief 事件类型DH_ALARM_KEYPAD_TAMPER (键盘防拆事件)对应的数据块描述信息 typedef struct tagALARM_KEYPAD_TAMPER_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_KEYPAD_TAMPER_INFO; ///@brief 事件类型DH_ALARM_KEYPAD_FAILURE (键盘掉线事件)对应的数据块描述信息 typedef struct tagALARM_KEYPAD_FAILURE_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_KEYPAD_FAILURE_INFO; ///@brief 事件类型DH_ALARM_NOT_CLEAR_CAR (未清车告警事件)对应的数据块描述信息 typedef struct tagALARM_NOT_CLEAR_CAR_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char szReserved[1024]; // 保留字节 } ALARM_NOT_CLEAR_CAR_INFO; ///@brief 事件类型DH_ALARM_WIRELESS_DEVBATTERY_LOSS (探测器电池丢失事件)对应的数据块描述信息 typedef struct tagALARM_WIRELESS_DEVBATTERY_LOSS_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char szAreaName[32]; // 探测器所属区域名称 char szModel[32]; // 探测器类型 char szName[32]; // 探测器名称 char szSN[32]; // 探测器序列号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_WIRELESS_DEVBATTERY_LOSS_INFO; ///@brief 事件类型DH_ALARM_SIREN_TAMPER (警号防拆事件)对应的数据块描述信息 typedef struct tagALARM_SIREN_TAMPER_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_SIREN_TAMPER_INFO; ///@brief 事件类型DH_ALARM_KEYPAD_LOCK (键盘锁定事件)对应的数据块描述信息 typedef struct tagALARM_KEYPAD_LOCK_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_KEYPAD_LOCK_INFO; ///@brief 事件类型DH_ALARM_ALARMNET (网络报警事件)对应的数据块描述信息 typedef struct tagALARM_ALARMNET_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐 char szName[128]; // 报警名称 char szTrigger[32]; // 触发源信息 char szDesc[128]; // 报警描述信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 } ALARM_ALARMNET_INFO; ///@brief 事件类型DH_ALARM_PIC_UPLOAD_ALARM (图片上传对外通知平台事件)对应的数据块描述信息 typedef struct tagNET_ALARM_PIC_UPLOAD_ALARM_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐 char szProtocol[16]; // 协议类型 char szPicDirectory[128]; // 图片上传目录文件夹,可以是设备名,设备IP,用户自定义内容 char szReserved[1024]; // 保留字节 } NET_ALARM_PIC_UPLOAD_ALARM_INFO; ///@brief 事件类型DH_ALARM_CHANG_BAI_VEHICLE_PROHIBITED (禁行时间段车辆移动上报事件)对应的数据块描述信息 typedef struct tagNET_ALARM_CHANG_BAI_VEHICLE_PROHIBITED_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐 NET_TIME stuVehicleProhibitedStartTime; // 禁行开始时间(本地时间) NET_TIME stuVehicleProhibitedEndTime; // 禁行结束时间(本地时间) NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 char szReserved[1024]; // 保留字节 } NET_ALARM_CHANG_BAI_VEHICLE_PROHIBITED_INFO; ///@brief 进出方向 typedef enum tagEM_USER_PASS_TYPE { EM_USER_PASS_TYPE_UNKNOWN, EM_USER_PASS_TYPE_ENTRY, // 进门 EM_USER_PASS_TYPE_EXIT, // 出门 }EM_USER_PASS_TYPE; ///@brief 事件类型DH_ALARM_USER_PASS_CONFIRM (用户通过闸机进入或离开事件)对应的数据块描述信息 typedef struct tagNET_ALARM_USER_PASS_CONFIRM_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 BOOL bRealUTC; // stuRealUTC 是否有效,bRealUTC 为 TRUE 时,用 stuRealUTC,否则用 stuTime 字段 NET_TIME_EX stuRealUTC; // 事件发生的时间(标准UTC时间) char byReserved[4]; // 仅用于字节对齐 UINT nCount; // 通过人数数量 EM_USER_PASS_TYPE emType; // 进出方向(事件类型) char szReserved[1024]; // 保留字节 } NET_ALARM_USER_PASS_CONFIRM_INFO; ///@brief 事件类型DH_ALARM_INSUFFICIENT_QUOTA_SPACE (配额容量不足事件)对应的数据块描述信息 typedef struct tagNET_ALARM_INSUFFICIENT_QUOTA_SPACE_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char szReserved[1020]; // 保留字节 } NET_ALARM_INSUFFICIENT_QUOTA_SPACE_INFO; ///@brief 事件类型DH_ALARM_REID_CLUSTER_STATE (REID项目上报设备聚档状态事件)对应的数据块描述信息 typedef struct tagNET_ALARM_REID_CLUSTER_STATE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_TIME_EX stuUTC; // 事件发生的时间 int nClusterState; // 当前聚档状态 1.已完成. 2.进行中 3.聚档失败 int nClusterDate; // 上次聚档触发时间,按照年月日记录,作为聚档的唯一key,单设备每日只有一条聚档记录.如20220530则表示在20220530当日已经聚档 int nClusterType; // 上次聚档类型: 1.自动每日聚档 2.平台下发手动聚档 3.手动测试触发 4.聚档主动失败重试 NET_TIME_EX stuDealTime; // 记录更新时间,已设备本地时间为准 char szReserved[1020]; // 保留字节 } NET_ALARM_REID_CLUSTER_STATE_INFO; ///@brief 用户信息 typedef struct tagNET_SAMPO_PARAMTER { char szName[128]; // 参数名称 float fValue; // 参数数值 char szReserved[512]; // 保留字节 } NET_SAMPO_PARAMTER; ///@brief 事件类型DH_ALARM_SAMPO_USER_INFORMATION (设备向平台上报用户的信息事件)对应的数据块描述信息 typedef struct tagNET_ALARM_SAMPO_USER_INFORMATION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_TIME_EX stuUTC; // 事件发生的时间 NET_SAMPO_PARAMTER stuParamter[6]; // 用户信息 int nParamterCount; // 用户信息个数 char szReserved[1020]; // 保留字节 } NET_ALARM_SAMPO_USER_INFORMATION_INFO; ///@brief 事件类型DH_ALARM_SAMPO_SERVICE_ALARM (设备向平台上报用户请求的服务事件)对应的数据块描述信息 typedef struct tagNET_ALARM_SAMPO_SERVICE_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0:开始 1:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_TIME_EX stuUTC; // 事件发生的时间 char szServiceAlarm[128]; // 请求的服务名称 char szReserved[1024]; // 保留字节 } NET_ALARM_SAMPO_SERVICE_ALARM_INFO; ///@brief SIA格式 typedef enum tagEM_SIA_EVENT_FORMAT { EM_SIA_EVENT_FORMAT_UNKNOWN, // 未知 EM_SIA_EVENT_FORMAT_SIA_DC_04, // SIA DC-04 EM_SIA_EVENT_FORMAT_CONTACT_ID_DC_05, // Contact ID DC-05 }EM_SIA_EVENT_FORMAT; ///@brief 事件类型DH_ALARM_SIA_EVENT (上报SIA服务器事件报警)对应的数据块描述信息 typedef struct tagNET_ALARM_SIA_EVENT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 EM_SIA_EVENT_FORMAT emSIAFormat; // SIA格式 char szMessageData[32]; // 对应SIA DC0-09协议事件消息报文中的data部分 char szURL[512]; // 音频, 图片, 视频等和事件相关联的文件路径 char szAreaName[128]; // Area名称, 例如"LivingRoom" char szUserID[32]; // 用户编号ID char szUserName[128]; // 用户名称 char szReserved[1024]; // 预留字节 } NET_ALARM_SIA_EVENT_INFO; ///@brief 事件类型 DH_ALARM_AP_CONNECT (连接热点事件报警)对应的数据块描述信息 typedef struct tagNET_ALARM_AP_CONNECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szMacAddress[32]; // 连接wifi后ap的mac地址 char szReserved[1024]; // 预留字节 } NET_ALARM_AP_CONNECT_INFO; ///@brief 事件类型 DH_ALARM_DGS_ERROR_REPORT (诊断故障码上报事件)对应的数据块描述信息 typedef struct tagNET_ALARM_DGS_ERROR_REPORT { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 UINT nErrorCode; // 故障诊断错误码, 取值参考诊断码值定义表 char szReserved[1024]; // 预留字节 } NET_ALARM_DGS_ERROR_REPORT; ///@brief 事件类型 DH_ALARM_RESIDENT_ALARM (驻留报警)对应的数据块描述信息 typedef struct tagNET_ALARM_RESIDENT_ALARM { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 UINT nTime; // 单位秒,驻留时间 int nTriggerType; // 触发类型 -1: 未知 0: 车检器 1: 雷达 2: 视频 char szMac[32]; // 事件触发源的Mac地址 char szReserved[988]; // 预留字节 } NET_ALARM_RESIDENT_ALARM; ///@brief 电池电压过低报警 typedef struct __ALARM_BATTERYLOWPOWER_INFO { DWORD dwSize; // 结构体大小 int nAction; // 0:开始 1:停止 int nBatteryLeft; // 剩余电量百分比,单位% NET_TIME stTime; // 事件发生时间 int nChannelID; // 通道号, 标识子设备电池, 从0开始 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_BATTERYLOWPOWER_INFO; ///@brief 温度过高报警 typedef struct __ALARM_TEMPERATURE_INFO { DWORD dwSize; // 结构体大小 char szSensorName[DH_MACHINE_NAME_NUM];// 温度传感器名称 int nChannelID; // 通道号 int nAction; // 0:开始 1:停止 float fTemperature; // 当前温度值, 单位摄氏度 NET_TIME stTime; // 事件发生时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_TEMPERATURE_INFO; ///@brief 疲劳驾驶报警 typedef struct __ALARM_TIREDDRIVE_INFO { DWORD dwSize; // 结构体大小 int nAction; // 0:开始 1:停止 int nDriveTime; // 持续驾驶时间,单位分钟 NET_TIME stTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_TIREDDRIVE_INFO; ///@brief 丢录像事件报警 typedef struct __ALARM_LOST_RECORD { DWORD dwSize; //结构体大小 UINT ActionType; // 0:停止, 1:开始 UINT nChannelID; // 通道号,从1开始 UINT nStreamType; // 码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3;4:抓图码流 NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_LOST_RECORD; ///@brief CPU占用率过高事件报警,暂定上限95%。 typedef struct __ALARM_HIGH_CPU { DWORD dwSize; //结构体大小 UINT ActionType; // 0:停止, 1:开始 UINT nUsed; // CPU占用率的1000倍 NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_HIGH_CPU; ///@brief 网络发送数据丢包事件报警 typedef struct __ALARM_LOST_NETPACKET { DWORD dwSize; //结构体大小 UINT ActionType; // 0:停止, 1:开始 UINT nChannelID; // 通道号,从1开始 UINT nStreamType; // 码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3;4:抓图码流 char szRemoteIP[DH_MAX_IPADDR_LEN]; // 发送端IP地址 DWORD dwRemotePort; // 发送端的端口地址 NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_LOST_NETPACKET; ///@brief 内存占用率过高事件报警,暂定上限95%。 typedef struct __ALARM_HIGH_MEMORY { DWORD dwSize; //结构体大小 UINT ActionType; // 0:停止, 1:开始 UINT nUsed; // 内存占用率的1000倍 NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_HIGH_MEMORY; ///@brief 禁止名单车辆抓拍事件 typedef struct __DH_BLACKLIST_SNAP_INFO { DWORD dwSize; char szPlateNumber[32]; // 车牌号 NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DH_BLACKLIST_SNAP_INFO; ///@brief 硬盘流量异常事件 typedef struct __ALARM_DISK_FLUX { DWORD dwSize; DWORD dwAction; // 0-开始, 1-停止 DWORD dwDataFlux; // 当前数据流量, KB NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_DISK_FLUX; ///@brief 网络流量异常事件 typedef struct __ALARM_NET_FLUX { DWORD dwSize; DWORD dwAction; // 0-开始, 1-停止 DWORD dwDataFlux; // 当前数据流量, KB NET_TIME stuTime; // 事件发生时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_NET_FLUX; ///@brief 风扇转速异常事件 typedef struct __ALARM_FAN_SPEED { DWORD dwSize; DWORD dwAction; // 0-开始, 1-停止 DWORD dwIndex; // 风扇序号 char szName[DH_MACHINE_NAME_NUM]; // 传感器名称 NET_TIME stuTime; // 事件发生时间 DWORD dwCurrent; // 当前转速 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_FAN_SPEED; ///@brief 硬盘报警 typedef struct __ALARM_DISK_INFO { DWORD dwSize; DWORD nChannel; // 硬盘通道号 DWORD nHDDNumber; // 磁盘列阵号, 0: 主柜,1: 扩展柜1, 2: 扩展柜2 DWORD nHDDState; // 硬盘状态, 0: Unknown, 1: Running, 2: Offline, 3: Warning, 4: Failed NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_DISK_INFO; ///@brief 文件系统告警 typedef struct __ALARM_FILE_SYSTEM_INFO { DWORD dwSize; char szMountDir[MAX_PATH]; // 文件系统挂载名 DWORD nState; // 文件系统状态, 0: Unkown, 1: Normal, 2: Error NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_FILE_SYSTEM_INFO; ///@brief 远程外部报警信息 typedef struct __ALARM_REMOTE_ALARM_INFO { DWORD dwSize; int nChannelID; // 通道号,从1开始 int nState; // 报警状态,0-报警复位,1-报警置位 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_REMOTE_ALARM_INFO; ///@brief 智能报警事件 typedef struct __ALARM_IVS_INFO { DWORD dwSize; NET_TIME stuTime; // 事件发生时间 int nChannelID; // 通道号,从0开始 char szType[MAX_PATH]; // 报警类型 int nState; // 报警状态,0-报警复位,1-报警置位, 2-脉冲式报警 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_IVS_INFO; ///@brief 车载货重报警 typedef struct __ALARM_GOODS_WEIGHT_INFO { DWORD dwSize; int nAction; // 0-开始, 1-停止 int nAlarmType; // 0-大于最大货重, 1-小于最小货重, 2-货重变化超过报警阈值 DWORD dwGoodsWeight; // 当前货重(kg) DWORD dwSelfWeight; // 自重(kg) DWORD dwTotalWeight; // 总重(kg) DWORD dwStandardWeight; // 核定货重(kg) DWORD dwWeightScale; // 货重比例 DWORD dwMaxGoodsWeight; // 最大货重(kg) DWORD dwMinGoodsWeight; // 最小货重(kg) DWORD dwAlarmWeight; // 报警阈值(kg) int nWeightChange; // 采集时间间隔内货重变化(kg) int nCheckTime; // 静止采集时间(s) } ALARM_GOODS_WEIGHT_INFO; ///@brief 车载货重信息上传 typedef struct __ALARM_GOODS_WEIGHT_UPLOAD_INFO { DWORD dwSize; DWORD dwGoodsWeight; // 当前货重(kg) DWORD dwSelfWeight; // 自重(kg) DWORD dwTotalWeight; // 总重(kg) DWORD dwStandardWeight; // 核定货重(kg) DWORD dwWeightScale; // 货重比例 char szCardNO[DH_MAX_CARDINFO_LEN]; // 卡号 } ALARM_GOODS_WEIGHT_UPLOAD_INFO; ///@brief 硬盘刻录满报警事件 typedef struct __ALARM_DISKBURNED_FULL_INFO { DWORD dwSize; int nIndex; //光盘号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_DISKBURNED_FULL_INFO; ///@brief 存储容量不足事件 typedef struct tagALARM_STORAGE_LOW_SPACE_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szDevice[DH_STORAGE_NAME_LEN]; // 存储设备名称 char szGroup[DH_STORAGE_NAME_LEN]; // 存储组名称 INT64 nTotalSpace; // 总容量, byte INT64 nFreeSpace; // 剩余容量, byte int nPercent; // 已经使用的百分比 NET_TIME_EX stuTime; // 事件触发时间 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_STORAGE_LOW_SPACE_INFO; ///@brief 存储错误类型 typedef enum __EM_STORAGE_ERROR { STORAGE_ERROR_NONE, // 无 STORAGE_ERROR_PATITION, // 分区错误 STORAGE_ERROR_INIT_FS, // 初始化文件系统错误 STORAGE_ERROR_READ_DATA, // 读数据失败 STORAGE_ERROR_WRITE_DATA, // 写数据失败 STORAGE_ERROR_RAID_FAILED, // RAID错误 STORAGE_ERROR_RAID_DEGRADED, // RAID降级 STORAGE_ERROR_ISCSI_FAILED, // iSCSI错误 STORAGE_ERROR_POOL_FAILED, // 存储池错误 STORAGE_ERROR_DISK_FAILED, // 硬盘错误 STORAGE_ERROR_FS_ABNORMAL, // 文件系统异常 STORAGE_ERROR_RECOGNITION_FAILED, // 存储硬盘识别错误 STORAGE_ERROR_CAPACITY_FAILED, // 容量异常错误 STORAGE_ERROR_PREDICT_DISK_FAILED, // 硬盘状态预测硬盘错误 STORAGE_ERROR_IO_ERROR, // I/O错误 STORAGE_ERROR_IO_HUNG, // I/O挂起 STORAGE_ERROR_IO_SLOW, // I/O慢 STORAGE_ERROR_CONTROL_OR_OTHER_ERROR, // 硬盘控制器或其他错误 } EM_STORAGE_ERROR; ///@brief 存储错误报警 typedef struct __ALARM_STORAGE_FAILURE_EX { DWORD dwSize; int nAction; // 0:开始 1:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szDevice[DH_STORAGE_NAME_LEN]; // 存储设备名称 char szGroup[DH_STORAGE_NAME_LEN]; // 存储组名称 char szPath[MAX_PATH]; // 路径 EM_STORAGE_ERROR emError; // 错误类型 int nPhysicNo; // 硬盘所在槽编码, 从1开始 NET_TIME_EX stuTime; // 事件发生的时间 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_STORAGE_FAILURE_EX; ///@brief 录像异常报警 typedef struct __ALARM_RECORD_FAILED_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 int nIndex; // 通道号 } ALARM_RECORD_FAILED_INFO; ///@brief 存储崩溃事件 typedef struct __ALARM_STORAGE_BREAK_DOWN_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 } ALARM_STORAGE_BREAK_DOWN_INFO; ///@brief 热插拔动作类型 typedef enum tagEM_STORAGE_HOT_PLUG_ACTION { HOT_PLUG_ACTION_UNKNOW = 0 , HOT_PLUG_ACTION_ADD , //插入设备 HOT_PLUG_ACTION_REMOVE , //拔出设备 }EM_STORAGE_HOT_PLUG_ACTION; ///@brief 存储热插拔事件(对应事件 DH_ALARM_STORAGE_HOT_PLUG) typedef struct __ALARM_STORAGE_HOT_PLUG_INFO { int nAction; // 0:开始 1:停止 EM_STORAGE_HOT_PLUG_ACTION emHotPLugAction; // 热插拔动作类型 char szDevice[DH_STORAGE_NAME_LEN]; // 存储设备名称 char szMediaType[DH_COMMON_STRING_32]; // 介质类型 char szBusType[DH_COMMON_STRING_32]; // 总线类型 char szMountOn[DH_COMMON_STRING_128]; // 设备挂载点 // 如果非空,插入时表示设备已挂载 // 拔出时表示设备没有正常卸载 int nPhysicNo; // 物理编号,从1开始 int nLogicNo; // 逻辑编号 BYTE bReserved[256]; // 保留字节,留待扩展. }ALARM_STORAGE_HOT_PLUG_INFO; ///@brief 流量使用情况事件(对应事件DH_ALARM_FLOW_RATE) typedef struct tagALARM_FLOW_RATE_INFO { int nAction; // 0:暂停, 1:开始, 2:停止 int nChannelID; // 通道号 UINT nFlowRate; // 传输的流量值(单位:MB) BYTE bReserved[512]; // 保留字节 } ALARM_FLOW_RATE_INFO; ///@brief 网络系统状态 typedef enum tagEM_NET_UPS_STATUS { EM_NET_UPS_SYS_SIGN=0, //系统温度值符号位. 1:表示温度负; 0:表示温度正 EM_NET_UPS_SYS_SHUTDOWN, //系统关机. 1:表示关机激活状态 EM_NET_UPS_SYS_TEST, //系统测试中. 1:表示测试中 EM_NET_UPS_SYS_TYPE, //UPS 类型. 1:表示后备机 ; 0:表示在线机 EM_NET_UPS_SYS_FAULT, //UPS 故障. 1:表示UPS内部故障 ; 0:正常 EM_NET_UPS_ELE_SUPPLY, //旁路/逆变状态. 1:AC供电 ; 0:电池供电 EM_NET_UPS_VOL_LOW, //电池电压低. 1:表示电池电压低 ; 0:表示电池正常 EM_NET_UPS_BYPASS_STATUS, //市电故障. 1:表示市电故障 ; 0:表示市电正常 EM_NET_UPS_MAX = 64, // }EM_NET_UPS_STATUS; ///@brief UPS串口信息 typedef struct tagNET_UPS_INFO { DWORD dwSize; float fInputVoltage; //输入电压 具体参考 智能交通专用电源通信协议(V1.2) float fInputAbnormalVoltage; //输入异常电压 float fOutputVoltage; //输出电压 float fOutputCurrent; //输出电流百分比,单位(%) float fInputFrequency; //输入频率 float fVoltage; //电压 float fTemp; //温度 BYTE bStatusInfo[EM_NET_UPS_MAX]; //UPS状态集,参见NET_UPS_STATUS枚举 char szVersionInfo[DH_MAX_VERSION_STR]; //版本 }NET_UPS_INFO; ///@brief UPS串口事件 typedef struct tagALARM_COMM_PORT_EVENT_INFO { DWORD dwSize; UINT nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_UPS_INFO stUPSInfo; // UPS串口信息 }ALARM_COMM_PORT_EVENT_INFO; ///@brief 视频输入通道失效事件(例:配置的视频输入通道码流,超出设备处理能力)DH_ALARM_VIDEO_ININVALID typedef struct __ALARM_VIDEO_ININVALID_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号,从0开始 } ALARM_VIDEO_ININVALID_INFO; ///@brief 存储组不存在事件信息 typedef struct tagALARM_STORAGE_NOT_EXIST_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 char szGroup[DH_STORAGE_NAME_LEN]; // 在录像或抓图存储点中设置但不存在的组 NET_TIME stuTime; // 事件触发时间 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 }ALARM_STORAGE_NOT_EXIST_INFO; ///@brief 网络故障事件类型 typedef enum __EM_NETABORT_EVENT_TYPE { EM_NETABORT_EVENT_TYPE_WIRE = 0, // 有线网络故障事件 EM_NETABORT_EVENT_TYPE_WIRELESS, // 无线网络故障事件 EM_NETABORT_EVENT_TYPE_3G, // 3G网络故障事件 }EM_NETABORT_EVENT_TYPE; ///@brief 网络故障事件 typedef struct tagALARM_NETABORT_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 EM_NETABORT_EVENT_TYPE emNetAbortType; // 事件类型 NET_TIME stuTime; // 事件触发时间 char szInterface[DH_MAX_ETH_NAME]; //冲突网卡名 }ALARM_NETABORT_INFO; ///@brief IP冲突事件 typedef struct tagALARM_IP_CONFLICT_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 事件触发时间 char szInterface[8]; // IP冲突网卡名 int nMacNum; // 主机Mac地址个数 char szMac[8][18]; // 与Interface网卡IP地址冲突的主机Mac地址列表 }ALARM_IP_CONFLICT_INFO; ///@brief MAC冲突事件 typedef struct tagALARM_MAC_CONFLICT_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 事件触发时间 char szInterface[8]; // IP冲突网卡名 }ALARM_MAC_CONFLICT_INFO; ///@brief 电源类型 typedef enum __EM_POWER_TYPE { EM_POWER_TYPE_MAIN = 0, // 主电源 EM_POWER_TYPE_BACKUP, // 备用电源 }EM_POWER_TYPE; ///@brief 电源故障事件类型 typedef enum __EM_POWERFAULT_EVENT_TYPE { EM_POWERFAULT_EVENT_UNKNOWN = -1, // 未知 EM_POWERFAULT_EVENT_LOST = 0, // 掉电、电池不在位 EM_POWERFAULT_EVENT_LOST_ADAPTER, // 适配器不在位 EM_POWERFAULT_EVENT_LOW_BATTERY, // 电池欠压 EM_POWERFAULT_EVENT_LOW_ADAPTER, // 适配器欠压 EM_POWERFAULT_EVENT_LOW_ADAPTER_LOST_BATTERY, // 适配器欠压,电池掉电 EM_POWERFAULT_EVENT_LESS_ADAPTER_LOW_BATTERY, // 适配器低压供电,电池欠压 EM_POWERFAULT_EVENT_LESS_ADAPTER_LOST_BATTERY, // 适配器低压供电,电池掉电 EM_POWERFAULT_EVENT_LOST_ADAPTER_LOST_BATTERY, // 适配器与电池都掉电 EM_POWERFAULT_EVENT_LOW_ADAPTER_LOW_BATTERY, // 适配器与电池都欠压 }EM_POWERFAULT_EVENT_TYPE; ///@brief 电源故障事件 typedef struct tagALARM_POWERFAULT_INFO { DWORD dwSize; EM_POWER_TYPE emPowerType; // 电源类型 EM_POWERFAULT_EVENT_TYPE emPowerFaultEvent; // 电源故障事件 NET_TIME stuTime; // 报警事件发生的时间 int nAction; // 0:开始 1:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_POWERFAULT_INFO; ///@brief 键盘防拆事件 typedef struct tagALARM_UPLOAD_KEYPAD_TAMPER_INFO { DWORD dwSize; NET_TIME stuTime; // 报警事件发生的时间 int nAction; // 0:开始 1:停止 }ALARM_UPLOAD_KEYPAD_TAMPER_INFO; ///@brief 键盘输入进入/退出编程模式指令 typedef struct tagALARM_UPLOAD_PROGRAM_MODE_INFO { DWORD dwSize; NET_TIME stuTime; // 报警事件发生的时间 int nAction; // 0:开始 1:停止 }ALARM_UPLOAD_PROGRAM_MODE_INFO; ///@brief PSTN定期测试事件 typedef struct tagALARM_UPLOAD_PSTN_PERIODIC_TEST_INFO { DWORD dwSize; NET_TIME stuTime; // 报警事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 }ALARM_UPLOAD_PSTN_PERIODIC_TEST_INFO; ///@brief 传感器感应方式枚举类型 typedef enum tagNET_SENSE_METHOD { NET_SENSE_UNKNOWN = -1, //未知类型 NET_SENSE_DOOR=0, //门磁 NET_SENSE_PASSIVEINFRA, //被动红外 NET_SENSE_GAS, //气感 NET_SENSE_SMOKING, //烟感 NET_SENSE_WATER, //水感 NET_SENSE_ACTIVEFRA, //主动红外 NET_SENSE_GLASS, //玻璃破碎 NET_SENSE_EMERGENCYSWITCH, //紧急开关 NET_SENSE_SHOCK, //震动 NET_SENSE_DOUBLEMETHOD, //双鉴(红外+微波) NET_SENSE_THREEMETHOD, //三技术 NET_SENSE_TEMP, //温度 NET_SENSE_HUMIDITY, //湿度 NET_SENSE_WIND, //风速 NET_SENSE_CALLBUTTON, //呼叫按钮 NET_SENSE_GASPRESSURE, //气体压力 NET_SENSE_GASCONCENTRATION, //燃气浓度 NET_SENSE_GASFLOW, //气体流量 NET_SENSE_OTHER, //其他 NET_SENSE_OIL, // 油量检测,汽油、柴油等车辆用油检测 NET_SENSE_MILEAGE, // 里程数检测 NET_SENSE_URGENCYBUTTON, //紧急按钮 NET_SENSE_STEAL, //盗窃 NET_SENSE_PERIMETER, //周界 NET_SENSE_PREVENTREMOVE, //防拆 NET_SENSE_DOORBELL, //门铃 NET_SENSE_ALTERVOLT, //交流电压传感器 NET_SENSE_DIRECTVOLT, //直流电压传感器 NET_SENSE_ALTERCUR, //交流电流传感器 NET_SENSE_DIRECTCUR, //直流电流传感器 NET_SENSE_RSUGENERAL, //通用模拟量 4~20mA或0~5V NET_SENSE_RSUDOOR, //门禁感应 NET_SENSE_RSUPOWEROFF, //断电感应 NET_SENSE_TEMP1500 , //1500温度传感器 NET_SENSE_TEMPDS18B20 , //DS18B20温度传感器 NET_SENSE_HUMIDITY1500, //1500湿度传感器 NET_SENSE_INFRARED, //红外报警 NET_SENSE_FIREALARM, //火警 NET_SENSE_CO2, //CO2浓度检测,典型值:0~5000ppm NET_SNESE_SOUND, //噪音检测,典型值:30~130dB NET_SENSE_PM25, //PM2.5检测,典型值:0~1000ug/m3 NET_SENSE_SF6, //SF6浓度检测,典型值:0~3000ppm NET_SENSE_O3, //臭氧浓度检测,典型值:0~100ppm NET_SENSE_AMBIENTLIGHT, //环境光照检测,典型值:0~20000Lux NET_SENSE_SIGNINBUTTON, //签入按钮 NET_SENSE_LIQUIDLEVEL, //液位 NET_SENSE_DISTANCE, //测距 NET_SENSE_WATERFLOW, //水流量 NET_SENSE_KEYPRESSS, //按键传感器 NET_SENSE_TEMP_AND_HUMI_SM7820B, //SM7820B温湿度传感器 NET_SENSE_WATT_HUR_DDSU666, //DSU666单相电子式电能表D NET_SENSE_CURTAIN_SENSOR, // 幕帘传感器 NET_SENSE_CASEPREVENTREMOVE, //机壳防拆 NET_SENSE_NUM //枚举类型总数 }NET_SENSE_METHOD; ///@brief 报警源设备的类型 typedef enum tagEM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE { EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE_UNKNOWN, // 未知 EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE_DIGIT, // 数字 EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE_ANALOG, // 模拟 EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE_SMARTLOCK, // 智能锁 }EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE; ///@brief 报警类型 typedef enum tagEM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE { EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_UNKNOWN, // 未知 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_PREVENTREMOVE, // "PreventRemove" 防拆 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_LOWERPOWER, // "LowerPower" 低电压 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_KEY, // "Key" 钥匙 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_DURESS, // "Duress" 胁迫 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_BATTERY_LOST, // "BatteryLost":电池不在位 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_PSTNB_BREAKLINE, // "PSTNBreakLine":电话线断开 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_EMERGENCY_HELP, // "EmergencyHelp":紧急求助 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE_ALARMIN, // "AlarmIn":报警输入 }EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE; ///@brief 低电压附带信息 typedef struct tagNET_PROFILE_ALARM_TRANSMIT_LOWERPOWER { int nPercent; // 当前电量 char szReserved[64]; // 预留字节 }NET_PROFILE_ALARM_TRANSMIT_LOWERPOWER; ///@brief 报警输入附带信息 typedef struct tagNET_PROFILE_ALARM_TRANSMIT_ALARMIN { int nChannel; // 报警输入通道号 char szReserved[64]; // 预留字节 }NET_PROFILE_ALARM_TRANSMIT_ALARMIN; ///@brief 对接国内乐橙,paas库需要上报的云附带信息 typedef struct tagNET_PROFILE_ALARM_TRANSMIT_CLOUDINFO { int nVideoLinkChannel; // 报警输入通道号 char szReserved[64]; // 预留字节 }NET_PROFILE_ALARM_TRANSMIT_CLOUDINFO; ///@brief AlarmType字段中指定报警类型的附带信息 typedef struct tagNET_PROFILE_ALARM_TRANSMIT_ALARM_INFO { NET_PROFILE_ALARM_TRANSMIT_LOWERPOWER stuLowerPower; // 低电压附带信息 NET_PROFILE_ALARM_TRANSMIT_ALARMIN stuAlarmIn; // 报警输入附带信息 NET_PROFILE_ALARM_TRANSMIT_CLOUDINFO stuCloudInfo; // 对接国内乐橙,paas库需要上报的云附带信息 char szReserved[64]; // 预留字节 }NET_PROFILE_ALARM_TRANSMIT_ALARM_INFO; ///@brief 报警传输事件 typedef struct tagALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO { DWORD dwSize; // 结构体大小 int nAction; // 0:脉冲 1:开始 2:停止 NET_TIME_EX stuTime; // 报警事件发生的时间 UINT nRealUTC; // 标准UTC时间(不带时区夏令时偏差) char szUserID[32]; // 报警用户,室内机为模拟机时,用于区分不同的模拟机 NET_SENSE_METHOD emSenseMethod; // 传感器类型 EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE emDevSrcType; // 报警源设备的类型 EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE emAlarmType; // 报警类型 NET_PROFILE_ALARM_TRANSMIT_ALARM_INFO stuAlarmInfo; // AlarmType字段中指定报警类型的附带信息 char szSN[32]; // 设备编号 char szSnapURL[128]; // 抓拍照片存储地址 }ALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO; ///@brief 用户登录锁定事件 typedef struct tagALARM_UPLOAD_USER_LOCK_INFO { DWORD dwSize; // 结构体大小 int nAction; //1:开始 该事件为脉冲事件,目前SDK只上报开始事件给客户 NET_TIME_EX stuTime; // 事件发生的时间 char szDeviceIP[40]; // 设备IP地址 char szDeviceMac[24]; // 设备Mac地址 char szUserName[128]; // 用户名 char szGroup[128]; // 组名 char szIllegalLoginIP[40]; // 非法登录的IP }ALARM_UPLOAD_USER_LOCK_INFO; ///@brief 设备类型 typedef enum tagEM_ALARM_CHASSISINTRUDED_DEV_TYPE { EM_ALARM_CHASSISINTRUDED_DEV_UNKNOWN, // 未知 EM_ALARM_CHASSISINTRUDED_DEV_CONTROLLER, // 控制器(如:报警主机) EM_ALARM_CHASSISINTRUDED_DEV_RS485EXPANSIONMODULE, // RS485扩展报警输入/输出模块 EM_ALARM_CHASSISINTRUDED_DEV_MBUSEXPANSIONMODULE, // MBUS扩展报警输入/输出模块 EM_ALARM_CHASSISINTRUDED_DEV_KEYBOARD, // 键盘 EM_ALARM_CHASSISINTRUDED_DEV_SIREN, // 警号 }EM_ALARM_CHASSISINTRUDED_DEV_TYPE; ///@brief 防拆报警事件 typedef struct tagALARM_CHASSISINTRUDED_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 报警事件发生的时间 int nChannelID; // 通道号 char szReaderID[DH_COMMON_STRING_32]; // 读卡器ID UINT nEventID; // 事件ID char szSN[32]; // 无线设备序列号 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) EM_ALARM_CHASSISINTRUDED_DEV_TYPE emDevType; // 设备类型 }ALARM_CHASSISINTRUDED_INFO; ///@brief 扩展模块报警事件 typedef struct tagALARM_ALARMEXTENDED_INFO { DWORD dwSize; int nChannelID; // 通道号 int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 报警事件发生的时间 }ALARM_ALARMEXTENDED_INFO; ///@brief 对讲发起方 typedef enum __EM_TALKING_CALLER { EM_TALKING_CALLER_UNKNOWN = 0, // 未知发起方 EM_TALKING_CALLER_PLATFORM, // 对讲发起方为平台 EM_TALKING_CALLER_LEADER, // 领导办公室 EM_TALKING_CALLER_SECURITY, // 保安室 }EM_TALKING_CALLER; ///@brief Invite事件远程设备协议 typedef enum tagTALKINGINVITE_REMOTEDEVICE_PROTOCOL { EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_UNKNOWN = 0, EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_HIKVISION }EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL; #define MAX_REMOTEDEVICEINFO_IPADDR_LEN 128 // 远程设备IP地址最大长度 #define MAX_REMOTEDEVICEINFO_USERNAME_LEN 128 // 远程设备用户名最大长度 #define MAX_REMOTEDEVICEINFO_USERPSW_LENGTH 128 // 远程设备密码最大长度 ///@brief Invite事件远端设备信息 typedef struct tagTALKINGINVITE_REMOTEDEVICEINFO { char szIP[MAX_REMOTEDEVICEINFO_IPADDR_LEN]; // 设备IP int nPort; // 端口 EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL emProtocol; // 协议类型 char szUser[MAX_REMOTEDEVICEINFO_USERNAME_LEN]; // 用户名 char szPassword[MAX_REMOTEDEVICEINFO_USERPSW_LENGTH];// 密码 char szReverse[1024]; // 保留字段 }TALKINGINVITE_REMOTEDEVICEINFO; ///@brief 报警事件类型DH_ALARM_TALKING_INVITE(设备请求对方发起对讲事件)对应的数据描述信息 typedef struct tagALARM_TALKING_INVITE_INFO { DWORD dwSize; EM_TALKING_CALLER emCaller; // 设备希望的对讲发起方 NET_TIME stuTime; // 事件触发时间 char szCallID[DH_COMMON_STRING_64]; // 呼叫惟一标识符 int nLevel; // 表示所呼叫设备所处层级 TALKINGINVITE_REMOTEDEVICEINFO stuRemoteDeviceInfo; // 远端设备信息 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) }ALARM_TALKING_INVITE_INFO; ///@brief 报警事件类型DH_ALARM_TALKING_IGNORE_INVITE(设备取消对讲请求事件)对应的数据描述信息 typedef struct tagALARM_TALKING_IGNORE_INVITE_INFO { DWORD dwSize; NET_TIME_EX UTC; // 事件触发时间 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 UTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) } ALARM_TALKING_IGNORE_INVITE_INFO; ///@brief 报警事件类型DH_ALARM_TALKING_HANGUP对应的数据描述信息 typedef struct tagALARM_TALKING_HANGUP_INFO { DWORD dwSize; NET_TIME stuTime; // 事件触发时间 char szRoomNo[128]; // 挂断的房间号 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szCaller[32]; // 语音挂断发起方 }ALARM_TALKING_HANGUP_INFO; ///@brief 报警事件类型DH_ALARM_TALKING_PHONE_CALLING对应的数据描述信息 typedef struct tagNET_ALARM_TALKING_PHONE_CALLING_INFO { DWORD dwSize; int nChannelID; // 通道号 int nAction; // 1 开始; 2 停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventinfo; // 事件统一新增拓展结构体 char szNetcardName[16]; // 对应蜂窝网卡名称 char szPhonenum[32]; // 来电电话号码 }NET_ALARM_TALKING_PHONE_CALLING_INFO; ///@brief 报警事件类型DH_ALARM_NO_PASSAGE 对应的数据描述信息 typedef struct tagNET_ALARM_NO_PASSAGE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nAction; // 1 开始; 2 停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventinfo; // 事件统一新增拓展结构体 }NET_ALARM_NO_PASSAGE_INFO; ///@brief 图片类型 typedef enum tagEM_USERMANAGER_IMAGE_TYPE { EM_USERMANAGER_IMAGE_TYPE_UNKNOWN = -1, // 未知 EM_USERMANAGER_IMAGE_TYPE_LOCAL, // 本地目标库图 EM_USERMANAGER_IMAGE_TYPE_SCENE, // 拍摄场景图 EM_USERMANAGER_IMAGE_TYPE_FACE, // 目标抠图 EM_USERMANAGER_IMAGE_TYPE_INFRARED, // 红外抓图 EM_USERMANAGER_IMAGE_TYPE_ENTOURAGE, // 陪同人员抓图 EM_USERMANAGER_IMAGE_TYPE_THERMOGRAM, // 热图 } EM_USERMANAGER_IMAGE_TYPE; ///@brief 用户信息图片信息 typedef struct tagNET_USERMANAGER_IMAGE_INFO { unsigned int nOffset; // 在二进制数据块中的偏移,单位:字节 unsigned int nLength; // 图片大小,单位:字节 unsigned short nWidth; // 图片宽度 unsigned short nHeight; // 图片高度 EM_USERMANAGER_IMAGE_TYPE emImageType; // 图片类型 char szReserved[64]; // 保留字节 } NET_USERMANAGER_IMAGE_INFO; ///@brief 报警事件类型DH_ALARM_HOSPITAL_TALK_CONTROL 对应的数据描述信息 typedef struct tagNET_ALARM_HOSPITAL_TALK_CONTROL_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szCitizenIDNo[20]; // 证件卡号 char szCitizenName[128]; // 姓名。证件、社保卡上的正式公民姓名 char szPatientIdentity[20]; // 病人证件 UINT nMode; // 谈话模式 0:病人谈话,1:家属谈话 UINT nStatus; // 上报状态类型 0: 开始,1: 结束,2: 暂停,3: 继续 UINT nImageInfoNum; // 实际图片信息个数 NET_USERMANAGER_IMAGE_INFO stuImageInfo[6]; // 图片信息数组 UINT nCardType; // 刷卡类型 1:证件,2:社保卡 }NET_ALARM_HOSPITAL_TALK_CONTROL_INFO; ///@brief 报警事件类型DH_ALARM_BLUETOOTH_EVENT 对应的数据描述信息 typedef struct tagNET_ALARM_BLUETOOTH_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 int nStatus; // 在线状态 -1:未知 0:在线 其他:不在线 int nPower; // 电量 int nResult; // 开门结果 -1:未知 0:成功 其他:失败 BYTE byReserved[1024]; // 保留字节 }NET_ALARM_BLUETOOTH_INFO; ///@brief 敏感词报警事件DH_ALARM_SENSITIVE_WORDS 对应的数据描述信息 typedef struct tagNET_ALARM_SENSITIVE_WORDS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nAlarmType; // 触发报警敏感词 BYTE byReserved[1024]; // 保留字节 }NET_ALARM_SENSITIVE_WORDS_INFO; ///@brief 硬盘数量变化类型 typedef enum tagEM_DISK_NUMBER_CHANGE_TYPE { EM_DISK_CHANGE_TYPE_UNKNOW, //未知 EM_DISK_CHANGE_TYPE_ADD, //增加 EM_DISK_CHANGE_TYPE_DEL, //删除 }EM_DISK_NUMBER_CHANGE_TYPE; ///@brief 硬盘数量变化报警事件DH_ALARM_DISK_NUMBER_CHANGE 对应的数据描述信息 typedef struct tagNET_ALARM_DISK_NUMBER_CHANGE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nPreDiskNumber; // 事件发生前硬盘数量 UINT nCurDiskNumber; // 当前硬盘数量 EM_DISK_NUMBER_CHANGE_TYPE emType; // 硬盘数量变化类型 BYTE byReserved[1020]; // 保留字节 }NET_ALARM_DISK_NUMBER_CHANGE_INFO; ///@brief 岗亭更新事件状态 typedef enum tagEM_GUARD_EVENT_STATE { EM_GUARD_EVENT_STATE_UNKNOWN = 0, // 未知状态 EM_GUARD_EVNET_STATE_ONGUARD, // 到岗 EM_GUARD_EVENT_STATE_OFFGUARD // 离岗 }EM_GUARD_EVENT_STATE; ///@brief 岗亭信息更新事件,DH_ALARM_GUARD_INFO_UNPDATE对用的数据描述信息 typedef struct tagALARM_GUARD_UPDATE_INFO { DWORD dwSize; EM_GUARD_EVENT_STATE emEventState; // 岗亭更新事件状态 int nIDCount; // 触发检测事件的人员ID个数 int nIDArray[DH_MAX_GUARD_DETECT_ID_COUNT];// 人员ID数组 NET_TIME stuTime; // 事件触发时间 }ALARM_GUARD_UPDATE_INFO; ///@brief 岗亭检测事件,DH_ALARM_GUARD_DETECT对应的数据描述信息 typedef struct tagALARM_GUARD_DETECT_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 int nIndex; // 岗亭检测配置下标 int nIDCount; // 触发检测事件的人员ID个数 int nIDArray[DH_MAX_GUARD_DETECT_ID_COUNT]; // 人员ID数组 NET_TIME stuTime; // 事件触发时间 }ALARM_GUARD_DETECT_INFO; ///@brief 银行卡插卡事件DH_ALARM_BANKCARDINSERT对应的数据描述信息 typedef struct tagALARM_BANKCARDINSERT_INFO { DWORD dwSize; int nAction; // -1:未知 0:开始 1:停止 }ALARM_BANKCARDINSERT_INFO; ///@brief 事件触发录像,stop时的保存策略 typedef enum tagNET_RECORD_SAVEFLAG { NET_RECORD_SAVEFLAG_UNKNOWN = 0, //未知类型 NET_RECORD_SAVEFLAG_MARK, //保存录像、并加锁 NET_RECORD_SAVEFLAG_SAVE, //仅保存录像 }NET_RECORD_SAVEFLAG; ///@brief 卡号录像事件 DH_ALARM_CARD_RECORD 对应的数据描述信息 typedef struct tagALARM_CARD_RECORD_INFO { DWORD dwSize; int nAction; // -1:未知 0:开始 1:停止 int nChannelID; // 通道号,从0开始 unsigned int nFieldCount; // 域数量 char szFields[MAX_CARD_RECORD_FIELD_NUM][DH_COMMON_STRING_256]; // 域信息 NET_RECORD_SAVEFLAG emRecordSaveFlag; // 事件触发录像,stop时的保存策略,详见枚举 NET_RECORD_SAVEFLAG }ALARM_CARD_RECORD_INFO; ///@brief 网络报警事件 DH_ALARM_CARD_RECORD 对应的数据描述信息 typedef struct tagALARM_NET_INFO { DWORD dwSize; int nAction; // -1:未知 0:开始 1:停止 int nChannelID; // 通道号,从0开始 } ALARM_NET_INFO; ///@brief 动检事件对应 DH_ALARM_VIDEOMOTION_EVENT typedef struct tagALARM_VIDEOMOTION_EVENT_INFO { DWORD dwSize; int nAction; // -1:未知 0:开始 1:停止 int nChannelID; // 通道号,从0开始 }ALARM_VIDEOMOTION_EVENT_INFO; ///@brief WideViewRegions事件 对应 DH_ALARM_WIDE_VIEW_REGION_EVENT typedef struct tagALARM_WIDE_VIEW_REGION_EVENT_INFO { DWORD dwSize; int nAction; // -1:未知 0:脉冲(Pusle) }ALARM_WIDE_VIEW_REGION_EVENT_INFO; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_NOTIFY_EVNENT 命令参数(向设备发送事件) typedef struct tagNET_NOTIFY_EVENT_DATA { DWORD dwSize; LONG lCommand; // 事件类型 void* pEventData; // 事件内容,与lCommand对应的结构体指针 }NET_NOTIFY_EVENT_DATA; ///@brief 传感器感应方式对应单位的枚举类型 typedef enum tagEM_SENSE_METHOD_UNIT { EM_SENSE_UNIT_UNKOWN =-1, // 未知类型 EM_SENSE_TEMP_CENTIGRADE = 0, // 温度单位: Centigrade EM_SENSE_TEMP_FAHRENHEIT, // 温度单位:Fahrenheit EM_SENSE_WIND_SPEED, // 风速单位:m/s EM_SENSE_HUMIDITY_PERCENT, // 湿度单位: Percent }EM_SENSE_METHOD_UNIT; ///@brief 布撤防模式 typedef enum tagNET_ALARM_MODE { NET_ALARM_MODE_UNKNOWN = -1, // 未知 NET_ALARM_MODE_DISARMING, // 撤防 NET_ALARM_MODE_ARMING, // 布防 NET_ALARM_MODE_FORCEON, // 强制布防 NET_ALARM_MODE_PARTARMING, // 部分布防 }NET_ALARM_MODE; ///@brief 布撤防场景模式 typedef enum tagNET_SCENE_MODE { NET_SCENE_MODE_UNKNOWN, // 未知场景 NET_SCENE_MODE_OUTDOOR, // 外出模式 NET_SCENE_MODE_INDOOR, // 室内模式 NET_SCENE_MODE_WHOLE, // 全局模式 NET_SCENE_MODE_RIGHTNOW, // 立即模式 NET_SCENE_MODE_SLEEPING, // 就寝模式 NET_SCENE_MODE_CUSTOM, // 自定义模式 }NET_SCENE_MODE; ///@brief 触发方式 typedef enum tagNET_EM_TRIGGER_MODE { NET_EM_TRIGGER_MODE_UNKNOWN = 0, NET_EM_TRIGGER_MODE_NET, // 网络用户(平台或Web) NET_EM_TRIGGER_MODE_KEYBOARD, // 键盘 NET_EM_TRIGGER_MODE_REMOTECONTROL, // 遥控器 }NET_EM_TRIGGER_MODE; ///@brief 布撤防状态变化事件的信息 typedef struct tagALARM_ARMMODE_CHANGE_INFO { DWORD dwSize; NET_TIME stuTime; // 报警事件发生的时间 NET_ALARM_MODE bArm; // 变化后的状态 NET_SCENE_MODE emSceneMode; // 情景模式 DWORD dwID; // ID号, 遥控器编号或键盘地址, emTriggerMode为NET_EM_TRIGGER_MODE_NET类型时为0 NET_EM_TRIGGER_MODE emTriggerMode; // 触发方式 char szNetClientAddr[64]; //网络用户IP地址或网络地址 UINT nUserCode; //用户ID,0:管理员,1~20:普通用户,21:安装员,22:挟持用户 }ALARM_ARMMODE_CHANGE_INFO; ///@brief 防区类型 typedef enum { NET_DEFENCEAREA_TYPE_UNKNOWN, // 未知类型防区 NET_DEFENCEAREA_TYPE_ALARM, // 开关量防区 NET_DEFENCEAREA_TYPE_ANALOGALARM, // 模拟报警 }NET_DEFENCEAREA_TYPE; ///@brief 旁路状态类型 typedef enum { NET_BYPASS_MODE_UNKNOW, //未知状态 NET_BYPASS_MODE_BYPASS, //旁路 NET_BYPASS_MODE_NORMAL, //正常 NET_BYPASS_MODE_ISOLATED, //隔离 }NET_BYPASS_MODE; ///@brief 旁路状态变化事件的信息 typedef struct tagALARM_BYPASSMODE_CHANGE_INFO { DWORD dwSize; int nChannelID; // 通道号 NET_TIME stuTime; // 报警事件发生的时间 NET_DEFENCEAREA_TYPE emDefenceType; // 防区类型 int nIsExtend; // 是否为扩展(通道)防区, 1:扩展通道, 0: 非扩展通道 NET_BYPASS_MODE emMode; // 变化后的模式 DWORD dwID; // ID号, 遥控器编号或键盘地址, emTriggerMode为NET_EM_TRIGGER_MODE_NET类型时为0 NET_EM_TRIGGER_MODE emTriggerMode; // 触发方式 }ALARM_BYPASSMODE_CHANGE_INFO; ///@brief 紧急事件(对应DH_URGENCY_ALARM_EX2, 对原有的DH_URGENCY_ALARM_EX类型的升级, 指人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助) typedef struct tagALARM_URGENCY_ALARM_EX2 { DWORD dwSize; NET_TIME stuTime; // 事件产生的时间 DWORD nID; // 用于标识不同的紧急事件 int nAction; // 0:脉冲 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szImei[16]; // 国际移动设备辨识码15位数字标识 UINT nDistance; // 距离上次上报的GPS移动距离, 单位0.1Km char szPlateNumber[64]; // 车牌号码 char szReplyNumber[16]; // 应答号码 char szLine[64]; // 线路信息 }ALARM_URGENCY_ALARM_EX2; ///@brief 报警输入源事件详情(只要有输入就会产生改事件,不论防区当前的模式,无法屏蔽) typedef struct tagALARM_INPUT_SOURCE_SIGNAL_INFO { DWORD dwSize; int nChannelID; // 通道号 int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 报警事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_INPUT_SOURCE_SIGNAL_INFO; ///@brief 温度单位 typedef enum tagNET_TEMPERATURE_UNIT { NET_TEMPERATURE_UNIT_UNKNOWN, NET_TEMPERATURE_UNIT_CENTIGRADE, // 摄氏度 NET_TEMPERATURE_UNIT_FAHRENHEIT, // 华氏度 } NET_TEMPERATURE_UNIT; ///@brief 模拟量报警输入通道事件信息(对应DH_ALARM_ANALOGALARM_EVENT) typedef struct tagALARM_ANALOGALARM_EVENT_INFO { DWORD dwSize; int nChannelID; // 通道号 int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 报警事件发生的时间 NET_SENSE_METHOD emSensorType; // 传感器类型 char szName[DH_COMMON_STRING_128]; // 通道名称 int nIsValid; // 数据是否有效,-1:未知,0:无效,1:有效 int nStatus; // 数据状态, -1:未知,0:正常,1:数据无效(超过量程), // 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4, // 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4 float fValue; // 探测器数值 NET_TIME stuCollectTime; // 数据采集时间(UTC) NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 NET_TEMPERATURE_UNIT emTemperatureUnit; // 传感器数值单位 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_ANALOGALARM_EVENT_INFO; ///@brief 门禁状态类型 typedef enum tagNET_ACCESS_CTL_STATUS_TYPE { NET_ACCESS_CTL_STATUS_TYPE_UNKNOWN = 0, NET_ACCESS_CTL_STATUS_TYPE_OPEN, // 开门 NET_ACCESS_CTL_STATUS_TYPE_CLOSE, // 关门 NET_ACCESS_CTL_STATUS_TYPE_ABNORMAL, // 异常 NET_ACCESS_CTL_STATUS_TYPE_FAKELOCKED, // 假锁 NET_ACCESS_CTL_STATUS_TYPE_CLOSEALWAYS, // 常闭 NET_ACCESS_CTL_STATUS_TYPE_OPENALWAYS, // 常开 NET_ACCESS_CTL_STATUS_TYPE_NORMAL, // 正常 }NET_ACCESS_CTL_STATUS_TYPE; ///@brief 门禁状态事件 typedef struct tagALARM_ACCESS_CTL_STATUS_INFO { DWORD dwSize; int nDoor; // 门通道号 NET_TIME stuTime; // 事件发生的时间 NET_ACCESS_CTL_STATUS_TYPE emStatus; // 门禁状态 char szSerialNumber[256]; // 无线设备序列号(智能锁) BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) }ALARM_ACCESS_CTL_STATUS_INFO; ///@brief 门禁抓图类型 typedef enum tagNET_ACCESS_SNAP_TYPE { NET_ACCESS_SNAP_TYPE_UNKNOWN = 0, NET_ACCESS_SNAP_TYPE_CARD, // 刷卡 NET_ACCESS_SNAP_TYPE_PASSWORD, // 密码 NET_ACCESS_SNAP_TYPE_REMOTE, // 远程开门 NET_ACCESS_SNAP_TYPE_BUTTON, // 开门按钮 NET_ACCESS_SNAP_TYPE_FINGERPRINT, // 信息 NET_ACCESS_SNAP_TYPE_QRCODE, // 二维码 NET_ACCESS_SNAP_TYPE_BLUETOOTH, // 蓝牙 NET_ACCESS_SNAP_TYPE_FACE, // 目标 }NET_ACCESS_SNAP_TYPE; ///@brief 门禁抓图事件 typedef struct tagALARM_ACCESS_SNAP_INFO { DWORD dwSize; NET_ACCESS_SNAP_TYPE emType; // 类型 char szCardNO[DH_COMMON_STRING_32]; // 卡号, 刷卡开门时有效 char szPassword[DH_COMMON_STRING_64]; // 密码, 密码开门时才有效 char szFtpUrl[MAX_PATH]; // ftp上传地址, 图片路径 int nImageNum; // 抓图张数 NET_TIME stuTime; // 事件发生的时间 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) }ALARM_ACCESS_SNAP_INFO; ///@brief 消警类型 typedef enum tagEM_ALARM_CLEAR_TYPE { EM_ALARM_CLEAR_TYPE_UNKNOWN = 0, // 未知 EM_ALARM_CLEAR_TYPE_ALL, // 全消警 EM_ALARM_CLEAR_TYPE_ALARM_AREA, // 子系统消警 EM_ALARM_CLEAR_TYPE_ALARM_LOCAL, // 单防区消警 } EM_ALARM_CLEAR_TYPE; ///@brief 消警事件 typedef struct tagALARM_ALARMCLEAR_INFO { DWORD dwSize; int nChannelID; // 通道号 NET_TIME stuTime; // 报警事件发生的时间 int bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; EM_ALARM_CLEAR_TYPE emType; // 消警类型 int nAreasCount; // 消警子系统个数 UINT nAreas[64]; // 消警子系统, 当emType为EM_ALARM_CLEAR_TYPE_ALARM_AREA时有效 int nZonesCount; // 消警防区个数 UINT nZones[256]; // 消警放区, 当emType为EM_ALARM_CLEAR_TYPE_ALARM_LOCAL时有效 }ALARM_ALARMCLEAR_INFO; ///@brief CID事件 typedef struct tagALARM_CIDEVENT_INFO { DWORD dwSize; NET_TIME stuTime; // 报警事件发生的时间 char szCID[DH_COMMON_STRING_32]; // CID码,标准协议码 字符串长度为16,字符数值为0~F // 4位用户码 + 2位识别码 + 1位事件限定码 + 3位事件码 + 2位系统号 + 3位防区码 + 1位校验码 }ALARM_CIDEVENT_INFO; ///@brief 紧急救助事件类型 typedef enum tagEM_RCEMERGENCY_CALL_TYPE { EM_RCEMERGENCY_CALL_UNKNOWN = 0, EM_RCEMERGENCY_CALL_FIRE, // 火警 EM_RCEMERGENCY_CALL_DURESS, // 胁迫 EM_RCEMERGENCY_CALL_ROBBER, // 匪警 EM_RCEMERGENCY_CALL_MEDICAL, // 医疗 EM_RCEMERGENCY_CALL_EMERGENCY, // 紧急 EM_RCEMERGENCY_CALL_PANIC, // 恐慌 }EM_RCEMERGENCY_CALL_TYPE; ///@brief 报警方式 typedef enum tagEM_RCEMERGENCY_MODE_TYPE { EM_RCEMERGENCY_MODE_UNKNOWN = 0, EM_RCEMERGENCY_MODE_KEYBOARD, // 键盘 EM_RCEMERGENCY_MODE_WIRELESS_CONTROL, // 遥控器 }EM_RCEMERGENCY_MODE_TYPE; ///@brief 紧急救助事件详情 typedef struct tagALARM_RCEMERGENCY_CALL_INFO { DWORD dwSize; int nAction; // -1:未知 0:开始 1:停止 EM_RCEMERGENCY_CALL_TYPE emType; // 紧急类型 NET_TIME stuTime; // 事件发生时间 EM_RCEMERGENCY_MODE_TYPE emMode; // 报警方式 DWORD dwID; // 用于标示不同的紧急事件(只有emMode是遥控器类型时有效, 表示遥控器的编号, 0表示无效ID) NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_RCEMERGENCY_CALL_INFO; ///@brief 多人组合开门事件(对应DH_ALARM_OPENDOORGROUP类型) typedef struct tagALARM_OPEN_DOOR_GROUP_INFO { DWORD dwSize; int nChannelID; // 门通道号(从0开始) NET_TIME stuTime; // 事件时间 }ALARM_OPEN_DOOR_GROUP_INFO; ///@brief 获取信息事件(对应DH_ALARM_FINGER_PRINT类型) typedef struct tagALARM_CAPTURE_FINGER_PRINT_INFO { DWORD dwSize; int nChannelID; // 门通道号(从0开始) NET_TIME stuTime; // 事件时间 char szReaderID[DH_COMMON_STRING_32]; // 门读卡器ID int nPacketLen; // 单个信息数据包长度 int nPacketNum; // 信息数据包个数 char* szFingerPrintInfo; // 信息数据(数据总长度即nPacketLen*nPacketNum) BOOL bCollectResult; // 采集结果 char szCardNo[32]; // 信息所属人员卡号 char szUserID[32]; // 信息所属人员ID }ALARM_CAPTURE_FINGER_PRINT_INFO; ///@brief 子系统状态类型 typedef enum __EM_SUBSYSTEM_STATE_TYPE { EM_SUBSYSTEM_STATE_UNKNOWN = 0, // 未知 EM_SUBSYSTEM_STATE_ACTIVE, // 已激活 EM_SUBSYSTEM_STATE_INACTIVE, // 未激活 }EM_SUBSYSTEM_STATE_TYPE; ///@brief 子系统状态改变事件 typedef struct tagALARM_SUBSYSTEM_STATE_CHANGE_INFO { DWORD dwSize; int nChannelID; // 子系统序号(从0开始) NET_TIME stuTime; // 事件发生的时间 EM_SUBSYSTEM_STATE_TYPE emState; // 变化后的状态 }ALARM_SUBSYSTEM_STATE_CHANGE_INFO; ///@brief 电池电量定时通知事件 typedef struct tagALARM_BATTERYPOWER_INFO { DWORD dwSize; int nChannel; // 电池序号 NET_TIME stuTime; // 事件时间 int nPercent; // 电池电量百分比 float fVoltage; // 电压,单位:伏 BOOL bCharging; // 是否正在充电 true:正在充电 false:没有充电 }ALARM_BATTERYPOWER_INFO; ///@brief 警号状态事件 typedef struct tagALARM_BELLSTATUS_INFO { DWORD dwSize; int nChannel; // 警号通道号 NET_TIME stuTime; // 事件时间 int nAction; // 0:开始 1:停止 }ALARM_BELLSTATUS_INFO; ///@brief 防区状态变化事件, 对应事件类型DH_ALARM_DEFENCE_STATE_CHANGE_EVENT typedef struct tagALARM_DEFENCE_STATUS_CHANGE_INFO { DWORD dwSize; int nChannelID; // 防区ID,即报警输入通道号(从0开始) NET_TIME stuTime; // 事件发生的时间 EM_DEFENCE_STATE_TYPE emStatus; // 防区变化后的状态 }ALARM_DEFENCE_STATUS_CHANGE_INFO; ///@brief 登陆失败事件 typedef struct tagALARM_LOGIN_FAILIUR_INFO { DWORD dwSize; int nAction; // 0:开始 1:停止 unsigned int nSequence; // 序号 char szName[DH_EVENT_NAME_LEN]; // 事件名,填用户名称 char szType[DH_COMMON_STRING_128]; // 登录类型 char szAddr[DH_MAX_IPADDR_EX_LEN]; // 来源IP地址 int nError; // 用户登陆失败错误码 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_LOGIN_FAILIUR_INFO; ///@brief 车票统计信息事件 对应事件类型 DH_ALARM_TICKET_STATISTIC typedef struct tagALARM_TICKET_STATISTIC { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME stuTime; // 事件上报时间 int nNormalCount; // 普通票张数 int nDiscountCount; // 优惠票张数 int nSubsidyCount; // 老幼补贴票张数 int nDriverCount; // 司机票张数 int nNormalPrice; // 普通票价格 int nDiscountPrice; // 优惠票价格 int nSubsidyPrice; // 老幼补贴票价格 }ALARM_TICKET_STATISTIC; #define MAX_ALARMEXT_MODULE_NUM 256 // 最大扩展模块数目 ///@brief 总线类型 typedef enum tagNET_BUS_TYPE { NET_BUS_TYPE_UNKNOWN = 0, NET_BUS_TYPE_MBUS, // M-BUS总线 NET_BUS_TYPE_RS485, // RS-485总线 NET_BUS_TYPE_CAN, // CAN总线 NET_BUS_TYPE_NET, // 网络设备 }NET_BUS_TYPE; ///@brief 扩展模块掉线事件 对应事件类型 DH_ALARM_MODULE_LOST typedef struct tagALARM_MODULE_LOST_INFO { DWORD dwSize; NET_TIME stuTime; // 事件上报时间 int nSequence; // 扩展模块接的总线的序号(从0开始) NET_BUS_TYPE emBusType; // 总线类型 int nAddr; // 掉线的扩展模块数目 int anAddr[MAX_ALARMEXT_MODULE_NUM];// 掉线的扩展模块的序号(从0开始) char szDevType[DH_COMMON_STRING_64]; // 设备类型 "SmartLock",是级联设备;当设备类型"AlarmDefence"接口序号为报警序号 // "LiftController":梯控设备 BOOL bOnline; // 在线情况,默认FALSE. false:不在线;true:在线 char szSN[32]; // 无线配件序列号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_MODULE_LOST_INFO; ///@brief PSTN掉线事件 typedef struct tagALARM_PSTN_BREAK_LINE_INFO { DWORD dwSize; int nChannelID; // 电话线序号(从0开始) int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_PSTN_BREAK_LINE_INFO; ///@brief 模拟量报警事件(瞬时型事件), 特定传感器类型时(如超速、里程、油量)才触发 typedef struct tagALARM_ANALOGPULSE_INFO { DWORD dwSize; int nChannelID; // 模拟量报警通道号 NET_TIME stuEventTime; // 报警事件发生的时间 NET_SENSE_METHOD emSense; // 传感器类型 char szName[DH_COMMON_STRING_128]; // 传感器名称 int nStatus; // 数据状态, -1:未知,0:正常,1:数据无效(超过量程), // 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4, // 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4 float fValue; // 传感器数值 NET_TIME stuCollectTime; // 采集时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 float fTempture; // 温度 float fHumidity; // 湿度 float fVoltage; // 电压(单位:V) float fCurrent; // 电流(单位:A) float fActivePower; // 有供功率(单位:KW) float fElmp; // 正向有功电能(单位:kWh) float fEExp; // 反向有供电能(单位:kWh) float fComEp; // 组合有供电能(单位:kWh) float fComEq; // 组合无供电能(单位:kWh) }ALARM_ANALOGPULSE_INFO; ///@brief 调度信息确认动作类型 typedef enum tagNET_MISSION_CONFIRM_TYPE { NET_MISSION_CONFIRM_UNKNOWN = 0 , //未知 NET_MISSION_CONFIRM_YES , //同意并执行 NET_MISSION_CONFIRM_NO , //拒绝执行 }NET_MISSION_CONFIRM_TYPE; ///@brief 任务确认事件(对应命令DH_ALARM_MISSION_CONFIRM) typedef struct tagALARM_MISSION_CONFIRM_INFO { DWORD dwSize; char szTitle[DH_COMMON_STRING_256]; // 任务名称 char szMissionID[DH_COMMON_STRING_256];// 任务ID char szComment[DH_COMMON_STRING_256]; // 回复内容 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_MISSION_CONFIRM_TYPE emConfirmType; //调度信息确认动作类型 }ALARM_MISSION_CONFIRM_INFO; ///@brief 集群节点分组类型 typedef enum tagNET_CLUSTER_GROUP_TYPE { NET_CLUSTER_GROUP_UNKNOWN, // 未知 NET_CLUSTER_GROUP_IDLE, // 单机 NET_CLUSTER_GROUP_MASTER, // 主用 NET_CLUSTER_GROUP_SLAVE, // 备用 }NET_CLUSTER_GROUP_TYPE; ///@brief 节点激活事件, 对应事件类型 DH_ALARM_NODE_ACTIVE typedef struct tagALARM_NODE_ACTIVE_INFO { DWORD dwSize; int nChannelID; // 集群中的节点号 NET_TIME stuTime; // 事件发生事件 NET_CLUSTER_GROUP_TYPE emGroup; // 当前节点所属组 }ALARM_NODE_ACTIVE_INFO; ///@brief 集群节点状态 typedef struct tagNET_CLUSTER_STATE_INFO { DWORD dwSize; NET_CLUSTER_GROUP_TYPE emGroup; // 当前节点所属组 }NET_CLUSTER_STATE_INFO; ///@brief 设备报警的模式 typedef enum tagEM_ALARM_VIDEO_STATIC_MODE { EM_ALARM_VIDEO_STATIC_MODE_UNKNOWN, // 未知 EM_ALARM_VIDEO_STATIC_MODE_INDOOR, // 室内模式 "Indoor" EM_ALARM_VIDEO_STATIC_MODE_OUTDOOR, // 室外模式 "Outdoor" }EM_ALARM_VIDEO_STATIC_MODE; ///@brief 视频静态检测事件, 对应事件类型 DH_ALARM_VIDEO_STATIC typedef struct tagALARM_VIDEO_STATIC_INFO { DWORD dwSize; DWORD dwAction; // 事件动作, 0:Start, 1:Stop EM_ALARM_VIDEO_STATIC_MODE emMode; // 设备报警的模式 int nChannelID; // 视频静态检测报警通道号 }ALARM_VIDEO_STATIC_INFO; ///@brief 主动注册设备重新登陆事件, 对应事件类型 DH_ALARM_REGISTER_REONLINE typedef struct tagALARM_REGISTER_REONLINE_INFO { DWORD dwSize; }ALARM_REGISTER_REONLINE_INFO; ///@brief 连接状态 typedef enum tagEM_ALARM_ISCSI_STATUS { EM_ALARM_ISCSI_STATUS_UNKNOWN, // 未知 EM_ALARM_ISCSI_STATUS_CONNECTED, // 已连接 EM_ALARM_ISCSI_STATUS_NOT_CONNECTED, // 未连接 EM_ALARM_ISCSI_STATUS_CONNECT_FAILED, // 连接失败 EM_ALARM_ISCSI_STATUS_AUTHENTICATION_FAILED, // 认证失败 EM_ALARM_ISCSI_STATUS_CONNECT_TIMEOUT, // 连接超时 EM_ALARM_ISCSI_STATUS_NOT_EXIST, // 设备不存在 }EM_ALARM_ISCSI_STATUS; ///@brief ISCSI告警事件, 对应事件类型 DH_ALARM_ISCSI_STATUS typedef struct tagALARM_ISCSI_STATUS_INFO { DWORD dwSize; int nIndex; // 表示ISCSI设备索引号 char szAddress[DH_COMMON_STRING_32]; // 服务器地址 char szName[DH_COMMON_STRING_64]; // Target名称 char szUserName[DH_COMMON_STRING_64]; // 用户名 EM_ALARM_ISCSI_STATUS emStatus; // 连接状态 }ALARM_ISCSI_STATUS_INFO; ///@brief SCADA类型 typedef enum tagEM_ALARM_SCADA_DEV_TYPE { EM_ALARM_SCADA_DEV_UNKNOWN, // 未知 EM_ALARM_SCADA_DEV_LEAKAGE, // 漏水检测 EM_ALARM_SCADA_DEV_THCONTROLLER, // 湿温度 EM_ALARM_SCADA_DEV_UPS, // UPS EM_ALARM_SCADA_DEV_SWITCH, // 开关电源 EM_ALARM_SCADA_DEV_ELECTRICMETER, // 智能电表 EM_ALARM_SCADA_DEV_COMMERCIALPOWER, // 市电检测 EM_ALARM_SCADA_DEV_BATTERY, // 蓄电池 EM_ALARM_SCADA_DEV_AIRCONDITION, // 空调 EM_ALARM_SCADA_DEV_ACCESS, // 门禁 EM_ALARM_SCADA_DEV_SMOKINGSENSOR, // 烟感 EM_ALARM_SCADA_DEV_INFRARED, // 红外 EM_ALARM_SCADA_DEV_CHEMICAL, // 化工 EM_ALARM_SCADA_DEV_PERIMETER, // 周界 EM_ALARM_SCADA_DEV_DOORMAGNETISM, // 门磁 EM_ALARM_SCADA_DEV_DISTANCE, // 测距 EM_ALARM_SCADA_DEV_WINDSENSOR, // 风速 EM_ALARM_SCADA_DEV_LOCATION, // 位置 EM_ALARM_SCADA_DEV_ATMOSPHERE, // 大气 EM_ALARM_SCADA_DEV_SOLARPOWER, // 太阳能 }EM_ALARM_SCADA_DEV_TYPE; ///@brief 设备状态 typedef enum tagEM_SCADA_DEVICE_STATUS { EM_SCADA_DEVICE_STATUS_KNOWN = -1, // 未知 EM_SCADA_DEVICE_STATUS_NORMAL, // 正常 EM_SCADA_DEVICE_STATUS_ALARM, // 报警 EM_SCADA_DEVICE_STATUS_OFFLINE, // 离线 }EM_SCADA_DEVICE_STATUS; ///@brief 检测采集设备报警事件, 对应事件类型 DH_ALARM_SCADA_DEV_ALARM typedef struct tagALARM_SCADA_DEV_INFO { DWORD dwSize; int nChannel; // 通道号 NET_TIME stuTime; // 事件发生的时间 char szDevName[DH_COMMON_STRING_64]; // 故障设备名称 char szDesc[DH_COMMON_STRING_256]; // 报警描述 int nAction; // -1:未知 0:脉冲 1:开始 2:停止 char szID[DH_COMMON_STRING_32]; // 点位ID, 目前使用16字节 char szSensorID[DH_COMMON_STRING_32]; // 设备ID, 目前使用16字节 char szDevID[DH_COMMON_STRING_32]; // 报警主机ID, 目前使用16字节 char szPointName[DH_COMMON_STRING_64]; // 点位名,与点表匹配 int nAlarmFlag; // 0:开始, 1:结束 EM_ALARM_SCADA_DEV_TYPE emDevType; // 设备类型 EM_SCADA_DEVICE_STATUS emDevStatus; // 设备状态 }ALARM_SCADA_DEV_INFO; ///@brief 车辆ACC报警事件, 对应事件类型 DH_ALARM_VEHICLE_ACC typedef struct tagALARM_VEHICLE_ACC_INFO { DWORD dwSize; int nACCStatus; // ACC状态, 0:无效, 1:开启, 2:关闭 int nAction; // 事件动作, 0:Start, 1:Stop NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 int nConstantElectricStatus; // 常电状态, 0:未知, 1:连接, 2:断开 NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nTotalMileage; // 总的里程数,单位:米,当nACCStatus为2时,将ntotalMileage进行上报 NET_TIME_EX stuStartTime; // nACCStatus为1时刻的时间 NET_GPS_STATUS_INFO stuStartGPS; // nACCStatus为1时刻的GPS信息 }ALARM_VEHICLE_ACC_INFO; typedef NET_ACCESS_CTL_STATUS_TYPE NET_ACCESS_LOCK_STATUS_TYPE; ///@brief 门锁状态事件, 对应事件类型 DH_ALARM_ACCESS_LOCK_STATUS typedef struct tagALARM_ACCESS_LOCK_STATUS_INFO { DWORD dwSize; int nChannel; // 门通道号(从0开始) NET_TIME stuTime; // 事件发生的时间 NET_ACCESS_LOCK_STATUS_TYPE emLockStatus; // 门锁状态 }ALARM_ACCESS_LOCK_STATUS_INFO; ///@brief 业务类型 typedef enum tagEM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE { EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_UNKNOWN, // 未知 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_ORGANIZATION, // 机构性理财 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_SEAL, // 封闭式理财 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_EXCLUSIVE, // 专属理财 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_GATHER, // 集合理财计划 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE_EVEN, // 保本理财 }EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE; ///@brief 理财经办事件, 对应事件类型 DH_ALARM_FINACE_SCHEME typedef struct tagALARM_FINACE_SCHEME_INFO { DWORD dwSize; int nChannel; // 视频通道号 char szBusinessSeverID[DH_COMMON_STRING_64]; // 业务单号 EM_ALARM_FINACE_SCHEME_BUSINESS_SEVER_TYPE emBusinessSeverType; // 业务类型 NET_TIME stuFinaceSchemeTime; // 理财经办时间 NET_TIME stuSchemeStartTime; // 理财生效时间 NET_TIME stuSchemeEndTime; // 理财失效时间 char szProductName[DH_COMMON_STRING_128]; // 理财产品名称 char szCardNo[DH_COMMON_STRING_64]; // 银行卡号 char szPersonID[DH_COMMON_STRING_64]; // 客户证件 char szPersonName[DH_COMMON_STRING_64]; // 客户姓名 char szOrgNo[DH_COMMON_STRING_64]; // 支行机构号 char szStuffID[DH_COMMON_STRING_64]; // 银行员工工号 NET_TIME stuRecStartTime; // 录像开始时间 NET_TIME stuRecEndTime; // 录像结束时间 }ALARM_FINACE_SCHEME_INFO; ////////////////////////////////////////////////////////////////////// ///@brief 记录集新增操作(insert)输入参数 typedef struct tagNET_CTRL_RECORDSET_IN { DWORD dwSize; EM_NET_RECORD_TYPE emType; // 记录集信息类型 void* pBuf; // 记录集信息缓存,详见EM_NET_RECORD_TYPE注释,由用户申请内存. int nBufLen; // 记录集信息缓存大小,大小参照记录集信息类型对应的结构体 }NET_CTRL_RECORDSET_INSERT_IN; ///@brief 记录集新增操作(insert)输出参数 typedef struct tagNET_CTRL_RECORDSET_OUT { DWORD dwSize; int nRecNo; // 记录编号(新增insert时设备返回) }NET_CTRL_RECORDSET_INSERT_OUT; ///@brief 记录集新增操作(insert)参数 typedef struct tagNET_CTRL_RECORDSET_INSERT_PARAM { DWORD dwSize; NET_CTRL_RECORDSET_INSERT_IN stuCtrlRecordSetInfo; // 记录集信息(用户填写) NET_CTRL_RECORDSET_INSERT_OUT stuCtrlRecordSetResult; // 记录集信息(设备返回) }NET_CTRL_RECORDSET_INSERT_PARAM; ///@brief 批量删除记录集参数 typedef struct tagNET_CTRL_RECORDSET_REMOVEEX_PARAM { DWORD dwSize; // 结构体大小 BOOL bTimeEnable; // 启用时间段删除 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 } NET_CTRL_RECORDSET_REMOVEEX_PARAM; ///@brief 记录集操作参数 typedef struct tagNET_CTRL_RECORDSET_PARAM { DWORD dwSize; EM_NET_RECORD_TYPE emType; // 记录集信息类型 void* pBuf; // 新增\更新\查询\导入时,为记录集信息缓存,详见 EM_NET_RECORD_TYPE 注释,由用户申请内存,长度为nBufLen // 删除时,为存放记录集编号的内存地址(类型为int*), 批量删除时,为NET_CTRL_RECORDSET_REMOVEEX_PARAM, 由用户申请内存, 长度为nBufLen int nBufLen; // 记录集信息缓存大小,大小参照记录集信息类型对应的结构体 }NET_CTRL_RECORDSET_PARAM; ///@brief 时间段结构 typedef struct tagDH_TSECT { int bEnable; // 当表示录像时间段时,按位表示四个使能,从低位到高位分别表示动检录象、报警录象、普通录象、动检和报警同时发生才录像 // 当表示布撤防时间段时, 表示使能 // 当表示推送时间段时, 表示使能:1表示使能,0表示非使能 int iBeginHour; int iBeginMin; int iBeginSec; int iEndHour; int iEndMin; int iEndSec; } DH_TSECT, *LPDH_TSECT; ///@brief 时间表信息 typedef struct tagNET_CFG_TIME_SCHEDULE { BOOL bEnableHoliday; // 是否支持节假日配置,默认为不支持,除非获取配置后返回为TRUE,不要使能假日配置 DH_TSECT stuTimeSection[DH_N_SCHEDULE_TSECT][DH_N_REC_TSECT]; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 } NET_CFG_TIME_SCHEDULE; ///@brief 视频播放模式 typedef enum tagEM_VIDEO_PLAY_MODE_TYPE { EM_VIDEO_PLAY_MODE_TYPE_UNKNOWN, // 未知 EM_VIDEO_PLAY_MODE_TYPE_ONCE, // 播放一次 EM_VIDEO_PLAY_MODE_TYPE_REPEAT, // 循环播放 EM_VIDEO_PLAY_MODE_TYPE_ALONE, // 插播(单独播放) }EM_VIDEO_PLAY_MODE_TYPE; #define MAX_DELIVERY_FILE_NUM 128 // 最大投放文件数量 #define DELIVERY_FILE_URL_LEN 128 // 投放文件的URL长度 #define MAX_VIDEO_FILE_LIST_NUM 20 // 视频文件列表 ///@brief 投放的文件类型 typedef enum tagEM_DELIVERY_FILE_TYPE { EM_DELIVERY_FILE_TYPE_UNKNOWN, // 未知 EM_DELIVERY_FILE_TYPE_VIDEO, // 视频 EM_DELIVERY_FILE_TYPE_IMAGE, // 图片 EM_DELIVERY_FILE_TYPE_AUDIO, // 音频 EM_DELIVERY_FILE_TYPE_TXT, // 文本 }EM_DELIVERY_FILE_TYPE; ///@brief 文件所属的模式 typedef enum tagEM_PLAY_WITH_MODE { EM_PLAY_WITH_MODE_UNKNOWN, // 未知 EM_PLAY_WITH_MODE_RECOGNITION, // 识别模式 EM_PLAY_WITH_MODE_INFORMATION_RELEASE, // 信息发布模式 EM_PLAY_WITH_MODE_MAIN_INTERFACE, // 主界面模式 } EM_PLAY_WITH_MODE; ///@brief 投放文件信息 typedef struct tagNET_DELIVERY_FILE_INFO { EM_DELIVERY_FILE_TYPE emFileType; // 文件类型 char szFileURL[DELIVERY_FILE_URL_LEN]; // 文件的资源地址 int nImageSustain; // 每张图片停留多长时间,单位秒 (emFileType为EM_DELIVERY_FILE_TYPE_IMAGE时此字段有效) EM_PLAY_WITH_MODE emPlayWithMode; // 文件所属的模式 char szFileURLEx[512]; // NET_OUT_GET_ADVERTIMENT_CAPS中bSupport为true时填写此字段,并且szFileURL填空 BYTE byReserved[508]; // 保留字节 }NET_DELIVERY_FILE_INFO; ///@brief 投放文件信息 typedef struct tagNET_DELIVERY_FILE_INFOEX { EM_DELIVERY_FILE_TYPE emFileType; // 文件类型 char szFileURL[DELIVERY_FILE_URL_LEN]; // 文件的资源地址 int nImageSustain; // 每张图片停留多长时间,单位秒 (emFileType为EM_DELIVERY_FILE_TYPE_IMAGE时此字段有效) EM_PLAY_WITH_MODE emPlayWithMode; // 文件所属的模式 char szFileURLEx[512]; // NET_OUT_GET_ADVERTIMENT_CAPS中bSupport为true时填写此字段,并且szFileURL填空 NET_CFG_TIME_SCHEDULE stuTimeSection; //播放时间段。 int nSize; // 文件大小 int nID; // 文件编号 char szTXTContents[1024]; // 文字广告 }NET_DELIVERY_FILE_INFOEX; ///@brief 操作类型 typedef enum tagEM_VIDEO_PLAY_OPERATE_TYPE { EM_VIDEO_PLAY_OPERATE_TYPE_UNKNOWN, // 未知 EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE, // 替换 EM_VIDEO_PLAY_OPERATE_TYPE_ADD, // 新增 EM_VIDEO_PLAY_OPERATE_TYPE_REMOVE, // 删除 EM_VIDEO_PLAY_OPERATE_TYPE_CLEAR, // 清空 }EM_VIDEO_PLAY_OPERATE_TYPE; ///@brief 向视频输出口投放视频和图片文件 typedef struct tagNET_CTRL_DELIVERY_FILE { DWORD dwSize; // 结构体大小 int nPort; // 视频输出口 EM_VIDEO_PLAY_MODE_TYPE emPlayMode; // 播放类型 NET_TIME stuStartPlayTime; // 开始播放的时间 NET_TIME stuStopPlayTime; // 结束播放的时间,emPlayMode为EM_VIDEO_PLAY_MODE_TYPE_REPEAT时,此值有效 int nFileCount; // 投放的文件个数 NET_DELIVERY_FILE_INFO stuFileInfo[MAX_DELIVERY_FILE_NUM]; // 投放的文件信息(推荐使用stuFileInfoEx,二者互斥) // 如果nFileCountEx不为0,视为使用stuFileInfoEx,stuFileInfo值无效 EM_VIDEO_PLAY_OPERATE_TYPE emOperateType; // 操作类型。如无该字段,默认为EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE int nFileCountEx; // 投放的文件个数 NET_DELIVERY_FILE_INFOEX stuFileInfoEx[MAX_DELIVERY_FILE_NUM]; // 投放的文件信息 int nNumber; // 当前广告计划编号,调用者可以通过此编号来设置不同广告计划 NET_CFG_TIME_SCHEDULE stuTimeSection; // 播放时间段 BOOL bEnable; // 播放使能 char szName[128]; // 广告名称 }NET_CTRL_DELIVERY_FILE; ///@brief 投放文件信息 typedef struct tagNET_DELIVERY_FILE_BYCAR_INFO { EM_DELIVERY_FILE_TYPE emFileType; // 文件类型 char szFileURL[DELIVERY_FILE_URL_LEN]; // 文件的资源地址 int nImageSustain; // 每张图片停留多长时间,单位秒 (emFileType为EM_DELIVERY_FILE_TYPE_IMAGE时此字段有效) NET_TIME stuStartPlayTime; // 开始播放的时间 NET_TIME stuStopPlayTime; // 结束播放的时间,emPlayMode为EM_VIDEO_PLAY_MODE_TYPE_REPEAT时,此值有效 BYTE byReserved[1024]; // 保留字节 }NET_DELIVERY_FILE_BYCAR_INFO; ///@brief 向视频输出口投放视频和图片文件, 车载使用,广告单独时间投放 typedef struct tagNET_CTRL_DELIVERY_FILE_BYCAR { DWORD dwSize; // 结构体大小 int nPort; // 视频输出口 EM_VIDEO_PLAY_MODE_TYPE emPlayMode; // 播放类型 int nFileCount; // 投放的文件个数 NET_DELIVERY_FILE_BYCAR_INFO stuFileInfo[MAX_DELIVERY_FILE_NUM]; // 投放的文件信息 }NET_CTRL_DELIVERY_FILE_BYCAR; ///@brief 卡状态 typedef enum tagNET_ACCESSCTLCARD_STATE { NET_ACCESSCTLCARD_STATE_UNKNOWN = -1, NET_ACCESSCTLCARD_STATE_NORMAL = 0, // 正常 NET_ACCESSCTLCARD_STATE_LOSE = 0x01, // 挂失 NET_ACCESSCTLCARD_STATE_LOGOFF = 0x02, // 注销 NET_ACCESSCTLCARD_STATE_FREEZE = 0x04, // 冻结 NET_ACCESSCTLCARD_STATE_ARREARAGE = 0x08, // 欠费 NET_ACCESSCTLCARD_STATE_OVERDUE = 0x10, // 逾期 NET_ACCESSCTLCARD_STATE_PREARREARAGE = 0x20, // 预欠费(还是可以开门,但有语音提示) }NET_ACCESSCTLCARD_STATE; ///@brief 卡类型 typedef enum tagNET_ACCESSCTLCARD_TYPE { NET_ACCESSCTLCARD_TYPE_UNKNOWN = -1, NET_ACCESSCTLCARD_TYPE_GENERAL, // 一般卡 NET_ACCESSCTLCARD_TYPE_VIP, // VIP卡 NET_ACCESSCTLCARD_TYPE_GUEST, // 来宾卡 NET_ACCESSCTLCARD_TYPE_PATROL, // 巡逻卡 NET_ACCESSCTLCARD_TYPE_BLACKLIST, // 禁止名单卡 NET_ACCESSCTLCARD_TYPE_CORCE, // 胁迫卡 NET_ACCESSCTLCARD_TYPE_POLLING, // 巡检卡 NET_ACCESSCTLCARD_TYPE_GB_CUSTOM1, // 国标自定义1卡,不支持配套 NET_ACCESSCTLCARD_TYPE_GB_CUSTOM2, // 国标自定义2卡,不支持配套 NET_ACCESSCTLCARD_TYPE_TEMPORARY_PERSON = 0x09, // 临时人员,不支持配套 NET_ACCESSCTLCARD_TYPE_INVENTORY_PERSON, // 清分人员,不支持配套 NET_ACCESSCTLCARD_TYPE_INVENTORY_DIRECTOR, // 清分主管,不支持配套 NET_ACCESSCTLCARD_TYPE_SECURITY_GUARD, // 保卫人员,不支持配套 NET_ACCESSCTLCARD_TYPE_SECURITYGUARD_DIRECTOR, // 保卫主管,不支持配套 NET_ACCESSCTLCARD_TYPE_STORE_KEEPER, // 库管员,不支持配套 NET_ACCESSCTLCARD_TYPE_STORE_DIRECTOR, // 库主管,不支持配套 NET_ACCESSCTLCARD_TYPE_ESCORT_PERSON, // 押运人员,不支持配套 NET_ACCESSCTLCARD_TYPE_REPAIR_PERSON, // 维修人员,不支持配套 NET_ACCESSCTLCARD_TYPE_INSPECTOR = 0x12, // 检查人员,不支持配套 NET_ACCESSCTLCARD_TYPE_SHENZHENLINK = 0x13, // 不支持配套 NET_ACCESSCTLCARD_TYPE_MOTHERCARD = 0xff, // 母卡 }NET_ACCESSCTLCARD_TYPE; #define DH_MAX_DOOR_NUM 32 // 最大有权限门禁数目 #define DH_MAX_TIMESECTION_NUM 32 // 最大有效时间段数目 #define DH_MAX_CARDNAME_LEN 64 // 门禁卡命名最大长度 #define DH_MAX_CARDNO_LEN 32 // 门禁卡号最大长度 #define DH_MAX_USERID_LEN 32 // 门禁卡用户ID最大长度 #define DH_MAX_IC_LEN 32 // 证件最大长度 #define DH_MAX_QRCODE_LEN 128 // QRCode 最大长度 ///@brief 信息数据,只用于下发信息 typedef struct tagNET_ACCESSCTLCARD_FINGERPRINT_PACKET { DWORD dwSize; int nLength; // 单个数据包长度,单位字节 int nCount; // 包个数 char* pPacketData; // 所有信息数据包,用户申请内存并填充,长度为 nLength*nCount }NET_ACCESSCTLCARD_FINGERPRINT_PACKET; ///@brief 信息数据扩展,可用于下发和获取信息 typedef struct tagNET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX { int nLength; // 单个数据包长度,单位字节 int nCount; // 包个数 char* pPacketData; // 所有信息数据包, 用户申请内存,大小至少为nLength * nCount int nPacketLen; // pPacketData 指向内存区的大小,用户填写 int nRealPacketLen; // 返回给用户实际信息总大小 int nDuressIndex; // 胁迫信息序号,范围1~nCount BYTE byReverseed[1020]; //保留大小 }NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX; #define MAX_REPEATENTERROUTE_NUM 12 //反潜路径个数 ///@brief 帽子款式 typedef enum tagEM_HAT_STYLE { EM_HAT_UNKNOWN, // 未知 EM_HAT_ORDINARY, // 普通帽子 EM_HAT_HELMET, // 头盔 EM_HAT_SAFETYHAT, // 安全帽 EM_HAT_EAVELESS, // 无檐帽 EM_HAT_PEAKEDCAP, // 鸭舌帽 EM_HAT_FISHERMANHAT, // 渔夫帽 EM_HAT_NONE, // 未戴帽 } EM_HAT_STYLE; ///@brief 统一后的颜色枚举 typedef enum tagEM_UNIFIED_COLOR_TYPE { EM_UNIFIED_COLOR_TRANSPARENT = -1, // 透明 EM_UNIFIED_COLOR_UNKNOWN, // 未知 EM_UNIFIED_COLOR_WHITE, // 白色 EM_UNIFIED_COLOR_ORANGE, // 橙色 EM_UNIFIED_COLOR_PINK, // 粉色 EM_UNIFIED_COLOR_BLACK, // 黑色 EM_UNIFIED_COLOR_RED, // 红色 EM_UNIFIED_COLOR_YELLOW, // 黄色 EM_UNIFIED_COLOR_GRAY, // 灰色 EM_UNIFIED_COLOR_BLUE, // 蓝色 EM_UNIFIED_COLOR_GREEN, // 绿色 EM_UNIFIED_COLOR_PURPLE, // 紫色 EM_UNIFIED_COLOR_BROWN, // 棕色 }EM_UNIFIED_COLOR_TYPE; ///@brief 性别 typedef enum tagNET_ACCESSCTLCARD_SEX { NET_ACCESSCTLCARD_SEX_UNKNOWN, NET_ACCESSCTLCARD_SEX_MALE, // 男 NET_ACCESSCTLCARD_SEX_FEMALE, // 女 }NET_ACCESSCTLCARD_SEX; ///@brief 用户权限 typedef enum tagNET_ACCESSCTLCARD_AUTHORITY { NET_ACCESSCTLCARD_AUTHORITY_UNKNOWN, // 未知 NET_ACCESSCTLCARD_AUTHORITY_ADMINISTRATORS, // 管理员 NET_ACCESSCTLCARD_AUTHORITY_CUSTOMER, // 普通用户 }NET_ACCESSCTLCARD_AUTHORITY; ///@brief 楼层号(梯控需求) typedef struct tagNET_FLOORS_INFO { int nFloorNumEx2; // 有效的楼层数量再次扩展 char szFloorEx[256][8]; // 楼层号(梯控需求)最多不超过256个,楼层号不超过999 BYTE byReserved[512]; // 保留字节 }NET_FLOORS_INFO; ///@brief 测试项目 typedef enum tagEM_TEST_ITEMS { EM_TEST_ITEMS_UNKNOWN = -1, // 未知 EM_TEST_ITEMS_OTHER, // 其他项目 EM_TEST_ITEMS_HAND_TEST, // 手部测试静电电阻 EM_TEST_ITEMS_TWOFEET_TEST, // 双脚测试静电电阻 EM_TEST_ITEMS_HANDTWOFEET_TEST, // 手部和双脚测试静电电阻 EM_TEST_ITEMS_NONE // 全部不测 }EM_TEST_ITEMS; ///@brief 测试结果 typedef enum tagEM_ESD_RESULT { EM_ESD_RESULT_UNKNOWN = -1, // 未知 EM_ESD_RESULT_OTHER_ABERRANT, // 其他异常 EM_ESD_RESULT_TEST_PASS, // 测试通过 EM_ESD_RESULT_HAND_TEST_FAIL, // 手测试未通过 EM_ESD_RESULT_LEFTFOOT_TEST_FAIL, // 左脚测试未通过 EM_ESD_RESULT_RIGHTFOOT_TEST_FAIL, // 右脚测试未通过 EM_ESD_RESULT_FOOT_TEST_FAIL, // 双脚测试未通过 EM_ESD_RESULT_TEST_FAIL // 全部测试未通过 }EM_ESD_RESULT; ///@brief ESD阻值测试结果 typedef struct tagNET_TEST_RESULT { UINT nHandValue; // k欧姆(阻值单位) UINT nLeftFootValue; // k欧姆(阻值单位) UINT nRightFootValue; // k欧姆(阻值单位) EM_ESD_RESULT emEsdResult; // 测试结果 BYTE bReserved[128]; // 预留字节 }NET_TEST_RESULT; ///@brief 人员健康状态 typedef enum tagEM_GREENCNHEALTH_STATUS { EM_GREENCNHEALTH_STATUS_UNKNOWN = 0, // 未知 EM_GREENCNHEALTH_STATUS_GREEN, // 绿码 EM_GREENCNHEALTH_STATUS_YELLOW, // 黄码 EM_GREENCNHEALTH_STATUS_RED, // 红码 EM_GREENCNHEALTH_STATUS_INVALID, // 无效 }EM_GREENCNHEALTH_STATUS; ///@brief 电子通行证状态 typedef enum tagEM_ALLOW_PERMIT_FLAG { EM_ALLOW_PERMIT_FLAG_UNKNOWN = 0, // 未知 EM_ALLOW_PERMIT_FLAG_NO, // 没有电子通行证 EM_ALLOW_PERMIT_FLAG_EFFECTIVE, // 电子通行证有效 EM_ALLOW_PERMIT_FLAG_INVALID, // 电子通行证无效 }EM_ALLOW_PERMIT_FLAG; ///@brief 对接第三方平台数据 typedef enum tagEM_RENT_STATE { EM_RENT_STATE_UNKNOWN = 0, // 未知 EM_RENT_STATE_NORMAL_PAYMENT, // 正常缴费 EM_RENT_STATE_0_TO_3_MONTHS_IN_ARREARS, // 欠费0~3个月 EM_RENT_STATE_3_TO_6_MONTHS_IN_ARREARS, // 欠费3~6个月 EM_RENT_STATE_6_TO_12_MONTHS_IN_ARREARS, // 欠费6~12个月 EM_RENT_STATE_MORE_THAN_12_MONTHS_IN_ARREARS, // 欠费12个月以上 EM_RENT_STATE_TEMPORARY_VISITOR, // 临时访客 } EM_RENT_STATE; ///@brief 门禁卡记录集信息 typedef struct tagNET_RECORDSET_ACCESS_CTL_CARD { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szUserID[DH_MAX_USERID_LEN]; // 用户ID, 设备暂不支持 NET_ACCESSCTLCARD_STATE emStatus; // 卡状态 NET_ACCESSCTLCARD_TYPE emType; // 卡类型 char szPsw[DH_MAX_CARDPWD_LEN]; // 卡密码 int nDoorNum; // 有效的门数目; int sznDoors[DH_MAX_DOOR_NUM]; // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标 int nTimeSectionNum; // 有效的的开门时间段数目 int sznTimeSectionNo[DH_MAX_TIMESECTION_NUM]; // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标 int nUserTime; // 使用次数,仅当来宾卡时有效 NET_TIME stuValidStartTime; // 开始有效期, 设备暂不支持时分秒 NET_TIME stuValidEndTime; // 结束有效期, 设备暂不支持时分秒 BOOL bIsValid; // 是否有效,TRUE有效;FALSE无效 NET_ACCESSCTLCARD_FINGERPRINT_PACKET stuFingerPrintInfo;// 下发数据信息,仅为兼容性保留,请使用 stuFingerPrintInfoEx BOOL bFirstEnter; // 是否拥有首卡权限 char szCardName[DH_MAX_CARDNAME_LEN]; // 卡命名 char szVTOPosition[DH_COMMON_STRING_64]; // 门口机关联位置 BOOL bHandicap; // 是否为残障人士卡 BOOL bEnableExtended; // 启用成员 stuFingerPrintInfoEx NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX stuFingerPrintInfoEx; // 数据信息 int nFaceDataNum; // 目标数据个数不超过20 char szFaceData[MAX_FACE_DATA_NUM][MAX_FACE_DATA_LEN]; // 目标模版数据 char szDynamicCheckCode[MAX_COMMON_STRING_16]; // 动态校验码。 // VTO等设备会保存此校验码,以后每次刷卡都以一定的算法生成新校验码并写入IC卡中,同时更新VTO设备的校验码,只有卡号和此校验码同时验证通过时才可开门。 // 缺点:目前方案只支持一卡刷一个设备。 int nRepeatEnterRouteNum; // 反潜路径个数 int arRepeatEnterRoute[MAX_REPEATENTERROUTE_NUM]; // 反潜路径 int nRepeatEnterRouteTimeout; // 反潜超时时间 BOOL bNewDoor; // 是否启动新开门授权字段,TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限 int nNewDoorNum; // 有效的门数目; int nNewDoors[MAX_ACCESSDOOR_NUM]; // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标 int nNewTimeSectionNum; // 有效的的开门时间段数目 int nNewTimeSectionNo[MAX_ACCESSDOOR_NUM]; // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标 char szCitizenIDNo[MAX_COMMON_STRING_32]; // 证件号码 int nSpecialDaysScheduleNum; // 假日计划表示数量 int arSpecialDaysSchedule[MAX_ACCESSDOOR_NUM]; // 假日计划标识 UINT nUserType; // 用户类型, 0 普通用户, 1 禁止名单用户 int nFloorNum; // 有效的楼层数量 char szFloorNo[MAX_ACCESS_FLOOR_NUM][DH_COMMON_STRING_4]; // 楼层号 char szSection[MAX_COMMON_STRING_64]; // 部门名称 int nScore; // 信用积分 char szCompanyName[MAX_COMPANY_NAME_LEN]; // 单位名称 UINT nSectionID; // 部门ID NET_ACCESSCTLCARD_SEX emSex; // 性别 char szRole[MAX_COMMON_STRING_32]; // 角色 char szProjectNo[MAX_COMMON_STRING_32]; // 项目ID char szProjectName[MAX_COMMON_STRING_64]; // 项目名称 char szBuilderName[MAX_COMMON_STRING_64]; // 施工单位全称 char szBuilderID[MAX_COMMON_STRING_32]; // 施工单位ID char szBuilderType[MAX_COMMON_STRING_32]; // 施工单位类型 char szBuilderTypeID[MAX_COMMON_STRING_8]; // 施工单位类别ID char szPictureID[MAX_COMMON_STRING_64]; // 人员照片ID char szContractID[MAX_COMMON_STRING_16]; // 原合同系统合同编号 char szWorkerTypeID[MAX_COMMON_STRING_8]; // 工种ID char szWorkerTypeName[MAX_COMMON_STRING_32]; // 工种名称 BOOL bPersonStatus; // 人员状态, TRUE:启用, FALSE:禁用 NET_ACCESSCTLCARD_AUTHORITY emAuthority; // 用户权限 char szCompanionName[120]; // 陪同人姓名 char szCompanionCompany[200]; // 陪同人单位 NET_TIME stuTmpAuthBeginTime; // 临时授权开始时间,当该时间和其他时间同时生效时,以此时间为最高优先级 NET_TIME stuTmpAuthEndTime; // 临时授权结束时间,当该时间和其他时间同时生效时,以此时间为最高优先级 BOOL bFloorNoExValid; // 楼层号扩展 szFloorNoEx 是否有效 int nFloorNumEx; // 有效的楼层数量扩展 char szFloorNoEx[512][DH_COMMON_STRING_4]; // 楼层号扩展 char szSubUserID[32]; // 用户ID char szPhoneNumber[32]; // 人员电话号码 char szPhotoPath[256]; // 人员照片对应在ftp上的路径 char szCause[64]; // 来访原因 char szCompanionCard[32]; // 陪同人员证件号 char szCitizenAddress[128]; // 证件地址 NET_TIME stuBirthDay; // 出生日期(年月日有效) BOOL bFloorNoEx2Valid; // stuFloors2 是否有效 NET_FLOORS_INFO* pstuFloorsEx2; // 楼层号(再次扩展) char szDefaultFloor[8]; // 默认楼层号(梯控需求) int nUserTimeSectionNum; // 用户时间段有效个数 char szUserTimeSections[6][20]; // 针对用户自身的开门时间段校验,最多支持6个时间段 char szWorkClass[256]; // 工作班别 NET_TIME stuStartTimeInPeriodOfValidity; // 有效时间段内启动时间 EM_TEST_ITEMS emTestItems; // 测试项目 UINT nAuthOverdueTime; // 授权时间、过期时间,时间单位: 小时 EM_GREENCNHEALTH_STATUS emGreenCNHealthStatus; // 人员健康状态 EM_ALLOW_PERMIT_FLAG emAllowPermitFlag; // 电子通行证状态 EM_RENT_STATE emRentState; // 对接第三方平台数据 int nConsumptionTimeSectionsNum; // 用户消费时间段 char szConsumptionTimeSections[42][34]; // 消费时间段.每天最多6个时间段,每6个元素对应一天。一共7天; // 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额" }NET_RECORDSET_ACCESS_CTL_CARD; ///@brief 门禁密码记录集信息 typedef struct tagNET_RECORDSET_ACCESS_CTL_PWD { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 char szUserID[DH_MAX_USERID_LEN]; // 用户ID, 设备暂不支持 char szDoorOpenPwd[DH_MAX_CARDPWD_LEN]; // 开门密码 char szAlarmPwd[DH_MAX_CARDPWD_LEN]; // 报警密码 int nDoorNum; // 有效的的门数目 int sznDoors[DH_MAX_DOOR_NUM]; // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标 char szVTOPosition[DH_COMMON_STRING_64]; // 门口机关联位置 int nTimeSectionNum; // 开门时间段个数 int nTimeSectionIndex[DH_MAX_TIMESECTION_NUM]; // 开门时间段索引,是个数组,每个元素与sznDoors中的门对应 BOOL bNewDoor; // 是否启动新开门授权字段,TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限 int nNewDoorNum; // 有效的门数目; int nNewDoors[MAX_ACCESSDOOR_NUM]; // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标 int nNewTimeSectionNum; // 有效的的开门时间段数目 int nNewTimeSectionNo[MAX_ACCESSDOOR_NUM]; // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标 NET_TIME stuValidStartTime; // 开始有效期 NET_TIME stuValidEndTime; // 结束有效期 int nValidCounts; // 有效次数 char szCitizenIDNo[20]; // 证件号码 }NET_RECORDSET_ACCESS_CTL_PWD; ///@brief 开门方式(门禁配置,门的一种工作模式) typedef enum tagNET_DOOR_OPEN_METHOD { NET_DOOR_OPEN_METHOD_UNKNOWN = 0, NET_DOOR_OPEN_METHOD_PWD_ONLY, // 只允许密码开锁 NET_DOOR_OPEN_METHOD_CARD, // 只允许刷卡开锁 NET_DOOR_OPEN_METHOD_PWD_OR_CARD, // 密码或刷卡开锁 NET_DOOR_OPEN_METHOD_CARD_FIRST, // 先刷卡后密码开锁 NET_DOOR_OPEN_METHOD_PWD_FIRST, // 先密码后刷卡开锁 NET_DOOR_OPEN_METHOD_SECTION, // 分时段开门 }NET_DOOR_OPEN_METHOD; ///@brief 开门方式(门禁事件,门禁出入记录,实际的开门方式) typedef enum tagNET_ACCESS_DOOROPEN_METHOD { NET_ACCESS_DOOROPEN_METHOD_UNKNOWN = 0, NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY, // 密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD, // 刷卡开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST, // 先刷卡后密码开锁 NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST, // 先密码后刷卡开锁 NET_ACCESS_DOOROPEN_METHOD_REMOTE, // 远程开锁,如通过室内机或者平台对门口机开锁 NET_ACCESS_DOOROPEN_METHOD_BUTTON, // 开锁按钮进行开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT, // 信息开锁 NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT, // 密码+刷卡+信息组合开锁 NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT = 10, // 密码+信息组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT = 11, // 刷卡+信息组合开锁 NET_ACCESS_DOOROPEN_METHOD_PERSONS = 12, // 多人开锁 NET_ACCESS_DOOROPEN_METHOD_KEY = 13, // 钥匙开门 NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD = 14, // 胁迫密码开门 NET_ACCESS_DOOROPEN_METHOD_QRCODE = 15, // 二维码开门 NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION = 16, // 目标识别开门 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD = 18, // 人证对比 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD = 19, // 证件+ 人证比对 NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH = 20, //蓝牙开门 NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD = 21, // 个性化密码开门 NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD = 22, // UserID+密码 NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD = 23, // 目标+密码开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD = 24, // 信息+密码开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE = 25, // 信息+目标开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE = 26, // 刷卡+目标开锁 NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD = 27, // 目标或密码开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD = 28, // 信息或密码开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE = 29, // 信息或开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE = 30, // 刷卡或目标开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT = 31, // 刷卡或信息开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD = 32, // 信息+目标+密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD = 33, // 刷卡+目标+密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD = 34, // 刷卡+信息+密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE = 35, // 卡+信息+目标组合开锁 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD = 36, // 信息或目标或密码 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD = 37, // 卡或目标或密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE = 38, // 卡或信息或目标开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD = 39, // 卡+信息+目标+密码组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD = 40, // 卡或信息或目标或密码开锁 NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE = 41, //(证件+人证比对)或 刷卡 或 目标 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE = 42, // 人证比对 或 刷卡(二维码) 或 目标 NET_ACCESS_DOOROPEN_METHOD_DTMF = 43, //DTMF开锁(包括SIPINFO,RFC2833,INBAND) NET_ACCESS_DOOROPEN_METHOD_REMOTE_QRCODE = 44, // 远程二维码开门 NET_ACCESS_DOOROPEN_METHOD_REMOTE_FACE = 45, // 远程目标开门 NET_ACCESS_DOOROPEN_METHOD_CITIZEN_FINGERPRINT = 46, // 人证比对开门(信息) NET_ACCESS_DOOROPEN_METHOD_TEMPORARY_PASSWORD = 47, // 临时密码开门 NET_ACCESS_DOOROPEN_METHOD_HEALTHCODE = 48, // 健康码开门 NET_ACCESS_DOOROPEN_METHOD_IRIS = 49, // 目标识别开锁 NET_ACCESS_DOOROPEN_METHOD_IRIS_AND_PASSWORD = 50, // 眼睛+密码组合开锁 NET_ACCESS_DOOROPEN_METHOD_FACE_AND_IRIS = 51, // 目标+眼睛组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_IRIS = 52, // 卡+眼睛组合开锁 NET_ACCESS_DOOROPEN_METHOD_IRIS_OR_PASSWORD = 53, // 眼睛或密码开锁 NET_ACCESS_DOOROPEN_METHOD_FACE_OR_IRIS = 54, // 目标或眼睛开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_IRIS = 55, // 卡或眼睛开锁 NET_ACCESS_DOOROPEN_METHOD_FACE_AND_IRIS_AND_PASSWORD = 56, // 目标+眼睛+密码组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_IRIS = 57, // 卡+目标+眼睛组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_IRIS_AND_PASSWORD = 58, // 卡+眼睛+密码组合开锁 NET_ACCESS_DOOROPEN_METHOD_FACE_OR_IRIS_OR_PASSWORD = 59, // 目标或眼睛或密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_IRIS = 60, // 卡或目标或眼睛开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_IRIS_OR_PASSWORD = 61, // 卡或眼睛或密码开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_IRIS_AND_PASSWORD = 62,// 卡+目标+眼睛+密码组合开锁 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_IRIS_OR_PASSWORD = 63, // 卡或目标或眼睛或密码开锁 }NET_ACCESS_DOOROPEN_METHOD; ///@brief 考勤状态 typedef enum tagNET_ATTENDANCESTATE { NET_ATTENDANCESTATE_UNKNOWN, NET_ATTENDANCESTATE_SIGNIN, //签入 NET_ATTENDANCESTATE_GOOUT, //外出 NET_ATTENDANCESTATE_GOOUT_AND_RETRUN, //外出归来 NET_ATTENDANCESTATE_SIGNOUT, // 签出 NET_ATTENDANCESTATE_WORK_OVERTIME_SIGNIN, // 加班签到 NET_ATTENDANCESTATE_WORK_OVERTIME_SIGNOUT, // 加班签出 }NET_ATTENDANCESTATE; ///@brief 开门方向 typedef enum tagNET_ENUM_DIRECTION_ACCESS_CTL { NET_ENUM_DIRECTION_UNKNOWN, NET_ENUM_DIRECTION_ENTRY, // 进门 NET_ENUM_DIRECTION_EXIT, // 出门 }NET_ENUM_DIRECTION_ACCESS_CTL; ///@brief 民族 typedef enum tagEM_CITIZENIDCARD_EC_TYPE { EM_CITIZENIDCARD_EC_Unknown = 0, // 未知 EM_CITIZENIDCARD_EC_Han, // 汉族 EM_CITIZENIDCARD_EC_Mongolian, // 蒙古族 EM_CITIZENIDCARD_EC_Hui, // 回族 EM_CITIZENIDCARD_EC_Tibetan, // 藏族 EM_CITIZENIDCARD_EC_Uygur, // 维吾尔族 EM_CITIZENIDCARD_EC_Miao, // 苗族 EM_CITIZENIDCARD_EC_Yi, // 彝族 EM_CITIZENIDCARD_EC_Zhuang, // 壮族 EM_CITIZENIDCARD_EC_Bouyei, // 布依族 EM_CITIZENIDCARD_EC_Korean, // 朝鲜族 EM_CITIZENIDCARD_EC_Manchu, // 满族 EM_CITIZENIDCARD_EC_Dong, // 侗族 EM_CITIZENIDCARD_EC_Yao, // 瑶族 EM_CITIZENIDCARD_EC_Bai, // 白族 EM_CITIZENIDCARD_EC_Tujia, // 土家族 EM_CITIZENIDCARD_EC_Hani, // 哈尼族 EM_CITIZENIDCARD_EC_Kazak, // 哈萨克族 EM_CITIZENIDCARD_EC_Dai, // 傣族 EM_CITIZENIDCARD_EC_Li, // 黎族 EM_CITIZENIDCARD_EC_Lisu, // 傈僳族 EM_CITIZENIDCARD_EC_Va, // 佤族 EM_CITIZENIDCARD_EC_She, // 畲族 EM_CITIZENIDCARD_EC_Gaoshan, // 高山族 EM_CITIZENIDCARD_EC_Lahu, // 拉祜族 EM_CITIZENIDCARD_EC_Shui, // 水族 EM_CITIZENIDCARD_EC_Dongxiang, // 东乡族 EM_CITIZENIDCARD_EC_Naxi, // 纳西族 EM_CITIZENIDCARD_EC_Jingpo, // 景颇族 EM_CITIZENIDCARD_EC_Kirgiz, // 柯尔克孜族 EM_CITIZENIDCARD_EC_Tu, // 土族 EM_CITIZENIDCARD_EC_Daur, // 达斡尔族 EM_CITIZENIDCARD_EC_Mulam, // 仫佬族 EM_CITIZENIDCARD_EC_Qoiang, // 羌族 EM_CITIZENIDCARD_EC_Blang, // 布朗族 EM_CITIZENIDCARD_EC_Salar, // 撒拉族 EM_CITIZENIDCARD_EC_Maonan, // 毛南族 EM_CITIZENIDCARD_EC_Gelo, // 仡佬族 EM_CITIZENIDCARD_EC_Xibe, // 锡伯族 EM_CITIZENIDCARD_EC_Achang, // 阿昌族 EM_CITIZENIDCARD_EC_Pumi, // 普米族 EM_CITIZENIDCARD_EC_Tajik, // 塔吉克族 EM_CITIZENIDCARD_EC_Nu, // 怒族 EM_CITIZENIDCARD_EC_Ozbek, // 乌孜别克族 EM_CITIZENIDCARD_EC_Russian, // 俄罗斯族 EM_CITIZENIDCARD_EC_Ewenkl, // 鄂温克族 EM_CITIZENIDCARD_EC_Deang, // 德昂族 EM_CITIZENIDCARD_EC_Bonan, // 保安族 EM_CITIZENIDCARD_EC_Yugur, // 裕固族 EM_CITIZENIDCARD_EC_Jing, // 京族 EM_CITIZENIDCARD_EC_Tatar, // 塔塔尔族 EM_CITIZENIDCARD_EC_Drung, // 独龙族 EM_CITIZENIDCARD_EC_Oroqen, // 鄂伦春族 EM_CITIZENIDCARD_EC_Hezhen, // 赫哲族 EM_CITIZENIDCARD_EC_Moinba, // 门巴族 EM_CITIZENIDCARD_EC_Lhoba, // 珞巴族 EM_CITIZENIDCARD_EC_Jino // 基诺族 }EM_CITIZENIDCARD_EC_TYPE; ///@brief 性别 typedef enum tagEM_CITIZENIDCARD_SEX_TYPE { EM_CITIZENIDCARD_SEX_TYPE_UNKNOWN, // 未知 EM_CITIZENIDCARD_SEX_TYPE_MALE, // 男 EM_CITIZENIDCARD_SEX_TYPE_FEMALE, // 女 EM_CITIZENIDCARD_SEX_TYPE_UNTOLD, // 未说明 }EM_CITIZENIDCARD_SEX_TYPE; ///@brief 人体测温温度单位 typedef enum tagEM_HUMAN_TEMPERATURE_UNIT { EM_HUMAN_TEMPERATURE_UNKNOWN = -1, // 未知 EM_HUMAN_TEMPERATURE_CENTIGRADE, // 摄氏度 EM_HUMAN_TEMPERATURE_FAHRENHEIT, // 华氏度 EM_HUMAN_TEMPERATURE_KELVIN, // 开尔文 } EM_HUMAN_TEMPERATURE_UNIT; ///@brief 人体测温状态 typedef enum tagEM_HUMAN_TEMPERATURE_STATUS { EM_HUMAN_TEMPERATURE_STATUS_UNKNOWN = -1, // 未知 EM_HUMAN_TEMPERATURE_STATUS_LOW, // 温度异常 EM_HUMAN_TEMPERATURE_STATUS_NORMAL, // 正常 EM_HUMAN_TEMPERATURE_STATUS_HIGH, // 温度异常 }EM_HUMAN_TEMPERATURE_STATUS; ///@brief 人员温度信息 typedef struct tagNET_MAN_TEMPERATURE_INFO { float fCurrentTemperature; // 人员体温 EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位 BOOL bIsOverTemperature; // 是否超温 EM_HUMAN_TEMPERATURE_STATUS emTemperatureStatus; // 人体测温状态 BYTE byReserved[256]; // 预留字节 } NET_MAN_TEMPERATURE_INFO; ///@brief 陪同人员信息 typedef struct tagNET_COMPANION_INFO { char szCompanionCard[32]; // 陪同者卡号 char szCompanionUserID[32]; // 陪同者ID char szCompanionName[120]; // 陪同者姓名 char szCompanionCompany[200]; // 陪同者单位 BYTE byReserved[56]; // 预留字段 }NET_COMPANION_INFO; ///@brief 口罩状态 typedef enum tagEM_MASK_STATE_TYPE { EM_MASK_STATE_UNKNOWN, // 未知 EM_MASK_STATE_NODISTI, // 未识别 EM_MASK_STATE_NOMASK, // 没戴口罩 EM_MASK_STATE_WEAR, // 戴口罩 } EM_MASK_STATE_TYPE; ///@brief 刷卡开门时,门禁后台校验目标是否是同一个人 typedef enum tagEM_FACE_CHECK { EM_FACE_CHECK_UNKNOWN = -1, // 未知 EM_FACE_CHECK_NODATA, // 该人员无目标数据 EM_FACE_CHECK_CONSISTENT, // 刷卡和目标人员一致 EM_FACE_CHECK_NOT_CONSISTENT // 刷卡和目标人员不一致 }EM_FACE_CHECK; ///@brief 二维码是否过期 typedef enum tagEM_QRCODE_IS_EXPIRED { EM_QRCODE_EXPIRED_UNKNOWN, // 未知 EM_QRCODE_NO_EXPIRED, // 未过期 EM_QRCODE_EXPIRED, // 过期 }EM_QRCODE_IS_EXPIRED; ///@brief 二维码状态 typedef enum tagEM_QRCODE_STATE { EM_QRCODE_STATE_UNKNOWN, // 未知 EM_QRCODE_STATE_CLEARED, // 已批准 EM_QRCODE_STATE_NOCLEARED, // 未批准 }EM_QRCODE_STATE; ///@brief 梯控方式触发者 typedef enum tagEM_LIFT_CALLER_TYPE { EM_LIFT_CALLER_TYPE_UNKNOWN = 0, // 未知 EM_LIFT_CALLER_TYPE_VTO, // VTO 呼叫 EM_LIFT_CALLER_TYPE_PLATFORM, // 平台呼叫 EM_LIFT_CALLER_TYPE_LOCAL_AUTH, // 本机鉴权呼叫 EM_LIFT_CALLER_TYPE_ACCESS_CONTROL, // 门禁呼梯(梯控需求) }EM_LIFT_CALLER_TYPE; ///@brief 行程码状态 typedef enum tagEM_TRAVEL_CODE_COLOR { EM_TRAVEL_CODE_COLOR_UNKNOWN, // 未知 EM_TRAVEL_CODE_COLOR_RED, // 红 EM_TRAVEL_CODE_COLOR_GREEN, // 绿 EM_TRAVEL_CODE_COLOR_YELLOW, // 黄 EM_TRAVEL_CODE_COLOR_ORANGE, // 橙 } EM_TRAVEL_CODE_COLOR; ///@brief 门禁刷卡记录记录集信息 typedef struct tagNET_RECORDSET_ACCESS_CTL_CARDREC { DWORD dwSize; int nRecNo; // 记录集编号,只读 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szPwd[DH_MAX_CARDPWD_LEN]; // 密码 NET_TIME stuTime; // 刷卡时间 BOOL bStatus; // 刷卡结果,TRUE表示成功,FALSE表示失败 NET_ACCESS_DOOROPEN_METHOD emMethod; // 开门方式 int nDoor; // 门号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标 char szUserID[DH_MAX_USERID_LEN]; // 用户ID int nReaderID; // 读卡器ID (废弃,不再使用) char szSnapFtpUrl[MAX_PATH]; // 开锁抓拍上传的FTP地址 char szReaderID[DH_COMMON_STRING_32]; // 读卡器ID // 开门并上传抓拍照片,在记录集记录存储地址,成功才有 NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 int nErrorCode; // 开门失败的原因,仅在bStatus为FALSE时有效 // 0x00 没有错误 // 0x10 未授权 // 0x11 卡挂失或注销 // 0x12 没有该门权限 // 0x13 开门模式错误 // 0x14 有效期错误 // 0x15 防反潜模式 // 0x16 胁迫报警未打开 // 0x17 门常闭状态 // 0x18 AB互锁状态 // 0x19 巡逻卡 // 0x1A 设备处于闯入报警状态 // 0x20 时间段错误 // 0x21 假期内开门时间段错误 // 0x23 卡逾期 // 0x30 需要先验证有首卡权限的卡片 // 0x40 卡片正确,输入密码错误 // 0x41 卡片正确,输入密码超时 // 0x42 卡片正确,输入信息错误 // 0x43 卡片正确,输入信息超时 // 0x44 信息正确,输入密码错误 // 0x45 信息正确,输入密码超时 // 0x50 组合开门顺序错误 // 0x51 组合开门需要继续验证 // 0x60 验证通过,控制台未授权 // 0x61 卡片正确,目标错误 // 0x62 卡片正确,目标超时 // 0x63 重复进入 // 0x64 未授权,需要后端平台识别 // 0x65 体温过高 // 0x66 未戴口罩 // 0x67 健康码获取失败 // 0x68 黄码禁止通行 // 0x69 红码禁止通行 // 0x6a 健康码无效 // 0x6b 绿码验证通过 // 0x6c 绿码,核酸为异常 // 0x6d 绿码,未接种 // 0x6f 绿码,抗原为异常 // 0x70 获取健康码信息 char szRecordURL[MAX_COMMON_STRING_128]; // 刷卡录像的地址 int nNumbers; // 抓图的张数 NET_ATTENDANCESTATE emAttendanceState; // 考勤状态 NET_ENUM_DIRECTION_ACCESS_CTL emDirection; // 开门方向 char szClassNumber[MAX_CLASS_NUMBER_LEN]; // 班级(考勤) char szPhoneNumber[MAX_PHONENUMBER_LEN]; // 电话(考勤) char szCardName[DH_MAX_CARDNAME_LEN]; // 卡命名 char szSN[DH_COMMON_STRING_32]; // 智能锁序列号,无线配件需要该字段 BOOL bCitizenIDResult; // 人证比对结果 char szCitizenIDName[30]; // 名字 BYTE byReserved1[2]; // 字节对齐 EM_CITIZENIDCARD_SEX_TYPE emCitizenIDSex; // 性别 EM_CITIZENIDCARD_EC_TYPE emCitizenIDEC; // 民族 NET_TIME stuCitizenIDBirth; // 出生日期(时分秒无效) char szCitizenIDAddress[108]; // 住址 char szCitizenIDAuthority[48]; // 签发机关 NET_TIME stuCitizenIDStart; // 有效起始日期(时分秒无效) NET_TIME stuCitizenIDEnd; // 有效截止日期(时分秒无效, 年为负数时表示长期有效) BOOL bIsEndless; // 是否长期有效 char szSnapFaceURL[DH_COMMON_STRING_128]; // 目标图片保存地址 char szCitizenPictureURL[DH_COMMON_STRING_128]; // 证件图片保存地址 char szCitizenIDNo[20]; // 证件号码 NET_ACCESSCTLCARD_SEX emSex; // 性别 char szRole[MAX_COMMON_STRING_32]; // 角色 char szProjectNo[MAX_COMMON_STRING_32]; // 项目ID char szProjectName[MAX_COMMON_STRING_64]; // 项目名称 char szBuilderName[MAX_COMMON_STRING_64]; // 施工单位全称 char szBuilderID[MAX_COMMON_STRING_32]; // 施工单位ID char szBuilderType[MAX_COMMON_STRING_32]; // 施工单位类型 char szBuilderTypeID[MAX_COMMON_STRING_8]; // 施工单位类别ID char szPictureID[MAX_COMMON_STRING_64]; // 人员照片ID char szContractID[MAX_COMMON_STRING_16]; // 原合同系统合同编号 char szWorkerTypeID[MAX_COMMON_STRING_8]; // 工种ID char szWorkerTypeName[MAX_COMMON_STRING_32]; // 工种名称 BOOL bPersonStatus; // 人员状态, TRUE:启用, FALSE:禁用 EM_HAT_STYLE emHatStyle; // 帽子类型 EM_UNIFIED_COLOR_TYPE emHatColor; // 帽子颜色 NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo; // 人员温度信息 int nCompanionInfo; // 陪同人员 stuCompanionInfo 个数 NET_COMPANION_INFO stuCompanionInfo[12]; // 陪同人员信息:姓名、卡号字段有效 EM_MASK_STATE_TYPE emMask; // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效) UINT nFaceIndex; // 一人多脸的目标序号 int nScore; // 目标质量评分 int nLiftNo; // 电梯编号 char szQRCode[512]; // 二维码 EM_FACE_CHECK emFaceCheck; // 刷卡开门时,门禁后台校验目标是否是同一个人 EM_QRCODE_IS_EXPIRED emQRCodeIsExpired; // 二维码是否过期。默认值0 EM_QRCODE_STATE emQRCodeState; // 二维码状态 NET_TIME stuQRCodeValidTo; // 二维码截止日期 EM_LIFT_CALLER_TYPE emLiftCallerType; // 梯控方式触发者 UINT nBlockId; // 上报事件数据序列号从1开始自增 char szSection[64]; // 部门名称 char szWorkClass[256]; // 工作班级 EM_TEST_ITEMS emTestItems; // 测试项目 NET_TEST_RESULT stuTestResult; // ESD阻值测试结果 BOOL bUseCardNameEx; // 是否使用卡命名扩展 char szCardNameEx[128]; // 卡命名扩展 int nHSJCResult; //核酸检测报告结果 -1: 未知 0: 异常 1: 正常 2: 未检测 3: 过期 int nVaccinateFlag; //是否已接种新冠疫苗(0:否,1:是) char szVaccineName[128]; //新冠疫苗名称 int nDateCount; //历史接种日期有效数 char szVaccinateDate[8][32]; //历史接种日期 历史接种日期 (yyyy-MM-dd)。 ”0000-00-00”,表示已接种,但无具体日期。 EM_TRAVEL_CODE_COLOR emTravelCodeColor; //返回行程码状态信息 int nCityCount; //最近14天经过的城市名有效数 char szPassingCity[16][128]; //最近14天经过的城市名(按照时间顺序排列)最早经过的城市放第一个。 char szTrafficPlate[32]; //车牌 char szRecordLocalUrl[128]; // 刷卡录像的地址 char szHSJCReportDate[32]; // 核酸检测报告日期(格式: yyyy-MM-dd) int nHSJCExpiresIn; // 核酸检测报告有效期(单位:天) char szAntigenReportDate[32]; // 抗原检测报告日期(格式: yyyy-MM-dd) int nAntigenStatus; // 抗原检测报告结果: -1:未知 0: 异常 1: 正常 2: 未检测 3: 过期 int nAntigenExpiresIn; // 抗原检测报告有效期(单位:天) char szCheckOutType[32]; // 签出类型 char szCheckOutCause[512]; // 签出原因 NET_TIME stuCreateTimeRealUTC; // 刷卡时间,真实UTC时间 char szLocationName[256]; // 场所码名称 char szLocationAddress[256]; // 场所码详细地址 char szLocationType[256]; // 场所码类型 }NET_RECORDSET_ACCESS_CTL_CARDREC; ///@brief 假日记录集信息 typedef struct tagNET_RECORDSET_HOLIDAY { DWORD dwSize; int nRecNo; // 记录集编号,只读 int nDoorNum; // 有效的的门数目 int sznDoors[DH_MAX_DOOR_NUM]; // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 BOOL bEnable; // 假期使能 char szHolidayNo[DH_COMMON_STRING_32]; // 假期编号 char szHolidayName[DH_COMMON_STRING_128]; // 假期名称 }NET_RECORDSET_HOLIDAY; ///@brief 卡号省份 typedef enum tagEM_CARD_PROVINCE { EM_CARD_UNKNOWN = 10, // 解析出错,未知省份 EM_CARD_BEIJING = 11, // 北京 EM_CARD_TIANJIN = 12, // 天津 EM_CARD_HEBEI = 13, // 河北 EM_CARD_SHANXI_TAIYUAN = 14, // 山西 EM_CARD_NEIMENGGU = 15, // 内蒙古 EM_CARD_LIAONING = 21, // 辽宁 EM_CARD_JILIN = 22, // 吉林 EM_CARD_HEILONGJIANG = 23, // 黑龙江 EM_CARD_SHANGHAI = 31, // 上海 EM_CARD_JIANGSU = 32, // 江苏 EM_CARD_ZHEJIANG = 33, // 浙江 EM_CARD_ANHUI = 34, // 安徽 EM_CARD_FUJIAN = 35, // 福建 EM_CARD_JIANGXI = 36, // 江西 EM_CARD_SHANDONG = 37, // 山东 EM_CARD_HENAN = 41, // 河南 EM_CARD_HUBEI = 42, // 湖北 EM_CARD_HUNAN = 43, // 湖南 EM_CARD_GUANGDONG = 44, // 广东 EM_CARD_GUANGXI = 45, // 广西 EM_CARD_HAINAN = 46, // 海南 EM_CARD_CHONGQING = 50, // 重庆 EM_CARD_SICHUAN = 51, // 四川 EM_CARD_GUIZHOU = 52, // 贵州 EM_CARD_YUNNAN = 53, // 云南 EM_CARD_XIZANG = 54, // 西藏 EM_CARD_SHANXI_XIAN = 61, // 陕西 EM_CARD_GANSU = 62, // 甘肃 EM_CARD_QINGHAI = 63, // 青海 EM_CARD_NINGXIA = 64, // 宁夏 EM_CARD_XINJIANG = 65, // 新疆 EM_CARD_XIANGGANG = 71, // 香港 EM_CARD_AOMEN = 82, // 澳门 EM_CARD_TAIWAN = 83, // 台湾 } EM_CARD_PROVINCE; ///@brief 车辆类型 typedef enum tagEM_CAR_TYPE { EM_CAR_0, //其他车辆 EM_CAR_1, //大型普通客车 EM_CAR_2, //大型双层客车 EM_CAR_3, //大型卧铺客车 EM_CAR_4, //大型铰接客车 EM_CAR_5, //大型越野客车 EM_CAR_6, //大型轿车 EM_CAR_7, //大型专用客车 EM_CAR_8, //大型专用校车 EM_CAR_9, //中型普通客车 EM_CAR_10, //中型双层客车 EM_CAR_11, //中型卧铺客车 EM_CAR_12, //中型铰接客车 EM_CAR_13, //中型越野客车 EM_CAR_14, //中型轿车 EM_CAR_15, //中型专用客车 EM_CAR_16, //中型专用校车 EM_CAR_17, //小型普通客车 EM_CAR_18, //小型越野客车 EM_CAR_19, //小型轿车 EM_CAR_20, //小型专用客车 EM_CAR_21, //小型专用校车 EM_CAR_22, //小型面包车 EM_CAR_23, //微型普通客车 EM_CAR_24, //微型越野客车 EM_CAR_25, //微型轿车 EM_CAR_26, //微型面包车 EM_CAR_27, //重型半挂牵引车 EM_CAR_28, //重型全挂牵引车 EM_CAR_29, //中型半挂牵引车 EM_CAR_30, //中型全挂牵引车 EM_CAR_31, //轻型半挂牵引车 EM_CAR_32, //轻型全挂牵引车 EM_CAR_33, //大型非载货专项作业车 EM_CAR_34, //大型载货专项作业车 EM_CAR_35, //中型非载货专项作业车 EM_CAR_36, //中型载货专项作业车 EM_CAR_37, //小型非载货专项作业车 EM_CAR_38, //小型载货专项作业车 EM_CAR_39, //微型非载货专项作业车 EM_CAR_40, //微型载货专项作业车 EM_CAR_41, //重型非载货专项作业车 EM_CAR_42, //重型载货专项作业车 EM_CAR_43, //轻型非载货专项作业车 EM_CAR_44, //轻型载货专项作业车 EM_CAR_45, //普通正三轮摩托车 EM_CAR_46, //轻便正三轮摩托车 EM_CAR_47, //正三轮载客摩托车 EM_CAR_48, //正三轮载货摩托车 EM_CAR_49, //侧三轮摩托车 EM_CAR_50, //普通二轮摩托车 EM_CAR_51, //轻便二轮摩托车 EM_CAR_52, //无轨电车 EM_CAR_53, //有轨电车 EM_CAR_54, //三轮汽车 EM_CAR_55, //轮式装载机械 EM_CAR_56, //轮式挖掘机械 EM_CAR_57, //轮式平地机械 EM_CAR_58, //重型普通货车 EM_CAR_59, //重型厢式货车 EM_CAR_60, //重型封闭货车 EM_CAR_61, //重型罐式货车 EM_CAR_62, //重型平板货车 EM_CAR_63, //重型集装箱车 EM_CAR_64, //重型自卸货车 EM_CAR_65, //重型特殊结构货车 EM_CAR_66, //重型仓栅式货车 EM_CAR_67, //重型车辆运输车 EM_CAR_68, //重型厢式自卸货车 EM_CAR_69, //重型罐式自卸货车 EM_CAR_70, //重型平板自卸货车 EM_CAR_71, //重型集装箱自卸货车 EM_CAR_72, //重型特殊结构自卸货车 EM_CAR_73, //重型仓栅式自卸货车 EM_CAR_74, //中型普通货车 EM_CAR_75, //中型厢式货车 EM_CAR_76, //中型封闭货车 EM_CAR_77, //中型罐式货车 EM_CAR_78, //中型平板货车 EM_CAR_79, //中型集装箱车 EM_CAR_80, //中型自卸货车 EM_CAR_81, //中型特殊结构货车 EM_CAR_82, //中型仓栅式货车 EM_CAR_83, //中型车辆运输车 EM_CAR_84, //中型厢式自卸货车 EM_CAR_85, //中型罐式自卸货车 EM_CAR_86, //中型平板自卸货车 EM_CAR_87, //中型集装箱自卸货车 EM_CAR_88, //中型特殊结构自卸货车 EM_CAR_89, //中型仓栅式自卸货车 EM_CAR_90, //轻型普通货车 EM_CAR_91, //轻型厢式货车 EM_CAR_92, //轻型封闭货车 EM_CAR_93, //轻型罐式货车 EM_CAR_94, //轻型平板货车 EM_CAR_95, //轻型自卸货车 EM_CAR_96, //轻型特殊结构货车 EM_CAR_97, //轻型仓栅式货车 EM_CAR_98, //轻型车辆运输车 EM_CAR_99, //轻型厢式自卸货车 EM_CAR_100, //轻型罐式自卸货车 EM_CAR_101, //轻型平板自卸货车 EM_CAR_102, //轻型特殊结构自卸货车 EM_CAR_103, //轻型仓栅式自卸货车 EM_CAR_104, //微型普通货车 EM_CAR_105, //微型厢式货车 EM_CAR_106, //微型封闭货车 EM_CAR_107, //微型罐式货车 EM_CAR_108, //微型自卸货车 EM_CAR_109, //微型特殊结构货车 EM_CAR_110, //微型仓栅式货车 EM_CAR_111, //微型车辆运输车 EM_CAR_112, //微型厢式自卸货车 EM_CAR_113, //微型罐式自卸货车 EM_CAR_114, //微型特殊结构自卸货车 EM_CAR_115, //微型仓栅式自卸货车 EM_CAR_116, //普通低速货车 EM_CAR_117, //厢式低速货车 EM_CAR_118, //罐式低速货车 EM_CAR_119, //自卸低速货车 EM_CAR_120, //仓栅式低速货车 EM_CAR_121, //厢式自卸低速货车 EM_CAR_122, //罐式自卸低速货车 EM_CAR_123, //重型普通全挂车 EM_CAR_124, //重型厢式全挂车 EM_CAR_125, //重型罐式全挂车 EM_CAR_126, //重型平板全挂车 EM_CAR_127, //重型集装箱全挂车 EM_CAR_128, //重型自卸全挂车 EM_CAR_129, //重型仓栅式全挂车 EM_CAR_130, //重型旅居全挂车 EM_CAR_131, //重型专项作业全挂车 EM_CAR_132, //重型厢式自卸全挂车 EM_CAR_133, //重型罐式自卸全挂车 EM_CAR_134, //重型平板自卸全挂车 EM_CAR_135, //重型集装箱自卸全挂车 EM_CAR_136, //重型仓栅式自卸全挂车 EM_CAR_137, //重型专项作业自卸全挂车 EM_CAR_138, //中型普通全挂车 EM_CAR_139, //中型厢式全挂车 EM_CAR_140, //中型罐式全挂车 EM_CAR_141, //中型平板全挂车 EM_CAR_142, //中型集装箱全挂车 EM_CAR_143, //中型自卸全挂车 EM_CAR_144, //中型仓栅式全挂车 EM_CAR_145, //中型旅居全挂车 EM_CAR_146, //中型专项作业全挂车 EM_CAR_147, //中型厢式自卸全挂车 EM_CAR_148, //中型罐式自卸全挂车 EM_CAR_149, //中型平板自卸全挂车 EM_CAR_150, //中型集装箱自卸全挂车 EM_CAR_151, //中型仓栅式自卸全挂车 EM_CAR_152, //中型专项作业自卸全挂车 EM_CAR_153, //轻型普通全挂车 EM_CAR_154, //轻型厢式全挂车 EM_CAR_155, //轻型罐式全挂车 EM_CAR_156, //轻型平板全挂车 EM_CAR_157, //轻型自卸全挂车 EM_CAR_158, //轻型仓栅式全挂车 EM_CAR_159, //轻型旅居全挂车 EM_CAR_160, //轻型专项作业全挂车 EM_CAR_161, //轻型厢式自卸全挂车 EM_CAR_162, //轻型罐式自卸全挂车 EM_CAR_163, //轻型平板自卸全挂车 EM_CAR_164, //轻型集装箱自卸全挂车 EM_CAR_165, //轻型仓栅式自卸全挂车 EM_CAR_166, //轻型专项作业自卸全挂车 EM_CAR_167, //重型普通半挂车 EM_CAR_168, //重型厢式半挂车 EM_CAR_169, //重型罐式半挂车 EM_CAR_170, //重型平板半挂车 EM_CAR_171, //重型集装箱半挂车 EM_CAR_172, //重型自卸半挂车 EM_CAR_173, //重型特殊结构半挂车 EM_CAR_174, //重型仓栅式半挂车 EM_CAR_175, //重型旅居半挂车 EM_CAR_176, //重型专项作业半挂车 EM_CAR_177, //重型低平板半挂车 EM_CAR_178, //重型车辆运输半挂车 EM_CAR_179, //重型罐式自卸半挂车 EM_CAR_180, //重型平板自卸半挂车 EM_CAR_181, //重型集装箱自卸半挂车 EM_CAR_182, //重型特殊结构自卸半挂车 EM_CAR_183, //重型仓栅式自卸半挂车 EM_CAR_184, //重型专项作业自卸半挂车 EM_CAR_185, //重型低平板自卸半挂车 EM_CAR_186, //重型中置轴旅居挂车 EM_CAR_187, //重型中置轴车辆运输车 EM_CAR_188, //重型中置轴普通挂车 EM_CAR_189, //中型普通半挂车 EM_CAR_190, //中型厢式半挂车 EM_CAR_191, //中型罐式半挂车 EM_CAR_192, //中型平板半挂车 EM_CAR_193, //中型集装箱半挂车 EM_CAR_194, //中型自卸半挂车 EM_CAR_195, //中型特殊结构半挂车 EM_CAR_196, //中型仓栅式半挂车 EM_CAR_197, //中型旅居半挂车 EM_CAR_198, //中型专项作业半挂车 EM_CAR_199, //中型低平板半挂车 EM_CAR_200, //中型车辆运输半挂车 EM_CAR_201, //中型罐式自卸半挂车 EM_CAR_202, //中型平板自卸半挂车 EM_CAR_203, //中型集装箱自卸半挂车 EM_CAR_204, //中型特殊结构自卸挂车 EM_CAR_205, //中型仓栅式自卸半挂车 EM_CAR_206, //中型专项作业自卸半挂车 EM_CAR_207, //中型低平板自卸半挂车 EM_CAR_208, //中型中置轴旅居挂车 EM_CAR_209, //中型中置轴车辆运输车 EM_CAR_210, //中型中置轴普通挂车 EM_CAR_211, //轻型普通半挂车 EM_CAR_212, //轻型厢式半挂车 EM_CAR_213, //轻型罐式半挂车 EM_CAR_214, //轻型平板半挂车 EM_CAR_215, //轻型自卸半挂车 EM_CAR_216, //轻型仓栅式半挂车 EM_CAR_217, //轻型旅居半挂车 EM_CAR_218, //轻型专项作业半挂车 EM_CAR_219, //轻型低平板半挂车 EM_CAR_220, //轻型车辆运输半挂车 EM_CAR_221, //轻型罐式自卸半挂车 EM_CAR_222, //轻型平板自卸半挂车 EM_CAR_223, //轻型集装箱自卸半挂车 EM_CAR_224, //轻型特殊结构自卸挂车 EM_CAR_225, //轻型仓栅式自卸半挂车 EM_CAR_226, //轻型专项作业自卸半挂车 EM_CAR_227, //轻型低平板自卸半挂车 EM_CAR_228, //轻型中置轴旅居挂车 EM_CAR_229, //轻型中置轴车辆运输车 EM_CAR_230, //轻型中置轴普通挂车 } EM_CAR_TYPE; ///@brief 号牌类型 typedef enum tagEM_PLATE_TYPE { EM_PLATE_OTHER, // 其他车 EM_PLATE_BIG_CAR, // 大型汽车 EM_PLATE_SMALL_CAR, // 小型汽车 EM_PLATE_EMBASSY_CAR, // 使馆汽车 EM_PLATE_CONSULATE_CAR, // 领馆汽车 EM_PLATE_ABROAD_CAR, // 境外汽车 EM_PLATE_FOREIGN_CAR, // 外籍汽车 EM_PLATE_LOW_SPEED_CAR, // 低速车 EM_PLATE_COACH_CAR, // 教练车 EM_PLATE_MOTORCYCLE, // 摩托车 EM_PLATE_NEW_POWER_CAR, // 新能源车 EM_PLATE_POLICE_CAR, // 警用车 EM_PLATE_HONGKONG_MACAO_CAR, // 港澳两地车 EM_PLATE_WJPOLICE_CAR, EM_PLATE_OUTERGUARD_CAR, EM_PLATE_TEMPORARY_LICENSE_FOR_NON_MOTOR_VEHICLES, // 非机动车临时牌照 EM_PLATE_OFFICIAL_LICENSE_PLATE_FOR_NON_MOTOR_VEHICLE, // 非机动车牌正式牌照 } EM_PLATE_TYPE; ///@brief 车身颜色 typedef enum tagEM_CAR_COLOR_TYPE { EM_CAR_COLOR_WHITE, // 白色 EM_CAR_COLOR_BLACK, // 黑色 EM_CAR_COLOR_RED, // 红色 EM_CAR_COLOR_YELLOW, // 黄色 EM_CAR_COLOR_GRAY, // 灰色 EM_CAR_COLOR_BLUE, // 蓝色 EM_CAR_COLOR_GREEN, // 绿色 EM_CAR_COLOR_PINK, // 粉色 EM_CAR_COLOR_PURPLE, // 紫色 EM_CAR_COLOR_DARK_PURPLE, // 暗紫色 EM_CAR_COLOR_BROWN, // 棕色 EM_CAR_COLOR_MAROON, // 粟色 EM_CAR_COLOR_SILVER_GRAY, // 银灰色 EM_CAR_COLOR_DARK_GRAY, // 暗灰色 EM_CAR_COLOR_WHITE_SMOKE, // 白烟色 EM_CAR_COLOR_DEEP_ORANGE, // 深橙色 EM_CAR_COLOR_LIGHT_ROSE, // 浅玫瑰色 EM_CAR_COLOR_TOMATO_RED, // 番茄红色 EM_CAR_COLOR_OLIVE, // 橄榄色 EM_CAR_COLOR_GOLDEN, // 金色 EM_CAR_COLOR_DARK_OLIVE, // 暗橄榄色 EM_CAR_COLOR_YELLOW_GREEN, // 黄绿色 EM_CAR_COLOR_GREEN_YELLOW, // 绿黄色 EM_CAR_COLOR_FOREST_GREEN, // 森林绿 EM_CAR_COLOR_OCEAN_BLUE, // 海洋绿 EM_CAR_COLOR_DEEP_SKYBLUE, // 深天蓝 EM_CAR_COLOR_CYAN, // 青色 EM_CAR_COLOR_DEEP_BLUE, // 深蓝色 EM_CAR_COLOR_DEEP_RED, // 深红色 EM_CAR_COLOR_DEEP_GREEN, // 深绿色 EM_CAR_COLOR_DEEP_YELLOW, // 深黄色 EM_CAR_COLOR_DEEP_PINK, // 深粉色 EM_CAR_COLOR_DEEP_PURPLE, // 深紫色 EM_CAR_COLOR_DEEP_BROWN, // 深棕色 EM_CAR_COLOR_DEEP_CYAN, // 深青色 EM_CAR_COLOR_ORANGE, // 橙色 EM_CAR_COLOR_DEEP_GOLDEN, // 深金色 EM_CAR_COLOR_OTHER = 255, // 未识别、其他 } EM_CAR_COLOR_TYPE; ///@brief 使用性质 typedef enum tagEM_USE_PROPERTY_TYPE { EM_USE_PROPERTY_NONOPERATING, // 非营运 EM_USE_PROPERTY_HIGWAY, // 公路客运,旅游客运 EM_USE_PROPERTY_BUS, // 公交客运 EM_USE_PROPERTY_TAXI, // 出租客运 EM_USE_PROPERTY_FREIGHT, // 货运 EM_USE_PROPERTY_LEASE, // 租赁 EM_USE_PROPERTY_SECURITY, // 警用,消防,救护,工程救险 EM_USE_PROPERTY_COACH, // 教练 EM_USE_PROPERTY_SCHOOLBUS, // 幼儿校车,小学生校车,其他校车 EM_USE_PROPERTY_FOR_DANGE_VEHICLE, // 危化品运输 EM_USE_PROPERTY_OTHER, // 其他 EM_USE_PROPERTY_ONLINE_CAR_HAILING, // 网约车 EM_USE_PROPERTY_NON_MOTORIZED_TAKE_OUT_VEHICLE, // 非机动外卖车 EM_USE_PROPERTY_NON_MOTORIZED_EXPRESS_CAR, // 非机动快递车 } EM_USE_PROPERTY_TYPE; ///@brief RFID 电子车牌标签信息 typedef struct tagNET_RFIDELETAG_INFO { BYTE szCardID[MAX_RFIDELETAG_CARDID_LEN]; // 卡号 int nCardType; // 卡号类型, 0:交通管理机关发行卡, 1:新车出厂预装卡 EM_CARD_PROVINCE emCardPrivince; // 卡号省份 char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号码 char szProductionDate[MAX_RFIDELETAG_DATE_LEN]; // 出厂日期 EM_CAR_TYPE emCarType; // 车辆类型 int nPower; // 功率,单位:千瓦时,功率值范围0~254;255表示该车功率大于可存储的最大功率值 int nDisplacement; // 排量,单位:百毫升,排量值范围0~254;255表示该车排量大于可存储的最大排量值 int nAntennaID; // 天线ID,取值范围:1~4 EM_PLATE_TYPE emPlateType; // 号牌种类 char szInspectionValidity[MAX_RFIDELETAG_DATE_LEN]; // 检验有效期,年-月 int nInspectionFlag; // 逾期未年检标志, 0:已年检, 1:逾期未年检 int nMandatoryRetirement; // 强制报废期,从检验有效期开始,距离强制报废期的年数 EM_CAR_COLOR_TYPE emCarColor; // 车身颜色 int nApprovedCapacity; // 核定载客量,该值<0时:无效;此值表示核定载客,单位为人 int nApprovedTotalQuality; // 此值表示总质量,单位为百千克;该值<0时:无效;该值的有效范围为0~0x3FF,0x3FF(1023)表示数据值超过了可存储的最大值 NET_TIME_EX stuThroughTime; // 过车时间 EM_USE_PROPERTY_TYPE emUseProperty; // 使用性质 char szPlateCode[MAX_COMMON_STRING_8]; // 发牌代号,UTF-8编码 char szPlateSN[MAX_COMMON_STRING_16]; // 号牌号码序号,UTF-8编码 char szTID[MAX_COMMON_STRING_64]; // 标签(唯一标识), UTF-8编码 BYTE bReserved[40]; // 保留字节,留待扩展. } NET_RFIDELETAG_INFO; ///@brief 电子车牌记录信息 typedef struct tagNET_RECORD_ELECTRONICSTAG_INFO { DWORD dwSize; int nRecNo; // 记录集编号,只读 BOOL bMatch; // 是否已匹配图片 UINT unDevID; // 读写器序号,从0开始 NET_RFIDELETAG_INFO stuEleTagInfo; // 电子车牌标签信息 } NET_RECORD_ELECTRONICSTAG_INFO; ///@brief GPS位置记录集信息 typedef struct tagNET_RECORD_GPS_LOCATION_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录集编号,只读 double dLongitude; // GPS坐标经度值, 单位度 double dLatitude; // GPS坐标纬度值, 单位度 char szPlaceName[128]; // GPS坐标对应的地名 char szRadius[16]; // 半径 } NET_RECORD_GPS_LOCATION_INFO; ///@brief 公租房租户记录集信息 typedef struct tagNET_RECORD_RESIDENT_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录集编号,只读 char szResidentName[DH_MAX_USERID_LEN]; // 用户姓名 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 NET_TIME stuStartTime; // 有效期开始时间 NET_TIME stuEndTime; // 有效期截止时间 char szICNum[DH_MAX_IC_LEN]; // 证件 }NET_RECORD_RESIDENT_INFO; ///@brief 监测量数据记录信息 typedef struct tagNET_RECORD_SENSOR_RECORD { DWORD dwSize; // 结构体大小 UINT uRecNo; // 记录集编号,只读 NET_TIME stuTime; // 采集时间, 字段为"time" UINT uDeviceID; // 采集设备ID号, 高8位表示仪表类型,低24位表示仪表组内序号。仪表类型如下:0-电力; 1-模拟传感器。 BYTE byStatus; // 数据状态, 0:正常,1:异常 BYTE byExceptionCode; // 异常数据状态掩码,与具体仪表关联。Status =1时有效。 // 当设备类型为电力时,掩码为:Bit0-欠压,Bit1-过压,Bit2-欠流,Bit3-过流,Bit4-状态无效,此状态不与其他同时置位 BYTE bySwitchOn; // 开、关,0:关,1:开 BYTE byReserved; // 保留字节 int nPowerVoltage; // 电压,单位:mV int nPowerCurrent; // 电流,单位:mA int nPowerValue; // 功率,单位:mW BYTE byReservedSpace[4]; // 保留字节 double dActualValue; // 模拟量使用。计量值,与具体模拟量仪表关联 char szName[128]; // 仪表名称 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 EM_SENSE_METHOD_UNIT emUnit; // 单位, 具体单位和emSenseMethod变量有关 } NET_RECORD_SENSOR_RECORD; ///@brief 开门二维码记录集信息 typedef struct tagNET_RECORD_ACCESSQRCODE_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录集编号,只读 char szQRCode[DH_MAX_QRCODE_LEN]; // 二维码 UINT nLeftTimes; // 剩余的有效次数 NET_TIME stuStartTime; // 有效期开始时间 NET_TIME stuEndTime; // 有效期截止时间 char szRoomNumber[16]; // 房间号 char szUserID[32]; // 用户ID }NET_RECORD_ACCESSQRCODE_INFO; ///@brief 蓝牙开门记录集信息 typedef struct tagNET_RECORD_ACCESS_BLUETOOTH_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录集编号,只读 char szUserName[DH_COMMON_STRING_128]; // 用户名 char szPassword[DH_COMMON_STRING_128]; // 密码 char szMac[DH_COMMON_STRING_32]; // mac地址 char szNote[DH_COMMON_STRING_128]; // 用户备注信息 }NET_RECORD_ACCESS_BLUETOOTH_INFO; ///@brief 蓝牙开门记录集信息查询条件 typedef struct tagFIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION { DWORD dwSize; char szUserName[DH_COMMON_STRING_128]; // 用户名 } FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION; ///@brief 报警类型 typedef enum tagEM_RECORD_ACCESS_ALARM_TYPE { EM_RECORD_ACCESS_ALARM_TYPE_UNKNOWN, // 未知 EM_RECORD_ACCESS_ALARM_TYPE_DOOR_NOTCLOSE, // 门未关 EM_RECORD_ACCESS_ALARM_TYPE_BREAK_IN, // 闯入 EM_RECORD_ACCESS_ALARM_TYPE_REPEAT_ENTER, // 反潜 EM_RECORD_ACCESS_ALARM_TYPE_DURESS, // 胁迫 EM_RECORD_ACCESS_ALARM_TYPE_ALARMLOCAL, // 本地 EM_RECORD_ACCESS_ALARM_TYPE_CHASSIS_INTRUDED, // 防拆 EM_RECORD_ACCESS_ALARM_TYPE_MALICIOUS, // 恶意开门 EM_RECORD_ACCESS_ALARM_TYPE_BLACKLIST, // 禁止名单 }EM_RECORD_ACCESS_ALARM_TYPE; ///@brief 门禁记录集开门方式 typedef enum tagEM_RECORD_ACCESS_ALARM_OPEN_METHOD { EM_RECORD_ACCESS_ALARM_OPEN_METHOD_UNKNOWN, // 未知 EM_RECORD_ACCESS_ALARM_OPEN_METHOD_PWD, // 密码方式 EM_RECORD_ACCESS_ALARM_OPEN_METHOD_FINGERPRINT, // 信息方式 EM_RECORD_ACCESS_ALARM_OPEN_METHOD_CARD, // 卡方式 }EM_RECORD_ACCESS_ALARM_OPEN_METHOD; ///@brief 门禁报警记录集信息 typedef struct tagNET_RECORD_ACCESS_ALARMRECORD_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录集编号,只读 char szUserID[DH_COMMON_STRING_128]; // 用户ID EM_RECORD_ACCESS_ALARM_TYPE emAlarmType; // 报警类型 int nDevAddress; // 分控器ID,0 表示集中控制器或者直连设备本身 大于0 表示分控制器 int nChannel; // 通道号 EM_RECORD_ACCESS_ALARM_OPEN_METHOD emAlarmOpenMethod; // 开门方式,当EventCode为 MaliciousAccessControl恶意开门事件时有效. NET_TIME stuTime; // 事件发生的时间 char szReaderID[32]; // 门读卡器ID NET_TIME_EX stuCreateTimeRealUTC; // 事件发生的时间,真实UTC时间 }NET_RECORD_ACCESS_ALARMRECORD_INFO; ///@brief 门禁报警记录集 typedef struct tagFIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION { DWORD dwSize; char szUserID[DH_COMMON_STRING_128]; // 用户ID NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 NET_TIME stuCreateTimeRealUTC[2]; // 事件发生的时间范围,真实UTC时间 }FIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION; ///@brief 门禁状态 typedef enum tagEM_DOOR_STATUS { EM_DOOR_STATUS_UNKNOWN, // 未知 EM_DOOR_STATUS_OPEN, // 开门 EM_DOOR_STATUS_CLOSE, // 关门 EM_DOOR_STATUS_CLOSE_ALWAYS, // 常闭 EM_DOOR_STATUS_OPEN_ALWAYS, // 常开 } EM_DOOR_STATUS; ///@brief 开关门事件记录信息 typedef struct tagNET_RECORD_ACCESS_DOORSTATUS_INFO { DWORD dwSize; // 结构体大小 UINT nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 EM_DOOR_STATUS emDoorStatus; // 开关门状态 char szURL[256]; // 抓拍图片,门开关状态抓拍照片 UINT nDoorIndex; // 门序号 }NET_RECORD_ACCESS_DOORSTATUS_INFO; ///@brief 开关门事件记录信息查询条件 typedef struct tagFIND_RECORD_ACCESS_DOORSTATUS_INFO_CONDITION { DWORD dwSize; // 结构体大小 EM_DOOR_STATUS emDoorStatus; // 门状态, unknown 表示查询所有状态 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 }FIND_RECORD_ACCESS_DOORSTATUS_INFO_CONDITION; ///@brief 楼宇公共开门密码记录信息 typedef struct tagNET_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO { DWORD dwSize; // 结构体大小 UINT nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 char szUserID[256]; // 用户ID char szCommonPassword[128]; // 公共开门密码 char szVTONo[16]; // 门口机号码 UINT nDoors; // nDoorsAuth 个数 UINT nDoorsAuth[128]; // 门权限,值对应到AccessControl的下标 NET_TIME stuValidFrom; // 开始有效期 NET_TIME stuValidTo; // 截止有效期 UINT nUseTimes; // 通行次数上限。为0代表没有限制 UINT nLeftTimes; // 剩余通行次数 }NET_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO; ///@brief 楼宇公共开门密码记录查询条件 typedef struct tagFIND_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO_CONDITION { DWORD dwSize; // 结构体大小 char szVTONo[16]; // 门口机号码 char szUserID[256]; // 用户ID }FIND_RECORD_ACCESS_CTL_COMMONPASSWORD_INFO_CONDITION; ///@brief 消费结果 typedef enum tagEM_CONSUMPTION_STATUS { EM_CONSUMPTION_STATUS_UNKNOWN = -1, // 未知 EM_CONSUMPTION_STATUS_FAIL, // 失败 EM_CONSUMPTION_STATUS_SUCC, // 成功 } EM_CONSUMPTION_STATUS; ///@brief 消费记录类型 typedef enum tagEM_CONSUMPTION_RECORD_TYPE { EM_CONSUMPTION_RECORD_TYPE_UNKNOWN = -1, // 未知 EM_CONSUMPTION_RECORD_TYPE_QUOTA, // 定额消费记录 EM_CONSUMPTION_RECORD_TYPE_NONQUOTA, // 非定额消费记录 EM_CONSUMPTION_RECORD_TYPE_DEPOSIT, // 充值记录 } EM_CONSUMPTION_RECORD_TYPE; ///@brief 消费记录信息 typedef struct tagNET_RECORD_ACCESS_CTL_CONSUMPTION_INFO { DWORD dwSize; // 结构体大小 UINT nRecNo; // 记录集编号,只读 UINT nBlockId; // 上报事件数据序列号从1开始自增 NET_TIME stuCreateTime; // 刷卡时间 char szCardNo[16]; // 卡号 char szCardName[128]; // 卡命名 NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 char szUserID[12]; // 用户ID NET_ENUM_DIRECTION_ACCESS_CTL emType; // 事件类型 EM_CONSUMPTION_STATUS emStatus; // 消费结果 NET_ACCESS_DOOROPEN_METHOD emMethod; // 开门方式 UINT nDoor; // 门号 char szReaderID[32]; // 读卡器ID UINT nErrorCode; // 消费失败的原因,配合 emStatus 使用 // 0x00 没有错误 // 0x10 未授权 // 0x11 卡挂失或注销 // 0x12 没有该门权限 // 0x13 开门模式错误 // 0x14 有效期错误 // 0x15 防反潜模式 // 0x16 胁迫报警未打开 // 0x17 门常闭状态 // 0x18 AB互锁状态 // 0x19 巡逻卡 // 0x1A 设备处于闯入报警状态 // 0x20 时间段错误 // 0x21 假期内开门时间段错误 // 0x30 需要先验证有首卡权限的卡片 // 0x40 卡片正确,输入密码错误 // 0x41 卡片正确,输入密码超时 // 0x42 卡片正确,输入信息错误 // 0x43 卡片正确,输入信息超时 // 0x44 信息正确,输入密码错误 // 0x45 信息正确,输入密码超时 // 0x50 组合开门顺序错误 // 0x51 组合开门需要继续验证 // 0x60 验证通过,控制台未授权 // 0x61 卡片正确,目标错误 // 0x62 卡片正确,目标超时 // 0x63 重复进入 // 0x64 未授权,需要后端平台识别 // 0x65 体温过高 // 0x66 未戴口罩 // 0x67 健康码获取失败 // 0x68 黄码禁止通行 // 0x69 红码禁止通行 // 0x6a 健康码无效 // 0x6b 绿码验证通过 // 0x70 获取健康码信息 // 0x71 校验证件信息(平台下发对应证件号的校验结果) UINT nSimilarity; // 目标识别相似度,开门方式为目标开门时有效 char szSnapFaceURL[128]; // 目标抠图保存的本地路径 EM_CONSUMPTION_RECORD_TYPE emRecordType; // 记录类型 UINT nConsumptionAmount; // 消费金额。单位(分)101 = 1.01 元 UINT nRechargeAmount; // 充值金额。单位(分)101 = 1.01 元 char szTransactionSerialNumber[128]; // 交易流水号 }NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO; ///@brief 消费记录查询条件 typedef struct tagFIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION { DWORD dwSize; // 结构体大小 BOOL bUserIDEnable; // 启用用户查询 char szUserID[256]; // 用户ID BOOL bCardNoEnable; // 启用卡号查询 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 }FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION; ///@brief VTO推送信息到达平台类型 typedef enum tagEM_VTO_PUSH_TO_SERVER_TYPE { EM_VTO_PUSH_TO_SERVER_TYPE_UNKNOWN, // 未知 EM_VTO_PUSH_TO_SERVER_TYPE_IOS, // IOS EM_VTO_PUSH_TO_SERVER_TYPE_ANDROID, // Android EM_VTO_PUSH_TO_SERVER_TYPE_DAHUA_CLOUD, // 云 }EM_VTO_PUSH_TO_SERVER_TYPE; ///@brief VTO设备推送结果相关信息 typedef enum tagEM_VTO_PUSH_RESULT_TYPE { EM_VTO_PUSH_RESULT_TYPE_UNKNOWN, // 未知 EM_VTO_PUSH_RESULT_TYPE_SUCCESS, // 推送成功 EM_VTO_PUSH_RESULT_TYPE_TCP_CONNECT_ERROR, // 与服务器TCP连接失败, 可能网络较差 EM_VTO_PUSH_RESULT_TYPE_SSL_WRITE_TIME_OUT_ERROR, // 向推送服务器Ssl写数据超时 EM_VTO_PUSH_RESULT_TYPE_SSL_ERROR, // 与推送服务器Ssl连接失败 EM_VTO_PUSH_RESULT_TYPE_SSL_READ_TIME_OUT_ERROR, // 读推送服务器SSL数据超时 EM_VTO_PUSH_RESULT_TYPE_SSL_SEND_ERROR, // 设备SSL发送数据失败 EM_VTO_PUSH_RESULT_TYPE_DNS_ERROR, // 设备DNS解析失败 EM_VTO_PUSH_RESULT_TYPE_MSG_TIME_OUT, // 网络异常导致消息超时 EM_VTO_PUSH_RESULT_TYPE_CERT_ERROR, // 设备保存的证书有误 EM_VTO_PUSH_RESULT_TYPE_SSL_RECV_ERROR, // 设备SSL接收失败 EM_VTO_PUSH_RESULT_TYPE_TOO_LONG_ERROR, // 推送的消息过长 EM_VTO_PUSH_RESULT_TYPE_FCM_INVALID_REGISTRATION_ERROR, // 在FCM上为非法的注册ID EM_VTO_PUSH_RESULT_TYPE_FCM_NOT_REGISTERED_ERROR, // 未在FCM上进行注册 EM_VTO_PUSH_RESULT_TYPE_FCM_MSG_RATE_EXCEEDED_ERROR, // 推送FCM上的消息频率过高 EM_VTO_PUSH_RESULT_TYPE_FCM_AUTH_ERROR, // FCM鉴权失败 EM_VTO_PUSH_RESULT_TYPE_FCM_JSON_ERROR, // FCM Json 格式错误 EM_VTO_PUSH_RESULT_TYPE_FCM_UNAVAILABLE_ERROR, // FCM 资源错误 EM_VTO_PUSH_RESULT_TYPE_FCM_OTHER_ERROR, // FCM其它错误 EM_VTO_PUSH_RESULT_TYPE_NORMAL_FULL_ERROR, // 普通事件队列满错误 EM_VTO_PUSH_RESULT_TYPE_HIGH_FULL_ERROR, // 高优先级队列满错误 EM_VTO_PUSH_RESULT_TYPE_DNS_CHECK_ERROR, // 目前暂无可用推送服务器IP EM_VTO_PUSH_RESULT_TYPE_ATTTACH_ERROR, // 内部attach错误 EM_VTO_PUSH_RESULT_TYPE_TIME_NOT_IN_SCHEDULE, // 时间不在推送时间表内 EM_VTO_PUSH_RESULT_TYPE_EVENT_CUSTOM_FILERED, // 事件自定义条件过滤 EM_VTO_PUSH_RESULT_TYPE_OTHER_ERROR, // 其他内部错误 }EM_VTO_PUSH_RESULT_TYPE; ///@brief VTO设备推送信息记录(NET_RECORD_ACCESS_MOBILE_PUSH_RESULT) typedef struct tagNET_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO { DWORD dwSize; // 结构体大小 UINT nRecNo; // 记录编号 UINT nCreateTime; // 事件产生的时间(UTC时间) EM_VTO_PUSH_TO_SERVER_TYPE emPushToServerType; // 平台类型 char szEventName[30]; // 事件名称 char byReserved[2]; // 字节对齐 EM_VTO_PUSH_RESULT_TYPE emPushResult; // 推送结果 int nChannel; // APP订阅通道 char szAppRegisterID[256]; // App注册ID char szAppID[256]; // AppID char szDevName[64]; // 设备名称(手机端设置显示) }NET_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO; ///@brief 查询VTO推送记录信息类型 typedef enum tagEM_FIND_VTO_PUSH_RESULT_TYPE { EM_FIND_VTO_PUSH_RESULT_TYPE_UNKNOWN, // 未知 EM_FIND_VTO_PUSH_RESULT_TYPE_ALL, // 全部 EM_FIND_VTO_PUSH_RESULT_TYPE_SUCCESS, // 成功 EM_FIND_VTO_PUSH_RESULT_TYPE_FAILD, // 失败 }EM_FIND_VTO_PUSH_RESULT_TYPE; ///@brief VTO设备推送记录信息查询条件(NET_RECORD_ACCESS_MOBILE_PUSH_RESULT) typedef struct tagFIND_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO_CONDITION { DWORD dwSize; // 结构体大小 BOOL bValidChannel; // 按通道查询条件是否有效,TRUE:指定通道查询,FALSE:查询所有通道 int nChannel; // App订阅通道 BOOL bValidTime; // 按时间查询条件是否有效,TRUE:指定时间段查询,FALSE:查询所有时间 UINT nStartTime; // 起始时间(UTC时间) UINT nStopTime; // 结束时间(UTC时间) EM_FIND_VTO_PUSH_RESULT_TYPE emFindPushResultType; // 记录类型 }FIND_RECORD_ACCESS_MOBILE_PUSH_RESULT_INFO_CONDITION; ///@brief 呼叫类型 typedef enum tagEM_VIDEO_TALK_LOG_CALLTYPE { EM_VIDEO_TALK_LOG_CALLTYPE_UNKNOWN = 0, // 未知 EM_VIDEO_TALK_LOG_CALLTYPE_INCOMING, // 呼入 EM_VIDEO_TALK_LOG_CALLTYPE_OUTGOING, // 呼出 EM_VIDEO_TALK_LOG_CALLTYPE_MAX, // }EM_VIDEO_TALK_LOG_CALLTYPE; ///@brief 最终状态 typedef enum tagEM_VIDEO_TALK_LOG_ENDSTATE { EM_VIDEO_TALK_LOG_ENDSTATE_UNKNOWN = 0, // 未知 EM_VIDEO_TALK_LOG_ENDSTATE_MISSED, // 未接 EM_VIDEO_TALK_LOG_ENDSTATE_RECEIVED, // 已接 EM_VIDEO_TALK_LOG_ENDSTATE_MAX, // }EM_VIDEO_TALK_LOG_ENDSTATE; ///@brief 对方类型 typedef enum tagEM_VIDEO_TALK_LOG_PEERTYPE { EM_VIDEO_TALK_LOG_PEERTYPE_UNKNOWN = 0, // 未知 EM_VIDEO_TALK_LOG_PEERTYPE_VTO, // 门口机 EM_VIDEO_TALK_LOG_PEERTYPE_VTH, // 室内机 EM_VIDEO_TALK_LOG_PEERTYPE_VTS, // 管理中心 }EM_VIDEO_TALK_LOG_PEERTYPE; ///@brief 记录是否已经浏览 typedef enum tagNET_RECORD_READFLAG { NET_RECORD_READFLAG_UNREADED = 0, //未读 NET_RECORD_READFLAG_READED, //已读 NET_RECORD_READFLAG_UNKNOWN, //未知 }NET_RECORD_READFLAG; ///@brief 平台呼出类型 typedef enum tagNET_EM_OFFLINE_CALL_TYPE { NET_EM_OFFLINE_CALL_UNKNOWN = -1, // 未知 NET_EM_OFFLINE_CALL_ONLINECALL, // 在线呼出 NET_EM_OFFLINE_CALL_OFFLINECALL, // 断线呼出 NET_EM_OFFLINE_CALL_NONE = 255, // 其他 }NET_EM_OFFLINE_CALL_TYPE; ///@brief 通话记录记录集信息 typedef struct tagNET_RECORD_VIDEO_TALK_LOG { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 开始时间 EM_VIDEO_TALK_LOG_CALLTYPE emCallType; // 呼叫类型 EM_VIDEO_TALK_LOG_ENDSTATE emEndState; // 最终状态 char szPeerNumber[DH_COMMON_STRING_64]; // 对方号码 可以是短号,中号或长号 EM_VIDEO_TALK_LOG_PEERTYPE emPeerType; // 对方类型 char szLocalNumber[DH_COMMON_STRING_64]; // 本机号码 可以是短号,中号或长号 int nTalkTime; // 通话时间 单位秒 int nMessageTime; // 留言时间 单位秒 char szPicturePath[DH_COMMON_STRING_128];// 照片路径 NET_EM_OFFLINE_CALL_TYPE emOfflineCall; // 平台断线是否呼出 NET_TIME_EX stuCreateTimeRealUTC; // 真实UTC开始时间 }NET_RECORD_VIDEO_TALK_LOG; ///@brief 语音对讲状态 typedef enum tagEM_REGISTER_USER_STATE { EM_REGISTER_USER_STATE_UNKNOWN = 0, // 未知 EM_REGISTER_USER_STATE_IDLE, // 初始状态 EM_REGISTER_USER_STATE_CALLING, // 呼叫状态(对方未回应) EM_REGISTER_USER_STATE_RINGING, // 回铃状态(对方回应,但没有接听) EM_REGISTER_USER_STATE_PREVIEWING, // 正在预览 EM_REGISTER_USER_STATE_LEAVINGMESSAGE, // 正在留言 EM_REGISTER_USER_STATE_TALKING, // 通话中 EM_REGISTER_USER_STATE_MAX, // }EM_REGISTER_USER_STATE; ///@brief 设备类型 typedef enum tagEM_REGISTER_USER_STATE_DEV_TYPE { EM_REGISTER_USER_STATE_DEV_TYPE_UNKNOWN = 0, // 未知 EM_REGISTER_USER_STATE_DEV_TYPE_DIGIT_VTH, // 数字VTH EM_REGISTER_USER_STATE_DEV_TYPE_ANALOG_VTH, // 模拟VTH EM_REGISTER_USER_STATE_DEV_TYPE_DIGIT_VTO, // 数字VTO EM_REGISTER_USER_STATE_DEV_TYPE_ANALOG_VTO, // 模拟VTO EM_REGISTER_USER_STATE_DEV_TYPE_MAX, // }EM_REGISTER_USER_STATE_DEV_TYPE; ///@brief 是否支持锁 typedef enum tagEM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE { EM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE_UNKNOWN = 0, // 未知 EM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE_SUPPORTLOCK, // 支持 EM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE_NOT_SUPPORTLOCK, // 不支持 }EM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE; ///@brief 预览状态 typedef enum tagNET_MONITORSTATE_TYPE { NET_MONITORSTATE_TYPE_UNMONITORED = 0, // 0 未预览(初始状态) NET_MONITORSTATE_TYPE_MONITORREQUEST, // 1 收到预览请求 NET_MONITORSTATE_TYPE_MONITORED, // 2 被预览状态 NET_MONITORSTATE_TYPE_UNKNOWN, // 未知状态 }NET_MONITORSTATE_TYPE; ///@brief 状态记录记录集信息 typedef struct tagNET_RECORD_REGISTER_USER_STATE { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 char szUserID[DH_MAX_USERID_LEN]; // 用户ID BOOL bOnline; // 是否在线 char szAddress[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 网络地址 int nPort; // 端口号 EM_REGISTER_USER_STATE emVideoTalkState; // 语音对讲状态 NET_TIME stuOnlineTime; // 上线时间 NET_TIME stuOfflineTime; // 下线时间 EM_REGISTER_USER_STATE_DEV_TYPE emDevType; // 设备类型 EM_REGISTER_USER_STATE_SUPPORTLOCK_TYPE emSupportLock; // 是否支持锁 NET_MONITORSTATE_TYPE emMonitorState; // 预览状态 }NET_RECORD_REGISTER_USER_STATE; ///@brief 可视对讲模拟室内机接入时的模式 typedef enum tagEM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE { EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE_UNKNOWN, // 未知 EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE_SLAVEADDRESS, // 通过SlaveAddress EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE_SLAVEID_SLAVEPORT, // 通过SlaveID+SlavePort }EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE; ///@brief 用户类型 typedef enum tagEM_VIDEO_TALK_CONTACT_TYPE { EM_VIDEO_TALK_CONTACT_TYPE_UNKNOWN, // 未知 EM_VIDEO_TALK_CONTACT_TYPE_VTH, // "VTH" 室内机 EM_VIDEO_TALK_CONTACT_TYPE_VTO, // "VTO" 门口机 }EM_VIDEO_TALK_CONTACT_TYPE; ///@brief 注册方式 typedef enum tagEM_VIDEO_TALK_CONTACT_REGISTER_TYPE { EM_VIDEO_TALK_CONTACT_REGISTER_TYPE_UNKNOWN, // 未知 EM_VIDEO_TALK_CONTACT_REGISTER_TYPE_PUBLIC, // "public" EM_VIDEO_TALK_CONTACT_REGISTER_TYPE_LOCAL, // "local" }EM_VIDEO_TALK_CONTACT_REGISTER_TYPE; ///@brief 联系人记录记录集信息 typedef struct tagNET_RECORD_VIDEO_TALK_CONTACT { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 char szFirstName[DH_COMMON_STRING_32]; // 名字 char szFamilyName[DH_COMMON_STRING_32]; // 姓 char szVTShortNumber[DH_COMMON_STRING_16]; // 可视对讲短号 char szVTMiddleNumber[DH_COMMON_STRING_32]; // 可视对讲中号 char szVTLongNumber[DH_COMMON_STRING_64]; // 可视对讲长号,或VTH模拟室内机的序列号 char szVTNetAddress[DH_MAX_IPADDR_LEN_EX]; // 可视对讲网络地址 char szVTOPosition[DH_COMMON_STRING_64]; // 室内机关联的门口机位置 EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE emVTSlaveBindMode; // 可视对讲模拟室内机接入时的模式 char szVTSlaveId[DH_COMMON_STRING_32]; // 该字段已废弃,使用 nVTSlaveId char szVTSlavePort[DH_COMMON_STRING_32]; // 该字段已废弃,使用 nVTSlavePort char szVTSlaveAddress[DH_COMMON_STRING_64]; // 可视对讲模拟室内机的地址 char szNickname[DH_COMMON_STRING_64]; // 昵称 char szNotes[DH_COMMON_STRING_64]; // 备注 EM_VIDEO_TALK_CONTACT_TYPE emType; // 用户类型 EM_VIDEO_TALK_CONTACT_REGISTER_TYPE emRegisterType; // 注册方式 char szVTHPassword[DH_COMMON_STRING_64]; // 注册密码 char szVTOBuilding[DH_COMMON_STRING_64]; // 所属幢号 char szVTOUnit[DH_COMMON_STRING_64]; // 所属单元号 char szGroupNumber[DH_COMMON_STRING_64]; // 所属群组 int nVTSlaveId; // 可视对讲模拟室内机接入时的分配器地址 int nVTSlavePort; // 可视对讲模拟室内机接入时的分配器端口 }NET_RECORD_VIDEO_TALK_CONTACT; ///@brief 性别 typedef enum tagEM_SEX_TYPE { EM_SEX_TYPE_UNKNOWN, //未知 EM_SEX_TYPE_MALE, //男性 EM_SEX_TYPE_FEMALE, //女性 }EM_SEX_TYPE; ///@brief 人员类型 typedef enum tagEM_HOSPITAL_USER_TYPE { EM_HOSPITAL_USER_TYPE_UNKNOWN, // 未知 EM_HOSPITAL_USER_TYPE_PATIENT, // 病人 EM_HOSPITAL_USER_TYPE_ATTENDING_PHYSICIAN, // 主治医师 EM_HOSPITAL_USER_TYPE_RESPONSIBLE_NURSE, // 责任护士 }EM_HOSPITAL_USER_TYPE; ///@brief 护理等级 typedef enum tagEM_HOSPITAL_CARE_LEVEL { EM_HOSPITAL_CARE_LEVEL_UNKNOWN, // 未知 EM_HOSPITAL_CARE_LEVEL_PREMIUM, // 特级护理 EM_HOSPITAL_CARE_LEVEL_ONE, // 一级护理 EM_HOSPITAL_CARE_LEVEL_TWO, // 二级护理 EM_HOSPITAL_CARE_LEVEL_THREE, // 三级护理 }EM_HOSPITAL_CARE_LEVEL; ///@brief 联系人记录记录集信息 typedef struct tagNET_RECORD_HOSPITAL_USER_INFO { DWORD dwSize; int nRecNo; // 记录编号 char szID[32]; // 人员编号 int nDoctorCount; // 护理病人的医生ID个数 char szDoctorID[5][32]; // 护理病人的医生ID列表 char szCitizenID[64]; // 人员证件号 char szName[64]; // 人员姓名 EM_SEX_TYPE emSex; // 性别 UINT nAge; // 年龄 EM_HOSPITAL_USER_TYPE emType; // 人员类型 char szRoomNumber[16]; // 病房号 char szBedNumber[8]; // 床位号 EM_HOSPITAL_CARE_LEVEL emLevel; // 护理等级 NET_TIME_EX stuInUTC; // 入院时间 NET_TIME_EX stuOutUTC; // 出院时间 char szAdviceInfo[4096]; // 医嘱信息 char szExpenseInfo[4096]; // 费用信息 char szSurgeryInfo[4096]; // 手术信息 char szDeviceCode[64]; // 人员对应床位的设备编码 char szIntro[4096]; // 人员信息介绍 int nCareLabelsNum; // 护理标签个数 char szCareLabels[50][64]; // 护理标签 }NET_RECORD_HOSPITAL_USER_INFO; ///@brief 医护设备类型 typedef enum tagEM_HOSPITAL_DEVICE_TYPE { EM_HOSPITAL_DEVICE_TYPE_UNKNOWN, // 未知 EM_HOSPITAL_DEVICE_TYPE_MEDICAL_HOST, // 医护主机 EM_HOSPITAL_DEVICE_TYPE_MEDICAL_EXTENSION, // 医护分机 EM_HOSPITAL_DEVICE_TYPE_WARD_DOOR_MACHINE, // 病房门口机 EM_HOSPITAL_DEVICE_TYPE_WARD_EXTENSION, // 病房分机 EM_HOSPITAL_DEVICE_TYPE_AREA_DOOR_MACHINE, // 病区门口机 }EM_HOSPITAL_DEVICE_TYPE; ///@brief 医院设备信息表 typedef struct tagNET_RECORD_HOSPITAL_DEVICE_INFO { DWORD dwSize; // 结构体大小 int nRecNo; // 记录编号 char szDeviceCode[64]; // 设备编号 char szDeviceName[128]; // 设备名称 char szCallNumber[32]; // 设备的呼叫号码 char szRoomNumber[16]; // 病房号 char szBedNumber[8]; // 病床号 EM_HOSPITAL_DEVICE_TYPE emDeviceType; // 医护设备类型 char szAddress[24]; // 设备的IP地址 char szUserName[33]; // 用户名 char szReserved1[3]; // 字节对齐 char szPassword[33]; // 密码 char szReserved2[3]; // 字节对齐 int nHostCodeCount; // 医护主机设备个数 char szHostCode[10][64]; // 医护主机设备编码, 用来表示当前设备是哪台医护主机下的设备 int nOnlineStatus; // 针对病房主机展示病房分机的状态,0代表无效非法值, 1代表病房分机在线,2代表病房分机离线 }NET_RECORD_HOSPITAL_DEVICE_INFO; ///@brief 公告的状态 typedef enum tagNET_ANNOUNCE_STATE { NET_ANNOUNCE_STATE_UNSENDED = 0, //初始状态(未发送) NET_ANNOUNCE_STATE_SENDED, //已经发送 NET_ANNOUNCE_STATE_EXPIRED, //已经过期 NET_ANNOUNCE_STATE_UNKNOWN, //未知 }NET_ANNOUNCE_STATE; ///@brief 公告是否已经浏览 typedef enum tagNET_ANNOUNCE_READFLAG { NET_ANNOUNCE_READFLAG_UNREADED = 0, //未读 NET_ANNOUNCE_READFLAG_READED, //已读 NET_ANNOUNCE_READFLAG_UNKNOWN, //未知 }NET_ANNOUNCE_READFLAG; ///@brief 公告记录信息 typedef struct tagNET_RECORD_ANNOUNCEMENT_INFO { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 创建时间 NET_TIME stuIssueTime; // 公告发布时间 char szAnnounceTitle[DH_COMMON_STRING_64]; // 公告标题 char szAnnounceContent[DH_COMMON_STRING_256]; //公告内容 char szAnnounceDoor[DH_COMMON_STRING_16]; //公告要发送的房间号 NET_TIME stuExpireTime; //公告过期的时间 NET_ANNOUNCE_STATE emAnnounceState; //公告的状态 NET_ANNOUNCE_READFLAG emAnnounceReadFlag; //公告是否已经浏览 UINT nBackgroundPicture; // 门禁公告可以选择背景图片(具体图片由色设备绑定): 0 : 图片1 , 1:图片2 , 2 : 图片3 BOOL bUseEx; // 是否使用szAnnounceTitleEx/szAnnounceContentEx字段 char szAnnounceTitleEx[256]; // 公告标题 char szAnnounceContentEx[1024]; // 公告内容 NET_TIME_EX stuCreateTimeRealUTC; // 真UTC创建时间 NET_TIME stuIssueTimeRealUTC; // 真UTC公告发布时间 NET_TIME stuExpirTimeRealUTC; // 真UTC公告过期的时间 }NET_RECORD_ANNOUNCEMENT_INFO; ///@brief 公告记录信息查询条件 typedef struct tagFIND_RECORD_ANNOUNCEMENT_CONDITION { DWORD dwSize; BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 }FIND_RECORD_ANNOUNCEMENT_CONDITION; ///@brief 报警记录信息 typedef struct tagNET_RECORD_ALARMRECORD_INFO { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuCreateTime; // 报警时间,UTC秒数,只读 int nChannelID; // 报警通道号 NET_SENSE_METHOD emSenseMethod; // 传感器感应方式 char szRoomNumber[DH_MAX_DOOR_NUM]; // 报警房间号 NET_ANNOUNCE_READFLAG emReadFlag; // 0未读,1已读 char szNotes[128]; // 备注 }NET_RECORD_ALARMRECORD_INFO; ///@brief 报警记录信息查询条件 typedef struct tagFIND_RECORD_ALARMRECORD_CONDITION { DWORD dwSize; BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 }FIND_RECORD_ALARMRECORD_CONDITION; ///@brief 门禁未关事件详细信息 typedef struct tagALARM_ACCESS_CTL_NOT_CLOSE_INFO { DWORD dwSize; int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 NET_TIME stuTime; // 报警事件发生的时间 int nAction; // 0:开始 1:停止 UINT nEventID; //事件ID BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) }ALARM_ACCESS_CTL_NOT_CLOSE_INFO; ///@brief 闯入方式 typedef enum tagEM_BREAK_IN_METHOD { EM_BREAK_IN_METHOD_UNKNOWN, // 未知 EM_BREAK_IN_METHOD_ILLEGAL, // 非法闯入:未授权的时候闯入 EM_BREAK_IN_METHOD_REVERSE, // 反向闯入:授权门开后,对面有人进入 } EM_BREAK_IN_METHOD; ///@brief 闯入事件详细信息 typedef struct tagALARM_ACCESS_CTL_BREAK_IN_INFO { DWORD dwSize; int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 NET_TIME stuTime; // 报警事件发生的时间 UINT nEventID; // 事件ID EM_BREAK_IN_METHOD emMethod; // 闯入方式 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) BYTE reserved[4]; // 字节对齐 }ALARM_ACCESS_CTL_BREAK_IN_INFO; ///@brief 反复进入事件详细信息 typedef struct tagALARM_ACCESS_CTL_REPEAT_ENTER_INFO { DWORD dwSize; int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 NET_TIME stuTime; // 报警事件发生的时间 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 UINT nEventID; //事件ID }ALARM_ACCESS_CTL_REPEAT_ENTER_INFO; ///@brief 胁迫卡刷卡事件详细信息 typedef struct tagALARM_ACCESS_CTL_DURESS_INFO { DWORD dwSize; int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 char szCardNo[DH_MAX_CARDNO_LEN]; // 胁迫卡号 NET_TIME stuTime; // 报警事件发生的时间 UINT nEventID; // 事件ID char szSN[32]; // 无线设备序列号 char szUserID[12]; // 用户ID BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szUserIDEx[32]; // 用户ID扩展 }ALARM_ACCESS_CTL_DURESS_INFO; ///@brief 门禁事件类型 typedef enum tagNET_ACCESS_CTL_EVENT_TYPE { NET_ACCESS_CTL_EVENT_UNKNOWN = 0, NET_ACCESS_CTL_EVENT_ENTRY, // 进门 NET_ACCESS_CTL_EVENT_EXIT, // 出门 }NET_ACCESS_CTL_EVENT_TYPE; ///@brief 当前门采集状态 typedef enum tagEM_CARD_STATE { EM_CARD_STATE_UNKNOWN = -1, // 未知 EM_CARD_STATE_SWIPE, // 门禁刷卡 EM_CARD_STATE_COLLECTION, // 门禁采集卡 }EM_CARD_STATE; ///@brief 用户类型 typedef enum tagEM_USER_TYPE { EM_USER_TYPE_UNKNOWN=-1, EM_USER_TYPE_ORDINARY, EM_USER_TYPE_BLACKLIST, EM_USER_TYPE_VIP, EM_USER_TYPE_GUEST, EM_USER_TYPE_PATROL, EM_USER_TYPE_DISABLED, EM_USER_TYPE_FROZEN, EM_USER_TYPE_LOGOUT, EM_USER_TYPE_LOSSCARD }EM_USER_TYPE; ///@brief 新冠疫苗接种信息 typedef struct tagNET_VACCINE_INFO { int nVaccinateFlag; // 是否已接种新冠疫苗, 0: 否, 1: 是 2: 全接种 char szVaccineName[128]; // 新冠疫苗名称 int nDateCount; // 历史接种日期有效个数 char szVaccinateDate[8][32]; // 历史接种日期 (yyyy-MM-dd). 如提供不了时间, 则填"0000-00-00", 表示已接种 int nVaccineIntensifyFlag; // 是否已接种新冠疫苗加强针, 0: 未知, 1:否 2: 是 char szReserved[1020]; // 保留字节 } NET_VACCINE_INFO; ///@brief 行程码信息 typedef struct tagNET_TRAVEL_INFO { EM_TRAVEL_CODE_COLOR emTravelCodeColor; // 行程码状态 int nCityCount; // 最近14天经过的城市个数 char szPassingCity[16][128]; // 最近14天经过的城市名. 按时间顺序排列, 最早经过的城市放第一个 char szReserved[1024]; // 保留字节 }NET_TRAVEL_INFO; ///@brief 核酸检测信息 typedef struct tagNET_HSJC_INFO { char szHSJCReportDate[32]; // 核酸检测报告日期 (yyyy-MM-dd) int nHSJCExpiresIn; // 核酸检测报告有效期(天) int nHSJCResult; // 核酸检测报告结果, -1:未知, 0: 异常, 1: 正常, 2: 未检测, 3: 过期 char szHSJCInstitution[256]; // 核酸检测机构 char szReserved[768]; // 保留字节 } NET_HSJC_INFO; ///@brief 抗原检测信息 typedef struct tagNET_ANTIGEN_INFO { char szAntigenReportDate[32]; // 抗原检测报告日期 int nAntigenStatus; // 抗原检测报告结果: 0:异常 1:正常 2:未检测 3:过期 int nAntigenExpiresIn; // 抗原检测报告有效期(单位:天) char szResvered[256]; // 保留字节 }NET_ANTIGEN_INFO; ///@brief 门禁事件 typedef struct tagALARM_ACCESS_CTL_EVENT_INFO { DWORD dwSize; int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 NET_TIME stuTime; // 报警事件发生的时间 NET_ACCESS_CTL_EVENT_TYPE emEventType; // 门禁事件类型 BOOL bStatus; // 刷卡结果,TRUE表示成功,FALSE表示失败 NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 NET_ACCESS_DOOROPEN_METHOD emOpenMethod; // 开门方式 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szPwd[DH_MAX_CARDPWD_LEN]; // 密码 char szReaderID[DH_COMMON_STRING_32]; // 门读卡器ID char szUserID[DH_COMMON_STRING_64]; // 开门用户 char szSnapURL[DH_COMMON_STRING_256]; // 抓拍照片存储地址 int nErrorCode; // 开门操作码,配合 bStatus 使用 // 0x00 没有错误 // 0x10 未授权 // 0x11 卡挂失或注销 // 0x12 没有该门权限 // 0x13 开门模式错误 // 0x14 有效期错误 // 0x15 防反潜模式 // 0x16 胁迫报警未打开 // 0x17 门常闭状态 // 0x18 AB互锁状态 // 0x19 巡逻卡 // 0x1A 设备处于闯入报警状态 // 0x20 时间段错误 // 0x21 假期内开门时间段错误 // 0x23 卡逾期 // 0x30 需要先验证有首卡权限的卡片 // 0x40 卡片正确,输入密码错误 // 0x41 卡片正确,输入密码超时 // 0x42 卡片正确,输入信息错误 // 0x43 卡片正确,输入信息超时 // 0x44 信息正确,输入密码错误 // 0x45 信息正确,输入密码超时 // 0x50 组合开门顺序错误 // 0x51 组合开门需要继续验证 // 0x60 验证通过,控制台未授权 // 0x61 卡片正确,目标错误 // 0x62 卡片正确,目标超时 // 0x63 重复进入 // 0x64 未授权,需要后端平台识别 // 0x65 体温过高 // 0x66 未戴口罩 // 0x67 健康码获取失败 // 0x68 黄码禁止通行 // 0x69 红码禁止通行 // 0x6a 健康码无效 // 0x6b 绿码验证通过 // 0x6e 绿码,行程码非绿码 // 0x6f 绿码,抗原为异常 // 0x70 获取健康码信息 // 0x71 校验证件信息(平台下发对应证件号的校验结果) // 0xA8 未佩戴安全帽 // 0xB1 授权信息不足,待补充 // 0xB2 中心化互锁 int nPunchingRecNo; // 刷卡记录集中的记录编号 int nNumbers; // 抓图张数 NET_ACCESSCTLCARD_STATE emStatus; // 卡状态 char szSN[32]; // 智能锁序列号 NET_ATTENDANCESTATE emAttendanceState; // 考勤状态 char szQRCode[512]; // 二维码 char szCallLiftFloor[16]; // 呼梯楼层号 EM_CARD_STATE emCardState; // 是否为采集卡片 char szCitizenIDNo[20]; // 证件号 char szCompanionCards[MAX_COMPANION_CARD_NUM][DH_MAX_CARDINFO_LEN]; // 陪同者卡号信息 int nCompanionCardCount; // 陪同者卡号个数 EM_HAT_STYLE emHatStyle; // 帽子类型 EM_UNIFIED_COLOR_TYPE emHatColor; // 帽子颜色 EM_LIFT_CALLER_TYPE emLiftCallerType; // 梯控方式触发者 BOOL bManTemperature; // 人员温度信息是否有效 NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo; // 人员温度信息, bManTemperature 为TRUE 时有效 char szCitizenName[256]; // 证件姓名 EM_MASK_STATE_TYPE emMask; // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效) char szCardName[DH_MAX_CARDNAME_LEN]; // 卡命名 UINT nFaceIndex; // 一目标时的目标序号 EM_USER_TYPE emUserType; // 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_DISABLED 有效 ) BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szCompanyName[200]; // 公司名称 int nScore; // 目标质量评分 int nLiftNo; // 电梯编号 EM_QRCODE_IS_EXPIRED emQRCodeIsExpired; // 二维码是否过期。默认值0 EM_QRCODE_STATE emQRCodeState; // 二维码状态 NET_TIME stuQRCodeValidTo; // 二维码截止日期 char szDynPWD[32]; // 平台通过密码校验权限。用于动态密码校验,动态密码由手机APP生成,设备仅透传给平台 UINT nBlockId; // 上报事件数据序列号从1开始自增 char szSection[64]; // 部门名称 char szWorkClass[256]; // 工作班级 EM_TEST_ITEMS emTestItems; // 测试项目 NET_TEST_RESULT stuTestResult; // ESD阻值测试结果 char szDeviceID[128]; // 门禁设备编号 char szUserUniqueID[128]; // 用户唯一表示ID BOOL bUseCardNameEx; // 是否使用卡命名扩展 char szCardNameEx[128]; // 卡命名扩展 char szTempPassword[64]; // 临时密码 char szNote[512]; // 摘要信息 int nHSJCResult; //核酸检测报告结果 -1: 未知 0: 异常 1: 正常 2: 未检测 3: 过期 NET_VACCINE_INFO stuVaccineInfo; // 新冠疫苗接种信息 NET_TRAVEL_INFO stuTravelInfo; // 行程码信息 char szQRCodeEx[2048]; //用来上传大二维码内容 NET_HSJC_INFO stuHSJCInfo; // 核酸信息 NET_ANTIGEN_INFO stuAntigenInfo; // 抗原检测信息 char szHealthGreenStatus[20]; // 个人健康状态 绿码:"Green" 红码:"Red" 黄码:"Yellow" 橙:"Orange" 未知:"None" int nAge; // 年龄 char szCheckOutType[32]; // 签出类型 char szCheckOutCause[512]; // 签出原因 int nTargetCheck; // 刷卡开门时,门禁后台目标校验是否为同一人, // 0:该人员无目标数据 // 1:刷卡和目标人员一致 // 2:刷卡和目标人员不一致 char szReserved[1496]; // 预留字节 }ALARM_ACCESS_CTL_EVENT_INFO; ///@brief 货品类型 typedef enum tagEM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE { EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE_UNKNOWN, // 未知 EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE_SUPERMARKET, // 超市 EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE_RESTAURANT, // 餐厅 EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE_FRUITSTORE, // 水果店 }EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE; ///@brief 是否特价商品 typedef enum tagEM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE { EM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE_UNKNOWN, // 未知 EM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE_YES, // 特价 EM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE_NO, // 不是特价 }EM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE; ///@brief 下发商品记录记录集信息 typedef struct tagNET_RECORD_COMMODITY_NOTICE { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuSaleTime; // 货品上架时间 char szName[DH_COMMON_STRING_128]; // 货品名称 EM_NET_RECORD_COMMODITY_NOTICE_SOURCE_TYPE emSource; // 货品类型 char szURL[DH_COMMON_STRING_256]; // 货品图片路径, ftp 路径 float fPrice; // 货品价格, 单位:元 float char szID[DH_COMMON_STRING_64]; // ID号,由平台统一管理 一种货品有唯一的ID标识 EM_NET_RECORD_COMMODITY_NOTICE_BARGAIN_TYPE emBargain; // 是否特价商品 }NET_RECORD_COMMODITY_NOTICE; ///@brief 科室类型 typedef enum tagEM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE { EM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE_UNKNOWN, // 未知 EM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE_DIGEST, // 消化科 EM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE_STOMATOLOGY, // 口腔科 }EM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE; ///@brief 就诊信息记录记录集信息 typedef struct tagNET_RECORD_HEALTH_CARE_NOTICE { DWORD dwSize; int nRecNo; // 记录集编号,只读 NET_TIME stuStartTime; // 上班时间 NET_TIME stuEndTime; // 下班时间 char szHospital[DH_COMMON_STRING_128]; // 就诊医院 EM_NET_RECORD_HEALTH_CARE_NOTICE_OFFICE_TYPE emOffice; // 科室 char szOfficeNumber[DH_COMMON_STRING_64]; // 科室号 char szDoctorName[DH_COMMON_STRING_128]; // 医生姓名 char szID[DH_COMMON_STRING_64]; // ID号,由平台统一管理 一种货品有唯一的ID标识 }NET_RECORD_HEALTH_CARE_NOTICE; ///////////////////// 智能交通报警事件[CLIENT_StartListenEx] ///////////////////////////////////// ///@brief 事件类型 DH_IVS_TRAFFIC_REALFLOWINFO(交通实时流量信息事件)对应的数据块描述信息 typedef struct tagALARM_IVS_TRAFFIC_REALFLOW_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID unsigned int nSequence; // 序号 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[3]; int nLane; // 对应车道号 int nCount; // 车辆总数 int nSpeed; // 车速,km/h int nOverPercent; // 平均超速百分比 int nMetersUints; // 速度单位,0:公里,1:英里 BYTE bReserved[1024]; // 保留字节,留待扩展. }ALARM_IVS_TRAFFIC_REALFLOW_INFO; ///@brief 事件类型 DH_YUEQINGLIGHTING_STATE_EVENT(平台统计灯光开关的时间事件)对应的数据块描述信息 typedef struct tagDEV_YUEQINGLIGHTING_STATE_INFO { DWORD dwAction; // 事件动作, 0:开始, 1:结束 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 BYTE bReserved[1024]; // 保留字节,留待扩展. }DEV_YUEQINGLIGHTING_STATE_INFO; ///@brief 报警事件类型 DH_ALARM_VEHICLE_TURNOVER(车辆侧翻事件)对应的数据描述信息 typedef struct tagALARM_VEHICEL_TURNOVER_EVENT_INFO { NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 NET_TIME_EX UTC; // 事件发生的时间 BYTE bReserved[984]; // 保留字节,留待扩展. }ALARM_VEHICEL_TURNOVER_EVENT_INFO; ///@brief 报警事件类型DH_ALARM_VEHICLE_COLLISION(车辆撞车事件)对应的数据描述信息 typedef struct tagALARM_VEHICEL_COLLISION_EVENT_INFO { NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 NET_TIME_EX UTC; // 事件发生的时间 BYTE bReserved[984]; // 保留字节,留待扩展. }ALARM_VEHICEL_COLLISION_EVENT_INFO; ///@brief 报警事件类型DH_ALARM_VEHICLE_CONFIRM(车辆上传信息事件)对应的数据描述信息 typedef struct tagALARM_VEHICEL_CONFIRM_INFO { DWORD dwStructSize; // 结构体大小 NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 char szInfo[128]; // 上传报警具体信息 }ALARM_VEHICEL_CONFIRM_INFO; ///@brief 事件类型DH_EVENT_REGISTER_OFF(车载设备主动下线事件)对应的数据描述信息 typedef struct tagEVENT_REGISTER_OFF_INFO { DWORD dwStructSize; // 结构体大小 NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 }EVENT_REGISTER_OFF_INFO; ///@brief 报警事件类型DH_ALARM_VIDEO_TIMING(视频定时检测事件)对应的数据描述信息 typedef struct tagALARM_VIDEO_TIMING { DWORD dwStructSize; // 结构体大小 DWORD dwAction; // 事件动作, 0:Pause, 1:Start, 2:Stop DWORD dwChannelID; // 视频通道号 }ALARM_VIDEO_TIMING; ///@brief 报警事件类型DH_ALARM_VEHICLE_LARGE_ANGLE(车载摄像头大角度扭转事件)对应的数据描述信息 typedef struct tagALARM_VEHICEL_LARGE_ANGLE { DWORD dwStructSize; // 结构体大小 NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 unsigned int nSequence; // 序号 }ALARM_VEHICEL_LARGE_ANGLE; ///@brief 报警事件类型DH_ALARM_AUDIO_ANOMALY(音频异常事件)对应的数据描述信息 typedef struct tagALARM_AUDIO_ANOMALY { DWORD dwStructSize; // 结构体大小 DWORD dwAction; // 事件动作, 0:Start, 1:Stop DWORD dwChannelID; // 音频通道号 int nDecibel; // 声音强度 int nFrequency; // 声音频率 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_AUDIO_ANOMALY; ///@brief 声音类型枚举 typedef enum tagEM_AUDIO_MUTATION_ALARM_TYPE { AUDIO_MUTATION_UNKNOW, AUDIO_MUTATION_CRY, AUDIO_MUTATION_ALARM, AUDIO_MUTATION_GUNSHOT, AUDIO_MUTATION_EXPLOSION, AUDIO_MUTATION_SCREAM, AUDIO_MUTATION_CRASHINGGLASS, }EM_AUDIO_MUTATION_ALARM_TYPE; ///@brief 报警事件类型DH_ALARM_AUDIO_MUTATION(声强突变事件)对应的数据描述信息 typedef struct tagALARM_AUDIO_MUTATION { DWORD dwStructSize; // 结构体大小 DWORD dwAction; // 事件动作, 0:Start, 1:Stop DWORD dwChannelID; // 音频通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 EM_AUDIO_MUTATION_ALARM_TYPE emAudioType; // 声音类型 char reserved[512]; // 保留字段 }ALARM_AUDIO_MUTATION; ///@brief 报警事件类型 DH_ALARM_AUDIO_DETECT (音频检测事件)对应的数据描述信息 typedef struct tagALARM_AUDIO_DETECT { DWORD dwAction; // 事件动作, 1:Start, 2:Stop DWORD dwChannelID; // 音频通道号 char reserved[512]; // 保留 } ALARM_AUDIO_DETECT; #define MAX_SENSORID_NUMBER 20 // 传感器最大个数 #define MAX_TYRE_NUM 128 // 最大轮胎个数 ///@brief 轮胎告警标志位对应枚举 typedef enum tagAlarmTyreFlag { ALARM_TYRE_FLAG_NONE, // 无有效数据 ALARM_TYRE_FLAG_NORMAL, // 正常 ALARM_TYRE_FLAG_HIGHPRESSURE, // 高压 ALARM_TYRE_FLAG_LOWERPRESSURE, // 低压 ALARM_TYRE_FLAG_HIGHTEMP, // 温度异常 ALARM_TYRE_FLAG_HIGHTEMP_HIGHPRESSURE, // 温度异常、高压 ALARM_TYRE_FLAG_HIGHTEMP_LOWERPRESSURE, // 温度异常、低压 ALARM_TYRE_FLAG_INVALID, // 非法的标志位数据 }EM_ALARM_TYER_FALG; ///@brief 轮胎信息结构 typedef struct tagTYRE_INFO_UNIT { DWORD dwStructSize; // 结构体大小 DWORD dwSensorIDNum; // 传感器个数 DWORD dwSensorID[MAX_SENSORID_NUMBER]; // 传感器ID信息 DWORD dwTyreNum; // 胎位编号 DWORD dwTyrePlace; // 轮胎位于第几轴 EM_ALARM_TYER_FALG emAlarmFlag; // 轮胎告警标志位 int nTemp; // 温度,单位℃ int nTempLimit; // 温度,单位℃ float fPressure; // 压力,单位Kpa float fUpperLimit; // 告警压力阈值上限,单位Kpa float fLowerLimit; // 告警压力阈值下限,单位Kpa float fVoltage; // 当前的传感器电压,单位 V }TYRE_INFO_UNIT; ///@brief 报警事件类型DH_EVENT_TYREINFO(轮胎信息上报事件)对应的数据描述信息 typedef struct tagEVENT_TYRE_INFO { DWORD dwStructSize; // 结构体大小 DWORD dwAction; // 事件动作, 0:Pause, 1:Stop DWORD dwTyreNum; // 轮胎个数 TYRE_INFO_UNIT *pstuTyre; // 轮胎信息 }EVENT_TYRE_INFO; /////////////////////////语音对讲相关定义///////////////////////////// ///@brief 音频格式信息 typedef struct { BYTE byFormatTag; // 编码类型,如0:PCM WORD nChannels; // 声道数 WORD wBitsPerSample; // 采样深度 DWORD nSamplesPerSec; // 采样率 } DH_AUDIO_FORMAT, *LPDH_AUDIO_FORMAT; /////////////////////////用户管理相关定义///////////////////////////// ///@brief 支持用户名最大长度为8位的设备,对应CLIENT_QueryUserInfo和CLIENT_OperateUserInfo接口 ///@brief 权限信息 typedef struct _OPR_RIGHT { DWORD dwID; char name[DH_RIGHT_NAME_LENGTH]; char memo[DH_MEMO_LENGTH]; } OPR_RIGHT; ///@brief 用户信息 typedef struct _USER_INFO { DWORD dwID; DWORD dwGroupID; char name[DH_USER_NAME_LENGTH]; char passWord[DH_USER_PSW_LENGTH]; DWORD dwRightNum; DWORD rights[DH_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; DWORD dwReusable; // 是否复用;1:复用,0:不复用 } USER_INFO; ///@brief 用户组信息 typedef struct _USER_GROUP_INFO { DWORD dwID; char name[DH_USER_NAME_LENGTH]; DWORD dwRightNum; DWORD rights[DH_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; } USER_GROUP_INFO; ///@brief 用户信息表 typedef struct _USER_MANAGE_INFO { DWORD dwRightNum; // 权限信息 OPR_RIGHT rightList[DH_MAX_RIGHT_NUM]; DWORD dwGroupNum; // 用户组信息 USER_GROUP_INFO groupList[DH_MAX_GROUP_NUM]; DWORD dwUserNum; // 用户信息 USER_INFO userList[DH_MAX_USER_NUM]; DWORD dwSpecial; // 用户复用能力;1:支持用户复用,0:不支持用户复用 } USER_MANAGE_INFO; // 支持用户名最大长度为8位或16位的设备,对应扩展接口CLIENT_QueryUserInfoEx和CLIENT_OperateUserInfoEx #define DH_USER_NAME_LENGTH_EX 16 // 用户名长度 #define DH_USER_PSW_LENGTH_EX 16 // 密码 ///@brief 权限信息 typedef struct _OPR_RIGHT_EX { DWORD dwID; char name[DH_RIGHT_NAME_LENGTH]; char memo[DH_MEMO_LENGTH]; } OPR_RIGHT_EX; ///@brief 用户信息 typedef struct _USER_INFO_EX { DWORD dwID; DWORD dwGroupID; char name[DH_USER_NAME_LENGTH_EX]; char passWord[DH_USER_PSW_LENGTH_EX]; DWORD dwRightNum; DWORD rights[DH_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; DWORD dwFouctionMask; // 掩码,0x00000001 - 支持用户复用 BYTE byReserve[32]; } USER_INFO_EX; ///@brief 用户组信息 typedef struct _USER_GROUP_INFO_EX { DWORD dwID; char name[DH_USER_NAME_LENGTH_EX]; DWORD dwRightNum; DWORD rights[DH_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; } USER_GROUP_INFO_EX; ///@brief 用户信息表 typedef struct _USER_MANAGE_INFO_EX { DWORD dwRightNum; // 权限信息 OPR_RIGHT_EX rightList[DH_MAX_RIGHT_NUM]; DWORD dwGroupNum; // 用户组信息 USER_GROUP_INFO_EX groupList[DH_MAX_GROUP_NUM]; DWORD dwUserNum; // 用户信息 USER_INFO_EX userList[DH_MAX_USER_NUM]; DWORD dwFouctionMask; // 掩码;0x00000001 - 支持用户复用,0x00000002 - 密码修改需要校验 BYTE byNameMaxLength; // 支持的用户名最大长度 BYTE byPSWMaxLength; // 支持的密码最大长度 BYTE byReserve[254]; } USER_MANAGE_INFO_EX; // 最大支持64通道的设备,对应扩展接口CLIENT_QueryUserInfoNew和CLIENT_OperateUserInfoNew #define DH_NEW_MAX_RIGHT_NUM 1024 #define DH_NEW_USER_NAME_LENGTH 128 // 用户名长度 #define DH_NEW_USER_PSW_LENGTH 128 // 密码 ///@brief 权限信息 typedef struct _OPR_RIGHT_NEW { DWORD dwSize; DWORD dwID; char name[DH_RIGHT_NAME_LENGTH]; char memo[DH_MEMO_LENGTH]; } OPR_RIGHT_NEW; ///@brief 用户信息 typedef struct _USER_INFO_NEW { DWORD dwSize; DWORD dwID; DWORD dwGroupID; char name[DH_NEW_USER_NAME_LENGTH]; char passWord[DH_NEW_USER_PSW_LENGTH]; DWORD dwRightNum; DWORD rights[DH_NEW_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; DWORD dwFouctionMask; // 掩码,0x00000001 - 支持用户复用 NET_TIME stuTime; // 最后修改时间 BYTE byIsAnonymous; // 是否可以匿名登录, 0:不可匿名登录, 1: 可以匿名登录 BYTE byReserve[7]; } USER_INFO_NEW; ///@brief 用户信息扩展,权限数组增加 typedef struct tagNET_USER_INFO_NEW_EX { DWORD dwSize; DWORD dwID; // 用户ID DWORD dwGroupID; // 用户所属的用户组ID char szName[128]; // 用户名称 char szPassWord[128]; // 用户密码 DWORD dwRightNum; // 用户权限个数 DWORD dwRights[3072]; // 用户权限列表 char szMemo[32]; // 用户信息备注 DWORD dwFouctionMask; // 掩码,0x00000001 - 支持用户复用 NET_TIME stuTime; // 最后修改时间 BYTE byIsAnonymous; // 是否可以匿名登录, 0:不可匿名登录, 1: 可以匿名登录 BYTE byReserve[3]; } NET_USER_INFO_NEW_EX; ///@brief 剩余修改密码的尝试次数和锁定时间 typedef struct tagREMAIN_MODIFY_TIME_AND_LOCK_SECOND { DWORD dwSize; // 结构体大小 int nRemainModifytimes; // 旧密码输错,剩余可尝试的次数 int nRemainLockSecond; // 旧密码输入次数达到限定值,剩余锁定时间,单位是秒 }REMAIN_MODIFY_TIME_AND_LOCK_SECOND; ///@brief 用户组信息 typedef struct _USER_GROUP_INFO_NEW { DWORD dwSize; DWORD dwID; char name[DH_USER_NAME_LENGTH_EX]; DWORD dwRightNum; DWORD rights[DH_NEW_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; } USER_GROUP_INFO_NEW; ///@brief 用户组信息扩展,用户组名加长 typedef struct _USER_GROUP_INFO_EX2 { DWORD dwSize; DWORD dwID; char name[DH_NEW_USER_NAME_LENGTH]; DWORD dwRightNum; DWORD rights[DH_NEW_MAX_RIGHT_NUM]; char memo[DH_MEMO_LENGTH]; } USER_GROUP_INFO_EX2; ///@brief 用户组信息扩展3,权限数组增加 typedef struct tagNET_USER_GROUP_INFO_EX3 { DWORD dwSize; DWORD dwID; // 用户组ID char szName[128]; // 用户组名称 DWORD dwRightNum; // 权限个数 DWORD dwRights[3072]; // 权限数组 char szMemo[32]; // 备注信息 BYTE byReserve[4]; } NET_USER_GROUP_INFO_EX3; ///@brief 用户信息表 typedef struct _USER_MANAGE_INFO_NEW { DWORD dwSize; DWORD dwRightNum; // 权限信息 OPR_RIGHT_NEW rightList[DH_NEW_MAX_RIGHT_NUM]; DWORD dwGroupNum; // 用户组数 USER_GROUP_INFO_NEW groupList[DH_MAX_GROUP_NUM]; // 用户组信息,此参数废弃,请使用groupListEx DWORD dwUserNum; // 用户信息 USER_INFO_NEW userList[DH_MAX_USER_NUM]; DWORD dwFouctionMask; // 掩码;0x00000001 - 支持用户复用,0x00000002 - 密码修改需要校验 BYTE byNameMaxLength; // 支持的用户名最大长度 BYTE byPSWMaxLength; // 支持的密码最大长度 BYTE byReserve[254]; USER_GROUP_INFO_EX2 groupListEx[DH_MAX_GROUP_NUM]; // 用户组信息扩展 } USER_MANAGE_INFO_NEW; ///@brief 用户信息表扩展 typedef struct tagNET_USER_MANAGE_INFO_NEW_EX { DWORD dwSize; BYTE byRightListFlag; // 由接口返回,大于0时,表示调用者申请的pstuRightList数组个数小于设备实际返回的个数, // 0:个数足够, [1,254]:不足的个数, 255:不足个数大于254 BYTE byGroupListFlag; // 由接口返回,大于0时,表示调用者申请的pstuGroupList数组个数小于设备实际返回的个数, // 0:个数足够, [1,254]:不足的个数, 255:不足个数大于254 BYTE byUserListFlag; // 由接口返回,大于0时,表示调用者申请的pstuUserList数组个数小于设备实际返回的个数, // 0:个数足够, [1,254]:不足的个数, 255:不足个数大于254 BYTE byReserved1[9]; DWORD dwMaxRightNum; // 调用者申请的权限信息数组长度,最大不超过3*1024 DWORD dwRetRightNum; // 权限信息数组有效长度,由接口返回 OPR_RIGHT_NEW* pstuRightList; // 权限信息数组,由调用者分配内存 DWORD dwMaxGroupNum; // 调用者申请的用户组扩展信息数组长度,最大不超过64 DWORD dwRetGroupNum; // 用户组扩展信息数组有效长度,由接口返回 NET_USER_GROUP_INFO_EX3* pstuGroupList; // 用户组扩展信息数组,由调用者分配内存 DWORD dwMaxUserNum; // 调用者申请的用户信息数组长度,最大不超过200 DWORD dwRetUserNum; // 用户信息数组的有效长度,由接口返回 NET_USER_INFO_NEW_EX* pstuUserList; // 用户信息数组,由调用者分配内存 DWORD dwFouctionMask; // 掩码;0x00000001 - 支持用户复用,0x00000002 - 密码修改需要校验 BYTE byNameMaxLength; // 支持的用户名最大长度 BYTE byPSWMaxLength; // 支持的密码最大长度 BYTE byReserved[2]; } NET_USER_MANAGE_INFO_NEW_EX; ///@brief CLIENT_OperateUserInfoNew接口参数 nOperateType 对应的值含义 typedef enum tagEM_OPERATE_USERINFO_TYPE { // 权限列表长度 1024 EM_OPERATE_USERINFO_TYPE_ADD_USER = 3, // 增加用户,opParam对应结构体 USER_INFO_NEW EM_OPERATE_USERINFO_TYPE_DEL_USER, // 删除用户,opParam对应结构体 USER_INFO_NEW EM_OPERATE_USERINFO_TYPE_MODIFY_USER, // 修改用户,opParam为修改后的用户信息 对应结构体 USER_INFO_NEW, subParam为原始用户信息 对应结构体 USER_INFO_NEW EM_OPERATE_USERINFO_TYPE_MODIFY_PWD, // 修改密码,opParam为修改后的密码 对应结构体 USER_INFO_NEW, subParam为原始密码 对应结构体 USER_INFO_NEW EM_OPERATE_USERINFO_TYPE_ADD_GROUP, // 增加用户组,opParam对应结构体 USER_GROUP_INFO_EX2 EM_OPERATE_USERINFO_TYPE_DEL_GROUP, // 删除用户组,opParam对应结构体 USER_GROUP_INFO_EX2 EM_OPERATE_USERINFO_TYPE_MODIFY_GROUP, // 修改用户组,opParam为修改后的用户组信息 对应结构体 USER_GROUP_INFO_EX2,subParam为原始用户组信息 对应结构体 USER_GROUP_INFO_EX2 // 权限列表长度 3072 EM_OPERATE_USERINFO_TYPE_ADD_USER_EX = 10, // 增加用户扩展,opParam对应结构体 NET_USER_INFO_NEW_EX EM_OPERATE_USERINFO_TYPE_DEL_USER_EX, // 删除用户扩展,opParam对应结构体 NET_USER_INFO_NEW_EX EM_OPERATE_USERINFO_TYPE_MODIFY_USER_EX, // 修改用户扩展,opParam为修改后的用户信息 对应结构体 NET_USER_INFO_NEW_EX, subParam为原始用户信息 对应结构体 NET_USER_INFO_NEW_EX EM_OPERATE_USERINFO_TYPE_MODIFY_PWD_EX, // 修改密码扩展,opParam为修改后的密码 对应结构体 NET_USER_INFO_NEW_EX, subParam为原始密码 对应结构体 NET_USER_INFO_NEW_EX EM_OPERATE_USERINFO_TYPE_ADD_GROUP_EX, // 增加用户组扩展,opParam对应结构体 NET_USER_GROUP_INFO_EX3 EM_OPERATE_USERINFO_TYPE_DEL_GROUP_EX, // 删除用户组扩展,opParam对应结构体 NET_USER_GROUP_INFO_EX3 EM_OPERATE_USERINFO_TYPE_MODIFY_GROUP_EX, // 修改用户组扩展,opParam为修改后的用户组信息 对应结构体 NET_USER_GROUP_INFO_EX3,subParam为原始用户组信息 对应结构体 NET_USER_GROUP_INFO_EX3 }EM_OPERATE_USERINFO_TYPE; ///////////////////////////查询相关定义/////////////////////////////// ///@brief 设备支持语言种类 typedef struct _DH_LANGUAGE_DEVINFO { DWORD dwLanguageNum; // 支持语言个数 BYTE byLanguageType[252]; // 枚举值,详见DH_LANGUAGE_TYPE } DH_DEV_LANGUAGE_INFO, *LPDH_DEV_LANGUAGE_INFO; ///@brief 查询设备支持的IPC能力信息 typedef struct { int nTypeCount; // 支持的IPC个数 BYTE bSupportTypes[128]; // 枚举值,详见EM_IPC_TYPE }DH_DEV_IPC_INFO; ///@brief 3G网络流量信息 typedef struct { int nStrategy; // 包月策略,0-按流量包月,1-按时间包月 int nUplimit; // 流量上限, 与策略对应, 按流量, 单位MB; 按时间,单位小时 int nUsed; // 已使用流量,单位与nUplimit相同 BYTE bReserved[64]; // 保留字段 }DH_DEV_3GFLOW_INFO; ///@brief 3G模块信息 typedef struct { BYTE byEthNum; // 3G模块数 BYTE byReserved[255]; // 保留字节 }DH_DEV_3GMODULE_INFO; ///@brief DDNS信息 typedef struct { DWORD dwId; // ddns 服务器id号 char szState[DH_MAX_DDNS_STATE_LEN]; // ddns 状态 BYTE bReserved[512]; // 保留字段 }DH_DEV_DNS_INFO; ///@brief 查询多DDNS状态信息 typedef struct { DWORD dwDdnsServerNum; DH_DEV_DNS_INFO stDdns[DH_MAX_DDNS_NUM]; }DH_DEV_MULTI_DDNS_INFO; ///@brief 设备URL信息 typedef struct { char szURLInfo[512]; //设备URL信息, 由字符串组成 BYTE bReserved[512]; }DH_DEV_URL_INFO; ///@brief 硬盘信息 typedef struct { DWORD dwVolume; // 硬盘的容量, 单位MB(B表示字节) DWORD dwFreeSpace; // 硬盘的剩余空间, 单位MB(B表示字节) BYTE dwStatus; // 高四位的值表示硬盘类型,具体见枚举类型EM_DISK_TYPE;低四位的值表示硬盘的状态,0-休眠,1-活动,2-故障等;将DWORD拆成四个BYTE BYTE bDiskNum; // 硬盘号 BYTE bSubareaNum; // 分区号 BYTE bSignal; // 标识,0为本地 1为远程 } NET_DEV_DISKSTATE,*LPNET_DEV_DISKSTATE; ///@brief 设备硬盘信息 typedef struct _DH_HARDDISK_STATE { DWORD dwDiskNum; // 个数 NET_DEV_DISKSTATE stDisks[DH_MAX_DISKNUM]; // 硬盘或分区信息 } DH_HARDDISK_STATE, *LPDH_HARDDISK_STATE; typedef DH_HARDDISK_STATE DH_SDCARD_STATE; // SD卡,数据结构同硬盘信息 ///@brief 语音编码信息 typedef struct { DH_TALK_CODING_TYPE encodeType; // 编码类型 int nAudioBit; // 位数,如8或16等 DWORD dwSampleRate; // 采样率,如8000或16000等 int nPacketPeriod; // 打包周期, 单位ms char reserved[60]; } DHDEV_TALKDECODE_INFO; ///@brief 设备支持的语音对讲类型 typedef struct { int nSupportNum; // 个数 DHDEV_TALKDECODE_INFO type[64]; // 编码类型 char reserved[64]; } DHDEV_TALKFORMAT_LIST; #define NAME_MAX_LEN 16 ///@brief 云台属性信息 typedef struct { DWORD dwHighMask; // 操作的掩码高位 DWORD dwLowMask; // 操作的掩码低位 char szName[NAME_MAX_LEN]; // 操作的协议名 WORD wCamAddrMin; // 通道地址的最小值 WORD wCamAddrMax; // 通道地址的最大值 WORD wMonAddrMin; // 预览地址的最小值 WORD wMonAddrMax; // 预览地址的最大值 BYTE bPresetMin; // 预置点的最小值 BYTE bPresetMax; // 预置点的最大值 BYTE bTourMin; // 自动巡航线路的最小值 BYTE bTourMax; // 自动巡航线路的最大值 BYTE bPatternMin; // 轨迹线路的最小值 BYTE bPatternMax; // 轨迹线路的最大值 BYTE bTileSpeedMin; // 垂直速度的最小值 BYTE bTileSpeedMax; // 垂直速度的最大值 BYTE bPanSpeedMin; // 水平速度的最小值 BYTE bPanSpeedMax; // 水平速度的最大值 BYTE bAuxMin; // 辅助功能的最小值 BYTE bAuxMax; // 辅助功能的最大值 int nInternal; // 发送命令的时间间隔 char cType; // 协议的类型 BYTE bReserved_1; // 保留 BYTE bFuncMask; // 协议功能掩码,按位表示,置1表示支持,第一位表示内置云台功能,其它7位暂时保留 BYTE bReserved_2; char Reserved[4]; } PTZ_OPT_ATTR; ///@brief 光驱托盘状态 typedef enum tagEM_NET_BURN_DEV_TRAY_TYPE { EM_NET_BURN_DEV_TRAY_TYPE_UNKNOWN, // 未知 EM_NET_BURN_DEV_TRAY_TYPE_READY, // 光盘就绪 EM_NET_BURN_DEV_TRAY_TYPE_OPEN, // 托盘弹出 EM_NET_BURN_DEV_TRAY_TYPE_NODISK, // 无盘 EM_NET_BURN_DEV_TRAY_TYPE_NOT_READY, // 光盘未就绪 }EM_NET_BURN_DEV_TRAY_TYPE; ///@brief 光驱使用状态 typedef enum tagEM_NET_BURN_DEV_OPERATE_TYPE { EM_NET_BURN_DEV_OPERATE_TYPE_UNKNOWN, // 未知 EM_NET_BURN_DEV_OPERATE_TYPE_WRITE, // 执行写 EM_NET_BURN_DEV_OPERATE_TYPE_READ, // 执行读 EM_NET_BURN_DEV_OPERATE_TYPE_IDLE, // 空闲 }EM_NET_BURN_DEV_OPERATE_TYPE; ///@brief 刻录机信息 typedef struct _NET_DEV_BURNING { DWORD dwDriverType; // 刻录驱动器类型;0:DHFS,1:DISK,2:CDRW DWORD dwBusType; // 总线类型;0:USB,1:1394,2:IDE, 3: SATA, 4: ESATA DWORD dwTotalSpace; // 总容量(KB) DWORD dwRemainSpace; // 剩余容量(KB) BYTE dwDriverName[DH_BURNING_DEV_NAMELEN]; // 刻录驱动器名称 EM_NET_BURN_DEV_TRAY_TYPE emTrayType; // 光驱托盘状态 EM_NET_BURN_DEV_OPERATE_TYPE emOperateType; // 光盘使用状态 } NET_DEV_BURNING, *LPNET_DEV_BURNING; ///@brief 设备刻录机信息 typedef struct _DH_BURNING_DEVINFO { DWORD dwDevNum; // 刻录设备个数 NET_DEV_BURNING stDevs[DH_MAX_BURNING_DEV_NUM]; // 各刻录设备信息 } DH_BURNING_DEVINFO, *LPDH_BURNING_DEVINFO; ///@brief 刻录进度 typedef struct _DH_BURNING_PROGRESS { BYTE bBurning; // 刻录机状态;0:可以刻录,1:刻录机类型不对,是一个非光盘设备, // 2:未找到刻录机(即剩余空间为0),3:有其它光盘在刻录,4:刻录机处于非空闲状态,即在备份、刻录或回放中 BYTE bRomType; // 盘片类型;0:私有文件系统,1:移动硬盘或U盘,2:光盘 BYTE bOperateType; // 操作类型;0:空闲,1:正在备份中,2:正在刻录中,3:正在进行光盘回放, 4: 无盘刻录 BYTE bType; // 备份或刻录过程状态;0-停止 1-开始 2-出错 3-满 4-结束 5-正在初始化 6-暂停 7-等待附件 NET_TIME stTimeStart; // 开始时间  DWORD dwTimeElapse; // 已刻录时间(秒) DWORD dwTotalSpace; // 光盘总容量 DWORD dwRemainSpace; // 光盘剩余容量 DWORD dwBurned; // 已刻录容量 WORD dwStatus; // 保留 WORD wChannelMask; // 正在刻录的通道掩码 } DH_BURNING_PROGRESS, *LPDH_BURNING_PROGRESS; ///@brief 日志信息,对应接口CLIENT_QueryLog接口 typedef struct _DH_LOG_ITEM { DHDEVTIME time; // 日期 unsigned short type; // 日志类型,对应结构体 DH_LOG_TYPE unsigned char reserved; // 保留 unsigned char data; // 数据 unsigned char context[8]; // 内容 } DH_LOG_ITEM, *LPDH_LOG_ITEM; ///@brief 日志信息,对应扩展接口CLIENT_QueryLogEx,参数reserved(int nType=1;reserved=&nType;) typedef struct _DH_NEWLOG_ITEM { DHDEVTIME time; // 日期 WORD type; // 扩展日志类型,对应结构体 DH_NEWLOG_TYPE WORD data; // 数据 char szOperator[8]; // 用户名 BYTE context[16]; // 内容 } DH_NEWLOG_ITEM, *LPDH_NEWLOG_ITEM; ///@brief 日志信息,对应接口CLIENT_QueryDeviceLog接口 typedef struct _DH_DEVICE_LOG_ITEM { int nLogType; // 日志类型 DHDEVTIME stuOperateTime; // 日期 char szOperator[16]; // 操作者 BYTE bReserved[3]; BYTE bUnionType; // union结构类型,0:szLogContext;1:stuOldLog。 union { char szLogContext[64]; // 日志备注信息 struct { DH_LOG_ITEM stuLog; // 旧的日志结构体 BYTE bReserved[48]; // 保留 }stuOldLog; }; char reserved[16]; } DH_DEVICE_LOG_ITEM, *LPDH_DEVICE_LOG_ITEM; ///@brief 新日志信息结构,对应接口CLIENT_QueryDeviceLog接口 typedef struct _DH_DEVICE_LOG_ITEM_EX { int nLogType; // 日志类型 DHDEVTIME stuOperateTime; // 日期 char szOperator[16]; // 操作者 BYTE bReserved[3]; BYTE bUnionType; // union结构类型,0:szLogContext;1:stuOldLog。 union { char szLogContext[64]; // 日志备注信息 struct { DH_LOG_ITEM stuLog; // 旧的日志结构体 BYTE bReserved[48]; // 保留 }stuOldLog; }; char szOperation[32]; // 具体的操作内容 char szDetailContext[4*1024]; // 详细日志信息描述 } DH_DEVICE_LOG_ITEM_EX, *LPDH_DEVICE_LOG_ITEM_EX; ///@brief 录象日志信息,对应日志结构体里的context typedef struct _LOG_ITEM_RECORD { DHDEVTIME time; // 时间 BYTE channel; // 通道 BYTE type; // 录像类型 BYTE reserved[2]; } LOG_ITEM_RECORD, *LPLOG_ITEM_RECORD; ///@brief 查询记录数条件 typedef struct _QUERY_DEVICE_LOG_PARAM { DH_LOG_QUERY_TYPE emLogType; // 查询日志类型 NET_TIME stuStartTime; // 查询日志的开始时间 NET_TIME stuEndTime; // 查询日志的结束时间 int nStartNum; // 在时间段中从第几条日志开始查询,开始第一次查询可设为0 int nEndNum; // 一次查询中到第几条日志结束,日志返回条数的最大值为1024 BYTE nLogStuType; // 日志数据结构体类型,0:表示DH_DEVICE_LOG_ITEM;1:表示DH_DEVICE_LOG_ITEM_EX BYTE reserved[3]; // 保留 对齐 unsigned int nChannelID; // 通道号,0:兼容之前表示所有通道号,所以通道号从1开始; 1:第一个通道 BYTE bReserved[40]; } QUERY_DEVICE_LOG_PARAM; ///@brief 订阅上报日志类型 typedef enum tagNET_EM_LOG_QUERY_TYPE { EM_LOG_QUERY_TYPE_UNKNOWN, EM_LOG_QUERY_TYPE_TEXT = 1, //文本类型日志 }NET_EM_LOG_QUERY_TYPE; ///@brief 设备硬盘里的录象信息 typedef struct __DEV_DISK_RECORD_INFO { NET_TIME stuBeginTime; // 最早录象时间 NET_TIME stuEndTime; // 最近录象时间 char reserved[128]; } DEV_DISK_RECORD_INFO; ///@brief 设备硬盘录像时间信息 typedef struct __DEV_DISK_RECORD_TIME { NET_TIME stuStartTime1; // 录像时间段1开始时间 NET_TIME stuEndTime1; // 录像时间段1结束时间 BOOL bTwoPart; // 是否有第二段 NET_TIME stuStartTime2; // 录像时间段2开始时间 NET_TIME stuEndTime2; // 录像时间段2结束时间 BYTE bDiskNum; // 硬盘号 BYTE bSubareaNum; // 分区号 BYTE byReserved[62]; // 保留字节 }DEV_DISK_RECORD_TIME; ///////////////////////////控制相关定义/////////////////////////////// ///@brief 新网络键盘控制 typedef struct _NKB_PARAM { BYTE bAddressCode; // 为DVR等设备的物理地址号,0xFF为广播地址 BYTE bKeyStatus; // 状态码 0/1 0表示按键按下 1表示按键放开 BYTE bExtern1; // 扩展字节1 BYTE bExtern2; // 扩展字节2 BYTE bReserved[60]; }NKB_PARAM; ///@brief 硬盘操作 typedef struct _DISKCTRL_PARAM { DWORD dwSize; // 结构体大小,版本控制用 int nIndex; // 为硬盘信息结构体DH_HARDDISK_STATE里的数组stDisks下标,从0开始 int ctrlType; // 操作类型, // 0 - 清除数据, 1 - 设为读写盘, 2 - 设为只读盘 // 3 - 设为冗余盘, 4 - 恢复错误, 5 - 设为快照盘,7 - 弹出SD卡(对SD卡操作有效) NET_DEV_DISKSTATE stuDisk; // 磁盘信息, 由于磁盘顺序可能改变导致下标不准, 用来代替下标 } DISKCTRL_PARAM; ///@brief 硬盘信息 typedef struct { BYTE bSubareaNum; // 预分区的个数 BYTE bIndex; // 为硬盘信息结构体DH_HARDDISK_STATE里的数组stDisks下标,从0开始 BYTE bSubareaSize[32]; // 分区大小(百分比) BYTE bReserved[30]; // 保留 } DISKCTRL_SUBAREA; ///@brief 报警状态 typedef struct _ALARMCTRL_PARAM { DWORD dwSize; int nAlarmNo; // 报警通道号,从0开始 int nAction; // 1:触发报警,0:停止报警 } ALARMCTRL_PARAM; ///@brief 矩阵控制 typedef struct _MATRIXCTRL_PARAM { DWORD dwSize; int nChannelNo; // 视频输入号,从0开始 int nMatrixNo; // 矩阵输出号,从0开始 } MATRIXCTRL_PARAM; ///@brief 刻录控制 typedef struct _BURNING_PARM { int channelMask; // 通道掩码,按位表示要刻录的通道 BYTE devMask; // 刻录机掩码,根据查询到的刻录机列表,按位表示 BYTE bySpicalChannel; // 画中画通道(通道数+31,例如对于4通道设备,该值应为35) BYTE byReserved[2]; // 保留字段 } BURNNG_PARM; ///@brief 附件刻录 typedef struct _BURNING_PARM_ATTACH { BOOL bAttachBurn; // 是否为附件刻录,0:不是; 1:是 BYTE bReserved[12]; // 保留字段 } BURNING_PARM_ATTACH; ///@brief 手动抓拍参数 typedef struct _MANUAL_SNAP_PARAMETER{ int nChannel; // 抓图通道,从0开始 BYTE bySequence[64]; // 抓图序列号字符串 部分设备需要在这个序号后面#n,作为抓拍第n个车道的信号。如123#3,就表示抓拍第3个车道,抓图序列号为123。 BYTE byReserved[60]; // 保留字段 }MANUAL_SNAP_PARAMETER; ///@brief 控制设备端本地预览分割参数 typedef struct _DEVICE_LOCALPREVIEW_SLIPT_PARAMETER { int nSliptMode; // 分割模式,见设备端本地预览支持的分割模式 int nSubSliptNum; // 当前要预览的子分割,从1开始 BYTE byReserved[64]; // 保留字段 }DEVICE_LOCALPREVIEW_SLIPT_PARAMETER; ///@brief 设备端本地预览支持的分割模式 typedef struct _DEVICE_LOCALPREVIEW_SLIPT_CAP { int nModeNumber; int nSliptMode[36]; // 支持的分割模式, BYTE byReserved[64]; // 保留字段 }DEVICE_LOCALPREVIEW_SLIPT_CAP; ///@brief 路口信息 typedef struct _CROSSING_INFO { char szCrossingID[DH_MAX_CROSSING_ID]; // 路口序列号 DWORD dwLatitude; // 纬度(单位是百万分之度,范围0-180度)如北纬30(.)183382度表示为120183382) DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度) 如东经100(.)178274度表示为280178274) // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 WORD wSpeedLimit; // 路口限速值,单位Km/h 0表示不限速,其他表示限速值上限 BYTE byReserved[22]; }CROSSING_INFO; ///@brief 路线点位信息 typedef struct _ROUTE_CROSSING_INFO { BYTE byCrossingNum; // 路口有效数量范围1~DH_MAX_CROSSING_NUM BYTE byReserved1; WORD wCrossingRange; // 定位精度范围单位m CROSSING_INFO stCrossingInfo[DH_MAX_CROSSING_NUM];// 路口信息最大支持128个路口 BYTE byReserved2[2044]; }ROUTE_CROSSING_INFO; ///@brief raid操作 typedef struct _CTRL_RAID_INFO { char szAction[16]; // Add增加,Delete删除 char szName[16]; // Raid名称 int nType; // 类型 1:Jbod 2:Raid0 3:Raid1 4:Raid5 int nStatus; // 状态 0:unknown ,1:active,2:degraded,3:inactive,4:recovering int nCntMem; // nMember数组的有效数据个数 int nMember[32]; // 1,2,3,... 组成磁盘通道,是个数组 int nCapacity; // 容量,单位G int nRemainSpace; // 剩余容量,单位M int nTank; // 扩展柜 0:主机,1:扩展柜1,2:扩展柜2,…… char reserved[128]; }CTRL_RAID_INFO; ///@brief 热备操作 typedef struct _CTRL_SPARE_DISK_INFO { char szAction[16]; // Enable,使能,Unable,不使能 char szScope[16]; // Global,全局热备,Local,非全局热备 char szName[16]; // 热备名字,若Scope为Global,则为热备池的名称,否则表示Raid组的名称 unsigned int nIndex; // 磁盘序号 const char* pszDevName; // 存储设备名称,由用户申请内存 char reserved[124]; }CTRL_SPARE_DISK_INFO; ///@brief 热备操作扩展信息 typedef struct _CTRL_SPARE_DISK_INFO_A { int nCnt; // 热备盘的个数 CTRL_SPARE_DISK_INFO stSpaceDiskInfo[32]; }CTRL_SPARE_DISK_INFO_A; ///@brief 报警布撤防控制 typedef struct __CTRL_ARM_DISARM_PARAM { BYTE bState; // 布撤防状态,0表示撤防,1表示布防,2表示强制布防 char reserve[3]; const char* szDevPwd; // 用户密码 NET_SCENE_MODE emSceneMode; // 情景模式 const char* szDevID; // 转发目标设备ID,为NULL表示不转发 char reserve1[16]; } CTRL_ARM_DISARM_PARAM; ///@brief 报警布撤防控制扩展输入参数 typedef struct tagCTRL_ARM_DISARM_PARAM_EX_IN { DWORD dwSize; NET_ALARM_MODE emState; // 布撤防状态 const char* szDevPwd; // 用户密码 NET_SCENE_MODE emSceneMode; // 情景模式 const char* szDevID; // 转发目标设备ID,为NULL表示不转发 } CTRL_ARM_DISARM_PARAM_EX_IN; #define ARM_DISARM_ZONE_MAX (256) // 防区最大个数 ///@brief 报警布撤防控制扩展输出参数 typedef struct tagCTRL_ARM_DISARM_PARAM_EX_OUT { DWORD dwSize; DWORD dwSourceNum; // 有报警源输入布防失败的防区个数 int nSource[ARM_DISARM_ZONE_MAX]; // 有报警源输入失败的防区号, 防区号从0开始 DWORD dwLinkNum; // 有联动报警布防失败的防区个数 int nLink[ARM_DISARM_ZONE_MAX]; // 有联动报警失败的防区号, 防区号从0开始 } CTRL_ARM_DISARM_PARAM_EX_OUT; ///@brief 报警布撤防控制扩展(对应DH_CTRL_ARMED_EX) typedef struct tagCTRL_ARM_DISARM_PARAM_EX { DWORD dwSize; CTRL_ARM_DISARM_PARAM_EX_IN stuIn; // 报警布撤防控制输入 CTRL_ARM_DISARM_PARAM_EX_OUT stuOut; // 报警布撤防控制输出 } CTRL_ARM_DISARM_PARAM_EX; ///@brief 连接参数 typedef struct tagDHCTRL_CONNECT_WIFI_BYWPS_IN { DWORD dwSize; int nType; // WPS连接类型,0:虚拟按钮方式; 1:(设备端)pin码方式; 2:(wifi热点端)pin码方式 char szSSID[DH_MAX_SSID_LEN]; // SSID,nType为1或2时有效,最大支持32位 char szApPin[DH_MAX_APPIN_LEN]; // APPIN码, nType为2时有效,PIN码为8位数字,这个pin码是从wifi热点端拿到的 char szWLanPin[DH_MAX_APPIN_LEN]; // 设备pin码,nType为1时有效:为空时由设备产生;不为空时即表示由用户设定,最大支持8位数字,这个pin码要在WIFI热点端增加 }DHCTRL_CONNECT_WIFI_BYWPS_IN; ///@brief 返回数据 typedef struct tagDHCTRL_CONNECT_WIFI_BYWPS_OUT { DWORD dwSize; char szRetWLanPin[DH_MAX_APPIN_LEN];// 返回设备PIN码,当WPS连接类型为(设备端)pin码方式时该输出参数有效 }DHCTRL_CONNECT_WIFI_BYWPS_OUT; ///@brief CLIENT_ControlDevice接口的DH_CTRL_WIFI_BY_WPS命令参数(WPS快速配置WIFI) typedef struct tagDHCTRL_CONNECT_WIFI_BYWPS { DWORD dwSize; DHCTRL_CONNECT_WIFI_BYWPS_IN stuWpsInfo; // 连接参数(由用户填写) DHCTRL_CONNECT_WIFI_BYWPS_OUT stuWpsResult; // 返回数据(由设备返回) } DHCTRL_CONNECT_WIFI_BYWPS; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_CLOSE_BURNER 等 命令参数 typedef struct tagNET_CTRL_BURNERDOOR { DWORD dwSize; const char* szBurnerName; // 光盘名称,如“/dev/sda” BOOL bResult; // 操作结果 BOOL bSafeEject; // 是否安全弹出光驱, TRUE-弹出前做数据保存, FALSE-直接弹出 }NET_CTRL_BURNERDOOR; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_PLAYAUDIO 命令参数 typedef struct tagNET_CTRL_START_PLAYAUDIO { DWORD dwSize; char szAudioPath[DH_MAX_AUDIO_PATH]; }NET_CTRL_START_PLAYAUDIO; ///@brief 播报单元类型 typedef enum tagNET_PLAYAUDIO_TYPE { NET_PLAYAUDIO_TYPE_UNKNOWN = 0, NET_PLAYAUDIO_TYPE_PHRASE, // 短语类型,不进行解析,依次读每个字,有该字的语音文件支持 NET_PLAYAUDIO_TYPE_FILE, // 播放指定路径的语音文件(设备端完整路径) NET_PLAYAUDIO_TYPE_PLATERNUM, // 播报车牌号码,按车牌号码格式读出 NET_PLAYAUDIO_TYPE_MONEY, // 播报金额,按金额形式读出 NET_PLAYAUDIO_TYPE_DATE, // 播报日期,按日期形式读出 NET_PLAYAUDIO_TYPE_TIME, // 播报时间,按时间形式读出 NET_PLAYAUDIO_TYPE_EMPTY, // 空类型,停顿一个字符时间 }NET_PLAYAUDIO_TYPE; ///@brief 语音播报优先级 typedef enum EM_PLAYAUDIO_PRIORITY { EM_PLAYAUDIO_PRIORITY_UNKNOWN, // 未知 EM_PLAYAUDIO_PRIORITY_FRONT, // 插入播放队列最前端,播放完该文件后播放原来的文件 EM_PLAYAUDIO_PRIORITY_BACK, // 插入播放队列最后,等待其它文件播放完再播放该文件 EM_PLAYAUDIO_PRIORITY_EMERGENCY, // 优先级同 EM_PLAYAUDIO_PRIORITY_FRONT,但取消队列中正在播放文件 }EM_PLAYAUDIO_PRIORITY; ///@brief 语音播报内容 typedef struct tagNET_CTRL_PLAYAUDIO_INFO { DWORD dwSize; NET_PLAYAUDIO_TYPE emPlayAudioType; // 播报单元类型,详见NET_PLAYAUDIO_TYPE char szDetail[DH_COMMON_STRING_128]; // 详细内容各类型详细内容: // Phrase类型:"欢迎" // File类型: "/home/停车.pcm" // PlateNumbe类型: "浙A12345" // Money类型: "80.12元" // Date类型: "2014年4月10日" // Time类型: "1天10小时20分5秒 int nRepeatTimes; // 播放重复次数 EM_PLAYAUDIO_PRIORITY emPriority; // 播放优先级 }NET_CTRL_PLAYAUDIO_INFO; #define DH_MAX_PLAYAUDIO_COUNT 16 // 最大播报内容数目 ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_PLAYAUDIOEX 命令参数 typedef struct tagNET_CTRL_START_PLAYAUDIOEX { DWORD dwSize; unsigned int nAudioCount; // 播报内容数目 NET_CTRL_PLAYAUDIO_INFO stuAudioInfos[DH_MAX_PLAYAUDIO_COUNT]; // 语音播报内容 UINT nListRepeatTimes; // 语音播报内容重复次数, 描述所有播报单元 }NET_CTRL_START_PLAYAUDIOEX; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_ALARMBELL、DH_CTRL_STOP_ALARMBELL命令参数 typedef struct tagNET_CTRL_ALARMBELL { DWORD dwSize; int nChannelID; // 通道号(0开始) }NET_CTRL_ALARMBELL; ///@brief 门禁控制--开门方式 typedef enum tagEM_OPEN_DOOR_TYPE { EM_OPEN_DOOR_TYPE_UNKNOWN = 0, EM_OPEN_DOOR_TYPE_REMOTE, // 远程开门 EM_OPEN_DOOR_TYPE_LOCAL_PASSWORD, // 本地密码开门 EM_OPEN_DOOR_TYPE_LOCAL_CARD, // 本地刷卡开门 EM_OPEN_DOOR_TYPE_LOCAL_BUTTON, // 本地按钮开门 }EM_OPEN_DOOR_TYPE; ///@brief 开门方向 typedef enum tagEM_OPEN_DOOR_DIRECTION { EM_OPEN_DOOR_DIRECTION_UNKNOWN, // 未知,设备自行决定 EM_OPEN_DOOR_DIRECTION_FROM_ENTER, // 朝进门方向开门 EM_OPEN_DOOR_DIRECTION_FROM_LEAVE, // 朝出门方向开门 }EM_OPEN_DOOR_DIRECTION; ///@brief 远程权限验证结果 typedef enum tagEM_REMOTE_CHECK_CODE { EM_REMOTE_CHECK_CODE_UNKNOWN = -1, // 未知 EM_REMOTE_CHECK_CODE_SUCCESS, // 成功 EM_REMOTE_CHECK_CODE_FAIL, // 失败 }EM_REMOTE_CHECK_CODE; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_ACCESS_OPEN 命令参数 typedef struct tagNET_CTRL_ACCESS_OPEN { DWORD dwSize; int nChannelID; // 通道号(0开始) const char* szTargetID; // 转发目标设备ID,为NULL表示不转发 char szUserID[MAX_COMMON_STRING_32]; // 远程用户ID EM_OPEN_DOOR_TYPE emOpenDoorType; // 开门方式 EM_OPEN_DOOR_DIRECTION emOpenDoorDirection; // 开门方向 EM_REMOTE_CHECK_CODE emRemoteCheckCode; // 远程权限验证结果 char szShortNumber[16]; // 兼容字段 }NET_CTRL_ACCESS_OPEN; ///@brief 门禁工作模式类型 typedef enum tagEM_NET_DOOR_WORK_MODE_TYPE { NET_DOOR_WORK_MODE_UNKNOWN, // 未知 NET_DOOR_WORK_MODE_NORMAL, // 正常模式 NET_DOOR_WORK_MODE_SHUTDOWN, // 关闭 NET_DOOR_WORK_MODE_UNUSED, // 停用 NET_DOOR_WORK_MODE_OPEN_DOOR_CONTINUE, // 持续打开 }EM_NET_DOOR_WORK_MODE_TYPE; ///@brief 设置门禁工作模式(入参) typedef struct tagNET_IN_CTRL_ACCESS_SET_DOOR_WORK_MODE { DWORD dwSize; EM_NET_DOOR_WORK_MODE_TYPE emWorkMode; // 工作模式类型 int nChannelID; // 通道ID }NET_IN_CTRL_ACCESS_SET_DOOR_WORK_MODE; ///@brief 设置门禁工作模式(出参) typedef struct tagNET_OUT_CTRL_ACCESS_SET_DOOR_WORK_MODE { DWORD dwSize; }NET_OUT_CTRL_ACCESS_SET_DOOR_WORK_MODE; ///@brief 同步防护舱LED的时间(入参) typedef struct tagNET_IN_CTRL_SYNC_CABINLED_TIME { DWORD dwSize; }NET_IN_CTRL_SYNC_CABINLED_TIME; ///@brief 同步防护舱LED的时间(出参) typedef struct tagNET_OUT_CTRL_SYNC_CABINLED_TIME { DWORD dwSize; }NET_OUT_CTRL_SYNC_CABINLED_TIME; ///@brief 防护舱LED播放控制类型 typedef enum tagEM_NET_CABIN_LED_PLAY_CONTROL_MODE { NET_CABIN_LED_PLAY_CONTROL_MODE_UNKNOWN, // 未知 NET_CABIN_LED_PLAY_CONTROL_MODE_NORMAL_TURN_ON, // 正常播放 ( 开屏 ) NET_CABIN_LED_PLAY_CONTROL_MODE_NEXT_PROGRAM, // 后一节目 NET_CABIN_LED_PLAY_CONTROL_MODE_PREVIOUS_PROGRAM, // 前一节目 NET_CABIN_LED_PLAY_CONTROL_MODE_PAUSE, // 暂停播放 NET_CABIN_LED_PLAY_CONTROL_MODE_PAUSE_TURN_OFF, // 暂停播放 ( 关屏 ) NET_CABIN_LED_PLAY_CONTROL_MODE_PLAY_GO_ON, // 继续播放 NET_CABIN_LED_PLAY_CONTROL_MODE_GO_TO_TEST_ITSELF,// 进入自测 NET_CABIN_LED_PLAY_CONTROL_MODE_EXIT_TEST_ITSELF, // 退出自测 NET_CABIN_LED_PLAY_CONTROL_MODE_SYSTEM_RESET, // 复位系统 }EM_NET_CABIN_LED_PLAY_CONTROL_MODE; ///@brief 防护舱LED播放控制(入参) typedef struct tagNET_IN_CTRL_CABINLED_PLAYCONTROL { DWORD dwSize; EM_NET_CABIN_LED_PLAY_CONTROL_MODE emAction; // 播放类型 }NET_IN_CTRL_CABINLED_PLAYCONTROL; ///@brief 防护舱LED播放控制(出参) typedef struct tagNET_OUT_CTRL_CABINLED_PLAYCONTROL { DWORD dwSize; }NET_OUT_CTRL_CABINLED_PLAYCONTROL; ///@brief 防护舱LED更改内容的命令类型 typedef enum tagEM_NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE { NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE_UNKNOWN, NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE_ADD = 0, // 增加 NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE_MODIFY = 1, // 修改 NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE_DELETE = 2, // 删除 }EM_NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE; ///@brief 防护舱LED播放控制效果 typedef enum tagEM_NET_CABIN_LED_MODIFY_CONTENT_EFFECT_TYPE { NET_MODIFY_CONTENT_EFFECT_TYPE_UNKNOWN = -1, NET_MODIFY_CONTENT_EFFECT_TYPE_SHOW = 0, // 立即显示 NET_MODIFY_CONTENT_EFFECT_TYPE_MOVE_LEFT, // 左移 NET_MODIFY_CONTENT_EFFECT_TYPE_MOVE_RIGHT, // 右移 NET_MODIFY_CONTENT_EFFECT_TYPE_MOVE_UP, // 上移 NET_MODIFY_CONTENT_EFFECT_TYPE_MOVE_DOWN, // 下移 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_LEFT, // 左填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_RIGHT, // 右填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_UP, // 上填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_DOWN, // 下填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_UP_LEFT, // 从左上角填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_DOWN_LEFT, // 从左下角填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_UP_RIGHT, // 从右上角填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_DOWN_RIGHT, // 从右下角填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_LEFT_RIGHT_TO_CENTER, // 两边向中间填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_CENTER_TO_LEFT_RIGHT, // 中间向两边填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_UP_DOWN_TO_CENTER, // 上下向中间填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_CENTER_TO_UP_DOWN, // 中间向上下填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_LEFT_CROSS_RIGHT, // 左右交叉填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_UP_CROSS_DOWN, // 上下交叉填充 NET_MODIFY_CONTENT_EFFECT_TYPE_VERTICAL_BLINDS, // 垂直百叶窗 NET_MODIFY_CONTENT_EFFECT_TYPE_HORIZONTAL_BLINDS, // 水平百叶窗 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_CENTER_TO_SIDES, // 中间向四边填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_SIDES_TO_CENTER, // 四边向中间填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_CENTER_TO_CORNER, // 中间向四角填充 NET_MODIFY_CONTENT_EFFECT_TYPE_FILL_UP_CORNER_TO_CENTER, // 四角向中间填充 NET_MODIFY_CONTENT_EFFECT_TYPE_ROTATE_360, // 旋转360度 NET_MODIFY_CONTENT_EFFECT_TYPE_ROTATE_180, // 旋转180度 }EM_NET_CABIN_LED_MODIFY_CONTENT_EFFECT_TYPE; ///@brief 防护舱LED内容更改(入参) typedef struct tagNET_IN_CTRL_CABINLED_MODIFY_CONTENT { DWORD dwSize; EM_NET_CABIN_LED_MODIFY_CONTENT_CMD_TYPE emCmd; // 消息类型 int nMsgID; // 消息ID 取值1-5 EM_NET_CABIN_LED_MODIFY_CONTENT_EFFECT_TYPE emEffect; // 特效类型 int nSpeed; // 显示速度 取值为0到15 int nDuration; // 停留时间 单位为秒 char szText[512]; // 文本行内容 }NET_IN_CTRL_CABINLED_MODIFY_CONTENT; ///@brief 防护舱LED内容更改(出参) typedef struct tagNET_OUT_CTRL_CABINLED_MODIFY_CONTENT { DWORD dwSize; }NET_OUT_CTRL_CABINLED_MODIFY_CONTENT; ///@brief 获取防护舱LED内容(入参) typedef struct tagNET_IN_CTRL_CABINLED_GET_CONTENT { DWORD dwSize; int nMsgID; // 消息ID 取值1-5 }NET_IN_CTRL_CABINLED_GET_CONTENT; ///@brief 获取防护舱LED内容(出参) typedef struct tagNET_OUT_CTRL_CABINLED_GET_CONTENT { DWORD dwSize; int nMsgID; // 消息ID 取值1-5 EM_NET_CABIN_LED_MODIFY_CONTENT_EFFECT_TYPE emEffect; // 特效类型 int nSpeed; // 显示速度 取值为0到15 int nDuration; // 停留时间 单位为秒 char szText[512]; // 文本行内容 }NET_OUT_CTRL_CABINLED_GET_CONTENT; #define NET_CABINLED_SCHEDULE_TIME_SECTION_NUM 8 // 防护舱LED显示计划时间段的最大数目 ///@brief 设置防护舱LED显示设置计划(入参) typedef struct tagNET_IN_CTRL_CABINLED_SET_SCHEDULE { DWORD dwSize; int nIndex; // 计划索引号 0 表示周日 1~6 表示周一到周六 DH_TSECT stuTimeSection[NET_CABINLED_SCHEDULE_TIME_SECTION_NUM]; // 时间段数据数组 DH_TSECT中的字段bEnable 为0表示无效,正值表示消息号 }NET_IN_CTRL_CABINLED_SET_SCHEDULE; ///@brief 设置防护舱LED显示设置计划(出参) typedef struct tagNET_OUT_CTRL_CABINLED_SET_SCHEDULE { DWORD dwSize; }NET_OUT_CTRL_CABINLED_SET_SCHEDULE; ///@brief 获取防护舱LED显示设置计划(入参) typedef struct tagNET_IN_CTRL_CABINLED_GET_SCHEDULE { DWORD dwSize; int nIndex; // 计划索引号 0 表示周日 1~6 表示周一到周六 }NET_IN_CTRL_CABINLED_GET_SCHEDULE; ///@brief 获取防护舱LED显示设置计划(出参) typedef struct tagNET_OUT_CTRL_CABINLED_GET_SCHEDULE { DWORD dwSize; DH_TSECT stuTimeSection[NET_CABINLED_SCHEDULE_TIME_SECTION_NUM]; // 时间段数据数组 DH_TSECT中的字段bEnable 为0表示无效,正值表示消息号 }NET_OUT_CTRL_CABINLED_GET_SCHEDULE; ///@brief 获取防护舱LED显示字符编码方式(入参) typedef struct tagNET_IN_CTRL_CABINLED_GET_CHAR_ENCODING { DWORD dwSize; // 结构体大小 }NET_IN_CTRL_CABINLED_GET_CHAR_ENCODING; ///@brief 获取防护舱LED显示字符编码方式(出参) typedef struct tagNET_OUT_CTRL_CABINLED_GET_CHAR_ENCODING { DWORD dwSize; // 结构体大小 int nCharacterEncoding; // 字符编码方式 0-GB2312 1-Unicode }NET_OUT_CTRL_CABINLED_GET_CHAR_ENCODING; ///@brief 防护舱LED控制类型 typedef enum tagEM_CABIN_LED_CONTROL_TYPE { DH_CABIN_LED_CONTROL_UNKNOWN, // 未知 DH_CABIN_LED_CONTROL_SYNC_TIME, // 同步防护舱LED的时间(pInParam对应结构体NET_IN_CTRL_SYNC_CABINLED_TIME,pOutParam对应结构体NET_OUT_CTRL_SYNC_CABINLED_TIME) DH_CABIN_LED_CONTROL_PLAY_CONTROL, // 防护舱LED播放控制(pInParam对应结构体NET_IN_CTRL_CABINLED_PLAYCONTROL,pOutParam对应结构体NET_OUT_CTRL_CABINLED_PLAYCONTROL) DH_CABIN_LED_CONTROL_MODIFY_CONTENT, // 防护舱LED更改内容(pInParam对应结构体NET_IN_CTRL_CABINLED_MODIFY_CONTENT,pOutParam对应结构体NET_OUT_CTRL_CABINLED_MODIFY_CONTENT) DH_CABIN_LED_CONTROL_GET_CONTENT, // 获取防护舱LED内容(pInParam对应结构体NET_IN_CTRL_CABINLED_GET_CONTENT,pOutParam对应结构体NET_OUT_CTRL_CABINLED_GET_CONTENT) DH_CABIN_LED_CONTROL_SET_SCHEDULE, // 设置防护舱LED显示计划(pInParam对应结构体NET_IN_CTRL_CABINLED_SET_SCHEDULE,pOutParam对应结构体NET_OUT_CTRL_CABINLED_SET_SCHEDULE) DH_CABIN_LED_CONTROL_GET_SCHEDULE, // 获取防护舱LED显示计划(pInParam对应结构体NET_IN_CTRL_CABINLED_GET_SCHEDULE,pOutParam对应结构体NET_OUT_CTRL_CABINLED_GET_SCHEDULE) DH_CABIN_LED_CONTROL_GET_CHAR_ENCODING, // 获取防护舱LED显示字符编码方式(pInParam对应结构体NET_IN_CTRL_CABINLED_GET_CHAR_ENCODING,pOutParam对应结构体NET_OUT_CTRL_CABINLED_GET_CHAR_ENCODING) }EM_CABIN_LED_CONTROL_TYPE; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_ACCESS_CLOSE 命令参数 typedef struct tagNET_CTRL_ACCESS_CLOSE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号(0开始) }NET_CTRL_ACCESS_CLOSE; ///@brief 事件类型 typedef enum tagNET_ALARM_TYPE { NET_ALARM_LOCAL = 0, //开关量防区的报警事件(对应 DH_ALARM_ALARM_EX2 事件) NET_ALARM_ALARMEXTENDED, //扩展模块报警事件(对应 DH_ALARM_ALARMEXTENDED 事件) NET_ALARM_TEMP, //温度报警事件(对应 DH_ALARM_TEMPERATURE 事件) NET_ALARM_URGENCY, //紧急报警事件(对应 DH_URGENCY_ALARM_EX 事件) NET_ALARM_RCEMERGENCYCALL, //紧急呼叫报警事件(对应 DH_ALARM_RCEMERGENCY_CALL 事件) NET_ALARM_ALL, //所有报警事件 }NET_ALARM_TYPE; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_CLEAR_ALARM 命令参数 typedef struct tagNET_CTRL_CLEAR_ALARM { DWORD dwSize; int nChannelID; // 防区通道号, -1 表示所有通道 NET_ALARM_TYPE emAlarmType; // 事件类型(支持的类型较少,建议用nEventType字段) const char* szDevPwd; // 登陆设备的密码,如不使用加密消警,直接赋值为NULL BOOL bEventType; // 表示是否启用nEventType字段, TRUE:nEventType代替emAlarmType字段, FALSE:沿用emAlarmType字段,忽略nEventType字段 int nEventType; // 事件类型, 对应 fMessCallBack 回调来上的lCommand字段, 即CLIENT_StartListenEx接口获得事件类型 // 比如DH_ALARM_ALARM_EX2表示本地报警事件 }NET_CTRL_CLEAR_ALARM; ///@brief 电视墙显示信息控制参数 typedef struct tagNET_CTRL_MONITORWALL_TVINFO { DWORD dwSize; int nMonitorWallID; // 电视墙ID, DH_CTRL_MONITORWALL_TVINFO 和 DH_DEVSTATE_MONITORWALL_TVINFO都需要填写 BOOL bDecodeChannel; // 显示解码通道信息, DH_CTRL_MONITORWALL_TVINFO 填写 BOOL bControlID; // 显示屏幕控制ID, DH_CTRL_MONITORWALL_TVINFO 填写 BOOL bCameraID; // 显示解码通道视频源控制ID, DH_CTRL_MONITORWALL_TVINFO 填写 } NET_CTRL_MONITORWALL_TVINFO; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_VIDEO_ANALYSE 命令参数 typedef struct tagNET_CTRL_START_VIDEO_ANALYSE { DWORD dwSize; int nChannelId; // 通道号 }NET_CTRL_START_VIDEO_ANALYSE; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_STOP_VIDEO_ANALYSE 命令参数 typedef struct tagNET_CTRL_STOP_VIDEO_ANALYSE { DWORD dwSize; int nChannelId; // 通道号 }NET_CTRL_STOP_VIDEO_ANALYSE; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_MULTIPLAYBACK_CHANNALES 命令参数 typedef struct tagNET_CTRL_MULTIPLAYBACK_CHANNALES { DWORD dwSize; LLONG lPlayBackHandle; // 回放句柄,CLIENT_MultiPlayBack接口返回值 int nChannels[DH_MAX_MULTIPLAYBACK_CHANNEL_NUM];// 预览通道号 int nChannelNum; // 预览通道数 }NET_CTRL_MULTIPLAYBACK_CHANNALES; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_SET_BYPASS 命令参数 typedef struct tagNET_CTRL_SET_BYPASS { DWORD dwSize; const char* szDevPwd; // 登入设备的密码 NET_BYPASS_MODE emMode; // 通道状态 int nLocalCount; // 本地报警输入通道个数 int* pnLocal; // 本地报警输入通道号 int nExtendedCount; // 扩展模块报警输入通道个数 int* pnExtended; // 扩展模块报警输入通道号 }NET_CTRL_SET_BYPASS; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_SET_MEDIAKIND 命令参数 typedef struct tagNET_CTRL_SET_MEDIAKIND { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_CTRL_SET_MEDIAKIND) int nMediaKind; // 媒体种类,0:包含音频和视频,1:只包含视频,2:只包含音频 DWORD dwChannelCount; // 有效通道数 int nChannels[256]; // 视频通道号(从0开始) } NET_IN_SET_MEDIAKIND; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_SET_MEDIAKIND 输出参数 typedef struct tagNET_OUT_SET_MEDIAKIND { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_SET_MEDIAKIND) } NET_OUT_SET_MEDIAKIND; /////////////////////////////////////////////////////////////////////////////////////////////////// ///@brief CLIENT_QueryDevState接口的 DH_DEVSTATE_GET_BYPASS 命令参数 typedef struct tagNET_DEVSTATE_GET_BYPASS { DWORD dwSize; int nLocalCount; // 本地报警输入通道个数 int* pnLocal; // 本地报警输入通道号 int nExtendedCount; // 扩展模块报警输入通道个数 int* pnExtended; // 扩展模块报警输入通道号 NET_BYPASS_MODE* pemLocal; // 本地报警输入通道状态 NET_BYPASS_MODE* pemExtended; // 扩展模块报警输入通道状态 }NET_DEVSTATE_GET_BYPASS; ///@brief CLIENT_QueryDevState接口的 DH_DEVSTATE_BURNERDOOR 命令参数 typedef struct tagNET_DEVSTATE_BURNERDOOR { DWORD dwSize; const char* szBurnerName; // 光盘名称,如“/dev/sda” bool bEjected; // 是否已经弹出 BYTE Reserved[3]; // 保留 }NET_DEVSTATE_BURNERDOOR; ///@brief CLIENT_QueryDevState接口的 DH_DEVSTATE_GET_DATA_CHECK 命令参数 typedef struct tagNET_DEVSTATE_DATA_CHECK { DWORD dwSize; // 结构体大小 const char* szBurnerName; // 光盘名称,如“/dev/s",如果是多光盘的话,任何一个光盘都可以 char szState[DH_MAX_STRING_LEN]; // "NotStart":尚未开始,"Verifying":校验中,"Failed":失败,"Successed":成功 int nPercent; // 校验百分比:0-100,state是Verifying时才有效 }NET_DEVSTATE_DATA_CHECK; ///@brief 设备信息 typedef enum { DH_DVR_DISCONNECT=-1, // 验证期间设备断线回调 DH_DVR_SERIAL_RETURN=1, // 设备注册携带序列号 对应 char* szDevSerial NET_DEV_AUTOREGISTER_RETURN, // 设备注册携带序列号和令牌 对应NET_CB_AUTOREGISTER NET_DEV_NOTIFY_IP_RETURN, // 设备仅上报IP, 不作为主动注册用, 用户获取ip后只能按照约定的端口按照非主动注册的类型登录 }EM_DEV_INFO; ///@brief CLIENT_ListenServer 接口回调fServiceCallBack函数支持的命令类型 typedef struct tagNET_CB_AUTOREGISTER { DWORD dwSize; // 结构体大小 char szDevSerial[DH_DEV_SERIALNO_LEN];// 序列号 char szToken[MAX_PATH]; // 令牌 }NET_CB_AUTOREGISTER; ///@brief 公网代理注册相关结构体 typedef struct tagCLOUDSERVICE_CONNECT_PARAM { DWORD dwSize; char szDstIp[DH_MAX_IPADDR_EX_LEN]; // 服务器IP int nDstPort; // 服务器端口号 DWORD dwConnectType; // 连接类型:0表示主连接,1表示隧道连接,2数据连接, 3动态注册子连接(使用0xb4注册) char szToken[MAX_PATH]; // 使用者自定义设备通道唯一ID令牌 }NET_CLOUDSERVICE_CONNECT_PARAM; ///@brief 公网代理注册 typedef struct tagCLOUDSERVICE_CONNECT_RESULT { DWORD dwSize; DWORD dwConnectState; // 当前连接状态:1成功,0失败 char szMessage[DH_MAX_CLOUDCONNECT_STATE_LEN]; // 连接状态信息,"Success","Password Error","Network Error","Timeout" }NET_CLOUDSERVICE_CONNECT_RESULT; ///////////////////////////配置相关定义/////////////////////////////// ///@brief 设备信息 typedef struct tagNET_DEVICEINFO { BYTE sSerialNumber[DH_SERIALNO_LEN]; // 序列号 BYTE byAlarmInPortNum; // DVR报警输入个数 BYTE byAlarmOutPortNum; // DVR报警输出个数 BYTE byDiskNum; // DVR硬盘个数 BYTE byDVRType; // DVR类型,见枚举 NET_DEVICE_TYPE union { BYTE byChanNum; // DVR通道个数,登陆成功时有效 BYTE byLeftLogTimes; // 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效 }; } NET_DEVICEINFO, *LPNET_DEVICEINFO; ///@brief 设备信息扩展 typedef struct { BYTE sSerialNumber[DH_SERIALNO_LEN]; // 序列号 int nAlarmInPortNum; // DVR报警输入个数 int nAlarmOutPortNum; // DVR报警输出个数 int nDiskNum; // DVR硬盘个数 int nDVRType; // DVR类型,见枚举 NET_DEVICE_TYPE int nChanNum; // DVR通道个数 BYTE byLimitLoginTime; // 在线超时时间,为0表示不限制登陆,非0表示限制的分钟数 BYTE byLeftLogTimes; // 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效 BYTE bReserved[2]; // 保留字节,字节对齐 int nLockLeftTime; // 当登陆失败,用户解锁剩余时间(秒数), -1表示设备未设置该参数 char Reserved[24]; // 保留 } NET_DEVICEINFO_Ex, *LPNET_DEVICEINFO_Ex; ///@brief 设备软件版本信息,高16位表示主版本号,低16位表示次版本号 typedef struct { DWORD dwSoftwareVersion; DWORD dwSoftwareBuildDate; DWORD dwDspSoftwareVersion; DWORD dwDspSoftwareBuildDate; DWORD dwPanelVersion; DWORD dwPanelSoftwareBuildDate; DWORD dwHardwareVersion; DWORD dwHardwareDate; DWORD dwWebVersion; DWORD dwWebBuildDate; } DH_VERSION_INFO, *LPDH_VERSION_INFO; ///@brief 设备软件版本信息,对应CLIENT_QueryDevState接口 typedef struct { char szDevSerialNo[DH_DEV_SERIALNO_LEN]; // 序列号 char byDevType; // 设备类型,见枚举NET_DEVICE_TYPE char szDevType[DH_DEV_TYPE_LEN]; // 设备详细型号,字符串格式,可能为空 int nProtocalVer; // 协议版本号 char szSoftWareVersion[DH_MAX_URL_LEN]; DWORD dwSoftwareBuildDate; char szPeripheralSoftwareVersion[DH_MAX_URL_LEN];// 从片版本信息,字符串格式,可能为空 DWORD dwPeripheralSoftwareBuildDate; char szGeographySoftwareVersion[DH_MAX_URL_LEN]; // 地理信息定位芯片版本信息,字符串格式,可能为空 DWORD dwGeographySoftwareBuildDate; char szHardwareVersion[DH_MAX_URL_LEN]; DWORD dwHardwareDate; char szWebVersion[DH_MAX_URL_LEN]; DWORD dwWebBuildDate; char szDetailType[MAX_COMMON_STRING_64]; // 设备详细型号,字符串格式,可能为空 char reserved[192]; } DHDEV_VERSION_INFO; ///@brief DSP能力描述,对应CLIENT_GetDevConfig接口 typedef struct { DWORD dwVideoStandardMask; // 视频制式掩码,按位表示设备能够支持的视频制式 DWORD dwImageSizeMask; // 分辨率掩码,按位表示设备能够支持的分辨率设置 DWORD dwEncodeModeMask; // 编码模式掩码,按位表示设备能够支持的编码模式设置 DWORD dwStreamCap; // 按位表示设备支持的多媒体功能, // 第一位表示支持主码流 // 第二位表示支持辅码流1 // 第三位表示支持辅码流2 // 第五位表示支持jpg抓图 DWORD dwImageSizeMask_Assi[8]; // 表示主码流为各分辨率时,支持的辅码流分辨率掩码。 DWORD dwMaxEncodePower; // DSP支持的最高编码能力 WORD wMaxSupportChannel; // 每块DSP支持最多输入视频通道数 WORD wChannelMaxSetSync; // DSP每通道的最大编码设置是否同步;0:不同步,1:同步 } DH_DSP_ENCODECAP, *LPDH_DSP_ENCODECAP; ///@brief DSP能力描述,扩展类型,对应CLIENT_QueryDevState接口 typedef struct { DWORD dwVideoStandardMask; // 视频制式掩码,按位表示设备能够支持的视频制式 DWORD dwImageSizeMask; // 分辨率掩码,按位表示设备能够支持的分辨率 DWORD dwEncodeModeMask; // 编码模式掩码,按位表示设备能够支持的编码模式 DWORD dwStreamCap; // 按位表示设备支持的多媒体功能, // 第一位表示支持主码流 // 第二位表示支持辅码流1 // 第三位表示支持辅码流2 // 第五位表示支持jpg抓图 DWORD dwImageSizeMask_Assi[32]; // 表示主码流为各分辨率时,支持的辅码流分辨率掩码。 DWORD dwMaxEncodePower; // DSP支持的最高编码能力 WORD wMaxSupportChannel; // 每块DSP支持最多输入视频通道数 WORD wChannelMaxSetSync; // DSP每通道的最大编码设置是否同步;0:不同步,1:同步 BYTE bMaxFrameOfImageSize[32]; // 不同分辨率下的最大采集帧率,与dwVideoStandardMask按位对应 BYTE bEncodeCap; // 标志,配置时要求符合下面条件,否则配置不能生效; // 0:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力, // 1:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力, // 辅码流的编码能力 <= 主码流的编码能力, // 辅码流的分辨率 <= 主码流的分辨率, // 主码流和辅码流的帧率 <= 前端视频采集帧率 // 2:N5的计算方法 // 辅码流的分辨率 <= 主码流的分辨率 // 查询支持的分辨率和相应最大帧率 char reserved[95]; } DHDEV_DSP_ENCODECAP, *LPDHDEV_DSP_ENCODECAP; ///@brief DSP扩展能力描述,对应CLIENT_QueryDevState接口 typedef struct { DWORD dwVideoStandardMask; // 视频制式掩码,按位表示设备能够支持的视频制式 DWORD dwImageSizeMask; // 分辨率掩码,按位表示设备能够支持的分辨率 DWORD dwEncodeModeMask; // 编码模式掩码,按位表示设备能够支持的编码模式 DWORD dwStreamCap; // 按位表示设备支持的多媒体功能, // 第一位表示支持主码流 // 第二位表示支持辅码流1 // 第三位表示支持辅码流2 // 第四位表示支持辅码流3 // 第五位表示支持jpg抓图 DWORD dwImageSizeMask_Assi[3][64];// 表示主码流为各分辨率时,支持的辅码流分辨率掩码, 数组中的0,1,2元素分别代表辅码流1,2,3 DWORD dwMaxEncodePower; // DSP支持的最高编码能力 WORD wMaxSupportChannel; // 每块DSP支持最多输入视频通道数 WORD wChannelMaxSetSync; // DSP每通道的最大编码设置是否同步;0:不同步,1:同步 BYTE bMaxFrameOfImageSize[32]; // 不同分辨率下的最大采集帧率,与dwVideoStandardMask按位对应 BYTE bEncodeCap; // 标志,配置时要求符合下面条件,否则配置不能生效; // 0:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力, // 1:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力, // 辅码流的编码能力 <= 主码流的编码能力, // 辅码流的分辨率 <= 主码流的分辨率, // 主码流和辅码流的帧率 <= 前端视频采集帧率 // 2:N5的计算方法 // 辅码流的分辨率 <= 主码流的分辨率 // 查询支持的分辨率和相应最大帧率 BYTE btReserve1[3]; // 字节对齐 DWORD dwExtraStream; // 第0位表示主码流, 其它按位依次表示辅码流, 如第一位表示辅码流1,第二们表示辅码流2 DWORD dwCompression[3]; // 每一个值表示对应辅码流的编码格式支持 char reserved[108]; } DHDEV_DSP_ENCODECAP_EX, *LPDHDEV_DSP_ENCODECAP_EX; ///@brief 系统信息 typedef struct { DWORD dwSize; /* 下面是设备的只读部分 */ DH_VERSION_INFO stVersion; DH_DSP_ENCODECAP stDspEncodeCap; // DSP能力描述 BYTE szDevSerialNo[DH_DEV_SERIALNO_LEN]; // 序列号 BYTE byDevType; // 设备类型,见枚举NET_DEVICE_TYPE BYTE szDevType[DH_DEV_TYPE_LEN]; // 设备详细型号,字符串格式,可能为空 BYTE byVideoCaptureNum; // 视频口数量 BYTE byAudioCaptureNum; // 音频口数量 BYTE byTalkInChanNum; // 对讲输入接口数量 BYTE byTalkOutChanNum; // 对讲输出接口数量 BYTE byDecodeChanNum; // NSP BYTE byAlarmInNum; // 报警输入口数 BYTE byAlarmOutNum; // 报警输出口数 BYTE byNetIONum; // 网络口数 BYTE byUsbIONum; // USB口数量 BYTE byIdeIONum; // IDE数量 BYTE byComIONum; // 串口数量 BYTE byLPTIONum; // 并口数量 BYTE byVgaIONum; // NSP BYTE byIdeControlNum; // NSP BYTE byIdeControlType; // NSP BYTE byCapability; // NSP,扩展描述 BYTE byMatrixOutNum; // 视频矩阵输出口数 /* 下面是设备的可写部分 */ BYTE byOverWrite; // 硬盘满处理方式(覆盖、停止) BYTE byRecordLen; // 录象打包长度 BYTE byDSTEnable; // 是否实行夏令时 1-实行 0-不实行 WORD wDevNo; // 设备编号,用于遥控 BYTE byVideoStandard; // 视频制式:0-PAL,1-NTSC BYTE byDateFormat; // 日期格式 BYTE byDateSprtr; // 日期分割符(0:".",1:"-",2:"/") BYTE byTimeFmt; // 时间格式 (0-24小时,1-12小时) BYTE byLanguage; // 枚举值详见DH_LANGUAGE_TYPE } DHDEV_SYSTEM_ATTR_CFG, *LPDHDEV_SYSTEM_ATTR_CFG; ///@brief 修改设备配置返回信息 typedef struct { DWORD dwType; // 类型(即GetDevConfig和SetDevConfig的类型) WORD wResultCode; // 返回码;0:成功,1:失败,2:数据不合法,3:暂时无法设置,4:没有权限 WORD wRebootSign; // 重启标志;0:不需要重启,1:需要重启才生效 DWORD dwReserved[2]; // 保留 } DEV_SET_RESULT; // 动态子链接错误码起始处 #define DYNAMIC_RESPONSE_ERROR_CODE_BEGIN 1000 ///@brief 请求预览或回放的错误返回信息 typedef struct { DWORD dwResultCode; // 错误返回码 // 1:无权限,2:设备不支持此操作,3:资源不足, 4:设备无法获取当前请求数据 // 11:表示高级用户抢占低级用户资源 // 12:禁止入网 // 13:磁盘读数据限制 // 14: 多画面预览已打开,资源不足,压缩回放失败 // 15: 压缩回放功能已打开,导致失败 // 16: 表示此视频通道处于离线,拉流失败 // 21: 未知的压缩失败原因, // 22: 超出解码能力,导致压缩失败 // 23: 超出压缩能力,导致压缩失败 // 24: 无原始码流,导致压缩失败 // 25: 压缩通道所在的从片掉线,导致压缩失败 // 26: 主码流成功的情况下,拉辅码流时登录失败 // 27: 辅码流被前端关闭 // 28: KMS服务器未连接或者异常,导致加密录像回放失败 // 动态子链接中返回的错误码从1000开始 // DYNAMIC_RESPONSE_ERROR_CODE_BEGIN + 1(1001): 通道未添加 LLONG lPlayHandle; // 相应句柄值 BYTE byReserved[32]; // 保留字节 }DEV_PLAY_RESULT; ///@brief 请求语音对讲的错误返回信息 typedef struct { DWORD dwResultCode; // 错误返回码 CLIENT_GetLastError接口的返回值 // NET_ERROR_TALK_REJECT _EC(375) // 拒绝对讲 // NET_ERROR_TALK_RESOURCE_CONFLICIT _EC(377) // 资源冲突 // NET_ERROR_TALK_UNSUPPORTED_ENCODE _EC(378) // 不支持的语音编码格式 // NET_ERROR_TALK_RIGHTLESS _EC(379) // 无权限 LLONG lTalkHandle; // 相应句柄值 BYTE byReserved[32]; // 保留字节 }DEV_TALK_RESULT; ///@brief DST(夏令时)配置 typedef struct tagDH_DST_POINT { int nYear; // 年[200 - 2037] int nMonth; // 月[1 - 12] int nHour; // 小时 [0 - 23] int nMinute; // 分钟 [0 - 59] int nWeekOrDay; // [-1 - 4]0:表示使用按日期计算的方法 // 1: 按周计算: 第一周,2: 第二周,3: 第三周,4: 第四周,-1: 最后一周 union { int iWeekDay; // 周[0 - 6](nWeekOrDay:按周计算时)0:星期日, 1:星期一, 2:星期二,3:星期三,4:星期四,5:星期五,6:星期六 int iDay; // 日期[1 - 31] (nWeekOrDay:按日期计算) }; DWORD dwReserved[8]; // 保留 }DH_DST_POINT; ///@brief DST(夏令时)配置 typedef struct { DWORD dwSize; int nDSTType; // 夏令时定位方式 0:按日期定位方式, 1:按周定位方式 DH_DST_POINT stDSTStart; // 开始夏令时 DH_DST_POINT stDSTEnd; // 结束夏令时 DWORD dwReserved[16]; // 保留 }DHDEV_DST_CFG; ///@brief 自动维护配置 typedef struct { DWORD dwSize; BYTE byAutoRebootDay; // 自动重启;0:从不, 1:每天,2:每星期日,3:每星期一,...... BYTE byAutoRebootTime; // 0:0:00,1:1:00,......23:23:00 BYTE byAutoDeleteFilesTime; // 自动删除文件;0:从不,1:24H,2:48H,3:72H,4:96H,5:ONE WEEK,6:ONE MONTH BYTE reserved[13]; // 保留位 } DHDEV_AUTOMT_CFG; ///@brief 车载中硬盘信息 typedef struct { DWORD dwSize; // 结构体大小,此属性必须初始化 DWORD dwVolume; // 硬盘容量 DWORD dwFreeSpace; // 硬盘的剩余空间, 单位MB(B表示字节) BYTE byModle[DH_MAX_HARDDISK_TYPE_LEN]; // 硬盘型号 BYTE bySerialNumber[DH_MAX_HARDDISK_SERIAL_LEN]; // 硬盘序列号 }DHDEV_VEHICLE_DISK; ///@brief 车载相关的3G模块信息,最大支持DH_MAX_SIM_NUM个模块 typedef struct { DWORD dwSize; // 结构体大小,此属性必须初始化 BYTE szIMSI[DH_MAX_SIM_LEN]; // SIM卡的值例如460012002778636 ,前3位为国家代号MCC,4-6位为网络代号MNC,后面的为移动用户身份标识MSIN,总共不会超过15个字符 BYTE szMDN[DH_MAX_MDN_LEN]; // SIM卡MDN值 }DHDEV_VEHICLE_3GMODULE; ///@brief 车载的基本信息 typedef struct { DWORD dwSize; // 结构体大小,此属性必须初始化 DWORD dwSoftwareBuildDate; // 软件生成日期 char szVersion[DH_MAX_VERSION_LEN]; // 软件版本 char szDevSerialNo[DH_DEV_SERIALNO_LEN]; // 主板序列号 char szDevType[DH_DEV_TYPE_LEN]; // 设备详细型号,字符串格式,可能为空 DWORD dwDiskNum; // 硬盘个数 DHDEV_VEHICLE_DISK stuHarddiskInfo[DH_MAX_DISKNUM]; // 硬盘相关信息 DWORD dw3GModuleNum; // 3G模块个数 DHDEV_VEHICLE_3GMODULE stu3GModuleInfo[DH_MAX_SIM_NUM]; // 3G模块相关信息 }DHDEV_VEHICLE_INFO; ///@brief 网络接口,最大支持DH_MAX_NETINTERFACE_NUM个网卡 typedef struct tagDHDEV_NETINTERFACE_INFO { int dwSize; BOOL bValid; // 是否有效 BOOL bVirtual; // 是否虚拟网卡 int nSpeed; // 网卡理论速度(Mbps) int nDHCPState; // 0-未使能, 1-正在获取, 2-获取成功 char szName[DH_NETINTERFACE_NAME_LEN]; // 网口名称 char szType[DH_NETINTERFACE_TYPE_LEN]; // 网络类型 char szMAC[DH_MACADDR_LEN]; // MAC地址 char szSSID[DH_MAX_SSID_LEN]; // SSID, 只对无线网络有效(szType == "Wireless") char szConnStatus[DH_MAX_CONNECT_STATUS_LEN]; // Wifi、3G的连接状态,"Inexistence" : 网络不存在 "Down":关闭 "Disconn":未连接 "Connecting":正连接 "Connected": 已连接 int nSupportedModeNum; // 实际3G支持的网络模式个数 char szSupportedModes[DH_MAX_MODE_NUM][DH_MAX_MODE_LEN];// 3G支持的网络模式 "TD-SCDMA", "WCDMA", "CDMA1x", "EDGE", "EVDO" BOOL bSupportLongPoE; // 是否支持长距离POE速度协商,需要网卡和交换机协商后才能确定 char szNetCardName[8]; // 真实网卡名 char szModuleName[32]; // 模块名称 char szIMEI[16]; // 国际移动用户识别码 char szICCID[24]; // 集成电路卡识别码即SIM卡卡号,20位数字组成 } DHDEV_NETINTERFACE_INFO; ///@brief 区域;各边距按整长8192的比例 typedef struct { long left; long top; long right; long bottom; } DH_RECT, *LPDH_RECT; ///@brief 区域;各边距按整长8192的比例 typedef struct tagNET_RECT { int nLeft; int nTop; int nRight; int nBottom; } NET_RECT; ///@brief 区域;各边距按整长8192的比例 typedef struct tagNET_RECT_EX { unsigned short nLeft; unsigned short nTop; unsigned short nRight; unsigned short nBottom; } NET_RECT_EX; ///@brief 二维空间点 typedef struct { short nx; short ny; } DH_POINT, *LPDH_POINT, NET_POINT, *LPNET_POINT; ///@brief 二维空间点 typedef struct { unsigned short nx; unsigned short ny; } DH_POINT_EX, NET_POINT_EX; ///@brief 区域或曲线顶点信息 typedef struct { int nPointNum; // 顶点数 DH_POINT stuPoints[DH_MAX_DETECT_REGION_NUM]; // 顶点信息 }DH_POLY_POINTS; ///@brief OSD属性结构 typedef struct tagENCODE_WIDGET { DWORD rgbaFrontground; // 物件的前景;按字节表示,分别为红、绿、蓝和透明度 DWORD rgbaBackground; // 物件的背景;按字节表示,分别为红、绿、蓝和透明度 DH_RECT rcRect; // 位置 BYTE bShow; // 显示使能 BYTE bExtFuncMask; // 扩展使能 ,掩码 // bit0 表示是否显示星期几,0-不显示 1-显示 BYTE byReserved[2]; } DH_ENCODE_WIDGET, *LPDH_ENCODE_WIDGET; ///@brief 通道音视频属性 typedef struct { // 视频参数 BYTE byVideoEnable; // 视频使能;1:打开,0:关闭 BYTE byBitRateControl; // 码流控制;参照常量"码流控制"定义 BYTE byFramesPerSec; // 帧率 BYTE byEncodeMode; // 编码模式;参照常量"编码模式"定义 BYTE byImageSize; // 分辨率;参照常量"分辨率"定义 BYTE byImageQlty:7; // 将byImageQlty进行扩展,若byImageQlty为0,抓图配置的ImgQlty为10/30/50/60/80/100六个值,码流配置的ImgQlty值为1-6,兼容之前的1-6档次,若//ImgQltyType为1,则ImgQlty范围为0~100 BYTE byImageQltyType:1; WORD wLimitStream; // 限码流参数 /* 音频参数 */ BYTE byAudioEnable; // 音频使能;1:打开,0:关闭 BYTE wFormatTag; // 音频编码类型: 0:G711A,1:PCM,2:G711U,3:AMR,4:AAC WORD nChannels; // 声道数 WORD wBitsPerSample; // 采样深度 BYTE bAudioOverlay; // 音频叠加使能 BYTE bH264ProfileRank; // H.264 Profile等级(当编码模式为H264时此参数值有效),参照枚举类型EM_H264_PROFILE_RANK,传0,兼容以前,表示该字段无效,不需要考虑级别。 DWORD nSamplesPerSec; // 采样率 BYTE bIFrameInterval; // I帧间隔帧数量,描述两个I帧之间的P帧个数,0-149 BYTE bScanMode; // NSP BYTE bReserved_3; BYTE bReserved_4; } DH_VIDEOENC_OPT, *LPDH_VIDEOENC_OPT; ///@brief 画面颜色属性 typedef struct { DH_TSECT stSect; BYTE byBrightness; // 亮度;0-100 BYTE byContrast; // 对比度;0-100 BYTE bySaturation; // 饱和度;0-100 BYTE byHue; // 色度;0-100 BYTE byGainEn; // 增益使能 BYTE byGain; // 增益;0-100 BYTE byGamma; // 伽马值 0-100 BYTE byReserved[1]; } DH_COLOR_CFG, *LPDH_COLOR_CFG; ///@brief 图像通道属性结构体 typedef struct { WORD dwSize; BYTE bNoise; BYTE bMode; // (车载特殊需求)模式一(画质优先):录像分辨率采用4路D1,帧率2fps,码率128kbps(每小时225MB) // 模式二(流畅优先):录像分辨率采用4路CIF,帧率12fps,码率256kbps(每小时550MB) // 模式三(自定义)录像分辨率可以由用户自定义,限定最大能力为4CIF/25fps char szChannelName[DH_CHAN_NAME_LEN]; DH_VIDEOENC_OPT stMainVideoEncOpt[DH_REC_TYPE_NUM]; DH_VIDEOENC_OPT stAssiVideoEncOpt[DH_N_ENCODE_AUX]; DH_COLOR_CFG stColorCfg[DH_N_COL_TSECT]; DH_ENCODE_WIDGET stTimeOSD; DH_ENCODE_WIDGET stChannelOSD; DH_ENCODE_WIDGET stBlindCover[DH_N_COVERS]; // 单区域遮挡 BYTE byBlindEnable; // 区域遮盖开关;0x00:不使能遮盖,0x01:仅遮盖设备本地预览,0x10:仅遮盖录像及网络预览,0x11:都遮盖 BYTE byBlindMask; // 区域遮盖掩码;第一位:设备本地预览;第二位:录像(及网络预览) */ BYTE bVolume; // 音量阀值(0~100可调) BYTE bVolumeEnable; // 音量阀值使能 } DHDEV_CHANNEL_CFG, *LPDHDEV_CHANNEL_CFG; ///@brief 预览图像参数 typedef struct { DWORD dwSize; DH_VIDEOENC_OPT stPreView; DH_COLOR_CFG stColorCfg[DH_N_COL_TSECT]; }DHDEV_PREVIEW_CFG; ///@brief 抓图控制配置 typedef struct _config_snap_control { BYTE bySnapState[32]; // 每个通道对应抓图开关 0:自动(则表示是否抓图,由其他配置和事件控制); 1:抓图开启; 2:抓图关闭 BYTE byReserved[480]; }DHDEV_SNAP_CONTROL_CFG; ///@brief GPS模式 typedef enum _gps_mode { GPS_OR_GLONASS_MODE, // GPS、GLONASS混合模式(模块定位数据从GPS、GLONASS两者中获取,但具体来源于哪个系统不能确定,可能模块内部自动会处理) GLONASS_MODE, // GLONASS模式(即模块的定位数据从俄罗斯的GLONASS定位系统中获取) GPS_MODE, // GPS模式(即模块的定位数据从美国的GPS系统中获取) }_gps_mode; ///@brief DH_DEV_GPS_MODE_CFG 配置结构 typedef struct tagDHDEV_GPS_MODE_CFG { BYTE byGPSMode; // GPS定位模式,见 BYTE byRev[255]; }DHDEV_GPS_MODE_CFG; ///@brief 图片上传配置信息 DH_DEV_SNAP_UPLOAD_CFG 配置结构 typedef struct tagDHDEV_SNAP_UPLOAD_CFG { int nUploadInterval; //定时抓图图片上传间隔,单位秒 BYTE byReserved[252]; }DHDEV_SNAP_UPLOAD_CFG; ///@brief DHDEV_SPEED_LIMIT_CFG 配置结构 typedef struct tagDHDEV_SPEED_LIMIT_CFG { BYTE byEnable; // 限速使能1:使能;0:不使能。 BYTE byReserved1; // 保留字段 WORD wMaxSpeed; // 速度上限值:单位KM/H 0表示不限速,大于0表示限速 WORD wMinSpeed; // 速度下限值:单位KM/H 0表示不限速,大于0表示限速 BYTE byReserved2[122]; // 保留字段 }DHDEV_SPEED_LIMIT_CFG; ///@brief 无线路由配置 typedef struct { BOOL bEnable; // 使能 char szSSID[36]; // SSID名称 BOOL bHideSSID; // 是否隐藏SSID char szIP[DH_MAX_IPADDR_LEN]; // IP char szSubMark[DH_MAX_IPADDR_LEN]; // 子网掩码 char szGateWay[DH_MAX_IPADDR_LEN]; // 网关 char szCountry[32]; // 国家, Default默认不指定。国家名称列表参考无线路由能力信息 int nSafeType; // 鉴权模式: 1-不加密; 2-WEP模式; 2-WPA-PSK模式; 3-WPA2-PSK模式 int nEncryption; // 加密方式: WEP模式(1-自动 2-开放 3-共享); WPA-PSK模式/WPA2-PSK模式(4-TKIP 5-AES) char szKey[32]; // 连接密钥 int nChannel; // 信道, 有效信道列表参考无线路由能力信息 BOOL bAutoChannelSelect; // 自动选择信道 }DHDEV_WIRELESS_ROUTING_CFG; //-------------------------------串口属性--------------------------------- ///@brief 串口基本属性 typedef struct { BYTE byDataBit; // 数据位;0:5,1:6,2:7,3:8 BYTE byStopBit; // 停止位;0:1位,1:1.5位,2:2位 BYTE byParity; // 校验位;0:无校验,1:奇校验;2:偶校验; 3:标志校验; 4:空校验 BYTE byBaudRate; // 波特率;0:300,1:600,2:1200,3:2400,4:4800, // 5:9600,6:19200,7:38400,8:57600,9:115200 } DH_COMM_PROP; ///@brief 485解码器配置 typedef struct { DH_COMM_PROP struComm; BYTE wProtocol; // 协议类型,对应"协议名列表"下标 BYTE bPTZType; // 0-兼容,本地云台 1-远程网络云台,通过能力查询(见DEV_ENCODER_CFG)。 BYTE wDecoderAddress; // 解码器地址;0 - 255 BYTE byMartixID; // 矩阵号 } DH_485_CFG; ///@brief 232串口配置 typedef struct { DH_COMM_PROP struComm; BYTE byFunction; // 串口功能,对应"功能名列表"下标 BYTE byReserved[3]; } DH_RS232_CFG; ///@brief 串口配置结构体 typedef struct { DWORD dwSize; DWORD dwDecProListNum; // 解码器协议个数 char DecProName[DH_MAX_DECPRO_LIST_SIZE][DH_MAX_NAME_LEN]; // 协议名列表 DH_485_CFG stDecoder[DH_MAX_DECODER_NUM]; // 各解码器当前属性 DWORD dw232FuncNameNum; // 232功能个数 char s232FuncName[DH_MAX_232FUNCS][DH_MAX_NAME_LEN]; // 功能名列表 DH_RS232_CFG st232[DH_MAX_232_NUM]; // 各232串口当前属性 } DHDEV_COMM_CFG; ///@brief 扩展串口配置结构体 typedef struct { DWORD dwSize; DWORD dwDecProListNum; // 解码器协议个数 char DecProName[DH_MAX_DECPRO_LIST_SIZE][DH_MAX_NAME_LEN]; // 协议名列表 DH_485_CFG stDecoder[DH_MAX_DECODER_NUM]; // 各解码器当前属性 DWORD dw232FuncNameNum; // 232功能个数 char s232FuncName[DH_MAX_232FUNCS][DH_MAX_NAME_LEN]; // 功能名列表 DWORD dw232ComNum; // 232串口个数 DH_RS232_CFG st232[DH_MAX_232_NUM_EX]; // 各232串口当前属性 } DHDEV_COMM_CFG_EX; ///@brief 串口状态 typedef struct { unsigned int uBeOpened; unsigned int uBaudRate; unsigned int uDataBites; unsigned int uStopBits; unsigned int uParity; BYTE bReserved[32]; } DH_COMM_STATE; ///@brief 定时录象 typedef struct { DWORD dwSize; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; BYTE byPreRecordLen; // 预录时间,单位是s,0表示不预录 BYTE byRedundancyEn; // 录像冗余开关 BYTE byRecordType; // 录像码流类型:0-主码流 1-辅码流1 2-辅码流2 3-辅码流3 BYTE byReserved; } DHDEV_RECORD_CFG, *LPDH_RECORD_CFG; ///@brief NTP配置 typedef struct { BOOL bEnable; // 是否启用 int nHostPort; // NTP服务器默认端口为123 char szHostIp[32]; // 主机IP char szDomainName[128]; // 域名 int nType; // 不可设置,0:表示IP,1:表示域名,2:表示IP和域名 int nUpdateInterval; // 更新时间(分钟) int nTimeZone; // 见DH_TIME_ZONE_TYPE char reserved[128]; } DHDEV_NTP_CFG; ///@brief 时间段 typedef struct tagNET_PERIOD { DH_TSECT struSect; // 该时间段内的“使能”无效,可忽略 BOOL bMdEn; // 上传动态检测录象 BOOL bAlarmEn; // 上传外部报警录象 BOOL bTimerEn; // 上传普通定时录像 DWORD dwRev[4]; } NET_PERIOD; ///@brief FTP上传配置 typedef struct { NET_PERIOD struPeriod[DH_TIME_SECTION]; } DH_FTP_UPLOAD_CFG; ///@brief FTP原有功能,扩展通道数 typedef struct { DWORD dwSize; BOOL bEnable; // 是否启用 char szHostIp[DH_MAX_IPADDR_LEN]; // 主机IP WORD wHostPort; // 主机端口 char szDirName[DH_FTP_MAX_PATH]; // FTP目录路径 char szUserName[DH_FTP_USERNAME_LEN]; // 用户名 char szPassword[DH_FTP_PASSWORD_LEN]; // 密码 int iFileLen; // 文件长度 int iInterval; // 相邻文件时间间隔(1~600),单位秒 DH_FTP_UPLOAD_CFG struUploadCfg[DH_MAX_CHANNUM][DH_N_WEEKS]; char protocol; // 0-FTP 1-SMB 2-NFS,3-ISCSI char NASVer; // 网络存储服务器版本0=老的FTP(界面上显示时间段),1=NAS存储(界面上屏蔽时间段) DWORD dwFunctionMask; // 功能能力掩码,按位表示,低16位(网络存储)依次表示FTP,SMB,NFS,ISCSI, 高16位(本地存储)依次为DISK,U BYTE bDataType; // 数据类型, 0-所有类型, 1-视频, 2-图片 BYTE reserved[123]; } DHDEV_FTP_PROTO_CFG; ///@brief FTP上传扩展配置(支持通道独立设置FTP存储路径,最大存储图片数等) typedef struct { int nMaxPictures; // 总存储张数,每一个通道文件夹中的图片数量可以限制, // 超过限制就覆盖老的文件,0:表示不限制,写满为止 char szPreChannelName[DH_FTP_MAX_SUB_PATH]; // 图片文件名 char szFTPChannelPath[DH_FTP_MAX_SUB_PATH]; // ftp存储路径(存储子目录) char szRev[128]; // 保留字段 }DHDEV_FTP_CHANNEL_CFG; ///@brief FTP上传扩展配置 typedef struct { DHDEV_FTP_PROTO_CFG stuFtpNormalSet; // FTP原有功能,扩展通道数 DHDEV_FTP_CHANNEL_CFG stuFtpChannelSet[DH_MAX_CHANNUM]; // FTP扩展功能 char szRev[128]; // 保留字段 }DHDEV_FTP_PROTO_CFG_EX; ///@brief 以太网配置 typedef struct { char sDevIPAddr[DH_MAX_IPADDR_LEN]; // DVR IP 地址 char sDevIPMask[DH_MAX_IPADDR_LEN]; // DVR IP 地址掩码 char sGatewayIP[DH_MAX_IPADDR_LEN]; // 网关地址 /* * 1:10Mbps 全双工 * 2:10Mbps 自适应 * 3:10Mbps 半双工 * 4:100Mbps 全双工 * 5:100Mbps 自适应 * 6:100Mbps 半双工 * 7:自适应 */ // 为了扩展将DWORD拆成四个 BYTE dwNetInterface; // NSP BYTE bTranMedia; // 0:有线,1:无线 BYTE bValid; // 按位表示,第一位:1:有效 0:无效;第二位:0:DHCP关闭 1:DHCP使能;第三位:0:不支持DHCP 1:支持DHCP BYTE bDefaultEth; // 是否作为默认的网卡 1:默认 0:非默认 char byMACAddr[DH_MACADDR_LEN]; // MAC地址,只读 } DH_ETHERNET; ///@brief 远程主机配置 typedef struct { BYTE byEnable; // 连接使能 BYTE byAssistant; // 目前只对于PPPoE服务器有用,0:在有线网卡拨号;1:在无线网卡上拨号 WORD wHostPort; // 远程主机 端口 char sHostIPAddr[DH_MAX_IPADDR_LEN]; // 远程主机 IP 地址 char sHostUser[DH_MAX_HOST_NAMELEN]; // 远程主机 用户名 char sHostPassword[DH_MAX_HOST_PSWLEN]; // 远程主机 密码 } DH_REMOTE_HOST; ///@brief 邮件配置 typedef struct { char sMailIPAddr[DH_MAX_IPADDR_LEN]; // 邮件服务器IP地址 WORD wMailPort; // 邮件服务器端口 WORD wReserved; // 保留 char sSenderAddr[DH_MAX_MAIL_ADDR_LEN]; // 发送地址 char sUserName[DH_MAX_NAME_LEN]; // 用户名 char sUserPsw[DH_MAX_NAME_LEN]; // 用户密码 char sDestAddr[DH_MAX_MAIL_ADDR_LEN]; // 目的地址 char sCcAddr[DH_MAX_MAIL_ADDR_LEN]; // 抄送地址 char sBccAddr[DH_MAX_MAIL_ADDR_LEN]; // 暗抄地址 char sSubject[DH_MAX_MAIL_SUBJECT_LEN]; // 标题 } DH_MAIL_CFG; ///@brief 网络配置结构体 typedef struct { DWORD dwSize; char sDevName[DH_MAX_NAME_LEN]; // 设备主机名 WORD wTcpMaxConnectNum; // TCP最大连接数 WORD wTcpPort; // TCP帧听端口 WORD wUdpPort; // UDP侦听端口 WORD wHttpPort; // HTTP端口号 WORD wHttpsPort; // HTTPS端口号 WORD wSslPort; // SSL端口号 DH_ETHERNET stEtherNet[DH_MAX_ETHERNET_NUM]; // 以太网口 DH_REMOTE_HOST struAlarmHost; // 报警服务器 DH_REMOTE_HOST struLogHost; // 日志服务器 DH_REMOTE_HOST struSmtpHost; // SMTP服务器 DH_REMOTE_HOST struMultiCast; // 多播组 DH_REMOTE_HOST struNfs; // NFS服务器 DH_REMOTE_HOST struPppoe; // PPPoE服务器 char sPppoeIP[DH_MAX_IPADDR_LEN]; // PPPoE注册返回的IP DH_REMOTE_HOST struDdns; // DDNS服务器 char sDdnsHostName[DH_MAX_HOST_NAMELEN]; // DDNS主机名 DH_REMOTE_HOST struDns; // DNS服务器 DH_MAIL_CFG struMail; // 邮件配置 } DHDEV_NET_CFG; ///@brief 以太网扩展配置 typedef struct { char sDevIPAddr[DH_MAX_IPADDR_LEN]; // DVR IP 地址 char sDevIPMask[DH_MAX_IPADDR_LEN]; // DVR IP 地址掩码 char sGatewayIP[DH_MAX_IPADDR_LEN]; // 网关地址 /* * 1:10Mbps 全双工 * 2:10Mbps 自适应 * 3:10Mbps 半双工 * 4:100Mbps 全双工 * 5:100Mbps 自适应 * 6:100Mbps 半双工 * 7:自适应 */ // 为了扩展将DWORD拆成四个 BYTE dwNetInterface; // NSP BYTE bTranMedia; // 0:有线,1:无线 BYTE bValid; // 按位表示,第一位:1:有效 0:无效;第二位:0:DHCP关闭 1:DHCP使能;第三位:0:不支持DHCP 1:支持DHCP BYTE bDefaultEth; // 是否作为默认的网卡 1:默认 0:非默认 char byMACAddr[DH_MACADDR_LEN]; // MAC地址,只读 BYTE bMode; // 网卡所处模式, 0:绑定模式, 1:负载均衡模式, 2:多址模式, 3:容错模式 BYTE bReserved1[3]; // 字节对齐 char szEthernetName[DH_MAX_NAME_LEN]; // 网卡名,只读 BYTE bReserved[12]; // 保留字节 } DH_ETHERNET_EX; ///@brief 扩展网络配置结构体 typedef struct { DWORD dwSize; char sDevName[DH_MAX_NAME_LEN]; // 设备主机名 WORD wTcpMaxConnectNum; // TCP最大连接数 WORD wTcpPort; // TCP帧听端口 WORD wUdpPort; // UDP侦听端口 WORD wHttpPort; // HTTP端口号 WORD wHttpsPort; // HTTPS端口号 WORD wSslPort; // SSL端口号 int nEtherNetNum; // 以太网口数 DH_ETHERNET_EX stEtherNet[DH_MAX_ETHERNET_NUM_EX]; // 以太网口 DH_REMOTE_HOST struAlarmHost; // 报警服务器 DH_REMOTE_HOST struLogHost; // 日志服务器 DH_REMOTE_HOST struSmtpHost; // SMTP服务器 DH_REMOTE_HOST struMultiCast; // 多播组 DH_REMOTE_HOST struNfs; // NFS服务器 DH_REMOTE_HOST struPppoe; // PPPoE服务器 char sPppoeIP[DH_MAX_IPADDR_LEN]; // PPPoE注册返回的IP DH_REMOTE_HOST struDdns; // DDNS服务器 char sDdnsHostName[DH_MAX_HOST_NAMELEN]; // DDNS主机名 DH_REMOTE_HOST struDns; // DNS服务器 DH_MAIL_CFG struMail; // 邮件配置 BYTE bReserved[128]; // 保留字节 } DHDEV_NET_CFG_EX; ///@brief IPV4配置 typedef struct tagDEV_IPV4_CFG { DWORD dwSize; // 结构体大小 char szDevName[DH_MAX_NAME_LEN]; // 设备主机名 WORD wTcpMaxConnectNum; // TCP最大连接数 WORD wTcpPort; // TCP帧听端口 WORD wUdpPort; // UDP侦听端口 WORD wHttpPort; // HTTP端口号 WORD wHttpsPort; // HTTPS端口号 WORD wSslPort; // SSL端口号 DH_ETHERNET_EX stuEtherNet[DH_MAX_ETHERNET_NUM_EX];// 以太网口 int nEtherNetNum; // stuEtherNet 个数 }DEV_IPV4_CFG; ///@brief 多ddns配置结构体 typedef struct { DWORD dwId; // ddns服务器id号 BOOL bEnable; // 使能,同一时间只能有一个ddns服务器处于使能状态 char szServerType[DH_MAX_SERVER_TYPE_LEN]; // 服务器类型,希网.. char szServerIp[DH_MAX_DOMAIN_NAME_LEN]; // 服务器ip或者域名 DWORD dwServerPort; // 服务器端口 char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // dvr域名,如jeckean.3322.org char szUserName[DH_MAX_HOST_NAMELEN]; // 用户名 char szUserPsw[DH_MAX_HOST_PSWLEN]; // 密码 char szAlias[DH_MAX_DDNS_ALIAS_LEN]; // 服务器别名 DWORD dwAlivePeriod; // DDNS 保活时间 BYTE ByMode; // 域名模式:0-手动输入域名,szDomainName有效; 1-默认域名szDefaultDomainName有效。 char szDefaultDomainName[DH_MAX_DEFAULT_DOMAIN_LEN]; // 默认域名,只读 BYTE bReserved[3]; // 字节对齐 char szEmailUserName[DH_MAX_MAIL_NAME_LEN]; // 邮箱用户名 char reserved[128]; } DH_DDNS_SERVER_CFG; ///@brief DDNS配置结构体 typedef struct { DWORD dwSize; DWORD dwDdnsServerNum; DH_DDNS_SERVER_CFG struDdnsServer[DH_MAX_DDNS_NUM]; } DHDEV_MULTI_DDNS_CFG; ///@brief 邮件配置结构体 typedef struct { char sMailIPAddr[DH_MAX_DOMAIN_NAME_LEN]; // 邮件服务器地址(IP或者域名) char sSubMailIPAddr[DH_MAX_DOMAIN_NAME_LEN]; WORD wMailPort; // 邮件服务器端口 WORD wSubMailPort; WORD wReserved; // 保留 char sSenderAddr[DH_MAX_MAIL_ADDR_LEN]; // 发送地址 char sUserName[DH_MAX_MAIL_NAME_LEN]; // 用户名 char sUserPsw[DH_MAX_MAIL_NAME_LEN]; // 用户密码 char sDestAddr[DH_MAX_MAIL_ADDR_LEN]; // 目的地址 char sCcAddr[DH_MAX_MAIL_ADDR_LEN]; // 抄送地址 char sBccAddr[DH_MAX_MAIL_ADDR_LEN]; // 暗抄地址 char sSubject[DH_MAX_MAIL_SUBJECT_LEN]; // 标题 BYTE bEnable; // 使能0:false, 1:true BYTE bSSLEnable; // SSL使能 WORD wSendInterval; // 发送时间间隔,[0,3600]秒 BYTE bAnonymous; // 匿名选项[0,1], 0表示FALSE,1表示TRUE. BYTE bAttachEnable; // 附件使能[0,1], 0表示FALSE,1表示TRUE. char reserved[154]; } DHDEV_MAIL_CFG; ///@brief DNS服务器配置 typedef struct { char szPrimaryIp[DH_MAX_IPADDR_LEN]; char szSecondaryIp[DH_MAX_IPADDR_LEN]; char reserved[256]; } DHDEV_DNS_CFG; ///@brief 录象下载策略配置 typedef struct { DWORD dwSize; BOOL bEnable; // TRUE:高速下载,FALSE:普通下载 }DHDEV_DOWNLOAD_STRATEGY_CFG; ///@brief 网络传输策略配置 typedef struct { DWORD dwSize; BOOL bEnable; int iStrategy; // 0:画质优先,1:流畅性优先,2:自动 }DHDEV_TRANSFER_STRATEGY_CFG; ///@brief 设置登入时的相关参数 typedef struct { int nWaittime; // 等待超时时间(毫秒为单位),为0默认5000ms int nConnectTime; // 连接超时时间(毫秒为单位),为0默认1500ms int nConnectTryNum; // 连接尝试次数,为0默认1次 int nSubConnectSpaceTime; // 子连接之间的等待时间(毫秒为单位),为0默认10ms int nGetDevInfoTime; // 获取设备信息超时时间,为0默认1000ms int nConnectBufSize; // 每个连接接收数据缓冲大小(字节为单位),为0默认250*1024 int nGetConnInfoTime; // 获取子连接信息超时时间(毫秒为单位),为0默认3000ms int nSearchRecordTime; // 按时间查询录像文件的超时时间(毫秒为单位),为0默认为3000ms int nsubDisconnetTime; // 检测子链接断线等待时间(毫秒为单位),为0默认为60000ms BYTE byNetType; // 网络类型, 0-LAN, 1-WAN BYTE byPlaybackBufSize; // 回放数据接收缓冲大小(M为单位),为0默认为4M BYTE bDetectDisconnTime; // 心跳检测断线时间(单位为秒),为0默认为60s,最小时间为2s BYTE bKeepLifeInterval; // 心跳包发送间隔(单位为秒),为0默认为10s,最小间隔为2s int nPicBufSize; // 实时图片接收缓冲大小(字节为单位),为0默认为2*1024*1024 BYTE bReserved[4]; // 保留字段字段 } NET_PARAM; ///@brief UDP和组播参数 typedef struct tagNET_UDP_OPTION { unsigned int nPacketArriveTimeout; // 等待乱序包到达超时时间, 单位为ms, 默认为50ms, 最大值为200ms, 为0表示不更改当前值 unsigned int nRetransmitPacketArriveTimeout; // 等待重传包的超时时间, 单位为ms, 默认为100ms, 最大值为400ms, 为0表示不更改当前值 unsigned int nMaxLostNumOfMulitcastSeqNo; // 最大的可接受的组播丢包个数, 默认为1000, 最大值为2000, 为0表示不更改当前值 unsigned int nMaxWaitNumOfUdpSeqNo; // 最大的等待UDP乱序到达的包个数, 默认为30, 最大值为1000, 为0表示不更改当前值 unsigned int nMultiSocketSendBufferSize; // 组播套接字发送缓存大小, 单位:Byte, 默认64K, 最小8K, 最大1M, 为0表示不更改当前值 unsigned int nMultiSocketRecvBufferSize; // 组播套接字接受缓存大小, 单位:Byte, 默认1M, 最小8K, 最大1M, 为0表示不更改当前值 unsigned int nUdpSocketSendBufferSize; // UDP套接字发送缓存大小, 单位:Byte, 默认64K, 最小8K, 最大1M, 为0表示不更改当前值 unsigned int nUdpSocketRecvBufferSize; // UDP套接字接受缓存大小, 单位:Byte, 默认1M, 最小8K, 最大1M, 为0表示不更改当前值 BYTE bReserved[128]; // 保留字段字段 }NET_UDP_OPTION; ///@brief 对应CLIENT_SearchDevices接口 typedef struct { char szIP[DH_MAX_IPADDR_LEN]; // IP int nPort; // tcp端口 char szSubmask[DH_MAX_IPADDR_LEN]; // 子网掩码 char szGateway[DH_MAX_IPADDR_LEN]; // 网关 char szMac[DH_MACADDR_LEN]; // MAC地址 char szDeviceType[DH_DEV_TYPE_LEN]; // 设备类型 BYTE byManuFactory; // 目标设备的生产厂商,具体参考EM_IPC_TYPE类 BYTE byIPVersion; // 4: IPv4, szXXX为点分字符串形式; 6:IPv6, szXXX为128位(16字节)数值形式 BYTE byInitStatus; // 设备初始化状态,按位确定初始化状态 // bit0~1:0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户 // bit2~3:0-老设备,保留 1-公网接入未使能 2-公网接入已使能 // bit4~5:0-老设备,保留 1-手机直连未使能 2-手机直连使能 BYTE byPwdResetWay; // 支持密码重置方式:按位确定密码重置方式,只在设备有初始化账号时有意义 // bit0-支持预置手机号 bit1-支持预置邮箱 bit2-支持文件导出 BYTE bySpecialAbility; // 设备初始化能力,按位确定初始化状态,bit0-2D Code修改IP: 0 不支持 1 支持,bit1-PN制:0 不支持 1 支持 BYTE byAbroadInfo; // 用于区分是海外还是国内设备,0 未知、1 国内、2 海外 BYTE bReserved[26]; // 保留字节 } DEVICE_NET_INFO; #define DH_DEV_CUSTOM_DEVICEID_LEN 24 // ID长度 ///@brief IP类型 typedef enum tagEM_IPVERSION { EM_IPVERSION_IPV4, // IPv4 EM_IPVERSION_IPV6, // IPv6 } EM_IPVERSION; ///@brief 对应CLIENT_StartSearchDevices接口 typedef struct { int iIPVersion; // 4 for IPV4, 6 for IPV6 char szIP[64]; // IP IPV4形如"192.168.0.1" IPV6形如"2008::1/64" int nPort; // tcp端口 char szSubmask[64]; // 子网掩码 IPV6无子网掩码 char szGateway[64]; // 网关 char szMac[DH_MACADDR_LEN]; // MAC地址 char szDeviceType[DH_DEV_TYPE_LEN]; // 设备类型 BYTE byManuFactory; // 目标设备的生产厂商,具体参考EM_IPC_TYPE类 BYTE byDefinition; // 1-标清 2-高清 bool bDhcpEn; // Dhcp使能状态, true-开, false-关 BYTE byReserved1; // 字节对齐 char verifyData[88]; // 校验数据 通过异步搜索回调获取(在修改设备IP时会用此信息进行校验) char szSerialNo[DH_DEV_SERIALNO_LEN]; // 序列号 char szDevSoftVersion[DH_MAX_URL_LEN]; // 设备软件版本号 char szDetailType[DH_DEV_TYPE_LEN]; // 设备型号 char szVendor[DH_MAX_STRING_LEN]; // OEM客户类型 char szDevName[DH_MACHINE_NAME_NUM]; // 设备名称 char szUserName[DH_USER_NAME_LENGTH_EX]; // 登陆设备用户名(在修改设备IP时需要填写) char szPassWord[DH_USER_NAME_LENGTH_EX]; // 登陆设备密码(在修改设备IP时需要填写) unsigned short nHttpPort; // HTTP服务端口号 WORD wVideoInputCh; // 视频输入通道数 WORD wRemoteVideoInputCh; // 远程视频输入通道数 WORD wVideoOutputCh; // 视频输出通道数 WORD wAlarmInputCh; // 报警输入通道数 WORD wAlarmOutputCh; // 报警输出通道数) BOOL bNewWordLen; // TRUE使用新密码字段szNewPassWord char szNewPassWord[DH_COMMON_STRING_64]; // 登陆设备密码(在修改设备IP时需要填写) BYTE byInitStatus; // 设备初始化状态,按位确定初始化状态 // bit0~1:0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户 // bit2~3:0-老设备,保留 1-公网接入未使能 2-公网接入已使能 // bit4~5:0-老设备,保留 1-手机直连未使能 2-手机直连使能 // bit6~7: 0- 未知 1-不支持密码重置 2-支持密码重置 BYTE byPwdResetWay; // 支持密码重置方式:按位确定密码重置方式,只在设备有初始化账号时有意义 // bit0-支持预置手机号 bit1-支持预置邮箱 bit2-支持文件导出 bit3-支持密保问题 bit4-支持更换手机号 BYTE bySpecialAbility; // 设备初始化能力,按位确定初始化能力,高八位 bit0-2D Code修改IP: 0 不支持 1 支持, bit1-PN制:0 不支持 1支持 char szNewDetailType[DH_COMMON_STRING_64]; // 设备型号 BOOL bNewUserName; // TRUE表示使用新用户名(szNewUserName)字段 char szNewUserName[DH_COMMON_STRING_64]; // 登陆设备用户名(在修改设备IP时需要填写) BYTE byPwdFindVersion; // 密码找回的版本号,设备支持密码重置时有效; // 0-设备使用的是老方案的密码重置版本;1-支持预留联系方式进行密码重置操作; // 2-支持更换联系方式进行密码重置操作; char szDeviceID[DH_DEV_CUSTOM_DEVICEID_LEN]; // 不作为通用协议,不对接通用客户端 DWORD dwUnLoginFuncMask; // 未登陆功能掩码 // Bit0-Wifi列表扫描及WLan设置 // Bit1-支持会话外修改过期密码 // Bit2-设备是否支持串口日志重定向(提前引导功能) char szMachineGroup[64]; // 设备分组 EM_IPVERSION emIPVersionFrom; // 通过哪种网络搜索方式发现该设备;0:从IPv4组播地址发现设备 1:从IPv6组播地址发现设备 char szCountryCode[3]; // 设备wifi国家码 BYTE byAbroadInfo; // 用于区分是海外还是国内设备,0 未知、1 国内、2 海外 char cReserved[4]; // 扩展字段 }DEVICE_NET_INFO_EX; ///@brief 对应CLIENT_StartSearchDevicesEx接口 typedef struct { DEVICE_NET_INFO_EX stuDevInfo; // 设备信息结构体 char szLocalIP[MAX_LOCAL_IP_LEN]; // 搜索到设备的本地IP地址 char cReserved[2048]; // 扩展字段 }DEVICE_NET_INFO_EX2; ///@brief 对应CLIENT_SearchDevicesByIPs接口 typedef struct { DWORD dwSize; // 结构体大小 int nIpNum; // 当前搜索的IP个数 char szIP[DH_MAX_SAERCH_IP_NUM][64]; // 具体待搜索的IP信息 }DEVICE_IP_SEARCH_INFO; ///@brief 设备搜索参数 typedef struct tagNET_DEVICE_SEARCH_PARAM { DWORD dwSize; // 结构体大小 BOOL bUseDefault; // 是否使用默认配置,默认为TRUE WORD wBroadcastLocalPort; // 广播本地端口, 默认5050, 值为0时使用最近一次配置 WORD wBroadcastRemotePort; // 广播远程端口, 默认5050, 值为0时使用最近一次配置 WORD wMulticastRemotePort; // 组播远程端口, 默认37810, 值为0时使用最近一次配置 BOOL bMulticastModifyRespond; // 组播修改设备时是否只支持组播回复,默认FALSE表示单播或组播回复 WORD wMulticastLocalPort; // 组播本地端口, 默认37810, 值为0时使用最近一次配置 int iAutoUpdatePortTimes; // 端口不可用时自动更新端口次数,默认50次,范围[0-65534] WORD wAOLMulticastRemotePort; // AOL 组播远程端口, 默认8087, 值为0时使用最近一次配置 WORD wAOLMulticastLocalPort; // AOL 组播本地端口, 默认37811, 值为0时使用最近一次配置 }NET_DEVICE_SEARCH_PARAM; ///@brief struct SNMP配置结构 typedef struct { BOOL bEnable; // SNMP使能 int iSNMPPort; // SNMP端口 char szReadCommon[DH_MAX_SNMP_COMMON_LEN]; // 读共同体 char szWriteCommon[DH_MAX_SNMP_COMMON_LEN]; // 写共同体 char szTrapServer[64]; // trap地址 int iTrapPort; // trap端口 BYTE bSNMPV1; // 设备是否开启支持版本1格式,0不使能;1使能 BYTE bSNMPV2; // 设备是否开启支持版本2格式,0不使能;1使能 BYTE bSNMPV3; // 设备是否开启支持版本3格式,0不使能;1使能 char szReserve[125]; }DHDEV_NET_SNMP_CFG; ///@brief ISCSI服务器结构定义 typedef struct tagDHDEV_ISCSI_SERVER { char szServerName[32]; // 名称 union { BYTE c[4]; WORD s[2]; DWORD l; } stuIP; // IP地址 int nPort; // 端口号 char szUserName[32]; // 用户名 char szPassword[32]; // 密码 BOOL bAnonymous; // 是否匿名登录 }DHDEV_ISCSI_SERVER; ///@brief ISCSI配置结构 typedef struct { BOOL bEnable; // 使能 DHDEV_ISCSI_SERVER stuServer; // 服务器 char szRemotePath[240]; // 远程目录 BYTE reserved[256]; }DHDEV_ISCSI_CFG; ///@brief 云台联动 typedef struct { int iType; // 0-None,1-Preset,2-Tour,3-Pattern int iValue; } DH_PTZ_LINK, *LPDH_PTZ_LINK; ///@brief 报警联动结构体 typedef struct { /* 消息处理方式,可以同时多种处理方式,包括 * 0x00000001 - 报警上传 * 0x00000002 - 联动录象 * 0x00000004 - 云台联动 * 0x00000008 - 发送邮件 * 0x00000010 - 本地轮巡 * 0x00000020 - 本地提示 * 0x00000040 - 报警输出 * 0x00000080 - Ftp上传 * 0x00000100 - 蜂鸣 * 0x00000200 - 语音提示 * 0x00000400 - 抓图 */ DWORD dwActionMask; // 当前报警所支持的处理方式,按位掩码表示 DWORD dwActionFlag; // 触发动作,按位掩码表示,具体动作所需要的参数在各自的配置中体现 BYTE byRelAlarmOut[DH_MAX_ALARMOUT_NUM]; // 报警触发的输出通道,报警触发的输出,为1表示触发该输出 DWORD dwDuration; // 报警持续时间 BYTE byRecordChannel[DH_MAX_VIDEO_IN_NUM]; // 报警触发的录象通道,为1表示触发该通道 DWORD dwRecLatch; // 录象持续时间 BYTE bySnap[DH_MAX_VIDEO_IN_NUM]; // 抓图通道 BYTE byTour[DH_MAX_VIDEO_IN_NUM]; // 轮巡通道 DH_PTZ_LINK struPtzLink[DH_MAX_VIDEO_IN_NUM]; // 云台联动 DWORD dwEventLatch; // 联动开始延时时间,s为单位,范围是0~15,默认值是0 BYTE byRelWIAlarmOut[DH_MAX_ALARMOUT_NUM]; // 报警触发的无线输出通道,报警触发的输出,为1表示触发该输出 BYTE bMessageToNet; BYTE bMMSEn; // 短信报警使能 BYTE bySnapshotTimes; // 短信发送抓图张数 BYTE bMatrixEn; // 矩阵使能 DWORD dwMatrix; // 矩阵掩码 BYTE bLog; // 日志使能,目前只有在WTN动态检测中使用 BYTE bSnapshotPeriod; // 抓图帧间隔,每隔多少帧抓一张图片,一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧,连续抓拍 BYTE byEmailType; // 0,图片附件,1,录像附件 BYTE byEmailMaxLength; // 附件录像时的最大长度,单位MB BYTE byEmailMaxTime; // 附件是录像时最大时间长度,单位秒 BYTE byReserved[99]; } DH_MSG_HANDLE; ///@brief 外部报警 typedef struct { BYTE byAlarmType; // 报警器类型,0:常闭,1:常开 BYTE byAlarmEn; // 报警使能 BYTE byReserved[2]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE struHandle; // 处理方式 } DH_ALARMIN_CFG, *LPDHDEV_ALARMIN_CFG; ///@brief 动态检测报警 typedef struct { BYTE byMotionEn; // 动态检测报警使能 BYTE byReserved; WORD wSenseLevel; // 灵敏度 WORD wMotionRow; // 动态检测区域的行数 WORD wMotionCol; // 动态检测区域的列数 BYTE byDetected[DH_MOTION_ROW][DH_MOTION_COL]; // 检测区域,最多32*32块区域 DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE struHandle; //处理方式 } DH_MOTION_DETECT_CFG; ///@brief 视频丢失报警 typedef struct { BYTE byAlarmEn; // 视频丢失报警使能 BYTE byReserved[3]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE struHandle; // 处理方式 } DH_VIDEO_LOST_CFG; ///@brief 图像遮挡报警 typedef struct { BYTE byBlindEnable; // 使能 BYTE byBlindLevel; // 灵敏度1-6 BYTE byReserved[2]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE struHandle; // 处理方式 } DH_BLIND_CFG; ///@brief 硬盘消息(内部报警) typedef struct { BYTE byNoDiskEn; // 无硬盘时报警 BYTE byReserved_1[3]; DH_TSECT stNDSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE struNDHandle; // 处理方式 BYTE byLowCapEn; // 硬盘低容量时报警 BYTE byLowerLimit; // 容量阀值,0-99 BYTE byReserved_2[2]; DH_TSECT stLCSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE struLCHandle; // 处理方式 BYTE byDiskErrEn; // 硬盘故障报警 BYTE bDiskNum; BYTE byReserved_3[2]; DH_TSECT stEDSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE struEDHandle; // 处理方式 } DH_DISK_ALARM_CFG; ///@brief 网络中断报警配置 typedef struct { BYTE byEnable; BYTE byReserved[3]; DH_MSG_HANDLE struHandle; } DH_NETBROKEN_ALARM_CFG; ///@brief 报警布防 typedef struct { DWORD dwSize; DH_ALARMIN_CFG struLocalAlmIn[DH_MAX_ALARM_IN_NUM]; DH_ALARMIN_CFG struNetAlmIn[DH_MAX_ALARM_IN_NUM]; DH_MOTION_DETECT_CFG struMotion[DH_MAX_VIDEO_IN_NUM]; DH_VIDEO_LOST_CFG struVideoLost[DH_MAX_VIDEO_IN_NUM]; DH_BLIND_CFG struBlind[DH_MAX_VIDEO_IN_NUM]; DH_DISK_ALARM_CFG struDiskAlarm; DH_NETBROKEN_ALARM_CFG struNetBrokenAlarm; } DHDEV_ALARM_SCHEDULE; #define DECODER_OUT_SLOTS_MAX_NUM 16 #define DECODER_IN_SLOTS_MAX_NUM 16 ///@brief 报警解码器配置 typedef struct { DWORD dwAddr; // 报警解码器地址 BOOL bEnable; // 报警解码器使能 DWORD dwOutSlots[DECODER_OUT_SLOTS_MAX_NUM]; // 现在只支持8个. int nOutSlotNum; // dwOutSlots数组有效元素个数. DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; DH_MSG_HANDLE struHandle[DECODER_IN_SLOTS_MAX_NUM]; // 现在只支持8个. int nMsgHandleNum; // stuHandle数组有效元素个数. BYTE bReserved[120]; } DH_ALARMDEC_CFG; ///@brief 报警上传的配置 typedef struct { BYTE byEnable; // 上传使能 BYTE bReserverd; // 保留 WORD wHostPort; // 报警中心侦听端口 char sHostIPAddr[DH_MAX_IPADDR_LEN]; // 报警中心IP int nByTimeEn; // 定时上传使能,可以用来向中心上传IP或域名等 int nUploadDay; // 设置上传日期 // "Never = 0", "Everyday = 1", "Sunday = 2", // "Monday = 3", Tuesday = 4", "Wednesday = 5", // "Thursday = 6", "Friday = 7", "Saturday = 8" int nUploadHour; // 设置上传时间 ,[0~23]点 DWORD dwReserved[300]; // 保留待扩展。 } ALARMCENTER_UP_CFG; ///@brief 全景切换报警配置 typedef struct __DH_PANORAMA_SWITCH_CFG { BOOL bEnable; // 使能 int nReserved[5]; // 保留 DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; DH_MSG_HANDLE struHandle; // 报警联动 } DH_PANORAMA_SWITCH_CFG; ///@brief 事件信息 typedef struct __ALARM_PANORAMA_SWITCH_CFG { int nAlarmChnNum; // 报警通道个数 DH_PANORAMA_SWITCH_CFG stuPanoramaSwitch[DH_MAX_VIDEO_IN_NUM]; } ALARM_PANORAMA_SWITCH_CFG; ///@brief 失去焦点报警配置 typedef struct __DH_LOST_FOCUS_CFG { BOOL bEnable; // 使能 int nReserved[5]; // 保留 DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; DH_MSG_HANDLE struHandle; // 报警联动 } DH_LOST_FOCUS_CFG; ///@brief 事件信息 typedef struct __ALARM_LOST_FOCUS_CFG { int nAlarmChnNum; // 报警通道个数 DH_LOST_FOCUS_CFG stuLostFocus[DH_MAX_VIDEO_IN_NUM]; } ALARM_LOST_FOCUS_CFG; ///@brief IP冲突检测报警配置 typedef struct __ALARM_IP_COLLISION_CFG { BOOL bEnable; // 使能 DH_MSG_HANDLE struHandle; // 报警联动 int nReserved[300]; // 保留 } ALARM_IP_COLLISION_CFG; ///@brief MAC冲突检测配置 typedef struct __ALARM_MAC_COLLISION_CFG { BOOL bEnable; // 使能 DH_MSG_HANDLE struHandle; // 报警联动 int nReserved[300]; // 保留 } ALARM_MAC_COLLISION_CFG; ///@brief 232串口卡号信号、485串口卡号信号事件配置 typedef struct __COM_CARD_SIGNAL_INFO { WORD wCardStartPose; // 卡号起始位 WORD wCardLenth; // 卡号长度 char cStartCharacter[32]; // 开始符 char cEndCharacter[32]; // 结束符 BYTE byReserved[28]; // 保留字段 }COM_CARD_SIGNAL_INFO; ///@brief 232串口卡号信号、485串口卡号信号联动配置(在串口发过来的卡号信息满足配置的卡号信息后,将触发设备抓图) typedef struct __COM_CARD_SIGNAL_LINK_CFG { COM_CARD_SIGNAL_INFO struCardInfo; // 卡号信息 DH_MSG_HANDLE struHandle; // 事件联动 BYTE byReserved[24]; // 保留字段 }COM_CARD_SIGNAL_LINK_CFG; ///@brief 遮挡信息 typedef struct __VIDEO_COVER_ATTR { DH_RECT rcBlock; // 覆盖的区域坐标 int nColor; // 覆盖的颜色 BYTE bBlockType; // 覆盖方式;0:黑块,1:马赛克 BYTE bEncode; // 编码级遮挡;1:生效,0:不生效 BYTE bPriview; // 预览遮挡; 1:生效,0:不生效 char reserved[29]; // 保留 } VIDEO_COVER_ATTR; ///@brief 多区域遮挡配置 typedef struct __DHDEV_VIDEOCOVER_CFG { DWORD dwSize; char szChannelName[DH_CHAN_NAME_LEN]; // 只读 BYTE bTotalBlocks; // 支持的遮挡块数 BYTE bCoverCount; // 已设置的遮挡块数 VIDEO_COVER_ATTR CoverBlock[DH_MAX_VIDEO_COVER_NUM]; // 覆盖的区域 char reserved[30]; // 保留 }DHDEV_VIDEOCOVER_CFG; ///@brief 设备的解码策略配置 typedef struct __DHDEV_DECODEPOLICY_CFG { int nMinTime; // 码缓冲时间范围(只读):最小缓冲时间(单位:ms) int nMaxTime; // 码缓冲时间范围(只读):最大缓冲时间(单位:ms) int nDeocdeBufTime; // 目标设备解码缓冲时间(单位:ms) char reserved[128]; // 保留 }DHDEV_DECODEPOLICY_CFG; ///@brief 机器相关的配置 typedef struct __DHDEV_MACHINE_CFG { char szMachineName[DH_MACHINE_NAME_NUM]; // 机器名称或编号 char szMachineAddress[DH_MACHINE_NAME_NUM]; // 机器部署地点 char reserved[128]; // 保留 }DHDEV_MACHINE_CFG; ////////////////////////////IPC产品支持//////////////////////////////// ///@brief 配置无线网络信息 typedef struct tagDHDEV_WLAN_INFO { int nEnable; // 无线使能, 0: 使能, 1: 关闭 char szSSID[36]; // SSID int nLinkMode; // 连接模式;0:auto,1:adhoc,2:Infrastructure int nEncryption; // 加密 0:off,2:WEP64bit,3:WEP128bit, 4:WPA-PSK-TKIP, 5: WPA-PSK-CCMP(AES), 6:WPA2-PSK-TKIP 7:WPA2-PSK-AES 8:WPA-TKIP 9:WPA-AES // 10:WPA2-TKIP 11:WPA2-AES 12:AUTO 13:WEP-OPEN 14:WEP-SHARED int nKeyType; // 0:Hex,1:ASCII int nKeyID; // 序号 union { char szKeys[4][32]; // 四组密码, WEP加密方式,nEncryption为2、3、13、14时使用 char szWPAKeys[128]; // nEncryption为WPA相关方式时使用,传128长度,不用结束符。 }; int nKeyFlag; BYTE byConnectedFlag; // 0: 无连接, 1: 连接 char reserved[11]; } DHDEV_WLAN_INFO; ///@brief 选择使用某个无线设备 typedef struct { char szSSID[36]; int nLinkMode; // 连接模式;0:adhoc,1:Infrastructure int nEncryption; // 加密;0:off,2:WEP64bit,3:WEP128bit char reserved[48]; } DHDEV_WLAN_DEVICE; ///@brief 搜索到的无线设备列表 typedef struct { DWORD dwSize; BYTE bWlanDevCount; // 搜索到的无线设备个数 DHDEV_WLAN_DEVICE lstWlanDev[DH_MAX_WLANDEVICE_NUM]; char reserved[255]; } DHDEV_WLAN_DEVICE_LIST; ///@brief 无线设备扩展配置 typedef struct { char szSSID[36]; // 服务名称 char szMacAddr[18]; // mac地址 BYTE byApConnected; // 是否连接成功 0:没有,1: 连接成功 BYTE byLinkMode; // 连接模式 0:adhoc 1:Infrastructure; int nRSSIQuality; // 信号强度(dbm) unsigned int unApMaxBitRate; // 站点的最大传输速率 BYTE byAuthMode; // 认证模式0:OPEN;1:SHARED;2:WPA;3:WPA-PSK;4:WPA2;5:WPA2-PSK; // 6:WPA-NONE(用在adhoc网络模式), // 7-11是混合模式,选择其中任何一种都可以进行连接 // 7:WPA-PSK | WPA2-PSK; 8:WPA | WPA2; 9:WPA | WPA-PSK; // 10:WPA2 | WPA2-PSK; 11:WPA | WPA-PSK |WPA2 |WPA2-PSK //12: UnKnown // 13:WPA3-SAE; 14:WPA3-SAE/PSK BYTE byEncrAlgr; // 加密模式0:off; 2:WEP64bit; 3:WEP128bit; 4:WEP; 5:TKIP; 6:AES(CCMP); 7:TKIP+AES(混合模式) 8:UnKnown BYTE byLinkQuality; // 连接强度 0~100(%) BYTE byWifiType; // WIFI频段类型 0 : 2.4G(默认) ; 1 : 5G BYTE byReserved[128]; // Reserved }DHDEV_WLAN_DEVICE_EX; ///@brief 搜索到的无线设备扩展配置列表 typedef struct { DWORD dwSize; BYTE bWlanDevCount; // 搜索到的无线设备个数 DHDEV_WLAN_DEVICE_EX lstWlanDev[DH_MAX_WLANDEVICE_NUM_EX]; char reserved[255]; } DHDEV_WLAN_DEVICE_LIST_EX; ///@brief 搜索到的无线设备扩展配置列表 typedef struct { DWORD dwSize; BYTE bWlanDevCount; // 搜索到的无线设备个数 DHDEV_WLAN_DEVICE_EX lstWlanDev[MAX_WLAN_DEVICE_NUM]; } DHDEV_WLAN_DEVICE_LIST_EX2; ///@brief 测试设置有效性 typedef struct { int nResult; // 0:表示设置成功,1:表示设置失败 BYTE reserved[32]; } DHDEV_FUNC_TEST; ///@brief FTP服务器信息 typedef struct { char szServerName[32]; // 服务器名 char szIp[16]; // IP地址 int nPort; // 端口号 char szUserName[32]; // 用户名 char szPassword[32]; // 密码 BOOL bAnonymity; // 是否匿名登录 BYTE byReserved[256]; // 保留字节 }FTP_SERVER_CFG; ///@brief ftp服务器连接测试 typedef struct { FTP_SERVER_CFG stuFtpServerInfo; // ftp服务器信息(由用户填写) DHDEV_FUNC_TEST stuTestResult; // ftp服务器连接状态(由设备返回) BYTE byReserved[64]; }DHDEV_FTP_SERVER_TEST; ///@brief DDNS域名信息 typedef struct { char szServerType[DH_MAX_SERVER_TYPE_LEN]; // 服务器类型,希网.. char szServerIp[DH_MAX_DOMAIN_NAME_LEN]; // 服务器ip或者域名 DWORD dwServerPort; // 服务器端口 char szDomainName[DH_MAX_DOMAIN_NAME_LEN]; // dvr域名,如jeckean.3322.org char szUserName[DH_MAX_HOST_NAMELEN]; // 用户名 char szUserPsw[DH_MAX_HOST_PSWLEN]; // 密码 BYTE byReserved[256]; // 保留字节 }DDNS_DOMAIN_INFO; ///@brief DDNS域名是否可用测试 typedef struct { DDNS_DOMAIN_INFO stuDomainInfo; // DDNS域名信息(由用户填写) DHDEV_FUNC_TEST stuTestResult; // 测试结果 char szMemo[128]; // 测试结果描述 BYTE byReserved[64]; }DHDEV_DDNS_DOMAIN_TEST; ///@brief 表示硬盘的基本信息 typedef struct { BYTE byModle[32]; // 型号 BYTE bySerialNumber[32]; // 序列号 BYTE byFirmWare[32]; // 固件号 int nAtaVersion; // ATA协议版本号 int nSmartNum ; // smart 信息数 INT64 Sectors; int nStatus; // 磁盘状态 0-正常 1-异常 int nReserved[33]; // 保留字节 } DHDEV_DEVICE_INFO; ///@brief 硬盘的smart信息,可能会有很多条,最多不超过30个   typedef struct { BYTE byId; // ID BYTE byCurrent; // 属性值 BYTE byWorst; // 最大出错值 BYTE byThreshold; // 阈值 char szName[64]; // 属性名 char szRaw[8]; // 实际值 int nPredict; // 状态 char reserved[128]; } DHDEV_SMART_VALUE; ///@brief 硬盘smart信息查询 typedef struct { BYTE nDiskNum; // 硬盘号 BYTE byRaidNO; // Raid子盘,0表示单盘 BYTE byReserved[2]; // 保留字节 DHDEV_DEVICE_INFO deviceInfo; DHDEV_SMART_VALUE smartValue[MAX_SMART_VALUE_NUM]; } DHDEV_SMART_HARDDISK; ///@brief 各子模块信息 typedef struct { char szModuleName[64]; // 子模块名称 char szHardWareVersion[32]; // 子模块硬件版本号 char szSoftwareVersion[32]; // 子模块软件版本号 BYTE reserved[128]; } DHDEV_SUBMODELE_VALUE; ///@brief 查询设备子模块信息 typedef struct { int nSubModuleNum; // 返回子模块总数 DHDEV_SUBMODELE_VALUE stuSubmoduleValue[MAX_SUBMODULE_NUM]; // 子模块详细信息 BYTE bReserved[256]; } DHDEV_SUBMODULE_INFO; ///@brief 查询硬盘坏道能力 typedef struct { BYTE bDiskDamageLevel[DH_MAX_DISK_NUM]; //各磁盘坏道等级 BYTE bReserved[128]; } DHDEV_DISKDAMAGE_INFO; ///@brief syslog的远程服务器配置 typedef struct { char szServerIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; //服务器地址 int nServerPort; //服务器端口 BYTE bEnable; //服务器使能 BYTE bReserved[255]; //保留字节 }DHDEV_SYSLOG_REMOTE_SERVER; ///@brief 视频备份配置 typedef struct { BYTE backupVideoFormat; // 备份文件类型, 0:dav, 1:asf BYTE password[6]; // 备份密码 BYTE reversed[505]; }DHDEV_BACKUP_VIDEO_FORMAT; ///@brief 主动注册参数配置 typedef struct { char szServerIp[32]; // 注册服务器IP int nServerPort; // 端口号 BYTE byReserved[3]; // 对齐 BYTE bServerIpExEn; // 注册服务器IP扩展使能,0-表示无效, 1-表示有效 char szServerIpEx[60]; // 注册服务器IP扩展,支持ipv4,ipv6,域名等类型的IP } DHDEV_SERVER_INFO; ///@brief 主动注册服务 typedef struct { DWORD dwSize; BYTE bServerNum; // 支持的最大ip数 DHDEV_SERVER_INFO lstServer[DH_MAX_REGISTER_SERVER_NUM]; BYTE bEnable; // 使能 char szDeviceID[32]; // 设备id char reserved[94]; } DHDEV_REGISTER_SERVER; ///@brief 摄像头属性 typedef struct __DHDEV_CAMERA_INFO { BYTE bBrightnessEn; // 亮度可调;1:可,0:不可 BYTE bContrastEn; // 对比度可调 BYTE bColorEn; // 色度可调 BYTE bGainEn; // 增益可调 BYTE bSaturationEn; // 饱和度可调 BYTE bBacklightEn; // 背光补偿 0表示不支持背光补偿,1表示支持一级补偿(开,关),2表示支持两级补偿(关,高,低),3表示支持三级补偿(关,高,中,低) BYTE bExposureEn; // 曝光选择: 0:表示不支持曝光控制 1:表示只支持自动曝光 n:曝光的等级数(1表示支持自动曝光 2~n表示支持的手动控制曝光的等级) BYTE bColorConvEn; // 自动彩黑转换可调 BYTE bAttrEn; // 属性选项;1:可,0:不可 BYTE bMirrorEn; // 镜像;1:支持,0:不支持 BYTE bFlipEn; // 翻转;1:支持,0:不支持 BYTE iWhiteBalance; // 白平衡 0-不支持白平衡,1-支持自动白平衡,2-支持预置白平衡(即情景模式) 3-支持自定义白平衡 BYTE iSignalFormatMask; // 信号格式掩码,按位从低到高位分别为:0-Inside(内部输入) 1- BT656 2-720p 3-1080i 4-1080p 5-1080sF BYTE bRotate90; // 90度旋转 0-不支持 1-支持 BYTE bLimitedAutoExposure; // 是否支持带时间上下限的自动曝光 BYTE bCustomManualExposure; // 是否支持用户自定义手动曝光时间 BYTE bFlashAdjustEn; // 是否支持闪光灯调节 BYTE bNightOptions; // 是否支持夜晚选项 BYTE iReferenceLevel; // 是否支持参考电平设置 BYTE bExternalSyncInput; // 是否支持外部同步信号输入,0-不支持,1-支持 unsigned short usMaxExposureTime; // 自定义曝光区间最大曝光时间,单位毫秒 unsigned short usMinExposureTime; // 自定义曝光区间最小曝光时间,单位毫秒 BYTE bWideDynamicRange; // 宽动态能力范围,0-表示不支持,2~n表示最大的范围值 BYTE bDoubleShutter; // 双快门0不支持,1-支持双快门全帧率,即图像和视频只有快门参数不同,2-支持双快门半帧率,即图像和视频快门及白平衡参数均不同,3-支持双快门全帧率和半帧率 BYTE byExposureCompensation; // 1支持, 0 不支持 BYTE bRev[109]; // 保留 } DHDEV_CAMERA_INFO; ///@brief 夜晚特殊配置选项,在晚上光线较暗时自动切换到夜晚的配置参数 typedef struct __DHDEV_NIGHTOPTIONS { BYTE bEnable; // 0-不切换,1-切换 // 大致日出和日落时间,日落之后日出之前,将采用夜晚特殊的配置。 // 00:00:00 ~23:59:59 BYTE bSunriseHour; BYTE bSunriseMinute; BYTE bSunriseSecond; BYTE bSunsetHour; BYTE bSunsetMinute; BYTE bSunsetSecond; BYTE bWhiteBalance ; // 白平衡 0:unable,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night 7: Custom BYTE bGainRed; // 红色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bGainBlue; // 绿色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bGainGreen; // 蓝色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bGain; // 0~100 BYTE bGainAuto; // 0-不自动增益 1-自动增益 BYTE bBrightnessThreshold ; // 亮度值 0~100 BYTE ReferenceLevel; // 电平参考值 0~100 BYTE bExposureSpeed; // 取值范围取决于设备能力集:0-自动曝光 1~n-1-手动曝光等级 n-带时间上下限的自动曝光 n+1-自定义时间手动曝光 (n表示支持的曝光等级数) float ExposureValue1; // 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms float ExposureValue2; // 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms BYTE bAutoApertureEnable; // 自动光圈使能,1开启,0关闭 BYTE bWideDynamicRange; // 宽动态值 取值范围由能力决定 WORD wNightSyncValue; // 夜晚相位 0~360 WORD wNightSyncValueMillValue; // 夜晚相位0~999(千分之一度),与wNightSyncValue组合构成夜晚相位值 BYTE res[10]; // 保留 } DHDEV_NIGHTOPTIONS; ///@brief 摄像头属性配置 typedef struct __DHDEV_CAMERA_CFG { DWORD dwSize; BYTE bExposure; // 曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==bExposureEn) BYTE bBacklight; // 背光补偿:背光补偿等级取值范围取决于设备能力集,0-关闭,1-背光补偿强度1,2-背光补偿强度2…n-最大背光补偿等级数 BYTE bAutoColor2BW; // 日/夜模式;3-根据时间自动切换 2:开(黑白),1:根据亮度启动切换,0:关(彩色) BYTE bMirror; // 镜像;1:开,0:关 BYTE bFlip; // 翻转;1:开,0:关 BYTE bLensEn; // 自动光圈功能能力: 1:支持;0 :不支持 BYTE bLensFunction; // 自动光圈功能: 1:开启自动光圈;0: 关闭自动光圈 BYTE bWhiteBalance; // 白平衡 0:unable,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night 7: Custom BYTE bSignalFormat; // 信号格式0-Inside(内部输入) 1- BT656 2-720p 3-1080i 4-1080p 5-1080sF BYTE bRotate90; // 0-不旋转,1-顺时针90°,2-逆时针90° BYTE bReferenceLevel; // 电平参考值 0~100 BYTE byReserve; // 保留 float ExposureValue1; // 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms float ExposureValue2; // 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms DHDEV_NIGHTOPTIONS stuNightOptions; // 夜晚配置参数选项 BYTE bGainRed; // 红色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bGainBlue; // 绿色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bGainGreen; // 蓝色增益调节,白平衡为"Custom"模式下有效 0~100 BYTE bFlashMode; // 闪光灯工作模式,0-关闭,1-始终,2-自动 BYTE bFlashValue; // 闪光灯工作值, 0-0us, 1-64us, 2-128us,...15-960us BYTE bFlashPole; // 闪光灯触发模式0-低电平 1-高电平 BYTE bExternalSyncPhase; // 外部同步信号输入,0-内部同步 1-外部同步 BYTE bFlashInitValue; // 闪光灯亮度预设值 区间0~100 WORD wExternalSyncValue ; // 外同步的相位设置 0~360(小数点后3位数字有效) WORD wExternalSyncValueMillValue;// 外同步的相位设置0~999(千分之一度),与wExternalSyncValue组合构成外同步的相位值 BYTE bWideDynamicRange; //宽动态值 取值范围由能力决定 BYTE byExposureCompensation; // 曝光补偿值,默认为7,范围0~14 char bRev[54]; // 保留 } DHDEV_CAMERA_CFG; #define ALARM_MAX_NAME 64 ///@brief (无线)红外报警配置 typedef struct { BOOL bEnable; // 报警输入使能 char szAlarmName[DH_MAX_ALARM_NAME]; // 报警输入名称 int nAlarmInPattern; // 报警器输入波形 int nAlarmOutPattern; // 报警输出波形 char szAlarmInAddress[DH_MAX_ALARM_NAME];// 报警输入地址 int nSensorType; // 外部设备传感器类型常开 or 常闭 int nDefendEfectTime; // 布撤防延时时间,在此时间后该报警输入有效 int nDefendAreaType; // 防区类型 int nAlarmSmoothTime; // 报警平滑时间,即在此时间内如果只有一个报警输入连续输入两次则忽略掉后面一次 char reserved[128]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; DH_MSG_HANDLE struHandle; // 处理方式 } DH_INFRARED_INFO; ///@brief 无线遥控器配置 typedef struct { BYTE address[ALARM_MAX_NAME]; // 遥控器地址 BYTE name[ALARM_MAX_NAME]; // 遥控器名称 BYTE reserved[32]; // 保留字段 } DH_WI_CONFIG_ROBOT; ///@brief 无线报警输出配置 typedef struct { BYTE address[ALARM_MAX_NAME]; // 报警输出地址 BYTE name[ALARM_MAX_NAME]; // 报警输出名称 BYTE reserved[32]; // 保留字段 } DH_WI_CONFIG_ALARM_OUT; ///@brief 报警信息 typedef struct { DWORD dwSize; BYTE bAlarmInNum; // 无线报警输入数 BYTE bAlarmOutNum; // 无线报警输出数 DH_WI_CONFIG_ALARM_OUT AlarmOutAddr[16]; // 报警输出地址 BYTE bRobotNum; // 遥控器个数 DH_WI_CONFIG_ROBOT RobotAddr[16]; // 遥控器地址 DH_INFRARED_INFO InfraredAlarm[16]; char reserved[256]; } DH_INFRARED_CFG; ///@brief 新音频检测报警信息 typedef struct { int channel; // 报警通道号 int alarmType; // 报警类型;0:音频值过低,1:音频值过高 unsigned int volume; // 音量值 BYTE byState; // 音频报警状态, 0: 音频报警出现, 1: 音频报警消失 char reserved[255]; } NET_NEW_SOUND_ALARM_STATE; ///@brief 新音频检测报警 typedef struct { int channelcount; // 报警的通道个数 NET_NEW_SOUND_ALARM_STATE SoundAlarmInfo[DH_MAX_ALARM_IN_NUM]; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DH_NEW_SOUND_ALARM_STATE; ///@brief 抓图功能属性结构体 typedef struct { int nChannelNum; // 通道号 DWORD dwVideoStandardMask; // 分辨率(按位),具体查看枚举 CAPTURE_SIZE int nFramesCount; // Frequence[128]数组的有效长度 char Frames[128]; // 帧率(按数值) // -25:25秒1帧;-24:24秒1帧;-23:23秒1帧;-22:22秒1帧 // …… // 0:无效;1:1秒1帧;2:1秒2帧;3:1秒3帧 // 4:1秒4帧;5:1秒5帧;17:1秒17帧;18:1秒18帧 // 19:1秒19帧;20:1秒20帧 // …… // 25: 1秒25帧 int nSnapModeCount; // SnapMode[16]数组的有效长度 char SnapMode[16]; // (按数值)0:定时触发抓图,1:手动触发抓图 int nPicFormatCount; // Format[16]数组的有效长度 char PictureFormat[16]; // (按数值)0:BMP格式,1:JPG格式 int nPicQualityCount; // Quality[32]数组的有效长度 char PictureQuality[32]; // 按数值 // 100:图象质量100%;80:图象质量80%;60:图象质量60% // 50:图象质量50%;30:图象质量30%;10:图象质量10% char nReserved[128]; // 保留 } DH_QUERY_SNAP_INFO; ///@brief 抓图功能结构体 typedef struct { int nChannelCount; // 通道个数 DH_QUERY_SNAP_INFO stuSnap[DH_MAX_CHANNUM]; } DH_SNAP_ATTR_EN; /* IP过滤功能配置 */ #define DH_IPIFILTER_NUM 200 // IP #define DH_IPIFILTER_NUM_EX 512 // IP ///@brief IP信息 typedef struct { DWORD dwIPNum; // IP个数 char SZIP[DH_IPIFILTER_NUM][DH_MAX_IPADDR_LEN]; // IP char byReserve[32]; // 保留 } IPIFILTER_INFO; ///@brief IP过滤配置结构体 typedef struct { DWORD dwSize; DWORD dwEnable; // 使能 DWORD dwType; // 当前名单类型:0:允许名单 1:禁止名单(设备只能使一种名单生效,或者是允许名单或者是禁止名单) IPIFILTER_INFO BannedIP; // 禁止名单 IPIFILTER_INFO TrustIP; // 允许名单 char byReserve[256]; // 保留 } DHDEV_IPIFILTER_CFG; ///@brief IP信息扩展 typedef struct { DWORD dwIPNum; // IP个数 char SZIP[DH_IPIFILTER_NUM_EX][DH_MAX_IPADDR_LEN]; // IP char byReserve[32]; // 保留 } IPIFILTER_INFO_EX; ///@brief IP过滤配置结构体扩展 typedef struct { DWORD dwSize; DWORD dwEnable; // 使能 DWORD dwType; // 当前名单类型:0:允许名单 1:禁止名单(设备只能使一种名单生效,或者是允许名单或者是禁止名单) IPIFILTER_INFO_EX BannedIP; // 禁止名单 IPIFILTER_INFO_EX TrustIP; // 允许名单 char byReserve[256]; // 保留 } DHDEV_IPIFILTER_CFG_EX; /* MAC过滤配置 */ #define DH_MACFILTER_NUM 512 // MAC ///@brief MAC信息 typedef struct { DWORD dwSize; // 使用时,用初始化为本结构体大小 DWORD dwMacNum; // MAC个数 char szMac[DH_MACFILTER_NUM][DH_MACADDR_LEN]; // MAC } MACFILTER_INFO; ///@brief MAC过滤配置结构体 typedef struct { DWORD dwSize; // 使用时,用初始化为本结构体大小 DWORD dwEnable; // 使能 DWORD dwType; // 当前名单类型:0:允许名单 1:禁止名单(设备只能使一种名单生效,或者是允许名单或者是禁止名单) MACFILTER_INFO stuBannedMac; // 禁止名单Mac MACFILTER_INFO stuTrustMac; // 允许名单Mac } DHDEV_MACFILTER_CFG; /* MAC,IP过滤配置 */ #define DH_MACIPFILTER_NUM 512 // MAC,IP ///@brief MAC,IP过滤信息 typedef struct { DWORD dwSize; // 使用时,用初始化为本结构体大小 char szMac[DH_MACADDR_LEN]; // mac char szIp[DH_MAX_IPADDR_LEN]; // ip }MACIP_INFO; ///@brief MAC,IP过滤配置结构体 typedef struct { DWORD dwSize; // 使用时,用初始化为本结构体大小 DWORD dwEnable; // 使能 DWORD dwType; // 当前名单类型:0:允许名单 1:禁止名单(设备只能使一种名单生效,或者是允许名单或者是禁止名单) DWORD dwBannedMacIpNum; // 禁止名单MAC,IP个数(MAC,IP一一对应) MACIP_INFO stuBannedMacIp[DH_MACIPFILTER_NUM]; // 禁止名单Mac,IP DWORD dwTrustMacIpNum; // 允许名单MAC,IP个数(MAC,IP一一对应) MACIP_INFO stuTrustMacIp[DH_MACIPFILTER_NUM]; // 允许名单Mac,IP } DHDEV_MACIPFILTER_CFG; ///@brief 卡口信息配置 typedef struct { int nCardNum; // 有效卡号数 char cardInfo [DH_MAX_CARD_NUM][DH_MAX_CARDINFO_LEN]; // 卡号信息字符串 BYTE byReserve[32]; // 保留字段 }DHDEV_NETCARD_CFG; ///@brief RTSP 配置 typedef struct { WORD wPort; // 端口号 BYTE byReserved[62]; // 保留字段 }DHDEV_RTSP_CFG; ///@brief 具体密钥信息36个字节 typedef struct _ENCRYPT_KEY_INFO { BYTE byEncryptEnable; // 是否加密0:不加密, 1:加密 BYTE byReserved[3]; union { BYTE byDesKey[8]; // des密钥 BYTE by3DesKey[3][8]; // 3des密钥 BYTE byAesKey[32]; // aes密钥 }; }ENCRYPT_KEY_INFO; ///@brief 加密算法参数 typedef struct _ALGO_PARAM_INFO { WORD wEncryptLenth; // 密钥长度,当前为AES算法类型时,表示密钥位数(目前支持128,192,256位三种, 如: wEncryptLenth为128,则密钥信息ENCRYPT_KEY_INFO里的byAesKey[0]~[15]) // 为DES算法类型时,密钥长度固定为64位 // 为3DES算法类型时,表示密钥的个数(2或3个密钥) BYTE byAlgoWorkMode ; // 工作模式,参考枚举类型 EM_ENCRYPT_ALOG_WORKMODE BYTE reserved[13]; // 保留字段 }ALGO_PARAM_INFO; ///@brief 码流加密配置信息 typedef struct _DHEDV_STREAM_ENCRYPT { BYTE byEncrptAlgoType; // 加密算法类型:00: AES、01:DES、02: 3DES BYTE byReserved1[3]; ALGO_PARAM_INFO stuEncrptAlgoparam; // 加密算法参数 ENCRYPT_KEY_INFO stuEncryptKeys[32]; // 各通道的密钥信息 BYTE byEncrptPlanEnable; // 加密计划使能 BYTE byReserved3[3]; NET_TIME stuPreTime; // 加密计划的开始时间 BYTE reserved2[1360]; }DHEDV_STREAM_ENCRYPT; ///@brief 限码流配置 typedef struct _DHDEV_BIT_RATE { DWORD nExpectCodeRate; // 限制码流,单位kps BYTE byReserved[64]; // 保留字节 }DHDEV_LIMIT_BIT_RATE; ///@brief 用户自定义配置 typedef struct _DHDEV_CUSTOM_CFG { char szData[1024]; // 用户自定义配置信息 char reserved[3072]; // 保留字段 }DHDEV_CUSTOM_CFG; ///@brief 语音对讲编码配置 typedef struct { DWORD dwSize; int nCompression; // 压缩格式,枚举值,相见DH_TALK_CODING_TYPE,请根据设备支持的语音对讲类型设置压缩格式。 int nMode; // 编码模式,枚举值,为0时表示该压缩格式不支持编码模式。 // 根据压缩格式可以设置对应的编码格式,如 // AMR详见EM_ARM_ENCODE_MODE char byReserve[256]; // 保留 } DHDEV_TALK_ENCODE_CFG; ///@brief 以下是mobile功能相关 ///@brief (事件触发多媒体彩信/短信发送)MMS配置结构体 typedef struct { DWORD dwSize; DWORD dwEnable; // 使能 DWORD dwReceiverNum; // 短信接收者个数 char SZReceiver[DH_MMS_RECEIVER_NUM][32]; // 短信接收者,一般为手机号码 BYTE byType; // 短信信息类型 0:MMS;1:SMS char SZTitle[32]; // 短信信息标题 char byReserve[223]; // 保留 } DHDEV_MMS_CFG; ///@brief (短信激活无线连接配置) typedef struct { DWORD dwSize; DWORD dwEnable; // 使能 DWORD dwSenderNum; // 短信发送者个数 char SZSender[DH_MMS_SMSACTIVATION_NUM][32]; // 短信发送者,一般为手机号码 char byReserve[256]; // 保留 }DHDEV_SMSACTIVATION_CFG; ///@brief (拨号激活无线连接配置) typedef struct { DWORD dwSize; DWORD dwEnable; // 使能 DWORD dwCallerNum; // 发送者个数 char SZCaller[DH_MMS_DIALINACTIVATION_NUM][32];// 发送者, 一般为手机号码 char byReserve[256]; // 保留 }DHDEV_DIALINACTIVATION_CFG; ///@brief 无线网络信号强度结构体 typedef struct { DWORD dwSize; DWORD dwTDSCDMA; // TD-SCDMA强度,范围:0-100 DWORD dwWCDMA; // WCDMA强度,范围:0-100 DWORD dwCDMA1x; // CDMA1x强度,范围:0-100 DWORD dwEDGE; // EDGE强度,范围:0-100 DWORD dwEVDO; // EVDO强度,范围:0-100 int nCurrentType; // 当前类型 // 0 设备不支持这一项 // 1 TD-SCDMA // 2 WCDMA // 3 CDMA_1x // 4 EDGE // 5 EVDO // 6 TD-LTE // 7 FDD-LTE DWORD dwTDLTE; // TD-LTE强度,范围:0-100 DWORD dwFDDLTE; // FDD-LTE强度,范围:0-100 char byReserve[244]; // 保留 } DHDEV_WIRELESS_RSS_INFO; ///@brief SIP配置 typedef struct _DHDEV_SIP_CFG { BOOL bUnregOnBoot; //Unregister on Reboot char szAccoutName[64]; //Account Name char szSIPServer[128]; //SIP Server char szOutBoundProxy[128]; //Outbound Proxy DWORD dwSIPUsrID; //SIP User ID DWORD dwAuthID; //Authenticate ID char szAuthPsw[64]; //Authenticate Password char szSTUNServer[128]; //STUN Server DWORD dwRegExp; //Registration Expiration DWORD dwLocalSIPPort; //Local SIP Port DWORD dwLocalRTPPort; //Local RTP Port BOOL bEnable; // 使能 char szNotifyID[128]; // 联动ID NET_TIME stuRegTime; // 注册成功的时间;只读字段,设备指定。 BYTE bReserved[868]; //reserved } DHDEV_SIP_CFG; ///@brief SIP状态 typedef struct _DHDEV_SIP_STATE { int nStatusNum; //状态信息总的个数 BYTE byStatus[64]; //0:注册成功,1:未注册,2:无效,3:注册中,4:通话中 BYTE bReserved[64]; //保留 }DHDEV_SIP_STATE; ///@brief 查询HardKey状态 typedef struct _DHDEV_HARDKEY_STATE { BOOL bState; // 0:未插入HardKey, 1:已插入HardKey BYTE bReserved[64]; // 保留 }DHDEV_HARDKEY_STATE; ///@brief 查询ISCSI路径列表 typedef struct _DHDEV_ISCSI_PATHLIST { int nCount; char szPaths[DH_MAX_ISCSI_PATH_NUM][MAX_PATH_STOR]; // 远程目录数组 } DHDEV_ISCSI_PATHLIST; ///@brief 无线路由能力信息 typedef struct _DHDEV_WIFI_ROUTE_CAP_COUNTRY { char szCountry[32]; // 国家 int nValidChnNum; // 有效通道数量 int nValideChannels[32]; // 有效通道列表 char reserved[64]; // 保留 } DHDEV_WIFI_ROUTE_CAP_COUNTRY; ///@brief 查询无线路由能力信息 typedef struct _DHDEV_WIFI_ROUTE_CAP { int nCountryNum; // 国家数量 DHDEV_WIFI_ROUTE_CAP_COUNTRY stuCountry[256]; // 不同国家的配置信息 char reserved[256]; // 保留 } DHDEV_WIFI_ROUTE_CAP; ///@brief 画面监控辅助信息 typedef struct _MONITOR_INFO { int nPresetObjectNum; // 预置应有目标数目 int nActualObjectNum; // 现场实际目标数目 char reserved[64]; }MONITOR_INFO; ///@brief 画面监控辅助信息 typedef struct _DHDEV_MONITOR_INFO { int nChannelNumber; MONITOR_INFO stMonitorInfo[64]; // 画面监控辅助信息 char reserved[128]; }DHDEV_MONITOR_INFO; ///@brief 多通道预览回放分割能力 typedef struct tagNET_MULTIPLAYBACK_SPLIT_CAP { DWORD dwSize; int nSliptMode[DH_MAX_MULTIPLAYBACK_SPLIT_NUM]; // 支持的分割模式, int nModeNumber; }NET_MULTIPLAYBACK_SPLIT_CAP; ///@brief 云台预制点配置 typedef struct _POINTEANBLE { BYTE bPoint; //预制点的有效范围闭区间[1,80],无效设置为0。 BYTE bEnable; //是否有效,0无效,1有效 BYTE bReserved[2]; } POINTEANBLE; ///@brief 预制点配置 typedef struct _POINTCFG { char szIP[DH_MAX_IPADDR_LEN]; // ip int nPort; // 端口 POINTEANBLE stuPointEnable[80]; // 预制点使能 BYTE bReserved[256]; }POINTCFG; ///@brief 预制点配置 typedef struct _DHDEV_POINT_CFG { int nSupportNum; // 只读参数,设置的时候需要返回给sdk,表示支持的预制点数 POINTCFG stuPointCfg[16]; // 二维下标表示通道号。要设置的点数值放在前nSupportNum个下标里面。 BYTE bReserved[256]; // 保留 }DHDEV_POINT_CFG; ////////////////////////////车载DVR支持//////////////////////////////// ///@brief GPS信息(车载设备) typedef struct _GPS_Info { NET_TIME revTime; // 定位时间 char DvrSerial[50]; // 设备序列号 double longitude; // 经度(单位是百万分之度,范围0-360度) double latidude; // 纬度(单位是百万分之度,范围0-180度) double height; // 高度(米) double angle; // 方向角(正北方向为原点,顺时针为正) double speed; // 速度(单位是海里,speed/1000*1.852公里/小时) WORD starCount; // 定位星数 BOOL antennaState; // 天线状态(true 好,false 坏) BOOL orientationState; // 定位状态(true 定位,false 不定位) } GPS_Info,*LPGPS_Info; ///@brief 报警状态信息 typedef struct { int nAlarmCount; // 发生的报警事件个数 int nAlarmState[128]; // 发生的报警事件类型 BYTE byRserved[128]; // 保留字节 }ALARM_STATE_INFO; ///@brief Gps定位信息 typedef struct tagNET_GPS_LOCATION_INFO { GPS_Info stuGpsInfo; // GPS信息 ALARM_STATE_INFO stuAlarmStateInfo; // 报警状态信息 int nTemperature; // 温度(单位:0.1摄氏度) int nHumidity; // 湿度(单位:0.1%) unsigned int nIdleTime; // 怠速时长(单位:秒) unsigned int nMileage; // 里程(单位:0.1km) int nVoltage; // 设置电压值(单位:0.1伏) BYTE bOffline; // 0-实时 1-补传 BYTE byReserved[1023]; }NET_GPS_LOCATION_INFO, *LPNET_GPS_LOCATION_INFO; ///@brief 抓图参数结构体 typedef struct _snap_param { unsigned int Channel; // 抓图的通道 unsigned int Quality; // 画质;1~6 unsigned int ImageSize; // 画面大小;0:QCIF,1:CIF,2:D1 unsigned int mode; // 抓图模式;-1:表示停止抓图, 0:表示请求一帧, 1:表示定时发送请求, 2:表示连续请求 unsigned int InterSnap; // 时间单位秒;若mode=1表示定时发送请求时 // 只有部分特殊设备(如:车载设备)支持通过该字段实现定时抓图时间间隔的配置 // 建议通过 CFG_CMD_ENCODE 配置的stuSnapFormat[nSnapMode].stuVideoFormat.nFrameRate字段实现相关功能 unsigned int CmdSerial; // 请求序列号,有效值范围 0~65535,超过范围会被截断为 unsigned short unsigned int Reserved[4]; } SNAP_PARAMS, *LPSNAP_PARAMS; ///@brief 抓图功能配置 typedef struct { DWORD dwSize; BYTE bTimingEnable; // 定时抓图开关(报警抓图开关在各报警联动配置中体现) BYTE bPicIntervalHour; // 定时抓图时间间隔小时数 short PicTimeInterval; // 定时抓图时间间隔,单位为秒,目前设备支持最大的抓图时间间隔为30分钟 DH_VIDEOENC_OPT struSnapEnc[SNAP_TYP_NUM]; // 抓图编码配置,现支持其中的分辨率、画质、帧率设置,帧率在这里是负数,表示一秒抓图的次数。 } DHDEV_SNAP_CFG; ///@brief 抓图功能配置扩展 typedef struct { DWORD dwSize; BYTE bTimingEnable; // 定时抓图开关(报警抓图开关在各报警联动配置中体现) BYTE bPicIntervalHour; // 定时抓图时间间隔小时数 short PicTimeInterval; // 定时抓图时间间隔,单位为秒,目前设备支持最大的抓图时间间隔为30分钟 DH_VIDEOENC_OPT struSnapEnc[SNAP_TYP_NUM]; // 抓图编码配置,现支持其中的分辨率、画质、帧率设置,帧率在这里是负数,表示一秒抓图的次数。 DWORD dwTrigPicIntervalSecond; // 报警触发后每次抓图时间间隔时间 单位秒 BYTE byRserved[256]; // 保留字节 } DHDEV_SNAP_CFG_EX; ///@brief 车载wifi状态 typedef struct { char szSSID[128]; //SSID BOOL bEnable; //是否启用wifi功能, 0:不使能 1:使能 int nSafeType; //校验类型 //0:OPEN //1:RESTRICTE //2:WEP //3:WPA //4:WPA2 //5:WPA-PSK //6:WPA2-PSK int nEncryprion; //加密方式 //0:OPEN //1:TKIP //2:WEP //3:AES //4:NONE(不校验) //5:AUTO //6:SHARED int nStrength; //AP站点信号 char szHostIP[128]; //主机地址 char szHostNetmask[128]; //主机掩码 char szHostGateway[128]; //主机网关 int nPriority; //优先级,(1-32) int nEnDHCP; //0:不使能; 1:使能(扫描到的dhcp默认使能打开) BYTE bReserved[1016]; } DHDEV_VEHICLE_WIFI_STATE; ///@brief 车载wifi配置 typedef struct { char szSSID[128]; //SSID int nPriority; //优先级,(1-32) int nSafeType; //校验类型 //0:OPEN //1:RESTRICTE //2:WEP //3:WPA //4:WPA2 //5:WPA-PSK //6:WPA2-PSK int nEncryprion; //加密方式 //0:OPEN //1:TKIP //2:WEP //3:AES //4:NONE(不校验) //5:AUTO //6:SHARED char szKey[128]; //连接密钥 char szHostIP[128]; //主机地址 char szHostNetmask[128]; //主机掩码 char szHostGateway[128]; //主机网关 int nEnDHCP; //0:不使能; 1:使能(扫描到的dhcp默认使能打开) BYTE byKeyIndex; //WEP校验类型下的密钥索引,0:不支持密钥索引 >0:密钥索引值,范围1-4 BYTE bReserved[1019]; } DHDEV_VEHICLE_WIFI_CONFIG; ///@brief wifi配置 typedef struct { char szSSID[128]; // SSID BYTE bReserved[256]; // 保留字节 }WIFI_CONNECT; ///@brief IP修改配置 typedef struct __DHCTRL_IPMODIFY_PARAM { int nStructSize; char szRemoteIP[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 前端设备IP char szSubmask[DH_MAX_IPADDR_LEN]; // 子网掩码 char szGateway[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 网关 char szMac[DH_MACADDR_LEN]; // MAC地址 char szDeviceType[DH_DEV_TYPE_LEN]; // 设备类型 }DHCTRL_IPMODIFY_PARAM; ///@brief 单个WIFI AP配置 typedef struct { BOOL bIsScan; //0:非扫描wifi (手动添加的), 1扫描到的wifi char szSSID[128]; //SSID int nSafeType; //校验类型 //0:OPEN //1:RESTRICTE //2:WEP //3:WPA //4:WPA2 //5:WPA-PSK //6:WPA2-PSK int nEncryprion; //加密方式 //0:OPEN //1:TKIP //2:WEP //3:AES //4:NONE(不校验) //5:AUTO //6:SHARED char szKey[128]; //连接密钥 int nStrength; //AP站点信号 int nMaxBitRate; //AP站点的最大传输速率,带单位 只读 int nIsCnnted; //是否连接成功只读 int nIsSaved; //是否已经保存只读 int nPriority; //优先级,(1-32) char szHostIP[128]; //主机地址 char szHostNetmask[128]; //主机掩码 char szHostGateway[128]; //主机网关 int nWifiFreq; //无线频率,采用通道标识 int nEnDHCP; //0:不使能 1:使能(扫描到的dhcp默认使能打开) BYTE byKeyIndex; //WEP校验类型下的密钥索引,0:不支持密钥索引 >0:密钥索引值,范围1-4 BYTE bReserved[1019]; }DHDEV_VEHICLE_SINGLE_WIFI_AP_CFG; ///@brief wifi ap配置 typedef struct { BOOL bEnable; //是否启用wifi功能, 0:不使能 1:使能 int nWifiApNum; //DHDEV_VEHICLE_WIFI_AP_CFG结构体有效个数 DHDEV_VEHICLE_SINGLE_WIFI_AP_CFG struWifiAp[64];//单个WIFI AP配置 int nReserved[512]; //保留 }DHDEV_VEHICLE_WIFI_AP_CFG; ///@brief wifi ap配置 typedef struct { BOOL bEnable; //是否启用wifi功能, 0:不使能 1:使能 int nRetWifiApNum; //解析得到的DHDEV_VEHICLE_WIFI_AP_CFG结构体有效个数 int nMaxWifiApNum; //申请的DHDEV_VEHICLE_SINGLE_WIFI_AP_CFG个数 DHDEV_VEHICLE_SINGLE_WIFI_AP_CFG* pWifiAp; //单个WIFI AP配置 int nReserved[512]; //保留 }DHDEV_VEHICLE_WIFI_AP_CFG_EX; ///@brief GPS日志信息结构体 typedef struct _DH_DEVICE_GPS_LOG_ITEM { DHDEVTIME stuDevTime; // 设备时间 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 DWORD dwSpeed; // 速度,单位是海里,speed/1000*1.852公里/小时 DWORD dwHight; // 高度,米 DWORD dwAngle; // 方向,角度0~360,正北方向为原点,顺时针为正 DHDEVTIME stuGpsTime; // GPS时间 BYTE bAntStatus; // GPS天线状态,为0表示好;不为0表示异常 BYTE bOriStatus; // 定位状态,不为0表示定位成功 BYTE bSatCount; // 卫星数量 BYTE bGPSStatus; // GPS状态,0,未定位 1,无差分定位信息 2,带差分定位信息 DWORD dwTemp; // 温度值(摄氏度),实际值的1000倍,如30.0摄氏度表示为30000 DWORD dwHumidity; // 湿度值(%),实际值的1000倍,如30.0%表示为30000 BYTE bReserved[24]; // 保留字节 }DH_DEVICE_GPS_LOG_ITEM; ///@brief GPS 日志查询参数结构体 typedef struct _QUERY_GPS_LOG_PARAM { NET_TIME stuStartTime; // 查询日志的开始时间 NET_TIME stuEndTime; // 查询日志的结束时间 int nStartNum; // 在时间段中从第几条日志开始查询,开始第一次查询可设为0 BYTE bReserved[20]; } QUERY_GPS_LOG_PARAM; ///@brief GPS温湿度信息 typedef struct _GPS_TEMP_HUMIDITY_INFO { double dTemperature; // 温度值(摄氏度),实际值的1000倍,如30.0摄氏度表示为30000 double dHumidity; // 湿度值(%),实际值的1000倍,如30.0%表示为30000 BYTE bReserved[128]; // 保留字节 }GPS_TEMP_HUMIDITY_INFO; ///@brief 电子围栏类型枚举 typedef enum { ENCLOSURE_UNKNOWN = 0x00, // 未知 ENCLOSURE_LIMITSPEED = 0x01, // 限速区 ENCLOSURE_DRIVEALLOW = 0x02, // 驾驶区 ENCLOSURE_FORBIDDRIVE = 0x04, // 禁止区 ENCLOSURE_LOADGOODS = 0x08, // 装货区 ENCLOSURE_UPLOADGOODS = 0x10, // 卸货区 ENCLOSURE_FLYALLOW = 0x20, // 飞行区 ENCLOSURE_MANUALFORBIDFLY = 0x40, // 禁飞区(手动设置) ENCLOSURE_FIXEDFORBIDFLY = 0x80, // 禁飞区(机场) - 不可配置 ENCLOSURE_FiXEDLIMITFLY = 0x81, // 限制飞行 - 不可配置 }ENCLOSURE_TYPE; ///@brief 报警类型 typedef enum { ENCLOSURE_ALARM_DRIVEIN , // 驶入 ENCLOSURE_ALARM_DRIVEOUT, // 驶出 ENCLOSURE_ALARM_OVERSPEED, // 超速 ENCLOSURE_ALARM_SPEEDCLEAR, // 超速消失 ENCLOSURE_ALARM_FLYNEAR, // 飞行靠近 }ENCLOSURE_ALARM_TYPE; ///@brief 电子围栏区域信息 typedef struct { DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 }GPS_POINT; ///@brief 电子围栏配置 typedef struct _DHDEV_ENCLOSURE_CFG { UINT unType; // 电子围栏类型掩码,见 ENCLOSURE_TYPE BYTE bRegion[8]; // 前四位分别代表国家、省、市或区、县(0-255),后4bytes保留 UINT unId; // 一个区域以一个ID标识 UINT unSpeedLimit; // 限速,单位km/h UINT unPointNum; // 电子围栏区域顶点数 GPS_POINT stPoints[128]; // 电子围栏区域信息 char szStationName[DH_STATION_NAME_LEN]; // 电子围栏包围的车站站点名称 BYTE bDisenable; // 去使能。 0 启用 ;1 不启用 BYTE bShape; // 围栏形状 0 多边形 1 圆形; BYTE bLimitType; // 围栏限制类型 0 无; 1 限高; 2 限半径; 3 限高限半径 BYTE bAction; // 触发围栏后,设备的动作;0 无,兼容以前; 1 只报告; 2 悬停; 3 返航; int nLimitAltitude; // 高度 单位:厘米。 0 无效 int nAlarmAltitude; // 预警高度单位:厘米。 0 无效 UINT unLimitRadius; // 半径单位:厘米。0 无效 UINT unAlarmRadius; // 预警半径:厘米。0 无效 BYTE reserved[12]; // 保留 }DHDEV_ENCLOSURE_CFG; ///@brief 电子围栏版本号配置 typedef struct _DHDEV_ENCLOSURE_VERSION_CFG { UINT unType; // 围栏类型掩码,如LIMITSPEED | DRIVEALLOW UINT unVersion[32]; // 每个类型一个版本号,用于统一平台与设备上的围栏配置 int nReserved; // 保留 }DHDEV_ENCLOSURE_VERSION_CFG; ///@brief 围栏报警类型 typedef enum tagEM_ENCLOSURE_TYPE_EX { EM_ENCLOSURE_TYPE_EX_UNKNOWN, // 未知 EM_ENCLOSURE_TYPE_EX_LIMITSPEED, // 限速区 EM_ENCLOSURE_TYPE_EX_DRIVEALLOW, // 驾驶区 EM_ENCLOSURE_TYPE_EX_FORBIDDRIVE, // 禁止区 EM_ENCLOSURE_TYPE_EX_LOADGOODS, // 装货区 EM_ENCLOSURE_TYPE_EX_UPLOADGOODS, // 卸货区 }EM_ENCLOSURE_TYPE_EX; ///@brief 详细类型 typedef enum tagEM_ENCLOSURE_ALARM_TYPE_EX { ENCLOSURE_ALARM_EX_UNKNOWN, // 未知 ENCLOSURE_ALARM_EX_DRIVEIN , // 驶入 ENCLOSURE_ALARM_EX_DRIVEOUT, // 驶出 ENCLOSURE_ALARM_EX_OVERSPEED, // 超速 ENCLOSURE_ALARM_EX_SPEEDCLEAR, // 超速消失 }EM_ENCLOSURE_ALARM_TYPE_EX; ///@brief 电子围栏报警拓展结构体 typedef struct tagALARM_ENCLOSURE_INFO_EX { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 EM_ENCLOSURE_TYPE_EX emType; // 围栏报警类型 int nActionNum; // 返回详细类型个数 EM_ENCLOSURE_ALARM_TYPE_EX emAction[16]; // 详细类型 int nDriverNo; // 司机编号 int nEnclosureID; // 围栏编号 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 int nLimitSpeed; // 限制车速 int nSpeed; // 当前速度 char szDeviceID[32]; // 设备ID int nStartEnclosureID; // 出发围栏编号 int nEndEnclosureID; // 目的围栏编号 NET_TIME_EX stuStartTime; // 出发时间,本地时间 NET_TIME_EX stuEndTime; // 出发时间,本地时间 int nMileage; // 本趟行驶行驶里程数,单位0.1Km int nTriggerCount; // 趟数 char szReserved[1024]; // 保留 }ALARM_ENCLOSURE_INFO_EX; ///@brief 电子围栏报警 typedef struct __ALARM_ENCLOSURE_INFO { int nTypeNumber; // 有效电子围栏类型个数 BYTE bType[16]; // 电子围栏类型, 见 ENCLOSURE_TYPE int nAlarmTypeNumber; // 有效报警类型个数 BYTE bAlarmType[16]; // 报警类型,见ENCLOSURE_ALARM_TYPE char szDriverId[DH_VEHICLE_DRIVERNO_LEN]; // 司机工号 UINT unEnclosureId; // 电子围栏ID UINT unLimitSpeed; // 限速,单位km/h UINT unCurrentSpeed; // 当前速度 NET_TIME stAlarmTime; // 报警发生时间 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 BYTE bOffline; // 0-实时 1-补传 char reserve[3]; // 字节对齐 UINT unTriggerCount; // 围栏触发次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 注:该结构体走 ALARM_ENCLOSURE_INFO_EX 时依然有效 BOOL bIsAlarmEnclosureInfoEx; // 该值为TRUE时应使用 ALARM_ENCLOSURE_INFO_EX 结构体中字段 ALARM_ENCLOSURE_INFO_EX stuAlarmEnclosureInfoEx; // 当走三代事件时数据存在该结构体 BYTE byReserved[128]; // 保留字节 }ALARM_ENCLOSURE_INFO; ///@brief 订阅事件接口完成异步通知事件(DH_START_LISTEN_FINISH_EVENT)信息结构体 typedef struct tagSTART_LISTEN_FINISH_RESULT_INFO { DWORD dwEventResult; // 事件订阅返回结果 NET_NOERROR:成功 非0:失败,值为错误码,详见_EC(x) BYTE byReserved[508]; // 保留字节 }START_LISTEN_FINISH_RESULT_INFO; #define DH_MAX_RAID_NUM 16 #define DH_MAX_RAID_DEVICE_NAME 16 ///@brief RAID异常信息 typedef struct __RAID_STATE_INFO { char szName[16]; // Raid名称 BYTE byType; // 类型 1:Jbod 2:Raid0 3:Raid1 4:Raid5 BYTE byStatus; // 状态 0:unknown ,1:active,2:degraded,3:inactive,4:recovering BYTE byReserved[2]; int nCntMem; // nMember数组的有效数据个数 int nMember[32]; // 1,2,3,... 组成磁盘通道,是个数组 int nCapacity; // 容量,单位G int nRemainSpace; // 剩余容量,单位M int nTank; // 扩展柜 0:主机,1:扩展柜1,2:扩展柜2,…… char reserved[32]; }RAID_STATE_INFO; ///@brief RAID异常信息 typedef struct __ALARM_RAID_INFO { int nRaidNumber; // 上报的RAID个数 RAID_STATE_INFO stuRaidInfo[DH_MAX_RAID_NUM]; // 异常的RAID信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[128]; }ALARM_RAID_INFO; ///@brief RAID错误类型 typedef enum tagEM_RAID_ERROR { EM_RAID_ERROR_UNKNOW, // 未知 EM_RAID_ERROR_FAILED, // RAID错误 EM_RAID_ERROR_DEGRADED, // RAID降级 } EM_RAID_ERROR; ///@brief 故障子盘状态 typedef enum tagEM_RAID_ERR_SUBDISK { EM_RAID_ERR_SUBDISK_UNKNOWN, // 未知 EM_RAID_ERR_SUBDISK_OFFLINE, // 离线 EM_RAID_ERR_SUBDISK_FAULTY, // 异常 EM_RAID_ERR_SUBDISK_WRITEERR, // 写错误 } EM_RAID_ERR_SUBDISK; ///@brief 故障子盘详细信息 typedef struct tagNET_RAID_ERR_DETAIL_INFO { DWORD dwSlotNum; // 子盘槽位号 EM_RAID_ERR_SUBDISK emErrSubDisk; // 子盘状态 BYTE byReserved[24]; // 保留 }NET_RAID_ERR_DETAIL_INFO; ///@brief 新RAID异常信息 对应DH_ALARM_RAID_STATE_EX报警 typedef struct tagALARM_RAID_INFO_EX { DWORD nAction; // 0-开始, 1-停止 char szDevice[DH_MAX_RAID_DEVICE_NAME]; // 设备名称 EM_RAID_ERROR emErrorType; // 错误类型 int nDetailNum; // 有效的故障子盘个数 NET_RAID_ERR_DETAIL_INFO stuErrDetail[16]; // 故障子盘详细信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[508]; // 保留 }ALARM_RAID_INFO_EX; ///@brief IPC的存储介质故障事件(SD卡异常)结构体 对应 DH_ALARM_STORAGE_IPC_FAILURE 报警 typedef struct tagALARM_STORAGE_IPC_FAILURE_INFO { int nAction; // 0:开始 1:停止 int nChannelID; // 发生报警的通道号 BYTE byReserved[1024]; // 保留字节 }ALARM_STORAGE_IPC_FAILURE_INFO; ///@brief 静止报警,如果设备坐标在指定时间内没有变化,触发静止报警信息对应 DH_ALARM_DEVICE_STAY typedef struct tagALARM_DEVICE_STAY_INFO { int nAction; // 0:开始 1:停止 int nChannelID; // 发生报警的通道号 BYTE byReserved[1024]; // 保留字节 }ALARM_DEVICE_STAY_INFO; ///@brief 地铁车厢门状态类型 typedef enum tagEM_SUB_WAY_DOOR_STATE_TYPE { EM_SUB_WAY_DOOR_STATE_TYPE_UNKNOWN, // 未知的 EM_SUB_WAY_DOOR_STATE_TYPE_LOST, // 状态丢失 EM_SUB_WAY_DOOR_STATE_TYPE_ISOLATION, // 隔离 EM_SUB_WAY_DOOR_STATE_TYPE_UNLOCK, // 解锁 EM_SUB_WAY_DOOR_STATE_TYPE_NORMAL, // 正常 }EM_SUB_WAY_DOOR_STATE_TYPE; ///@brief 地铁车厢号类型 typedef enum tagEM_SUB_WAY_CARRIAGE_NUMBER_TYPE { EM_SUB_WAY_CARRIAGE_NUMBER_TYPE_UNKNOWN, // 未知的 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE_TC1, // TC1 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE_M1, // M1 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE_M2, // M2 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE_TC2, // TC2 }EM_SUB_WAY_CARRIAGE_NUMBER_TYPE; ///@brief 地铁车厢门状态 对应 DH_ALARM_SUB_WAY_DOOR_STATE 报警 typedef struct tagALARM_SUB_WAY_DOOR_STATE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nDoorNumber; // 门号 EM_SUB_WAY_DOOR_STATE_TYPE emDoorState; // 状态 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_DOOR_STATE_INFO; ///@brief 地铁PECE柜门状态 对应 DH_ALARM_SUB_WAY_PECE_SWITCH 报警 typedef struct tagALARM_SUB_WAY_PECE_SWITCH_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nDoorNumber; // 门号 int nState; // 状态,1表示打开,0表示关闭,其他值表示未知 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_PECE_SWITCH_INFO; ///@brief 地铁火警事件 对应 DH_ALARM_SUB_WAY_FIRE_ALARM 报警 typedef struct tagALARM_SUB_WAY_FIRE_ALARM_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nSourceNumber; // 火警源号 BOOL bState; // 状态,TRUE表示有火警,FALSE表示无火警 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_FIRE_ALARM_INFO; ///@brief 地铁乘客紧急手柄动作 对应 DH_ALARM_SUB_WAY_EMER_HANDLE 报警 typedef struct tagALARM_SUB_WAY_EMER_HANDLE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 BOOL bState; // 状态,TRUE表示有动作,FALSE表示无动作 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_EMER_HANDLE_INFO; ///@brief 地铁司机室盖板状态 对应 DH_ALARM_SUB_WAY_CAB_COVER 报警 typedef struct tagALARM_SUB_WAY_CAB_COVER_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nState; // 状态,1表示打开,0表示关闭,其他值表示未知 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_CAB_COVER_INFO; ///@brief 地铁检测到障碍物或脱轨 对应 DH_ALARM_SUB_WAY_DERA_OBST 报警 typedef struct tagALARM_SUB_WAY_DERA_OBST_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 BOOL bState; // 状态,TRUE表示检测到障碍物或脱轨,FALSE表示未检测到障碍物或脱轨 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_DERA_OBST_INFO; ///@brief 地铁客室报警器状态 对应 DH_ALARM_SUB_WAY_PECU_CALL 报警 typedef struct tagALARM_SUB_WAY_PECU_CALL_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nCallNumber; // 报警器号 BOOL bState; // 状态,TRUE表示报警,FALSE表示无报警 EM_SUB_WAY_CARRIAGE_NUMBER_TYPE emCarriageNumber; // 车厢号 BYTE byReserved[1024]; // 保留字节 }ALARM_SUB_WAY_PECU_CALL_INFO; ///@brief 人为关门结构体对应 DH_ALARM_DOOR_CLOSEDMANUALLY 报警 typedef struct tagALARM_DOOR_CLOSEDMANUALLY_INFO { int nAction; // 事件动作,-1未知1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 BYTE byReserved[1024]; // 保留字节 }ALARM_DOOR_CLOSEDMANUALLY_INFO; ///@brief 门超长时间未关对应 DH_ALARM_DOOR_NOTCLOSED_LONGTIME 报警 typedef struct tagALARM_DOOR_NOTCLOSED_LONGTIME_INFO { int nAction; // 事件动作,-1未知1表示持续性事件开始,2表示持续性事件结束 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nDoor; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 BYTE byReserved[1024]; // 保留字节 }ALARM_DOOR_NOTCLOSED_LONGTIME_INFO; ///@brief 剪断报警信息,对应DH_ALARM_CUT_LINE报警 typedef struct tagALARM_CUT_LINE_INFO { int nChannel; // 通道号 int nAction; // 事件动作,-1表示未知动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 } ALARM_CUT_LINE_INFO; ///@brief 断纤报警信息,对应 DH_ALARM_FIBRE_OPTIC_ABORT 报警 typedef struct tagALARM_FIBRE_OPTIC_ABORT { int nAlarmIn; // 报警输入号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 }ALARM_FIBRE_OPTIC_ABORT; ///@brief 尾随报警事件信息,对应 DH_ALARM_TAIL_DETECTION 报警 typedef struct tagALARM_TAIL_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 缺省时为空字符串,表示无此信息 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 BYTE byReserved[992]; // 保留字节 }ALARM_TAIL_DETECTION_INFO; ///@brief 近距离接触报警信息,对应DH_ALARM_NEAR_DISTANCE_DETECTION 报警 typedef struct tagALARM_NEAR_DISTANCE_INFO { int nChannel; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 } ALARM_NEAR_DISTANCE_INFO; ///@brief 立体视觉站立事件区域内人员列表 typedef struct tagMAN_STAND_LIST_INFO { DH_POINT stuCenter; // 站立人员所在位置,8192坐标系 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 DH_RECT stuBoundingBox; // 包围盒 char szReversed[90]; // 保留字节 } MAN_STAND_LIST_INFO; ///@brief 立体视觉站立报警信息,对应DH_ALARM_MAN_STAND_DETECTION 报警 typedef struct tagALARM_MAN_STAND_INFO { int nChannel; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nManListCount; // 区域人员列表数量 MAN_STAND_LIST_INFO stuManList[MAX_MAN_LIST_COUNT]; // 区域内人员列表 BYTE byReserved[1024]; // 保留字节 } ALARM_MAN_STAND_INFO; ///@brief 立体视觉区域内人数统计事件区域人员列表 typedef struct tagMAN_NUM_LIST_INFO { DH_RECT stuBoudingBox; // 人员包围盒,8192坐标系 int nStature; // 人员身高,单位cm char szReversed[128]; // 保留字节 } MAN_NUM_LIST_INFO; ///@brief 立体视觉区域内人数统计报警,对应DH_ALARM_MAN_NUM_DETECTION 报警 typedef struct tagALARM_MAN_NUM_INFO { int nChannel; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nManListCount; // 区域人员列表数量 MAN_NUM_LIST_INFO stuManList[MAX_MAN_LIST_COUNT]; // 区域内人员列表 char szName[128]; // 事件名称 UINT nPrevNumber; // 变化前人数 UINT nCurrentNumber; // 当前人数 char szRuleName[128]; // 规则名称 UINT nAlertNum; // 实际触发报警的人数 int nAlarmType; // 报警类型. 0:未知, 1:从人数正常到人数异常, 2:从人数异常到人数正常 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[752]; // 保留字节 } ALARM_MAN_NUM_INFO; ///@brief 相机码流大于通道解码规格报警信息,对应DH_ALARM_BITRATES_OVERLIMIT 报警 typedef struct tagALARM_BITRATES_OVERLIMIT_INFO { int nChannel; // 视频通道号 int nAction; // 事件动作,1表示报警开始,2表示报警结束; int nLimitBps; // 限制码率,单位Kbps int nCurrentBps; // 当前码率,单位Kbps BYTE byReserved[1024]; // 保留字节 }ALARM_BITRATES_OVERLIMIT_INFO; ///@brief 声音高分贝检测报警信息,对应 DH_ALARM_HIGH_DECIBEL 报警 typedef struct tagALARM_HIGH_DECIBEL_INFO { int nAudioChannel; // 音频通道号 int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 }ALARM_HIGH_DECIBEL_INFO; ///@brief 摇晃检测报警信息,对应 DH_ALARM_SHAKE_DETECTION 报警 typedef struct tagALARM_SHAKE_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 }ALARM_SHAKE_DETECTION_INFO; ///@brief 控制方式 typedef enum tagNET_ACCESS_METHOD { NET_ACCESS_METHOD_UNKNOWN, // 未知 NET_ACCESS_METHOD_CARD, // 卡 NET_ACCESS_METHOD_PASSWORD, // 密码 NET_ACCESS_METHOD_FINGERPRINT, // 信息 } NET_ACCESS_METHOD; ///@brief 恶意开门事件, 对应 DH_ALARM_ACCESS_CTL_MALICIOUS typedef struct tagALARM_ACCESS_CTL_MALICIOUS { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 NET_ACCESS_METHOD emMethod; // 开门方式 char szSerialNum[MAX_COMMON_STRING_32]; // 无线配件序列号 int nChannel; // 门通道号 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) BYTE byReserved[970]; // 保留字节 }ALARM_ACCESS_CTL_MALICIOUS; ///@brief 用户已注册事件, 对应 DH_ALARM_ACCESS_CTL_USERID_REGISTER typedef struct tagALARM_ACCESS_CTL_USERID_REGISTER { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 char UserID[DH_USER_NAME_LEN_EX]; // 用户名 NET_ACCESS_METHOD emMethod; // 注册方式 char szSerialNum[MAX_COMMON_STRING_32]; // 智能锁序列号 BYTE byReserved[1024]; // 保留字节 }ALARM_ACCESS_CTL_USERID_REGISTER; ///@brief 上锁方式 typedef enum tagNET_ACCESS_CTL_LOCKTYPE { NET_ACCESS_CTL_LOCKTYPE_UNKNOWN, // 未知 NET_ACCESS_CTL_LOCKTYPE_DEADBOLT, // 方舌 NET_ACCESS_CTL_LOCKTYPE_STAYBOLT, // 呆舌 }NET_ACCESS_CTL_LOCKTYPE; ///@brief 锁体信息上报事件, 对应 DH_ALARM_ACCESS_CTL_REVERSELOCK typedef struct tagALARM_ACCESS_CTL_REVERSELOCK { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 BOOL bStatus; // 上锁结果 NET_ACCESS_CTL_LOCKTYPE emMethod; // 上锁方式 char szSerialNum[MAX_COMMON_STRING_32]; // 智能锁序列号 BYTE byReserved[1024]; // 保留字节 }ALARM_ACCESS_CTL_REVERSELOCK; ///@brief 删除用户上报事件, 对应 DH_ALARM_ACCESS_CTL_USERID_DELETE typedef struct tagALARM_ACCESS_CTL_USERID_DELETE { int nAction; // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; NET_TIME_EX stuTime; // 事件发生的时间 NET_ACCESS_METHOD emMethod; // 注册方式 char szSerialNum[MAX_COMMON_STRING_32]; // 智能锁序列号 BYTE byReserved[1024]; // 保留字节 }ALARM_ACCESS_CTL_USERID_DELETE; ///@brief 事件类型DH_ALARM_ACCESS_DOOR_BELL(响铃事件)对应的数据描述信息 typedef struct tagALARM_ACCESS_DOOR_BELL_INFO { int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的UTC 时间 char szName[DH_MAX_NAME_LEN]; // 门禁名称 char szWirelessDevSN[DH_MAX_ACCESS_NAME_LEN]; // 无线设备序列号 BYTE bReserved[512]; // 保留字节 }ALARM_ACCESS_DOOR_BELL_INFO; ///@brief 事件类型DH_ALARM_ACCESS_FACTORY_RESET(门锁恢复出厂设置)对应的描述信息 typedef struct tagALARM_ACCESS_FACTORY_RESET_INFO { NET_TIME_EX stuTime; // 事件发生的UTC 时间 char szSmartLockSN[DH_MAX_ACCESS_NAME_LEN]; // 智能锁序列号 BYTE bReserved[512]; // 保留字节 }ALARM_ACCESS_FACTORY_RESET_INFO; ///@brief 柜门开关动作类型 typedef enum tagEM_NET_CABINET_SWITCH_ACTION_TYPE { NET_CABINET_SWITCH_ACTION_TYPE_UNKNOWN, // 未知 NET_CABINET_SWITCH_ACTION_TYPE_OPEN, // 开柜门 NET_CABINET_SWITCH_ACTION_TYPE_CLOSE, // 关柜门 } EM_NET_CABINET_SWITCH_ACTION_TYPE; // 存放设备关联的视频监控通道最大数量 #define MAX_LINK_CHANNEL_NUMBER 16 ///@brief 云柜设备发送的物品存放单号信息实时上报事件(DH_ALARM_CABINET) typedef struct tagALARM_CABINET_INFO { int nAction; // 0:Pulse,1:Start,2:Stop,3:State NET_TIME_EX stuTime; // 事件发生的时间 EM_NET_CABINET_SWITCH_ACTION_TYPE emType; // 柜门开关动作类型 char szSerialNo[MAX_COMMON_STRING_32]; // 物品序列号 int nLinkChannelNum; // 存放设备关联的视频监控通道数量 int nLinkChannel[MAX_LINK_CHANNEL_NUMBER]; // 存放设备关联的视频监控通道 BYTE byReserved[1024]; // 保留 } ALARM_CABINET_INFO; ///@brief 事件类型DH_SWITCH_SCREEN (切换屏幕事件 )对应的描述信息 typedef struct tagDH_SWITCH_SCREEN_INFO { int nChannelID; //通道号 BYTE bReserved[512]; }DH_SWITCH_SCREEN_INFO; #define MAX_EVENT_INFO_LEN 128 // 事件详细信息最大长度 ///@brief 微云常规容量事件信息, 对应 DH_MCS_GENERAL_CAPACITY_LOW typedef struct tagALARM_MCS_GENERAL_CAPACITY_LOW_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_GENERAL_CAPACITY_LOW_INFO; ///@brief 微云存储节点下线事件信息, 对应 DH_MCS_DATA_NODE_OFFLINE typedef struct tagALARM_MCS_DATA_NODE_OFFLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DATA_NODE_OFFLINE_INFO; ///@brief 微云磁盘下线事件信息, 对应 DH_MCS_DISK_OFFLINE typedef struct tagALARM_MCS_DISK_OFFLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DISK_OFFLINE_INFO; ///@brief 微云磁盘变慢事件信息, 对应 DH_MCS_DISK_SLOW typedef struct tagALARM_MCS_DISK_SLOW_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DISK_SLOW_INFO; ///@brief 微云磁盘损坏事件信息, 对应 DH_MCS_DISK_BROKEN typedef struct tagALARM_MCS_DISK_BROKEN_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DISK_BROKEN_INFO; ///@brief 微云磁盘未知错误事件信息, 对应 DH_MCS_DISK_UNKNOW_ERROR typedef struct tagALARM_MCS_DISK_UNKNOW_ERROR_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DISK_UNKNOW_ERROR_INFO; ///@brief 微云元数据服务器异常事件信息, 对应 DH_MCS_METADATA_SERVER_ABNORMAL typedef struct tagALARM_MCS_METADATA_SERVER_ABNORMAL_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_METADATA_SERVER_ABNORMAL_INFO; ///@brief 微云目录服务器异常事件信息, 对应 DH_MCS_CATALOG_SERVER_ABNORMAL typedef struct tagALARM_MCS_CATALOG_SERVER_ABNORMAL_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_CATALOG_SERVER_ABNORMAL_INFO; ///@brief 微云常规容量恢复事件信息信息, 对应 DH_MCS_GENERAL_CAPACITY_RESUME typedef struct tagALARM_MCS_GENERAL_CAPACITY_RESUME_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_GENERAL_CAPACITY_RESUME_INFO; ///@brief 微云存储节点上线事件信息, 对应 DH_MCS_DATA_NODE_ONLINE typedef struct tagALARM_MCS_DATA_NODE_ONLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DATA_NODE_ONLINE_INFO; ///@brief 微云磁盘上线事件信息, 对应 DH_MCS_DISK_ONLINE typedef struct tagALARM_MCS_DISK_ONLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_DISK_ONLINE_INFO; ///@brief 微云元数据备机上线事件信息, 对应 DH_MCS_METADATA_SLAVE_ONLINE typedef struct tagALARM_MCS_METADATA_SLAVE_ONLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_METADATA_SLAVE_ONLINE_INFO; ///@brief 微云目录服务器上线事件, 对应 DH_MCS_CATALOG_SERVER_ONLINE typedef struct tagALARM_MCS_CATALOG_SERVER_ONLINE_INFO { char szEventInfo[MAX_EVENT_INFO_LEN]; // 事件详细信息 BYTE byReserved[1024]; // 保留字节 }ALARM_MCS_CATALOG_SERVER_ONLINE_INFO; //////////////////////////////ATM支持////////////////////////////////// ///@brief 每个FRAME ID 选项 typedef struct { int Offset; // 标志位的位偏移 int Length; // 标志位的长度 char Key[16]; // 标志位的值 } DH_SNIFFER_FRAMEID; ///@brief 每个FRAME对应的4个抓包内容 typedef struct { int Offset; // 标志位的位偏移 int Offset2; // 目前没有应用 int Length; // 标志位的长度 int Length2; // 目前没有应用 char Title[12]; // 标题的值 char Key[12]; // 关键字的值 } DH_SNIFFER_CONTENT; ///@brief 网络抓包配置 typedef struct { DH_SNIFFER_FRAMEID snifferFrameId; // 每个FRAME ID 选项 DH_SNIFFER_CONTENT snifferContent[DH_SNIFFER_CONTENT_NUM]; // 每个FRAME对应的4个抓包内容 } DH_SNIFFER_FRAME; ///@brief 每组抓包对应的配置结构 typedef struct { char SnifferSrcIP[DH_MAX_IPADDR_LEN]; // 抓包源地址 int SnifferSrcPort; // 抓包源端口 char SnifferDestIP[DH_MAX_IPADDR_LEN]; // 抓包目标地址 int SnifferDestPort; // 抓包目标端口 char reserved[28]; // 保留字段 DH_SNIFFER_FRAME snifferFrame[DH_SNIFFER_FRAMEID_NUM]; // 6个FRAME 选项 int displayPosition; // 显示位置 int recdChannelMask; // 通道掩码 } DH_ATM_SNIFFER_CFG; ///@brief sniffer配置 typedef struct { DWORD dwSize; DH_ATM_SNIFFER_CFG SnifferConfig[4]; char reserved[256]; // 保留字段 } DHDEV_SNIFFER_CFG; typedef DH_SNIFFER_FRAMEID DH_SNIFFER_FRAMEID_EX; typedef DH_SNIFFER_CONTENT DH_SNIFFER_CONTENT_EX; ///@brief 网络抓包配置 typedef struct { DH_SNIFFER_FRAMEID snifferFrameId; // 每个FRAME ID 选项 DH_SNIFFER_CONTENT snifferContent[DH_SNIFFER_CONTENT_NUM_EX]; // 每个FRAME对应的8个抓包内容 } DH_SNIFFER_FRAME_EX; ///@brief 每组抓包对应的配置结构 typedef struct { char SnifferSrcIP[DH_MAX_IPADDR_LEN]; // 抓包源地址 int SnifferSrcPort; // 抓包源端口 char SnifferDestIP[DH_MAX_IPADDR_LEN]; // 抓包目标地址 int SnifferDestPort; // 抓包目标端口 DH_SNIFFER_FRAME_EX snifferFrame[DH_SNIFFER_FRAMEID_NUM]; // 6个FRAME 选项 int displayPosition; // 显示位置 int recdChannelMask; // 通道掩码 0 ~ 31 通道 BOOL bDateScopeEnable; // 数据来源使能 BOOL bProtocolEnable; // 协议使能 char szProtocolName[DH_SNIFFER_PROTOCOL_SIZE]; // 协议名字 int nSnifferMode; // 抓包方式,0:net,1:232. int recdChannelMask1; // 通道掩码 32 ~ 63 通道 char reserved[252]; } DH_ATM_SNIFFER_CFG_EX; #define ATM_MAX_TRADE_TYPE_NAME 64 #define ATM_MAX_TRADE_NUM 1024 ///@brief Atm交易类型查询返回结构体 typedef struct __DH_ATM_QUERY_TRADE { int nTradeTypeNum; // 实际交易类型数量 int nExceptionTypeNum; // 实际异常事件数量 char szSupportTradeType[ATM_MAX_TRADE_NUM][ATM_MAX_TRADE_TYPE_NAME]; // 交易事件名数组 char szSupportExceptionType[ATM_MAX_TRADE_NUM][ATM_MAX_TRADE_TYPE_NAME];// 异常事件名数组 } DH_ATM_QUERY_TRADE, *LPDH_ATM_QUERY_TRADE; /////////////////////////////解码器支持///////////////////////////////// #define nEncoderID nDecoderID #define byEncoderID byDecoderID ///@brief 解码器信息 typedef struct __DEV_DECODER_INFO { char szDecType[64]; // 类型 int nMonitorNum; // TV个数 int nEncoderNum; // 解码通道个数 BYTE szSplitMode[16]; // 支持的TV画面分割数,以数组形式表示,0为结尾 BYTE bMonitorEnable[16]; // 各TV使能 BYTE bTVTipDisplay; // 指示是否支持TV提示信息叠加设置, 0:不支持 1:支持. BYTE reserved1[3]; BYTE byLayoutEnable[48]; // 各解码通道显示叠加信息使能 DWORD dwLayoutEnMask[2]; // 各解码通道显示叠加信息使能掩码,从低位到高位支持64个通道,其中dwLayoutEnMask[0]是低32位 char reserved[4]; } DEV_DECODER_INFO, *LPDEV_DECODER_INFO; ///@brief 连接的编码器信息 typedef struct __DEV_ENCODER_INFO { char szDevIp[DH_MAX_IPADDR_LEN]; // 前端DVR的IP地址 WORD wDevPort; // 前端DVR的端口号 BYTE bDevChnEnable; // 解码通道使能 BYTE byDecoderID; // 该字段已废弃,后续开发请用 dwDecoderID char szDevUser[DH_USER_NAME_LENGTH_EX]; // 用户名 char szDevPwd[DH_USER_PSW_LENGTH_EX]; // 密码 int nDevChannel; // 通道号 int nStreamType; // 码流类型,0:主码流;1:辅码流1; 2:snap; 3: 辅码流2 BYTE byConnType; // -1: auto, 0:TCP;1:UDP;2:组播 BYTE byWorkMode; // 0:直连;1:转发 WORD wListenPort; // 指示侦听服务的端口,转发时有效 DWORD dwProtoType; // 协议类型, // 0:兼容以前 // 1:二代协议 // 2:集成协议 // 3:DSS协议 // 4:rtsp协议 char szDevName[64]; // 前端设备名称 BYTE byVideoInType; // 该解码通道当前视频源类型:0-标清(SD),1-高清(HD),注:设备支持高清通道才有效 char szDevIpEx[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // szDevIp扩展,前端DVR的IP地址(可以输入域名) BYTE bySnapMode; // 抓图模式(nStreamType==2时有效) 0:表示请求一帧,1:表示定时发送请求 BYTE byManuFactory; // 目标设备的生产厂商,具体参考EM_IPC_TYPE类 BYTE byDeviceType; // 目标设备的设备类型,0:IPC BYTE byDecodePolicy; // 目标设备的解码策略,0:兼容以前 // 1:实时等级高 2:实时等级中 // 3:实时等级低 4:默认等级 // 5:流畅等级高 6:流畅等级中 // 7:流畅等级低 BYTE bReserved[3]; // 保留字节 DWORD dwHttpPort; // Http端口号,0-65535 DWORD dwRtspPort; // Rtsp端口号,0-65535 char szChnName[32]; // 远程通道名称, 只有读取到的名称不为空时才可以修改该通道的名称 DWORD dwDecoderID; // 对应解码通道号 } DEV_ENCODER_INFO, *LPDEV_ENCODER_INFO; ///@brief 解码器rtsp url配置 typedef struct __DHDEV_DECODER_URL_CFG { DWORD dwSize; char szMainStreamUrl[MAX_PATH]; // 主码流url char szExtraStreamUrl[MAX_PATH]; // 辅码流url } DHDEV_DECODER_URL_CFG; ///@brief 显示通道 typedef enum tagDH_SPLIT_DISPLAY_TYPE { DH_SPLIT_DISPLAY_TYPE_GENERAL=1, // 普通显示类型 DH_SPLIT_DISPLAY_TYPE_PIP=2, // 画中画显示类型 DH_SPLIT_DISPLAY_TYPE_CUSTOM=3, // 自由组合分割模式 } DH_SPLIT_DISPLAY_TYPE; ///@brief CLIENT_CtrlDecTVScreen 接口参数 typedef struct tagDH_CTRL_DECTV_SCREEN { DWORD dwSize; // 结构体大小 int nSplitType; // 分割模式 BYTE * pEncoderChannel; // 显示通道,dwDisplayType=DH_SPLIT_DISPLAY_TYPE_GENERAL时有效,由用户申请内存,调用者分配的内存长度不能小于nSplitType的大小 BYTE byGroupNo; // 输入通道组号,dwDisplayType=DH_SPLIT_DISPLAY_TYPE_PIP时表示画中画显示类型下有效; char reserved[3]; // 保留字节 DWORD dwDisplayType; // 显示类型;具体见DH_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General") }DH_CTRL_DECTV_SCREEN; ///@brief TV参数信息 typedef struct __DEV_DECODER_TV { int nID; // TV号 BOOL bEnable; // 使能,开启或关闭 int nSplitType; // 画面分割数 DEV_ENCODER_INFO stuDevInfo[16]; // 各画面编码器信息dwDisplayType=DH_SPLIT_DISPLAY_TYPE_GENERAL时有效 BYTE bySupportSplit[10]; // 支持的分割模式 BYTE byGroupNo; // 输入通道组号,dwDisplayType=DH_SPLIT_DISPLAY_TYPE_PIP时表示画中画显示类型下有效; char reserved[1]; // 保留字节 DWORD dwDisplayType; // 显示类型;具体见DH_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General") } DEV_DECODER_TV, *LPDEV_DECODER_TV; ///@brief 解码器画面组合信息 typedef struct __DEC_COMBIN_INFO { int nCombinID; // 组合ID int nSplitType; // 画面分割数 BYTE bDisChn[16]; // 显示通道 char reserved[16]; } DEC_COMBIN_INFO, *LPDEC_COMBIN_INFO; #define DEC_COMBIN_NUM 32 // 轮巡组合个数 ///@brief 解码器轮巡信息 typedef struct __DEC_TOUR_COMBIN { int nTourTime; // 轮巡间隔(秒) int nCombinNum; // 组合个数 BYTE bCombinID[DEC_COMBIN_NUM]; // 组合表 char reserved1[32]; BYTE bCombinState[DEC_COMBIN_NUM]; // 组合项的使能状态,0:关;1:开 char reserved2[32]; } DEC_TOUR_COMBIN, *LPDEC_TOUR_COMBIN; ///@brief 解码器回放类型 typedef enum __DEC_PLAYBACK_MODE { Dec_By_Device_File = 0, // 前端设备-按文件方式 Dec_By_Device_Time, // 前端设备-按时间方式 } DEC_PLAYBACK_MODE; ///@brief 解码器回放控制类型 typedef enum __DEC_CTRL_PLAYBACK_TYPE { Dec_Playback_Seek = 0, // 拖动 Dec_Playback_Play, // 播放 Dec_Playback_Pause, // 暂停 Dec_Playback_Stop, // 停止 } DEC_CTRL_PLAYBACK_TYPE; ///@brief 轮巡控制类型 typedef enum __DEC_CTRL_TOUR_TYPE { Dec_Tour_Stop = 0, // 停止 Dec_Tour_Start, // 开始 Dec_Tour_Pause, // 暂停 Dec_Tour_Resume, // 恢复 } DEC_CTRL_TOUR_TYPE; ///@brief 按文件回放前端设备条件 typedef struct __DEC_PLAYBACK_FILE_PARAM { char szDevIp[DH_MAX_IPADDR_LEN]; // 前端DVR的IP地址 WORD wDevPort; // 前端DVR的端口号 BYTE bDevChnEnable; // 解码通道使能 BYTE byDecoderID; // 对应解码通道号 char szDevUser[DH_USER_NAME_LENGTH_EX]; // 用户名 char szDevPwd[DH_USER_PSW_LENGTH_EX]; // 密码 NET_RECORDFILE_INFO stuRecordInfo; // 录像文件信息 char reserved[12]; } DEC_PLAYBACK_FILE_PARAM, *LPDEC_PLAYBACK_FILE_PARAM; ///@brief 按时间回放前端设备条件 typedef struct __DEC_PLAYBACK_TIME_PARAM { char szDevIp[DH_MAX_IPADDR_LEN]; // 前端DVR的IP地址 WORD wDevPort; // 前端DVR的端口号 BYTE bDevChnEnable; // 解码通道使能 BYTE byDecoderID; // 对应解码通道号 char szDevUser[DH_USER_NAME_LENGTH_EX]; // 用户名 char szDevPwd[DH_USER_PSW_LENGTH_EX]; // 密码 int nChannelID; NET_TIME startTime; NET_TIME endTime; char reserved[12]; } DEC_PLAYBACK_TIME_PARAM, *LPDEC_PLAYBACK_TIME_PARAM; ///@brief 当前解码通道状态信息(包括通道状态,解码流信息等) typedef struct __DEV_DECCHANNEL_STATE { BYTE byDecoderID; // 对应解码通道号 BYTE byChnState; // 当前解码通道正在操作状态:0-空闲,1-实时预览,2-回放 3 - 轮巡 BYTE byFrame; // 当前数据帧率 BYTE byReserved; // 保留 int nChannelFLux; // 解码通道数据总量 int nDecodeFlux; // 解码数据量 char szResolution[16]; // 当前数据分辨率 char reserved[256]; } DEV_DECCHANNEL_STATE, *LPDEV_DECCHANNEL_STATE; ///@brief 设备TV输出参数信息 typedef struct __DEV_VIDEOOUT_INFO { DWORD dwVideoStandardMask; // NSP,视频制式掩码,按位表示设备能够支持的视频制式(暂不支持) int nVideoStandard; // NSP,当前的制式(暂不支持,请使用DHDEV_SYSTEM_ATTR_CFG的byVideoStandard对制式读取和配置) DWORD dwImageSizeMask; // 分辨率掩码,按位表示设备能够支持的分辨率 int nImageSize; // 当前的分辨率 char reserved[256]; }DEV_VIDEOOUT_INFO, *LPDEV_VIDEOOUT_INFO; ///@brief 调节TV输出 typedef struct __DEV_TVADJUST_CFG { int nTop; // 上测边距(0-100) int nBotton; // 下测边距(0-100) int nLeft; // 左测边距(0-100) int nRight; // 右测边距(0-100) int reserved[32]; }DHDEV_TVADJUST_CFG, *LPDHDEV_TVADJUST_CFG; ///@brief 云台控制坐标单元 typedef struct tagPTZ_SPEED_UNIT { float fPositionX; //云台水平方向速率,归一化到-1~1 float fPositionY; //云台垂直方向速率,归一化到-1~1 float fZoom; //云台光圈放大倍率,归一化到 0~1 char szReserve[32]; //预留32字节 }PTZ_SPEED_UNIT; ///@brief 云台控制(相对)坐标单元 typedef struct tagPTZ_SPACE_RELATIVELY_UNIT { float fPositionX; // 云台水平方向,有效范围-1~1 float fPositionY; // 云台垂直方向,有效范围-1~1 float fZoom; // 云台光圈放大倍率,有效范围-1~1 char szReserve[32]; // 预留32字节 } PTZ_SPACE_RELATIVELY_UNIT; ///@brief 云台控制坐标单元 typedef struct tagPTZ_SPACE_UNIT { int nPositionX; //云台水平运动位置,有效范围:[0,3600] int nPositionY; //云台垂直运动位置,有效范围:[-1800,1800] int nZoom; //云台光圈变动位置,有效范围:[0,128] char szReserve[32]; //预留32字节 }PTZ_SPACE_UNIT; ///@brief 云台定位中非归一化坐标和变倍 typedef struct tagNET_PTZSPACE_UNNORMALIZED { int nPosX; // x坐标 int nPosY; // y坐标 int nZoom; // 放大倍率 BYTE byReserved[52]; // 预留字节 }NET_PTZSPACE_UNNORMALIZED; ///@brief 解码轮巡配置 typedef struct __DEV_DECODER_TOUR_SINGLE_CFG { char szIP[128]; // 前端设备ip.例如"10.7.5.21". 保留对域名的支持.需要以'\0'结束. int nPort; // 前端设备端口.(0, 65535). int nPlayChn; // 请求前端设备通道[1, 16]. int nPlayType; // 请求前端码流类型, 0:主码流; 1:辅码流. char szUserName[32]; // 登陆前端设备的用户名,需要以'\0'结束. char szPassword[32]; // 登陆前端设备的密码,需要以'\0'结束. int nInterval; // 轮巡间隔时间[10, 120],单位秒. DWORD nManuFactory; // 目标设备厂商(枚举 详见IPC_TYPE) UINT nHttpPport; // 目标设备的端口(Http端口) UINT nRtspPort; // 目标设备的端口(Rtsp端口) BYTE byServiceType; // 服务类型, -1: auto, 0:TCP;1:UDP;2:组播 BYTE bReserved[51]; // 保留字节,留待扩展. }DHDEV_DECODER_TOUR_SINGLE_CFG; ///@brief 配置 typedef struct __DEV_DECODER_TOUR_CFG { int nCfgNum; // 配置结构体数目. 现在最大支持32个.具体支持数目可以通过能力查询. DHDEV_DECODER_TOUR_SINGLE_CFG tourCfg[64]; // 轮询配置数组,有效结构体个数由成员"nCfgNum"指定. 保留32个留待扩展. BYTE bReserved[256]; // 保留字节,留待扩展. }DHDEV_DECODER_TOUR_CFG; /////////////////////////////智能支持///////////////////////////////// ///@brief 物体对应图片文件信息 typedef struct { DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 WORD wWidth; // 图片宽度, 单位:像素 WORD wHeight; // 图片高度, 单位:像素 char* pszFilePath; // 鉴于历史原因,该成员只在事件上报时有效 // 文件路径 // 用户使用该字段时需要自行申请空间进行拷贝保存 BYTE bIsDetected; // 图片是否算法检测出来的检测过的提交识别服务器时, // 则不需要再时检测定位抠图,1:检测过的,0:没有检测过 BYTE bReserved[2]; // 预留字节数 BYTE byQulityScore; // 目标抓拍质量分数, 0-100 int nFilePathLen; // 文件路径长度 既pszFilePath 用户申请的大小 DH_POINT stuPoint; // 小图左上角在大图的位置,使用绝对坐标系 UINT nIndexInData; // 在上传图片数据中的图片序号 }DH_PIC_INFO; ///@brief 图片类型 typedef enum tagEM_IMAGE_TYPE_EX2 { EM_IMAGE_TYPE_UNKNOWN, // 未知 EM_IMAGE_TYPE_SCENE_IMAGE, // 全景广角度 EM_IMAGE_TYPE_GLOBAL_SCENE, // 大图 EM_IMAGE_TYPE_THUM_IMAGE, // 大图(全景图)的缩略图 EM_IMAGE_TYPE_FACE_SCENE_IMAGE, // 目标全景图 EM_IMAGE_TYPE_FACE_IMAGE, // 目标图 EM_IMAGE_TYPE_HUMAN_IMAGE, // 人体图 EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_IMAGE, // 与最优目标同画面的人体图 EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_SCENE_IMAGE, // 与最优目标同画面人体的全景图 EM_IMAGE_TYPE_PARKING_IMAGE, // 车位抠图 EM_IMAGE_TYPE_BINARIZED_PLATE, // 车身特写抠图 EM_IMAGE_TYPE_DEPOSIT_IMAGE_INFO, // 格口抠图 EM_IMAGE_TYPE_IMAGE_INFO, // 普通图,图片名称未定义情况使用 }EM_IMAGE_TYPE_EX2; ///@brief 图片信息 typedef struct tagNET_IMAGE_INFO_EX2 { EM_IMAGE_TYPE_EX2 emType; // 图片类型 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char byReserverd[4]; // 用于字节对齐 char szPath[256]; // 图片存储位置 }NET_IMAGE_INFO_EX2; ///@brief 图片扩展信息 typedef struct tagNET_IMAGE_INFO_EX3 { EM_IMAGE_TYPE_EX2 emType; // 图片类型 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char byReserverd[4]; // 用于字节对齐 char szPath[256]; // 图片存储位置 char szEncryptKey[128]; // 二进制图片加密秘钥,设备传过来的是Base64编码之后的,SDK不做解码处理 BYTE byReserverd2[1024]; // 用于字节对齐 }NET_IMAGE_INFO_EX3; ///@brief 图片信息(目前仅用于机动车和非机动车) typedef struct tagNET_PIC_INFO_EX { UINT nLength; // 图片大小,单位:字节 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 char byReserverd[4]; // 用于字节对齐 char szFilePath[256]; // 图片路径 char szReserverd[256]; // 保留字节 }NET_PIC_INFO_EX; ///@brief 违章关联的多个视频信息 typedef struct tagNET_RELATING_VIDEO_INFO { char szVideoPath[256]; // 违章关联视频FTP上传路径 char szReserved[128]; // 保留字节 }NET_RELATING_VIDEO_INFO; ///@brief 图片与智能事件信息 typedef struct tagNET_FILE_PROCESS_INFO { NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 char szReserved[1024]; // 保留字节 }NET_FILE_PROCESS_INFO; ///@brief 物体对应图片文件信息(包含图片路径) typedef struct tagDH_PIC_INFO_EXX { DWORD dwSize; char szFilePath[DH_COMMON_STRING_256]; // 鉴于历史原因,该成员在设置/获取时有效 // 文件路径 DH_PIC_INFO stuPicInfo; // 图片信息 }DH_PIC_INFO_EX2; ///@brief 物体对应图片文件信息(包含图片路径) typedef struct { DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 WORD wWidth; // 图片宽度, 单位:像素 WORD wHeight; // 图片高度, 单位:像素 char szFilePath[64]; // 文件路径 BYTE bIsDetected; // 图片是否算法检测出来的检测过的提交识别服务器时, // 则不需要再时检测定位抠图,1:检测过的,0:没有检测过 BYTE bReserved[11]; // 保留 }DH_PIC_INFO_EX3; #ifndef LINUX64_JNA #pragma pack(push) #pragma pack(4) #endif ///@brief 视频分析物体信息结构体 typedef struct { int nObjectID; // 物体ID,每个ID表示一个唯一的物体 char szObjectType[128]; // 物体类型 int nConfidence; // 置信度(0~100),值越大表示置信度越高 int nAction; // 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename DH_RECT BoundingBox; // 包围盒 DH_POINT Center; // 物体型心 int nPolygonNum; // 多边形顶点个数 DH_POINT Contour[DH_MAX_POLYGON_NUM]; // 较精确的轮廓多边形 DWORD rgbaMainColor; // 表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000. char szText[128]; // 物体上相关的带0结束符文本,比如车牌,集装箱号等等 // "ObjectType"为"Vehicle"或者"Logo"时(尽量使用Logo。Vehicle是为了兼容老产品)表示车标,支持: // "Unknown"未知 // "Audi" 奥迪 // "Honda" 本田 // "Buick" 别克 // "Volkswagen" 大众 // "Toyota" 丰田 // "BMW" 宝马 // "Peugeot" 标致 // "Ford" 福特 // "Mazda" 马自达 // "Nissan" 尼桑(日产) // "Hyundai" 现代 // "Suzuki" 铃木 // "Citroen" 雪铁龙 // "Benz" 奔驰 // "BYD" 比亚迪 // "Geely" 吉利 // "Lexus" 雷克萨斯 // "Chevrolet" 雪佛兰 // "Chery" 奇瑞 // "Kia" 起亚 // "Charade" 夏利 // "DF" 东风 // "Naveco" 依维柯 // "SGMW" 五菱 // "Jinbei" 金杯 // "JAC" 江淮 // "Emgrand" 帝豪 // "ChangAn" 长安 // "Great Wall" 长城 // "Skoda" 斯柯达 // "BaoJun" 宝骏 // "Subaru" 斯巴鲁 // "LandWind" 陆风 // "Luxgen" 纳智捷 // "Renault" 雷诺 // "Mitsubishi" 三菱 // "Roewe" 荣威 // "Cadillac" 凯迪拉克 // "MG" 名爵 // "Zotye" 众泰 // "ZhongHua" 中华 // "Foton" 福田 // "SongHuaJiang" 松花江 // "Opel" 欧宝 // "HongQi" 一汽红旗 // "Fiat" 菲亚特 // "Jaguar" 捷豹 // "Volvo" 沃尔沃 // "Acura" 讴歌 // "Porsche" 保时捷 // "Jeep" 吉普 // "Bentley" 宾利 // "Bugatti" 布加迪 // "ChuanQi" 传祺 // "Daewoo" 大宇 // "DongNan" 东南 // "Ferrari" 法拉利 // "Fudi" 福迪 // "Huapu" 华普 // "HawTai" 华泰 // "JMC" 江铃 // "JingLong" 金龙客车 // "JoyLong" 九龙 // "Karry" 开瑞 // "Chrysler" 克莱斯勒 // "Lamborghini" 兰博基尼 // "RollsRoyce" 劳斯莱斯 // "Linian" 理念 // "LiFan" 力帆 // "LieBao" 猎豹 // "Lincoln" 林肯 // "LandRover" 路虎 // "Lotus" 路特斯 // "Maserati" 玛莎拉蒂 // "Maybach" 迈巴赫 // "Mclaren" 迈凯轮 // "Youngman" 青年客车 // "Tesla" 特斯拉 // "Rely" 威麟 // "Lsuzu" 五十铃 // "Yiqi" 一汽 // "Infiniti" 英菲尼迪 // "YuTong" 宇通客车 // "AnKai" 安凯客车 // "Canghe" 昌河 // "HaiMa" 海马 // "Crown" 丰田皇冠 // "HuangHai" 黄海 // "JinLv" 金旅客车 // "JinNing" 精灵 // "KuBo" 酷博 // "Europestar" 莲花 // "MINI" 迷你 // "Gleagle" 全球鹰 // "ShiDai" 时代 // "ShuangHuan" 双环 // "TianYe" 田野 // "WeiZi" 威姿 // "Englon" 英伦 // "ZhongTong" 中通客车 // "Changan" 长安轿车 // "Yuejin" 跃进 // "Taurus" 金牛星 // "Alto" 奥拓 // "Weiwang" 威旺 // "Chenglong" 乘龙 // "Haige" 海格 // "Shaolin" 少林客车 // "Beifang" 北方客车 // "Beijing" 北京汽车 // "Hafu" 哈弗 // "BeijingTruck" 北汽货车 // "Besturn" 奔腾 // "ChanganBus" 长安客车 // "Dodge" 道奇 // "DongFangHong" 东方红 // "DongFengTruck" 东风货车 // "DongFengBus" 东风客车 // "MultiBrand" 多品牌 // "FotonTruck" 福田货车 // "FotonBus" 福田客车 // "GagcTruck" 广汽货车 // "HaFei" 哈飞 // "HowoBus" 豪沃客车 // "JACTruck" 江淮货车 // "JACBus" 江淮客车 // "JMCTruck" 江铃货车 // "JieFangTruck" 解放货车 // "JinBeiTruck" 金杯货车 // "KaiMaTruck" 凯马货车 // "CoasterBus" 柯斯达客车 // "MudanBus" 牡丹客车 // "NanJunTruck" 南骏货车 // "QingLing" 庆铃 // "NissanCivilian" 日产碧莲客车 // "NissanTruck" 日产货车 // "MitsubishiFuso" 三菱扶桑 // "SanyTruck" 三一货车 // "ShanQiTruck" 陕汽货车 // "ShenLongBus" 申龙客车 // "TangJunTruck" 唐骏货车 // "MicroTruck" 微货车 // "VolvoBus" 沃尔沃客车 // "LsuzuTruck" 五十铃货车 // "WuZhengTruck" 五征货车 // "Seat" 西雅特 // "YangZiBus" 扬子客车 // "YiqiBus" 一汽客车 // "YingTianTruck" 英田货车 // "YueJinTruck" 跃进货车 // "ZhongDaBus" 中大客车 // "ZxAuto" // "ZhongQiWangPai" 重汽王牌 // "WAW" 奥驰 // "BeiQiWeiWang" 北汽威旺 // "BYDDaimler" 比亚迪戴姆勒 // "ChunLan" 春兰 // "DaYun" 大运 // "DFFengDu" 东风风度 // "DFFengGuang" 东风风光 // "DFFengShen" 东风风神 // "DFFengXing" 东风风行 // "DFLiuQi" 东风柳汽 // "DFXiaoKang" 东风小康 // "FeiChi" 飞驰 // "FordMustang" 福特野马 // "GuangQi" 广汽 // "GuangTong" 广通 // "HuiZhongTruck" 汇众重卡 // "JiangHuai" 江环 // "SunWin" 申沃 // "ShiFeng" 时风 // "TongXin" 同心 // "WZL" 五洲龙 // "XiWo" 西沃 // "XuGong" 徐工 // "JingGong" 精工 // "SAAB" 萨博 // "SanHuanShiTong" 三环十通 // "KangDi" 康迪 // "YaoLong" 耀隆 char szObjectSubType[62]; // 物体子类别,根据不同的物体类型,可以取以下子类型: // Vehicle Category:"Unknown" 未知,"Motor" 机动车,"Non-Motor":非机动车,"Bus": 公交车,"Bicycle" 自行车,"Motorcycle":摩托车,"PassengerCar":客车, // "LargeTruck":大货车, "MidTruck":中货车,"SaloonCar":轿车,"Microbus":面包车,"MicroTruck":小货车,"Tricycle":三轮车, "Passerby":行人 // "DregsCar":渣土车, "Excavator":挖掘车, "Bulldozer":推土车, "Crane":吊车, "PumpTruck":泵车, "MachineshopTruck":工程车, "Forklift"叉车, "Electricbike":二轮电瓶车 // Plate Category:"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,"SAR" 港澳特区号牌,"Trainning" 教练车号牌 // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌 // "Civilaviation"民航号牌,"Black"黑牌 // "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车 // "MixedNewEnergyLargeCar"混合新能源大车 // Human Category:"Normal" 普通目标,"HideEye" 眼部遮挡,"HideNose" 鼻子遮挡,"HideMouth" 嘴部遮挡,"TankCar"槽罐车(装化学药品、危险品) // "ExtinguisherGeneral"普通类型灭火器,8kg左右,"ExtinguisherHandpush"35kg推车式灭火器, "SignboardGeneral" 普通标识牌 // "SignboardStaticEletricity "静电标示牌, "SignboardOilCap"加油口盖标示牌,"RoadCone"路锥,"CoverPlate"盖子 WORD wColorLogoIndex; // 车标索引 WORD wSubBrand; // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册 BYTE byReserved1; bool bPicEnble; // 是否有物体对应图片文件信息 DH_PIC_INFO stPicInfo; // 物体对应图片信息 bool bShotFrame; // 是否是抓拍张的识别结果 bool bColor; // 物体颜色(rgbaMainColor)是否可用 BYTE byReserved2; BYTE byTimeType; // 时间表示类型,详见EM_TIME_TYPE说明 NET_TIME_EX stuCurrentTime; // 针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间) NET_TIME_EX stuStartTime; // 开始时间戳(物体开始出现时) NET_TIME_EX stuEndTime; // 结束时间戳(物体最后出现时) DH_RECT stuOriginalBoundingBox; // 包围盒(绝对坐标) DH_RECT stuSignBoundingBox; // 车标坐标包围盒 DWORD dwCurrentSequence; // 当前帧序号(抓下这个物体时的帧) DWORD dwBeginSequence; // 开始帧序号(物体开始出现时的帧序号) DWORD dwEndSequence; // 结束帧序号(物体消逝时的帧序号) INT64 nBeginFileOffset; // 开始时文件偏移, 单位: 字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移) INT64 nEndFileOffset; // 结束时文件偏移, 单位: 字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移) BYTE byColorSimilar[NET_COLOR_TYPE_MAX]; // 物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE BYTE byUpperBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 上半身物体颜色相似度(物体类型为人时有效) BYTE byLowerBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 下半身物体颜色相似度(物体类型为人时有效) int nRelativeID; // 相关物体ID char szSubText[20]; // "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。 WORD wBrandYear; // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册 } DH_MSG_OBJECT; ///@brief 视频分析物体信息补充字段,与 DH_MSG_OBJECT 的合集表示视频分析物体信息 typedef struct tagDH_MSG_OBJECT_SUPPLEMENT { char szObjectUUID[48]; // 智能物体全局唯一物体标识 UINT nMuckHide; // 渣土车是否遮盖识别,0:渣土车是否遮盖未知,1:渣土车遮盖,2:渣土车无遮盖空载,3:渣土车无遮盖满载. UINT nCarryType; // 货车载货类型,0:货车是否载货未知,1:沙子,2:泥浆,3:石头,4:石渣. char szCategory[32]; // 物体类型 char szReserved[216]; // Reserved }DH_MSG_OBJECT_SUPPLEMENT; ///@brief 入侵方向 typedef enum tagEM_MSG_OBJ_PERSON_DIRECTION { EM_MSG_OBJ_PERSON_DIRECTION_UNKOWN, // 未知方向 EM_MSG_OBJ_PERSON_DIRECTION_LEFT_TO_RIGHT, // 从左向右 EM_MSG_OBJ_PERSON_DIRECTION_RIGHT_TO_LEFT // 从右向左 }EM_MSG_OBJ_PERSON_DIRECTION; ///@brief 视频分析物体信息扩展结构体 typedef struct tagDH_MSG_OBJECT_EX { DWORD dwSize; int nObjectID; // 物体ID,每个ID表示一个唯一的物体 char szObjectType[128]; // 物体类型 int nConfidence; // 置信度(0~255),值越大表示置信度越高 int nAction; // 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename DH_RECT BoundingBox; // 包围盒 DH_POINT Center; // 物体型心 int nPolygonNum; // 多边形顶点个数 DH_POINT Contour[DH_MAX_POLYGON_NUM]; // 较精确的轮廓多边形 DWORD rgbaMainColor; // 表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000. char szText[128]; // 同DH_MSG_OBJECT相应字段 char szObjectSubType[64]; // 物体子类别,根据不同的物体类型,可以取以下子类型: // 同DH_MSG_OBJECT相应字段 BYTE byReserved1[3]; bool bPicEnble; // 是否有物体对应图片文件信息 DH_PIC_INFO stPicInfo; // 物体对应图片信息 bool bShotFrame; // 是否是抓拍张的识别结果 bool bColor; // 物体颜色(rgbaMainColor)是否可用 BYTE bLowerBodyColor; // 下半身颜色(rgbaLowerBodyColor)是否可用 BYTE byTimeType; // 时间表示类型,详见EM_TIME_TYPE说明 NET_TIME_EX stuCurrentTime; // 针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间) NET_TIME_EX stuStartTime; // 开始时间戳(物体开始出现时) NET_TIME_EX stuEndTime; // 结束时间戳(物体最后出现时) DH_RECT stuOriginalBoundingBox; // 包围盒(绝对坐标) DH_RECT stuSignBoundingBox; // 车标坐标包围盒 DWORD dwCurrentSequence; // 当前帧序号(抓下这个物体时的帧) DWORD dwBeginSequence; // 开始帧序号(物体开始出现时的帧序号) DWORD dwEndSequence; // 结束帧序号(物体消逝时的帧序号) INT64 nBeginFileOffset; // 开始时文件偏移, 单位: 字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移) INT64 nEndFileOffset; // 结束时文件偏移, 单位: 字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移) BYTE byColorSimilar[NET_COLOR_TYPE_MAX]; // 物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE BYTE byUpperBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 上半身物体颜色相似度(物体类型为人时有效) BYTE byLowerBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 下半身物体颜色相似度(物体类型为人时有效) int nRelativeID; // 相关物体ID char szSubText[20]; // "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。 int nPersonStature; // 入侵人员身高,单位cm EM_MSG_OBJ_PERSON_DIRECTION emPersonDirection; // 人员入侵方向 DWORD rgbaLowerBodyColor; // 使用方法同rgbaMainColor,物体类型为人时有效 } DH_MSG_OBJECT_EX; ///@brief 视频分析物体信息扩展结构体,扩展版本2 typedef struct tagDH_MSG_OBJECT_EX2 { DWORD dwSize; int nObjectID; // 物体ID,每个ID表示一个唯一的物体 char szObjectType[128]; // 物体类型 int nConfidence; // 置信度(0~255),值越大表示置信度越高 int nAction; // 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename DH_RECT BoundingBox; // 包围盒 DH_POINT Center; // 物体型心 int nPolygonNum; // 多边形顶点个数 DH_POINT Contour[DH_MAX_POLYGON_NUM]; // 较精确的轮廓多边形 DWORD rgbaMainColor; // 表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000. char szText[128]; // 同DH_MSG_OBJECT相应字段 char szObjectSubType[64]; // 物体子类别,根据不同的物体类型,可以取以下子类型: // 同DH_MSG_OBJECT相应字段 BYTE byReserved1[3]; bool bPicEnble; // 是否有物体对应图片文件信息 DH_PIC_INFO stPicInfo; // 物体对应图片信息 bool bShotFrame; // 是否是抓拍张的识别结果 bool bColor; // 物体颜色(rgbaMainColor)是否可用 BYTE bLowerBodyColor; // 下半身颜色(rgbaLowerBodyColor)是否可用 BYTE byTimeType; // 时间表示类型,详见EM_TIME_TYPE说明 NET_TIME_EX stuCurrentTime; // 针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间) NET_TIME_EX stuStartTime; // 开始时间戳(物体开始出现时) NET_TIME_EX stuEndTime; // 结束时间戳(物体最后出现时) DH_RECT stuOriginalBoundingBox; // 包围盒(绝对坐标) DH_RECT stuSignBoundingBox; // 车标坐标包围盒 DWORD dwCurrentSequence; // 当前帧序号(抓下这个物体时的帧) DWORD dwBeginSequence; // 开始帧序号(物体开始出现时的帧序号) DWORD dwEndSequence; // 结束帧序号(物体消逝时的帧序号) INT64 nBeginFileOffset; // 开始时文件偏移, 单位: 字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移) INT64 nEndFileOffset; // 结束时文件偏移, 单位: 字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移) BYTE byColorSimilar[NET_COLOR_TYPE_MAX]; // 物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE BYTE byUpperBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 上半身物体颜色相似度(物体类型为人时有效) BYTE byLowerBodyColorSimilar[NET_COLOR_TYPE_MAX]; // 下半身物体颜色相似度(物体类型为人时有效) int nRelativeID; // 相关物体ID char szSubText[20]; // "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。 int nPersonStature; // 入侵人员身高,单位cm EM_MSG_OBJ_PERSON_DIRECTION emPersonDirection; // 人员入侵方向 DWORD rgbaLowerBodyColor; // 使用方法同rgbaMainColor,物体类型为人时有效 /*视频浓缩额外信息*/ int nSynopsisSpeed; // 浓缩速度域值,共分1~10共十个档位,5表示浓缩后只保留5以上速度的物体。是个相对单位 // 为0时,该字段无效 int nSynopsisSize; // 浓缩尺寸域值,共分1~10共十个档位,3表示浓缩后只保留3以上大小的物体。是个相对单位 // 为0时,该字段无效 BOOL bEnableDirection; // 为True时,对物体运动方向做过滤 // 为False时,不对物体运动方向做过滤, DH_POINT stuSynopsisStartLocation; // 浓缩运动方向,起始坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效 DH_POINT stuSynopsisEndLocation; // 浓缩运动方向,终止坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 char szReserved[2]; // 对齐 BYTE byReserved[2024]; // 扩展字节 } DH_MSG_OBJECT_EX2; #ifndef LINUX64_JNA #pragma pack(pop) #endif ///@brief 抓拍信息 typedef struct { short snSpeed; // 当前车的速度,km/h short snCarLength; // 当前车长,分米为单位 float fRedTime; // 当前车道红灯时间,秒.毫秒 float fCapTime; // 当前车道抓拍时间,秒.毫秒 BYTE bSigSequence; // 当前抓拍序号 BYTE bType; // 当前车道的抓拍类型 // 0: 雷达高限速;1: 雷达低限速;2: 车检器高限速;3:车检器低限速 // 4: 逆向;5: 闯红灯;6: 红灯亮;7: 红灯灭;8: 全部抓拍或者卡口 BYTE bDirection; // 闯红灯类型:01:左转红灯;02:直行红灯;03:右转红灯 BYTE bLightColor; // 当前车道的红绿灯状态,0: 绿灯, 1: 红灯, 2: 黄灯 BYTE bSnapFlag[16]; // 设备产生的抓拍标识 }DH_SIG_CARWAY_INFO; ///@brief 车检器冗余信息 typedef struct { BYTE byRedundance[8]; // 由车检器产生抓拍信号冗余信息 BYTE bReserved[120]; // 保留字段 }DH_SIG_CARWAY_INFO_EX; ///@brief 每个车道的相关信息 typedef struct { BYTE bCarWayID; // 当前车道号 BYTE bReserve[2]; // 保留字段 BYTE bSigCount; // 被触发抓拍的个数 DH_SIG_CARWAY_INFO stuSigInfo[DH_MAX_SNAP_SIGNAL_NUM]; // 当前车道上,被触发抓拍对应的抓拍信息 BYTE bReserved[12]; // 保留字段 }DH_CARWAY_INFO; ///@brief 事件对应文件信息 typedef struct { BYTE bCount; // 当前文件所在文件组中的文件总数 BYTE bIndex; // 当前文件在文件组中的文件编号(编号1开始) BYTE bFileTag; // 文件标签, EM_EVENT_FILETAG BYTE bFileType; // 文件类型,0-普通 1-合成 2-抠图 NET_TIME_EX stuFileTime; // 文件时间 DWORD nGroupId; // 同一组抓拍文件的唯一标识 }DH_EVENT_FILE_INFO; ///@brief 图片分辨率 typedef struct { unsigned short snWidth; // 宽 unsigned short snHight; // 高 }DH_RESOLUTION_INFO; ///@brief 颜色RGBA typedef struct tagDH_COLOR_RGBA { int nRed; // 红 int nGreen; // 绿 int nBlue; // 蓝 int nAlpha; // 透明 } DH_COLOR_RGBA, NET_COLOR_RGBA; #define NET_COUNTRY_LENGTH 3 // 国家缩写长度 #define NET_COMMENT_LENGTH 100 // 备注信息长度 #define NET_GROUPID_LENGTH 64 // group id 信息长度 #define NET_GROUPNAME_LENGTH 128 // group name 信息长度 #define NET_FEATUREVALUE_LENGTH 128 // 目标特征 信息长度 ///@brief 目标检测对应目标特征类型 typedef enum tagEM_DEV_EVENT_FACEDETECT_FEATURE_TYPE { EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_UNKNOWN, // 未知 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_WEAR_GLASSES, // 戴眼镜 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SMILE, // 微笑 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_ANGER, // 愤怒 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SADNESS, // 悲伤 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_DISGUST, // 厌恶 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_FEAR, // 害怕 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SURPRISE, // 惊讶 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_NEUTRAL, // 正常 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_LAUGH, // 大笑 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_NOGLASSES, // 没戴眼镜 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_HAPPY, // 高兴 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_CONFUSED, // 困惑 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SCREAM, // 尖叫 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_WEAR_SUNGLASSES, // 戴太阳眼镜 }EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE; ///@brief 人员信息 typedef struct tagFACERECOGNITION_PERSON_INFO { char szPersonName[DH_MAX_NAME_LEN]; // 姓名,此参数作废 WORD wYear; // 出生年,作为查询条件时,此参数填0,则表示此参数无效 BYTE byMonth; // 出生月,作为查询条件时,此参数填0,则表示此参数无效 BYTE byDay; // 出生日,作为查询条件时,此参数填0,则表示此参数无效 char szID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标示(证件号码,工号,或其他编号) BYTE bImportantRank; // 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效 BYTE bySex; // 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效 WORD wFacePicNum; // 图片张数 DH_PIC_INFO szFacePicInfo[DH_MAX_PERSON_IMAGE_NUM]; // 当前人员对应的图片信息 BYTE byType; // 人员类型,详见 EM_PERSON_TYPE BYTE byIDType; // 证件类型,详见 EM_CERTIFICATE_TYPE BYTE byGlasses; // 是否戴眼镜,0-未知 1-不戴 2-戴 BYTE byAge; // 年龄,0表示未知 char szProvince[DH_MAX_PROVINCE_NAME_LEN]; // 省份 char szCity[DH_MAX_CITY_NAME_LEN]; // 城市 char szPersonNameEx[DH_MAX_PERSON_NAME_LEN]; // 姓名,因存在姓名过长,16字节无法存放问题,故增加此参数, char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符,首次由服务端生成,区别于ID字段 // 修改,删除操作时必填 char szCountry[NET_COUNTRY_LENGTH]; // 国籍,符合ISO3166规范 BYTE byIsCustomType; // 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szPersonName字段 char *pszComment; // 备注信息, 用户自己申请内存的情况时, // 下方bCommentLen需填写对应的具体长度值,推荐长度 NET_COMMENT_LENGTH char *pszGroupID; // 人员所属组ID, 用户自己申请内存的情况时, // 下方bGroupIdLen需填写对应的具体长度值,推荐长度 NET_GROUPID_LENGTH char *pszGroupName; // 人员所属组名, 用户自己申请内存的情况时, // 下方bGroupNameLen需填写对应的具体长度值,推荐长度 NET_GROUPNAME_LENGTH char *pszFeatureValue; // 目标特征, 用户自己申请内存的情况时, // 下方bFeatureValueLen需填写对应的具体长度值,推荐长度 NET_FEATUREVALUE_LENGTH BYTE bGroupIdLen; // pszGroupID的长度 BYTE bGroupNameLen; // pszGroupName的长度 BYTE bFeatureValueLen; // pszFeatureValue的长度 BYTE bCommentLen; // pszComment的长度 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 表情 }FACERECOGNITION_PERSON_INFO; ///@brief 眼镜类型 typedef enum tagEM_GLASSES_TYPE { EM_GLASSES_UNKNOWN, // 未知 EM_GLASSES_SUNGLASS, // 太阳眼镜 EM_GLASSES_GLASS, // 普通眼镜 } EM_GLASSES_TYPE; ///@brief 眼睛状态 typedef enum tagEM_EYE_STATE_TYPE { EM_EYE_STATE_UNKNOWN, // 未知 EM_EYE_STATE_NODISTI, // 未识别 EM_EYE_STATE_CLOSE, // 闭眼 EM_EYE_STATE_OPEN, // 睁眼 } EM_EYE_STATE_TYPE; ///@brief 戴眼镜状态 typedef enum tagEM_GLASS_STATE_TYPE { EM_GLASS_STATE_TYPE_UNKNOWN, // 未知 EM_GLASS_STATE_TYPE_NOT_WEARING, // 未戴 EM_GLASS_STATE_TYPE_CONVENTIONAL_GLASSES, // 戴常规眼镜 EM_GLASS_STATE_TYPE_SUN_GLASSES, // 戴太阳眼镜 EM_GLASS_STATE_TYPE_BLACK_GLASSES, // 戴黑框眼镜 }EM_GLASS_STATE_TYPE; ///@brief 嘴巴状态 typedef enum tagEM_MOUTH_STATE_TYPE { EM_MOUTH_STATE_UNKNOWN, // 未知 EM_MOUTH_STATE_NODISTI, // 未识别 EM_MOUTH_STATE_CLOSE, // 闭嘴 EM_MOUTH_STATE_OPEN, // 张嘴 } EM_MOUTH_STATE_TYPE; ///@brief 胡子状态 typedef enum tagEM_BEARD_STATE_TYPE { EM_BEARD_STATE_UNKNOWN, // 未知 EM_BEARD_STATE_NODISTI, // 未识别 EM_BEARD_STATE_NOBEARD, // 没胡子 EM_BEARD_STATE_HAVEBEARD, // 有胡子 } EM_BEARD_STATE_TYPE; ///@brief 目标检测目标戴眼镜特征类型 typedef enum tagEM_FACEDETECT_GLASSES_TYPE { EM_FACEDETECT_GLASSES_UNKNOWN, // 未知 EM_FACEDETECT_WITH_GLASSES, // 戴眼镜 EM_FACEDETECT_WITHOUT_GLASSES, // 不戴眼镜 EM_FACEDETECT_SUN_GLASSES, // 戴太阳眼镜 EM_FACEDETECT_BLACKFRAME_GLASSES, // 戴黑框眼镜 }EM_FACEDETECT_GLASSES_TYPE; ///@brief 人员建模状态 typedef enum tagEM_PERSON_FEATURE_STATE { EM_PERSON_FEATURE_UNKNOWN, // 未知 EM_PERSON_FEATURE_FAIL, // 建模失败,可能是图片不符合要求,需要换图片 EM_PERSON_FEATURE_USEFUL, // 有可用的特征值 EM_PERSON_FEATURE_CALCULATING, // 正在计算特征值 EM_PERSON_FEATURE_UNUSEFUL, // 已建模,但算法升级导致数据不可用,需要重新建模 } EM_PERSON_FEATURE_STATE; ///@brief 建模失败原因 typedef enum tagEM_PERSON_FEATURE_ERRCODE { EM_PERSON_FEATURE_ERRCODE_UNKNOWN, // 未知 EM_PERSON_FEATURE_ERRCODE_PIC_FORMAT, // 图片格式问题 EM_PERSON_FEATURE_ERRCODE_NO_FACE, // 无目标或不清晰 EM_PERSON_FEATURE_ERRCODE_MULTI_FACE, // 多个目标 EM_PERSON_FEATURE_ERRCODE_PIC_DECODE_FAIL, // 图片解码失败 EM_PERSON_FEATURE_ERRCODE_NOT_RECOMMEND, // 不推荐入库 EM_PERSON_FEATURE_ERRCODE_FACEDB_FAIL, // 数据库操作失败 EM_PERSON_FEATURE_ERRCODE_GET_PICTURE, // 获取图片失败 EM_PERSON_FEATURE_ERRCODE_SYSTEM_ERROR, // 系统异常 } EM_PERSON_FEATURE_ERRCODE; #define DH_MAX_PERSON_INFO_LEN 64 // 人员扩展信息最大长度 ///@brief 注册人员信息扩展结构体 typedef struct tagCUSTOM_PERSON_INFO { char szPersonInfo[DH_MAX_PERSON_INFO_LEN]; //人员扩展信息 BYTE byReserved[124]; // 保留字节 } CUSTOM_PERSON_INFO; ///@brief 注册库属性 typedef enum tagEM_REGISTER_DB_TYPE { EM_REGISTER_DB_TYPE_UNKNOWN, // 未知 EM_REGISTER_DB_TYPE_NORMAL, // 普通库 EM_REGISTER_DB_TYPE_BLACKLIST, // 禁止名单 EM_REGISTER_DB_TYPE_WHITELIST, // 允许名单 EM_REGISTER_DB_TYPE_VIP, // VIP库 EM_REGISTER_DB_TYPE_STAFF, // 员工库 EM_REGISTER_DB_TYPE_LEADER, // 领导库 } EM_REGISTER_DB_TYPE; ///@brief 图片操作类型 typedef enum tagEM_PIC_OPERATE_TYPE { EM_PIC_OPERATE_UNKNOWN, // 未知 EM_PIC_OPERATE_MODIFY, // 修改 EM_PIC_OPERATE_ADD, // 新增 EM_PIC_OPERATE_DEL, // 删除 } EM_PIC_OPERATE_TYPE; ///@brief 目标图片信息 typedef struct tagNET_FACE_PIC_INFO { DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 DWORD dwWidth; // 图片宽度, 单位:像素 DWORD dwHeight; // 图片高度, 单位:像素 BOOL bIsDetected; // 图片是否算法检测出来的检测过的提交识别服务器时, // 则不需要再时检测定位抠图,1:检测过的,0:没有检测过 int nFilePathLen; // 文件路径长度 既pszFilePath 的大小 char* pszFilePath; // 文件路径, 由用户申请空间, 作为输入条件时不需要 char szPictureID[32]; // 图片ID, 针对一人多目标的情况, 用于区分不同目标 EM_PERSON_FEATURE_STATE emFeatureState; // 图片建模状态 EM_PERSON_FEATURE_ERRCODE emFeatureErrCode; // 建模失败原因 EM_PIC_OPERATE_TYPE emPicOperate; // 图片操作类型 BYTE bReserved[20]; // 预留字节 } NET_FACE_PIC_INFO; ///@brief 人员特征信息 typedef struct tagNET_PERSON_FEATURE_VALUE_INFO { UINT nOffset; // 二进制数据块中的偏移值 UINT nLength; // 特征值大小 BYTE byReserved[128]; // 保留字节 }NET_PERSON_FEATURE_VALUE_INFO; ///@brief 报警类型 typedef enum tagEM_FREQUENCY_ALARM_TYPE { EM_FREQUENCY_ALARM_UNKNOWN = -1, // 未知 EM_FREQUENCY_ALARM_HIGH, // 高频报警 EM_FREQUENCY_ALARM_LOW, // 低频报警 } EM_FREQUENCY_ALARM_TYPE; ///@brief 频次报警信息 typedef struct tagNET_PERSON_FREQUENCY_INFO { EM_FREQUENCY_ALARM_TYPE emAlarmType; // 报警类型 int nTimes; // 频次 char szReserved[128]; // 保留字节 }NET_PERSON_FREQUENCY_INFO; #define DH_MAX_CUSTOM_PERSON_INFO_NUM 4 // 注册人员信息扩展最大个数 ///@brief 目标库路人信息 typedef struct tagFACERECOGNITION_CUSTOM_PASSER_BY_INFO { int nStorageAddrChannel; // 入库地点对应的通道号 int nStoragePresetID; // 入库地点(首次抓拍到的地点)对应的预置点号 NET_TIME stuStorageTime; // 入库时间 NET_TIME stuLastAppearTime; // 最近出现时间 int nLastAppearAddrChannel; // 最近出现地点对应的通道号 int nLastAppearPresetID; // 最近出现地点对应的预置点号(球机预置点从1开始) unsigned int nOccurrenceNumber; // 出现次数 char szReserved[1020]; // 保留字段 }FACERECOGNITION_CUSTOM_PASSER_BY_INFO; ///@brief 人员信息扩展结构体 typedef struct tagFACERECOGNITION_PERSON_INFOEX { char szPersonName[DH_MAX_PERSON_NAME_LEN]; // 姓名 WORD wYear; // 出生年,作为查询条件时,此参数填0,则表示此参数无效 BYTE byMonth; // 出生月,作为查询条件时,此参数填0,则表示此参数无效 BYTE byDay; // 出生日,作为查询条件时,此参数填0,则表示此参数无效 BYTE bImportantRank; // 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效 BYTE bySex; // 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效 char szID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标示(证件号码,工号,或其他编号) WORD wFacePicNum; // 图片张数 DH_PIC_INFO szFacePicInfo[DH_MAX_PERSON_IMAGE_NUM]; // 当前人员对应的图片信息 BYTE byType; // 人员类型,详见 EM_PERSON_TYPE BYTE byIDType; // 证件类型,详见 EM_CERTIFICATE_TYPE BYTE byGlasses; // 是否戴眼镜,0-未知 1-不戴 2-戴 BYTE byAge; // 年龄,0表示未知 char szProvince[DH_MAX_PROVINCE_NAME_LEN]; // 省份 char szCity[DH_MAX_CITY_NAME_LEN]; // 城市 char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符,首次由服务端生成,区别于ID字段 // 修改,删除操作时必填 char szCountry[NET_COUNTRY_LENGTH]; // 国籍,符合ISO3166规范 BYTE byIsCustomType; // 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szCustomType字段 char szCustomType[DH_COMMON_STRING_16]; // 人员自定义类型 char szComment[NET_COMMENT_LENGTH]; // 备注信息 char szGroupID[NET_GROUPID_LENGTH]; // 人员所属组ID char szGroupName[NET_GROUPNAME_LENGTH]; // 人员所属组名, 用户自己申请内存的情况时, EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 表情 char szHomeAddress[DH_COMMON_STRING_128]; // 注册人员家庭地址 EM_GLASSES_TYPE emGlassesType; // 眼镜类型 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高 EM_PERSON_FEATURE_STATE emFeatureState; // 人员建模状态 BOOL bAgeEnable; // 是否指定年龄段 int nAgeRange[2]; // 年龄范围 int nEmotionValidNum; // 目标特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotions[DH_MAX_FACEDETECT_FEATURE_NUM]; // 目标特征数组,与 byFeatureValidNum 结合使用 设置查询条件的时候使用 int nCustomPersonInfoNum; // 注册人员信息扩展个数 CUSTOM_PERSON_INFO szCustomPersonInfo[DH_MAX_CUSTOM_PERSON_INFO_NUM]; //注册人员信息扩展 EM_REGISTER_DB_TYPE emRegisterDbType; // 注册库类型 NET_TIME stuEffectiveTime; // 有效期时间 EM_PERSON_FEATURE_ERRCODE emFeatureErrCode; // 建模失败原因 DWORD wFacePicNumEx; // 目标图片张数 NET_FACE_PIC_INFO szFacePicInfoEx[6]; // 当前人员对应的图片信息 NET_PERSON_FEATURE_VALUE_INFO stuPersonFeatureValue; // 人员特征信息 BOOL bFrozenStatus; // 人员冻结状态 char szReserved[4]; // 保留字节 NET_PERSON_FREQUENCY_INFO stuFrequencyInfo; // 频次报警信息 char szUUID[64]; // 平台唯一标识目标字段,区别于UID,IVSS根据faceRecognitionServer.getCaps能力,SupportIDFromServer值为true时,支持UUID有效 FACERECOGNITION_CUSTOM_PASSER_BY_INFO* pstuCustomPasserbyInfo; // 路人信息,由用户申请内存,一次申请一个 BYTE byReserved[188-POINTERSIZE]; // 保留字节 } FACERECOGNITION_PERSON_INFOEX; ///@brief 候选人员信息 typedef struct tagCANDIDATE_INFO { FACERECOGNITION_PERSON_INFO stPersonInfo; // 人员信息 // 布控(禁止名单)库,指布控库中人员信息; // 历史库,指历史库中人员信息 // 报警库,指布控库的人员信息 BYTE bySimilarity; // 和查询图片的相似度,百分比表示,1~100 BYTE byRange; // 人员所属数据库范围,详见EM_FACE_DB_TYPE BYTE byReserved1[2]; NET_TIME stTime; // 当byRange为历史数据库时有效,表示查询人员出现的时间 char szAddress[MAX_PATH]; // 当byRange为历史数据库时有效,表示查询人员出现的地点 BOOL bIsHit; // 是否有识别结果,指这个检测出的目标在库中有没有比对结果 DH_PIC_INFO_EX3 stuSceneImage; // 目标全景图 int nChannelID; // 通道号 char szChannelString[32]; // 视频通道号 }CANDIDATE_INFO; ///@brief 衣服颜色 typedef enum tagEM_CLOTHES_COLOR { EM_CLOTHES_COLOR_UNKNOWN, // 未知 EM_CLOTHES_COLOR_WHITE, // 白色 EM_CLOTHES_COLOR_ORANGE, // 橙色 EM_CLOTHES_COLOR_PINK, // 粉色 EM_CLOTHES_COLOR_BLACK, // 黑色 EM_CLOTHES_COLOR_RED, // 红色 EM_CLOTHES_COLOR_YELLOW, // 黄色 EM_CLOTHES_COLOR_GRAY, // 灰色 EM_CLOTHES_COLOR_BLUE, // 蓝色 EM_CLOTHES_COLOR_GREEN, // 绿色 EM_CLOTHES_COLOR_PURPLE, // 紫色 EM_CLOTHES_COLOR_BROWN, // 棕色 EM_CLOTHES_COLOR_DARKORANGE, // 深橙色 EM_CLOTHES_COLOR_OTHER, // 其他颜色(该选项设备协议已不支持, 此处为了兼容保留) EM_CLOTHES_COLOR_SILVER, // 银色 EM_CLOTHES_COLOR_DARKVIOLET, // 暗紫罗兰色 EM_CLOTHES_COLOR_MARRON, // 栗色 EM_CLOTHES_COLOR_DIMGRAY, // 暗灰色 EM_CLOTHES_COLOR_WHITESMOKE, // 白烟色 EM_CLOTHES_COLOR_MISTYROSE, // 浅玫瑰色 EM_CLOTHES_COLOR_TOMATO, // 番茄红色 EM_CLOTHES_COLOR_OLIVE, // 橄榄色 EM_CLOTHES_COLOR_GLOD, // 金色 EM_CLOTHES_COLOR_DARKOLIVEGREEN, // 暗橄榄绿色 EM_CLOTHES_COLOR_CHARTREUSE, // 黄绿色 EM_CLOTHES_COLOR_GREENYELLOW, // 绿黄色 EM_CLOTHES_COLOR_FORESTGREEN, // 森林绿色 EM_CLOTHES_COLOR_SEAGREEN, // 海洋绿色 EM_CLOTHES_COLOR_DEEPSKYBLUE, // 深天蓝色 EM_CLOTHES_COLOR_CYAN, // 青色 EM_CLOTHES_COLOR_LIGHTGREEN, // 浅绿色 }EM_CLOTHES_COLOR; ///@brief 上衣类型 typedef enum tagEM_COAT_TYPE { EM_COAT_TYPE_UNKNOWN, // 未知 EM_COAT_TYPE_LONG_SLEEVE, // 长袖 EM_COAT_TYPE_COTTA, // 短袖 EM_COAT_TYPE_SLEEVELESS, //无袖 }EM_COAT_TYPE; ///@brief 裤子类型 typedef enum tagEM_TROUSERS_TYPE { EM_TROUSERS_TYPE_UNKNOWN, // 未知 EM_TROUSERS_TYPE_TROUSERS, // 长裤 EM_TROUSERS_TYPE_SHORTS, // 短裤 EM_TROUSERS_TYPE_SKIRT, // 裙子 }EM_TROUSERS_TYPE; ///@brief 是否戴帽子 typedef enum tagEM_HAS_HAT { EM_HAS_HAT_UNKNOWN, // 未知 EM_HAS_HAT_NO, // 不戴帽子 EM_HAS_HAT_YES, // 戴帽子 }EM_HAS_HAT; ///@brief 是否戴包(包括背包或拎包) typedef enum tagEM_HAS_BAG { EM_HAS_BAG_UNKNOWN, // 未知 EM_HAS_BAG_NO, // 不带包 EM_HAS_BAG_YES, // 带包 }EM_HAS_BAG; ///@brief 是否有背包 typedef enum tagEM_HAS_BACK_BAG { EM_HAS_BACK_BAG_UNKNOWN, // 未知 EM_HAS_BACK_BAG_NO, // 没有背包 EM_HAS_BACK_BAG_YES, // 有背包 } EM_HAS_BACK_BAG; ///@brief 是否有手提包 typedef enum tagEM_HAS_CARRIER_BAG { EM_HAS_CARRIER_BAG_UNKNOWN, // 未知 EM_HAS_CARRIER_BAG_NO, // 没有手提包 EM_HAS_CARRIER_BAG_YES, // 有手提包 } EM_HAS_CARRIER_BAG; ///@brief 是否有肩包 typedef enum tagEM_HAS_SHOULDER_BAG { EM_HAS_SHOULDER_BAG_UNKNOWN, // 未知 EM_HAS_SHOULDER_BAG_NO, // 没有肩包 EM_HAS_SHOULDER_BAG_YES, // 有肩包 } EM_HAS_SHOULDER_BAG; ///@brief 是否有斜挎包 typedef enum tagEM_HAS_MESSENGER_BAG { EM_HAS_MESSENGER_BAG_UNKNOWN, // 未知 EM_HAS_MESSENGER_BAG_NO, // 没有斜挎包 EM_HAS_MESSENGER_BAG_YES, // 有斜挎包 } EM_HAS_MESSENGER_BAG; ///@brief 角度 typedef enum tagEM_ANGLE_TYPE { EM_ANGLE_UNKNOWN = 0, // 未知 EM_ANGLE_FRONT, // 正面 EM_ANGLE_SIDE, // 侧面 EM_ANGLE_BACK, // 背面 }EM_ANGLE_TYPE; ///@brief 是否打伞 typedef enum tagEM_HAS_UMBRELLA { EM_HAS_UMBRELLA_UNKNOWN, // 未知 EM_HAS_UMBRELLA_NO, // 未打伞 EM_HAS_UMBRELLA_YES, // 打伞 } EM_HAS_UMBRELLA; ///@brief 包类型 typedef enum tagEM_BAG_TYPE { EM_BAG_UNKNOWN, // 未知 EM_BAG_HANDBAG, // 手提包 EM_BAG_SHOULDERBAG, // 肩包 EM_BAG_KNAPSACK, // 背包 EM_BAG_DRAWBARBOX, // 拉杆箱 EM_BAG_WAISTPACK, // 腰包 EM_BAG_NONE, // 无包 } EM_BAG_TYPE; ///@brief 帽子类型 typedef enum tagEM_CAP_TYPE { EM_CAP_UNKNOWN, // 未知 EM_CAP_ORDINARY, // 普通帽子 EM_CAP_HELMET, // 头盔 EM_CAP_SAFE, // 安全帽 } EM_CAP_TYPE; ///@brief 衣服图案 typedef enum tagEM_CLOTHES_PATTERN { EM_CLOTHES_PATTERN_UNKNOWN, // 未知 EM_CLOTHES_PATTERN_PURE, // 纯色 EM_CLOTHES_PATTERN_STRIPE, // 条纹 EM_CLOTHES_PATTERN_PATTERN, // 图案 EM_CLOTHES_PATTERN_GAP, // 缝隙 EM_CLOTHES_PATTERN_LATTICE, // 格子 EM_CLOTHES_PATTERN_SPLITJOIN, // 拼接 EM_CLOTHES_PATTERN_FLORAL, // 碎花 } EM_CLOTHES_PATTERN; ///@brief 头发样式 typedef enum tagEM_HAIR_STYLE { EM_HAIR_UNKNOWN = 0, // 未知 EM_HAIR_LONG_HAIR, // 长发 EM_HAIR_SHORT_HAIR, // 短发 EM_HAIR_PONYTAIL, // 马尾 EM_HAIR_UPDO, // 盘发 EM_HAIR_HEAD_BLOCKED, // 头部被遮挡 EM_HAIR_NONE, // 无头发 } EM_HAIR_STYLE; ///@brief 历史库人体图片信息 typedef struct tagNET_HISTORY_HUMAN_IMAGE_INFO { int nLength; // 图片大小,单位:字节 int nWidth; // 图片宽度 int nHeight; // 图片高度 char szFilePath[260]; // 文件路径 } NET_HISTORY_HUMAN_IMAGE_INFO; ///@brief 历史库人体信息 typedef struct tagNET_HISTORY_HUMAN_INFO { EM_CLOTHES_COLOR emCoatColor; // 上衣颜色 EM_COAT_TYPE emCoatType; // 上衣类型 EM_CLOTHES_COLOR emTrousersColor; // 裤子颜色 EM_TROUSERS_TYPE emTrousersType; // 裤子类型 EM_HAS_HAT emHasHat; // 是否戴帽子 EM_HAS_BAG emHasBag; // 是否带包 NET_RECT stuBoundingBox; // 包围盒(8192坐标系) int nAge; // 年龄 EM_SEX_TYPE emSex; // 性别 EM_ANGLE_TYPE emAngle; // 角度 EM_HAS_UMBRELLA emHasUmbrella; // 是否打伞 EM_BAG_TYPE emBag; // 包类型 EM_CLOTHES_PATTERN emUpperPattern; // 上半身衣服图案 EM_HAIR_STYLE emHairStyle; // 头发样式 EM_CAP_TYPE emCap; // 帽类型 EM_HAS_BACK_BAG emHasBackBag; // 是否有背包 EM_HAS_CARRIER_BAG emHasCarrierBag; // 是否带手提包 EM_HAS_SHOULDER_BAG emHasShoulderBag; // 是否有肩包 EM_HAS_MESSENGER_BAG emMessengerBag; // 是否有斜跨包 NET_HISTORY_HUMAN_IMAGE_INFO stuImageInfo; // 人体图片信息 NET_HISTORY_HUMAN_IMAGE_INFO stuFaceImageInfo; // 图片信息 BYTE byReserved[256]; // 保留字节 } NET_HISTORY_HUMAN_INFO; ///@brief 候选人员信息扩展结构体 typedef struct tagCANDIDATE_INFOEX { FACERECOGNITION_PERSON_INFOEX stPersonInfo; // 人员信息扩展 // 布控(禁止名单)库,指布控库中人员信息; // 历史库,指历史库中人员信息 // 报警库,指布控库的人员信息 BYTE bySimilarity; // 和查询图片的相似度,百分比表示,1~100 BYTE byRange; // 人员所属数据库范围,详见EM_FACE_DB_TYPE BYTE byReserved1[2]; NET_TIME stTime; // 当byRange为历史数据库时有效,表示查询人员出现的时间 char szAddress[MAX_PATH]; // 当byRange为历史数据库时有效,表示查询人员出现的地点 BOOL bIsHit; // 是否有识别结果,指这个检测出的目标在库中有没有比对结果 DH_PIC_INFO_EX3 stuSceneImage; // 全景图 int nChannelID; // 通道号 char szFilePathEx[256]; // 文件路径 NET_HISTORY_HUMAN_INFO stuHistoryHumanInfo; // 历史库人体信息 char szChannelString[32]; // 视频通道号 BYTE byReserved[104]; // 保留字节 } CANDIDATE_INFOEX; ///@brief 大类业务方案 typedef enum tagEM_CLASS_TYPE { EM_CLASS_UNKNOWN = 0, // 未知业务 EM_CLASS_VIDEO_SYNOPSIS = 1, // 视频浓缩 EM_CLASS_TRAFFIV_GATE = 2, //卡口 EM_CLASS_ELECTRONIC_POLICE = 3, // 电警 EM_CLASS_SINGLE_PTZ_PARKING = 4, // 单球违停 EM_CLASS_PTZ_PARKINBG = 5, // 主从违停 EM_CLASS_TRAFFIC = 6, // 交通事件"Traffic" EM_CLASS_NORMAL = 7, // 通用行为分析"Normal" EM_CLASS_PS = 8, EM_CLASS_ATM = 9, // 金融行为分析"ATM" EM_CLASS_METRO = 10, // 地铁行为分析 EM_CLASS_FACE_DETECTION = 11, // 目标检测"FaceDetection" EM_CLASS_FACE_RECOGNITION = 12, // 目标识别"TargetRecognition" EM_CLASS_NUMBER_STAT = 13, // 人数统计"NumberStat" EM_CLASS_HEAT_MAP = 14, // 热度图"HeatMap" EM_CLASS_VIDEO_DIAGNOSIS = 15, // 视频诊断"VideoDiagnosis" EM_CLASS_VIDEO_ENHANCE = 16, // 视频增强 EM_CLASS_SMOKEFIRE_DETECT = 17, // 烟火检测 EM_CLASS_VEHICLE_ANALYSE = 18, // 车辆特征识别"VehicleAnalyse" EM_CLASS_PERSON_FEATURE = 19, // 人员特征识别 EM_CLASS_SDFACEDETECTION = 20, // 多预置点检测"SDFaceDetect" //配置一条规则但可以在不同预置点下生效 EM_CLASS_HEAT_MAP_PLAN = 21, // 球机热度图计划"HeatMapPlan" EM_CLASS_NUMBERSTAT_PLAN = 22, // 球机客流量统计计划 "NumberStatPlan" EM_CLASS_ATMFD = 23, // 金融目标检测 EM_CLASS_HIGHWAY = 24, // 高速交通事件检测"Highway" EM_CLASS_CITY = 25, // 城市交通事件检测 "City" EM_CLASS_LETRACK = 26, // 民用简易跟踪"LeTrack" EM_CLASS_SCR = 27, // 打靶相机"SCR" EM_CLASS_STEREO_VISION = 28, // 立体视觉(双目)"StereoVision" EM_CLASS_HUMANDETECT = 29, // 人体检测"HumanDetect" EM_CLASS_FACE_ANALYSIS = 30, // 目标分析 "FaceAnalysis" EM_CALSS_XRAY_DETECTION = 31, // X光检测 "XRayDetection" EM_CLASS_STEREO_NUMBER = 32, // 双目相机客流量统计 "StereoNumber" EM_CLASS_CROWDDISTRIMAP = 33, // 人群分布图 EM_CLASS_OBJECTDETECT = 34, // 目标检测 EM_CLASS_FACEATTRIBUTE = 35, // IVSS目标检测 "FaceAttribute" EM_CLASS_FACECOMPARE = 36, // IVSS目标识别 "FaceCompare" EM_CALSS_STEREO_BEHAVIOR = 37, // 立体行为分析 "StereoBehavior" EM_CALSS_INTELLICITYMANAGER = 38, // 智慧城管 "IntelliCityMgr" EM_CALSS_PROTECTIVECABIN = 39, // 防护舱(ATM舱内)"ProtectiveCabin" EM_CALSS_AIRPLANEDETECT = 40, // 飞机行为检测 "AirplaneDetect" EM_CALSS_CROWDPOSTURE = 41, // 人群态势(人群分布图服务)"CrowdPosture" EM_CLASS_PHONECALLDETECT = 42, // 打电话检测 "PhoneCallDetect" EM_CLASS_SMOKEDETECTION = 43, // 烟雾检测 "SmokeDetection" EM_CLASS_BOATDETECTION = 44, // 船只检测 "BoatDetection" EM_CLASS_SMOKINGDETECT = 45, // 吸烟检测 "SmokingDetect" EM_CLASS_WATERMONITOR = 46, // 水利监测 "WaterMonitor" EM_CLASS_GENERATEGRAPHDETECTION = 47, // 生成图规则 "GenerateGraphDetection" EM_CLASS_TRAFFIC_PARK = 48, // 交通停车 "TrafficPark" EM_CLASS_OPERATEMONITOR = 49, // 作业检测 "OperateMonitor" EM_CLASS_INTELLI_RETAIL = 50, // 智慧零售大类 "IntelliRetail" EM_CLASS_CLASSROOM_ANALYSE = 51, // 教育智慧课堂"ClassroomAnalyse" EM_CLASS_FEATURE_ABSTRACT = 52, // 特征向量提取大类 "FeatureAbstract" EM_CLASS_FACEBODY_DETECT = 53, // 人体检测大类 "FaceBodyDetect" EM_CLASS_FACEBODY_ANALYSE = 54, // 人体识别大类 "FaceBodyAnalyse" EM_CLASS_VEHICLES_DISTRI = 55, // 车辆密度 "VehiclesDistri" EM_CLASS_INTELLI_BREED = 56, // 智慧养殖检测 "IntelliBreed" EM_CLASS_INTELLI_PS = 57, EM_CLASS_ELECTRIC_DETECT = 58, // 电力检测 "ElectricDetect" EM_CLASS_RADAR_DETECT = 59, // 雷达检测 "RadarDetect" EM_CLASS_PARKINGSPACE = 60, // 车位检测大类 "ParkingSpace" EM_CLASS_INTELLI_FINANCE = 61, // 智慧金融 "IntelliFinance" EM_CLASS_CROWD_ABNORMAL = 62, // 人群异常检测 "CrowdAbnormal" EM_CLASS_ANATOMY_TEMP_DETECT = 63, // 人体温智能检测 "AnatomyTempDetect" EM_CLASS_WEATHER_MONITOR = 64, // 天气监控 "WeatherMonitor" EM_CLASS_ELEVATOR_ACCESS_CONTROL = 65, // 电梯门禁 "ElevatorAccessControl" EM_CLASS_BREAK_RULE_BUILDING = 66, // 违章建筑 "BreakRuleBuilding" EM_CLASS_FOREIGN_DETECT = 67, // 异物检测 "ForeignDetection" EM_CLASS_PANORAMA_TRAFFIC = 68, // 全景交通 "PanoramaTraffic" EM_CLASS_CONVEY_OR_BLOCK = 69, // 传送带阻塞 "ConveyorBlock" EM_CLASS_KITCHEN_ANIMAL = 70, // 厨房有害动物检测 "KitchenAnimal" EM_CLASS_ALLSEEINGEYE = 71, // 万物检测 "AllSeeingEye" EM_CLASS_INTELLI_FIRE_CONTROL = 72, // 智慧消防 "IntelliFireControl" EM_CLASS_CONVERYER_BELT = 73, // 传送带检测 "ConveyerBelt" EM_CLASS_INTELLI_LOGISTICS = 74, // 智慧物流 "IntelliLogistics" EM_CLASS_SMOKE_FIRE = 75, // 烟火检测"SmokeFire" EM_CLASS_OBJECT_MONITOR = 76, // 物品监控"ObjectMonitor" EM_CLASS_INTELLI_PARKING = 77, // 智能停车"IntelliParking" EM_CLASS_FIRE_CONTROL = 78, // 智慧消防 "FireControl" EM_CLASS_ANIMAL_DETECTION = 79, // 动物检测 "AnimalDetection" EM_CLASS_FIRE_CONTROL_MONITOR = 80, // 火警监控 "FireControlMonitor" EM_CLASS_FISH_MONITOR = 81, // 鱼群监测 "FishMonitor" EM_CLASS_SHOPTRUCK_DETECT = 82,// 工程车检测“ShopTruckDetect” } EM_CLASS_TYPE; ///@brief 大类业务方案,内容与EM_SCENE_TYPE一致 typedef enum tagEM_SCENE_CLASS_TYPE { EM_SCENE_CLASS_UNKNOW, // 未知 EM_SCENE_CLASS_NORMAL, // "Normal" 普通场景 EM_SCENE_CLASS_TRAFFIC, // "Traffic" 交通场景 EM_SCENE_CLASS_TRAFFIC_PATROL, // "TrafficPatrol" 交通巡视 EM_SCENE_CLASS_FACEDETECTION, // "FaceDetection" 目标检测/目标识别 EM_SCENE_CLASS_ATM, // "ATM" EM_SENCE_CLASS_INDOOR, // "Indoor" 室内行为分析,和普通规则相同,对室内场景的算法优化版 EM_SENCE_CLASS_FACERECOGNITION, // "TargetRecognition" 目标识别 EM_SENCE_CLASS_PS, EM_SENCE_CLASS_NUMBERSTAT, // "NumberStat" 客流量统计 EM_SENCE_CLASS_HEAT_MAP, // "HeatMap" 热度图 EM_SENCE_CLASS_VIDEODIAGNOSIS, // "VideoDiagnosis" 视频诊断 EM_SENCE_CLASS_VEHICLEANALYSE, // "VehicleAnalyse" 车辆特征检测分析 EM_SENCE_CLASS_COURSERECORD, // "CourseRecord" 自动录播 EM_SENCE_CLASS_VEHICLE, // "Vehicle" 车载场景(车载行业用,不同于智能交通的Traffic) EM_SENCE_CLASS_STANDUPDETECTION,// "StandUpDetection" 起立检测 EM_SCENE_CLASS_GATE, // "Gate" 卡口 EM_SCENE_CLASS_SDFACEDETECTION, // "SDFaceDetect" 多预置点目标检测,配置一条规则但可以在不同预置点下生效 EM_SCENE_CLASS_HEAT_MAP_PLAN, // "HeatMapPlan" 球机热度图计划 EM_SCENE_CLASS_NUMBERSTAT_PLAN, // "NumberStatPlan" 球机客流量统计计划 EM_SCENE_CLASS_ATMFD, // "ATMFD"金融目标检测 EM_SCENE_CLASS_HIGHWAY, // "Highway" 高速交通事件检测 EM_SCENE_CLASS_CITY, // "City" 城市交通事件检测 EM_SCENE_CLASS_LETRACK, // "LeTrack" 民用简易跟踪 EM_SCENE_CLASS_SCR, // "SCR" 打靶相机 EM_SCENE_CLASS_STEREO_VISION, // "StereoVision" 立体视觉(双目) EM_SCENE_CLASS_HUMANDETECT, // "HumanDetect"人体检测 EM_SCENE_CLASS_FACEANALYSIS, // "FaceAnalysis" 目标分析 EM_SCENE_CLASS_XRAY_DETECTION, // "XRayDetection" X光检测 EM_SCENE_CLASS_STEREO_NUMBER, // "StereoNumber" 双目相机客流量统计 EM_SCENE_CLASS_CROWDDISTRIMAP, // "CrowdDistriMap"人群分布图 EM_SCENE_CLASS_OBJECTDETECT, // "ObjectDetect"目标检测 EM_SCENE_CLASS_FACEATTRIBUTE, // "FaceAttribute" IVSS目标检测 EM_SCENE_CLASS_FACECOMPARE, // "FaceCompare" IVSS目标识别 EM_SCENE_CLASS_STEREO_BEHAVIOR, // "StereoBehavior" 立体行为分析(典型场景ATM舱) EM_SCENE_CLASS_INTELLICITYMANAGER, // "IntelliCityMgr" 智慧城管 EM_SCENE_CLASS_PROTECTIVECABIN, // "ProtectiveCabin" 防护舱(ATM舱内) EM_SCENE_CLASS_AIRPLANEDETECT, // "AirplaneDetect" 飞机行为检测 EM_SCENE_CLASS_CROWDPOSTURE, // "CrowdPosture" 人群态势(人群分布图服务) EM_SCENE_CLASS_PHONECALLDETECT, // "PhoneCallDetect" 打电话检测 EM_SCENE_CLASS_SMOKEDETECTION, // "SmokeDetection" 烟雾检测 EM_SCENE_CLASS_BOATDETECTION, // "BoatDetection" 船只检测 EM_SCENE_CLASS_SMOKINGDETECT, // "SmokingDetect" 吸烟检测 EM_SCENE_CLASS_WATERMONITOR, // "WaterMonitor" 水利监测 EM_SCENE_CLASS_GENERATEGRAPHDETECTION,// "GenerateGraphDetection" 生成图规则 EM_SCENE_CLASS_TRAFFIC_PARK, // "TrafficPark" 交通停车 EM_SCENE_CLASS_OPERATEMONITOR, // "OperateMonitor" 作业检测 EM_SCENE_CLASS_INTELLI_RETAIL, // IntelliRetail" 智慧零售大类 EM_SCENE_CLASS_CLASSROOM_ANALYSE,// "ClassroomAnalyse" 教育智慧课堂 EM_SCENE_CLASS_FEATURE_ABSTRACT, // "FeatureAbstract" 特征向量提取大类 EM_SCENE_CLASS_FACEBODY_DETECT, // "FaceBodyDetect" 人像检测大类 EM_SCENE_CLASS_FACEBODY_ANALYSE,// "FaceBodyAnalyse"人像识别大类 EM_SCENE_CLASS_VEHICLES_DISTRI, // "VehiclesDistri" 车辆密度 EM_SCENE_CLASS_INTELLI_BREED, // "IntelliBreed"智慧养殖检测 EM_SCENE_CLASS_INTELLI_PS, EM_SCENE_CLASS_ELECTRIC_DETECT, // "ElectricDetect" 电力检测 EM_SCENE_CLASS_RADAR_DETECT, // "RadarDetect"雷达检测 EM_SCENE_CLASS_PARKINGSPACE, // "ParkingSpace" 车位检测大类 EM_SCENE_CLASS_INTELLI_FINANCE, // "IntelliFinance"智慧金融 EM_SCENE_CLASS_CROWD_ABNORMAL, // "CrowdAbnormal" 人群异常检测 EM_SCENE_CLASS_ANATOMYTEMP_DETECT, // "AnatomyTempDetect" EM_SCENE_CLASS_WEATHER_MONITOR, // "WeatherMonitor"天气监控 EM_SCENE_CLASS_ELEVATOR_ACCESS_CONTROL, // "ElevatorAccessControl" 电梯门禁 EM_SCENE_CLASS_BREAK_RULE_BUILDING, // "BreakRuleBuilding"违章建筑 EM_SCENE_CLASS_PANORAMA_TRAFFIC, // "PanoramaTraffic"全景交通 EM_SCENE_CLASS_PORTRAIT_DETECT, // "PortraitDetect"人像检测 EM_SCENE_CLASS_CONVEY_OR_BLOCK, // "ConveyorBlock" 传送带阻塞 EM_SCENE_CLASS_KITCHEN_ANIMAL, // "KitchenAnimal" 厨房有害动物检测 EM_SCENE_CLASS_ALLSEEINGEYE, // "AllSeeingEye" 万物检测 EM_SCENE_CLASS_DRIVE, // "Drive" 驾驶行为分析 EM_SCENE_CLASS_DRIVEASSISTANT, // "DriveAssistant" 高级驾驶辅助系统 EM_SCENE_CLASS_INCABINMONITOR, // "InCabinMonitor" 车内驾驶舱监测 EM_SCENE_CLASS_BLINDSPOTDETECTION, // "BlindSpotDetection" 盲区检测 EM_SCENE_CLASS_CONVERYER_BELT, // "ConveyerBelt" 传送带检测 EM_SCENE_CLASS_INTELLI_LOGISTICS, // "IntelliLogistics" 智慧物流 EM_SCENE_CLASS_SMOKE_FIRE, // "SmokeFire" 烟火检测 EM_SCENE_CLASS_OBJECT_MONITOR, // "ObjectMonitor" 物品监控 EM_SCENE_CLASS_FIRE_FACILITIES, // "FireFacilities" 消防设施检测 EM_SCENE_CLASS_FIRE_CONTROL, // "IntelliFireControl" 智慧消防 EM_SCENE_CLASS_INTELLI_PARKING, // "IntelliParking" 智能停车 EM_SCENE_CLASS_FINANCE_REGULATION, // "FinanceRegulation" 金融常规 EM_SCENE_CLASS_ENERGY, // "Energy" 智慧能源 EM_SCENE_CLASS_FIRE_CONTROL_EX, // "FireControl" 智慧消防 EM_SCENE_CLASS_ANIMAL_DETECTION, // "AnimalDetection" 动物检测 EM_SCENE_CLASS_FIRE_CONTROL_MONITOR, // "FireControlMonitor" 火警监控 EM_SCENE_CLASS_PROTECTIVE_SUIT, // "ProtectiveSuit" 防护服或工作服检测 EM_SCENE_CLASS_FISH_MONITOR, // "FishMonitor" 鱼群监测 EM_SCENE_CLASS_SHOPTRUCK_DETECT, // "ShopTruckDetect"工程车检测 } EM_SCENE_CLASS_TYPE; ///@brief 智能报警事件公共信息 typedef struct tagEVENT_INTELLI_COMM_INFO { EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nPresetID; // 该事件触发的预置点,取值范围为0~255,大于0表示在此预置点时有效。 BYTE bReserved[124]; // 保留字节,留待扩展. } EVENT_INTELLI_COMM_INFO; ///@brief 智能事件抓图信息 typedef struct tagNET_INTELLIGENCE_IMAGE_INFO { UINT nOffSet; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位字节 UINT nWidth; // 图片宽度(像素) UINT nHeight; // 图片高度(像素) UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[44]; // 预留字节 }NET_INTELLIGENCE_IMAGE_INFO; ///@brief 交通车辆部分信息 typedef struct tagEVENT_TRAFFIC_CAR_PART_INFO { char szMachineName[128]; // 本地或远程设备名称 来源于普通配置General.MachineName char szRoadwayNo[32]; // 道路编号 char szPlateNumber[32]; // 车牌号码 char szCategory[32]; // 车辆子类型 BYTE bReserved[288]; // 保留字节 }EVENT_TRAFFIC_CAR_PART_INFO; ///@brief 交通车辆行驶方向类型 typedef enum tagEM_TRAFFICCAR_MOVE_DIRECTION { EM_TRAFFICCAR_MOVE_DIRECTION_UNKNOWN, // 未知的 EM_TRAFFICCAR_MOVE_DIRECTION_STRAIGHT, // 直行 EM_TRAFFICCAR_MOVE_DIRECTION_TURN_LEFT, // 左转 EM_TRAFFICCAR_MOVE_DIRECTION_TURN_RIGHT, // 右转 EM_TRAFFICCAR_MOVE_DIRECTION_TURN_AROUND, // 掉头 }EM_TRAFFICCAR_MOVE_DIRECTION; ///@brief 允许名单权限列表 typedef struct tagNET_WHITE_LIST_AUTHORITY_LIST { BOOL bOpenGate; // 是否有开闸权限 BYTE bReserved[16]; // 保留字节 }NET_WHITE_LIST_AUTHORITY_LIST; ///@brief 允许名单信息 typedef struct tagNET_TRAFFICCAR_WHITE_LIST { BOOL bTrustCar; // 车牌是否属于允许名单 NET_TIME stuBeginTime; // 允许名单起始时间 NET_TIME stuCancelTime; // 允许名单过期时间 NET_WHITE_LIST_AUTHORITY_LIST stuAuthorityList; // 允许名单权限列表 BYTE bReserved[32]; // 保留字节 }NET_TRAFFICCAR_WHITE_LIST; ///@brief 禁止名单信息 typedef struct tagNET_TRAFFICCAR_BLACK_LIST { BOOL bEnable; // 是否已启用禁止名单 BOOL bIsBlackCar; // 车牌是否属于禁止名单 NET_TIME stuBeginTime; // 禁止名单起始时间 NET_TIME stuCancelTime; // 禁止名单过期时间 EM_NET_TRAFFIC_CAR_CONTROL_TYPE emControlType; // 布控类型 UINT nControlledRouteID; // 布控路线ID BYTE bReserved[24]; // 保留字节 }NET_TRAFFICCAR_BLACK_LIST; ///@brief 车辆类型 typedef enum tagEM_TRAFFICCAR_CAR_TYPE { EM_TRAFFICCAR_CAR_TYPE_UNKNOWN, // 未知 EM_TRAFFICCAR_CAR_TYPE_TRUST_CAR, // 允许名单车辆 EM_TRAFFICCAR_CAR_TYPE_SUSPICIOUS_CAR, // 禁止名单车辆 EM_TRAFFICCAR_CAR_TYPE_NORMAL_CAR, // 非允许名单且非禁止名单车辆 }EM_TRAFFICCAR_CAR_TYPE; ///@brief 车道类型 typedef enum tagEM_TRAFFICCAR_LANE_TYPE { EM_TRAFFICCAR_LANE_TYPE_UNKNOWN, // 未知 EM_TRAFFICCAR_LANE_TYPE_NORMAL, // 普通车道 EM_TRAFFICCAR_LANE_TYPE_NONMOTOR, // 非机动车车道 EM_TRAFFICCAR_LANE_TYPE_LIGHT_DUTY, // 小型车车道 EM_TRAFFICCAR_LANE_TYPE_BUS, // 公交车车道 EM_TRAFFICCAR_LANE_TYPE_EMERGENCY, // 应急车道 EM_TRAFFICCAR_LANE_TYPE_DANGEROUS, // 危险品车道 EM_TRAFFICCAR_LANE_TYPE_TIDAL, // 潮汐车道 }EM_TRAFFICCAR_LANE_TYPE; ///@brief 车流量方向 typedef enum tagEM_VEHICLE_DIRECTION { NET_VEHICLE_DIRECTION_UNKOWN, // 未知 NET_VEHICLE_DIRECTION_HEAD, // 车头 NET_VEHICLE_DIRECTION_TAIL, // 车尾 NET_VEHICLE_DIRECTION_VEHBODYSIDE, // 车身(侧面) }EM_VEHICLE_DIRECTION; ///@brief 收费公路车辆通行费车型分类 typedef enum tagEM_TOLLS_VEHICLE_TYPE { EM_TOLLS_VEHICLE_TYPE_UNKNOWN, // 未知 EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR1, // 一型客车 EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR2, // 二型客车 EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR3, // 三型客车 EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR4, // 四型客车 EM_TOLLS_VEHICLE_TYPE_TRUCK1 = 11, // 一型货车 EM_TOLLS_VEHICLE_TYPE_TRUCK2, // 二型货车 EM_TOLLS_VEHICLE_TYPE_TRUCK3, // 三型货车 EM_TOLLS_VEHICLE_TYPE_TRUCK4, // 四型货车 EM_TOLLS_VEHICLE_TYPE_TRUCK5, // 五型货车 EM_TOLLS_VEHICLE_TYPE_TRUCK6 = 16, // 六型货车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE1 = 21, // 一型专项作业车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE2, // 二型专项作业车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE3, // 三型专项作业车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE4, // 四型专项作业车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE5, // 五型专项作业车 EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE6 = 26, // 六型专项作业车 }EM_TOLLS_VEHICLE_TYPE; ///@brief 车身抠图 typedef struct tagNET_TRAFFICCAR_ORIGINAL_VEHICLE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 数据大小,单位:字节 UINT nIndexInData; // 在上传图片数据中的图片序号 char szReserved[60]; // 保留字节 }NET_TRAFFICCAR_ORIGINAL_VEHICLE; ///@brief 按功能划分的车辆类型 typedef enum tagEM_VEHICLE_TYPE_BY_FUNC { EM_VEHICLE_TYPE_BY_FUNC_UNKNOWN, // 未知 /*以下为特种车辆类型*/ EM_VEHICLE_TYPE_BY_FUNC_TANK_CAR, // 危化品车辆 EM_VEHICLE_TYPE_BY_FUNC_SLOT_TANK_CAR, // 槽罐车 EM_VEHICLE_TYPE_BY_FUNC_DREGS_CAR, // 渣土车 EM_VEHICLE_TYPE_BY_FUNC_CONCRETE_MIXER_TRUCK, // 混凝土搅拌车 EM_VEHICLE_TYPE_BY_FUNC_TAXI, // 出租车 EM_VEHICLE_TYPE_BY_FUNC_POLICE, // 警车 EM_VEHICLE_TYPE_BY_FUNC_AMBULANCE, // 救护车 EM_VEHICLE_TYPE_BY_FUNC_GENERAL, // 普通车 EM_VEHICLE_TYPE_BY_FUNC_WATERING_CAR, // 洒水车 EM_VEHICLE_TYPE_BY_FUNC_FIRE_ENGINE, // 消防车 EM_VEHICLE_TYPE_BY_FUNC_MACHINESHOP_TRUCK, // 工程车 EM_VEHICLE_TYPE_BY_FUNC_POWER_LOT_VEHICLE, // 粉粒物料车 EM_VEHICLE_TYPE_BY_FUNC_SUCTION_SEWAGE_TRUCK, // 吸污车 EM_VEHICLE_TYPE_BY_FUNC_NORMAL_TANK_TRUCK, // 普通罐车 EM_VEHICLE_TYPE_BY_FUNC_SCHOOL_BUS, // 校车 EM_VEHICLE_TYPE_BY_FUNC_EXCAVATOR, // 挖掘机 EM_VEHICLE_TYPE_BY_FUNC_BULLDOZER, // 推土车 EM_VEHICLE_TYPE_BY_FUNC_CRANE, // 吊车 EM_VEHICLE_TYPE_BY_FUNC_PUMP_TRUCK, // 泵车 EM_VEHICLE_TYPE_BY_FUNC_POULTRY, // 禽畜车 EM_VEHICLE_TYPE_BY_FUNC_TRACTOR, // 拖拉机 /*以上为特种车辆类型*/ } EM_VEHICLE_TYPE_BY_FUNC; ///@brief 车牌属性 typedef enum tagEM_PLATE_ATTRIBUTE { EM_PLATE_ATTRIBUTE_UNKNOWN, // 未知 EM_PLATE_ATTRIBUTE_NORMAL, // 正常 EM_PLATE_ATTRIBUTE_NO_PLATE, // 无牌 EM_PLATE_ATTRIBUTE_PARTIAL_OCCLUSION, // 部分遮挡/污损 EM_PLATE_ATTRIBUTE_FULL_OCCLUSION, // 完全遮挡/污损 } EM_PLATE_ATTRIBUTE; ///@brief TrafficCar 交通车辆信息 typedef struct tagDEV_EVENT_TRAFFIC_TRAFFICCAR_INFO { char szPlateNumber[32]; // 车牌号码 char szPlateType[32]; // 号牌类型 "Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌 // "Police" 警牌;"SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌 // "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌 char szPlateColor[32]; // 车牌颜色 "Blue","Yellow", "White","Black","YellowbottomBlackText","BluebottomWhiteText","BlackBottomWhiteText","ShadowGreen","YellowGreen" char szVehicleColor[32]; // 车身颜色 "White", "Black", "Red", "Yellow", "Gray", "Blue","Green" int nSpeed; // 速度 单位Km/H char szEvent[64]; // 触发的相关事件 参见事件列表Event List,只包含交通相关事件。 char szViolationCode[32]; // 违章代码 详见TrafficGlobal.ViolationCode char szViolationDesc[64]; // 违章描述 int nLowerSpeedLimit; // 速度下限 int nUpperSpeedLimit; // 速度上限 int nOverSpeedMargin; // 限高速宽限值 单位:km/h int nUnderSpeedMargin; // 限低速宽限值 单位:km/h int nLane; // 车道 参见事件列表Event List中卡口和路口事件。 int nVehicleSize; // 车辆大小,-1表示未知,否则按位 // 第0位:"Light-duty", 小型车 // 第1位:"Medium", 中型车 // 第2位:"Oversize", 大型车 // 第3位:"Minisize", 微型车 // 第4位:"Largesize", 长车 float fVehicleLength; // 车辆长度 单位米 int nSnapshotMode; // 抓拍方式 0-未分类,1-全景,2-近景,4-同向抓拍,8-反向抓拍,16-号牌图像 char szChannelName[32]; // 本地或远程的通道名称,可以是地点信息 来源于通道标题配置ChannelTitle.Name char szMachineName[256]; // 本地或远程设备名称 来源于普通配置General.MachineName char szMachineGroup[256]; // 机器分组或叫设备所属单位 默认为空,用户可以将不同的设备编为一组,便于管理,可重复。 char szRoadwayNo[64]; // 道路编号 char szDrivingDirection[3][DH_MAX_DRIVINGDIRECTION]; // // 行驶方向 , "DrivingDirection" // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行, // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和 // 下行的两个地点 char *szDeviceAddress; // 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束 char szVehicleSign[32]; // 车辆标识 DH_SIG_CARWAY_INFO_EX stuSigInfo; // 由车检器产生抓拍信号冗余信息 char *szMachineAddr; // 设备部署地点 float fActualShutter; // 当前图片曝光时间,单位为毫秒 BYTE byActualGain; // 当前图片增益,范围为0~100 BYTE byDirection; // 车道方向,0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知 9-自定义 BYTE byReserved[2]; char* szDetailedAddress; // 详细地址, 作为szDeviceAddress的补充 char szDefendCode[DH_COMMON_STRING_64]; // 图片防伪码 int nTrafficBlackListID; // 关联禁止名单数据库记录默认主键ID, 0,无效;> 0,禁止名单数据记录 DH_COLOR_RGBA stuRGBA; // 车身颜色RGBA NET_TIME stSnapTime; // 抓拍时间 int nRecNo; // 记录编号 char szCustomParkNo[DH_COMMON_STRING_32 + 1]; // 自定义车位号(停车场用) BYTE byReserved1[3]; int nDeckNo; // 车板位号 int nFreeDeckCount; // 空闲车板数量 int nFullDeckCount; // 占用车板数量 int nTotalDeckCount; // 总共车板数量 char szViolationName[64]; // 违章名称 unsigned int nWeight; // 车重(单位 Kg) char szCustomRoadwayDirection[32]; // 自定义车道方向,byDirection为9时有效 BYTE byPhysicalLane; // 物理车道号,取值0到5 BYTE byReserved2[3]; EM_TRAFFICCAR_MOVE_DIRECTION emMovingDirection; // 车辆行驶方向 NET_TIME stuEleTagInfoUTC; // 对应电子车牌标签信息中的过车时间(ThroughTime) NET_RECT stuCarWindowBoundingBox; // 车窗包围盒,0~8191 NET_TRAFFICCAR_WHITE_LIST stuWhiteList; // 允许名单信息 EM_TRAFFICCAR_CAR_TYPE emCarType; // 车辆类型 EM_TRAFFICCAR_LANE_TYPE emLaneType; // 车道类型 char szVehicleBrandYearText[64]; // 车系年款翻译后文本内容 char szCategory[32]; // 车辆子类型 NET_TRAFFICCAR_BLACK_LIST stuBlackList; // 禁止名单信息 EM_VEHICLE_DIRECTION emFlowDirection; // 车流量方向 EM_TOLLS_VEHICLE_TYPE emTollsVehicleType; // 收费公路车辆通行费车型分类 UINT nAxleType; // 轴型代码,参考轴型国标 0代表其他 UINT nAxleCount; // 车轴数量 UINT nWheelNum; // 车轮数量 NET_TRAFFICCAR_ORIGINAL_VEHICLE stuOriginalVehicle; // 车身抠图 EM_VEHICLE_TYPE_BY_FUNC emVehicleTypeByFunc; // 按功能划分的车辆类型 unsigned short nSunBrand; // 车辆子品牌 unsigned short nBrandYear; // 车辆年款 int nTrafficLightType; // 交通灯类型,仅在EVENT_IVS_TRAFFIC_RUNREDLIGHT中有效, 0;未知, 1:箭头灯, 2:圆形灯 EM_PLATE_ATTRIBUTE emPlateAttribute; // 车牌属性 BYTE bReserved[132]; // 保留字节,留待扩展. }DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO; #ifndef LINUX64_JNA #pragma pack(push) #pragma pack(4) #endif ///@brief GPS信息 typedef struct tagNET_GPS_INFO { unsigned int nLongitude; // 经度(单位是百万分之一度) // 西经:0 - 180000000 实际值应为: 180*1000000 – dwLongitude // 东经:180000000 - 360000000 实际值应为: dwLongitude – 180*1000000 // 如: 300168866应为(300168866 - 180*1000000)/1000000 即东经120.168866度 unsigned int nLatidude; // 纬度(单位是百万分之一度) // 南纬:0 - 90000000 实际值应为: 90*1000000 – dwLatidude // 北纬:90000000 – 180000000 实际值应为: dwLatidude – 90*1000000 // 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度 double dbAltitude; // 高度,单位为米 double dbSpeed; // 速度,单位km/H double dbBearing; // 方向角,单位° BYTE bReserved[8]; // 保留字段 }NET_GPS_INFO; #ifndef LINUX64_JNA #pragma pack(pop) #endif ///@brief GPS信息 typedef struct tagNET_GPS_INFO_EX { int nLongitude; // 经度(单位是百万分之一度) // 西经:0 - 180000000 实际值应为: 180*1000000 – dwLongitude // 东经:180000000 - 360000000 实际值应为: dwLongitude – 180*1000000 // 如: 300168866应为(300168866 - 180*1000000)/1000000 即东经120.168866度 int nLatidude; // 纬度(单位是百万分之一度) // 南纬:0 - 90000000 实际值应为: 90*1000000 – dwLatidude // 北纬:90000000 – 180000000 实际值应为: dwLatidude – 90*1000000 // 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度 double nAltitude; // 高度,单位为米 char szReserved[48]; // 保留字段 } NET_GPS_INFO_EX; ///@brief 事件扩展信息 typedef struct tagNET_EXTENSION_INFO { char szEventID[MAX_EVENT_ID_LEN]; // 国标事件ID BYTE byReserved[80]; // 保留字节 } NET_EXTENSION_INFO; ///@brief 全景广角图 typedef struct tagSCENE_IMAGE_INFO_EX { unsigned int nOffSet; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位字节 unsigned int nWidth; // 图片宽度(像素) unsigned int nHeight; // 图片高度(像素) char szFilePath[260]; // 全景图片路径 UINT nIndexInData; // 在上传图片数据中的图片序号 char szImageID[42]; // 图片ID char szReserved[6]; // 预留字节 BYTE byReserved[460]; // 预留字节 }SCENE_IMAGE_INFO_EX; ///@brief 制服样式 typedef enum tagEM_UNIFORM_STYLE { EM_UNIFORM_STYLE_UNKNOWN, // 未知 EM_UNIFORM_STYLE_POLICE, // 警服 EM_UNIFORM_STYLE_NOUNIFORM, // 无制服 EM_UNIFORM_STYLE_SINOPEC, // 中石化制服 EM_UNIFORM_STYLE_GUARD, // 防护服 EM_UNIFORM_STYLE_VEST, // 马甲 EM_UNIFORM_STYLE_SATNITATION, // 环卫服 EM_UNIFORM_STYLE_TAKEOUT, // 外卖服 EM_UNIFORM_STYLE_JUN, EM_UNIFORM_STYLE_EXPRESS, // 快递服 EM_UNIFORM_STYLE_SECURITY // 保安服 }EM_UNIFORM_STYLE; ///@brief 检测到的人信息 typedef struct tagNET_VAOBJECT_NUMMAN { UINT nObjectID; // 物体ID,每个ID表示一个唯一的物体 EM_UNIFORM_STYLE emUniformStyle; // 制服样式 NET_RECT stuBoundingBox; // 包围盒,手套对象在全景图中的框坐标,为0~8191相对坐标 NET_RECT stuOriginalBoundingBox; // 包围盒,绝对坐标 BYTE byReserved[128]; // 预留字节 }NET_VAOBJECT_NUMMAN; ///@brief 事件级别 typedef enum tagEM_EVENT_LEVEL { EM_EVENT_LEVEL_UNKNOWN = -1, // 未知 EM_EVENT_LEVEL_HINT, // 提示 EM_EVENT_LEVEL_GENERAL, // 普通 EM_EVENT_LEVEL_WARNING // 警告 }EM_EVENT_LEVEL; ///@brief 预置点的坐标和放大倍数 typedef struct tagNET_PRESET_POSITION { int nHorizontal; // 水平坐标 int nVertical; // 垂直坐标 int nMagnification; // 放大倍数 }NET_PRESET_POSITION; ///@brief 物体动作支持类型 typedef enum tagEM_ACTION { EM_ACTION_UNKNOWN, // 未知类型 EM_ACTION_APPEAR, // 第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体 EM_ACTION_MOVE, // 正在运动,物体被正常跟踪 EM_ACTION_STAY, // 物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中 EM_ACTION_REMOVE, // 物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用 EM_ACTION_DISAPPEAR, // 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现 EM_ACTION_SPLIT, // 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离 EM_ACTION_MERGE, // 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体 EM_ACTION_RENAME, // 如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID。 }EM_ACTION; ///@brief 船只行驶方向 typedef enum tagEM_BOAT_DIRECTION { EM_BOAT_DIRECTION_UNKNOWN, // 未知 EM_BOAT_DIRECTION_OPPOSITE, // 逆向 EM_BOAT_DIRECTION_POSITIVE, // 正向 }EM_BOAT_DIRECTION; ///@brief 船只物体信息 typedef struct tagNET_BOAT_OBJECT { UINT nObjectID; // 物体ID,每个ID表示一个唯一的物体,不同的物体不能共用一个ID,已经使用过的ID也不能再次使用。 int nDistance; // 船身体到相机的距离,单位米 取值范围0-65535 int nHeight; // 船的高度,单位米 取值范围0-255 int nWidth; // 船的长度,单位米 取值范围0-2000 int nSpeed; // 船的速度,单位米/秒 取值范围0-255 EM_ACTION emActionType; // 物体动作支持类型 NET_RECT stuBoundingBox; // 矩形范围,点的坐标归一化到[0,8191]区间 NET_RECT stuOriginalBoundingBox; // 包围盒(绝对坐标) EM_BOAT_DIRECTION emDirection; // 行驶方向 char szBoatCode[64]; // 船名或船舷号 BYTE byReserved[60]; // 预留字节 }NET_BOAT_OBJECT; ///@brief 事件类型EVENT_IVS_CROSSLINEDETECTION(警戒线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROSSLINE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_POINT DetectLine[DH_MAX_DETECT_LINE_NUM]; // 规则检测线 int nDetectLineNum; // 规则检测线顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 int nTrackLineNum; // 物体运动轨迹顶点数 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bDirection; // 表示入侵方向, 0-由左至右, 1-由右至左 BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 UINT nObjetcHumansNum; // 检测到人的数量 NET_VAOBJECT_NUMMAN stuObjetcHumans[100]; // 检测的到人 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 EM_EVENT_LEVEL emEventType; // 事件级别 NET_PRESET_POSITION stPosition; // 预置点的坐标和放大倍数 UINT nVisibleHFOV; // 可见光横向视场角,单位度 实际角度乘以100 UINT nVisibleVFOV; // 可见光纵向视场角,单位度 实际角度乘以100 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的纵向视场角,单位度,实际角度乘以100 int nImageNum; // 图片信息个数 NET_IMAGE_INFO_EX2* pImageArray; // 图片信息数组 int nCarMirrorStatus; // 车的后视镜状态,-1: 未知, 0: 正常, 1: 不正常(如数量缺失等) int nCarLightStatus; // 车的车灯状态,-1: 未知, 0: 正常, 1:不正常(如灯未亮等) UINT nObjectBoatsNum; // 船只物体个数 NET_BOAT_OBJECT stuBoatObjects[100]; // 船只物品信息 int nUpDownGoing; // 车道/航道方向, 0:未知, 1:上行, 2:下行 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved1[452]; // 预留字节 } DEV_EVENT_CROSSLINE_INFO; ///@brief 事件类型EVENT_IVS_CROSSLINEDETECTION_EX(警戒线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROSSLINE_INFO_EX { DWORD dwSize; int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 float PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT_EX stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_POINT DetectLine[DH_MAX_DETECT_LINE_NUM]; // 规则检测线 int nDetectLineNum; // 规则检测线顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 int nTrackLineNum; // 物体运动轨迹顶点数 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bDirection; // 表示入侵方向, 0-由左至右, 1-由右至左 BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 int nMsgObjArrayCount; // 检测到的物体信息个数 DH_MSG_OBJECT_EX* pMsgObjArray; // 检测到的物体信息数组指针 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 UINT nObjetcHumansNum; // 检测到人的数量 NET_VAOBJECT_NUMMAN stuObjetcHumans[100]; // 检测的到人 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 EM_EVENT_LEVEL emEventType; // 事件级别 NET_PRESET_POSITION stPosition; // 预置点的坐标和放大倍数 UINT nVisibleHFOV; // 可见光横向视场角,单位度 实际角度乘以100 UINT nVisibleVFOV; // 可见光纵向视场角,单位度 实际角度乘以100 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的纵向视场角,单位度,实际角度乘以100 int nImageNum; // 图片信息个数 NET_IMAGE_INFO_EX2* pImageArray; // 图片信息数组 int nCarMirrorStatus; // 车的后视镜状态,-1: 未知 0-正常,1-不正常(如数量缺失等) int nCarLightStatus; // 车的车灯状态,-1: 未知 0-正常,1-不正常(如灯未亮等) UINT nObjectBoatsNum; // 船只物体个数 NET_BOAT_OBJECT stuBoatObjects[100]; // 船只物品信息 int nUpDownGoing; // 车道/航道方向, 0:未知, 1:上行, 2:下行 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved1[452]; // 预留字节 } DEV_EVENT_CROSSLINE_INFO_EX; ///@brief 货物通道信息(IPC捷克物流定制) typedef struct tagNET_CUSTOM_INFO { int nCargoChannelNum; // 货物通道个数 float fCoverageRate[MAX_CARGO_CHANNEL_NUM]; // 货物覆盖率 BYTE byReserved[40]; // 保留字节 } NET_CUSTOM_INFO; ///@brief 特殊区域类型 typedef enum tagEM_SPECIAL_REGION_TYPE { EM_SPEICAL_REGION_UNKNOW = 0 , // 未知 EM_SPEICAL_REGION_HIGH_LIGHT , // 高亮;ATM键盘区 EM_SPEICAL_REGION_REGULAR_BLINK , // 规律的闪烁;ATM插卡区 EM_SPEICAL_REGION_IRREGULAR_BLINK , // 不规律的闪烁;ATM屏幕区 }EM_SPECIAL_REGION_TYPE; ///@brief 事件类型EVENT_IVS_PASTEDETECTION(贴条事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PASTE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON unsigned int nOccurrenceCount; // 事件触发累计次数 EM_SPECIAL_REGION_TYPE emSpecialRegion; // 特殊区域类型 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE bReserved[748]; // 保留字节,留待扩展. } DEV_EVENT_PASTE_INFO; ///@brief 事件类型EVENT_IVS_LEFTDETECTION(物品遗留事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_LEFT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BYTE byReserved2[2]; // 字节对齐 NET_GPS_INFO stuGPSInfo; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_LEFT_INFO; ///@brief 全景广角图 typedef struct tagSCENE_IMAGE_INFO { UINT nOffSet; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位字节 UINT nWidth; // 图片宽度(像素) UINT nHeight; // 图片高度(像素) UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[52]; // 预留字节 }SCENE_IMAGE_INFO; ///@brief 事件类型EVENT_IVS_PRESERVATION(物品保全事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PRESERVATION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 SCENE_IMAGE_INFO stuSceneImage; // 广角图 int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObjects[128]; // 表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据 char szReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_PRESERVATION_INFO; ///@brief 预置点的坐标和放大倍数 typedef struct tagPTZ_PRESET_UNIT { int nPositionX; //水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示。 int nPositionY; //垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。 int nZoom; //放大参数,范围[0,127],表示最小倍到最大倍的变倍位置 char szReserve[32]; //预留32字节 }PTZ_PRESET_UNIT; ///@brief 联动信息,保存其他设备传输的信息 typedef struct tagNET_LINK_INFO { UINT nLinkObjectID; // 联动物体ID UINT nLinkEventID; // 联动事件ID UINT nSpeedValue; // 联动物体速度,单位米/秒,扩大100倍 UINT nAlarmType; // 报警类型, 第0bit位表示是否超速(1表示超速,0表示未超速), 第1bit位表示是否AIS匹配, 第2bit位表示是否禁行, 第3bit位表示是否逆行 UINT nLongitude; // 联动物体经度,(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 UINT nLatitude; // 联动物体纬度,(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释 UINT nDistance; // 联动物体距离,单位米,扩大100倍 char szObjectType[16]; // 跟踪物体类型 NET_TIME_EX stuLinkRealUTC; // 外部设备(如雷达)识别到目标上报报警的真实UTC时间 char szResvered[176]; // 保留字节 }NET_LINK_INFO; ///@brief 事件类型EVENT_IVS_STAYDETECTION(停留事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_STAY_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_NUM]; // 检测到的物体 UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) BOOL bIsCompliant; // 该场景下是否合规 PTZ_PRESET_UNIT stPosition; // 预置点的坐标和放大倍数 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位:度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的垂直视场角,单位:度,实际角度乘以100 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_LINK_INFO stuLinkInfo; // 联动信息,保存其他设备传输的信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_BOAT_OBJECT* pstuBoatObject; // 船只物体信息 int nBoatObjectNum; // 船只物体信息个数 BYTE bReserved[620 - POINTERSIZE]; // 保留字节,留待扩展. } DEV_EVENT_STAY_INFO; ///@brief 坐标与放大倍数 typedef struct tagNET_POSTION { int nHorizontalCoordinate; // 水平坐标, 范围[0, 3599],表示0度到359.9度,度数扩大10倍表示。 int nVerticalCoordinate; // 垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。 int nMagnification; // 放大倍数, 范围[0,127],表示最小倍到最大倍的变倍位置 } NET_POSTION; ///@brief 事件类型EVENT_IVS_WANDERDETECTION(徘徊事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WANDER_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体 int nTrackNum; // 轨迹数(与检测到的物体个数对应) DH_POLY_POINTS stuTrackInfo[DH_MAX_OBJECT_LIST]; // 轨迹信息(与检测到的物体对应) int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 NET_POSTION stuPostion; // 坐标与放大倍数 char byReserved2[4]; // 字节对齐 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位:度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的垂直视场角,单位:度,实际角度乘以100 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE szReserved[402]; // 保留字节,留待扩展. } DEV_EVENT_WANDER_INFO; ///@brief 物体截图 typedef struct tagNET_OBJECT_IMAGE_INFO { unsigned int nOffSet; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位字节 unsigned int nWidth; // 图片宽度(像素) unsigned int nHeight; // 图片高度(像素) char szFilePath[260]; // 全景图片路径 UINT nIndexInData; //图片序号 BYTE byReserved[504]; // 预留字节 }NET_OBJECT_IMAGE_INFO; ///@brief 动物类型 typedef enum tagEM_ANINAL_CATEGORY { EM_ANINAL_CATEGORY_UNKNOWN, // 未知类型 EM_ANINAL_CATEGORY_PIG, // 猪 EM_ANINAL_CATEGORY_CAT, // 猫 EM_ANINAL_CATEGORY_DOG, // 狗 EM_ANINAL_CATEGORY_BIRD, // 鸟 EM_ANINAL_CATEGORY_GOLDEN_MONKEY, // 金丝猴 EM_ANINAL_CATEGORY_BLACK_BECKED_CRANE, // 黑颈鹤 EM_ANINAL_CATEGORY_RAT, // 老鼠 }EM_ANINAL_CATEGORY; ///@brief 运动状态 typedef enum tagENUM_MOTION_STATUS { ENUM_MOTION_STATUS_UNKNOWN, // 未知 ENUM_MOTION_STATUS_STATIC, // 静止 ENUM_MOTION_STATUS_MOVE, // 运动 }ENUM_MOTION_STATUS; ///@brief 区域内状态 typedef enum tagENUM_IN_REGION_STATUS { ENUM_IN_REGION_STATUS_UNKNOWN, // 未知 ENUM_IN_REGION_STATUS_YES, // 在区域内 ENUM_IN_REGION_STATUS_NO, // 不在区域内 }ENUM_IN_REGION_STATUS; ///@brief 视频分析物体(动物) typedef struct tagVA_OBJECT_ANIMAL { UINT nObjectID; // 物体ID, 每个ID表示一个唯一的物体 EM_ANINAL_CATEGORY emCategory; // 目标动物类型 NET_RECT stuBoundingBox; // 包围盒 动物对象在全景图中的框坐标,为0~8191相对坐标 UINT nObjectWeight; // 动物对象重量,单位:g NET_OBJECT_IMAGE_INFO stuImage; // 物体截图 ENUM_MOTION_STATUS emMoveStatus; // 运动状态 ENUM_IN_REGION_STATUS emInRegionStatus; // 区域内状态 int nResultType; // 结果类型 0-实时 1-非实时 BYTE bReserved[1024]; // 保留字节,留待扩展 }VA_OBJECT_ANIMAL; ///@brief 事件类型EVENT_IVS_MOVEDETECTION(移动事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_MOVE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 int nTrackLineNum; // 物体运动轨迹顶点数 DH_POINT stuTrackLine[DH_MAX_TRACK_LINE_NUM];// 物体运动轨迹 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 int nAnimalNum; // 动物个数 VA_OBJECT_ANIMAL *pstuAnimals; // 动物信息 int nMsgObjArrayCount; // 检测到的物体信息个数 DH_MSG_OBJECT_EX* pMsgObjArray; // 检测到的物体信息数组指针 int nImageNum; // 图片信息个数 NET_IMAGE_INFO_EX2* pImageArray; // 图片信息数组 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[236]; // 保留字节,留待扩展. } DEV_EVENT_MOVE_INFO; ///@brief 事件类型EVENT_IVS_TAILDETECTION(尾随事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TAIL_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_IMAGE_INFO_EX3 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[484-POINTERSIZE]; // 保留字节,留待扩展. } DEV_EVENT_TAIL_INFO; ///@brief 事件类型 EVENT_IVS_RIOTERDETECTION (聚众事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RIOTER_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体列表 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 缺省时为空字符串,表示无此信息 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[328]; // 保留字节,留待扩展. } DEV_EVENT_RIOTERL_INFO; ///@brief 动作类型 typedef enum tagEM_STEREO_ACTION_TYPE { EM_STEREO_ACTION_TYPE_UNKNOWN, // 未知 EM_STEREO_ACTION_TYPE_DRASTIC_MOTION, // 剧烈运动 EM_STEREO_ACTION_TYPE_SINGLE_FIGHT, // 单人打砸 EM_STEREO_ACTION_TYPE_MULTI_FIGHT, // 多人打架 }EM_STEREO_ACTION_TYPE; ///@brief 事件类型EVENT_IVS_FIGHTDETECTION(斗殴事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FIGHT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体列表 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 缺省时为空字符串,表示无此信息 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 EM_STEREO_ACTION_TYPE emActionType; // 动作类型 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[240]; // 保留字节,留待扩展. } DEV_EVENT_FIGHT_INFO; ///@brief 事件类型EVENT_IVS_GETOUTBEDDETECTION(下床事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GETOUTBED_INFO { /* 公共字段 */ int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ DH_MSG_OBJECT stuObject; // Object表示下床的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_GETOUTBED_INFO; ///@brief 事件类型EVENT_IVS_PATROLDETECTION(巡逻检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PATROL_INFO { /* 公共字段 */ int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ DH_MSG_OBJECT stuObject; // Object表示巡逻的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_PATROL_INFO; ///@brief 事件类型 EVENT_IVS_ONDUTYDETECTION(站岗检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ONDUTY_INFO { /* 公共字段 */ int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ DH_MSG_OBJECT stuObject; // Object表示巡逻的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_ONDUTY_INFO; ///@brief 事件类型 EVENT_IVS_ELECTROSPARKDETECTION(电火花事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTROSPARK_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[972]; // 保留字节,留待扩展. } DEV_EVENT_ELECTROSPARK_INFO; ///@brief 事件类型EVENT_IVS_FLOWSTAT(流量统计事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FLOWSTAT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nNumberLeft; // 从左边穿越的人的个数 int nNumberRight; // 从右边穿越的人的个数 int nUpperLimit; // 设置的上限 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON unsigned int nOccurrenceCount; // 事件触发累计次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[972]; // 保留字节,留待扩展. } DEV_EVENT_FLOWSTAT_INFO; ///@brief 表示人数越上限类型 typedef enum tagEM_NUMBER_STAT_TYPE { EM_NUMBERSTAT_TYPE_UNKNOWN, // 未知 EM_NUMBERSTAT_TYPE_ENTEROVER, // 进入 EM_NUMBERSTAT_TYPE_EXITOVER, // 退出 EM_NUMBERSTAT_TYPE_INSIDEOVER, // 在里面 EM_NUMBERSTAT_TYPE_PASSOVER, // 经过 }EM_NUMBER_STAT_TYPE; ///@brief 事件类型EVENT_IVS_NUMBERSTAT(数量统计事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_NUMBERSTAT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved2[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nNumber; // 区域内物体的个数 int nUpperLimit; // 设置的上限 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved1[2]; // 字节对齐 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nEnteredNumber; // 表示进入区域或者出入口的内物体的个数 int nExitedNumber; // 表示出来区域或者出入口的内物体的个数 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nAreaID; // 区域ID,一个预置点可以有多个区域ID BOOL bIsCompliant; // 该场景下是否合规 EM_NUMBER_STAT_TYPE emType; // 表示人数越上限类型 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nPassedNumber; // 经过区域物体的个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[800]; // 保留字节,留待扩展. } DEV_EVENT_NUMBERSTAT_INFO; ///@brief 事件类型EVENT_IVS_CROSSFENCEDETECTION(翻越围栏事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROSSFENCEDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nUpstairsLinePointNumber; // 围栏上边线顶点数 DH_POINT stuUpstairsLine[DH_MAX_DETECT_LINE_NUM]; // 围栏上边线信息 int nDownstairsLinePointNumber; // 围栏下边线顶点数 DH_POINT stuDownstairsLine[DH_MAX_DETECT_LINE_NUM]; // 围栏下边线信息 int nTrackLineNum; // 物体运动轨迹顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bDirection; // 表示入侵方向, 0-由左至右, 1-由右至左 BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[616]; // 保留字节,留待扩展. } DEV_EVENT_CROSSFENCEDETECTION_INFO; ///@brief 事件类型EVENT_IVS_INREGIONDETECTION(区域内检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_INREGIONDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体 int nTrackNum; // 轨迹数(与检测到的物体个数对应) DH_POLY_POINTS stuTrackInfo[DH_MAX_OBJECT_LIST]; // 轨迹信息(与检测到的物体对应) int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[1016]; // 保留字节,留待扩展. } DEV_EVENT_INREGIONDETECTION_INFO; ///@brief 事件类型EVENT_IVS_TAKENAWAYDETECTION(物品搬移事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TAKENAWAYDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[418]; // 保留字节,留待扩展. } DEV_EVENT_TAKENAWAYDETECTION_INFO; ///@brief 事件类型 EVENT_IVS_VIDEOABNORMALDETECTION(视频异常事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_VIDEOABNORMALDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bType; // 异常类型, 255-无意义(通常是设备了返回错误值)0-视频丢失, 1-视频冻结, 2-摄像头遮挡, 3-摄像头移动(场景变化), 4-过暗, 5-过亮, 6-图像偏色, 7-噪声干扰 // 8-条纹检测 , 9-视频模糊检测 , 10-对比度异常检测 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变 17-雪花噪声,18-无码流数据 BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图信息 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved2[1024]; // 保留字节 } DEV_EVENT_VIDEOABNORMALDETECTION_INFO; ///@brief 事件类型EVENT_IVS_PARKINGDETECTION(非法停车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PARKINGDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 char szCustomParkNo[64]; // 车位名称 NET_PRESET_POSITION stPosition; // 预置点的坐标和放大倍数 是一个数组,每个成员是int类型 // 第一个参数是水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示。 // 第二个参数是垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。 // 第三个参数是放大参数,范围[0,127],表示最小倍到最大倍的变倍位置 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的纵向视场角,单位度,实际角度乘以100 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 UINT nObjectBoatsNum; // 船只物体个数 NET_BOAT_OBJECT stuBoatObjects[100]; // 船只物品信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[400]; // 保留字节,留待扩展. } DEV_EVENT_PARKINGDETECTION_INFO; #define HDBJ_MAX_OBJECTS_NUM 200 // 检测到目标的最大个数 ///@brief 事件类型EVENT_IVS_SHOPPRESENCE(商铺占道经营事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SHOPPRESENCE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体,推荐使用字段stuObjects获取物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[DH_COMMON_STRING_64]; // 事件触发的预置点名称 EM_EVENT_LEVEL emEventLevel; // 事件级别 char szShopAddress[DH_COMMON_STRING_256]; // 商铺地址 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE byReserved2[2044-POINTERSIZE]; // 保留字节 } DEV_EVENT_SHOPPRESENCE_INFO; ///@brief 事件类型EVENT_IVS_WASTEDUMPED(垃圾违章倾倒事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WASTEDUMPED_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[DH_COMMON_STRING_64]; // 事件触发的预置点名称 EM_EVENT_LEVEL emEventLevel; // 事件级别 BYTE byReserved2[512]; // 保留字节,留待扩展. } DEV_EVENT_WASTEDUMPED_INFO; ///@brief 事件类型EVENT_IVS_ABNORMALRUNDETECTION(异常奔跑事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ABNORMALRUNDETECTION { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 double dbSpeed; // 物体运动速度,km/h double dbTriggerSpeed; // 触发速度,km/h int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nTrackLineNum; // 物体运动轨迹顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bRunType; // 异常奔跑类型, 0-快速奔跑, 1-突然加速, 2-突然减速 BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[604]; // 保留字节,留待扩展. } DEV_EVENT_ABNORMALRUNDETECTION_INFO; ///@brief 事件类型EVENT_IVS_RETROGRADEDETECTION(人员逆行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RETROGRADEDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nTrackLineNum; // 物体运动轨迹顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 int nDirectionPointNum; // 规则里规定的方向顶点数 DH_POINT stuDirections[DH_MAX_DETECT_LINE_NUM]; // 规则里规定的方向 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[604]; // 保留字节,留待扩展. } DEV_EVENT_RETROGRADEDETECTION_INFO; ///@brief 目标检测对应性别类型 typedef enum tagEM_DEV_EVENT_FACEDETECT_SEX_TYPE { EM_DEV_EVENT_FACEDETECT_SEX_TYPE_UNKNOWN, // 未知 EM_DEV_EVENT_FACEDETECT_SEX_TYPE_MAN, // 男性 EM_DEV_EVENT_FACEDETECT_SEX_TYPE_WOMAN, // 女性 }EM_DEV_EVENT_FACEDETECT_SEX_TYPE; ///@brief 姿态角数据 typedef struct tagNET_EULER_ANGLE { int nPitch; // 仰俯角 int nYaw; // 偏航角 int nRoll; // 翻滚角 } NET_EULER_ANGLE; ///@brief 目标抓拍角度范围 typedef struct tagNET_ANGEL_RANGE { int nMin; // 角度最小值 int nMax; // 角度最大值 } NET_ANGEL_RANGE; ///@brief 算法目标分析时的实际目标图片尺寸 typedef struct tagNET_FACE_ORIGINAL_SIZE { UINT nWidth; // 目标图片宽度 UINT nHeight; // 目标图片高 }NET_FACE_ORIGINAL_SIZE; ///@brief 目标数据 typedef struct tagNET_FACE_DATA { EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别 int nAge; // 年龄,-1表示该字段数据无效 unsigned int nFeatureValidNum; // 目标特征数组有效个数,与 emFeature 结合使用 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emFeature[DH_MAX_FACEDETECT_FEATURE_NUM]; // 目标特征数组,与 nFeatureValidNum 结合使用 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值 BYTE bReserved1[4]; // 保留字节 NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 UINT nFaceQuality; // 目标抓拍质量分数 int nFaceAlignScore; // 目标对齐得分分数,范围 0~10000,-1为无效值 int nFaceClarity; // 目标清晰度分数,范围 0~10000,-1为无效值 double dbTemperature; // 温度, bAnatomyTempDetect 为TRUE时有效 BOOL bAnatomyTempDetect; // EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位, bAnatomyTempDetect 为TRUE时有效 BOOL bIsOverTemp; // bAnatomyTempDetect 为TRUE时有效 BOOL bIsUnderTemp; // bAnatomyTempDetect 为TRUE时有效 NET_FACE_ORIGINAL_SIZE stuOriginalSize; // 算法目标分析时的实际目标图片尺寸, 宽高为0时无效 EM_GLASS_STATE_TYPE emGlass; // 戴眼镜状态 BYTE bReserved[64]; // 保留字节,留待扩展. } NET_FACE_DATA; ///@brief 存储IVSS项目招行VIP需求,特征值信息 typedef struct tagNET_FEATURE_VECTOR { DWORD dwOffset; // 目标小图特征值在二进制数据块中的偏移 DWORD dwLength; // 目标小图特征值长度,单位:字节 BOOL bFeatureEnc; // 标识特征值是否加密 BYTE byReserved[116]; // 保留 }NET_FEATURE_VECTOR; ///@brief 目标在摄像机画面中的状态 typedef enum tagEM_FACE_DETECT_STATUS { EM_FACE_DETECT_UNKNOWN, // 未知 EM_FACE_DETECT_APPEAR, // 出现 EM_FACE_DETECT_INPICTURE, // 在画面中 EM_FACE_DETECT_EXIT, // 离开 } EM_FACE_DETECT_STATUS; ///@brief 路人信息 typedef struct tagNET_PASSERBY_INFO { char szPasserbyUID[MAX_COMMON_STRING_32]; // 路人唯一标识符 char szPasserbyGroupId[MAX_COMMON_STRING_64]; // 路人库ID char szPasserbyGroupName[MAX_COMMON_STRING_128]; // 路人库名称 BYTE byReserved[128]; // 保留 } NET_PASSERBY_INFO; ///@brief 目标比对事件触发对应球机信息 typedef struct tagNET_FACECOMPARISON_PTZ_INFO { char szPresetName[64]; // 球机抓拍到目标时预置点名称 DWORD dwPresetNumber; // 球机抓拍到目标时预置点编号 BYTE byReserved1[4]; // 字节对齐 BYTE byReserved[256]; // 保留字节 }NET_FACECOMPARISON_PTZ_INFO; ///@brief 项目定制信息 typedef struct tagNET_CUSTOM_PROJECTS_INFO { NET_GPS_INFO stuGPSInfo; // GPS位置信息 NET_FACECOMPARISON_PTZ_INFO stuFaceComparisonPTZInfo; // 目标比对事件触发对应球机信息 char szPlateNumber[64]; // 目标比对时车牌信息 BOOL bIsAlarm; // 是否报警 int nStayEvent; // 滞留类型 0-未知 1-基础滞留 2-异常滞留 int nWanderEvent; // 徘徊类型 0-未知 1-基础徘徊 2-异常徘徊 BYTE byReserved[1012]; // 保留字节 }NET_CUSTOM_PROJECTS_INFO; ///@brief 事件类型EVENT_IVS_FACERECOGNITION(目标识别)对应的数据块描述信息 typedef struct tagDEV_EVENT_FACERECOGNITION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 DH_MSG_OBJECT stuObject; // 检测到的物体 int nCandidateNum; // 当前目标匹配到的候选对象数量 CANDIDATE_INFO stuCandidates[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; // 对齐 BOOL bGlobalScenePic; // 全景图是否存在 DH_PIC_INFO stuGlobalScenePicInfo; // 全景图片信息 char szSnapDevAddress[MAX_PATH]; // 抓拍当前目标的设备地址,如:滨康路37号 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_FACE_DATA stuFaceData; // 目标数据 char szUID[DH_COMMON_STRING_32]; // 抓拍人员写入数据库的唯一标识符 NET_FEATURE_VECTOR stuFeatureVector; // 特征值信息 char szFeatureVersion[32]; // 特征值算法版本 EM_FACE_DETECT_STATUS emFaceDetectStatus; // 目标在摄像机画面中的状态 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 NET_PASSERBY_INFO stuPasserbyInfo; // 路人库信息 unsigned int nStayTime; // 路人逗留时间 单位:秒 NET_GPS_INFO stuGPSInfo; // GPS信息(与 stuCustomProjects下的 stuGPSInfo信息一致) char szCameraID[64]; // 国标编码 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 int nPerFlag; // ICC目标子系统定制, 目标标签标志位, -1:未知, 0:授权目标, 1:未授权目标, 2:陌生人 BYTE bReserved[360]; // 保留字节,留待扩展. int nRetCandidatesExNum; // 当前目标匹配到的候选对象数量实际返回值 CANDIDATE_INFOEX stuCandidatesEx[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息扩展 char szSerialUUID[22]; // 级联物体ID唯一标识 // 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他; // 中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001 BYTE byReserved[2]; // 对齐 NET_CUSTOM_PROJECTS_INFO stuCustomProjects; // 项目定制信息 BOOL bIsDuplicateRemove; // 智慧零售,是否符合去重策略(TRUE:符合 FALSE:不符合) BYTE byReserved2[4]; // 字节对齐 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 DH_MSG_OBJECT_SUPPLEMENT stuObjectSupplement; // 检测到的物体补充字段 UINT nMode; // 0-普通 1-开启陌生人模式 SCENE_IMAGE_INFO stuThumImageInfo; // 大图(全景图)的缩略图信息 SCENE_IMAGE_INFO stuHumanImageInfo; // 人体图片信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 BOOL bIsHighFrequencyAlarm; // 是否是高频次报警 char szFrequencyAlarmName[32]; // 频次报警名称, 当bIsHighFrequencyAlarm字段值为TRUE时才有效,表示高频次报警名称 double PTS; // 时间戳(单位是毫秒) char byReserved3[272]; // 保留字节 }DEV_EVENT_FACERECOGNITION_INFO; ///@brief 事件类型EVENT_IVS_DENSITYDETECTION(人员密度检测)对应数据块描述信息 typedef struct tagDEV_EVENT_DENSITYDETECTTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体列表 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 int nUnit; // 密度检测数值单位(0-Level,1-Percent) int nValue; // 密度值,单位为Level时,取值0~3,分别表示(很稀疏,稀疏,密集,很密集)单位为Percent时,取值0~100 BYTE bReserved[612]; // 保留字节,留待扩展. }DEV_EVENT_DENSITYDETECTION_INFO; ///@brief 事件类型 EVENT_IVS_QUEUEDETECTION(排队检测报警事件)对应数据块描述信息 typedef struct tagDEV_EVENT_QUEUEDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved2[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved1[2]; // 保留字节,留待扩展. BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DH_POINT stuDetectLine[2]; // 规则检测线 unsigned int nOccurrenceCount; // 事件触发累计次数 BYTE bReserved[1012]; // 保留字节,留待扩展. }DEV_EVENT_QUEUEDETECTION_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICCONTROL(交通管理事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICCONTROL_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[932]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFICCONTROL_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICACCIDENT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体列表 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo; // 交通车辆部分信息 UINT nLane; // 车道号 BYTE bReserved[460]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFICACCIDENT_INFO; #define DH_EVENT_MAX_CARD_NUM 16 // 事件上报信息包含最大卡片个数 #define DH_EVENT_CARD_LEN 36 // 卡片名称长度 ///@brief 事件上报携带卡片信息 typedef struct tagEVENT_CARD_INFO { char szCardNumber[DH_EVENT_CARD_LEN]; // 卡片序号字符串 BYTE bReserved[32]; // 保留字节,留待扩展. }EVENT_CARD_INFO; ///@brief 开闸状态类型 typedef enum tagEM_OPEN_STROBE_STATE { NET_OPEN_STROBE_STATE_UNKOWN, // 未知状态 NET_OPEN_STROBE_STATE_CLOSE, // 关闸 NET_OPEN_STROBE_STATE_AUTO, // 自动开闸 NET_OPEN_STROBE_STATE_MANUAL, // 手动开闸 }EM_OPEN_STROBE_STATE; ///@brief NTP校时状态 typedef enum tagEM_NTP_STATUS { NET_NTP_STATUS_UNKNOWN = 0 , NET_NTP_STATUS_DISABLE , NET_NTP_STATUS_SUCCESSFUL , NET_NTP_STATUS_FAILED , }EM_NTP_STATUS; #define COMMON_SEAT_MAX_NUMBER 8 // 默认检测最大座驾个数 ///@brief 座驾类型 typedef enum tagEM_COMMON_SEAT_TYPE { COMMON_SEAT_TYPE_UNKNOWN = 0, // 未识别 COMMON_SEAT_TYPE_MAIN = 1, // 主驾驶 COMMON_SEAT_TYPE_SLAVE = 2, // 副驾驶 }EM_COMMON_SEAT_TYPE; ///@brief 违规状态 typedef struct tagEVENT_COMM_STATUS { BYTE bySmoking; // 是否抽烟, 0:未知, 1:抽烟, 2:未抽烟 BYTE byCalling; // 是否打电话, 0:未知, 1:打电话, 2:未打电话 char szReserved[14]; // 预留字段 }EVENT_COMM_STATUS; ///@brief 安全带状态 typedef enum tagNET_SAFEBELT_STATE { SS_NUKNOW = 0 , //未知 SS_WITH_SAFE_BELT , //已系安全带 SS_WITHOUT_SAFE_BELT , //未系安全带 }NET_SAFEBELT_STATE; ///@brief 遮阳板状态 typedef enum tagNET_SUNSHADE_STATE { SS_NUKNOW_SUN_SHADE = 0 , // 未知 SS_WITH_SUN_SHADE, // 有遮阳板 SS_WITHOUT_SUN_SHADE, // 无遮阳板 }NET_SUNSHADE_STATE; ///@brief 打电话的动作类型 typedef enum tagEM_CALL_ACTION_TYPE { EM_CALL_ACTION_TYPE_UNKNOWN, // 未知 EM_CALL_ACTION_TYPE_CALL_BY_EAR, // 贴耳 EM_CALL_ACTION_TYPE_CALL_HAND_HOLD, // 手持 }EM_CALL_ACTION_TYPE; ///@brief 驾驶位违规信息 typedef struct tagEVENT_COMM_SEAT { BOOL bEnable; // 是否检测到座驾信息 EM_COMMON_SEAT_TYPE emSeatType; // 座驾类型, 0:未识别; 1:主驾驶; 2:副驾驶 EVENT_COMM_STATUS stStatus; // 违规状态 NET_SAFEBELT_STATE emSafeBeltStatus; // 安全带状态 NET_SUNSHADE_STATE emSunShadeStatus; // 遮阳板状态 EM_CALL_ACTION_TYPE emCallAction; // 打电话动作 UINT nSafeBeltConf; // 安全带确信度 UINT nPhoneConf; // 打电话置信度 UINT nSmokeConf; // 抽烟置信度 char szReserved[8]; // 预留字节 }EVENT_COMM_SEAT; ///@brief 车辆物件类型 typedef enum tagEM_COMM_ATTACHMENT_TYPE { COMM_ATTACHMENT_TYPE_UNKNOWN = 0, // 未知类型 COMM_ATTACHMENT_TYPE_FURNITURE = 1, // 摆件 COMM_ATTACHMENT_TYPE_PENDANT = 2, // 挂件 COMM_ATTACHMENT_TYPE_TISSUEBOX = 3, // 纸巾盒 COMM_ATTACHMENT_TYPE_DANGER = 4, // 危险品 COMM_ATTACHMENT_TYPE_PERFUMEBOX = 5, // 香水 }EM_COMM_ATTACHMENT_TYPE; ///@brief 车辆物件 typedef struct tagEVENT_COMM_ATTACHMENT { EM_COMM_ATTACHMENT_TYPE emAttachmentType; // 物件类型 NET_RECT stuRect; // 坐标 UINT nConf; // 置信度 BYTE bReserved[16]; // 预留字节 }EVENT_COMM_ATTACHMENT; ///@brief 交通抓图图片信息 typedef struct tagEVENT_PIC_INFO { DWORD nOffset; // 原始图片偏移,单位字节 DWORD nLength; // 原始图片长度,单位字节 UINT nIndexInData; // 在上传图片数据中的图片序号 }EVENT_PIC_INFO; ///@brief 收费站车型分类 typedef enum tagEM_VEHICLE_TYPE { EM_VEHICLE_TYPE_UNKNOWN, // 未知 EM_VEHICLE_TYPE_PASSENGERCAR1, // 客1 EM_VEHICLE_TYPE_TRUCK1, // 货1 EM_VEHICLE_TYPE_PASSENGERCAR2, // 客2 EM_VEHICLE_TYPE_TRUCK2, // 货2 EM_VEHICLE_TYPE_PASSENGERCAR3, // 客3 EM_VEHICLE_TYPE_TRUCK3, // 货3 EM_VEHICLE_TYPE_PASSENGERCAR4, // 客4 EM_VEHICLE_TYPE_TRUCK4, // 货4 EM_VEHICLE_TYPE_PASSENGERCAR5, // 客5 EM_VEHICLE_TYPE_TRUCK5, // 货5 }EM_VEHICLE_TYPE; ///@brief 抓拍的类型 typedef enum tagEM_SNAPCATEGORY { EM_SNAPCATEGORY_MOTOR, // 机动车 EM_SNAPCATEGORY_NONMOTOR, // 非机动车 }EM_SNAPCATEGORY; ///@brief 标准车辆类型 typedef enum tagEM_STANDARD_VEHICLE_TYPE { EM_STANDARD_VEHICLE_UNKNOWN, // 未知 EM_STANDARD_VEHICLE_MOTOR, // 机动车 EM_STANDARD_VEHICLE_BUS, // 公交车 EM_STANDARD_VEHICLE_UNLICENSED_MOTOR, // 无牌机动车 EM_STANDARD_VEHICLE_LARGE_CAR, // 大型汽车 EM_STANDARD_VEHICLE_MICRO_CAR, // 小型汽车 EM_STANDARD_VEHICLE_EMBASSY_CAR, // 使馆汽车 EM_STANDARD_VEHICLE_MARGINAL_CAR, // 领馆汽车 EM_STANDARD_VEHICLE_AREAOUT_CAR, // 境外汽车 EM_STANDARD_VEHICLE_FOREIGN_CAR, // 外籍汽车 EM_STANDARD_VEHICLE_FARM_TRANS_CAR, // 农用运输车 EM_STANDARD_VEHICLE_TRACTOR, // 拖拉机 EM_STANDARD_VEHICLE_TRAILER, // 挂车 EM_STANDARD_VEHICLE_COACH_CAR, // 教练汽车 EM_STANDARD_VEHICLE_TRIAL_CAR, // 试验汽车 EM_STANDARD_VEHICLE_TEMPORARYENTRY_CAR, // 临时入境汽车 EM_STANDARD_VEHICLE_TEMPORARYENTRY_MOTORCYCLE, // 临时入境摩托 EM_STANDARD_VEHICLE_TEMPORARY_STEER_CAR, // 临时行驶车 EM_STANDARD_VEHICLE_LARGE_TRUCK, // 大货车 EM_STANDARD_VEHICLE_MID_TRUCK, // 中货车 EM_STANDARD_VEHICLE_MICRO_TRUCK, // 小货车 EM_STANDARD_VEHICLE_MICROBUS, // 面包车 EM_STANDARD_VEHICLE_SALOON_CAR, // 轿车 EM_STANDARD_VEHICLE_CARRIAGE, // 小轿车 EM_STANDARD_VEHICLE_MINI_CARRIAGE, // 微型轿车 EM_STANDARD_VEHICLE_SUV_MPV, // SUV或者MPV EM_STANDARD_VEHICLE_SUV, // SUV EM_STANDARD_VEHICLE_MPV, // MPV EM_STANDARD_VEHICLE_PASSENGER_CAR, // 客车 EM_STANDARD_VEHICLE_MOTOR_BUS, // 大客车 EM_STANDARD_VEHICLE_MID_PASSENGER_CAR, // 中客车 EM_STANDARD_VEHICLE_MINI_BUS, // 小客车 EM_STANDARD_VEHICLE_PICKUP, // 皮卡车 EM_STANDARD_VEHICLE_OILTANK_TRUCK, // 油罐车 } EM_STANDARD_VEHICLE_TYPE; ///@brief 雷达检测车型 typedef enum tagEM_RADAR_DETECTION_VEHICLE_TYPE { EM_RADAR_DETECTION_VEHICLE_TYPE_UNKNOWN, // 未知 EM_RADAR_DETECTION_VEHICLE_TYPE_MID_PASSENGER_CAR, // 中小客车 EM_RADAR_DETECTION_VEHICLE_TYPE_MOTOR_BUS, // 大客车 EM_RADAR_DETECTION_VEHICLE_TYPE_MICRO_TRUCK, // 小货车 EM_RADAR_DETECTION_VEHICLE_TYPE_MID_TRUCK, // 中型货车 EM_RADAR_DETECTION_VEHICLE_TYPE_LARGE_TRUCK, // 大型货车 EM_RADAR_DETECTION_VEHICLE_TYPE_SUPER_TRUCK, // 特大货车 EM_RADAR_DETECTION_VEHICLE_TYPE_CONTAINER_CAR, // 集装箱车 EM_RADAR_DETECTION_VEHICLE_TYPE_MOTORCYCLE, // 摩托车 EM_RADAR_DETECTION_VEHICLE_TYPE_TRACTOR, // 拖拉机 }EM_RADAR_DETECTION_VEHICLE_TYPE; ///@brief 车辆类型中的子类别,一个车辆只能是子类型的某一种。 typedef enum tagEM_OVERSEA_VEHICLE_CATEGORY_TYPE { EM_OVERSEA_VEHICLE_CATEGORY_UNKNOWN, // 未知 EM_OVERSEA_VEHICLE_CATEGORY_MOTORCYCLE, //摩托车 EM_OVERSEA_VEHICLE_CATEGORY_LIGHT_GOODS_VEHICLE, //轻型货车 EM_OVERSEA_VEHICLE_CATEGORY_COMPANY_VEHICLE, //公司用私家车 EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_VEHICLE, //个人用私家车 EM_OVERSEA_VEHICLE_CATEGORY_TAXI, //TAXI或者快线车 EM_OVERSEA_VEHICLE_CATEGORY_TRAILER, //拖车 EM_OVERSEA_VEHICLE_CATEGORY_ENGINEERING_PLANT_VEHICLE, //工程车 EM_OVERSEA_VEHICLE_CATEGORY_VERY_HEAVY_GOODS_VEHICLE, //超大货车 EM_OVERSEA_VEHICLE_CATEGORY_HEAVY_GOODS_VEHICLE, //大货车 EM_OVERSEA_VEHICLE_CATEGORY_PUBLIC_BUS, //公共BUS EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_BUS, //私营BUS EM_OVERSEA_VEHICLE_CATEGORY_SPECIAL_VEHICLE, //特殊车辆 }EM_OVERSEA_VEHICLE_CATEGORY_TYPE; ///@brief 物体在雷达坐标系中的信息 typedef struct tagNET_EVENT_RADAR_INFO { float fCoordinateX; // X轴坐标(横向距离),单位:米 float fCoordinateY; // Y轴坐标(纵向距离),单位:米 float fAccelerationX; // 雷达目标横向加速度ax, 横向指设备视角的右手方向; 数据为正表示车辆加速, 数据为负表示车辆减速; 单位为m/s2 float fAccelerationY; // 雷达目标纵向加速度ay,纵向指设备视角的正前方向;数据为正表示车辆加速,数据为负表示车辆减速;单位为m/s2 BYTE bReserved[16]; // 预留字节 }NET_EVENT_RADAR_INFO; ///@brief 触发事件时物体的GPS信息 typedef struct tagNET_EVENT_GPS_INFO { double dLongitude; // 经度,单位:度,正为东经,负为西经,取值范围[-180,180] double dLatitude; // 纬度,单位:度,正为北纬,负为南纬,取值范围[-90,90] BYTE bReserved[24]; // 预留字节 }NET_EVENT_GPS_INFO; ///@brief 辅车牌信息 typedef struct tagNET_EXTRA_PLATES { UINT nOffset; // 车牌图片在二进制数据内偏移,单位字节 UINT nLength; // 车牌图片长度,单位字节 char szText[64]; // 辅车牌号码,UTF8格式 EM_NET_PLATE_TYPE emCategory; // 车牌类型 EM_NET_PLATE_COLOR_TYPE emColor; // 车牌颜色 NET_RECT stuArea; // 辅车牌的包围盒,坐标已算上黑边高度车牌矩形框,绝对坐标,即真正的像素点坐标 char bReserved[32]; // 预留字节 }NET_EXTRA_PLATES; ///@brief 公共信息 typedef struct tagEVENT_COMM_INFO { EM_NTP_STATUS emNTPStatus; // NTP校时状态 int nDriversNum; // 驾驶员信息数 DH_MSG_OBJECT_EX *pstDriversInfo; // 驾驶员信息数据 char* pszFilePath; // 本地硬盘或者sd卡成功写入路径,为NULL时,路径不存在 char* pszFTPPath; // 设备成功写到ftp服务器的路径 char* pszVideoPath; // 当前接入需要获取当前违章的关联视频的FTP上传路径 EVENT_COMM_SEAT stCommSeat[COMMON_SEAT_MAX_NUMBER]; // 驾驶位信息 int nAttachmentNum; // 车辆物件个数 EVENT_COMM_ATTACHMENT stuAttachment[NET_MAX_ATTACHMENT_NUM]; // 车辆物件信息 int nAnnualInspectionNum; // 年检标志个数 NET_RECT stuAnnualInspection[NET_MAX_ANNUUALINSPECTION_NUM]; // 年检标志 float fHCRatio; // HC所占比例,单位:%/1000000 float fNORatio; // NO所占比例,单位:%/1000000 float fCOPercent; // CO所占百分比,单位:% 取值0~100 float fCO2Percent; // CO2所占百分比,单位:% 取值0~100 float fLightObscuration; // 不透光度,单位:% 取值0~100 int nPictureNum; // 原始图片张数 EVENT_PIC_INFO stuPicInfos[NET_MAX_EVENT_PIC_NUM]; // 原始图片信息 float fTemperature; // 温度值,单位摄氏度 int nHumidity; // 相对湿度百分比值 float fPressure; // 气压值,单位Kpa float fWindForce; // 风力值,单位m/s UINT nWindDirection; // 风向,单位度,范围:[0,360] float fRoadGradient; // 道路坡度值,单位度 float fAcceleration; // 加速度值,单位:m/s2 NET_RFIDELETAG_INFO stuRFIDEleTagInfo; // RFID 电子车牌标签信息 EVENT_PIC_INFO stuBinarizedPlateInfo; // 二值化车牌抠图 EVENT_PIC_INFO stuVehicleBodyInfo; // 车身特写抠图 EM_VEHICLE_TYPE emVehicleTypeInTollStation; // 收费站车型分类 EM_SNAPCATEGORY emSnapCategory; // 抓拍的类型,默认为机动车 int nRegionCode; // 车牌所属地区代码,默认-1表示未识别 EM_VEHICLE_TYPE_BY_FUNC emVehicleTypeByFunc; // 按功能划分的车辆类型 EM_STANDARD_VEHICLE_TYPE emStandardVehicleType; // 标准车辆类型 UINT nExtraPlateCount; // 额外车牌数量 char szExtraPlateNumber[3][32]; // 额外车牌信息 EM_OVERSEA_VEHICLE_CATEGORY_TYPE emOverseaVehicleCategory; // 海外车辆类型中的子类别 char szProvince[64]; // 车牌所属国家的省、州等地区名 NET_EVENT_RADAR_INFO stuRadarInfo; // 物体在雷达坐标系中的信息,单位:米,设备视角:右手方向为X轴正向,正前方为Y轴正向 NET_EVENT_GPS_INFO stuGPSInfo; // 触发事件时物体的GPS信息 NET_EXTRA_PLATES stuExtraPlates[2]; // 辅车牌信息,某些国家或地区一车多牌 int nExtraPlatesCount; // 辅车牌有效个数 UINT nPlateRecogniseConf; //车牌识别置信度 UINT nVecPostureConf; //车辆姿态置信度 UINT nVecColorConf; //车身颜色置信度 UINT nSpecialVehConf; //特殊车辆识别结果置信度 UINT nIsLargeAngle; //机动车是否为大角度 UINT nIsRelatedPlate; //当前机动车车身是否曾经关联车牌 UINT nDetectConf; //机动车检测置信度 UINT nClarity; //机动车清晰度分值 UINT nCompleteScore; //机动车完整度评分 UINT nQeScore; //机动车优选分数 float fSpeedFloat; // 浮点型速度值,单位km/h double dbHeadingAngle; // 航向角, 以正北方向为基准输出车辆运动方向同正北方向的角度; 范围 0~360,顺时针正,单位为度; UINT nDriverNum; // 车辆前排驾驶室人员数量 BYTE bReserved[112]; // 预留字节 char szCountry[20]; // 国家 }EVENT_COMM_INFO; ///@brief 温度单位 typedef enum tagEM_TEMPERATURE_UNIT { EM_TEMPERATURE_UNKNOWN = -1, // 未知 EM_TEMPERATURE_CENTIGRADE, // 摄氏度 EM_TEMPERATURE_FAHRENHEIT, // 华氏度 EM_TEMPERATURE_KELVIN, // 开尔文 } EM_TEMPERATURE_UNIT; ///@brief 建委地磅定制称重信息 typedef struct tagEVENT_CUSTOM_WEIGHT_INFO { DWORD dwRoughWeight; // 毛重,车辆满载货物重量。单位KG DWORD dwTareWeight; // 皮重,空车重量。单位KG DWORD dwNetWeight; // 净重,载货重量。单位KG BYTE bReserved[28]; // 预留字节 }EVENT_CUSTOM_WEIGHT_INFO; ///@brief 雷达自由流信息 typedef struct tagNET_RADAR_FREE_STREAM { TP_U64 nABSTime; // 1年1月1日0时起至今的毫秒数 int nVehicleID; // 车辆ID UINT unOBUMAC; // OBU的MAC地址 }NET_RADAR_FREE_STREAM; ///@brief 测温信息 typedef struct tagNET_CUSTOM_MEASURE_TEMPER { float fLeft; // 车辆左侧温度值 float fRight; // 车辆右侧温度值 float fHead; // 车辆发动机位置温度值 (车头) EM_TEMPERATURE_UNIT emUnit; // 温度单位 }NET_CUSTOM_MEASURE_TEMPER; ///@brief 卡口事件专用定制上报内容,定制需求增加到Custom下 typedef struct tagEVENT_JUNCTION_CUSTOM_INFO { EVENT_CUSTOM_WEIGHT_INFO stuWeightInfo; // 原始图片信息 DWORD nCbirFeatureOffset; // 数据偏移,单位字节 (由于结构体保留字节有限的限制,添加在此处, 下同) DWORD nCbirFeatureLength; // 数据大小,单位字节 DWORD dwVehicleHeadDirection; // 车头朝向 0:未知 1:左 2:中 3:右 UINT nAvailableSpaceNum; // 停车场车位余位数量 NET_RADAR_FREE_STREAM stuRadarFreeStream; // 雷达自由流信息 NET_CUSTOM_MEASURE_TEMPER stuMeasureTemper; // 测温信息 BOOL bCbirFeatureEnc; // 标识车身特征值是否加密 UINT nRadarTriggerLineNo; // 雷达触发线序号上报 1 :触发线1, 2 :触发线2, 0 : 未知 BYTE bReserved[4]; // 预留字节 }EVENT_JUNCTION_CUSTOM_INFO; ///@brief 驾驶位信息 typedef struct tagNET_SEAT_INFO { NET_RECT stuFaceRect; // 目标矩形框信息(8192坐标系) BYTE bySunShade; // 遮阳板状态 0: 未知 1:无遮阳板 2:有遮阳板 BYTE byDriverCalling; // 打电话状态 0: 未知 1:未打电话 2:打电话 BYTE byDriverSmoking; // 抽烟状态 0: 未知 1:未吸烟 2:吸烟 BYTE bySafeBelt; // 安全带状态 0: 未知 1:未系安全带 2:系安全带 BYTE byReserved[32]; // 保留字节 }NET_SEAT_INFO; ///@brief 车上附件 typedef struct tagNET_VEHICLE_ATTACH { int nType; // 附件类型 0-未知 1-年检标志 2-挂件 3-纸巾盒 4-香水盒 NET_RECT stuBoundingBox; // 包围盒信息(8192坐标系) BYTE byReserved[32]; }NET_VEHICLE_ATTACH; ///@brief 目标全景图 typedef struct tagFACE_SCENE_IMAGE { unsigned int nOffSet; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位字节 unsigned int nWidth; // 图片宽度(像素) unsigned int nHeight; // 图片高度(像素) UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[52]; // 预留字节 } FACE_SCENE_IMAGE; ///@brief 颜色类型 typedef enum tagEM_OBJECT_COLOR_TYPE { EM_OBJECT_COLOR_TYPE_UNKNOWN, // 未知 EM_OBJECT_COLOR_TYPE_WHITE, // 白色 EM_OBJECT_COLOR_TYPE_ORANGE, // 橙色 EM_OBJECT_COLOR_TYPE_PINK, // 粉色 EM_OBJECT_COLOR_TYPE_BLACK, // 黑色 EM_OBJECT_COLOR_TYPE_RED, // 红色 EM_OBJECT_COLOR_TYPE_YELLOW, // 黄色 EM_OBJECT_COLOR_TYPE_GRAY, // 灰色 EM_OBJECT_COLOR_TYPE_BLUE, // 蓝色 EM_OBJECT_COLOR_TYPE_GREEN, // 绿色 EM_OBJECT_COLOR_TYPE_PURPLE, // 紫色 EM_OBJECT_COLOR_TYPE_BROWN, // 棕色 EM_OBJECT_COLOR_TYPE_SLIVER, // 银色 EM_OBJECT_COLOR_TYPE_DARKVIOLET, // 暗紫罗兰色 EM_OBJECT_COLOR_TYPE_MAROON, // 栗色 EM_OBJECT_COLOR_TYPE_DIMGRAY, // 暗灰色 EM_OBJECT_COLOR_TYPE_WHITESMOKE, // 白烟色 EM_OBJECT_COLOR_TYPE_DARKORANGE, // 深橙色 EM_OBJECT_COLOR_TYPE_MISTYROSE, // 浅玫瑰色 EM_OBJECT_COLOR_TYPE_TOMATO, // 番茄红色 EM_OBJECT_COLOR_TYPE_OLIVE, // 橄榄色 EM_OBJECT_COLOR_TYPE_GOLD, // 金色 EM_OBJECT_COLOR_TYPE_DARKOLIVEGREEN, // 暗橄榄绿色 EM_OBJECT_COLOR_TYPE_CHARTREUSE, // 黄绿色 EM_OBJECT_COLOR_TYPE_GREENYELLOW, // 绿黄色 EM_OBJECT_COLOR_TYPE_FORESTGREEN, // 森林绿色 EM_OBJECT_COLOR_TYPE_SEAGREEN, // 海洋绿色 EM_OBJECT_COLOR_TYPE_DEEPSKYBLUE, // 深天蓝色 EM_OBJECT_COLOR_TYPE_CYAN, // 青色 EM_OBJECT_COLOR_TYPE_OTHER, // 无法识别 }EM_OBJECT_COLOR_TYPE; ///@brief 是否带眼镜 typedef enum tagEM_HAS_GLASS { EM_HAS_GLASS_UNKNOWN, // 未知 EM_HAS_GLASS_NO, // 未戴 EM_HAS_GLASS_NORMAL, // 戴普通眼镜 EM_HAS_GLASS_SUN, // 戴太阳眼镜 EM_HAS_GLASS_BLACK, // 戴黑框眼镜 } EM_HAS_GLASS; ///@brief 事件/物体状态 typedef enum tagEM_NONMOTOR_OBJECT_STATUS { EM_NONMOTOR_OBJECT_STATUS_UNKNOWN, // 未识别 EM_NONMOTOR_OBJECT_STATUS_NO, // 否 EM_NONMOTOR_OBJECT_STATUS_YES, // 是 }EM_NONMOTOR_OBJECT_STATUS; ///@brief 表情 typedef enum tagEM_EMOTION_TYPE { EM_EMOTION_TYPE_UNKNOWN, // 未知 EM_EMOTION_TYPE_NORMAL, // 普通/正常 EM_EMOTION_TYPE_SMILE, // 微笑 EM_EMOTION_TYPE_ANGER, // 愤怒 EM_EMOTION_TYPE_SADNESS, // 悲伤 EM_EMOTION_TYPE_DISGUST, // 厌恶 EM_EMOTION_TYPE_FEAR, // 害怕 EM_EMOTION_TYPE_SURPRISE, // 惊讶 EM_EMOTION_TYPE_NEUTRAL, // 正常 EM_EMOTION_TYPE_LAUGH, // 大笑 EM_EMOTION_TYPE_HAPPY, // 高兴 EM_EMOTION_TYPE_CONFUSED, // 困惑 EM_EMOTION_TYPE_SCREAM, // 尖叫 EM_EMOTION_TYPE_CALMNESS, // 平静 }EM_EMOTION_TYPE; ///@brief 衣类型 typedef enum tagEM_CLOTHES_TYPE { EM_CLOTHES_TYPE_UNKNOWN, //未知 EM_CLOTHES_TYPE_LONG_SLEEVE, //长袖 EM_CLOTHES_TYPE_SHORT_SLEEVE, //短袖 EM_CLOTHES_TYPE_TROUSERS, //长裤 EM_CLOTHES_TYPE_SHORTS, //短裤 EM_CLOTHES_TYPE_SKIRT, //裙子 EM_CLOTHES_TYPE_WAISTCOAT, //背心 EM_CLOTHES_TYPE_MINIPANTS, //超短裤 EM_CLOTHES_TYPE_MINISKIRT, //超短裙 }EM_CLOTHES_TYPE; ///@brief 新上衣类型 typedef enum tagEM_NEWUPCLOTHES_TYPE { EM_NEWUPCLOTHES_TYPE_UNKNOWN, //未知 EM_NEWUPCLOTHES_TYPE_LONG_SLEEVE, //长袖 EM_NEWUPCLOTHES_TYPE_SHORT_SLEEVE, //短袖 EM_NEWUPCLOTHES_TYPE_LONGCOAT, //长款大衣 EM_NEWUPCLOTHES_TYPE_JACKET_AND_JEANS, //夹克及牛仔服 EM_NEWUPCLOTHES_TYPE_TSHIRT, //T恤 EM_NEWUPCLOTHES_TYPE_SPORTWEAR, //运动装 EM_NEWUPCLOTHES_TYPE_DOWNJACKETS, //羽绒服 EM_NEWUPCLOTHES_TYPE_SHIRT, //衬衫 EM_NEWUPCLOTHES_TYPE_DRESS, //连衣裙 EM_NEWUPCLOTHES_TYPE_SUIT, //西装 EM_NEWUPCLOTHES_TYPE_SWEATER, //毛衣 EM_NEWUPCLOTHES_TYPE_SLEEVELESS, //无袖 EM_NEWUPCLOTHES_TYPE_VEST, //背心 }EM_NEWUPCLOTHES_TYPE; ///@brief 新下衣类型 typedef enum tagEM_NEWDOWNCLOTHES_TYPE { EM_NEWDOWNCLOTHES_TYPE_UNKNOWN, //未知 EM_NEWDOWNCLOTHES_TYPE_TROUSERS, //长裤 EM_NEWDOWNCLOTHES_TYPE_SHORTS, //短裤 EM_NEWDOWNCLOTHES_TYPE_SKIRT, //裙子 }EM_NEWDOWNCLOTHES_TYPE; ///@brief 非机动车子类型 typedef enum tagEM_CATEGORY_NONMOTOR_TYPE { EM_CATEGORY_NONMOTOR_TYPE_UNKNOWN, // 未知 EM_CATEGORY_NONMOTOR_TYPE_TRICYCLE, // "Tricycle" 三轮车 EM_CATEGORY_NONMOTOR_TYPE_MOTORCYCLE, // "Motorcycle" 摩托车 EM_CATEGORY_NONMOTOR_TYPE_NON_MOTOR, // "Non-Motor" 非机动车 EM_CATEGORY_NONMOTOR_TYPE_BICYCLE, // "Bicycle" 自行车 EM_CATEGORY_NONMOTOR_TYPE_DUALTRIWHEELMOTORCYCLE, // "DualTriWheelMotorcycle"两、三轮摩托车 EM_CATEGORY_NONMOTOR_TYPE_LIGHTMOTORCYCLE, // "LightMotorcycle" 轻便摩托车 EM_CATEGORY_NONMOTOR_TYPE_EMBASSYMOTORCYCLE, // "EmbassyMotorcycle "使馆摩托车 EM_CATEGORY_NONMOTOR_TYPE_MARGINALMOTORCYCLE, // "MarginalMotorcycle " 领馆摩托车 EM_CATEGORY_NONMOTOR_TYPE_AREAOUTMOTORCYCLE, // "AreaoutMotorcycle " 境外摩托车 EM_CATEGORY_NONMOTOR_TYPE_FOREIGNMOTORCYCLE, // "ForeignMotorcycle " 外籍摩托车 EM_CATEGORY_NONMOTOR_TYPE_TRIALMOTORCYCLE, // "TrialMotorcycle " 试验摩托车 EM_CATEGORY_NONMOTOR_TYPE_COACHMOTORCYCLE, // "CoachMotorcycle " 教练摩托车 EM_CATEGORY_NONMOTOR_TYPE_PASSERBY, // "Passerby" 行人 EM_CATEGORY_NONMOTOR_TYPE_VANTRICYCLE, // "VanTricycle" 厢式三轮车 EM_CATEGORY_NONMOTOR_TYPE_MANNEDCONVERTIBLETRICYCLE, // "MannedConvertibleTricycle" 载人敞篷三轮车 EM_CATEGORY_NONMOTOR_TYPE_NOMANNEDCONVERTIBLETRICYCLE, // "NoMannedConvertibleTricycle" 不载人敞篷三轮车 EM_CATEGORY_NONMOTOR_TYPE_ELECTRICBIKE, // "Electricbike" 二轮电瓶车 EM_CATEGORY_NONMOTOR_TYPE_FOURWHEELER, // "FourWheelerNonMotor" 四轮非机动车 EM_CATEGORY_NONMOTOR_TYPE_SCOOTER, // "Scooter" 滑板车 }EM_CATEGORY_NONMOTOR_TYPE; ///@brief 非机动车抠图信息 typedef struct tagNET_NONMOTOR_PIC_INFO { UINT uOffset; // 在二进制数据块中的偏移 UINT uLength; // 图片大小,单位:字节 UINT uWidth; // 图片宽度 UINT uHeight; // 图片高度 char szFilePath[MAX_PATH_LEN]; // 文件路径 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[508]; // 保留 }NET_NONMOTOR_PIC_INFO; ///@brief 骑车目标图片信息 typedef struct tagRIDER_FACE_IMAGE_INFO { unsigned int nOffSet; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位字节 unsigned int nWidth; // 图片宽度(像素) unsigned int nHeight; // 图片高度(像素) UINT nIndexInData; // 图片的序号 BYTE byReserved[44]; // 保留 }RIDER_FACE_IMAGE_INFO; ///@brief 斜视状态 typedef enum tagEM_STRABISMUS_TYPE { EM_STRABISMUS_UNKNOWN, // 未知 EM_STRABISMUS_NORMAL, // 正常 EM_STRABISMUS_YES, // 斜视 } EM_STRABISMUS_TYPE; ///@brief 目标属性 typedef struct tagNET_FACE_ATTRIBUTE_EX { EM_SEX_TYPE emSex; // 性别 int nAge; // 年龄,-1表示该字段数据无效 char szReserved[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, 0未识别,识别时范围1-100,得分高魅力高 EM_HAS_GLASS emGlass; // 眼镜 EM_EMOTION_TYPE emEmotion; // 表情 DH_RECT stuBoundingBox; // 包围盒(8192坐标系) BYTE bReserved1[4]; // 保留字节 EM_STRABISMUS_TYPE emStrabismus; // 斜视状态 int nAngle[3]; // 目标, 三个角度依次分别是 // Pitch(仰俯角), 指抬头低头的角度, 范围是-70~60; // yaw(偏航角), 指左右转头的角度, 范围是-90~90; // Roll(翻滚角), 指左右倾斜的角度, 范围是-90~90; // [180,180,180]表示未识别到角度 NET_POINT stuObjCenter; // 物体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图 BYTE byReserved[48]; // 保留字节,留待扩展. } NET_FACE_ATTRIBUTE_EX; ///@brief 目标特征值数据在二进制数据中的位置信息 typedef struct tagNET_FACE_FEATURE_VECTOR_INFO { UINT nOffset; // 目标特征值在二进制数据中的偏移, 单位:字节 UINT nLength; // 目标特征值数据长度, 单位:字节 BOOL bFeatureEnc; // 用于标识特征值是否加密 BYTE byReserved[28]; // 保留字节 } NET_FACE_FEATURE_VECTOR_INFO; ///@brief 人体特征值数据在二进制数据中的位置信息 typedef struct tagNET_HUMAN_FEATURE_VECTOR_INFO { UINT nOffset; // 人体特征值在二进制数据中的偏移, 单位:字节 UINT nLength; // 人体特征值数据长度, 单位:字节 BOOL bFeatureEnc; // 用于标识特征值是否加密 BYTE byReserved[28]; // 保留字节 } NET_HUMAN_FEATURE_VECTOR_INFO; ///@brief 特征值版本类型 typedef enum tagEM_FEATURE_VERSION { EM_FEATURE_VERSION_UNKNOWN, // 未知 EM_FEATURE_VERSION_FACE_LARGE_1_01_001 = 1, // 目标,大模型,1.01.001 EM_FEATURE_VERSION_FACE_LARGE_1_02_001, // 目标,大模型,1.02.001 EM_FEATURE_VERSION_FACE_LARGE_1_03_001, // 目标,大模型,1.03.001 EM_FEATURE_VERSION_FACE_LARGE_1_04_001, // 目标,大模型,1.04.001 EM_FEATURE_VERSION_FACE_MIDDLE_1_01_002 = 31, // 目标,中模型,1.01.002 EM_FEATURE_VERSION_FACE_MIDDLE_1_02_002, // 目标,中模型,1.02.002 EM_FEATURE_VERSION_FACE_MIDDLE_1_03_002, // 目标,中模型,1.03.002 EM_FEATURE_VERSION_FACE_MIDDLE_1_04_002, // 目标,中模型,1.04.002 EM_FEATURE_VERSION_FACE_MIDDLE_1_09_002 = 39, // 目标,中模型,1.09.002 EM_FEATURE_VERSION_FACE_SMALL_1_01_003 = 61, // 目标,小模型,1.01.003 EM_FEATURE_VERSION_FACE_SMALL_1_02_003, // 目标,小模型,1.02.003 EM_FEATURE_VERSION_HUMAN_NONMOTOR = 91, // 人和非机动车,全局无版本号 EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_00_01, // 人和非机动车,全局浮点,1.00.01 EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_00_01, // 人和非机动车,全局哈希,1.00.01 EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_00, // 人和非机动车,全局浮点,1.01.00 EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_00, // 人和非机动车,全局哈希,1.01.00 EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_01, // 人和非机动车,全局浮点,1.01.01 EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_01, // 人和非机动车,全局哈希,1.01.01 EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_03, // 人和非机动车,全局浮点,1.01.03 EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_03, // 人和非机动车,全局哈希,1.01.03 EM_FEATURE_VERSION_TRAFFIC = 121, // 机动车,全局无版本号 EM_FEATURE_VERSION_TRAFFIC_FLOAT, // 机动车,全局浮点版本号0 EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_01, // 机动车,全局浮点版本号1.00.01 EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_01, // 机动车,全局哈希版本号1.00.01 EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_02, // 机动车,全局浮点版本号1.00.02 EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_02, // 机动车,全局哈希版本号1.00.02 EM_FEATURE_VERSION_SHANGTANG_FACE_1_5_0 = 151, // 目标,1.5.0 EM_FEATURE_VERSION_SHANGTANG_FACE_1_8_1, // 目标,1.8.1 EM_FEATURE_VERSION_SHANGTANG_FACE_2_1_3, // 目标,2.1.3 EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_6, // 目标,2.39.6 EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_7, // 目标,2.39.7 EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_8, // 目标,2.39.8 EM_FEATURE_VERSION_SHANGTANG_FACE_239, // 目标,239 EM_FEATURE_VERSION_SHANGTANG_FACE_242, // 目标,242 EM_FEATURE_VERSION_SHANGTANG_FACE_244, // 目标,244 EM_FEATURE_VERSION_SHANGTANG_FACE_245, // 目标,245 EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_4_2 = 181, // 目标/机动车/非机动车,2.4.2 EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_5_7, // 目标/机动车/非机动车,2.5.7 } EM_FEATURE_VERSION; ///@brief 年龄段 typedef enum tagEM_AGE_SEG { EM_AGE_SEG_UNKOWN = 0, // 未知 EM_AGE_SEG_BABY = 2, // 婴儿 EM_AGE_SEG_CHILD = 10, // 幼儿 EM_AGE_SEG_YOUTH = 28, // 青年 EM_AGE_SEG_MIDDLE = 50, // 中年 EM_AGE_SEG_OLD = 60, // 老年 }EM_AGE_SEG; ///@brief 骑车人信息 typedef struct tagNET_RIDER_INFO { BOOL bFeatureValid; // 是否识别到特征信息, TRUE时下面数据才有效 EM_SEX_TYPE emSex; // 性别 int nAge; // 年龄 EM_NONMOTOR_OBJECT_STATUS emHelmet; // 头盔状态 EM_NONMOTOR_OBJECT_STATUS emCall; // 是否在打电话 EM_NONMOTOR_OBJECT_STATUS emBag; // 是否有背包 EM_NONMOTOR_OBJECT_STATUS emCarrierBag; // 有没有手提包 EM_NONMOTOR_OBJECT_STATUS emUmbrella; // 是否打伞 EM_NONMOTOR_OBJECT_STATUS emGlasses; // 是否有带眼镜 EM_NONMOTOR_OBJECT_STATUS emMask; // 是否带口罩 EM_EMOTION_TYPE emEmotion; // 表情 EM_CLOTHES_TYPE emUpClothes; // 上衣类型 EM_CLOTHES_TYPE emDownClothes; // 下衣类型 EM_OBJECT_COLOR_TYPE emUpperBodyColor; // 上衣颜色 EM_OBJECT_COLOR_TYPE emLowerBodyColor; // 下衣颜色 BOOL bHasFaceImage; // 是否有骑车人目标抠图信息 RIDER_FACE_IMAGE_INFO stuFaceImage; // 骑车人目标特写描述 BOOL bHasFaceAttributes; // 是否有目标属性 NET_FACE_ATTRIBUTE_EX stuFaceAttributes; // 目标属性 EM_HAS_HAT emHasHat; // 是否戴帽子 EM_CAP_TYPE emCap; // 帽类型 EM_HAIR_STYLE emHairStyle; // 头发样式 NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo; // 目标特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emFaceFeatureVersion; // 目标特征值版本号 NET_HUMAN_FEATURE_VECTOR_INFO stuHumanFeatureVectorInfo; // 人体特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emHumanFeatureVersion; // 人体特征值版本号 UINT nAgeConf; //年龄段置信度 UINT nUpColorConf; //上衣颜色置信度 UINT nDownColorConf; //下衣颜色置信度 UINT nUpTypeConf; //上衣种类置信度 UINT nDownTypeConf; //下衣种类置信度 UINT nHatTypeConf; //帽子类型置信度 UINT nHairTypeConf; //发型种类置信度 EM_CLOTHES_PATTERN emUpperPattern; //上半身衣服图案 UINT nUpClothes; //上衣类型 0:未知 1:长袖 2:短袖 3:长款大衣 4:夹克及牛仔服 5:T恤 //6:运动装 7:羽绒服 8:衬衫 9:连衣裙 10:西装 11:毛衣 12:无袖 13:背心 EM_UNIFORM_STYLE emUniformStyle; //制服类型 UINT nRainCoat; //是否有雨披 0:未识别 1:无 2:有 EM_COAT_TYPE emCoatStyle; //上衣款式 EM_AGE_SEG emAgeSeg; // 年龄段 UINT nShoulderBag; // 是否有肩包 0-未识别 1-无 2-有 UINT nMessengerBag; // 是否有斜挎包 0-未识别 1-无 2-有 BOOL bNewUpClothes; // 是否支持新上衣类型 EM_NEWUPCLOTHES_TYPE emNewUpClothes; // 新上衣类型 BOOL bNewDownClothes; // 是否支持新下衣类型 EM_NEWDOWNCLOTHES_TYPE emNewDownClothes; // 新下衣类型 BYTE byReserved[140]; //保留 }NET_RIDER_INFO; #define MAX_RIDER_NUM 16 // 骑车人数组上限 ///@brief 非机动车特征值数据在二进制数据中的位置信息 typedef struct tagNET_NONMOTOR_FEATURE_VECTOR_INFO { UINT nOffset; // 非机动车特征值在二进制数据中的偏移, 单位:字节 UINT nLength; // 非机动车特征值数据长度, 单位:字节 BOOL bFeatureEnc; // 用于标识特征值是否加密 BYTE byReserved[28]; // 保留字节 } NET_NONMOTOR_FEATURE_VECTOR_INFO; ///@brief 非机动车车牌图片信息 typedef struct tagNET_NONMOTOR_PLATE_IMAGE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[508]; // 保留字节 }NET_NONMOTOR_PLATE_IMAGE; ///@brief 车牌颜色 typedef enum tagEM_PLATE_COLOR_TYPE { EM_PLATE_COLOR_UNKNOWN, // 未知 "Unknown" EM_PLATE_COLOR_OTHER, // 其他颜色 "Other" EM_PLATE_COLOR_BLUE, // 蓝色 "Blue" EM_PLATE_COLOR_YELLOW, // 黄色 "Yellow" EM_PLATE_COLOR_WHITE, // 白色 "White" EM_PLATE_COLOR_BLACK, // 黑色 "Black" EM_PLATE_COLOR_RED, // 红色 "Red" EM_PLATE_COLOR_GREEN, // 绿色 "Green" EM_PLATE_COLOR_SHADOW_GREEN, // 渐变绿 "ShadowGreen" EM_PLATE_COLOR_YELLOW_GREEN, // 黄绿双拼 "YellowGreen"" EM_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT, // 黄底黑字 "YellowbottomBlackText" EM_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT, // 蓝底白字 "BluebottomWhiteText" EM_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT, // 黑底白字 "BlackBottomWhiteText" }EM_PLATE_COLOR_TYPE; ///@brief 非机动车配牌信息 typedef struct tagNET_NONMOTOR_PLATE_INFO { char szPlateNumber[128]; // 非机动车车牌号 NET_RECT stuBoundingBox; // 包围盒, 非机动车矩形框,0~8191相对坐标 NET_RECT stuOriginalBoundingBox; // 包围盒, 非机动车矩形框,绝对坐标 NET_NONMOTOR_PLATE_IMAGE stuPlateImage; // 非机动车车牌抠图 EM_PLATE_COLOR_TYPE emPlateColor; // 车牌颜色 BYTE byReserved[132]; // 保留 }NET_NONMOTOR_PLATE_INFO; ///@brief 非机动车的角度 typedef enum tagEM_OBJECT_NONMOTORANGLE_TYPE // 非机动车的角度 { EM_OBJECT_NONMOTORANGLE_TYPE_UNKNOWN, // 未知 EM_OBJECT_NONMOTORANGLE_TYPE_FRONT, // 正面 EM_OBJECT_NONMOTORANGLE_TYPE_SIDE, // 侧面 EM_OBJECT_NONMOTORANGLE_TYPE_BEHIND, // 后面 }EM_OBJECT_NONMOTORANGLE_TYPE; ///@brief 非机动车车篮 typedef enum tagEM_OBJECT_BASKET_TYPE // 非机动车车篮 { EM_OBJECT_BASKET_UNKNOWN, // 未知 EM_OBJECT_BASKET_NO, // 无 EM_OBJECT_BASKET_YES, // 有 }EM_OBJECT_BASKET_TYPE; ///@brief 非机动车后备箱 typedef enum tagEM_OBJECT_STORAGEBOX_TYPE //非机动车后备箱 { EM_OBJECT_STORAGEBOX_UNKNOWN, // 未知 EM_OBJECT_STORAGEBOX_NO, // 无后备箱 EM_OBJECT_STORAGEBOX_OWNBOX, // 自带箱 EM_OBJECT_STORAGEBOX_SELFPACK, // 自装箱 EM_OBJECT_STORAGEBOX_ALL, // 自装箱和自带箱都有 }EM_OBJECT_STORAGEBOX_TYPE; ///@brief 雨棚(伞)类型 typedef enum tagEM_RAIN_SHED_TYPE { EM_RAIN_SHED_TYPE_NONE = -1, // 无 EM_RAIN_SHED_TYPE_NO_UMBRELLA, // 不撑伞 EM_RAIN_SHED_TYPE_NOT_PEOPLE_HOLD, // 人非手撑伞 EM_RAIN_SHED_TYPE_UNKOWN, // 未知 EM_RAIN_SHED_TYPE_NO_MOTOR_UMBRELLA, // 非机动车装载雨伞 EM_RAIN_SHED_TYPE_NO_MOTOR_CANOPY, // 非机动车装载雨棚 }EM_RAIN_SHED_TYPE; ///@brief 非机动车对象 typedef struct tagVA_OBJECT_NONMOTOR { int nObjectID; // 物体ID,每个ID表示一个唯一的物体 EM_CATEGORY_NONMOTOR_TYPE emCategory; // 非机动车子类型 DH_RECT stuBoundingBox; // 包围盒, 非机动车矩形框,0~8191相对坐标 DH_RECT stuOriginalBoundingBox; // 包围盒, 非机动车矩形框,绝对坐标 NET_COLOR_RGBA stuMainColor; // 非机动车颜色, RGBA EM_OBJECT_COLOR_TYPE emColor; // 非机动车颜色, 枚举 BOOL bHasImage; // 是否有抠图 NET_NONMOTOR_PIC_INFO stuImage; // 物体截图 int nNumOfCycling; // 骑车人数量 NET_RIDER_INFO stuRiderList[MAX_RIDER_NUM]; // 骑车人特征,个数和nNumOfCycling关联 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 FACE_SCENE_IMAGE stuFaceSceneImage; // 目标全景广角图 int nNumOfFace; // 检测到的目标数量 float fSpeed; // 物体速度,单位为km/h NET_NONMOTOR_FEATURE_VECTOR_INFO stuNonMotorFeatureVectorInfo; // 非机动车特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emNonMotorFeatureVersion; // 非机动车特征值版本号 NET_NONMOTOR_PLATE_INFO stuNomotorPlateInfo; // 非机动车牌信息 NET_POINT stuObjCenter; // 物体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图 NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo; // 目标特征值数据在二进制数据中的位置信息, 废弃 EM_FEATURE_VERSION emFaceFeatureVersion; // 目标特征值版本号, 废弃 int nCategoryConf; // 非机动车类型置信度 char szNonMotorFeatureVersion[32]; // 非机动车特征值版本号-字符串 EM_OBJECT_NONMOTORANGLE_TYPE emNonMotorAngle; // 非机动车的角度 EM_OBJECT_BASKET_TYPE emBasket; // 非机动车车篮 EM_OBJECT_STORAGEBOX_TYPE emStorageBox; // 非机动车后备箱 UINT nCompleteScore; // 非机动车完整度评分,范围[0,100],越大越完整 UINT nClarityScore; // 非机动车清晰度分值 取值范围为[1,100], 越大越清晰, 0为无效值 UINT nStartSequence; // 目标出现的帧号 UINT nEndSequence; // 目标消失的帧号 BOOL bIsErrorDetect; // 非机动车车身及骑手整体,是否虚检,0: 否,1: 是 UINT nImageLightType; // 图像成像光源类型, 0:未知, 1:可见光成像, 2:近红外成像(灰度图), 3:热红外成像(伪彩色) UINT nAbsScore; // 非机动车综合质量评分,范围[0,100],越大质量越好 EM_RAIN_SHED_TYPE emRainShedType; // 雨棚(伞)类型 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 char szReserved[2]; // 对齐 UINT nHumanFeatureExtractSingle; // 非机动车的骑手和车身是否单独提取, 0:否, 1:是 BYTE byReserved[2920]; // 保留 }VA_OBJECT_NONMOTOR; ///@brief 车辆信息,记录了车头、车尾车牌号和车牌颜色 typedef struct tagEVENT_PLATE_INFO { char szFrontPlateNumber[64]; // 车头车牌号码 EM_PLATE_COLOR_TYPE emFrontPlateColor; // 车头车牌颜色 char szBackPlateNumber[64]; // 车尾车牌号码 EM_PLATE_COLOR_TYPE emBackPlateColor; // 车尾车牌颜色 BYTE reversed[128]; // 保留 } EVENT_PLATE_INFO; ///@brief 车辆姿势 typedef enum tagEM_VEHICLE_POSTURE_TYPE { EM_VEHICLE_POSTURE_TYPE_UNKNOWN, // 未知 EM_VEHICLE_POSTURE_TYPE_VEHICLE_HEAD, // 车头 EM_VEHICLE_POSTURE_TYPE_VEHICLE_SIDE, // 车侧 EM_VEHICLE_POSTURE_TYPE_VEHICLE_TAIL, // 车尾 }EM_VEHICLE_POSTURE_TYPE; ///@brief 车辆跟踪状态 typedef enum tagEM_TRACK_CAR_STATUS { EM_TRACK_CAR_STATUS_UNKNOWN, // 未知 EM_TRACK_CAR_STATUS_START, // 跟踪开始 EM_TRACK_CAR_STATUS_END, // 跟踪结束 } EM_TRACK_CAR_STATUS; ///@brief 规则区内车辆行驶方向 typedef enum tagEM_CAR_DRIVING_DIRECTION { EM_CAR_DRIVING_DIRECTION_UNKNOWN, // 未知 EM_CAR_DRIVING_DIRECTION_DRIVE_IN_AREA, // 驶入区域 EM_CAR_DRIVING_DIRECTION_EXIT_AREA, // 驶出区域 }EM_CAR_DRIVING_DIRECTION; ///@brief 事件类型EVENT_IVS_TRAFFICJUNCTION(交通路口老规则事件/视频电警上的交通卡口老规则事件)对应的数据块描述信息 ///@brief 由于历史原因,如果要处理卡口事件,DEV_EVENT_TRAFFICJUNCTION_INFO和EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生 ///@brief 另外EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置 typedef struct tagDEV_EVENT_TRAFFICJUNCTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 BYTE byMainSeatBelt; // 主驾驶座,系安全带状态,1-系安全带,2-未系安全带 BYTE bySlaveSeatBelt; // 副驾驶座,系安全带状态,1-系安全带,2-未系安全带 BYTE byVehicleDirection; // 当前被抓拍到的车辆是车头还是车尾,具体请见 EM_VEHICLE_DIRECTION BYTE byOpenStrobeState; // 开闸状态,具体请见 EM_OPEN_STROBE_STATE double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nLane; // 对应车道号 DWORD dwBreakingRule; // 违反规则掩码,第一位:闯红灯; // 第二位:不按规定车道行驶; // 第三位:逆行; 第四位:违章掉头; // 第五位:交通堵塞; 第六位:交通异常空闲 // 第七位:压线行驶; 否则默认为:交通路口事件 NET_TIME_EX RedLightUTC; // 红灯开始UTC时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byDirection; // 路口方向,1-表示正向,2-表示反向 BYTE byLightState; // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯 BYTE byReserved; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DH_MSG_OBJECT stuVehicle; // 车身信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 char szRecordFile[DH_COMMON_STRING_128]; // 报警对应的原始录像文件信息 EVENT_JUNCTION_CUSTOM_INFO stuCustomInfo; // 自定义信息 BYTE byPlateTextSource; // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别 BYTE bReserved1[3]; // 保留字节,留待扩展. NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE byNoneMotorInfo; // 0-无非机动车人员信息信息,1-有非机动车人员信息信息 // 此字段为1时下面11个字段生效 BYTE byBag; // 是否背包, 0-未知 1-不背包 2-背包 BYTE byUmbrella; // 是否打伞, 0-未知 1-不打伞 2-打伞 BYTE byCarrierBag; // 手提包状态,0-未知 1-没有 2-有 BYTE byHat; // 是否戴帽子, 0-未知 1-不戴帽子 2-戴帽子 BYTE byHelmet; // 头盔状态,0-未知 1-没有 2-有 BYTE bySex; // 性别,0-未知 1-男性 2-女性 BYTE byAge; // 年龄 NET_COLOR_RGBA stuUpperBodyColor; // 上身颜色 NET_COLOR_RGBA stuLowerBodyColor; // 下身颜色 BYTE byUpClothes; // 上身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙 BYTE byDownClothes; // 下身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BYTE bReserved[22]; // 保留字节,留待扩展 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频,3RSU DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DWORD dwRetCardNumber; // 卡片个数 EVENT_CARD_INFO stuCardInfo[DH_EVENT_MAX_CARD_NUM]; // 卡片信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 EVENT_PLATE_INFO stuPlateInfo; // 车辆信息,记录了车头、车尾车牌号和车牌颜色 BOOL bSceneImage; // 全景图是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图 DH_MSG_OBJECT* pstObjects; // 检测到的多个车牌信息 int nObjectNum; // 检测到的多个车牌个数 EM_VEHICLE_POSTURE_TYPE emVehiclePosture; // 车辆姿势 UINT nVehicleSignConfidence; // 车标置信度(范围:0~100) UINT nVehicleCategoryConfidence; // 车型置信度(范围:0~100) EM_CAR_DRIVING_DIRECTION emCarDrivingDirection; // 规则区内车辆行驶方向 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szSerialNo[128]; // 和客户端请求的抓图序列号对应 UINT nAlarmCompliance; // 报警合规, 0:未知, 1:不合规, 2:合规 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 DH_MSG_OBJECT_SUPPLEMENT stObjectInfoEx; // 视频分析物体信息补充字段,与 DH_MSG_OBJECT 的合集表示视频分析物体信息 DH_MSG_OBJECT_EX2* pstuObjectEx2; // 检测到的物体扩展 DH_MSG_OBJECT_EX2* pstuVehicleEx2; // 车身信息扩展 DH_MSG_OBJECT_EX2* pstuObjectsEx2; // 检测到的多个车牌信息扩展,数量为nObjectNum UINT nPresetID; // 事件触发的预置点号,从1开始, 0表示未知 int nTransfer; // 文件传输状态, -1: 未知, 0-实时数据下载,1-离线数据下载, 2-离线数据传输完成, 3-离线数据传输中断 char szFeatureVersion[32]; // 特征值的版本号 UINT nDetectMode; // 检测物体具体包含的信息类型: 0: 只包含属性 1: 只包含特征值 2: 属性、特征值都包含 3:属性和特征值都不包含 char byReserved2[544-3*POINTERSIZE]; // 保留字节 } DEV_EVENT_TRAFFICJUNCTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE (非机动车占用机动车道)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved1[3]; // 保留字节. double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 char szRecordFile[DH_COMMON_STRING_128]; // 报警对应的原始录像文件信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bHasNonMotor; // 是否有非机动车对象 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 BYTE bReserved[4096]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO; ///@brief 车辆信息 typedef struct tagNET_VEHICLE_INFO { UINT nUID; // 车辆唯一标识符,由服务端生成用于程序中表示惟一 char szGroupID[64]; // 车辆所属组ID char szGroupName[128]; // 车辆所属组名 char szPlateNumber[64]; // 车牌号码 char szPlateCountry[4]; // 车辆所在国家,2字节,符合ISO3166规范 int nPlateType; // 车牌类型 // 01 大型汽车号牌 黄底黑字 // 02 小型汽车号牌 蓝底白字 // 03 使馆汽车号牌 黑底白字、红“使”字 // 04 领馆汽车号牌 黑底白字、红“领”字 // 05 境外汽车号牌 黑底白、红字 // 06 外籍汽车号牌 黑底白字 // 13 农用运输车号牌 黄底黑字黑框线 // 15 挂车号牌 黄底黑字黑框线 // 16 教练汽车号牌 黄底黑字黑框线 // 18 试验汽车号牌 // 20 临时入境汽车号牌 白底红字黑“临时入境” // 22 临时行驶车号牌 白底黑字黑线框 // 23 公安警用汽车号牌 int nVehicleType; // 车型(轿车、卡车等) // 001 巡逻车 // 002 交警车辆 // 003 消防车 // 004 单兵 // 005 其他警车 // 006 其他设备 // 020 政府车辆 // 031 校车 // 032 运钞车 // 033 客运车辆 // 034 公交车 // 035 出租车 // 036 危险品车辆 int nBrand; // 车辆车标,需要通过映射表得到真正的车标.同卡口事件的CarLogoIndex int nCarSeries; // 车辆子品牌,需要通过映射表得到真正的子品牌,同卡口事件的SubBrand int nCarSeriesModelYearIndex; // 车辆品牌年款,需要通过映射表得到真正的年款,同卡口事件的BrandYear 车头年款序号范围1~999;车尾年款序号范围1001~1999;0表示未知;1000预留。 NET_COLOR_RGBA stuVehicleColor; // 车色 第一个元素表示红色分量值; 第二个元素表示绿色分量值; 第三个元素表示蓝色分量值; 第四个元素表示透明度分量(无意义) NET_COLOR_RGBA stuPlateColor; // 车牌颜色,规则同车色 char szOwnerName[64]; // 车主名称 int nSex; // 车主性别 0-未知,1-男,2,女 int nCertificateType; // 车主证件类型 0-未知 1-证件 2-护照 3-军官证 char szPersonID[32]; // 人员证件号码,工号,或其他编号 char szOwnerCountry[4]; // 车主国籍,2字节,符合ISO3166规范 char szProvince[64]; // 省份 char szCity[64]; // 城市 char szHomeAddress[128]; // 注册人员家庭地址(IVSS需求) char szEmail[32]; // 车主电子邮箱 char szPhoneNo[128]; // 注册车主电话号码 int nVehicleColorState; //车色状态:0-未知,1-已知 该字段为未知时, CLIENT_StartFindVehicleRegisterDB下发的车色颜色为默认的[0,0,0,255] int nPlateColorState; //车牌颜色状态:0-未知,1-已知 该字段为未知时, CLIENT_StartFindVehicleRegisterDB下发的车牌颜色为默认的[0,0,0,255] BYTE bReserved[504]; }NET_VEHICLE_INFO; #define MAX_CAR_CANDIDATE_NUM (50) ///@brief 候选车辆信息 typedef struct tagNET_CAR_CANDIDATE_INFO { NET_VEHICLE_INFO stuVehicleInfo; // 车辆信息 int nDifferentAttributresNum; // 和数据库不相符的属性数目 int nDifferentAttributres[16]; // 和数据库不相符的属性集合,元素值取值意义:0-未知 1-车牌属地 2-车标 3-车型 4-车色 5-车牌颜色 BYTE byReserved[512]; }NET_CAR_CANDIDATE_INFO; ///@brief 车牌识别比对事件信息 typedef struct tagDEV_EVENT_VEHICLE_RECOGNITION_INFO { char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nVehicleAction; // 车辆动作 0-未知,1-在检测区域内,2-离开检测区域 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 NET_SEAT_INFO stuMainSeatInfo; // 主驾驶位信息 NET_SEAT_INFO stuSlaveSeatInfo; // 副驾驶位信息 int nVehicleAttachNum; // 车上附件数量 NET_VEHICLE_ATTACH stuVehicleAttach[8]; // 车上附件数据 char szCountry[32]; // 国家,2字节,符合ISO3166规范 int nCarCandidateNum; // 候选车辆数量 NET_CAR_CANDIDATE_INFO stuCarCandidate[MAX_CAR_CANDIDATE_NUM]; // 候选车辆数据 EVENT_COMM_INFO stCommInfo; // 公共信息 int nChannel; // 通道号 int nImageInfoNum; // 图片信息个数 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 BYTE bReserved[1020-POINTERSIZE]; } DEV_EVENT_VEHICLE_RECOGNITION_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICGATE(交通卡口老规则事件/线圈电警上的交通卡口老规则事件)对应的数据块描述信息 ///@brief 由于历史原因,如果要处理卡口事件,DEV_EVENT_TRAFFICJUNCTION_INFO和EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生 ///@brief 另外EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置 typedef struct tagDEV_EVENT_TRAFFICGATE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 BYTE byOpenStrobeState; // 开闸状态,具体请见EM_OPEN_STROBE_STATE char bReserved1[3]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体,车标 int nLane; // 对应车道号 int nSpeed; // 车辆实际速度Km/h int nSpeedUpperLimit; // 速度上限 单位:km/h int nSpeedLowerLimit; // 速度下限 单位:km/h DWORD dwBreakingRule; // 违反规则掩码,第一位:逆行; // 第二位:压线行驶; 第三位:超速行驶; // 第四位:欠速行驶; 第五位:闯红灯;第六位:穿过路口(卡口事件) // 第七位: 压黄线; 第八位: 有车占道; 第九位: 黄牌占道;否则默认为:交通卡口事件 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuVehicle; // 车身信息,有存放车牌信息 BYTE szManualSnapNo[64]; // 手动抓拍序号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[3]; // 保留字节 BYTE szSnapFlag[16]; // 设备产生的抓拍标识 BYTE bySnapMode; // 抓拍方式,0-未分类 1-全景 2-近景 4-同向抓拍 8-反向抓拍 16-号牌图像 BYTE byOverSpeedPercentage; // 超速百分比 BYTE byUnderSpeedingPercentage; // 欠速百分比 BYTE byRedLightMargin; // 红灯容许间隔时间,单位:秒 BYTE byDriveDirection; // 行驶方向,0-上行(即车辆离设备部署点越来越近),1-下行(即车辆离设备部署点越来越远) char szRoadwayNo[32]; // 道路编号 char szViolationCode[16]; // 违章代码 char szViolationDesc[128]; // 违章描述 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 char szVehicleType[32]; // 车辆大小类型 Minisize"微型车,"Light-duty"小型车,"Medium"中型车, // "Oversize"大型车,"Huge"超大车,"Largesize"长车 "Unknown"未知 BYTE byVehicleLenth; // 车辆长度, 单位米 BYTE byLightState; // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯 BYTE byReserved1; // 保留字节,留待扩展 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nOverSpeedMargin; // 限高速宽限值 单位:km/h int nUnderSpeedMargin; // 限低速宽限值 单位:km/h char szDrivingDirection[3][DH_MAX_DRIVINGDIRECTION]; // // "DrivingDirection" ,行驶方向 // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行, // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和 // 下行的两个地点,UTF-8编码 char szMachineName[256]; // 本地或远程设备名称 char szMachineAddress[256]; // 机器部署地点、道路编码 char szMachineGroup[256]; // 机器分组、设备所属单位 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_SIG_CARWAY_INFO_EX stuSigInfo; // 由车检器产生抓拍信号冗余信息 char szFilePath[MAX_PATH]; // 文件路径 NET_TIME_EX RedLightUTC; // 红灯开始UTC时间 char * szDeviceAddress; // 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束 float fActualShutter; // 当前图片曝光时间,单位为毫秒 BYTE byActualGain; // 当前图片增益,范围为0~100 BYTE byDirection; // 0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知 BYTE bReserve; // 保留字节, 字节对齐 BYTE bRetCardNumber; // 卡片个数 EVENT_CARD_INFO stuCardInfo[DH_EVENT_MAX_CARD_NUM]; // 卡片信息 char szDefendCode[DH_COMMON_STRING_64]; // 图片防伪码 int nTrafficBlackListID; // 关联禁止名单数据库记录默认主键ID, 0,无效;> 0,禁止名单数据记录 EVENT_COMM_INFO stCommInfo; // 公共信息 EM_VEHICLE_DIRECTION emVehicleDirection; // 抓拍方向 BYTE bReserved[448]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFICGATE_INFO; ///@brief 事件类型EVENT_TRAFFICSNAPSHOT(交通抓拍事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICSNAPSHOT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE bReserv[3]; // 保留字节 BYTE bCarWayCount; // 触发抓拍的车道个数 DH_CARWAY_INFO stuCarWayInfo[DH_MAX_CARWAY_NUM]; // 触发抓拍的车道相关信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[344]; // 保留字节,留待扩展 EVENT_COMM_INFO stCommInfo; // 公共信息 } DEV_EVENT_TRAFFICSNAPSHOT_INFO; ///@brief 闯红灯方向 typedef enum tagEM_RED_LIGHT_DIRECTION { EM_RED_LIGHT_DIRECTION_UNKNOWN, // 未知 EM_RED_LIGHT_DIRECTION_STRAIGHT, // 直行 EM_RED_LIGHT_DIRECTION_TURNLEFT, // 左转 EM_RED_LIGHT_DIRECTION_TURNRIGHT, // 右转 EM_RED_LIGHT_DIRECTION_UTURN, // 掉头 EM_RED_LIGHT_DIRECTION_FORWARDLEFT, // 左前方 EM_RED_LIGHT_DIRECTION_FORWARDRIGHT, // 右前方 }EM_RED_LIGHT_DIRECTION; ///@brief 事件类型EVENT_IVS_TRAFFIC_RUNREDLIGHT(交通-闯红灯事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLightState; // 红绿灯状态 0:未知 1:绿灯 2:红灯 3:黄灯 int nSpeed; // 车速,km/h int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_TIME_EX stRedLightUTC; // 红灯开始时间 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byRedLightMargin; // 红灯容许间隔时间,单位:秒 BYTE byAlignment[3]; // 字节对齐 int nRedLightPeriod; // 表示红灯周期时间,单位毫秒 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 int nDirectionCount; // 闯红灯方向个数 EM_RED_LIGHT_DIRECTION emDirection[8]; // 闯红灯方向 BYTE bReserved[892]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bHasNonMotor; // 是否有非机动车对象 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT(交通-行人闯红灯事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 行人信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE bReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_PASSNOTINORDER(交通-未按规定依次通过)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[984]; // 保留字节 }DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_OVERLINE(交通-压线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVERLINE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度,Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[968]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_OVERLINE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_RETROGRADE(交通-逆行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_RETROGRADE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度,Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BOOL bIsExistAlarmRecord; // rue:有对应的报警录像; false:无对应的报警录像 DWORD dwAlarmRecordSize; // 录像大小 char szAlarmRecordPath[DH_COMMON_STRING_256]; // 录像路径 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[484]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 int nDetectNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bHasNonMotor; // 是否有非机动车对象 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_RETROGRADE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_TURNLEFT(交通-违章左转)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_TURNLEFT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度,Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[968]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bHasNonMotor; // 是否有非机动车对象 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_TURNLEFT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHT (交通-违章右转)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_TURNRIGHT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度,Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[968]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_TURNRIGHT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_UTURN(违章调头事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_UTURN_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度,Km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[968]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_UTURN_INFO; ///@brief 区间测速信息 typedef struct tagNET_REGION_INFO { NET_TIME stuDriveInTime; // 驶入时间 NET_TIME stuDriveOutTime; // 驶出时间 BYTE bReserved[1024]; // 保留字节 }NET_REGION_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_OVERSPEED(交通超速事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVERSPEED_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSpeed; // 车辆实际速度Km/h int nSpeedUpperLimit; // 速度上限 单位:km/h int nSpeedLowerLimit; // 速度下限 单位:km/h int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 char szFilePath[MAX_PATH]; // 文件路径 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 int nSpeedingPercentage; // 超速百分比 BYTE bReserved[572]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_REGION_INFO stRegionInfo; // 区间测速信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bHasNonMotor; // 是否有非机动车对象 }DEV_EVENT_TRAFFIC_OVERSPEED_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_UNDERSPEED(交通欠速事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_UNDERSPEED_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved2[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSpeed; // 车辆实际速度Km/h int nSpeedUpperLimit; // 速度上限 单位:km/h int nSpeedLowerLimit; // 速度下限 单位:km/h int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved1[2]; // 对齐 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nUnderSpeedingPercentage; // 欠速百分比 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE bReserved[832]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_UNDERSPEED_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_JAM_FORBID_INTO(交通拥堵禁入事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ALARM_JAMFORBIDINTO_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 底层产生的触发抓拍帧标记 int nSource; // 视频分析的数据源地址 int nSequence; // 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nFrameSequence; // 帧序号 int nLane; // 车道号 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DH_MSG_OBJECT stuObject; // 检测到的物体 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE bReserved[984]; // 保留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 } DEV_EVENT_ALARM_JAMFORBIDINTO_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING(拥堵滞留斑马线违章事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nLane; // 车道号 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved[3]; DH_MSG_OBJECT stuObject; // 检测到的物体 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[2048]; // 保留字节 } DEV_EVENT_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO; ///@brief 分析的信息 typedef struct tagEVENT_PIC_ANALYSE_INFO { DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE bReserved[1024]; // 预留字节 }EVENT_PIC_ANAKYSE_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_PIC_ANALYSE(图片二次分析事件)对应的数据块描述信息 typedef struct tagDEV_ALARM_PIC_ANALYSE_INFO { int nIndex; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 char szFilePath[MAX_PATH]; // 图片路径 EVENT_COMM_INFO stuCommInfo; // 公共信息 EVENT_PIC_ANAKYSE_INFO stuAnalyseInfo; // 分析的信息 BYTE bReserved[1024]; // 保留字节 } ALARM_PIC_ANALYSE_INFO; ///@brief 检测到的弹孔 typedef struct tagNET_BULLET_HOLES_INFO { int nObjectID; // 物体ID,每个ID表示一个唯一的物体 char szObjectType[128]; // 物体类型,支持以下: "Unknown", "Human", "Vehicle", DH_RECT stuBoundingBox; // 包围盒 DH_POINT stuCenter; // 物体型心 int nSequence; // 序号 int nScore; // 环数 BYTE byReserved[512]; // 保留字节 }NET_BULLET_HOLES_INFO; ///@brief 打靶像机事件 typedef struct tagDEV_ALARM_PIC_SHOOTINGSCORERECOGNITION_INFO { int nIndex; // 通道号 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 char szFilePath[MAX_PATH]; // 图片路径 DH_POINT stuDetectRegion; // 规则检测区域 int nValidBulletHolesNum; // 检测到的有效弹孔个数 NET_BULLET_HOLES_INFO stuBulletHolesInfo[DH_MAX_BULLET_HOLES]; // 检测到的弹孔 BYTE bReserved[1024]; // 保留字节 } ALARM_PIC_SHOOTINGSCORERECOGNITION_INFO; ///@brief 4G流量超过阈值的报警事件(对应事件 DH_ALARM_OIL_4G_OVERFLOW) typedef struct tagNET_ALARM_OIL_4G_OVERFLOW_INFO { int nChannelID; // 通道号从0开始 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nFlowRateCur; // 当前使用了的流量 单位MB int nFlowRateMax; // 当月流量的阈值 单位MB BYTE byReserved[1024]; // 保留字节 }NET_ALARM_OIL_4G_OVERFLOW_INFO; ///@brief 感应器相位电压类型 typedef enum tagEM_ALARM_INTERFACE_TYPE { EM_ALARM_INTERFACE_TYPE_UNKNOWN, // 未知 EM_ALARM_INTERFACE_TYPE_A, // A相电压 EM_ALARM_INTERFACE_TYPE_B, // B相电压 EM_ALARM_INTERFACE_TYPE_C, // C相电压 }EM_ALARM_INTERFACE_TYPE; ///@brief 供电电源开关状态异常事件 typedef struct tagDEV_ALARM_POWERSWITCHER_INFO { int nEventAction; // 持续型事件动作, 1表示开始, 2表示停止 int nEventIndex; // 供电电源开关序号, 与PowerSwitcher配置下标序号一致 char szName[128]; // 供电电源开关名称, 与PowerSwitcher配置名称对应 NET_TIME_EX stuUTC; // 事件采集时间 int nPowerVoltage; // 电压值, 单位:mV int nPowerCurrent; // 电流值, 单位:mA int nPowerValue; // 功率, 单位:mW int nSwitchOn; // 开关通断, 1为开,0为关 int nPowerState; // 数据状态掩码,全0表示正常, bit0表示欠压, bit1表示过压, bit2表示欠流, bit3表示过流, bit4表示无状态(此状态不与其他同时置位) EM_ALARM_INTERFACE_TYPE emInterfaceType; // 感应器相位电压 BYTE byReserved[1020]; // 保留字节 }DEV_ALRAM_POWERSWITCHER_INFO; ///@brief 场景变更事件 StartListen(对应事件 DH_ALARM_SCENNE_CHANGE_ALARM) typedef struct tagDEV_ALARM_PIC_SCENECHANGE_INFO { int nChannelID; // 通道号 int nEventAction; // 持续型事件动作, 1表示开始, 2表示停止 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID BYTE bReserved[1024]; // 保留字节 } ALARM_PIC_SCENECHANGE_INFO; ///@brief 场景变更事件,ReloadPicture(对应事件 EVENT_IVS_SCENE_CHANGE) typedef struct tagDEV_ALRAM_SCENECHANGE_INFO { int nChannelID; // 通道号 int nEventAction; // 持续型事件动作, 1表示开始, 2表示停止 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_ALRAM_SCENECHANGE_INFO; ///@brief 事件类型 EVENT_IVS_SNAPMANUAL(SnapManual事件)对应数据块描述信息 typedef struct tagDEV_EVENT_SNAPMANUAL { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. }DEV_EVENT_SNAPMANUAL; ///@brief 超时未刷卡事件 typedef struct tagALARM_SWIPE_OVERTIME_INFO { NET_TIME_EX stuTime; // 事件发生的时间 BYTE bReserved[1024]; }ALARM_SWIPE_OVERTIME_INFO; ///@brief 无卡驾驶事件 typedef struct tagALARM_DRIVING_WITHOUTCARD_INFO { NET_TIME_EX stuTime; // 事件发生的时间 BYTE bReserved[1024]; }ALARM_DRIVING_WITHOUTCARD_INFO; ///@brief 多目标检测信息 typedef struct tagNET_FACE_INFO { int nObjectID; // 物体ID,每个ID表示一个唯一的物体 char szObjectType[128]; // 物体类型 int nRelativeID; // 这张目标抠图所属的大图的ID DH_RECT BoundingBox; // 包围盒 DH_POINT Center; // 物体型心 } NET_FACE_INFO; ///@brief 人体温信息 typedef struct tagNET_HUMAN_TEMPERATURE_INFO { double dbTemperature; // 温度 EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位 BOOL bIsOverTemp; // 是否温度异常高 BOOL bIsUnderTemp; // 是否温度异常低 BYTE bReserved[132]; // 预留字段 } NET_HUMAN_TEMPERATURE_INFO; ///@brief 事件类型EVENT_IVS_FACEDETECT(目标检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FACEDETECT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE reserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szSnapDevAddress[MAX_PATH]; // 抓拍当前目标的设备地址,如:滨康路37号 unsigned int nOccurrenceCount; // 事件触发累计次数 EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别 int nAge; // 年龄,-1表示该字段数据无效 unsigned int nFeatureValidNum; // 目标特征数组有效个数,与 emFeature 结合使用 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emFeature[DH_MAX_FACEDETECT_FEATURE_NUM]; // 目标特征数组,与 nFeatureValidNum 结合使用 int nFacesNum; // 指示stuFaces有效数量 NET_FACE_INFO stuFaces[10]; // 多张目标时使用,此时没有Object EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高 char szUID[DH_COMMON_STRING_32]; // 抓拍人员写入数据库的唯一标识符 BYTE bReserved2[4]; // 保留字节 NET_FEATURE_VECTOR stuFeatureVector; // 特征值信息 char szFeatureVersion[32]; // 特征值算法版本 EM_FACE_DETECT_STATUS emFaceDetectStatus; // 目标在摄像机画面中的状态 NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 UINT nFaceQuality; // 目标抓拍质量分数,范围 0~10000 double dHumanSpeed; // 人的运动速度, km/h int nFaceAlignScore; // 目标对齐得分分数,范围 0~10000,-1为无效值 int nFaceClarity; // 目标清晰度分数,范围 0~10000,-1为无效值 BOOL bHumanTemperature; // 人体温信息是否有效 NET_HUMAN_TEMPERATURE_INFO stuHumanTemperature; // 人体温信息, bHumanTemperature为TURE时有效 char szCameraID[64]; // 国标编码 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_FACE_ORIGINAL_SIZE stuOriginalSize; // 算法目标分析时的实际目标尺寸. 宽高为0是无效 EM_GLASS_STATE_TYPE emGlass; // 戴眼镜状态 EM_HAT_STYLE emHat; // 帽子状态 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_IMAGE_INFO_EX3* pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[392 - POINTERSIZE]; // 保留字节,留待扩展 } DEV_EVENT_FACEDETECT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICJAM_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bJamLenght; // 表示拥堵长度(总车道长度百分比)0-100 BYTE reserved; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 NET_TIME_EX stuStartJamTime; // 开始停车时间 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效) int nAlarmIntervalTime; // 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了) DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 int nJamRealLength; // 表实际的拥堵长度,单位米 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BOOL bJamRegionFlagValid; // 区域拥堵标志是否有效 UINT nJamRegionFlag; // 区域拥堵标志 0-车道拥堵 1-区域拥堵 BYTE bReserved[868]; // 保留字节,留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 } DEV_EVENT_TRAFFICJAM_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKING_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE reserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 NET_TIME_EX stuStartParkingTime; // 开始停车时间 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效) int nAlarmIntervalTime; // 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了) int nParkingAllowedTime; // 允许停车时长,单位:秒。 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESEED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BOOL bIsExistAlarmRecord; // rue:有对应的报警录像; false:无对应的报警录像 DWORD dwAlarmRecordSize; // 录像大小 char szAlarmRecordPath[DH_COMMON_STRING_256]; // 录像路径 char szFTPPath[DH_COMMON_STRING_256]; // FTP路径 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE byPreAlarm; // 是否为违章预警图片,0 违章停车事件1 预警事件(预警触发后一定时间,车辆还没有离开,才判定为违章)由于此字段会导致事件含义改变,必须和在平台识别预警事件后,才能有此字段, BYTE bReserved2[3]; // 保留字节,留待扩展. NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nPresetID; // 预置点编号,从1开始 char szSN[32]; // 设备SN号 BYTE bReserved[184]; // 保留字节,留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 BOOL bHasNonMotor; // 是否有非机动车对象 UINT nParkingDuration; // 违停持续时间,单位:秒, 0表示无意义 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_PARKING_INFO, DEV_EVENT_TRAFFIC_PARKING_B_INFO, DEV_EVENT_TRAFFIC_PARKING_C_INFO, DEV_EVENT_TRAFFIC_PARKING_D_INFO,DEV_EVENT_TRAFFIC_PARKING_MANUAL_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_WRONGROUTE(交通违章-不按车道行驶)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_WRONGROUTE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nSpeed; // 车辆实际速度,km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE bReserved[972]; // 保留字节,留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_WRONGROUTE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_CROSSLANE(交通违章-违章变道)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_CROSSLANE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nSpeed; // 车辆实际速度,km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[836]; // 保留字节,留待扩展.留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_CROSSLANE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_OVERYELLOWLINE(交通违章-压黄线)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nSpeed; // 车辆实际速度,km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BOOL bIsExistAlarmRecord; // rue:有对应的报警录像; false:无对应的报警录像 DWORD dwAlarmRecordSize; // 录像大小 char szAlarmRecordPath[DH_COMMON_STRING_256]; // 录像路径 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE bReserved[532]; // 保留字节,留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 int nDetectNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_DRIVINGONSHOULDER(交通违章-路肩行驶事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nSpeed; // 车辆实际速度,km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 } DEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE(交通违章-黄牌车占道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nSpeed; // 车辆实际速度,km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE bReserved[1016]; // 保留字节,留待扩展. DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 } DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_NOPASSING(交通违章-禁止通行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NOPASSING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int UTCMS; // int nMark; // 底层产生的触发抓拍帧标记 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[3]; int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byReserved[984]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_NOPASSING_INFO; ///@brief 流量统计记录 typedef struct tagDH_TRAFFICFLOWSTAT { char szMachineAddress[256]; // 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineGroup char szMachineName[256]; // 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineName char szDrivingDirection[3][32]; // 行驶方向"Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和下行的两个地点,UTF-8编码 int nLane; // 车道号 使用用户配置的车道编号 NET_TIME_EX UTC; // 统计时间,转换到UTC int nPeriod; // 统计周期,单位分钟 int nVehicles; // 通过车辆总数 float fAverageSpeed; // 平均车速,单位km/h float fAverageLength; // 平均车长,单位米 float fTimeOccupyRatio; // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例 float fSpaceOccupyRatio; // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离 float fSpaceHeadway; // 车头间距,相邻车辆之间的距离,单位米/辆 float fTimeHeadway; // 车头时距,单位秒/辆 float fDensity; // 车辆密度,每公里的车辆数,单位辆/km int nOverSpeedVehicles; // 超速车辆数 int nUnderSpeedVehicles; // 低速车辆数 int nLargeVehicles; // 大车数量 车辆类型判断标准参见TrafficSnapshot配置表 int nMediumVehicles; // 中型车数量 int nSmallVehicles; // 小车数量 int nMotoVehicles; // 摩托车数量 int nLongVehicles; // 超长车数量 char szChannel[64]; // 流量数据所属通道号 char szResvered[1024]; // 保留字段 }DH_TRAFFICFLOWSTAT; ///@brief 事件类型 TrafficFlowStat Info(交通流量统计事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_FLOWSTAT_INFO { char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLaneCnt; // 通道总数 DH_TRAFFICFLOWSTAT stTrafficFlowStats[DH_MAX_LANE_NUM]; // 流量统计记录,是一个数组 char Reserved[4]; // 保留字节对齐 }DEV_EVENT_TRAFFIC_FLOWSTAT_INFO; ///@brief 手动抓拍专用上报定制内容 typedef struct tagEVENT_MANUALSNAP_CUSTOM_DATA { EVENT_CUSTOM_WEIGHT_INFO stuWeighInfo; // 建委地磅定制称重信息 BYTE byReserved[472]; // 保留字节 }EVENT_MANUALSNAP_CUSTOM_DATA; ///@brief 停车位数据信息 typedef struct tagEVENT_MANUALSNAP_PARKING_INFO { UINT nChannel; // 通道号,从0开始, -1表示未知通道 UINT nStatus; // 车位是否有车标记:0:未知 1:有车 2:无车 char szPlateNumber[64]; // 车牌号码 char szParkingNo[32]; // 车牌号码 char szReserved[128]; // 保留字节 }EVENT_MANUALSNAP_PARKING_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_MANUALSNAP(交通手动抓拍事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_MANUALSNAP_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 BYTE szManualSnapNo[64]; // 手动抓拍序号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 检测到的车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byOpenStrobeState; // 开闸状态, 具体请见 EM_OPEN_STROBE_STATE BYTE byReserved[1]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 int nParkingInfoNum; // 停车位数据信息数组实际有效大小 BYTE bReserved[500]; // 保留字节,留待扩展. EVENT_MANUALSNAP_CUSTOM_DATA stuCustom; // 手动抓拍专用上报内容 EVENT_COMM_INFO stCommInfo; // 公共信息 EVENT_MANUALSNAP_PARKING_INFO stuParkingInfo[32]; // 停车位数据信息 }DEV_EVENT_TRAFFIC_MANUALSNAP_INFO; ///@brief 停车位的数据信息 typedef struct tagNET_MANUALSNAP_PARKINGSPACE_INFO { int nStatus; // 0:未知 1:有车 2:无车 char szPlateNumber[64]; // 车牌号码 char szParkingNo[32]; // 车位号 BYTE byReserved[412]; // 保留字节 }NET_MANUALSNAP_PARKINGSPACE_INFO; ///@brief 事件 EVENT_IVS_TRAFFIC_PARKINGSPACE_MANUALSNAP (路侧停车位手动抓图) 对应的数据块描述信息 typedef struct tagDEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 char szSerialNo[128]; // 和客户端请求的抓图序列号对应 int nParkingNum; // 有效停车个数 NET_MANUALSNAP_PARKINGSPACE_INFO stuParkingInfo[32]; // 停车信息 char szSN[32]; // 设备序列号 BYTE bReserved[484]; // 保留字节,留待扩展. }DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_STAY(交通滞留事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_STAY_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved0[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1012]; EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_STAY_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_VEHICLEINROUTE(有车占道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nSpeed; // 车速 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved0[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE byReserved[884]; EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO; ///@brief 报警事件类型EVENT_IVS_CONVEYER_BELT_BULK (传送带大块异物检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CONVEYER_BELT_BULK_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nDetectLineNum; // 规则检测线顶点数 DH_POINT stuDetectLine[20]; // 规则检测线 UINT nEventID; // 事件ID int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[20]; // 规则检测区域 UINT nSizeFilterThreshold; // 大块物占比值, 尺寸大于SizeFilterThreshold / 10* ComparetLine表示的传送带平均宽度 的物体被认为是大块异物取值[2-8] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[20]; // 检测到的物体信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图信息 UINT nConveyorBeltWidth; // 皮带实际物理宽度,范围[0-1000],单位cm UINT nBulkEventCount; // 大块物事件累计次数 BYTE byReserved[1012]; // 保留字节 } DEV_EVENT_CONVEYER_BELT_BULK_INFO; ///@brief 报警事件类型EVENT_IVS_CONVEYER_BELT_NONLOAD (传送带空载检测事件) 对应的数据块描述信息 typedef struct tagDDEV_EVENT_CONVEYER_BELT_NONLOAD_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_POINT stuDetectRegion[20]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图信息 int nAlarmLevel; //装载率报警等级 int nEventDataType; // 0:未知 1:实时数据 2:报警数据 BYTE byReserved[1016]; // 保留字节 } DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO; ///@brief 报警事件类型EVENT_IVS_CONVEYER_BELT_RUNOFF (传送带跑偏检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CONVEYER_BELT_RUNOFF_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 UINT nEventID; // 事件ID BYTE byReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[20]; // 规则检测区域 UINT nWarningThreshold; // 预警值,用于界定跑偏的程度;0<预警值<停机值<10取值[1-9] UINT nDowntimeThreshold; // 停机值,用于界定跑偏的程度;0<预警值<停机值<10取值[1-9] UINT nAlarmType; // 皮带跑偏报警类型,0代表不报警,1代表预警报警,2代表停机报警 UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[20]; // 检测到的物体信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图信息 int nRunOffEventCount; // 跑偏事件累计次数 BYTE byReserved[1016]; // 保留字节 } DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO; ///@brief 8192坐标点 typedef struct tagNET_UINT_POINT { UINT nx; UINT ny; } NET_UINT_POINT; ///@brief 报警事件类型EVENT_IVS_CONVEYER_BELT_COAL_RATIO (传送带煤量检测) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 NET_TIME_EX UTC; // 事件发生的时间 UINT UTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 int nDetectRegionNum; // 规则检测区域顶点数 NET_UINT_POINT stuDetectRegion[20]; // 规则检测区域 float fCoalData; // 当前煤量占比值 UINT nAlarmOutMode; // 本次事件触发对应的报警模式 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图信息 char szReserved[1024]; // 保留字节 }DEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO; ///@brief 图片类型 typedef enum tagEM_IMAGE_TYPE { EM_IMAGE_UNKNOWN = -1, // 未知 EM_IMAGE_INSPECTOR, // 安检员图片 EM_IMAGE_PACKAGE // 包裹图片 }EM_IMAGE_TYPE; ///@brief 图片信息扩展 typedef struct tagNET_IMAGE_INFO_EX { UINT nIndexInData; // 在上传图片数据中的图片序号 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 EM_IMAGE_TYPE emType; // 图片类型 }NET_IMAGE_INFO_EX; ///@brief 报警事件类型 EVENT_ALARM_VIDEOBLIND(视频遮挡报警) typedef struct tagDEV_EVENT_ALARM_VIDEOBLIND { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_TIME_EX stuTime; // 事件发生的时间, (设备时间, 不一定是utc时间) char szDriverID[32]; // 司机ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 NET_IMAGE_INFO_EX stuImageInfo[6]; // 图片信息扩展 int nImageInfo; // 图片信息扩展的个数 NET_IMAGE_INFO_EX2 stuImageInfoEx2[32]; // 图片信息数组 int nImageInfoEx2Num; // 图片信息个数 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char byReserved[1023]; // 保留字节 }DEV_EVENT_ALARM_VIDEOBLIND; ///@brief 报警事件类型 EVENT_ALARM_ANALOGALARM(模拟量报警通道报警), typedef struct tagDEV_EVENT_ALARM_ANALOGALRM_INFO { int nChannelID; // (视频)通道号 char szName[DH_COMMON_STRING_128]; // 模拟量报警通道名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nIndex; // 模拟量报警通道号 NET_SENSE_METHOD emSensor; // 传感器类型 int nStatus; // 数据状态, -1:未知,0:正常,1:数据无效(超过量程), // 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4, // 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4 float fValue; // 探测器数值 NET_TIME stuCollectTime; // 数据采集时间(UTC) DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TEMPERATURE_UNIT emTemperatureUnit; // 传感器数值单位 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved2[1019]; // 保留字节,留待扩展 }DEV_EVENT_ALARM_ANALOGALRM_INFO; ///@brief EVENT_ALARM_VEHICLEACC(ACC断电报警) typedef struct tagDEV_EVENT_ALARM_VEHICLEACC_INFO { int nChannelID; // 通道号 char szName[DH_COMMON_STRING_128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 int nACCStatus; // ACC状态 0:无效(兼容用) , 1:开启 , 2:关闭 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bConstantElectricStatus; // 常电状态 , 0:无效(兼容用) , 1:连接 , 2:断开 BYTE bReserved[1022]; // 保留字节,留待扩展. }DEV_EVENT_ALARM_VEHICLEACC_INFO; ///@brief 报警事件类型 EVENT_ALARM_VEHICLE_TURNOVER(车辆侧翻) , EVENT_ALARM_VEHICLE_COLLISION(车辆撞车) typedef struct tagDEV_EVENT_VEHICEL_ALARM_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 字节对齐用 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE bReserved[1024]; // 保留字节,留待扩展. }DEV_EVENT_VEHICEL_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_PSRISEDETECTION (囚犯起身事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_PSRISEDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 double dInitialUTC; // 事件初始UTC时间 UTC为事件的UTC (1970-1-1 00:00:00)秒数。 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 BYTE bReserved[594]; // 保留字节,留待扩展. }DEV_EVENT_PSRISEDETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY(斑马线行人优先事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 double dInitialUTC; // 事件初始UTC时间 UTC为事件的UTC (1970-1-1 00:00:00)秒数。 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[984]; // 保留字节,留待扩展. EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(占用公交车道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nSpeed; // 车速,km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[980]; // 保留字节,留待扩展. EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_BACKING(违章倒车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_IVS_TRAFFIC_BACKING_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nSpeed; // 车速,km/h BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 表示交通车辆的数据库记录 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[848]; // 保留字节,留待扩展. EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_IVS_TRAFFIC_BACKING_INFO; ///@brief 事件类型EVENT_IVS_AUDIO_ABNORMALDETECTION(声音异常检测)对应数据块描述信息 typedef struct tagDEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDecibel; // 声音强度 int nFrequency; // 声音频率 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE bReserved[1024]; // 保留字节,留待扩展. }DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT(交通违章-闯黄灯事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLightState; // 红绿灯状态 0:未知 1:绿灯 2:红灯 3:黄灯 int nSpeed; // 车速,km/h int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_TIME_EX stYellowLightUTC; // 黄灯开始时间 unsigned int nYellowLightPeriod; // 黄灯周期间隔时间,单位秒 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byRedLightMargin; // 黄灯容许间隔时间,单位:秒 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 BYTE bReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 } DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO; ///@brief 离岗的触发模式 typedef enum tagEM_LEAVEDETECTION_TRIGGER_MODE { EM_LEAVEDETECTION_TRIGGER_UNKNOEN, // 未知 EM_LEAVEDETECTION_TRIGGER_NOPERSON, // 无人 EM_LEAVEDETECTION_TRIGGER_LEAVE, // 离开 EM_LEAVEDETECTION_TRIGGER_STATIC, // 静止(睡岗) EM_LEAVEDETECTION_TRIGGER_OUTPERSONLIMIT, // 不在允许值岗人数范围内(值岗人数异常) }EM_LEAVEDETECTION_TRIGGER_MODE; ///@brief 检测状态 typedef enum tagEM_LEAVEDETECTION_STATE { EM_LEAVEDETECTION_STATE_UNKNOWN = 0, // 未知 EM_LEAVEDETECTION_STATE_LEAVE, // 离岗 EM_LEAVEDETECTION_STATE_ON_THE_JOB, // 在岗 }EM_LEAVEDETECTION_STATE; ///@brief 事件类型 EVENT_IVS_LEAVEDETECTION(离岗检测事件)对应数据块描述信息 typedef struct tagDEV_EVENT_IVS_LEAVE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 EM_LEAVEDETECTION_TRIGGER_MODE emTriggerMode; // 离岗的触发模式 EM_LEAVEDETECTION_STATE emState; // 检测状态 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 char szUserName[32]; // 用户名称 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[50]; // 保留字节 } DEV_EVENT_IVS_LEAVE_INFO; ///@brief 事件类型 EVENT_IVS_CLIMBDETECTION(攀高检测事件)对应数据块描述信息 typedef struct tagDEV_EVENT_IVS_CLIMB_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 int nDetectLineNum; // 规则检测线顶点数 DH_POINT DetectLine[DH_MAX_DETECT_LINE_NUM]; // 规则检测线 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE bReserved[890]; // 保留字节 }DEV_EVENT_IVS_CLIMB_INFO; ///@brief 事件类型 EVENT_IVS_MULTISCENESWITCH(多场景切换事件)对应数据块描述信息 typedef struct tagDEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved[1027]; // 保留字节 } DEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(黄网格线抓拍事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nInterval1; // 第二张和第一张的延时时间,单位秒 int nInterval2; // 第三张和第二张的延时时间,单位秒 int nFollowTime; // 跟随时间,如果一辆车与前一辆车进入黄网格的时间差小于此值,就认为是跟车进入,跟车进入情况下如果停车则不算违章 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE bReserved[984]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO; ///@brief 停车场信息 typedef struct tagDEV_TRAFFIC_PARKING_INFO { int nFeaturePicAreaPointNum; // 特征图片区点个数 DH_POINT stFeaturePicArea[DH_MAX_POLYGON_NUM]; // 特征图片区信息 BYTE bReserved[572]; // 保留字节 }DEV_TRAFFIC_PARKING_INFO; ///@brief 一位多车信息 typedef struct tagDEV_OCCUPIED_WARNING_INFO { char szParkingNo[32]; // 车位号 char szPlateNumber[5][64]; // 车牌号码 int nPlateNumber; // 车牌数量 BYTE bReserved[508]; // 预留字节 } DEV_OCCUPIED_WARNING_INFO; ///@brief 停车方向 typedef enum tagEM_PARKINGSPACE_DIRECTION { EM_PARKINGSPACE_DIRECTION_UNKNOWN, // 未知 EM_PARKINGSPACE_DIRECTION_REVERSE, // 逆向 EM_PARKINGSPACE_DIRECTION_FORWARD, // 正向 }EM_PARKINGSPACE_DIRECTION; ///@brief 禁停状态 typedef enum tagEM_FORBID_PARKING_STATUS { EM_FORBID_PARKING_STATUS_UNKNOWN, // 未知 EM_FORBID_PARKING_STATUS_NOT_FORBID,// 未禁止 EM_FORBID_PARKING_STATUS_FORBID, // 禁止 }EM_FORBID_PARKING_STATUS; ///@brief 是否跨位 typedef enum tagEM_ACROSS_PARKING { EM_ACROSS_PARKING_UNKNOWN, // 未知 EM_ACROSS_PARKING_NO, // 未跨位 EM_ACROSS_PARKING_YES, // 跨位 } EM_ACROSS_PARKING; ///@brief 车位抓拍触发类型 typedef enum tagEM_PARKING_TRIGGER_TYPE { EM_PARKING_TRIGGER_TYPE_UNKNOWN = -1, // 未知 EM_PARKING_TRIGGER_TYPE_NONMANUAL, // 非手动触发 EM_PARKING_TRIGGER_TYPE_MANUAL, // 手动触发 }EM_PARKING_TRIGGER_TYPE; ///@brief 车位有车事件类型 typedef enum tagEM_PARKING_SPACE_TYPE { EM_PARKING_SPACE_TYPE_UNKNOWN = -1, // 未知 EM_PARKING_SPACE_TYPE_NORMAL, // 正常驶入 EM_PARKING_SPACE_TYPE_CHANGE, // 泊车变更事件 }EM_PARKING_SPACE_TYPE; ///@brief 是否小车占大车位 typedef enum tagEM_SMALL_OCCUPY_LARGE { EM_SMALL_OCCUPY_LARGE_UNKNOWN = 0, // 未知 EM_SMALL_OCCUPY_LARGE_NO, // 未小车占大车位 EM_SMALL_OCCUPY_LARGE_YES, // 小车占大车位 }EM_SMALL_OCCUPY_LARGE; ///@brief 是否为非允许名单车辆 typedef enum tagEM_NON_ALLOW_LIST_CAR { EM_NON_ALLOW_LIST_CAR_UNKNOWN = 0, // 未知 EM_NON_ALLOW_LIST_CAR_NO, // 允许名单车辆 EM_NON_ALLOW_LIST_CAR_YES, // 非允许名单车辆 }EM_NON_ALLOW_LIST_CAR; ///@brief 是否为非新能源车辆 typedef enum tagEM_NON_NEW_ENERGY_CAR { EM_NON_NEW_ENERGY_CAR_UNKNOWN = 0, // 未知 EM_NON_NEW_ENERGY_CAR_NO, // 新能源车辆 EM_NON_NEW_ENERGY_CAR_YES, // 非新能源车辆 }EM_NON_NEW_ENERGY_CAR; ///@brief 停车变更信息 typedef struct tagNET_PARKING_CHANGE_INFO { char szPreParkingNo[32]; // 变更前的车位 char szAfterParkingNo[32]; // 变更后的车位 UINT nStrandTime; // 变更车位停车时长,单位:秒 BYTE byReserved[252]; // 保留字节 }NET_PARKING_CHANGE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(车位有车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 int nParkingSpaceStatus; // 车位综合的状态,0-占用,1-空闲,2-压线 DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo; // 停车场信息 BYTE byPlateTextSource; // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别 BYTE byReserved2[3]; // 字节对齐 char szParkingNum[32]; // 车位(地磁)编号,球机定制项目 DWORD dwPresetNum; // 球机预置位编号,球机定制项目 BOOL bParkingFault; // 车位是否有故障,球机定制项目 BYTE bReserved[364]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_INTELLIGENCE_IMAGE_INFO stuParkingImage; // 车位图片信息 UINT nConfidence; // 车位置信度(0-100) EM_ACROSS_PARKING emAcrossParking; // 是否跨位 EM_PARKINGSPACE_DIRECTION emParkingDirection; // 停车方向 EM_FORBID_PARKING_STATUS emForbidParkingStatus; // 禁停状态 EM_SMALL_OCCUPY_LARGE emSmallOccupyLarge; // 是否小车占大车位 EM_NON_ALLOW_LIST_CAR emNonAllowListCar; // 是否为非允许名单车辆 EM_NON_NEW_ENERGY_CAR emNonNewEnergyCar; // 是否为非新能源车辆 BYTE byReserved1[992]; // 为图片信息做预留字节,新增的字段请在该保留字节下面添加 EM_PARKING_TRIGGER_TYPE emTriggerType; // 触发类型 DEV_OCCUPIED_WARNING_INFO stuOccupiedWarningInfo; // 一位多车信息, 如果车位此前没有车占用, 不会带有本字段信息 char szAllParkingNo[12][32]; // 所有使能的车位号 int nParkingNoNum; // 使能车位号的个数 EM_PARKING_SPACE_TYPE emParkingSpaceType; // 车位有车的事件类型 NET_PARKING_CHANGE_INFO stuParkingChangeInfo; // 停车变更信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[4]; // 字节对齐 }DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO; ///@brief 匹配到的车辆驶入信息 typedef struct tagDEV_MATCH_PARKING_INFO { char szParkingNo[32]; // 驶入的车位号 char szPlateNum[64]; // 驶入的车牌号信息 UINT nSimilarity; // 驶出车牌号码与匹配到的驶入车牌号码的相似度, 全匹配成功为100, 失败为0。 // 如果开启模糊匹配, 全匹配不为100则进行模糊匹配, 如下 // 1. 除汉字外,所有的数字和字母一样 为95 // 2. 有一位数字或字母不一样,则为90 // 3. 有两位数字或字母不一样,则为80 // 其他的情况则认为没有匹配到,则为0 BYTE bReserved[508]; // 保留字节 } DEV_MATCH_PARKING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(车位无车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo; // 停车场信息 BYTE byPlateTextSource; // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别 BYTE byReserved2[3]; // 字节对齐 char szParkingNum[32]; // 车位(地磁)编号,球机定制项目 DWORD dwPresetNum; // 球机预置位编号,球机定制项目 BOOL bParkingFault; // 车位是否有故障,球机定制项目 NET_IMAGE_INFO_EX3 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[364-POINTERSIZE]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_INTELLIGENCE_IMAGE_INFO stuGlobalImage; // 全景大图信息 NET_INTELLIGENCE_IMAGE_INFO stuParkingImage; // 车位图片信息 UINT nConfidence; // 车位置信度(0-100) BYTE byReserved1[1016]; // 为图片信息做预留字节,新增的字段请在该保留字节下面添加 EM_PARKING_TRIGGER_TYPE emTriggerType; // 触发方式 DEV_MATCH_PARKING_INFO stuMatchParkingInfo[5]; // 匹配到的车辆驶入信息 int nMatchParkingNum; // 匹配到的车辆驶入信息个数 char szAllParkingNo[12][32]; // 所有使能的车位号 int nParkingNoNum; // 使能车位号的个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE (车位压线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo; // 停车场信息 BYTE byReserved[384]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT (左转未礼让直行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TURNLEFTAFTERSTRAIGHT_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byReserved[984]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TURNLEFTAFTERSTRAIGHT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN (大弯小转事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BIGBENDSMALLTURN_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_BIGBENDSMALLTURN_INFO; ///@brief 事件类型EVENT_IVS_ROAD_CONSTRUCTION (道路施工监测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_ROAD_CONSTRUCTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_RECT stuBoudingBox; // 施工位置包围盒,8192坐标系 BYTE byReserved[512]; // 保留字节 } DEV_EVENT_ROAD_CONSTRUCTION_INFO; ///@brief 事件类型EVENT_IVS_ROAD_BLOCK (路障监测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_ROAD_BLOCK_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_RECT stuBoudingBox; // 路障位置包围盒,8192坐标系 BYTE byReserved[512]; // 保留字节 } DEV_EVENT_ROAD_BLOCK_INFO; ///@brief 事件类型 EVENT_IVS_INSTALL_CARDREADER (安装读卡器事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_INSTALL_CARDREADER_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[1024]; // 保留字节,留待扩展 }DEV_EVENT_INSTALL_CARDREADER_INFO; ///@brief 事件类型 EVENT_IVS_ACC_OFF_SNAP (车载设备断电前抓拍上传事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ACC_OFF_SNAP_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[1024]; // 保留字节,留待扩展 }DEV_EVENT_ACC_OFF_SNAP_INFO; ///@brief 危险等级 typedef enum tagEM_DANGER_GRADE_TYPE { EM_DANGER_GRADE_UNKNOWN = -1, // 未知 EM_DANGER_GRADE_NORMAL, // 普通级别 EM_DANGER_GRADE_WARN, // 警示级别 EM_DANGER_GRADE_DANGER, // 危险级别 } EM_DANGER_GRADE_TYPE; ///@brief 包裹信息 typedef struct tagNET_PACKAGE_INFO { EM_DANGER_GRADE_TYPE emDangerGrade; // 包裹危险等级, 一个包裹内有多个危险等级显示最高危等级 BYTE byReserved[128]; // 保留字节,留待扩展 } NET_PACKAGE_INFO; ///@brief 物品类型 typedef enum tagEM_INSIDE_OBJECT_TYPE { EM_INSIDE_OBJECT_UNKNOWN, // 算法未识别物品 EM_INSIDE_OBJECT_KNIFE, // 刀具 EM_INSIDE_OBJECT_BOTTLELIQUID, // 瓶装液体 EM_INSIDE_OBJECT_GUN, // 枪支 EM_INSIDE_OBJECT_UMBRELLA, // 雨伞 EM_INSIDE_OBJECT_PHONE, // 手机 EM_INSIDE_OBJECT_NOTEBOOK, // 笔记本 EM_INSIDE_OBJECT_POWERBANK, // 充电宝 EM_INSIDE_OBJECT_SHOES, // 鞋子 EM_INSIDE_OBJECT_ROD, // 杠子 EM_INSIDE_OBJECT_METAL, // 金属 EM_INSIDE_OBJECT_EXPLOSIVE, // 爆炸物 EM_INSIDE_OBJECT_CONTAINERSPRAY, // 喷雾喷灌 EM_INSIDE_OBJECT_EXPLOSIVE_FIREWORKS, // 烟花爆竹 EM_INSIDE_OBJECT_LIGHTER, // 打火机 EM_INSIDE_OBJECT_STICK, // 警棍 EM_INSIDE_OBJECT_BRASSKNUCKLE, // 指虎 EM_INSIDE_OBJECT_HANDCUFFS, // 手铐 EM_INSIDE_OBJECT_IVORY, // 象牙 EM_INSIDE_OBJECT_BOOK, // 书籍 EM_INSIDE_OBJECT_CD, // 光盘 EM_INSIDE_OBJECT_HAMMERS, // 锤子 EM_INSIDE_OBJECT_PLIERS, // 钳子 EM_INSIDE_OBJECT_AXE, // 斧头 EM_INSIDE_OBJECT_SCREW_DRIVER, // 螺丝刀 EM_INSIDE_OBJECT_WRENCH, // 扳手 EM_INSIDE_OBJECT_ELECTRIC_SHOCK_STICK, // 电击棍 EM_INSIDE_OBJECT_THERMOS, // 保温杯 EM_INSIDE_OBJECT_GLASS_BOTTLES, // 玻璃杯 EM_INSIDE_OBJECT_PLASTIC_BOTTLE, // 塑料瓶 EM_INSIDE_OBJECT_IGNITION_OIL, // 打火机油 EM_INSIDE_OBJECT_NAIL_POLISH, // 指甲油 EM_INSIDE_OBJECT_BLUNT_INSTRUMENT, // 工具 EM_INSIDE_OBJECT_SCISSORS, // 剪刀 EM_INSIDE_OBJECT_ELECTRONIC, // 电子产品 EM_INSIDE_OBJECT_PISTOL, // 手枪 EM_INSIDE_OBJECT_FOLDINGKNIFE, // 折叠刀 EM_INSIDE_OBJECT_SHARPKNIFE, // 尖刀 EM_INSIDE_OBJECT_KITCHENKNIFE, // 菜刀 EM_INSIDE_OBJECT_UTILITYKNIFE, // 美工刀 EM_INSIDE_OBJECT_FIREWORKS, // 烟花 EM_INSIDE_OBJECT_FIRECRACKER, // 爆竹 EM_INSIDE_OBJECT_POWDER, // 粉末 EM_INSIDE_OBJECT_IMPENETERABLE_MATERALS, // 难穿透物品 } EM_INSIDE_OBJECT_TYPE; ///@brief 物品信息 typedef struct tagNET_INSIDE_OBJECT { EM_DANGER_GRADE_TYPE emDangerGrade; // 物品危险等级 EM_INSIDE_OBJECT_TYPE emObjType; // 物品类型 UINT nSimilarity; // 相似度 NET_RECT stuBoundingBox; // 包围盒 char szObjectType[32]; // 自定义物品类型,emObjType为 EM_INSIDE_OBJECT_UNKNOWN 时使用 BYTE byReserved[76]; // 保留字节,留待扩展 } NET_INSIDE_OBJECT; ///@brief X光机图片类型 typedef enum tagEM_XRAY_IMAGE_TYPE { EM_XRAY_IMAGE_TYPE_UNKNOWN = -1, // 未知 EM_XRAY_IMAGE_TYPE_COLOR, // 彩图 EM_XRAY_IMAGE_COLOR_TYPE_OVERLAY, // 彩色叠加图 }EM_XRAY_IMAGE_TYPE; ///@brief X光机视角类型 typedef enum tagEM_XRAY_VIEW_TYPE { EM_XRAY_VIEW_TYPE_UNKNOWN = -1, // 未知 EM_XRAY_VIEW_TYPE_MASTER, // 主视角 EM_XRAY_VIEW_TYPE_SLAVE, // 从视角 }EM_XRAY_VIEW_TYPE; ///@brief 图片列表 typedef struct tagNET_XRAY_IMAGE_INFO { EM_XRAY_VIEW_TYPE emViewType; // 视图类型 EM_XRAY_IMAGE_TYPE emImageType; // 图片类型 unsigned int nOffset; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位:字节 BYTE byReserved[1024]; // 预留字节 }NET_XRAY_IMAGE_INFO; ///@brief 客户自定义信息, X光机定制专用 typedef struct tagNET_XRAY_CUSTOM_INFO { EM_XRAY_VIEW_TYPE emViewType; // 视角类型 char szSerialNumber[128]; // 流水号 BYTE byReserved[124]; // 保留字节 } NET_XRAY_CUSTOM_INFO; ///@brief 包裹产生方式 typedef enum tagEM_XRAY_PACKAGE_MODE { EM_XRAY_PACKAGE_MODE_UNKNOWN = -1, // 未知方式 EM_XRAY_PACKAGE_MODE_LOCAL, // 本地判图结果 EM_XRAY_PACKAGE_MODE_CENTRAL, // 集中判图模式中的本地预判结果 }EM_XRAY_PACKAGE_MODE; ///@brief X光机关联图片类型 typedef enum tagEM_XRAY_RELATED_IMAGE_TYPE { EM_XRAY_RELATED_IMAGE_TYPE_UNKNOWN = -1, // 未知 EM_XRAY_RELATED_IMAGE_TYPE_LARGE_FACE, // 表示目标大图 EM_XRAY_RELATED_IMAGE_TYPE_SMALL_FACE, // 表示目标小图 EM_XRAY_RELATED_IMAGE_TYPE_PACKAGE_VISIBLE_LIGHT, // 表示包裹可见光图 }EM_XRAY_RELATED_IMAGE_TYPE; ///@brief 关联图片 typedef struct tagNET_XRAY_RELATED_IMAGE_INFO { EM_XRAY_RELATED_IMAGE_TYPE emImageType; // 图片类型 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char byReserved[64]; // 预留字节 }NET_XRAY_RELATED_IMAGE_INFO; ///@brief 条码可见光图 typedef struct tagNET_BAR_CODE_IMAGE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char szResvered[248]; // 保留字节 }NET_BAR_CODE_IMAGE; ///@brief 与包裹关联的单号的内容 typedef struct tagNET_BAR_CODE_INFO { int nCodeCount; // 条码个数 char szCode[32][128]; // 条码信息 NET_BAR_CODE_IMAGE stuImage; // 条码可见光图 char szReserved[256]; // 保留字节 }NET_BAR_CODE_INFO; ///@brief 是否使用远程判图 typedef enum tagEM_XRAY_DETECTION_JUDGE_REMOTELY { EM_XRAY_DETECTION_JUDGE_REMOTELY_UNKNOWN = -1, // 未知, 当表示为未知时意为本地不送远程判图,集中判图时送到远程判图 EM_XRAY_DETECTION_JUDGE_REMOTELY_NOT_SEND_JUDGE, // 不送远端三方进行判图 EM_XRAY_DETECTION_JUDGE_REMOTELY_SEND_JUDGE, // 送远端三方进行判图 }EM_XRAY_DETECTION_JUDGE_REMOTELY; ///@brief 事件类型EVENI_IVS_XRAY_DETECTION (X光检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_XRAY_DETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 所属大类 NET_PACKAGE_INFO stuPacketInfo; // 包裹信息 char Reserved1[4]; // 保留字节对齐 UINT nObjectNum; // 主视角包裹内物品个数 NET_INSIDE_OBJECT stuInsideObj[MAX_INSIDEOBJECT_NUM]; // 主视角包裹内物品信息 UINT nSlaveViewObjectNum; // 从视角包裹内物品个数 NET_INSIDE_OBJECT stuSlaveViewInsideObj[MAX_INSIDEOBJECT_NUM];// 从视角包裹内物品信息 UINT nImageCount; // 图片数量 NET_XRAY_IMAGE_INFO stuImageInfo[8]; // 图片信息 UINT nViewCustomInfoNum; // 客户自定义信息个数 NET_XRAY_CUSTOM_INFO stuViewCustomInfo[4]; // 客户自定义信息, X光机定制专用 char szPackageTag[32]; // 包裹标识, 用来唯一标识一个包裹 EM_XRAY_PACKAGE_MODE emPackageMode; // 包裹产生方式 int nRelatedImageNum; // 关联图片数量 NET_XRAY_RELATED_IMAGE_INFO stuRelatedImageInfo[8]; // 关联图片 int nBarCodeCount; // 与包裹关联的单号的个数 NET_BAR_CODE_INFO stuBarCodeInfo[32]; // 与包裹关联的单号的内容 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 EM_XRAY_DETECTION_JUDGE_REMOTELY emJudgeRemotely; // 是否使用远程判图 BYTE byReserved[368]; // 保留字节,留待扩展 } DEV_EVENT_XRAY_DETECTION_INFO; ///@brief X光机关联图片类型 typedef enum tagEM_XRAY_IMAGELIST_TYPE { EM_XRAY_IMAGELIST_TYPE_UNKNOWN, // 未知 EM_XRAY_IMAGELIST_TYPE_ENERGY, // 能量图 EM_XRAY_IMAGELIST_TYPE_COLOR, // 彩色图 EM_XRAY_IMAGELIST_TYPE_COLOR_OVERLAY, // 彩色叠加图 EM_XRAY_IMAGELIST_TYPE_VISIBLE_LIGHT, // 可见光图 }EM_XRAY_IMAGELIST_TYPE; ///@brief 图片位置列表 typedef struct tagNET_XRAY_IMAGE_LIST { EM_XRAY_IMAGELIST_TYPE emType; // 图片类型 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 UINT nWorkDirID; // 工作目录ID char szPath[128]; // 图片路径 UINT nFileID; // 文件ID UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 UINT nXOffset; // 相对于包裹背景的x坐标 UINT nYOffset; // 相对于包裹背景的y坐标 char szReserved[128]; // 保留字节 }NET_XRAY_IMAGE_LIST; ///@brief 包裹背景 typedef struct tagNET_XRAY_BACKGROUND_INFO { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 BYTE nPartFlag; // 该字段废弃,请使用NET_XRAY_CHANNEL_INFO_LIST下的nPartFlag char szReserved1[3]; // 保留字节 char szReserved[124]; // 保留字节 }NET_XRAY_BACKGROUND_INFO; ///@brief 分组安全等级 typedef enum tagEM_GROUP_GRADE_TYPE { EM_GROUP_GRADE_TYPE_UNKNOWN = -1, // 未知 EM_GROUP_GRADE_TYPE_NORMAL, // 普通级别 EM_GROUP_GRADE_TYPE_WARN, // 警示级别 EM_GROUP_GRADE_TYPE_DANGER, // 危险级别 } EM_GROUP_GRADE_TYPE; ///@brief 包裹内危险物品信息 typedef struct tagNET_XRAY_INSIDE { UINT nID; // 物品ID NET_RECT stuBoundingBox; // 物品框图坐标 EM_GROUP_GRADE_TYPE emGrade; // 物品危险等级 UINT nSimilarity; // 物品检测相似度 EM_INSIDE_OBJECT_TYPE emType; // 物品类型 EM_INSIDE_OBJECT_TYPE emSubType; // 物品子类型 EM_INSIDE_OBJECT_TYPE emGroupType; // 物品分组类型 char szReserved[128]; // 保留字节 }NET_XRAY_INSIDE; ///@brief 包裹切包信息 typedef struct tagNET_XRAY_APPEAR_INFO { NET_RECT stuRect; // 切包时,包裹位置 TP_U64 nTimeMS; // 包裹切包的运行时刻,单位是ms TP_U64 nUTCTimeMS; // 包裹切包的第一时间,即生成原始图完毕的时间戳(标准UTC时间),单位为ms char szReserved[128]; // 保留字节 }NET_XRAY_APPEAR_INFO; ///@brief 通道信息列表 typedef struct tagNET_XRAY_CHANNEL_INFO_LIST { UINT nChannel; // 通道号,从0开始 UINT nImageListNum; // 图片位置列表个数 NET_XRAY_IMAGE_LIST stuImageList[16]; // 图片位置列表 NET_XRAY_BACKGROUND_INFO stuBackGround; // 包裹背景 UINT nInsideNum; // 包裹内危险物品信息个数 NET_XRAY_INSIDE stuInside[16]; // 包裹内危险物品信息 NET_XRAY_APPEAR_INFO stuAppearInfo; // 包裹切包信息 BYTE nPartFlag; // 半包状态 0 表示未知; 1 表示完整包裹; 2 表示不完整包裹 char szReserved1[3]; // 保留字节 char szReserved[252]; // 保留字节 }NET_XRAY_CHANNEL_INFO_LIST; ///@brief 融合视角的图片信息 typedef struct tagNET_XRAY_ALLCHANNEL_INFO_LIST { NET_XRAY_IMAGE_LIST stuAllImageList[16]; // 图片位置列表 UINT nAllImageListNum; // 图片位置列表个数 char szReserved[256]; // 保留字节 }NET_XRAY_ALLCHANNEL_INFO_LIST; ///@brief 事件类型EVENI_IVS_XRAY_DETECT_PACKAGE (X光机检测包裹事件)对应的数据块描述信息 typedef struct tagNET_EVENT_XRAY_DETECT_PACKAGE_INFO { char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nChannelID; // 通道号 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 所属大类 UINT nPackageID; // 包裹ID char szModelName[512]; // 模型名称 NET_XRAY_CHANNEL_INFO_LIST stuChannelInfoList[32]; // 通道信息列表 UINT nChannelInfoListNum; // 通道信息列表个数 UINT nRelatedImageNum; // 关联图片个数 NET_XRAY_RELATED_IMAGE_INFO stuRelatedImageInfo[32]; // 关联图片 NET_XRAY_ALLCHANNEL_INFO_LIST stuAllChannelInfoList; // 融合视角的图片信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nAction; // 0:脉冲,1:开始, 2:停止 unsigned int UTCMS; // UTC时间对应的毫秒数 BYTE byReserved[1016]; // 保留字节,留待扩展 } NET_EVENT_XRAY_DETECT_PACKAGE_INFO; ///@brief 事件类型 EVENT_IVS_NOTCLEARCAR(未清车告警)对应的数据块描述信息 typedef struct tagDEV_EVENT_NOTCLEARCAR_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_NOTCLEARCAR_INFO; ///@brief 事件类型 EVENT_IVS_SOSALEART(sos求救报警)对应的数据块描述信息 typedef struct tagDEV_EVENT_SOSALEART_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_SOSALEART_INFO; ///@brief 事件类型 EVENT_IVS_OVERLOAD(超载抓图)对应的数据块描述信息 typedef struct tagDEV_EVENT_OVERLOAD_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_OVERLOAD_INFO; ///@brief 事件类型 EVENT_IVS_NONWORKINGTIME(非工作时间告警)对应的数据块描述信息 typedef struct tagDEV_EVENT_NONWORKINGTIME_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_NONWORKINGTIME_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_HIGH_BEAM(远光灯违章事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_HIGH_BEAM_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 BYTE byReserved1[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved2[3]; // 保留字节对齐 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 车道号 int nSequence; // 抓拍结束状态,3/2/1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 车辆信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_TRAFFIC_HIGH_BEAM_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TRUCKFORBID(货车禁止事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICTRUCKFORBID_INFO { int nChannel; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int UTCMS; // UTC时间对应的毫秒数 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1016]; // 保留字节 } DEV_EVENT_TRAFFICTRUCKFORBID_INFO; ///@brief 事件类型 EVENT_IVS_DRIVINGWITHOUTCARD(无人驾驶报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DRIVINGWITHOUTCARD_INFO { int nChannelID; // 通道号 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[3]; // 保留对齐字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID BYTE byReserved1[1024]; // 保留字节 }DEV_EVENT_DRIVINGWITHOUTCARD_INFO; ///@brief 事件类型 EVENT_IVS_HIGHSPEED(车辆超速报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_HIGHSPEED_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[4]; // 保留字节 double dbPTS; // 时间戳(单位是毫秒) NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 int nSpeedLimit; // 车连限速值(km/h) int nCurSpeed; // 当前车辆速度(km/h) int nMaxSpeed; // 最高速度(Km/h) NET_TIME_EX stuStartTime; // 开始时间,nAction为2时上报此字段 BYTE byReserved1[1024]; // 保留字节 }DEV_EVENT_HIGHSPEED_INFO; ///@brief 全局拥挤人群密度列表(圆形)信息 typedef struct tagNET_CROWD_LIST_INFO { DH_POINT stuCenterPoint; // 中心点坐标,8192坐标系 unsigned int nRadiusNum; // 半径像素点个数 BYTE byReserved[1024]; // 保留字节 }NET_CROWD_LIST_INFO; ///@brief 人数超限的报警区域ID列表信息 typedef struct tagNET_REGION_LIST_INFO { unsigned int nRegionID; // 配置的区域下标 unsigned int nPeopleNum; // 区域内人数统计值 char szName[32]; // 配置的名称 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 配置的检测区域坐标 int nDetectRegionNum; // 配置的检测区域坐标个数 BYTE byReserved[908]; // 保留字节 }NET_REGION_LIST_INFO; ///@brief 报警业务类型 typedef enum tagEM_ALARM_TYPE { EM_ALARM_TYPE_UNKNOWN, // 未知类型 EM_ALARM_TYPE_CROWD_DENSITY, // 拥挤人群密度报警 EM_ALARM_TYPE_NUMBER_EXCEED, // 人数超限报警 EM_ALARM_TYPE_CROWD_DENSITY_AND_NUMBER_EXCEED, // 拥挤人群密度报警和人数超限报警 }EM_ALARM_TYPE; #define RECT_POINT 2 // 表示矩形的2个点(左上角与右下角) #define MAX_CROWD_RECT_LIST 5 // 矩形描述信息的最大个数 ///@brief 全局拥挤人群密度列表(矩形)信息 typedef struct tagNET_CROWD_RECT_LIST_INFO { DH_POINT stuRectPoint[RECT_POINT]; // 矩形的左上角点与右下角点,8192坐标系,表示矩形的人群密度矩形框 BYTE byReserved[32]; // 保留字节 }NET_CROWD_RECT_LIST_INFO; ///@brief 事件类型 EVENT_IVS_CROWDDETECTION(人群密度检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROWD_DETECTION_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; EM_ALARM_TYPE emAlarmType; // 报警业务类型 char szName[MAX_CROWD_DETECTION_NAME_LEN]; // 事件名称 int nCrowdListNum; // 返回的全局拥挤人群密度列表个数 (圆形描述) int nRegionListNum; // 返回的人数超限的报警区域ID列表个数 NET_CROWD_LIST_INFO stuCrowdList[MAX_CROWD_LIST_NUM]; // 全局拥挤人群密度列表信息(圆形描述) NET_REGION_LIST_INFO stuRegionList[MAX_REGION_LIST_NUM]; // 人数超限的报警区域ID列表信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 int nCrowdRectListNum; // 返回的全局拥挤人群密度列表个数 (矩形描述) NET_CROWD_RECT_LIST_INFO stuCrowdRectList[MAX_CROWD_RECT_LIST]; // 全局拥挤人群密度列表信息(矩形描述) int nGlobalPeopleNum; // 检测区全局总人数 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[680]; // 保留扩展字节 }DEV_EVENT_CROWD_DETECTION_INFO; ///@brief 事件类型 typedef struct tagNET_EVENT_TYPE { BOOL bIsAlarmEvent; // 报警事件 TRUE:报警事件 BOOL bIsViolation; // 违章事件 TRUE:违章事件 BYTE byReserved[24]; // 保留 }NET_EVENT_TYPE; ///@brief 事件类型 EVENT_IVS_TRAFFIC_CARDISTANCESHORT (车间距过小报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO { int nChannelID; // 通道号 BYTE byReserved[4]; // 保留字节,为了对齐 char szName[MAX_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE byReserved1[992]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_TYPE stuEventType; // 事件类型 }DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_QUEUEJUMP (车辆加塞事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_QUEUEJUMP_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_COMM_INFO stCommInfo; // 公共信息 UINT nEventType; // 事件类型掩码,bit0表示报警事件,bit1表示违章事件。若bit0和bit1都置位则既是报警事件又是违章事件,默认bit0置位,报警事件 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1020]; // 保留字节 } DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO; ///@brief 事件类型 EVENT_IVS_PEDESTRIAN_JUNCTION (行人卡口事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_PEDESTRIAN_JUNCTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nGroupID; // 事件组ID, 同一个人抓拍过程内nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 double PTS; // 事件戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int UTCMS; // UTC时间对应的毫秒数 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 目标信息 int nLane; // 人行道号 int nSequence; // 表示抓拍序号,如3/2/1,1表示抓拍结束,0表示异常结束 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bHasNonMotor; // stuNonMotor 字段是否有效 DH_MSG_OBJECT stuVehicle; // 行人信息 char szReserved[344-POINTERSIZE]; // 保留字节 } DEV_EVENT_PEDESTRIAN_JUNCTION_INFO; ///@brief 事件类型 EVENT_IVS_VEHICLE_SUSPICIOUSCAR (嫌疑车辆事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_VEHICLE_SUSPICIOUSCAR_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE byReserved[4096]; // 保留字节 }DEV_EVENT_VEHICLE_SUSPICIOUSCAR_INFO; ///@brief 行人信息 typedef struct tagEVENT_VEHICLE_INFO { char szCategory[MAX_CATEGORY_LEN]; // 物体类型,Passerby表示行人 BYTE byReserved[64]; // 预留字节 }EVENT_VEHICLE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PEDESTRAIN_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DWORD dwSnapFlagMask; // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout" BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved2[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo; // 交通车辆部分信息 EVENT_VEHICLE_INFO stuVehicle; // 行人信息 BYTE bReserved[252]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_THROW(交通抛洒物品事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_THROW_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DWORD dwSnapFlagMask; // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout" BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved2[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo; // 交通车辆部分信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 BYTE bReserved[340]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_THROW_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_IDLE(交通空闲事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_IDLE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DWORD dwSnapFlagMask; // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout" BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved2[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nLane; // 对应车道号 BYTE bReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_IDLE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT(右转不礼让横向直行)对应数据块描述信息 typedef struct tagDEV_EVENT_TURNRIGHTAFTERSTRAIGHT_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved[4]; // 字节保留 double dPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 int nLane; // 车道号 int nSequence; // 抓拍序号, 如3, 2, 1, 1表示抓拍结束, 0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1012]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TURNRIGHTAFTERSTRAIGHT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE(右转不礼让直行行人)对应数据块描述信息 typedef struct tagDEV_EVENT_TURNRIGHTAFTERPEOPLE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved[4]; // 字节保留 double dPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 int nLane; // 车道号 int nSequence; // 抓拍序号,如3, 2, 1, 1表示抓拍正常结束,0表示抓拍异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1012]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TURNRIGHTAFTERPEOPLE_INFO; #define MAX_DRIVING_DIR_NUM 16 // 车道行驶方向最大个数 ///@brief 车辆行驶方向 typedef enum tagNET_FLOWSTAT_DIRECTION { DRIVING_DIR_UNKNOW = 0 , //兼容之前 DRIVING_DIR_APPROACH , //上行,即车辆离设备部署点越来越近 DRIVING_DIR_LEAVE , //下行,即车辆离设备部署点越来越远 }NET_FLOWSTAT_DIRECTION; ///@brief 道路方向 typedef enum tagNET_ROAD_DIRECTION { ROAD_DIR_UNKNOW, // 未知 ROAD_DIR_TURNLEFT, // 左转 ROAD_DIR_TURNRIGHT, // 右转 ROAD_DIR_STRAIGHT, // 直行 ROAD_DIR_UTURU, // 掉头 ROAD_DIR_NUM, }NET_ROAD_DIRECTION; ///@brief 车辆流量统计车辆行驶方向信息 typedef struct tagNET_TRAFFIC_FLOWSTAT_INFO_DIR { NET_FLOWSTAT_DIRECTION emDrivingDir; //行驶方向 char szUpGoing[FLOWSTAT_ADDR_NAME]; //上行地点 char szDownGoing[FLOWSTAT_ADDR_NAME]; //下行地点 BYTE reserved[32]; //保留字节 }NET_TRAFFIC_FLOWSTAT_INFO_DIR; ///@brief 道路拥挤状况 typedef enum tagNET_TRAFFIC_JAM_STATUS { JAM_STATUS_UNKNOW =0 , //未知 JAM_STATUS_CLEAR , //通畅 JAM_STATUS_JAMMED , //拥堵 JAM_STATUS_SLOWED , //拥堵 }NET_TRAFFIC_JAM_STATUS; ///@brief 道路等级 typedef enum tagNET_TRAFFIC_ROAD_RANK { ROAD_RANK_UNKNOWN =0 , ROAD_RANK_RAPID =1 , //快速路 ROAD_RANK_TRUNK =2 , //主干路 ROAD_RANK_SUBTRUNK =3 , //次干路 ROAD_RANK_BRANCH =4 , //支路 }NET_TRAFFIC_ROAD_RANK; ///@brief 车道流量信息属性 typedef enum tagNET_EM_FLOW_ATTRIBUTE { EM_FLOW_ATTRIBUTE_UNKNOWN = 0, EM_FLOW_ATTRIBUTE_FLOW_DETECTION, // 流量监测 EM_FLOW_ATTRIBUTE_QUEUE_DETECTION, // 排队检测 }NET_EM_FLOW_ATTRIBUTE; ///@brief 车辆排队长度溢出状态 typedef enum tagNET_EM_OVER_FLOW_STATE { EM_OVER_FLOW_STATE_UNKNOWN = 0, // 状态未知 EM_OVER_FLOW_STATE_NOT_OVERFLOW, // 未溢出 EM_OVER_FLOW_STATE_OVERFLOW // 溢出 }NET_EM_OVER_FLOW_STATE; ///@brief 空间占有率统计信息 typedef struct tagNET_SPACE_OCCUPY_RATIO_MULTI { UINT nID; // 空间占有率统计区域的ID float fSpaceOccupyRatio; // 对应ID的空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离 char szReserverd[8]; // 保留字节 }NET_SPACE_OCCUPY_RATIO_MULTI; ///@brief 流量状态 typedef struct tagNET_TRAFFIC_FLOW_STATE { int nLane; // 车道号 DWORD dwState; // 状态值 若emJamState字段为有效值(不为 JAM_STATUS_UNKNOW) ,则dwState字段无效 // 1- 流量过大 // 2- 流量过大恢复 // 3- 正常 // 4- 流量过小 // 5- 流量过小恢复 DWORD dwFlow; // 流量值, 单位: 辆 DWORD dwPeriod; // 流量值对应的统计时间, 单位:分钟。与dwPeriodByMili一起使用。 NET_TRAFFIC_FLOWSTAT_INFO_DIR stTrafficFlowDir; // 车道方向信息 int nVehicles; // 通过车辆总数 float fAverageSpeed; // 平均车速,单位km/h float fAverageLength; // 平均车长,单位米 float fTimeOccupyRatio; // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例 float fSpaceOccupyRatio; // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离 float fSpaceHeadway; // 车头间距,相邻车辆之间的距离,单位米/辆 float fTimeHeadway; // 车头时距,单位秒/辆 float fDensity; // 车辆密度,每公里的车辆数,单位辆/km int nOverSpeedVehicles; // 超速车辆数 int nUnderSpeedVehicles; // 低速车辆数 int nLargeVehicles; // 大车交通量(9米<车长<12米),辆/单位时间 int nMediumVehicles; // 中型车交通量(6米<车长<9米),辆/单位时间 int nSmallVehicles; // 小车交通量(4米<车长<6米),辆/单位时间, int nMotoVehicles; // 摩托交通量(微型车,车长<4米),辆/单位时间, int nLongVehicles; // 超长交通量(车长>=12米),辆/单位时间, int nVolume; // 交通量, 辆/单位时间, 某时间间隔通过车道、道路或其他通道上一点的车辆数,常以1小时计, int nFlowRate; // 流率小车当量,辆/小时, 车辆通过车道、道路某一断面或某一路段的当量小时流量 int nBackOfQueue; // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离(建议废掉 改用dBackOfQueue下面) int nTravelTime; // 旅行时间,单位:秒, 车辆通过某一条道路所用时间。包括所有停车延误 int nDelay; // 延误,单位:秒,驾驶员、乘客或行人花费的额外的行程时间 BYTE byDirection[MAX_DRIVING_DIR_NUM]; // 车道方向,详见NET_ROAD_DIRECTION BYTE byDirectionNum; // 车道行驶方向个数 BYTE reserved1[3]; // 字节对齐 NET_TRAFFIC_JAM_STATUS emJamState; // 道路拥挤状况 若此字段为有效值(不为 JAM_STATUS_UNKNOW) ,则以此字段为准, dwState字段无效 /* 按车辆类型统计交通量 */ int nPassengerCarVehicles; // 客车交通量(辆/单位时间) int nLargeTruckVehicles; // 大货车交通量(辆/单位时间) int nMidTruckVehicles; // 中货车交通量(辆/单位时间) int nSaloonCarVehicles; // 轿车交通量(辆/单位时间) int nMicrobusVehicles; // 面包车交通量(辆/单位时间) int nMicroTruckVehicles; // 小货车交通量(辆/单位时间) int nTricycleVehicles; // 三轮车交通量(辆/单位时间) int nMotorcycleVehicles; // 摩托车交通量(辆/单位时间) int nPasserbyVehicles; // 行人交通量(辆/单位时间) NET_TRAFFIC_ROAD_RANK emRank; // 道路等级 int nState; // 流量状态 // 1- 流量过大(拥堵) // 2- 流量过大恢复(略堵) // 3- 正常 // 4- 流量过小(通畅) // 5- 流量过小恢复(良好) BOOL bOccupyHeadCoil; // 车头虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用 BOOL bOccupyTailCoil; // 车尾虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用 BOOL bStatistics; // 流量数据是否有效 TURE表示有效,FALSE表示无效 int nLeftVehicles; // 左转车辆总数,单位:分钟 int nRightVehicles; // 右转车辆总数,单位:分钟 int nStraightVehicles; // 直行车辆总数,单位:分钟 int nUTurnVehicles; // 掉头车辆总数,单位:分钟 DH_POINT stQueueEnd; // 每个车道的最后一辆车坐标,采用8192坐标系 double dBackOfQueue; // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离 DWORD dwPeriodByMili; // 流量值的毫秒时间,值不超过60000,和dwPeriod一起使用,流量值总时间:dwPeriod*60*1000+dwPeriodByMili(单位:毫秒) int nBusVehicles; // 公交车交通量(辆/单位时间) int nMPVVehicles; // MPV交通量(辆/单位时间) int nMidPassengerCarVehicles; // 中客车交通量(辆/单位时间) int nMiniCarriageVehicles; // 微型轿车交通量(辆/单位时间) int nOilTankTruckVehicles; // 油罐车交通量(辆/单位时间) int nPickupVehicles; // 皮卡车交通量(辆/单位时间) int nSUVVehicles; // SUV交通量(辆/单位时间) int nSUVorMPVVehicles; // SUV或者MPV交通量(辆/单位时间) int nTankCarVehicles; // 槽罐车交通量(辆/单位时间) int nUnknownVehicles; // 未知车辆交通量(辆/单位时间) NET_EM_FLOW_ATTRIBUTE emCustomFlowAttribute; // 车道流量信息属性 int nRoadFreeLength; // 道路空闲长度,例:如设定路段长度为100米,实际检测到排队长度为30米,那么道路空闲长度就为70米,单位:米 NET_EM_OVER_FLOW_STATE emOverflowState; // 溢出状态。例:如给当前路段设定允许排队长度阀值,实际排队长度超过阀值后就判定当前时刻该路段有溢出。 int nQueueVehicleNum; // 排队车辆数,单位:辆 int nSpaceOccupyRatioMultiCount; // 空间占有率统计个数 NET_SPACE_OCCUPY_RATIO_MULTI stuSpaceOccupyRatioMulti[32]; // 空间占有率统计信息 UINT nTotalStopNum; // 停车次数,周期内该车道内所有目标的总停车次数,单位:次 UINT nTotalDelayTime; // 延误时间,周期内该车道内所有目标的总延误时间,单位:毫秒 UINT nTotalNum; // 目标总数量,周期内进入该车道内所有目标总数量,单位 辆 float fAverageStopNum; // 平均停车次数,周期内该车道所有目标的平均停车次数。单位:次 float fAverageDelayTime; // 平均延误时间,周期内该车道所有目标的平均延误时间。单位:毫秒 float fFlowSaturationRatio; // 流量饱和度,该车道内的流量饱和度 float fMaxQueueLen; // 最大排队长度,周期内最大排队长度,单位:米 float fQueueStartingPoint; // 排队开始位置,排队时队首距设备的位置,以设备方向为正,负数表示队首在设备后方,单位:米 float fQueueFinishingPoint; // 排队结束位置,排队时队尾距设备的位置,以设备方向为正,负数表示队尾在设备后方,单位:米 char szSpaceOccupyNum[64]; // 空间占有目标个数,即区域车辆数,该车道内指定区域的车辆数目,支持车道内多区域统计,不同区域车辆数使用|符号分隔。 BYTE reserved[92]; // 保留字节 }NET_TRAFFIC_FLOW_STATE; ///@brief 交通流量事件信息trafficflowstatinfo 对应结构体 typedef struct tagNET_TRAFFICFLOWSTATINFO { DH_TRAFFICFLOWSTAT stuTrafficFlowStat; // 交通流量状态 double dbBackOfQueue; // 排队长度 NET_TRAFFIC_ROAD_RANK emRank; // 道路等级 int nState; // 流量状态 // 1- 流量过大(拥堵) // 2- 流量过大恢复(略堵) // 3- 正常 // 4- 流量过小(通畅) // 5- 流量过小恢复(良好) BYTE reserved[1024]; // 保留字节 }NET_TRAFFICFLOWSTATINFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_FLOW_STATE { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 char bReserved1[4]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 序号 int nStateNum; // 流量状态数量 NET_TRAFFIC_FLOW_STATE stuStates[DH_MAX_LANE_NUM]; // 流量状态, 每个车道对应数组中一个元素 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 int nStopVehiclenum; // 静止车辆数,当前时刻检测范围内车速小于某个阀值的车辆数,单位:辆 int nDetectionAreaVehicleNum; // 车辆总数,当前时刻检测范围内检测到的所有车道内的车辆总数,单位:辆 BYTE bReserved[884]; // 保留字节 }DEV_EVENT_TRAFFIC_FLOW_STATE; ///@brief 事件类型EVENT_IVS_VIDEOSTATIC(视频静态检测事件)对应数据块描述信息, typedef struct tagDEV_EVENT_ALARM_VIDEOSTATIC_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_ALARM_VIDEO_STATIC_MODE emMode; // 设备报警的模式 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved[1027]; // 保留字节 }DEV_EVENT_ALARM_VIDEOSTATIC_INFO; ///@brief 事件类型EVENT_IVS_VIDEOTIMING(视频定时检测时间)对应数据块描述信息 typedef struct tagDEV_EVENT_ALARM_VIDEOTIMING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved[1027]; // 保留字节 }DEV_EVENT_ALARM_VIDEOTIMING_INFO; ///@brief 事件源信息结构 typedef struct tagDEV_SRC_INFO { char szSrcEvent[DH_COMMON_STRING_32];// 事件源 NET_TIME_EX stSrcTime; // 事件源发生的时间 int iSrcChannel; // 事件源发生的通道号 BYTE reserved[512]; // 保留字节 }DEV_SRC_INFO; ///@brief 事件类型EVENT_IVS_LINKSD(LinkSD事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_LINK_SD { /*公共字段*/ int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ DEV_SRC_INFO *pstSrcInfo; // 事件源信息 NET_TIME_EX stStartTime; // 预置点到达的时间 NET_TIME_EX stEndTime; //预置点结束的时间 int iPresetID; //联动球机转到的对应预置点 BYTE reserved[512]; //保留字节 }DEV_EVENT_LINK_SD; ///@brief 事件类型EVENT_IVS_FLOWRATE(流量使用情况事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FLOWRATE_INFO { /*公共字段*/ int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ unsigned int nFlowRate; // 传输流量的值(MB) BYTE reserved[1024]; // 保留字节 } DEV_EVENT_FLOWRATE_INFO; ///@brief 事件类型 EVENT_IVS_CITIZENIDCARD(证件信息读取事件)对应数据块描述信息 typedef struct tagDEV_EVENT_ALARM_CITIZENIDCARD_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nGroupID; // nGroupID事件组ID,同一物体抓拍过程内nGroupID相同 int nCountInGroup; // nCountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 char szCitizen[DH_COMMON_STRING_64]; // 姓名 EM_CITIZENIDCARD_SEX_TYPE emSex; // 性别 int nECType; // 民族 // 0 无效数据 // 1 汉族 // 2 蒙古族 // 3 回族 // 4 藏族 // 5 维吾尔族 // 6 苗族 // 7 彝族 // 8 壮族 // 9 布依族 // 10 朝鲜族 // 11 满族 // 12 侗族 // 13 瑶族 // 14 白族 // 15 土家族 // 16 哈尼族 // 17 哈萨克族 // 18 傣族 // 19 黎族 // 20 傈僳族 // 21 佤族 // 22 畲族 // 23 高山族 // 24 拉祜族 // 25 水族 // 26 东乡族 // 27 纳西族 // 28 景颇族 // 29 柯尔克孜族 // 30 土族 // 31 达斡尔族 // 32 仫佬族 // 33 羌族 // 34 布朗族 // 35 撒拉族 // 36 毛南族 // 37 仡佬族 // 38 锡伯族 // 39 阿昌族 // 40 普米族 // 41 塔吉克族 // 42 怒族 // 43 乌孜别克族 // 44 俄罗斯族 // 45 鄂温克族 // 46 德昂族 // 47 保安族 // 48 裕固族 // 49 京族 // 50 塔塔尔族 // 51 独龙族 // 52 鄂伦春族 // 53 赫哲族 // 54 门巴族 // 55 珞巴族 // 56 基诺族 // 57 穿青族 NET_TIME stuBirth; // 出生日期 char szAddress[DH_COMMON_STRING_256]; // 住址 char szNumber[DH_COMMON_STRING_64]; // 证件号 char szAuthority[DH_COMMON_STRING_256]; // 签发机关 NET_TIME stuStart; // 起始日期 BOOL bLongTimeValidFlag; // 该值为 TRUE, 截止日期 表示长期有效,此时 stuEnd 值无意义 // 该值为 FALSE, 此时 截止日期 查看 stuEnd 值 NET_TIME stuEnd; // 截止日期,bLongTimeValidFlag 为 FALSE 时有效 char szReversed[1024]; // 保留字节 }DEV_EVENT_ALARM_CITIZENIDCARD_INFO; ///@brief 事件类型 EVENT_IVS_PICINFO(图片信息事件)对应数据块描述信息 typedef struct tagDEV_EVENT_ALARM_PIC_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间(车载设备不支持) int nEventID; // 事件ID /*以上为公共字段*/ NET_TIME_EX stuTime; // 事件发生的时间, (设备时间, 不一定是utc时间) DWORD dwEventType; // 事件类型 DWORD dwSpeed; // 车速,单位km/h DWORD dwSpeedHighLine; // 高速上限报警值, 单位km/h DWORD dwDisk; // 磁盘号 DWORD dwCluster; // 簇号 DWORD dwPartition; // 分区号 char szSnapAddr[DH_COMMON_STRING_128]; // 抓图地点, 有效64字节 char szPicID[DH_COMMON_STRING_32]; // 图片唯一ID char szPlate[DH_COMMON_STRING_16]; // 车牌 char szReversed[2000]; // 保留字节 }DEV_EVENT_ALARM_PIC_INFO; ///@brief 图片类型 typedef enum tagEM_ACCESS_CTL_IMAGE_TYPE { EM_ACCESS_CTL_IMAGE_UNKNOWN = -1, // 未知 EM_ACCESS_CTL_IMAGE_LOCAL, // 本地目标图库 EM_ACCESS_CTL_IMAGE_SCENE, // 拍摄场景抠图 EM_ACCESS_CTL_IMAGE_FACE, // 目标抠图 EM_ACCESS_CTL_IMAGE_INFRARED, // 红外抓图 EM_ACCESS_CTL_IMAGE_COMPANION, // 陪同人员抓图 EM_ACCESS_CTL_IMAGE_HEAT, // 热图 }EM_ACCESS_CTL_IMAGE_TYPE; ///@brief 图片信息 typedef struct tagDEV_ACCESS_CTL_IMAGE_INFO { EM_ACCESS_CTL_IMAGE_TYPE emType; // 图片类型 UINT nOffSet; // 二进制块偏移字节 UINT nLength; // 图片大小 UINT nWidth; // 图片宽度(单位:像素) UINT nHeight; // 图片高度(单位:像素) NET_RECT stuBoundingBox; // 包围盒 BYTE byReserved[48]; // 保留字节 }DEV_ACCESS_CTL_IMAGE_INFO; ///@brief 定制人员信息 typedef struct tagDEV_ACCESS_CTL_CUSTOM_WORKER_INFO { NET_ACCESSCTLCARD_SEX emSex; // 性别 char szRole[MAX_COMMON_STRING_32]; // 角色 char szProjectNo[MAX_COMMON_STRING_32]; // 项目ID char szProjectName[MAX_COMMON_STRING_64]; // 项目名称 char szBuilderName[MAX_COMMON_STRING_64]; // 施工单位全称 char szBuilderID[MAX_COMMON_STRING_32]; // 施工单位ID char szBuilderType[MAX_COMMON_STRING_32]; // 施工单位类型 char szBuilderTypeID[MAX_COMMON_STRING_8]; // 施工单位类别ID char szPictureID[MAX_COMMON_STRING_64]; // 人员照片ID char szContractID[MAX_COMMON_STRING_16]; // 原合同系统合同编号 char szWorkerTypeID[MAX_COMMON_STRING_8]; // 工种ID char szWorkerTypeName[MAX_COMMON_STRING_32]; // 工种名称 BOOL bPersonStatus; // 人员状态, TRUE:启用, FALSE:禁用 BYTE byReserved[256]; // 保留字节 }DEV_ACCESS_CTL_CUSTOM_WORKER_INFO; ///@brief 事件类型 EVENT_IVS_ACCESS_CTL(门禁事件)对应数据块描述信息 typedef struct tagDEV_EVENT_ACCESS_CTL_INFO { int nChannelID; // 门通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_ACCESS_CTL_EVENT_TYPE emEventType; // 门禁事件类型 BOOL bStatus; // 刷卡结果,TRUE表示成功,FALSE表示失败 NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 NET_ACCESS_DOOROPEN_METHOD emOpenMethod; // 开门方式 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szPwd[DH_MAX_CARDPWD_LEN]; // 密码 char szReaderID[DH_COMMON_STRING_32]; // 门读卡器ID char szUserID[DH_COMMON_STRING_64]; // 开门用户 char szSnapURL[DH_COMMON_STRING_128]; // 抓拍照片存储地址 int nErrorCode; // 开门操作码,配合 bStatus 使用 // 0x00 没有错误 // 0x10 未授权 // 0x11 卡挂失或注销 // 0x12 没有该门权限 // 0x13 开门模式错误 // 0x14 有效期错误 // 0x15 防反潜模式 // 0x16 胁迫报警未打开 // 0x17 门常闭状态 // 0x18 AB互锁状态 // 0x19 巡逻卡 // 0x1A 设备处于闯入报警状态 // 0x20 时间段错误 // 0x21 假期内开门时间段错误 // 0x23 卡逾期 // 0x30 需要先验证有首卡权限的卡片 // 0x40 卡片正确,输入密码错误 // 0x41 卡片正确,输入密码超时 // 0x42 卡片正确,输入信息错误 // 0x43 卡片正确,输入信息超时 // 0x44 信息正确,输入密码错误 // 0x45 信息正确,输入密码超时 // 0x50 组合开门顺序错误 // 0x51 组合开门需要继续验证 // 0x60 验证通过,控制台未授权 // 0x61 卡片正确,目标错误 // 0x62 卡片正确,目标超时 // 0x63 重复进入 // 0x64 未授权,需要后端平台识别 // 0x65 体温过高 // 0x66 未戴口罩 // 0x67 健康码获取失败 // 0x68 黄码禁止通行 // 0x69 红码禁止通行 // 0x6a 健康码无效 // 0x6b 绿码验证通过 // 0x6e 绿码,行程码非绿码 // 0x70 获取健康码信息 // 0x71 校验证件信息(平台下发对应证件号的校验结果) // 0xA8 未佩戴安全帽(定制) // 0xB1 授权信息不足,待补充 // 0xB2 中心化互锁 int nPunchingRecNo; // 刷卡记录集中的记录编号 int nNumbers; // 抓图张数 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved[3]; // 字节对齐 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON NET_ATTENDANCESTATE emAttendanceState; // 考勤状态 char szClassNumber[MAX_CLASS_NUMBER_LEN]; // 班级(定制,废弃,建议用szClassNumberEx) char szPhoneNumber[MAX_PHONENUMBER_LEN]; // 电话(定制) char szCardName[DH_MAX_CARDNAME_LEN]; // 卡命名 UINT uSimilarity; // 目标识别相似度,范围为0~100 DEV_ACCESS_CTL_IMAGE_INFO stuImageInfo[6]; // 图片信息 int nImageInfoCount; // 图片信息数量 char szCitizenIDNo[20]; // 证件号 UINT nGroupID; // 事件组ID int nCompanionCardCount; // 陪同者卡号个数 char szCompanionCards[MAX_COMPANION_CARD_NUM][DH_MAX_CARDINFO_LEN]; // 陪同者卡号信息(废弃,使用 stuCompanionInfo ) DEV_ACCESS_CTL_CUSTOM_WORKER_INFO stuCustomWorkerInfo; // 定制人员信息 EM_CARD_STATE emCardState; // 当前事件是否为采集卡片 char szSN[32]; // 设备序列号 EM_HAT_STYLE emHatStyle; // 帽子类型 EM_UNIFIED_COLOR_TYPE emHatColor; // 帽子颜色 EM_LIFT_CALLER_TYPE emLiftCallerType; // 梯控方式触发者 BOOL bManTemperature; // 人员温度信息是否有效 NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo; // 人员温度信息, bManTemperature 为TRUE时有效 char szCitizenName[256]; // 证件姓名 int nCompanionInfo; // 陪同人员 stuCompanionInfo 个数 NET_COMPANION_INFO stuCompanionInfo[12]; // 陪同人员信息 EM_MASK_STATE_TYPE emMask; // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效) UINT nFaceIndex; // 一人多脸的目标序号 BOOL bClassNumberEx; // szClassNumberEx 是否有效,为TRUE时,szClassNumberEx 有效 char szClassNumberEx[512]; // 班级(定制) char szDormitoryNo[64]; // 宿舍号(定制) char szStudentNo[64]; // 学号(定制) EM_USER_TYPE emUserType; // 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_DISABLED 有效 ) BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szQRCode[512]; // 二维码信息 char szCompanyName[200]; // 公司名称 int nScore; // 目标质量评分 EM_FACE_CHECK emFaceCheck; // 刷卡开门时,门禁后台校验目标是否是同一个人(定制) EM_QRCODE_IS_EXPIRED emQRCodeIsExpired; // 二维码是否过期。默认值0 EM_QRCODE_STATE emQRCodeState; // 二维码状态 NET_TIME stuQRCodeValidTo; // 二维码截止日期 UINT nBlockId; // 上报事件数据序列号从1开始自增 char szSection[64]; // 部门名称 char szWorkClass[256]; // 工作班级 EM_TEST_ITEMS emTestItems; // 测试项目 NET_TEST_RESULT stuTestResult; // ESD阻值测试结果 char szDeviceID[128]; // 门禁设备编号 char szUserUniqueID[128]; // 用户唯一表示ID BOOL bUseCardNameEx; // 是否使用卡命名扩展 char szCardNameEx[128]; // 卡命名扩展 int nHSJCResult; //核酸检测报告结果 -1: 未知 0: 阳性 1: 阴性 2: 未检测 3: 过期 NET_VACCINE_INFO stuVaccineInfo; // 新冠疫苗接种信息 NET_TRAVEL_INFO stuTravelInfo; // 行程码信息 char szTrafficPlate[32]; // 车牌 char szQRCodeEx[2048]; //国康码项目,用来上传大二维码内容 char szRecordUrl[128]; // 设备开门录制15-30s的视频, 上报事件中通知录制视频的地址,视频名以编号和时间命名. NET_HSJC_INFO stuHSJCInfo; // 核酸信息 NET_ANTIGEN_INFO stuAntigenInfo; // 抗原检测信息 char szHealthGreenStatus[20]; // 个人健康状态 绿码:"Green" 红码:"Red" 黄码:"Yellow" 橙:"Orange" 未知:"None" char szCitizenIDAddress[108]; // 住址 UINT nCitizenIDEC; // 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的nECType定义) NET_TIME stuCitizenIDBirth; // 出生日期(年月日有效) NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nAge; // 年龄 char szCheckOutType[32]; // 签出类型(定制) char szCheckOutCause[512]; // 签出原因(定制) char szLocationName[256]; // 场所码名称 char szLocationAddress[256]; // 场所码所在省市区县 char szLocationType[256]; // 场所码类型 char szCallLiftFloor[16]; // 呼梯楼层号 BYTE szReversed[384]; // 预留字节 }DEV_EVENT_ACCESS_CTL_INFO; ///@brief 事件类型 EVENT_IVS_NETPALYCHECK(上网登记事件)对应数据块描述信息 typedef struct tagDEV_EVENT_ALARM_NETPLAYCHECK_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[8]; // 字节对齐 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ NET_TIME_EX stuTime; // 事件发生的时间, (设备时间, 不一定是utc时间) char szIdentityCard[DH_COMMON_STRING_32]; //上网人员证件 char szNetBarName[DH_COMMON_STRING_32]; //网吧名称 char szNetBarID[DH_COMMON_STRING_32]; //网吧编号 char szNetBarAddr[DH_COMMON_STRING_64]; //网吧地址 }DEV_EVENT_ALARM_NETPLAYCHECK_INFO; #define MAX_SNAPBYTIME_DATA_NUM 20 ///@brief 用户数据 typedef struct tagEVENT_SNAPBYTIME_DATA { DWORD dwLiquidLevel; // 液位值,单位mm DWORD dwDistMeasure; // 测距值,单位mm int nTemperature; // 温度值,单位℃ int nHumidity; // 湿度值,单位RH DWORD dwWaterFlow; // 流量值,单位m^3 BOOL bAlarmFlag; // 报警状态: 正常 FALSE, 报警 TRUE char szReversed[40]; // 保留字节 }EVENT_SNAPBYTIME_DATA; ///@brief 事件类型 EVENT_IVS_SNAPBYTIME(定时抓图事件)对应数据块描述信息 typedef struct tagDEV_EVENT_SNAPBYTIME { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ NET_TIME_EX stuSnapTime; // 抓图时间 unsigned int uLiquidLevel; // 液位值,单位mm unsigned int uDistMeasure; // 测距值,单位mm int nTemperature; // 温度值,单位℃ int nHumidity; // 湿度值,单位RH int nDataNum; // 数据个数 EVENT_SNAPBYTIME_DATA stuDataList[MAX_SNAPBYTIME_DATA_NUM]; // 数据列表 char szReversed[748]; // 保留字节 }DEV_EVENT_SNAPBYTIME; ///@brief 事件类型EVENT_IVS_MAN_STAND_DETECTION(立体视觉站立事件)对应数据块描述信息 typedef struct tagDEV_EVENT_MANSTAND_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐,非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ int nAction; // 0:脉冲 1:开始 2:停止 int nManListCount; // 区域人员列表数量 MAN_STAND_LIST_INFO stuManList[MAX_MAN_LIST_COUNT]; // 区域内人员列表 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szReversed[2048]; // 保留字节 } DEV_EVENT_MANSTAND_DETECTION_INFO; ///@brief 检测模式 typedef enum tagEM_EVENT_DETECT_TYPE { EM_EVENT_DETECT_TYPE_UNKNOWN = -1, // 未知 EM_EVENT_DETECT_TYPE_LESS_OR_EQUAL, // 小于等于阈值报警 EM_EVENT_DETECT_TYPE_GREATER_OR_EQUAL, // 大于等于阈值报警 EM_EVENT_DETECT_TYPE_EQUAL, // 等于阀值报警 EM_EVENT_DETECT_TYPE_NOEQUAL, // 不等于阀值报警 EM_EVENT_DETECT_TYPE_CHANGE, // 人数变化报警 EM_EVENT_DETECT_TYPE_GREATER, // 大于阈值报警 EM_EVENT_DETECT_TYPE_LESS, // 小于阈值报警 EM_EVENT_DETECT_TYPE_IN_INTERVAL, // 区间内报警,检测人数在区间范围内报警,包括边界值。区间值对应PersonNum字段 EM_EVENT_DETECT_TYPE_OUT_INTERVAL, // 区间外报警,检测人数在区间范围外报警,不包括边界值。区间值对应PersonNum字段 }EM_EVENT_DETECT_TYPE; ///@brief 事件类型EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应数据块描述信息 typedef struct tagDEV_EVENT_MANNUM_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐, 非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ int nAction; // 0:脉冲 1:开始 2:停止 int nManListCount; // 区域人员列表数量 MAN_NUM_LIST_INFO stuManList[MAX_MAN_LIST_COUNT]; // 区域内人员列表 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) UINT nPrevNumber; // 变化前人数 UINT nCurrentNumber; // 当前人数 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 缺省时为空字符串,表示无此信息 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 char szRuleName[128]; // 规则名称 EM_EVENT_DETECT_TYPE emDetectType; // 检测模式 UINT nAlertNum; // 实际触发报警的人数 int nAlarmType; // 报警类型. 0:未知, 1:从人数正常到人数异常, 2:从人数异常到人数正常 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nDetectRegionNum; // 检测区个数 NET_POINT_EX stuDetectRegion[20]; // 检测区 char szReversed[700]; // 保留字节 } DEV_EVENT_MANNUM_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_QUEUENUM_DETECTION(排队人数异常报警事件)对应数据块描述信息 typedef struct tagDEV_EVENT_QUEUENUM_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐, 非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DWORD nEventID; // 事件ID int nAction; // 0:脉冲 1:开始 2:停止 /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) int nMaxManListNum; // 区域内检测到的人员个数 MAN_NUM_LIST_INFO stuManList[MAX_MAN_LIST_COUNT]; // 区域内人员列表 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReversed[1012]; // 保留字节 } DEV_EVENT_QUEUENUM_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_GENERATEGRAPH_DETECTION(生成图规则)对应的数据块描述信息 typedef struct tagDEV_EVENT_GENERATEGRAPH_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐, 非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 0:脉冲 1:开始 2:停止 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ BYTE byReversed[1024]; // 保留字节 } DEV_EVENT_GENERATEGRAPH_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_TIREDPHYSIOLOGICAL(生理疲劳驾驶事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TIREDPHYSIOLOGICAL_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 0:脉冲 1:开始 2:停止 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_TIREDPHYSIOLOGICAL_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_TIREDLOWERHEAD(开车低头报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TIREDLOWERHEAD_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_TIREDLOWERHEAD_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND(开车左顾右盼报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DRIVERLOOKAROUND_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_DRIVERLOOKAROUND_INFO; ///@brief 事件类型EVENT_IVS_INFRAREDBLOCK(红外阻断报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_INFRAREDBLOCK_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_INFRAREDBLOCK_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST(开车离岗报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DRIVERLEAVEPOST_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_DRIVERLEAVEPOST_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVERYAWN (开车打哈欠事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_DRIVERYAWN_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE byReserved[736]; // 保留字节,留待扩展. } DEV_EVENT_DRIVERYAWN_INFO; ///@brief 图片类型 typedef enum tagEM_FIREWARNING_PIC_TYPE { EM_PIC_UNKNOWN, // 未知 EM_PIC_NONE, // 无 EM_PIC_OVERVIEW, // 全景图 EM_PIC_DETAIL, // 细节图 }EM_FIREWARNING_PIC_TYPE; ///@brief 事件类型 EVENT_IVS_FIREWARNING(火警事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_FIREWARNING_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nAction; // 1:开始 2:停止 UINT nFSID; // Uint32 火情编号ID EM_FIREWARNING_PIC_TYPE emPicType; // 图片类型 BOOL bIsLeaveFireDetect; // 是否属于离岗火点检测(TRUE:是 FALSE:不是) NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE byReserved[1008 - POINTERSIZE]; // 保留字节 }DEV_EVENT_FIREWARNING_INFO; ///@brief 检测到的人的信息 typedef enum tagEM_DETECT_OBJECT { EM_DETECT_OBJECT_UNKNOWN, // 未知信息 EM_DETECT_OBJECT_HUMAN_BODY_AND_FACE, // 人体和目标都有 EM_DETECT_OBJECT_HUMAN_BODY, // 仅有人体 EM_DETECT_OBJECT_HUMAN_FACE, // 仅有目标 }EM_DETECT_OBJECT; ///@brief 人体图片信息 typedef struct tagHUMAN_IMAGE_INFO { UINT nOffSet; // 偏移 UINT nLength; // 图片大小,单位字节 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[52]; // 预留字节 }HUMAN_IMAGE_INFO; ///@brief 目标图片信息 typedef struct tagFACE_IMAGE_INFO { UINT nOffSet; // 偏移 UINT nLength; // 图片大小,单位字节 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[52]; // 预留字节 }FACE_IMAGE_INFO; ///@brief 是否有反光背心 typedef enum tagEM_HAS_VEST { EM_HAS_VEST_UNKNOWN = 0, // 未知 EM_HAS_VEST_NO, // 无 EM_HAS_VEST_YES, // 有 }EM_HAS_VEST; ///@brief 是否佩戴工牌 typedef enum tagEM_HAS_BADGE { EM_HAS_BADGE_UNKNOWN = 0, // 未知 EM_HAS_BADGE_NO, // 无 EM_HAS_BADGE_YES, // 有 }EM_HAS_BADGE; ///@brief 是否推婴儿车 typedef enum tagEM_HAS_BABYCARRIAGE { EM_HAS_BABYCARRIAGE_UNKNOWN = 0, // 未知 EM_HAS_BABYCARRIAGE_NO, // 无 EM_HAS_BABYCARRIAGE_YES, // 有 }EM_HAS_BABYCARRIAGE; ///@brief 是否虚检 typedef enum tagEM_IS_ERRORDETECT { EM_IS_ERRORDETECT_UNKNOWN = -1, // 未知 EM_IS_ERRORDETECT_NO, // 无 EM_IS_ERRORDETECT_YES, // 有 }EM_IS_ERRORDETECT; ///@brief 人体部位是否有头 typedef enum tagEM_HAS_HEAD { EM_HAS_HEAD_UNKNOWN = -1, // 未知 EM_HAS_HEAD_NO, // 无 EM_HAS_HEAD_YES, // 有 }EM_HAS_HEAD; ///@brief 人体部位是否有下半身 typedef enum tagEM_HAS_DOWNBODY { EM_HAS_DOWNBODY_UNKNOWN = -1, // 未知 EM_HAS_DOWNBODY_NO, // 无 EM_HAS_DOWNBODY_YES, // 有 }EM_HAS_DOWNBODY; ///@brief 是否有雨披 typedef enum tagEM_HAS_RAINCOAT { EM_HAS_RAINCOAT_UNKNOWN = 0, // 未知 EM_HAS_RAINCOAT_NO, // 无 EM_HAS_RAINCOAT_YES, // 有 }EM_HAS_RAINCOAT; ///@brief 是否与其他目标关联 typedef enum tagEM_ASSOCIATED_RECORD_SOURCE { EM_ASSOCIATED_RECORD_SOURCE_UNKNOWN = -1, // 未知 EM_ASSOCIATED_RECORD_SOURCE_NONE, // 未关联 EM_ASSOCIATED_RECORD_SOURCE_HUMAN, // 与人体有关联成功 EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_PASSING, // 与机动车过车有关联 EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_VIOLATION, // 与机动车违章有关联 EM_ASSOCIATED_RECORD_SOURCE_STRUCTURED_MOTOR_VEHICLE, // 与结构化机动车有关联 EM_ASSOCIATED_RECORD_SOURCE_FACE, // 与目标有关联 EM_ASSOCIATED_RECORD_SOURCE_NON_MOTOR_VEHICLE, // 与非机动车有关联 }EM_ASSOCIATED_RECORD_SOURCE; ///@brief 人体属性信息 typedef struct tagHUMAN_ATTRIBUTES_INFO { EM_CLOTHES_COLOR emCoatColor; // 上衣颜色 EM_COAT_TYPE emCoatType; // 上衣类型 EM_CLOTHES_COLOR emTrousersColor; // 裤子颜色 EM_TROUSERS_TYPE emTrousersType; // 裤子类型 EM_HAS_HAT emHasHat; // 是否戴帽子 EM_HAS_BAG emHasBag; // 是否带包 NET_RECT stuBoundingBox; // 包围盒(8192坐标系) int nAge; // 年龄 EM_SEX_TYPE emSex; // 性别 EM_ANGLE_TYPE emAngle; // 角度 EM_HAS_UMBRELLA emHasUmbrella; // 是否打伞 EM_BAG_TYPE emBag; // 包类型 EM_CLOTHES_PATTERN emUpperPattern; // 上半身衣服图案 EM_HAIR_STYLE emHairStyle; // 头发样式 EM_CAP_TYPE emCap; // 帽类型 NET_POINT stuHumanCenter; // 人体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图 EM_HAS_VEST emHasVest; // 是否有反光背心; EM_HAS_BADGE emHasBadge; // 是否佩戴工牌 EM_HAS_BABYCARRIAGE emHasBabyCarriage; // 是否推婴儿车 EM_IS_ERRORDETECT emIsErrorDetect; // 是否虚检(背景误检,仅头,仅下半身都会判定为虚检) EM_HAS_HEAD emHasHead; // 人体部位是否有头 EM_HAS_DOWNBODY emHasDownBody; // 人体部位是否有下半身 UINT nAngleConf; // 姿态置信度,质量评估总分0到100 UINT nUpColorConf; // 上衣颜色置信度,质量评估总分0到100 UINT nDownColorConf; // 下衣颜色置信度,质量评估总分0到100 UINT nGenderConf; // 性别置信度,质量评估总分0到100 UINT nAgeConf; // 年龄段置信度,质量评估总分0到100 UINT nHatTypeConf; // 帽子类型置信度,质量评估总分0到100 UINT nUpTypeConf; // 上衣种类置信度,质量评估总分0到100 UINT nDownTypeConf; // 下衣种类置信度,质量评估总分0到100 UINT nHairTypeConf; // 发型种类置信度,质量评估总分0到100 UINT nHasHeadConf; // 人体部位是否有头的置信度,质量评估总分0到100 UINT nHasDownBodyConf; // 人体部位是否有下半身置信度,质量评估总分0到100 UINT nUniformStyleConf; // 制服类型置信度,质量评估总分0到100 char nCoatType; // 上衣类型,emCoatType实现和协议不一致,兼容处理, // 0:未知 1:长袖 2:短袖 3:长款大衣 4:夹克及牛仔服 5:T恤; // 6:运动装 7:羽绒服 8:衬衫 9:连衣裙 10:西装 11:毛衣 12:无袖 13:背心 BYTE byReserved[3]; // 预留字节 }HUMAN_ATTRIBUTES_INFO; ///@brief 人体属性信息扩展(原先HUMAN_ATTRIBUTES_INFO预留字段不足,增加扩展结构体) typedef struct tagHUMAN_ATTRIBUTES_INFO_EX { EM_HAS_RAINCOAT emHasRainCoat; // 是否戴帽子 EM_CLOTHES_COLOR emMaskColor; // 口罩颜色 UINT nQeScore; // 人体优选分数 UINT nIntegrality; // 目标完整性,0-完整,非0-不完整,视频流时值有效。 EM_ASSOCIATED_RECORD_SOURCE emExtRecordSource; // 是否与其他目标关联 EM_CLOTHES_COLOR emCapColor; // 帽子颜色 EM_UNIFORM_STYLE emUniformStyle; // 制服类型 int nHumanClarity; // 人体清晰度分数取值范围 1~100,0为无效值 int nHumanCompleteScore; // 人体完整度评分 BOOL bIsRelatedFace; // 表示当前人体是否曾经关联过目标 EM_COAT_TYPE emCoatStyle; // 上衣款式 EM_SHOES_TYPE emShoesType; // 鞋子款式 EM_CLOTHES_COLOR emShoesColor; // 鞋子颜色 EM_AGE_SEG emAgeSeg; // 年龄段 int nMask; // 口罩状态, -1:未知, 0:未做识别, 1:不带口罩, 2:带口罩 BYTE byReserved[984]; // 预留字节 }HUMAN_ATTRIBUTES_INFO_EX; ///@brief 目标属性 typedef struct tagNET_FACE_ATTRIBUTE { EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别 int nAge; // 年龄,-1表示该字段数据无效 unsigned int nFeatureValidNum; // 目标特征数组有效个数,与 emFeature 结合使用 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emFeatures[DH_MAX_FACEDETECT_FEATURE_NUM]; // 目标特征数组,与 nFeatureValidNum 结合使用 char szReserved[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, 0未识别,识别时范围1-100,得分高魅力高 NET_RECT stuBoundingBox; // 包围盒(8192坐标系) NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 UINT nFaceQuality; // 目标抓拍质量分数,范围 0~10000 int nFaceAlignScore; // 目标对齐得分分数,范围 0~10000,-1为无效值 int nFaceClarity; // 目标清晰度分数,范围 0~10000,-1为无效值 NET_POINT stuFaceCenter; // 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于大图 EM_FACEDETECT_GLASSES_TYPE emGlass; // 是否戴眼镜 UINT nFaceDetectConf; // 目标检测置信度,取值0~100 NET_FACE_ORIGINAL_SIZE stuOriginalSize; // 算法目标分析时的实际目标图片尺寸, 宽高为0时无效 int arrAngleStatus[3]; // 目标抓拍角度(Angle)状态 UINT nIlluminationScore; // 目标光照值,范围[0,255] char nLeftEyeCoverConf; // 目标左眼遮挡置信度,范围[0,100] char nLeftCheekCoverConf; // 目标左脸颊遮挡置信度,范围[0,100] char nMouthCoverConf; // 目标嘴巴遮挡置信度,范围[0,100] char nRightEyeCoverConf; // 目标右眼遮挡置信度,范围[0,100] char nRightCheekCoverConf; // 目标右脸颊遮挡置信度,范围[0,100] char nChinCoverConf; // 目标下巴遮挡置信度,范围[0,100] char nIsCompleteFace; // 目标完整度评价 目标完整度评价,取值0和1 0为不完整(轮廓超出图像边界) 1为完整 char nSaturationScore; // 目标图片饱和度评分,范围[0,100] char nBrowCoverConf; // 目标额头遮挡置信度,范围[0,100] char nNoseCoverConf; // 目标鼻子遮挡置信度,范围[0,100] BYTE bReserved0[2]; // 保留字节,留待扩展 EM_AGE_SEG emAgeSeg; // 年龄段 BYTE bReserved[36]; // 保留字节,留待扩展. } NET_FACE_ATTRIBUTE; ///@brief 当前人体特征是由什么事件产生的 typedef struct tagNET_HUMANTRAIT_EXTENSION_INFO { char szAdditionalCode[MAX_HUMANTRAIT_EVENT_LEN]; // 当前人体特征是由什么事件产生的,设备刚好返回32个字节数据,多加4个字节用于字节对齐和添加字符结束符 BYTE byReserved[32]; // 保留字节 } NET_HUMANTRAIT_EXTENSION_INFO; ///@brief 判断是否合规的属性列表信息 typedef enum tagEM_COMPLIANTDETAIL_TYPE { EM_COMPLIANTDETAIL_UNKNOWN, // 未知 EM_COMPLIANTDETAIL_MASK, // 面具 EM_COMPLIANTDETAIL_HELMET, // 头盔 EM_COMPLIANTDETAIL_VEST, // 反光背心 EM_COMPLIANTDETAIL_GLASSESS, // 反光眼镜 EM_COMPLIANTDETAIL_COATCOLOR, // 上装颜色 EM_COMPLIANTDETAIL_TROUSESCOLOR, // 下装颜色 }EM_COMPLIANTDETAIL_TYPE; ///@brief 关联的人体消息类型 typedef enum EM_HUMAN_POSTURE_TYPE { EM_HUMAN_POSTURE_UNKNOWN, // 未知 EM_HUMAN_POSTURE_ALONG_WITH_FACE, // 与最优目标同画面的人体 }EM_HUMAN_POSTURE_TYPE; ///@brief 图像成像光源类型 typedef enum EM_IMAGE_LIGHT_TYPE { EM_IMAGE_LIGHT_TYPE_UNKNOWN = 0, // 未知 EM_IMAGE_LIGHT_TYPE_VISIBLE, // 可见光成像 EM_IMAGE_LIGHT_TYPE_NEAR_INFRARED, // 近红外成像(灰度图) EM_IMAGE_LIGHT_TYPE_THERMAL_INFRARED, // 热红外成像(伪彩色) }EM_IMAGE_LIGHT_TYPE; ///@brief 事件类型 EVENT_IVS_HUMANTRAIT(人体特征事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_HUMANTRAIT_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nEventID; // 事件ID double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 1:开始 2:停止 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nGroupID; // 事件组ID,一次检测的多个人体特征nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 HUMAN_IMAGE_INFO stuHumanImage; // 人体图片信息 FACE_IMAGE_INFO stuFaceImage; // 目标图片信息 EM_DETECT_OBJECT emDetectObject; // 检测到的人的信息 HUMAN_ATTRIBUTES_INFO stuHumanAttributes; // 人体属性 SCENE_IMAGE_INFO stuSceneImage; // 全景大图信息 NET_FACE_ATTRIBUTE stuFaceAttributes; // 目标属性 FACE_SCENE_IMAGE stuFaceSceneImage; // 目标全景图 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 NET_HUMANTRAIT_EXTENSION_INFO stuHumanTrait; // 补充事件,表示当前人体特征是由该事件产生的 NET_HUMAN_FEATURE_VECTOR_INFO stuHumanFeatureVectorInfo; // 人体特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emHumanFeatureVersion; // 人体特征值版本号 NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo; // 目标特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emFaceFeatureVersion; // 目标特征值版本号 UINT nCompliantMark; // 合规标记0:不合规,1:合规,没有开启合规检测,无此字段。 此字段已废弃 int nCompliantDetailsNum; // 判断是否合规的属性列表个数 EM_COMPLIANTDETAIL_TYPE emCompliantDetailType[32]; // 判断是否合规的属性列表,不合规检测报不合规的属性字段,合规检测报合规的属性字段,没有开启合规检测,无此字段。 int nHumanPostureTypeNum; // 关联的人体消息类型列表个数 EM_HUMAN_POSTURE_TYPE emHumanPostureType[32]; //关联的人体消息类型列表 HUMAN_IMAGE_INFO stuAlongWithFaceHumanImage; //与最优目标同画面的人体信息,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效 SCENE_IMAGE_INFO stuAlongWithFaceHumanSceneImage; //与最优目标同画面人体的全景图,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效 HUMAN_ATTRIBUTES_INFO stuAlongWithFaceHumanAttributes; //与最优目标同画面人体的属性,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效 BOOL bCompliantMarkEnable; // 是否开启合规检测 NET_HUMAN_FEATURE_VECTOR_INFO stuAlongWithFaceHumanVectorInfo; // 人体特征值数据在二进制数据中的位置信息 EM_FEATURE_VERSION emAlongWithFaceHumanVersion; // 人体特征值版本号 UINT nCompliantMode; // 合规模式: 0-不合规,1-合规,没有开启合规检测,无此字段 UINT nAlarmCompliance; // 1:不合规 2:合规 UINT nStartSequence; // 目标在视频中出现时的视频帧编号。视频帧编号只能在一个通道内表示唯一,且不连续。视频流时该值有效 UINT nEndSequence; // 目标在视频中消失时的视频帧编号。视频帧编号只能在一个通道内表示唯一,且不连续。视频流时该值有效。 EM_IMAGE_LIGHT_TYPE emImageLightType; // 图像成像光源类型 HUMAN_ATTRIBUTES_INFO_EX stuHumanAttributesEx; // stuHumanAttributes 的扩展 HUMAN_ATTRIBUTES_INFO_EX stuAlongWithFaceHumanAttributesEx;// stuAlongWithFaceHumanAttributes 的扩展 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szObjectUUID[48]; // 智能物体全局唯一物体标识 char szHumanFeatureVersion[32]; // 人体特征值版本号-字符串 char szFaceFeatureVersion[32]; // 目标特征值版本号-字符串 char szAlongWithFaceHumanVersion[32]; // 人体特征值版本号-字符串 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 char szReserved[2]; // 对齐 NET_IMAGE_INFO_EX3* pstuImageInfo; // 图片信息数组 UINT nDetectMode; // 检测物体具体包含的信息类型: 0: 只包含属性 1: 只包含特征值 2: 属性、特征值都包含 3:属性和特征值都不包含 char byReserved[852-POINTERSIZE]; // 保留字节 }DEV_EVENT_HUMANTRAIT_INFO; ///@brief 乐橙人头检测事件 typedef struct tagDEV_EVENT_LE_HEADDETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_LE_HEADDETECTION_INFO; ///@brief 事件类型EVENT_IVS_BUSSHARPTURN(车辆急转报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BUSSHARPTURN_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 0:脉冲 1:开始 2:停止 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_BUSSHARPTURN_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ELETAGINFO(RFID电子车牌标签事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ELETAGINFO_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nAction; // 0:脉冲 1:开始 2:停止 NET_RFIDELETAG_INFO stuRFIDEleTagInfo; // RFID电子车牌标签信息 int nRetChannelNum; // 返回通道数 int nLinkChannel[DH_MAX_CHANNUM]; // 关联的相机通道,通道号从0开始 BYTE bReserved[956]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFIC_ELETAGINFO_INFO; ///@brief 图片文件类型 typedef enum tagEM_PASS_CHANGE_PICTURE_TYPE { EM_PASS_CHANGE_PICTURE_TYPE_UNKNOWN, // 未知 EM_PASS_CHANGE_PICTURE_TYPE_PASS, // 历史图片 EM_PASS_CHANGE_PICTURE_TYPE_REAL, // 实时图片 } EM_PASS_CHANGE_PICTURE_TYPE; ///@brief 事件类型 EVENT_IVS_PASS_CHANGE(预置点图片变化事件)对应数据块描述信息 typedef struct tagDEV_EVENT_PASS_CHANGE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szReserved1[4]; // 字节对齐 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nPresetID; // 预置点编号,从1开始 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 EM_PASS_CHANGE_PICTURE_TYPE emPictureType; // 图片文件类型,用于回调时指定 BYTE byReserved1[1020]; // 保留字节 } DEV_EVENT_PASS_CHANGE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_WAITINGAREA(违章进入待行区事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_WAITINGAREA_INFO { int nChannelID; // 通道号 BYTE byReserved[4]; // 保留字节,为了对齐 char szName[MAX_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE byReserved1[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_WAITINGAREA_INFO; #define MAX_OBJECT_NUM 32 // 最大物体个数 ///@brief 事件类型 EVENT_IVS_QUEUESTAY_DETECTION(排队滞留时间报警事件)对应数据块描述信息 typedef struct tagDEV_EVENT_QUEUESTAY_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐, 非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 0:脉冲 1:开始 2:停止 /*以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间*/ int nGroupID; // 事件组ID,一次检测的多个人体特征nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[MAX_OBJECT_NUM]; // 检测到的多个物体 int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) int nCount; // 事件被触发的次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReversed[1012]; // 保留字节 } DEV_EVENT_QUEUESTAY_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_BANNER_DETECTION(拉横幅事件)对应数据块描述信息 typedef struct tagDEV_EVENT_BANNER_DETECTION_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 1:开始 2:停止 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[MAX_OBJECT_NUM]; // 检测到的物体 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 int nCount; // 事件触发次数 int nPresetID; // 预置点 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BYTE byReserved[1028]; // 保留字节,留待扩展. } DEV_EVENT_BANNER_DETECTION_INFO; ///@brief 非机动车抠图信息 typedef struct tagNONMOTOR_IMAGE_INFO { int nOffset; // 在二进制数据块中的偏移 int nLength; // 图片大小,单位字节 }NONMOTOR_IMAGE_INFO; ///@brief 事件类型EVENT_IVS_NONMOTORDETECT(非机动车检测) 对应数据块描述信息 typedef struct tagDEV_EVENT_NONMOTORDETECT_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NONMOTOR_IMAGE_INFO stuImageInfo; // 非机动车抠图信息 int nNumOfCycling; // 骑车人数量 EM_OBJECT_COLOR_TYPE emNonMotorColor; // 非机动车颜色 DH_RECT stuBoundingBox; // 包围盒 EM_SEX_TYPE emSex; // 车上一人时的性别 int nAge; // 车上一人时的年龄 EM_NONMOTOR_OBJECT_STATUS emHelmet; // 车上人员头盔状态 EM_NONMOTOR_OBJECT_STATUS emCall; // 车上一人时是否在打电话 EM_NONMOTOR_OBJECT_STATUS emHat; // 车上一人时是否戴帽子 EM_NONMOTOR_OBJECT_STATUS emBag; // 车上一人时是否有背包 EM_NONMOTOR_OBJECT_STATUS emCarrierBag; // 车上一人时有没有手提包 EM_NONMOTOR_OBJECT_STATUS emUmbrella; // 是否打伞 EM_NONMOTOR_OBJECT_STATUS emGlasses; // 车上一人时是否有带眼镜 EM_NONMOTOR_OBJECT_STATUS emMask; // 车上一人时是否带口罩 EM_EMOTION_TYPE emEmotion; // 车上一人时的表情 EM_CLOTHES_TYPE emUpClothes; // 车上一人时上衣类型 EM_CLOTHES_TYPE emDownClothes; // 车上一人时下衣类型 EM_OBJECT_COLOR_TYPE emUpperBodyColor; // 车上一人时上衣颜色 EM_OBJECT_COLOR_TYPE emLowerBodyColor; // 车上一人时下衣颜色 EM_CATEGORY_NONMOTOR_TYPE emCategoryType; // 物体类型(NonMotor)中的子类别 BYTE byReserved[1024]; // 保留字节,留待扩展. }DEV_EVENT_NONMOTORDETECT_INFO; ///@brief 触发类型 typedef enum tagEM_TRIGGER_TYPE { EM_TRIGGER_TYPE_UNKNOWN = -1, // 未知类型 EM_TRIGGER_TYPE_CAR_INSPECTION_DEV, // 车检器 EM_TRIGGER_TYPE_DADAR, // 雷达 EM_TRIGGER_TYPE_VIDEO, // 视频 }EM_TRIGGER_TYPE; ///@brief 违章事件类型 typedef enum tagEM_VIOLATION_ALARM_TYPE { EM_VIOLATION_ALARM_TYPE_UNKNOWN = -1, // 未知类型 EM_VIOLATION_ALARM_TYPE_PARKING_VIOLATION, // 违章停车事件 EM_VIOLATION_ALARM_TYPE_PREALARM, // 预警事件 }EM_VIOLATION_ALARM_TYPE; ///@brief 车载定制GPS信息 typedef struct tagNET_CUSTOM_GPS_INFO { double dbLongitude; // 经度(单位是百万分之度,范围0-360度) double dbLatidude; // 纬度(单位是百万分之度,范围0-180度) double dbAltitude; // 高度,单位:米 double dbSpeed; // 速度,单位:km/H double dbBearing; // 方向角,单位:度 BYTE byReserved[1024]; // 保留字节 }NET_CUSTOM_GPS_INFO; ///@brief 机动车违法禁令标识事件(对应EVENT_IVS_TRAFFIC_BAN) typedef struct tagDEV_EVENT_TRAFFIC_BAN_INFO { int nChannelID; // 通道号 EM_TRIGGER_TYPE emTriggerType; // 触发类型 char szName[MAX_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nMark; // 底层产生的触发抓拍帧标记 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 车道编号 NET_TIME stuStartParkingTime; // 开始停车时间 int nAlarmInterval; // 报警间隔时间,单位:秒 int nParkingAllowedTime; // 允许停车时间,单位:秒 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_CUSTOM_GPS_INFO stuCustomGPSStatus; // 定制GPS信息 EM_VIOLATION_ALARM_TYPE emViolationAlarmType; // 违章事件类型 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byReserved[1024]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_BAN_INFO; ///@brief 事件类型EVENT_IVS_ELEVATOR_ABNORMAL(电动扶梯运行异常事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELEVATOR_ABNORMAL_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 1:开始 2:停止 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nDetectRegionPointNum; // 扶梯检测区顶点数 NET_POINT stuDetectRegion[20]; // 扶梯检测区多边形类型,多边形中每个顶点的坐标归一化到[0,8191]区间。 NET_POINT stuDirection[2]; // 扶梯的运动方向,第一个点是起点,第二个点是终点。坐标归一化到[0,8191]区间。 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved1[908]; // 保留字节 } DEV_EVENT_ELEVATOR_ABNORMAL_INFO; ///@brief POS交易中的商品清单信息 typedef struct tagNET_POS_ITEM_INFO { char szItemName[DH_COMMON_STRING_32]; // 商品名称 double dbPrice; // 商品单价 double dbQuantity; // 数量 double dbAmount; // 总价 char szUnit[DH_COMMON_STRING_8]; // 计价单位 BYTE byReserved[256]; // 保留字节 } NET_POS_ITEM_INFO; ///@brief 事件类型 EVENT_IVS_POS_EXCHANGE(POS机交易事件)对应数据块描述信息 typedef struct tagDEV_EVENT_POS_EXCHANGE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szDealNum[DH_COMMON_STRING_16]; // 交易号 char szCardID[DH_COMMON_STRING_16]; // 卡号 BYTE byReserved1[4]; // 字节对齐 int nItemListCount; // 商品清单数量 NET_POS_ITEM_INFO *pstItemList; // 商品清单信息, 大小为nItemListCount*sizeof(NET_POS_ITEM_INFO) NET_RECT stRect; // POS采集内容在视频上的叠加位置,矩形区域 NET_COLOR_RGBA stFrontColor; // OSD前景颜色 unsigned int nFontSize; // 字体大小, 单位px BYTE byReserved[1020]; // 保留字节 } DEV_EVENT_POS_EXCHANGE_INFO; ///@brief 事件类型 EVENT_IVS_DISTANCE_DETECTION (异常间距事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_DISTANCE_DETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 缺省时为空字符串,表示无此信息 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[980]; // 保留字节 } DEV_EVENT_DISTANCE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_FORWARDCOLLISION_WARNNING(前向碰撞预警) 对应的数据块描述信息 typedef struct tagDEV_EVENT_FORWARDCOLLISION_WARNNING_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE byReserved[736]; // 保留字节 } DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO; ///@brief 事件类型 EVENT_IVS_MATERIALSSTAY(物料堆放事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_MATERIALSSTAY_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 char szPresetName[64]; // 事件触发的预置名称 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE byReserved[4092]; // 保留字节 } DEV_EVENT_MATERIALSSTAY_INFO; ///@brief 事件类型 EVNET_IVS_LANEDEPARTURE_WARNNING(车道偏移预警) 对应的数据块描述信息 typedef struct tagDEV_EVENT_LANEDEPARTURE_WARNNING_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE byReserved[736]; // 保留字节 } DEV_EVENT_LANEDEPARTURE_WARNNING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD (非机动车超载事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 int nLane; // 车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 EVENT_COMM_INFO stuCommInfo; // 公共信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 BYTE byReserved[2048]; // 保留字节 } DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT (非机动车未戴安全帽事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 int nLane; // 车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 EVENT_COMM_INFO stuCommInfo; // 公共信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 BYTE byReserved[2048]; // 保留字节 } DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA (非机动车装载伞具事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DH_MSG_OBJECT stuObject; // 检测到的物体 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 int nLane; // 车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 EVENT_COMM_INFO stCommInfo; // 公共信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 BYTE byReserved[1368]; // 保留字节 }DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO; ///@brief 事件类型EVENT_IVS_VIDEOUNFOCUS (视频虚焦事件) typedef struct tagDEV_EVENT_VIDEOUNFOCUS_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nAction; // 0:脉冲 1:开始 2:停止 BYTE byReserved[4096]; // 保留字节 }DEV_EVENT_VIDEOUNFOCUS_INFO; ///@brief 事件类型 EVENT_IVS_FLOWBUSINESS (流动摊贩事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_FLOWBUSINESS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 char szPresetName[64]; // 事件触发的预置名称 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nViolationDuration; // 违法持续时长,单位:秒 缺省值0表示无意义 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE byReserved[2040 - POINTERSIZE]; // 保留字节 } DEV_EVENT_FLOWBUSINESS_INFO; ///@brief 归一化的云台控制坐标单元 typedef struct tagPTZ_NORMALIZED_POSITION_UNIT { double dbPositionX; // 云台水平方向角度,范围[-1, 1] double dbPositionY; // 云台垂直方向角度,范围[-1, 1] double dbZoom; // 云台光圈放大倍率,范围[0, 1] char szReserved[32]; // 预留 }PTZ_NORMALIZED_POSITION_UNIT; ///@brief 车辆状态 typedef enum tagEM_CITYMOTOR_STATUS { EM_CITYMOTOR_STATUS_UNKNOWN, // 未知 EM_CITYMOTOR_STATUS_DRIVE_IN, // 驶入 EM_CITYMOTOR_STATUS_DRIVE_OUT, // 驶离 } EM_CITYMOTOR_STATUS; ///@brief 是否为违规预警图片 typedef enum tagEM_PREALARM { EM_PREALARM_UNKNOWN = -1, //未知 EM_PREALARM_VIOLATION_EVENT, //机动车违章事件 EM_PREALARM_VIOLATION_WARNING_EVENT, //机动车违章预警事件 }EM_PREALARM; ///@brief 事件类型 EVENT_IVS_CITY_MOTORPARKING (城市机动车违停事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CITY_MOTORPARKING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[MAX_OBJECT_NUM]; // 检测到的物体 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM];// 检测区域 char szPresetName[64]; // 事件触发的预置名称 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nParkingDuration; // 违停持续时长,单位:秒 缺省值0表示无意义 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BOOL bPtzPosition; // stuPtzPosition 是否有效 PTZ_NORMALIZED_POSITION_UNIT stuPtzPosition; // 云台信息 EM_CITYMOTOR_STATUS emMotorStatus; // 车辆状态 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图信息 EM_PREALARM emPreAlarm; //是否为违规预警图片(预警触发后一定时间,违规物体还没有离开,才判定为违规) NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byVehicleHeadDirection; // 车头朝向 0-未知,1-正面,2-侧面,3-背面 char byReserved[1011]; // 保留字节 } DEV_EVENT_CITY_MOTORPARKING_INFO; ///@brief 事件类型 EVENT_IVS_CITY_NONMOTORPARKING (城市非机动车违停事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CITY_NONMOTORPARKING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 int nAlarmNum; // 报警阈值 int nNoMotorNum; // 非机动车的个数 char szPresetName[64]; // 事件触发的预置名称 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nViolationDuration; // 违法持续时长,单位:秒 缺省值0表示无意义 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[892]; // 保留字节 } DEV_EVENT_CITY_NONMOTORPARKING_INFO; ///@brief 飞机行为状态 typedef enum tagEM_AIRPLANE_STATE { EM_AIRPLANE_STATE_UNKNOWN = 0, EM_AIRPLANE_STATE_ENTER, // 飞机入位 EM_AIRPLANE_STATE_LEAVE, // 飞机离位 EM_AIRPLANE_STATE_CHOCKON, // 上轮挡 EM_AIRPLANE_STATE_CHOCKOFF, // 下轮挡 EM_AIRPLANE_STATE_NEARBRIDGE, // 靠廊桥 EM_AIRPLANE_STATE_LEAVEBRIDGE, // 撤廊桥 EM_AIRPLANE_STATE_OPENDOOR, // 舱门开 EM_AIRPLANE_STATE_CLOSEDOOR, // 舱门关 EM_AIRPLANE_STATE_FUELSTART, // 加油开始 EM_AIRPLANE_STATE_FUELEND, // 加油结束 EM_AIRPLANE_STATE_FOODSTART, // 送餐开始 EM_AIRPLANE_STATE_FOODEND, // 送餐结束 EM_AIRPLANE_STATE_BELTSTART, // 行李开始 EM_AIRPLANE_STATE_BELTEND, // 行李结束 EM_AIRPLANE_STATE_TRACTORIN, // 牵引车达到 EM_AIRPLANE_STATE_TRACTOROUT, // 牵引车离开 EM_AIRPLANE_STATE_GUIDEIN, // 引导车到达 EM_AIRPLANE_STATE_GUIDEOUT, // 引导车离开 }EM_AIRPLANE_STATE; ///@brief 事件类型 EVENT_IVS_AIRPLANE_DETECTION (飞机行为检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_AIRPLANE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_POINT stuGuideLine[2]; // 配置的导向线 NET_POINT stuStopLine[10][2]; // 配置的停止线 int nStopLineNum; // 配置的停止线数量 int nAirPlaneID; // 飞机ID NET_POINT stuAirPlaneStopLine[2]; // 飞机停止位置线 NET_RECT stuRect; // 检测飞机的位置 EM_AIRPLANE_STATE emAirPlaneState; // 飞机行为状态 BYTE byReserved[4096]; // 保留字节 } DEV_EVENT_AIRPLANE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_PHONECALL_DETECT(打电话检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_PHONECALL_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[MAX_EVENT_NAME]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 unsigned int UTCMS; // UTC对应的毫秒数 DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nRuleID; // 智能事件规则编号 UINT nObjectNum; // 检测到的物体数量 DH_MSG_OBJECT stuObjects[128]; // 多个检测到的物体信息 UINT nSerialUUIDNum; // 智能物体数量 char szSerialUUID[128][22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 char szUserName[32]; // 用户名称 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[188]; // 保留字节 } DEV_EVENT_PHONECALL_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_SMOKING_DETECT(吸烟检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SMOKING_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[MAX_EVENT_NAME]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 unsigned int UTCMS; // UTC对应的毫秒数 DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 SCENE_IMAGE_INFO stuSceneImageInfo; // 全景广角图 char szUserName[32]; // 用户名称 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1024]; // 保留字节 } DEV_EVENT_SMOKING_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_RADAR_SPEED_LIMIT_ALARM(雷达限速报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szAddress[32]; // 设备IP地址 int nSpeed; // 时速, 单位km/h NET_TIME_EX UTC; // 事件发生时间; int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,测速过程第n张图片,从1开始 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO; ///@brief 水果类型 typedef enum tagEM_FRUIT_TYPE { EM_FRUIT_TYPE_UNKNOWN, // 未知 EM_FRUIT_TYPE_GREEN_TANGERINE, // 青橘 EM_FRUIT_TYPE_YELLOW_TANGERINE_ORANGE, // 黄橘,橙类 EM_FRUIT_TYPE_GRAPEFRUIT, // 柚子 EM_FRUIT_TYPE_LEMON, // 柠檬 EM_FRUIT_TYPE_WATERMELON, // 西瓜 EM_FRUIT_TYPE_BANANA, // 香蕉 EM_FRUIT_TYPE_RED_APPLE, // 红苹果 EM_FRUIT_TYPE_GREEN_APPLE, // 青苹果 EM_FRUIT_TYPE_MUSKMELON, // 香瓜 EM_FRUIT_TYPE_HAMIMELON, // 哈密瓜 EM_FRUIT_TYPE_PEAR, // 梨 EM_FRUIT_TYPE_KIWI, // 奇异果 EM_FRUIT_TYPE_PAPAYA, // 木瓜 EM_FRUIT_TYPE_PINEAPPLE, // 菠萝 EM_FRUIT_TYPE_MANGO, // 芒果 EM_FRUIT_TYPE_LONGAN, // 龙眼 EM_FRUIT_TYPE_GINSENG_FRUIT, // 人参果 EM_FRUIT_TYPE_POMEGRABATE, // 石榴 EM_FRUIT_TYPE_COCONUT, // 椰子 EM_FRUIT_TYPE_CREAM_JUJUBE, // 奶油枣 EM_FRUIT_TYPE_WINTER_JUJUBE, // 冬枣 EM_FRUIT_TYPE_AVOCADO, // 牛油果 EM_FRUIT_TYPE_RED_PLUM, // 红布林 EM_FRUIT_TYPE_PITAYA, // 火龙果 EM_FRUIT_TYPE_GUAVA, // 芭乐 EM_FRUIT_TYPE_PERSIMMON, // 柿子 EM_FRUIT_TYPE_YACON, // 雪莲果 } EM_FRUIT_TYPE; ///@brief 检测到的水果信息 typedef struct tagNET_CANDIDATE_FRUIT_INFO { UINT nSimilarity; // 相似度 EM_FRUIT_TYPE emFruitType; // 检测到的水果类型 BYTE byReserved[1024]; // 保留字节 } NET_CANDIDATE_FRUIT_INFO; ///@brief 事件类型 EVENT_IVS_WEIGHING_PLATFORM_DETECTION(称重平台检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[MAX_EVENT_NAME]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 UINT nCandidateFruitNum; // 检测到的水果信息个数 NET_CANDIDATE_FRUIT_INFO stuFruitInfos[100]; // 检测到的水果信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图 SCENE_IMAGE_INFO_EX stuFruitImage; // 水果抠图 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO; ///@brief media文件查询条件 typedef enum __EM_FILE_QUERY_TYPE { DH_FILE_QUERY_TRAFFICCAR, // 交通车辆信息,对应结构体为MEDIA_QUERY_TRAFFICCAR_PARAM DH_FILE_QUERY_ATM, // ATM信息 DH_FILE_QUERY_ATMTXN, // ATM交易信息 DH_FILE_QUERY_FACE, // 目标信息 MEDIAFILE_FACERECOGNITION_PARAM 和 MEDIAFILE_FACERECOGNITION_INFO DH_FILE_QUERY_FILE, // 文件信息对应 NET_IN_MEDIA_QUERY_FILE 和 NET_OUT_MEDIA_QUERY_FILE DH_FILE_QUERY_TRAFFICCAR_EX, // 交通车辆信息, 扩展DH_FILE_QUERY_TRAFFICCAR, 支持更多的字段,对应结构体为MEDIA_QUERY_TRAFFICCAR_PARAM_EX DH_FILE_QUERY_FACE_DETECTION, // 目标检测事件信息 MEDIAFILE_FACE_DETECTION_PARAM 和 MEDIAFILE_FACE_DETECTION_INFO DH_FILE_QUERY_IVS_EVENT, // 智能事件信息 MEDIAFILE_IVS_EVENT_PARAM 和 MEDIAFILE_IVS_EVENT_INFO DH_FILE_QUERY_ANALYSE_OBJECT, // 智能分析其他物体(人和车除外) MEDIAFILE_ANALYSE_OBJECT_PARAM 和 MEDIAFILE_ANALYSE_OBJECT_INFO DH_FILE_QUERY_MPT_RECORD_FILE, // MPT设备的录像文件 MEDIAFILE_MPT_RECORD_FILE_PARAM 和 MEDIAFILE_MPT_RECORD_FILE_INFO DH_FILE_QUERY_XRAY_DETECTION, // X光检包裹信息对应 MEDIAFILE_XRAY_DETECTION_PARAM 和 MEDIAFILE_XRAY_DETECTION_INFO DH_FILE_QUERY_HUMAN_TRAIT, // 人体检测 MEDIAFILE_HUMAN_TRAIT_PARAM 和 MEDIAFILE_HUMAN_TRAIT_INFO DH_FILE_QUERY_NONMOTOR, // 非机动车查询, MEDIAFILE_NONMOTOR_PARAM 和 MEDIAFILE_NONMOTOR_INFO DH_FILE_QUERY_DOORCONTROL_RECORD, // 门打开事件查询, MEDIAFILE_DOORCONTROL_RECORD_PARAM 和 MEDIAFILE_DOORCONTROL_RECORD_INFO DH_FILE_QUERY_FACEBODY_DETECT, // 人像检测查询,MEDIAFILE_FACEBODY_DETECT_PARAM 和 MEDIAFILE_FACEBODY_DETECT_INFO DH_FILE_QUERY_FACEBODY_ANALYSE, // 人像识别查询,MEDIAFILE_FACEBODY_ANALYSE_PARAM 和 MEDIAFILE_FACEBODY_ANALYSE_INFO DH_FILE_QUERY_FILE_EX, // 文件信息扩展(定制),对应 NET_IN_MEDIA_QUERY_FILE 和 NET_OUT_MEDIA_QUERY_FILE // 此时 NET_IN_MEDIA_QUERY_FILE 中的 stuEventInfo 字段有效, nEventLists 及 nEventCount字段无效 DH_FILE_QUERY_SNAPSHOT_WITH_MARK, // 标记抓图查询, 对应MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM 和MEDIAFILE_SNAPSHORT_WITH_MARK_INFO DH_FILE_QUERY_ANATOMY_TEMP_DETECT, // 人体测温信息查询, 对应 MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM 和 MEDIAFILE_ANATOMY_TEMP_DETECT_INFO DH_FILE_QUERY_ILLEGAL_TRAFFIC, // 违停车辆查询,对应 MEDIAFILE_ILLEGAL_TRAFFIC_PARAM 和 MEDIAFILE_ILLEGAL_TRAFFIC_INFO DH_FILE_QUERY_SMOKE_FIRE, // 烟火检测查询,对应 MEDIAFILE_SMOKE_FIRE_PARAM 和 MEDIAFILE_SMOKE_FIRE_INFO DH_FILE_QUERY_FIRE_CONTROL_MONITOR, // 消控室值班行为检测事件查询,对应 MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM 和 MEDIAFILE_FIRE_CONTROL_MONITOR_INFO DH_FILE_QUERY_FIRE_LANE_DETECTION, // 消防通道占道检测查询,对应 MEDIAFILE_FIRE_LANE_DETECTION_PARAM 和 MEDIAFILE_FIRE_LANE_DETECTION_INFO DH_FILE_QUERY_NONMOTOR_ENTRYING, // 安全隐患检测查询,对应 MEDIAFILE_NONMOTOR_ENTRYING_PARAM 和 MEDIAFILE_NONMOTOR_ENTRYING_INFO DH_FILE_QUERY_WORK_CLOTHES_DETECTION, // 作业管控查询,对应 MEDIAFILE_WORK_CLOTHES_DETECTION_PARAM 和 MEDIAFILE_WORK_CLOTHES_DETECTION_INFO DH_FILE_QUERY_INTELLIGENT_CITY_MANAGER, // 智慧城管查询查询,对应 MEDIAFILE_INTELLIGENT_CITY_MANAGER_PARAM 和 MEDIAFILE_INTELLIGENT_CITY_MANAGER_INFO DH_FILE_QUERY_SMD_RECORD_FILE, // 智能动态监测(SMD) 录像查询, 对应 MEDIAFILE_SMD_RECORD_FILE_PARAM 和 MEDIAFILE_SMD_RECORD_FILE_INFO DH_FILE_QUERY_MOBILE_ENFORCE, // 采集站和手持终端文件信息查询,对应 MEDIAFILE_MOBILE_ENFORCE_PARAM 和 MEDIAFILE_MOBILE_ENFORCE_INFO DH_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION, // 智慧厨房查询,对应 MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM 和 MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO DH_FILE_QUERY_WATER_CONSERVANCY_SEARCH, // 水利查询, 对应MEDIAFILE_WATER_CONSERVANCY_SEARCH_PARAM和MEDIAFILE_WATER_CONSERVANCY_SEARCH_INFO DH_FILE_QUERY_BREAK_RULE_BUILDING_SEARCH, // 违章建筑查询, 对应MEDIAFILE_BREAK_RULE_BUILDING_SEARCH_PARAM和MEDIAFILE_BREAK_RULE_BUILDING_SEARCH_INFO DH_FILE_QUERY_BOAT_SEARCH, // 船只查询, 对应MEDIAFILE_BOAT_SEARCH_PARAM和MEDIAFILE_BOAT_SEARCH_INFO DH_FILE_QUERY_RADAR_REGION_DETECTION, // 雷达报警事件查询, 对应 MEDIAFILE_RADAR_REGION_DETECTION_PARAM 和 MEDIAFILE_RADAR_REGION_DETECTION_INFO DH_FILE_QUERY_EXAM, // 按照考生或考场信息查找录像, 对应 NET_MEDIAFILE_EXAM_PARAM 和 NET_MEDIAFILE_EXAM_INFO DH_FILE_QUERY_POLICEID, // 通过用户 ID、警车 ID、警察局 ID搜索录像, 对应 NET_MEDIAFILE_POLICEID_PARAM和 NET_OUT_MEDIA_QUERY_FILE } EM_FILE_QUERY_TYPE; ///@brief ATM交易类型 typedef enum { ATM_TRADE_ALL, // 所有类型 ATM_TRADE_ENQUIRY, // 查询 ATM_TRADE_WITHDRAW, // 取款 ATM_TRADE_MODIFY_PASSWORD, // 修改密码 ATM_TRADE_TRANSFER, // 转账 ATM_TRADE_DEPOSIT, // 存款 ATM_TRADE_CARDLESS_ENQUIRY, // 无卡查询 ATM_TRADE_CARDLESS_DEPOSIT, // 无卡存款 ATM_TRADE_OTHER, // 其他 }EM_ATM_TRADE_TYPE; ///@brief 卡号录像信息 typedef struct { DWORD dwSize; int nType; // 类型, 0-Card, 1-Field char szCardNo[DH_MAX_CARD_INFO_LEN]; // 卡号 EM_ATM_TRADE_TYPE emTradeType; // 交易类型 char szAmount[DH_COMMON_STRING_64]; // 交易金额, 空字符串表示不限金额 int nError; // 错误码, 0-所有错误, 1-吞钞, 2-吞卡 int nFieldCount; // 域数量, 按域查询时有效 char szFields[MAX_CARD_RECORD_FIELD_NUM][DH_COMMON_STRING_256]; // 域信息, 按域查询时有效 char szChange[DH_COMMON_STRING_32]; // 零钱 }NET_RECORD_CARD_INFO; #define MAX_IVS_EVENT_NUM 256 #define MAX_QUERY_USER_NUM 4 // 最大查询用户个数 ///@brief 查询结果排序方式 typedef enum tagEM_RESULT_ORDER_TYPE { EM_RESULT_ORDER_UNKNOWN, // 未知 EM_RESULT_ORDER_ASCENT_BYTIME, // 按时间升序排序 EM_RESULT_ORDER_DESCENT_BYTIME, // 按时间降序排序 }EM_RESULT_ORDER_TYPE; ///@brief 录像信息对应 CLIENT_FindFileEx 接口的 DH_FILE_QUERY_FILE / DH_FILE_QUERY_FILE_EX 命令 查询条件 ///@brief 目前支持通过路径查询 typedef struct tagNET_IN_MEDIA_QUERY_FILE { DWORD dwSize; // 结构体大小 char* szDirs; // 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有 int nMediaType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventLists[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 BYTE byVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 5-所有的辅码流类型 BYTE bReserved[3]; // 字节对齐 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFalgCount; // 标志总数 NET_RECORD_CARD_INFO stuCardInfo; // 卡号录像信息, emFalgLists包含卡号录像时有效 int nUserCount; // 用户名有效个数 char szUserName[MAX_QUERY_USER_NUM][DH_NEW_USER_NAME_LENGTH]; // 用户名 EM_RESULT_ORDER_TYPE emResultOrder; // 查询结果排序方式 BOOL bTime; // 是否按时间查询 NET_EM_COMBINATION_MODE emCombination; // 查询结果是否合并录像文件 EVENT_INFO stuEventInfo[16]; // 事件信息(定制),当查询为 DH_FILE_QUERY_FILE_EX 类型时有效 int nEventInfoCount; // stuEventInfo 个数 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }NET_IN_MEDIA_QUERY_FILE; ///@brief 文件摘要信息 typedef struct { char szKey[DH_COMMON_STRING_64]; // 摘要名称 char szValue[DH_COMMON_STRING_512]; // 摘要内容 BYTE bReserved[256]; // 保留字段 }NET_FILE_SUMMARY_INFO; ///@brief 录像文件的状态 typedef enum tagEM_VIDEO_FILE_STATE { EM_VIDEO_FILE_STATE_UNKNOWN, // 未知 EM_VIDEO_FILE_STATE_TEMPORARY, // 正在写 EM_VIDEO_FILE_STATE_COMPLETE, // 已写完并正常关闭文件句柄 } EM_VIDEO_FILE_STATE; ///@brief 录像信息对应 CLIENT_FindFileEx 接口的 DH_FILE_QUERY_FILE / DH_FILE_QUERY_FILE_EX 命令 查询结果 typedef struct { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 unsigned int nFileSize; // 文件长度,该字段废弃,使用nFileSizeEx字段 BYTE byFileType; // 文件类型 1:jpg图片, 2: dav BYTE byDriveNo; // 该字段已废弃,后续开发使用 nDriveNo成员 BYTE byPartition; // 分区号 BYTE byVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流 4-辅码流 unsigned int nCluster; // 簇号 char szFilePath[MAX_PATH]; // 文件路径 int nEventLists[MAX_IVS_EVENT_NUM]; // 关联的事件列表,事件类型列表,参见智能分析事件类型 int nEventCount; //事件总数 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志 int nFalgCount; //标志总数 unsigned int nDriveNo; // 磁盘号 /*频浓缩文件相关信息*/ char szSynopsisPicPath[DH_COMMON_STRING_512]; // 预处理文件提取到的快照 文件路径 // 支持HTTP URL表示 // 支持FTP URL表示 // 支持服务器本地路径 // a)"C:/pic/1.jpg" // b)"/mnt//2010/8/11/dav/15:40:50.jpg" int nSynopsisMaxTime; // 支持浓缩视频最大时间长度,单位 秒 int nSynopsisMinTime; // 支持浓缩视频最小时间长度,单位 秒 /*文件摘要信息*/ int nFileSummaryNum; // 文件摘要信息数 NET_FILE_SUMMARY_INFO stFileSummaryInfo[MAX_FILE_SUMMARY_NUM]; // 文件摘要信息 INT64 nFileSizeEx; // 文件长度扩展,支持文件长度大于4G,单位字节 UINT nTotalFrame; // 查询录像段内所有帧总和,不区分帧类型(定制) EM_VIDEO_FILE_STATE emFileState; // 录像文件的状态 char szWorkDir[256]; // 录像文件的存储目录 char szThumbnail[260]; // 缩略图路径,可根据该路径下载缩略图 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }NET_OUT_MEDIA_QUERY_FILE; ///@brief 安全带状态 typedef enum tagEM_SAFE_BELT_STATE { EM_SAFE_BELT_UNKNOWN, // 未知 EM_SAFE_BELT_OTHER, // 未识别 EM_SAFE_BELT_WITH, // 有安全带 EM_SAFE_BELT_WITHOUT, // 无安全带 } EM_SAFE_BELT_STATE; ///@brief 车内饰品类型 typedef enum tagEM_ATTACHMENT_TYPE { EM_ATTACHMENT_UNKNOWN, // 未知 EM_ATTACHMENT_OTHER, // 其他类型 EM_ATTACHMENT_FURNITURE, // 摆件 EM_ATTACHMENT_PENDANT, // 挂件 EM_ATTACHMENT_TISSUEBOX, // 纸巾盒 EM_ATTACHMENT_DANGER, // 危险品 EM_ATTACHMENT_PERFUMEBOX, // 香水 } EM_ATTACHMENT_TYPE; ///@brief 打电话状态 typedef enum tagEM_CALLING_STATE { EM_CALLING_UNKNOWN, // 未知 EM_CALLING_OTHER, // 未识别 EM_CALLING_NO, // 未打电话 EM_CALLING_YES, // 打电话 } EM_CALLING_STATE; ///@brief 车辆类型 typedef enum tagEM_CATEGORY_TYPE { EM_CATEGORY_UNKNOWN, // 未知 EM_CATEGORY_OTHER, // 其他 EM_CATEGORY_MOTOR, // 机动车 EM_CATEGORY_BUS, // 公交车 EM_CATEGORY_UNLICENSED_MOTOR, // 无牌机动车 EM_CATEGORY_LARGE_CAR, // 大型汽车 EM_CATEGORY_MICRO_CAR, // 小型汽车 EM_CATEGORY_EMBASSY_CAR, // 使馆汽车 EM_CATEGORY_MARGINAL_CAR, // 领馆汽车 EM_CATEGORY_AREAOUT_CAR, // 境外汽车 EM_CATEGORY_FOREIGN_CAR, // 外籍汽车 EM_CATEGORY_FARMTRANSMIT_CAR, // 农用运输车 EM_CATEGORY_TRACTOR, // 拖拉机 EM_CATEGORY_TRAILER, // 挂车 EM_CATEGORY_COACH_CAR, // 教练汽车 EM_CATEGORY_TRIAL_CAR, // 试验汽车 EM_CATEGORY_TEMPORARY_ENTRY_CAR, // 临时入境汽车 EM_CATEGORY_TEMPORARY_ENTRY_MOTORCYCLE, // 临时入境摩托 EM_CATEGORY_TEMPORARY_STEER_CAR, // 临时行驶车 EM_CATEGORY_LARGE_TRUCK, // 大货车 EM_CATEGORY_MID_TRUCK, // 中货车 EM_CATEGORY_MICRO_TRUCK, // 小货车 EM_CATEGORY_MICROBUS, // 面包车 EM_CATEGORY_SALOON_CAR, // 轿车 EM_CATEGORY_CARRIAGE, // 小轿车 EM_CATEGORY_MINI_CARRIAGE, // 微型轿车 EM_CATEGORY_SUV_MPV, // SUV或者MPV EM_CATEGORY_SUV, // SUV EM_CATEGORY_MPV, // MPV EM_CATEGORY_PASSENGER_CAR, // 客车 EM_CATEGORY_MOTOR_BUS, // 大客 EM_CATEGORY_MID_PASSENGER_CAR, // 中客车 EM_CATEGORY_MINI_BUS, // 小客车 EM_CATEGORY_PICKUP, // 皮卡车 EM_CATEGORY_OILTANK_TRUCK, // 油罐车 EM_CATEGORY_TANK_CAR, // 危化品车辆 EM_CATEGORY_SLOT_TANK_CAR, // 槽罐车 EM_CATEGORY_DREGS_CAR, // 渣土车 EM_CATEGORY_CONCRETE_MIXER_TRUCK, // 混凝土搅拌车 EM_CATEGORY_TAXI, // 出租车 EM_CATEGORY_POLICE, // 警车 EM_CATEGORY_AMBULANCE, // 救护车 EM_CATEGORY_GENERAL, // 普通车 EM_CATEGORY_WATERING_CAR, // 洒水车 EM_CATEGORY_FIRE_ENGINE, // 消防车 EM_CATEGORY_MACHINE_TRUCK, // 工程车 EM_CATEGORY_POWER_LOT_VEHICLE, // 粉粒物料车 EM_CATEGORY_SUCTION_SEWAGE_TRUCK, // 吸污车 EM_CATEGORY_NORMAL_TANK_TRUCK, // 普通罐车 EM_CATEGORY_SCHOOL_BUS, // 校车 EM_CATEGORY_EXCAVATOR, // 挖掘车 EM_CATEGORY_BULLDOZER, // 推土车 EM_CATEGORY_CRANE, // 吊车 EM_CATEGORY_PIMP_TRUCK, // 泵车 EM_CATEGORY_FORKLIFT, // 叉车 EM_CATEGORY_ELECTRICBIKE, // 二轮电瓶车 EM_CATEGORY_NON_MOTOR, // 非机动车 } EM_CATEGORY_TYPE; ///@brief DH_MEDIA_QUERY_TRAFFICCAR对应的查询条件 参数扩展 typedef struct tagNET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX { char szViolationCode[16]; // 违法代码 char szCountry[4]; // 国籍,2字节,符合ISO3166规范 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发StartTime, EndTime), 为FALSE表示仅下发StartTime, EndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(StartTime, EndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(StartTime, EndTime)互斥 char szPlateCode[16]; //车牌代码 BYTE byReserved[952]; // 保留字节 }NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX; ///@brief DH_MEDIA_QUERY_TRAFFICCAR对应的查询条件 typedef struct { int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME StartTime; // 开始时间 NET_TIME EndTime; // 结束时间 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 int nEventType; // 事件类型,详见"智能分析事件类型", 0:表示查询任意事件,此参数废弃,请使用pEventTypes char szPlateNumber[32]; // 车牌号, "\0"则表示查询任意车牌号 int nSpeedUpperLimit; // 查询的车速范围; 速度上限 单位: km/h int nSpeedLowerLimit; // 查询的车速范围; 速度下限 单位: km/h BOOL bSpeedLimit; // 是否按速度查询; TRUE:按速度查询,nSpeedUpperLimit和nSpeedLowerLimit有效。 DWORD dwBreakingRule; // 违章类型: // 当事件类型为 EVENT_IVS_TRAFFICGATE时 // 第一位:逆行; 第二位:压线行驶; 第三位:超速行驶; // 第四位:欠速行驶; 第五位:闯红灯; // 当事件类型为 EVENT_IVS_TRAFFICJUNCTION // 第一位:闯红灯; 第二位:不按规定车道行驶; // 第三位:逆行; 第四位:违章掉头; // 第五位:压线行驶; char szPlateType[32]; // 车牌类型,"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,"SAR" 港澳特区号牌,"Trainning" 教练车号牌 // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌 // "Civilaviation"民航号牌,"Black"黑牌 // "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车 // "MixedNewEnergyLargeCar"混合新能源大车 char szPlateColor[16]; // 车牌颜色, "Blue"蓝色,"Yellow"黄色, "White"白色,"Black"黑色 char szVehicleColor[16]; // 车身颜色:"White"白色, "Black"黑色, "Red"红色, "Yellow"黄色, "Gray"灰色, "Blue"蓝色,"Green"绿色 char szVehicleSize[16]; // 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车; "Unknown": 未知 int nGroupID; // 事件组编号(此值>=0时有效) short byLane; // 车道号(此值>=0时表示具体车道,-1表示所有车道,即不下发此字段) BYTE byFileFlag; // 文件标志, 0xFF-使用nFileFlagEx, 0-表示所有录像, 1-定时文件, 2-手动文件, 3-事件文件, 4-重要文件, 5-合成文件 BYTE byRandomAccess; // 是否需要在查询过程中随意跳转,0-不需要,1-需要 int nFileFlagEx; // 文件标志, 按位表示: bit0-定时文件, bit1-手动文件, bit2-事件文件, bit3-重要文件, bit4-合成文件, bit5-禁止名单图片 0xFFFFFFFF-所有录像 int nDirection; // 车道方向(车开往的方向) 0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知 -1-所有方向 char* szDirs; // 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有 int* pEventTypes; // 待查询的事件类型数组指针,事件类型,详见"智能分析事件类型",若为NULL则认为查询所有事件(缓冲需由用户申请) int nEventTypeNum; // 事件类型数组大小 char* pszDeviceAddress; // 设备地址, NULL表示该字段不起作用 char* pszMachineAddress; // 机器部署地点, NULL表示该字段不起作用 char* pszVehicleSign; // 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田... NULL表示该字段不起作用 WORD wVehicleSubBrand; // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册 WORD wVehicleYearModel; // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册 EM_SAFE_BELT_STATE emSafeBeltState; // 安全带状态 EM_CALLING_STATE emCallingState; // 打电话状态 EM_ATTACHMENT_TYPE emAttachMentType; // 车内饰品类型 EM_CATEGORY_TYPE emCarType; // 车辆类型 NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX* pstuTrafficCarParamEx; // 参数扩展 int bReserved[4]; // 保留字段 } MEDIA_QUERY_TRAFFICCAR_PARAM; ///@brief 加油类型 typedef enum tagEM_REFUEL_TYPE { EM_REFUEL_TYPE_UNKNOWN = 0, // unknown EM_REFUEL_TYPE_NINETY_EIGHT, // "98#" EM_REFUEL_TYPE_NINETY_SEVEN, // "97#" EM_REFUEL_TYPE_NINETY_FIVE, // "95#" EM_REFUEL_TYPE_NINETY_THREE, // "93#" EM_REFUEL_TYPE_NINETY, // "90#" EM_REFUEL_TYPE_TEN, // "10#" EM_REFUEL_TYPE_FIVE, // "5#" EM_REFUEL_TYPE_ZERO, // "0#" EM_REFUEL_TYPE_NEGATIVE_TEN, // "-10#" EM_REFUEL_TYPE_NEGATIVE_TWENTY, // "-20#" EM_REFUEL_TYPE_NEGATIVE_THIRTY_FIVE, // "-35#" EM_REFUEL_TYPE_NEGATIVE_FIFTY, // "-50#" }EM_REFUEL_TYPE; ///@brief DH_MEDIA_QUERY_TRAFFICCAR查询出来的media文件信息 typedef struct { unsigned int ch; // 通道号 char szFilePath[128]; // 文件路径 unsigned int size; // 文件长度,该字段废弃,请使用sizeEx NET_TIME starttime; // 开始时间 NET_TIME endtime; // 结束时间 unsigned int nWorkDirSN; // 工作目录编号 BYTE nFileType; // 文件类型 1:图片 2:视频 BYTE bHint; // 文件定位索引 BYTE bDriveNo; // 磁盘号 BYTE bReserved2; unsigned int nCluster; // 簇号 BYTE byPictureType; // 图片类型或文件标记, 0-普通, 1-合成, 2-抠图。更多文件标记信息请参考 MEDIAFILE_TRAFFICCAR_INFO_EX 的 emFalgLists 字段 BYTE byVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流 BYTE byPartition; // 精确定位号 BYTE bReserved[1]; // 保留字段 /*以下是交通车辆信息*/ char szPlateNumber[32]; // 车牌号码 char szPlateType[32]; // 号牌类型"Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌 // "Police" 警牌; "SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌 // "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌 // "Civilaviation"民航号牌,"Black"黑牌 // "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车 // "MixedNewEnergyLargeCar"混合新能源大车 char szPlateColor[16]; // 车牌颜色:"Blue","Yellow", "White","Black" char szVehicleColor[16]; // 车身颜色:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green" int nSpeed; // 车速,单位Km/H int nEventsNum; // 关联的事件个数 int nEvents[32]; // 关联的事件列表,数组值表示相应的事件,详见"智能分析事件类型" DWORD dwBreakingRule; // 具体违章类型掩码,第一位:闯红灯; 第二位:不按规定车道行驶; // 第三位:逆行; 第四位:违章掉头;否则默认为:交通路口事件 char szVehicleSize[16]; // 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车 char szChannelName[DH_CHAN_NAME_LEN]; // 本地或远程的通道名称 char szMachineName[DH_MAX_NAME_LEN]; // 本地或远程设备名称 int nSpeedUpperLimit; // 速度上限 单位: km/h int nSpeedLowerLimit; // 速度下限 单位: km/h int nGroupID; // 事件里的组编号 BYTE byCountInGroup; // 一个事件组内的抓拍张数 BYTE byIndexInGroup; // 一个事件组内的抓拍序号 BYTE byLane; // 车道,参见MEDIA_QUERY_TRAFFICCAR_PARAM BYTE bReserved1[21]; // 保留 NET_TIME stSnapTime; // 抓拍时间 int nDirection; // 车道方向,参见MEDIA_QUERY_TRAFFICCAR_PARAM char szMachineAddress[MAX_PATH]; // 机器部署地点 INT64 sizeEx; // 文件长度扩展,支持文件长度大于4G,单位字节 } MEDIAFILE_TRAFFICCAR_INFO, *LPMEDIAFILE_TRAFFICCAR_INFO; ///@brief DH_MEDIA_QUERY_TRAFFICCAR_EX对应的查询条件 typedef struct tagMEDIA_QUERY_TRAFFICCAR_PARAM_EX { DWORD dwSize; MEDIA_QUERY_TRAFFICCAR_PARAM stuParam; // 基本查询参数 } MEDIA_QUERY_TRAFFICCAR_PARAM_EX; ///@brief 车内饰品信息 typedef struct tagNET_ATTACH_MENET_INFO { EM_ATTACHMENT_TYPE emAttachMentType; // 车内物品类型 BYTE bReserved1[128]; // 保留字节 } NET_ATTACH_MENET_INFO; ///@brief 是否抽烟 typedef enum tagEM_SMOKING_STATE { EM_SMOKING_UNKNOWN, // 未知 EM_SMOKING_NO, // 未抽烟 EM_SMOKING_YES, // 抽烟 }EM_SMOKING_STATE; ///@brief 上传标识 typedef enum tagEM_UPLOAD_FLAG { EM_UPLOAD_FLAG_UNKNOWN = 0, // 未知 EM_UPLOAD_FLAG_SUCCEED, // 成功 EM_UPLOAD_FLAG_FAILED, // 失败 }EM_UPLOAD_FLAG; ///@brief 客户端信息 typedef struct tagNET_UPLOAD_CLIENT_INFO { char szClientID[20]; // 平台客户端的标识,当前是IPv4地址或者MAC地址 EM_UPLOAD_FLAG emUploadFlag; // 平台上传标识 NET_TIME stuUploadTime; // 上传到平台的UTC时间 BYTE byReserved[64]; // 预留 }NET_UPLOAD_CLIENT_INFO; ///@brief 车牌图片信息 typedef struct tagNET_PLATE_IMAGE_INFO { char szFilePath[128]; // 图片文件路径 int nLength; // 图片文件大小,单位:字节 char szReserved[252]; // 预留字段 }NET_PLATE_IMAGE_INFO; ///@brief 车身图片信息 typedef struct tagNET_CARBODY_IMAGE_INFO { char szFilePath[128]; // 图片文件路径 int nLength; // 图片文件大小,单位:字节 char szReserved[252]; // 预留字段 }NET_CARBODY_IMAGE_INFO; ///@brief DH_MEDIA_QUERY_TRAFFICCAR_EX查询出来的文件信息 typedef struct tagMEDIAFILE_TRAFFICCAR_INFO_EX { DWORD dwSize; MEDIAFILE_TRAFFICCAR_INFO stuInfo; // 基本信息 char szDeviceAddr[DH_COMMON_STRING_256]; // 设备地址 char szVehicleSign[DH_COMMON_STRING_32]; // 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田... char szCustomParkNo[DH_COMMON_STRING_64]; // 自定义车位号(停车场用) WORD wVehicleSubBrand; // 车辆子品牌,需要通过映射表得到真正的子品牌 WORD wVehicleYearModel; // 车辆年款,需要通过映射表得到真正的年款 NET_TIME stuEleTagInfoUTC; // 对应电子车牌标签信息中的过车时间(ThroughTime) EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志 int nFalgCount; // 标志总数 EM_SAFE_BELT_STATE emSafeBelSate; // 安全带状态 EM_CALLING_STATE emCallingState; // 打电话状态 int nAttachMentNum; // 车内物品个数 NET_ATTACH_MENET_INFO stuAttachMent[MAX_ATTACHMENT_NUM]; // 车内物品信息 char szCountry[DH_COMMON_STRING_32]; // 车牌所属国家和地区 EM_CATEGORY_TYPE emCarType; // 车辆类型 NET_SUNSHADE_STATE emSunShadeState; // 遮阳板状态 EM_SMOKING_STATE emSmokingState; // 是否抽烟 int nAnnualInspection; // 年检标个数 BYTE byReserved[4]; // 字节对齐 int nPicIDHigh; // PictureID高四字节 int nPicIDLow; // PictureID低四字节 NET_UPLOAD_CLIENT_INFO stuClient1; // 平台客户端1上传信息 NET_UPLOAD_CLIENT_INFO stuClient2; // 平台客户端2上传信息 char szExtraPlateNumber[3][32]; // 三地车牌 int nExtraPlateNumberNum; // 车牌个数 UINT nEntranceTime; // 车辆进站时间,时间格式:UTC时间 UINT nOilTime; // 车辆加油时间,时间格式:UTC时间 UINT nExitTime; // 车辆出站时间,时间格式:UTC时间 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅starttime和endtime有效(仅使用starttime和endtime, starttime和endtime在MEDIAFILE_TRAFFICCAR_INFO中) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 NET_PLATE_IMAGE_INFO stuPlateImageInfo; //车牌图片信息 NET_CARBODY_IMAGE_INFO stuCarBodyImageInfo; //车身图片信息 char szPlateCode[16]; //车牌代码 } MEDIAFILE_TRAFFICCAR_INFO_EX; ///@brief FINDNEXT查询输入参数 typedef struct __NET_FINDNEXT_RESERVED { DWORD dwSize; // 结构体大小 unsigned int nBeginNumber; // 查询起始序号,表示从beginNumber条记录开始查 0<=beginNumber<= totalCount-1 }NET_FINDNEXT_RESERVED; ///@brief 查询跳转条件 typedef struct __NET_FINDING_JUMP_OPTION_INFO { DWORD dwSize; int nOffset; // 查询结果偏移量, 是相对于当前查询的第一条查询结果的位置偏移 }NET_FINDING_JUMP_OPTION_INFO; ///@brief DH_FILE_QUERY_FACE对应的目标识别服务查询参数 typedef struct __MEDIAFILE_FACERECOGNITION_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 char szMachineAddress[MAX_PATH]; // 地点,支持模糊匹配 int nAlarmType; // 待查询报警类型,详见 EM_FACERECOGNITION_ALARM_TYPE BOOL abPersonInfo; // 人员信息是否有效 FACERECOGNITION_PERSON_INFO stPersonInfo; // 人员信息 int nChannelId; // 通道号 int nGroupIdNum; // 人员组数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID BOOL abPersonInfoEx; // 人员信息扩展是否有效 FACERECOGNITION_PERSON_INFOEX stPersonInfoEx; // 人员信息扩展 BOOL bSimilaryRangeEnable; //相似度是否有效 int nSimilaryRange[2]; //相似度范围 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥 }MEDIAFILE_FACERECOGNITION_PARAM; ///@brief 文件信息 typedef struct tagDH_PIC_INFO_EX { DWORD dwSize; // 结构体大小 DWORD dwFileLenth; // 文件大小, 单位:字节 char szFilePath[MAX_PATH]; // 文件路径 }DH_PIC_INFO_EX; ///@brief 文件信息 typedef struct tagNET_PIC_INFO { DWORD dwFileLenth; // 文件大小, 单位:字节 char szFilePath[MAX_PATH]; // 文件路径 BYTE bReserved[256]; // 保留字段 }NET_PIC_INFO; ///@brief 当前目标匹配到的候选对象图片文件路径 typedef struct __NET_CANDIDAT_PIC_PATHS { DWORD dwSize; // 结构体大小 int nFileCount; // 实际文件个数 DH_PIC_INFO_EX stFiles[DH_MAX_PERSON_IMAGE_NUM];//文件信息 }NET_CANDIDAT_PIC_PATHS; ///@brief 当前目标匹配到的候选对象图片文件路径 typedef struct tagNET_CANDIDAT_PIC_PATHS_EX { int nFileCount; // 实际文件个数 NET_PIC_INFO stFiles[DH_MAX_PERSON_IMAGE_NUM];// 文件信息 BYTE bReserved[256]; // 保留字段 }NET_CANDIDAT_PIC_PATHS_EX; ///@brief 物体截图信息 typedef struct tagIMAGE_INFO { int nLength; // 图片大小,单位:字节 int nWidth; // 图片宽度 int nHeight; // 图片高度 char szFilePath[260]; // 文件路径 BYTE byReserved[512]; // 预留字节 }IMAGE_INFO; ///@brief 目标目标信息 typedef struct tagFACE_INFO_OBJECT { IMAGE_INFO stuImageInfo; // 物体截图信息 EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别类型 unsigned int nAge; // 年龄 EM_FACEDETECT_GLASSES_TYPE emGlasses; // 是否戴眼镜 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 目标表情 char szReserved[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 是否带口罩 EM_BEARD_STATE_TYPE emBeard; // 是否有胡子 int nAttractive; // 魅力值,0表示未识别,识别时范围1-100,得分高魅力高 NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 UINT nFaceQuality; // 目标抓拍质量分数 double dMaxTemp; // 温度信息 UINT nIsOverTemp; // 是否温度异常 UINT nIsUnderTemp; // 是否温度异常 EM_TEMPERATURE_UNIT emTempUnit; // 温度单位 BYTE byReserved1[4]; // 预留字段1 BYTE byReserved[2008]; // 保留字段 }FACE_INFO_OBJECT; ///@brief 通用信息 typedef struct tagNET_MEDIAFILE_GENERAL_INFO { char szFilePath[MAX_PATH]; // 图片文件路径 int nObjectUrlNum; // ObjectUrls的个数 char szObjectUrls[8][MAX_PATH]; // 小图路径 BYTE byReserved[4096]; // 保留字段 }NET_MEDIAFILE_GENERAL_INFO; ///@brief DH_FILE_QUERY_FACE对应的目标识别服务FINDNEXT查询返回参数 typedef struct __MEDIAFILE_FACERECOGNITION_INFO { DWORD dwSize; // 结构体大小 BOOL bGlobalScenePic; // 全景图是否存在 DH_PIC_INFO_EX stGlobalScenePic; // 全景图片文件路径 DH_MSG_OBJECT stuObject; // 目标目标物体信息 DH_PIC_INFO_EX stObjectPic; // 目标目标文件路径 int nCandidateNum; // 当前目标匹配到的候选对象数量 CANDIDATE_INFO stuCandidates[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息 NET_CANDIDAT_PIC_PATHS stuCandidatesPic[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象图片文件路径 NET_TIME stTime; // 报警发生时间 char szAddress[MAX_PATH]; // 报警发生地点 int nChannelId; // 通道号 BOOL bUseCandidatesEx; // 是否使用候选对象扩展结构体, // 若为TRUE, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反 int nCandidateExNum; // 当前目标匹配到的候选对象(扩展结构体) 数量 CANDIDATE_INFOEX stuCandidatesEx[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息, 实际返回个数同nCandidateNum FACE_INFO_OBJECT stuFaceInfoObject; // 目标目标信息 NET_POINT stuFaceCenter; // 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 NET_MEDIAFILE_GENERAL_INFO stuGeneralInfo; // 通用信息 int nRecNo; // 数据库记录号 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示stuStartTimeRealUTC和stuEndTimeRealUTC无效 NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_FACERECOGNITION_INFO; ///@brief 图片类型 typedef enum __EM_FACEPIC_TYPE { NET_FACEPIC_TYPE_UNKOWN, // 未知类型 NET_FACEPIC_TYPE_GLOBAL_SENCE, // 目标全景大图 NET_FACEPIC_TYPE_SMALL, // 目标小图 }EM_FACEPIC_TYPE; #define NET_MAX_FRAMESEQUENCE_NUM 2 #define NET_MAX_TIMESTAMP_NUM 2 ///@brief 参数详细信息 typedef struct __MEDIAFILE_FACE_DETECTION_DETAIL_PARAM { DWORD dwSize; DWORD dwObjectId; // 物体ID DWORD dwFrameSequence; // 帧序号 NET_TIME_EX stTime; // 发生时间 }MEDIAFILE_FACE_DETECTION_DETAIL_PARAM; ///@brief DH_FILE_QUERY_FACE_DETECTION 对应的目标识别服务查询参数 typedef struct __MEDIAFILE_FACE_DETECTION_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 EM_FACEPIC_TYPE emPicType; // 图片类型,详见 EM_FACEPIC_TYPE BOOL bDetailEnable; // 是否有详细信息 MEDIAFILE_FACE_DETECTION_DETAIL_PARAM stuDetail; // 参数详细信息 EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别类型 BOOL bAgeEnable; // 是否指定年龄段 int nAgeRange[2]; // 年龄范围 int nEmotionValidNum; // 目标特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion[DH_MAX_FACEDETECT_FEATURE_NUM]; // 目标特征数组,与 byFeatureValidNum 结合使用 EM_FACEDETECT_GLASSES_TYPE emGlasses; // 是否戴眼镜 EM_MASK_STATE_TYPE emMask; // 是否带口罩 EM_BEARD_STATE_TYPE emBeard; // 是否有胡子 int nIsStranger; // 0-都查询;1-仅查未开启陌生人模式;2-仅查开启陌生人模式 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 int nChannelIDs[256]; // 通道号数组 int nChannelNum; // 通道号数组数量 }MEDIAFILE_FACE_DETECTION_PARAM; ///@brief 目标检测记录大图信息 typedef struct tagNET_FACEDETECT_IMAGE_INFO { UINT nLength; // 文件大小 char szFilePath[260]; // 文件路径 BYTE byReserved[128]; // 保留字段 } NET_FACEDETECT_IMAGE_INFO; ///@brief DH_FILE_QUERY_FACE_DETECTION对应的目标识别服务FINDNEXT查询返回参数 typedef struct __MEDIAFILE_FACE_DETECTION_INFO { DWORD dwSize; // 结构体大小 unsigned int ch; // 通道号 char szFilePath[128]; // 文件路径 unsigned int size; // 文件长度,该字段废弃,请使用sizeEx NET_TIME starttime; // 开始时间 NET_TIME endtime; // 结束时间 unsigned int nWorkDirSN; // 工作目录编号 BYTE nFileType; // 文件类型 1:jpg图片 BYTE bHint; // 文件定位索引 BYTE bDriveNo; // 磁盘号 BYTE byPictureType; // 图片类型, 0-普通, 1-合成, 2-抠图 unsigned int nCluster; // 簇号 EM_FACEPIC_TYPE emPicType; // 图片类型,详见 EM_FACEPIC_TYPE DWORD dwObjectId; // 物体ID DWORD dwFrameSequence[NET_MAX_FRAMESEQUENCE_NUM]; // 帧序号,数组有2个元素时,第一个表示小图,第二个表示大图 int nFrameSequenceNum; // 帧序号个数 NET_TIME_EX stTimes[NET_MAX_TIMESTAMP_NUM]; // 发生时间,数组有2个元素时,第一个表示小图,第二个表示大图 int nTimeStampNum; int nPicIndex; // 表示在簇中的图片序号 // 对于同一个簇中打包多张图片,提供索引方式定位图片 EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别类型 int nAge; // 年龄 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 目标表情 EM_FACEDETECT_GLASSES_TYPE emGlasses; // 否戴眼镜 INT64 sizeEx; // 文件长度扩展,支持文件长度大于4G,单位字节 EM_MASK_STATE_TYPE emMask; // 是否带口罩 EM_BEARD_STATE_TYPE emBeard; // 是否有胡子 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 int nAttractive; // 魅力值 int nIsStranger; // 0-未知;1-未开启陌生人模式;2-开启了陌生人模式 char szFaceObjectUrl[128]; // 当 emPicType 为 NET_FACEPIC_TYPE_GLOBAL_SENCE 时, 代表目标小图路径 NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 UINT nFaceQuality; // 目标抓拍质量分数 NET_FACEDETECT_IMAGE_INFO stuSceneImage; // 大图信息 NET_POINT stuFaceCenter; // 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅starttime和endtime有效(仅使用starttime和endtime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_FACE_DETECTION_INFO; ///@brief 区域检测事件动作 typedef enum tagNET_CROSSREGION_ACTION_INFO { EM_CROSSREGION_ACTION_UNKNOW = 0 , EM_CROSSREGION_ACTION_INSIDE , //在区域内 EM_CROSSREGION_ACTION_CROSS , //穿越区域 EM_CROSSREGION_ACTION_APPEAR , //出现 EM_CROSSREGION_ACTION_DISAPPEAR , //消失 }NET_CROSSREGION_ACTION_INFO; ///@brief 查询智能事件信息的对象类型 typedef enum tagEM_MEDIAFILE_IVS_OBJECT { EM_MEDIAFILE_IVS_UNKNOWN, // unknown EM_MEDIAFILE_IVS_OTHER, // other EM_MEDIAFILE_IVS_HUMAN, // human EM_MEDIAFILE_IVS_VEHICLE, // vehicle EM_MEDIAFILE_IVS_NONMOTOR, // nonmotor } EM_MEDIAFILE_IVS_OBJECT; ///@brief DH_FILE_QUERY_IVS_EVENT 对应的智能事件查询参数 typedef struct __MEDIAFILE_IVS_EVENT_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 int nEventLists[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFalgCount; // 标志总数 int nRuleType; // 智能分析事件名, 事件类型,详见"智能分析事件类型" NET_CROSSREGION_ACTION_INFO emAction; // 事件动作 int nIvsObjectNum; // 对象类型个数 EM_MEDIAFILE_IVS_OBJECT emIvsObject[DH_MAX_OBJECT_LIST]; // 规则触发的对象类型 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_IVS_EVENT_PARAM; ///@brief 事件抠图信息 typedef struct tagNET_EVENT_IMAGE_INFO { int nImageLength; // 图片长度 char szImagePath[DH_COMMON_STRING_128]; // 图片路径 BYTE bReserved[256]; // 保留字段 } NET_EVENT_IMAGE_INFO; ///@brief DH_FILE_QUERY_IVS_EVENT 查询出来的media文件信息 typedef struct __MEDIAFILE_IVS_EVENT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 char szFilePath[128]; // 文件路径 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 unsigned int nFileLength; // 文件长度,该字段废弃,请使用nFileLengthEx unsigned int nCluster; // 簇号 unsigned int nHint; // 文件定位索引 unsigned int nDriveNo; // 磁盘号 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 int nEventLists[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFalgCount; // 标志总数 int nRuleType; // 智能分析事件名, 事件类型,详见"智能分析事件类型" NET_CROSSREGION_ACTION_INFO emAction; // 事件动作 INT64 nFileLengthEx; // 文件长度扩展,支持文件长度大于4G,单位字节 EM_MEDIAFILE_IVS_OBJECT emIvsObject; // 规则触发的对象类型 NET_EVENT_IMAGE_INFO stuEventImageInfo; // 事件抠图信息 NET_POINT stuObjCenter; // 物体型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_IVS_EVENT_INFO; ///@brief 视频分析支持的对象类型 typedef enum tagEM_ANALYSE_OBJECT_TYPE { EM_ANALYSE_OBJECT_TYPE_UNKNOWN, // 未知的 EM_ANALYSE_OBJECT_TYPE_HUMAN, // 人 EM_ANALYSE_OBJECT_TYPE_VEHICLE, // 车辆 EM_ANALYSE_OBJECT_TYPE_FIRE, // 火 EM_ANALYSE_OBJECT_TYPE_SMOKE, // 烟雾 EM_ANALYSE_OBJECT_TYPE_PLATE, // 片状物体 EM_ANALYSE_OBJECT_TYPE_HUMANFACE, // 目标 EM_ANALYSE_OBJECT_TYPE_CONTAINER, // 货柜 EM_ANALYSE_OBJECT_TYPE_ANIMAL, // 动物 EM_ANALYSE_OBJECT_TYPE_TRAFFICLIGHT, // 红绿灯 EM_ANALYSE_OBJECT_TYPE_PASTEPAPER, // 贴纸 贴片 EM_ANALYSE_OBJECT_TYPE_HUMANHEAD, // 人的头部 EM_ANALYSE_OBJECT_TYPE_ENTITY, // 普通物体 EM_ANALYSE_OBJECT_TYPE_PACKAGE, // 包裹 EM_ANALYSE_OBJECT_TYPE_SCRAPSTEEL_DANGER, //废钢危险品 }EM_ANALYSE_OBJECT_TYPE; ///@brief DH_FILE_QUERY_ANALYSE_OBJECT 对应的智能分析其他物体参数 typedef struct __MEDIAFILE_ANALYSE_OBJECT_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 int nEventLists[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFalgCount; // 标志总数 EM_ANALYSE_OBJECT_TYPE emObject; // 查找的物体类型 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_ANALYSE_OBJECT_PARAM; ///@brief DH_FILE_QUERY_ANALYSE_OBJECT 查询出来的media文件信息 typedef struct __MEDIAFILE_ANALYSE_OBJECT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 char szFilePath[128]; // 文件路径 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 unsigned int nFileLength; // 文件长度,该字段废弃,使用nFileLengthEx unsigned int nCluster; // 簇号 unsigned int nHint; // 文件定位索引 unsigned int nDriveNo; // 磁盘号 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 int nEventLists[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 EM_RECORD_SNAP_FLAG_TYPE emFalgLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFalgCount; // 标志总数 EM_ANALYSE_OBJECT_TYPE emObject; // 查找的物体类型 INT64 nFileLengthEx; // 文件长度扩展,支持文件长度大于4G,单位字节 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_ANALYSE_OBJECT_INFO; ///@brief DH_FILE_QUERY_MPT_RECORD_FILE 对应的录像文件查询参数 typedef struct __MEDIAFILE_MPT_RECORD_FILE_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 char szPoliceID[DH_COMMON_STRING_32]; // 警员ID,为空时表示该字段无效 int nCrimeType; // 犯罪类型,值为0表示该字段无效 int nCrimeTag; // 犯罪标记,值为0表示该字段无效 char szSerialNumber[DH_COMMON_STRING_32]; // MPT设备序列号,为空时表示该字段无效 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_MPT_RECORD_FILE_PARAM; ///@brief DH_FILE_QUERY_MPT_RECORD_FILE 查询出来的media文件信息 typedef struct __MEDIAFILE_MPT_RECORD_FILE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 char szFilePath[DH_COMMON_STRING_128];// 文件路径 int nMediaType; // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件 int nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 unsigned int nFileLength; // 文件长度,该字段废弃,请使用nFileLengthEx unsigned int nCluster; // 簇号 unsigned int nHint; // 文件定位索引 unsigned int nDriveNo; // 磁盘号 int nCrimeType; // 犯罪类型 int nCrimeTag; // 犯罪标记 char szComment[DH_COMMON_STRING_256]; // 用户对文件做的备注 INT64 nFileLengthEx; // 文件长度扩展,支持文件长度大于4G,单位字节 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_MPT_RECORD_FILE_INFO; ///@brief 包裹内危险物品信息的查询类型 typedef enum tagNET_EM_INSIDE_TYPE { NET_EM_INSIDE_TYPE_GRADE, // 危险物品等级 NET_EM_INSIDE_TYPE_OBJECT, // 物品类型 }NET_EM_INSIDE_TYPE; ///@brief DH_FILE_QUERY_XRAY_DETECTION 对应的文件查询参数 typedef struct tagMEDIAFILE_XRAY_DETECTION_PARAM { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 NET_EM_INSIDE_TYPE emInsideType; // 包裹内危险物品信息的查询类型,必填 int nDangerGradeNum; // 包裹的危险等级有效个数 EM_DANGER_GRADE_TYPE emDangerGrade[MAX_DANGER_GRADE_NUM]; // 包裹的危险等级,当emInsideType字段为NET_EM_INSIDE_TYPE_GRADE时有效 int nInsideObjTypeNum; // 包裹中的物品类型有效个数 EM_INSIDE_OBJECT_TYPE emInsideObjType[MAX_INSIDE_OBJECT_TYPE_NUM]; // 包裹中的物品类型,当emInsideType字段为NET_EM_INSIDE_TYPE_OBJECT时有效 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_XRAY_DETECTION_PARAM; ///@brief DH_FILE_QUERY_XRAY_DETECTION 查询出来的media文件信息 typedef struct tagMEDIAFILE_XRAY_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 char szProcessedFilePath[MAX_PATH_LEN]; // 处理后的X光图片文件路径 char szOriginalPath[MAX_PATH_LEN]; // X光检包裹原始图片的路径 unsigned int nOriginalLength; // 原始图片的长度,单位字节 EM_DANGER_GRADE_TYPE emDangerGrade; // 包裹的危险等级 EM_INSIDE_OBJECT_TYPE emInsideObjectType[MAX_INSIDE_OBJECT_TYPE_NUM]; // 包裹中包含的物品类型 int nRetInsideObjectTypeNum; // 返回的包裹中包含的物品类型个数 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_XRAY_DETECTION_INFO; #define MAX_CLOTH_NUM 4 // 最大衣裤件数 #define MAX_CLOTHTYPE_NUM 2 // 最大衣裤类型数量 ///@brief DH_FILE_QUERY_HUMAN_TRAIT人体检测对应查询参数 typedef struct tagMEDIAFILE_HUMAN_TRAIT_PARAM { DWORD dwSize; // 结构体大小 int nChannel; // 通道 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 EM_CLOTHES_COLOR emCoatColor[MAX_CLOTH_NUM]; // 上衣颜色 EM_CLOTHES_COLOR emTrousersColor[MAX_CLOTH_NUM]; // 裤子颜色 EM_COAT_TYPE emCoatType[MAX_CLOTHTYPE_NUM]; // 上衣类型 EM_TROUSERS_TYPE emTrousersType[MAX_CLOTHTYPE_NUM]; // 裤子类型 UINT nCoatColorNum; // 需要查询的上衣颜色个数 UINT nTrousersColorNum; // 需要查询的裤子颜色个数 UINT nCoatTypeNum; // 需要查询的上衣类型个数 UINT nTrousersTypeNum; // 需要查询的裤子类型个数 EM_HAS_HAT emHasHat; // 是否戴帽子 EM_HAS_BAG emHasBag; // 是否带包 EM_SEX_TYPE emSex; // 性别 EM_HAIR_STYLE emHairStyle; // 头发样式 UINT nAgeMin; // 查询年龄段的最小年龄 UINT nAgeMax; // 查询年龄段的最大年龄 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_HUMAN_TRAIT_PARAM; ///@brief 查询到的人体检测相关信息 typedef struct tagHUMAN_TRAIT_INFO { EM_CLOTHES_COLOR emCoatColor; // 上衣颜色 EM_CLOTHES_COLOR emTrousersColor; // 裤子颜色 EM_COAT_TYPE emCoatType; // 上衣类型 EM_TROUSERS_TYPE emTrousersType; // 裤子类型 EM_HAS_HAT emHasHat; // 是否戴帽子 EM_HAS_BAG emHasBag; // 是否带包 EM_SEX_TYPE emSex; // 性别 UINT nAge; // 年龄 EM_HAIR_STYLE emHairStyle; // 头发样式 EM_HAS_UMBRELLA emHasUmbrella; // 是否打伞 EM_BAG_TYPE emBagType; // 包类型 EM_CAP_TYPE emCapType; // 帽子类型 BYTE byReserved[1024]; // 保留字段 }HUMAN_TRAIT_INFO; ///@brief 查询到的目标属性信息 typedef struct tagNET_HUMAN_FACE_ATTRIBUTE { EM_SEX_TYPE emSex; // 性别 int nAge; // 年龄 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 EM_HAS_GLASS emHasGlass; // 是否戴眼镜 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 表情 BYTE byReserved[1024]; // 保留字段 } NET_HUMAN_FACE_ATTRIBUTE; ///@brief DH_FILE_QUERY_HUMAN_TRAIT人体检测对应FINDNEXT查询返回参数 typedef struct tagMEDIAFILE_HUMAN_TRAIT_INFO { DWORD dwSize; // 结构体大小 /* 文件属性 */ int nChannel; // 通道 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 char szFilePath[MAX_PATH]; // 文件路径 int nFileSize; // 文件大小 char szFacePath[MAX_PATH]; // 目标小图路径 char szFaceScenePath[MAX_PATH]; // 目标小图对应的全景图路径 char szHumanPath[MAX_PATH]; // 人体小图路径 char szHumanSceneImage[MAX_PATH];// 人体小图对应的全景图路径 UINT nFaceImageLength; // 目标小图大小, 单位: 字节 UINT nFaceSceneImageLength; // 目标小图对应的全景图大小, 单位: 字节 UINT nHumanImageLength; // 人体小图大小, 单位: 字节 UINT nHumanSceneImageLength; // 人体小图对应的全景图大小, 单位: 字节 /* 人体信息 */ HUMAN_TRAIT_INFO stuHumanTrait; // 人体检测信息 /* 目标属性信息 */ NET_HUMAN_FACE_ATTRIBUTE stuFaceAttribute; // 目标属性信息 NET_POINT stuFaceCenter; // 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 NET_POINT stuHumanCenter; // 人体型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stStartTime和stEndTime有效(仅使用stStartTime和stEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_HUMAN_TRAIT_INFO; ///@brief 非机动车颜色类型 typedef enum tagEM_NONMOTOR_COLOR { EM_NONMOTOR_UNKNOWN, // 未知 EM_NONMOTOR_COLOR_OTHER, // 无法识别 EM_NONMOTOR_COLOR_WHITE, // 白色 EM_NONMOTOR_COLOR_ORANGE, // 橙色 EM_NONMOTOR_COLOR_PINK, // 粉色 EM_NONMOTOR_COLOR_BLACK, // 黑色 EM_NONMOTOR_COLOR_RED, // 红色 EM_NONMOTOR_COLOR_YELLOW, // 黄色 EM_NONMOTOR_COLOR_GRAY, // 灰色 EM_NONMOTOR_COLOR_BLUE, // 蓝色 EM_NONMOTOR_COLOR_GREEN, // 绿色 EM_NONMOTOR_COLOR_PURPLE, // 紫色 EM_NONMOTOR_COLOR_BROWN, // 棕色 EM_NONMOTOR_COLOR_SLIVER, // 银色 EM_NONMOTOR_COLOR_DARKVIOLET, // 暗紫罗兰色 EM_NONMOTOR_COLOR_MAROON, // 栗色 EM_NONMOTOR_COLOR_DIMGRAY, // 暗灰色 EM_NONMOTOR_COLOR_WHITESMOKE, // 白烟色 EM_NONMOTOR_COLOR_DARKORANGE, // 深橙色 EM_NONMOTOR_COLOR_MISTYROSE, // 浅玫瑰色 EM_NONMOTOR_COLOR_TOMATO, // 番茄红色 EM_NONMOTOR_COLOR_OLIVE, // 橄榄色 EM_NONMOTOR_COLOR_GOLD, // 金色 EM_NONMOTOR_COLOR_DARKOLIVEGREEN, // 暗橄榄绿色 EM_NONMOTOR_COLOR_CHARTREUSE, // 黄绿色 EM_NONMOTOR_COLOR_GREENYELLOW, // 绿黄色 EM_NONMOTOR_COLOR_FORESTGREEN, // 森林绿 EM_NONMOTOR_COLOR_SEAGREEN, // 海洋绿 EM_NONMOTOR_COLOR_DEEPSKYBLUE, // 深天蓝 EM_NONMOTOR_COLOR_CYAN, // 青色 } EM_NONMOTOR_COLOR; ///@brief 非机动车子类型 typedef enum tagEM_NONMOTOR_SUBTYPE { EM_NONMOTOR_SUBTYPE_UNKNOWN, // 未知 EM_NONMOTOR_SUBTYPE_NONMOTOR, // 非机动车 EM_NONMOTOR_SUBTYPE_BICYCLE, // 自行车 EM_NONMOTOR_SUBTYPE_TRICYCLE, // 三轮车 EM_NONMOTOR_SUBTYPE_MOTORCYCLE, // 摩托车 EM_NONMOTOR_SUBTYPE_DUALTRIWHEEL, // (两) 三轮摩托车 EM_NONMOTOR_SUBTYPE_LIGHT_MOTORCYCLE, // 轻便摩托车 EM_NONMOTOR_SUBTYPE_EMBASSY_MOTORCYCLE, // 使馆摩托车 EM_NONMOTOR_SUBTYPE_MARGINAL_MOTORCYCLE, // 领馆摩托车 EM_NONMOTOR_SUBTYPE_AREAOUT_MOTORCYCLE, // 境外摩托车 EM_NONMOTOR_SUBTYPE_FOREIGN_MOTORCYCLE, // 外籍摩托车 EM_NONMOTOR_SUBTYPE_TRIAL_MOTORCYCLE, // 试验摩托车 EM_NONMOTOR_SUBTYPE_COACH_MOTORCYCLE, // 教练摩托车 EM_NONMOTOR_SUBTYPE_PASSERBY, // 行人 }EM_NONMOTOR_SUBTYPE; ///@brief 头盔状态 typedef enum tagEM_HELMET_STATE { EM_HELMET_UNKNOWN, // 未知 EM_HELMET_OTHER, // 未识别 EM_HELMET_NO, // 未戴头盔 EM_HELMET_YES, // 戴头盔 } EM_HELMET_STATE; ///@brief DH_FILE_QUERY_NONMOTOR 非机动车对应查询参数 typedef struct tagMEDIAFILE_NONMOTOR_PARAM { DWORD dwSize; // 结构体大小 int nChannel; // 通道 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 UINT nNumOfCyclingMin; // 骑车人数最小值 UINT nNumOfCyclingMax; // 骑车人数最大值 EM_NONMOTOR_COLOR emNonmotorColor; // 非机动车颜色 EM_NONMOTOR_SUBTYPE emNonmotorSubtype; // 非机动车子类型 EM_HELMET_STATE emHelmetState; // 头盔状态 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_NONMOTOR_PARAM; ///@brief DH_FILE_QUERY_NONMOTOR 非机动车对应FINDNEXT查询返回参数 typedef struct tagMEDIAFILE_NONMOTOR_INFO { DWORD dwSize; // 结构体大小 /* 文件属性 */ int nChannel; // 通道 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 char szFilePath[MAX_PATH]; // 文件路径 int nFileSize; // 文件大小 /* 非机动车信息 */ UINT nNumOfCycling; // 骑车人数 EM_NONMOTOR_COLOR emNonmotorColor; // 非机动车颜色 EM_NONMOTOR_SUBTYPE emNonmotorSubtype; // 非机动车子类型 EM_HELMET_STATE emHelmetState; // 头盔状态 NET_POINT stuFaceCenter; // 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stStartTime和stEndTime有效(仅使用stStartTime和stEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_NONMOTOR_INFO; ///@brief 目标图片信息 typedef struct tagNET_FACE_IMAGE_INFO { DWORD dwOffSet; // 图片在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLength; // 图片大小, 单位:字节 DWORD dwWidth; // 图片宽度 DWORD dwHeight; // 图片高度 BOOL bIsDetected; // 图片是否算法检测出来的,检测过的提交识别服务器时, // 则不需要再时检测定位抠图,TRUE:检测过的,FALSE:没有检测过 char szPicFilePath[DH_COMMON_STRING_256]; // 目标图片文件路径, 与dwOffSet和dwFileLenth互斥 BYTE bReserved[512]; // 预留字节数 } NET_FACE_IMAGE_INFO; ///@brief 查询文件的类型 typedef enum tagEM_FINDFILE_TYPE { EM_FINDFILE_UNKNOWN, // 未知 EM_FINDFILE_JPG, // 泛指图片 EM_FINDFILE_DAV, // 泛指视频 EM_FINDFILE_LOG, // log信息 EM_FINDFILE_GPS, // gps信息 EM_FINDFILE_JPK, // jpk信息,图片打包文件,指文件中存有多张图片的文件,该类型和jpg类型互斥,同一个查询条件里面不能既有jpg又有jpk EM_FINDFILE_MP4, // MP4信息,(因与二代协议不兼容删除mp4,用dav表示所有视频)无Types字段,且有DB字段,默认查询"jpg"类型 EM_FINDFILE_AUDIO, // AUDIO信息,泛指音频 } EM_FINDFILE_TYPE; ///@brief 开门方式 typedef enum tagEM_OPEN_DOOR_METHOD { EM_OPEN_DOOR_METHOD_UNKNOWN = -1, // 未知 EM_OPEN_DOOR_METHOD_OTHER, // 其他方式 EM_OPEN_DOOR_METHOD_FACE, // 目标 } EM_OPEN_DOOR_METHOD; ///@brief 开门结果 typedef enum tagEM_OPEN_DOOR_STATE { EM_OPEN_DOOR_STATE_UNKNOWN = -1, // 未知 EM_OPEN_DOOR_STATE_FAIL, // 失败 EM_OPEN_DOOR_STATE_SUCCESS, // 成功 } EM_OPEN_DOOR_STATE; ///@brief DH_FILE_QUERY_DOORCONTROL_RECORD 门打开事件对应查询参数 typedef struct tagMEDIAFILE_DOORCONTROL_RECORD_PARAM { DWORD dwSize; // 结构体大小 /* 文件属性 */ int nChannel; // 通道 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 UINT nFileTypeNum; // 文件类型个数, 为0表示查询任意类型 EM_FINDFILE_TYPE emFileType[32]; // 文件类型 /* 门打开事件信息 */ EM_OPEN_DOOR_METHOD emOpenDoorMethod; // 开门方式, EM_OPEN_DOOR_METHOD_UNKNOWN 表示查所有方式 EM_OPEN_DOOR_STATE emOpenDoorState; // 开门结果, EM_OPEN_DOOR_STATE_UNKNOWN 表示查询所有结果 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_DOORCONTROL_RECORD_PARAM; ///@brief 表情 typedef enum tagEM_FACE_TRAIT_EMOTION_TYPE { EM_FACE_TRAIT_EMOTION_UNKNOWN, // 未知 EM_FACE_TRAIT_EMOTION_UNRECOGNIZE, // 未识别 EM_FACE_TRAIT_EMOTION_ANGRY, // 生气 EM_FACE_TRAIT_EMOTION_SAD, // 悲伤 EM_FACE_TRAIT_EMOTION_DISGUST, // 厌恶 EM_FACE_TRAIT_EMOTION_FEAR, // 恐惧 EM_FACE_TRAIT_EMOTION_SURPRISE, // 诧异 EM_FACE_TRAIT_EMOTION_CALM, // 平静 EM_FACE_TRAIT_EMOTION_SMILE, // 微笑 EM_FACE_TRAIT_EMOTION_LAUGH, // 大笑 EM_FACE_TRAIT_EMOTION_HAPPY, // 高兴 EM_FACE_TRAIT_EMOTION_CONFUSED, // 困惑 EM_FACE_TRAIT_EMOTION_SCREAM, // 尖叫 }EM_FACE_TRAIT_EMOTION_TYPE; ///@brief 活体 typedef enum tagEM_FACE_TRAIT_ALIVE_TYPE { EM_FACE_TRAIT_ALIVE_UNKNOWN, // 未知 EM_FACE_TRAIT_ALIVE_NON, // 非活体 EM_FACE_TRAIT_ALIVE, // 活体 }EM_FACE_TRAIT_ALIVE_TYPE; ///@brief 目标属性(定制) typedef struct tagFACE_TRAIT { EM_SEX_TYPE emSex; // 性别 UINT nAge; // 年龄 EM_HAS_GLASS emGlass; // 眼镜 EM_BEARD_STATE_TYPE emBeard; // 胡子 char szReserved[4]; EM_MASK_STATE_TYPE emMask; // 口罩 EM_FACE_TRAIT_EMOTION_TYPE emEmotion; // 表情 NET_TIME_EX stuSnapTime; // 抓拍时间 EM_FACE_TRAIT_ALIVE_TYPE emAlive; // 活体信息 BYTE byReserved[1020]; // 预留字段 }FACE_TRAIT; ///@brief 年龄组 typedef enum tagEM_AGE_GROUP_TYPE { EM_AGE_GROUP_UNKNOWN, // 未知 EM_AGE_GROUP_OLD, // 老人 EM_AGE_GROUP_ADULT, // 成年人 EM_AGE_GROUP_CHILD, // 小孩 }EM_AGE_GROUP_TYPE; ///@brief 胸前是否有东西 typedef enum tagEM_HAS_HOLD { EM_HAS_HOLD_UNKNOWN, // 未知 EM_HAS_HOLD_NO, // 无东西 EM_HAS_HOLD_YES, // 有东西 } EM_HAS_HOLD; ///@brief 上衣类型 typedef enum tagEM_UPPER_TYPE { EM_UPPER_UNKNOWN, // 未知 EM_UPPER_LONGCOAT, // 1-长款大衣 EM_UPPER_JACKETORJEANS, // 2-夹克及牛仔服 EM_UPPER_TSHIRT, // 3-T恤 EM_UPPER_SPORTSWEAR, // 4-运动服 EM_UPPER_DOWNJACKET, // 5-羽绒服 EM_UPPER_SHIRT, // 6-衬衫 EM_UPPER_DRESS, // 7-连衣裙 EM_UPPER_SUIT, // 8-西装 }EM_UPPER_TYPE; ///@brief 是否戴口罩 typedef enum tagEM_MASK_TYPE { EM_MASK_UNKNOWN, // 未知 EM_MASK_NO, // 无 EM_MASK_YES, // 戴 }EM_MASK_TYPE; ///@brief 人体属性(定制) typedef struct tagBODY_TRAIT { EM_SEX_TYPE emSex; // 性别 EM_AGE_GROUP_TYPE emAgeGroup; // 年龄组 EM_COAT_TYPE emCoatType; // 上衣类型 EM_TROUSERS_TYPE emTrousersType; // 裤子类型 EM_ANGLE_TYPE emAngle; // 人体角度 EM_CLOTHES_PATTERN emUpperPattern; // 上衣模式 EM_UNIFIED_COLOR_TYPE emTrousersColor; // 裤子颜色 EM_HAS_UMBRELLA emUmbrella; // 打伞 EM_UNIFIED_COLOR_TYPE emUmbrellaColor; // 雨伞颜色 EM_HAS_HOLD emHold; // 胸前抱东西 EM_CLOTHES_PATTERN emTrousersPattern; // 裤子模式 EM_HAT_STYLE emHatType; // 帽子款式 EM_UNIFIED_COLOR_TYPE emHatColor; // 帽子颜色 EM_UPPER_TYPE emUpperType; // 上衣类型 EM_UNIFIED_COLOR_TYPE emCoatColor; // 上衣颜色 EM_HAIR_STYLE emHairStyle; // 发型 EM_UNIFIED_COLOR_TYPE emHairColor; // 头发颜色 EM_SHOES_TYPE emShoesType; // 鞋子款式 EM_UNIFIED_COLOR_TYPE emShoesColor; // 鞋子颜色 EM_BAG_TYPE emBagType; // 箱包款式 EM_UNIFIED_COLOR_TYPE emBagColor; // 箱包颜色 EM_MASK_TYPE emMaskType; // 口罩 EM_UNIFIED_COLOR_TYPE emMaskColor; // 口罩颜色 NET_TIME_EX stuSnapTime; // 抓图时间 BYTE szReserved[1024]; // 预留字段 }BODY_TRAIT; ///@brief 人像检测查询人员属性过滤信息 typedef struct tagFACEBODY_DETECT_RECORDFILTER { int nAgeRange[2]; // 查询年龄区间:[0, 0]表示查询未知,[0, 200]表示查询所有(默认) FACE_TRAIT stuFaceTrait; // 目标特征 BODY_TRAIT stuBodyTrait; // 人体特征 BYTE byReserved[1024]; // 预留字段 }FACEBODY_DETECT_RECORDFILTER; ///@brief 事件图片偏移信息 typedef struct tagNET_EVENT_IMAGE_OFFSET_INFO { unsigned int nOffSet; // 偏移 unsigned int nLength; // 图片大小,单位字节 unsigned int nWidth; // 图片宽度 unsigned int nHeight; // 图片高度 char szPath[260]; // 图片路径 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[248]; // 预留字节 }NET_EVENT_IMAGE_OFFSET_INFO; ///@brief DH_FILE_QUERY_FACEBODY_DETECT 对应查询参数 typedef struct tagMEDIAFILE_FACEBODY_DETECT_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 UINT nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 5-所有的辅码流类型 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_RECORD_SNAP_FLAG_TYPE emFlagList[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFlagCount; // 标志总数 NET_RECORD_CARD_INFO stuCardInfo; // 卡号录像信息, emFlagList包含卡号录像时有效 EM_RESULT_ORDER_TYPE emResultOrder; // 查询结果排序方式 BOOL bTime; // 是否按时间查询 FACEBODY_DETECT_RECORDFILTER stuFilter; // 人像检测过滤条件 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_FACEBODY_DETECT_PARAM; ///@brief DH_FILE_QUERY_FACEBODY_DETECT 对应 FINDNEXT 查询返回结果 typedef struct tagMEDIAFILE_FACEBODY_DETECT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nFileType; // 文件类型 1:jpg图片, 2: dav UINT nFileSize; // 文件长度 UINT nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 UINT nPartition; // 分区号 UINT nCluster; // 簇号 char szFilePath[MAX_PATH]; // 文件路径 EM_RECORD_SNAP_FLAG_TYPE emFlagList[FLAG_TYPE_MAX]; // 录像或抓图文件标志 int nFlagCount; // 标志总数 UINT nDriveNo; // 磁盘号 FACE_TRAIT stuFaceTrait; // 目标特征 BODY_TRAIT stuBodyTrait; // 人体特征 NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage; // 目标图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage; // 人体图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage; // 全景图片信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_FACEBODY_DETECT_INFO; ///@brief 人像识别查询人员属性信息过滤信息 typedef struct tagFACEBODY_ANALYSE_RECORDFILTER { int nAgeRange[2]; // 查询年龄区间:[0, 0]表示查询未知,[0, 200]表示查询所有(默认) EM_SEX_TYPE emSex; // 性别 char szCountry[NET_COUNTRY_LENGTH]; // 国籍,符合ISO3166规范 BYTE byReserved1; // 字节对齐 char szProvince[DH_MAX_PROVINCE_NAME_LEN]; // 省份 char szCity[DH_MAX_CITY_NAME_LEN]; // 城市 char szID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标示(证件号码,护照号,军官证,或其他编号) EM_CERTIFICATE_TYPE emCertificateType; // 证件类型 BYTE byReserved[1028]; // 预留字段 } FACEBODY_ANALYSE_RECORDFILTER; ///@brief DH_FILE_QUERY_FACEBODY_ANALYSE 对应查询参数 typedef struct tagMEDIAFILE_FACEBODY_ANALYSE_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 UINT nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 5-所有的辅码流类型 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_RECORD_SNAP_FLAG_TYPE emFlagLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件 int nFlagCount; // 标志总数 NET_RECORD_CARD_INFO stuCardInfo; // 卡号录像信息, emFlagLists包含卡号录像时有效 EM_RESULT_ORDER_TYPE emResultOrder; // 查询结果排序方式 BOOL bTime; // 是否按时间查询 FACEBODY_ANALYSE_RECORDFILTER stuFilter; // 人像识别过滤条件 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 } MEDIAFILE_FACEBODY_ANALYSE_PARAM; ///@brief DH_FILE_QUERY_FACEBODY_ANALYSE 对应 FINDNEXT 查询返回结果 typedef struct tagMEDIAFILE_FACEBODY_ANALYSE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nFileSize; // 文件长度 UINT nFileType; // 文件类型 1:jpg图片, 2: dav UINT nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流 4-辅码流 UINT nPartition; // 分区号 UINT nCluster; // 簇号 char szFilePath[MAX_PATH]; // 文件路径 EM_RECORD_SNAP_FLAG_TYPE emFlagLists[FLAG_TYPE_MAX]; // 录像或抓图文件标志 int nFlagCount; // 标志总数 UINT nDriveNo; // 磁盘号 FACE_TRAIT stuFaceTrait; // 目标特征 BODY_TRAIT stuBodyTrait; // 人体特征 NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage; // 目标图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage; // 人体图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage; // 全景图片信息 CANDIDATE_INFOEX stuCandidates[DH_MAX_CANDIDATE_NUM]; // 候选目标列表 int nCandidateNum; // 返回的候选目标个数 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_FACEBODY_ANALYSE_INFO; ///@brief CLIENT_FindFileEx+DH_FILE_QUERY_SNAPSHOT_WITH_MARK 对应查询参数 typedef struct tagMEDIAFILE_SNAPSHORT_WITH_MARK_PARAM { DWORD dwSize; // 结构体大小 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM; ///@brief 抓图标记信息 typedef struct tagNET_SNAPSHOT_MARK_INFO { NET_POINT stuPosition; // 标记的坐标位置, 绝对坐标系 BYTE byReserved[1020]; // 预留字段 } NET_SNAPSHOT_MARK_INFO; ///@brief DH_FILE_QUERY_SNAPSHOT_WITH_MARK 对应 FINDNEXT 查询返回结果 typedef struct tagMEDIAFILE_SNAPSHORT_WITH_MARK_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nFileSize; // 文件长度 char szFilePath[MAX_PATH]; // 文件路径 NET_SNAPSHOT_MARK_INFO stuMarkInfo; // 抓图标记信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_SNAPSHORT_WITH_MARK_INFO; ///@brief 目标目标信息 typedef struct tagNET_DOORCONTROL_FACE_OBJECT { NET_RECT stuBoundingBox; // 包围盒 IMAGE_INFO stuFaceImageInfo; // 目标图片信息 BYTE byReserved[512]; // 预留字节 } NET_DOORCONTROL_FACE_OBJECT; ///@brief 注册库人员信息 typedef struct tagNET_REGISTER_PERSON_INFO { char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符,首次由服务端生成,区别于ID字段 // 修改,删除操作时必填 char szGroupID[NET_GROUPID_LENGTH]; // 人员所属组ID char szGroupName[NET_GROUPNAME_LENGTH]; // 人员所属组名 EM_REGISTER_DB_TYPE emRegisterDbType; // 注册库类型 EM_SEX_TYPE emSexType; // 性别 UINT nFacePicNum; // 图片张数 NET_FACE_IMAGE_INFO stuFacePicInfo[DH_MAX_PERSON_IMAGE_NUM]; // 当前人员对应的图片信息 EM_PERSON_FEATURE_STATE emFeatureState; // 人员建模状态 char szPersonName[DH_MAX_PERSON_NAME_LEN]; // 姓名 NET_TIME stuBirthday; // 生日 char szCountry[NET_COUNTRY_LENGTH]; // 国籍,符合ISO3166规范 char szProvince[DH_MAX_PROVINCE_NAME_LEN]; // 省份 char szCity[DH_MAX_CITY_NAME_LEN]; // 城市 char szHomeAddress[DH_COMMON_STRING_128]; // 注册人员家庭地址 EM_CERTIFICATE_TYPE emCertificateType; // 证件类型 char szID[DH_MAX_PERSON_ID_LEN]; // 人员证件号码,工号,或其他编号 UINT nImportant; // 人员重要等级, [1,10],数值越高越重要 char szComment[NET_COMMENT_LENGTH]; // 备注信息 BYTE byReserved[2048]; // 保留字节 } NET_REGISTER_PERSON_INFO; ///@brief 门打开事件中候选人信息 typedef struct tagNET_DOORCONTROL_CANDIDATE { UINT nSimilarity; // 相似度, [1,100] NET_REGISTER_PERSON_INFO stuPersonInfo; // 人员信息 BYTE byReserved[1024]; // 保留字节 } NET_DOORCONTROL_CANDIDATE; ///@brief DH_FILE_QUERY_DOORCONTROL_RECORD 门打开事件对应FINDNEXT查询返回参数 typedef struct tagMEDIAFILE_DOORCONTROL_RECORD_INFO { DWORD dwSize; // 结构体大小 /* 文件属性 */ int nChannel; // 通道 UINT nDriveNo; // 磁盘号 UINT nCluster; // 簇号 UINT nHint; // 精确定位号 char szFilePath[MAX_PATH]; // 文件路径 int nFileSize; // 文件大小 /* 门打开事件信息 */ EM_OPEN_DOOR_METHOD emOpenDoorMethod; // 开门方式 EM_OPEN_DOOR_STATE emOpenDoorState; // 开门结果 IMAGE_INFO stuSceneImageInfo; // 全景大图信息 NET_TIME stuSnapTime; // 抓拍时间 NET_DOORCONTROL_FACE_OBJECT stuFaceObject; // 目标目标信息 UINT nCandidatesNum; // 候选人数量 NET_DOORCONTROL_CANDIDATE stuCandidates[DH_MAX_CANDIDATE_NUM]; // 候选人信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示stuStartTimeRealUTC和stuEndTimeRealUTC无效 NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_DOORCONTROL_RECORD_INFO; ///@brief 视频浓缩相关文件查询参数 typedef struct __MEDIA_QUERY_VIDEOSYNOPSIS_PARAM { DWORD dwSize; NET_TIME StartTime; // 开始时间 NET_TIME EndTime; // 结束时间 int nMediaType; // 文件类型,0:查询任意类型,1:图片,2:录像 int nQueryType; // 查询类型,1:原始视频文件 2:浓缩后的视频文件 }MEDIA_QUERY_VIDEOSYNOPSIS_PARAM; ///@brief 查询录像信息 typedef struct __MEDIAFILE_VIDEOSYNOPSIS_INFO { char szFilePath[128]; // 文件路径 unsigned int size; // 文件长度 NET_TIME starttime; // 开始时间 NET_TIME endtime; // 结束时间 unsigned int nWorkDirSN; // 工作目录编号 BYTE nFileType; // 文件类型 1:jpg图片 BYTE bHint; // 文件定位索引 BYTE bDriveNo; // 磁盘号 BYTE bReserved2; unsigned int nCluster; // 簇号 BYTE byPictureType; // 图片类型, 0-普通, 1-合成, 2-抠图 BYTE bReserved[3]; // 保留字段 /* 视频源文件相关信息 */ int nTaskID; // 任务ID char szCurrentState[DH_MAX_SYNOPSIS_STATE_NAME]; // 视频浓缩状态 int nProgress; // 对应浓缩状态 int nObjectNum; // 浓缩得到的物体个数 /* 浓缩后的视频文件相关信息 */ int nDurationTime; // 持续时间,单位s }MEDIAFILE_VIDEOSYNOPSIS_INFO; ///@brief 温度类型 typedef enum tagEM_QUERY_TEMPERATURE_TYPE { EM_QUERY_TEMPERATURE_TYPE_UNKNOWN = -1, // 未知 EM_QUERY_TEMPERATURE_TYPE_ALL, // 全部 EM_QUERY_TEMPERATURE_TYPE_LOW, // 低 EM_QUERY_TEMPERATURE_TYPE_NORMAL, // 正常 EM_QUERY_TEMPERATURE_TYPE_HIGH, // 高 }EM_QUERY_TEMPERATURE_TYPE; ///@brief 人员过滤信息 typedef struct tagANATOMY_TEMP_DETECT_PERSON_FILTER { char szName[64]; // 姓名 BYTE byReserved[1024]; // 保留字节 } ANATOMY_TEMP_DETECT_PERSON_FILTER; ///@brief 人体测温过滤条件 typedef struct tagNET_ANATOMY_TEMP_DETECT_FILTER { EM_QUERY_TEMPERATURE_TYPE emTempType; // 温度类型 BYTE byReserved1[4]; // 预留字段 double dbTemperature; // 温度值 ANATOMY_TEMP_DETECT_PERSON_FILTER stuPersonInfo; // 人员信息 BYTE byReserved[1024]; // 保留字节 }NET_ANATOMY_TEMP_DETECT_FILTER; ///@brief 热成像人体测温查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_ANATOMY_TEMP_DETECT ) typedef struct tagMEDIAFILE_ANATOMY_TEMP_DETECT_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号,从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_ANATOMY_TEMP_DETECT_FILTER stuFilter; // 过滤信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM; ///@brief MEDIAFILE_ANATOMY_TEMP_DETECT_INFO 中 nEventType 为 EVENT_IVS_ANATOMY_TEMP_DETECT 时,pEventData 类型 typedef struct tagNET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT { BYTE byReserved[1024]; // 预留字段 }NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT; ///@brief 目标检测信息 typedef struct tagMEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT { EM_SEX_TYPE emSex; // 性别 int nAge; // 年龄 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 目标表情 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高 BYTE byReserved1[4]; // 预留字段1 EM_FACEDETECT_GLASSES_TYPE emGlasses; // 眼镜类型 BYTE byReserved[1020]; // 预留字段 }MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT; ///@brief 测温查询候选人信息 typedef struct tagMEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO { int nSimilarity; // 相似度,值越大,越相似 FACERECOGNITION_PERSON_INFOEX stuPersonInfo; // 人信息 BYTE byReserved[2048]; // 预留字段 }MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO; ///@brief 目标识别信息 typedef struct tagMEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT { BOOL bGlobalScenePic; // 全景图是否存在 DH_PIC_INFO_EX stuGlobalScenePic; // 全景图片文件路径 int nCandidateNum; // 当前目标匹配到的候选对象数量 MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO stuCandidates[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息, 实际返回个数为 nCandidateNum FACE_INFO_OBJECT stuFaceInfo; // 目标小图信息 BYTE byReserved[1024]; // 预留字段 }MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT; ///@brief 文件类型 typedef enum tagEM_FILE_TYPE { EM_FILE_TYPE_UNKNOWN, // 未知 EM_FILE_TYPE_JPG, // jpg 图片 EM_FILE_TYPE_DAV, // dav 文件 }EM_FILE_TYPE; ///@brief 热成像人体测温查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_ANATOMY_TEMP_DETECT ) typedef struct tagMEDIAFILE_ANATOMY_TEMP_DETECT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_TIME stuEventTime; // 事件发生时间 INT64 nFileSize; // 文件长度 EM_FILE_TYPE emFileType; // 文件类型 char szFilePath[MAX_PATH]; // 文件路径 int nEventList[MAX_IVS_EVENT_NUM]; // 关联的事件列表,事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 int nPartition; // 分区号 int nDriveNo; // 磁盘号 int nCluster; // 簇号 int nPicIndex; // 表示在簇中的图片序号 // 对于同一个簇中打包多张图片,提供索引方式定位图片 EM_QUERY_TEMPERATURE_TYPE emTempType; // 温度信息 double dbTemperature; // 温度值 BYTE byReserved1[4]; // 预留字段 int nEventType; // 关联的智能事件码: EVENT_IVS_ANATOMY_TEMP_DETECT,EVENT_IVS_FACEDETECT,EVENT_IVS_FACERECOGNITION NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT stuAnatomyDetectResult; // nEventType 为 EVENT_IVS_ANATOMY_TEMP_DETECT 时,有效 MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT stuFaceDetectResult; // nEventType 为 EVENT_IVS_FACEDETECT 时,有效 MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT stuFaceRecognitionResult; // nEventType 为 EVENT_IVS_FACERECOGNITION 时,有效 char szObjectPath[8][MAX_PATH]; // 目标图路径 int nObjectPathNum; // szObjectPath 的个数 char szFacePicturePath[MAX_PATH]; // 目标图路径 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_ANATOMY_TEMP_DETECT_INFO; ///@brief 比对操作类型 typedef enum tagEM_COMPARE_OPERATOR_TYPE { EM_COMPARE_OPERATOR_TYPE_UNKNOWN, // 未知 EM_COMPARE_OPERATOR_TYPE_EQUAL, // 相等 EM_COMPARE_OPERATOR_TYPE_OR, // 或 }EM_COMPARE_OPERATOR_TYPE; ///@brief 查询文件类型 typedef enum tagEM_QUERY_FILE_TYPE { EM_QUERY_FILE_TYPE_UNKNOWN, // 未知 EM_QUERY_FILE_TYPE_ORIGIN, // 原始图 EM_QUERY_FILE_TYPE_COMPOSITE, // 合成图 EM_QUERY_FILE_TYPE_DAV, // dav 录像 EM_QUERY_FILE_TYPE_AVI, // avi 录像 EM_QUERY_FILE_TYPE_MP4, // mp4 录像 }EM_QUERY_FILE_TYPE; ///@brief 车牌号过滤条件 typedef struct tagNET_PLATE_NUMBER_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szPlateNumber[16][64]; // 车牌号,如"*8888" int nPlateNumberCount; // szPlateNumber 数量 BYTE byReserved[128]; // 预留字段 }NET_PLATE_NUMBER_FILTER; ///@brief 违章事件类型 typedef enum tagEM_ILLEGAL_TRAFFIC_EVENT_TYPE { EM_ILLEGAL_TRAFFIC_EVENT_TYPE_UNKNOWN, // 未知 EM_ILLEGAL_TRAFFIC_EVENT_TYPE_TRAFFIC_PARKING, // 违法停车 EM_ILLEGAL_TRAFFIC_EVENT_TYPE_TRAFFIC_PARKING_A, // A类违法停车 EM_ILLEGAL_TRAFFIC_EVENT_TYPE_TRAFFIC_PARKING_B, // B类违法停车 EM_ILLEGAL_TRAFFIC_EVENT_TYPE_TRAFFIC_PARKING_C, // C类违法停车 EM_ILLEGAL_TRAFFIC_EVENT_TYPE_TRAFFIC_PARKING_D, // D类违法停车 }EM_ILLEGAL_TRAFFIC_EVENT_TYPE; ///@brief 事件类型过滤条件 typedef struct tagNET_EVENT_TYPE_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 EM_ILLEGAL_TRAFFIC_EVENT_TYPE emEventType[16]; // 事件类型 int nEventTypeCount; // emEventType 数量 BYTE byReserved[128]; // 预留字段 }NET_EVENT_TYPE_FILTER; ///@brief 车牌颜色过滤条件 typedef struct tagNET_PLATE_COLOR_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szColor[16][64]; // 车牌颜色 "黑牌","蓝牌", "绿牌","紫牌","灰牌", // "棕牌","红牌","黄牌","白牌","渐变绿","黄绿双拼" int nColorCount; // szColor 数量 BYTE byReserved[128]; // 预留字段 }NET_PLATE_COLOR_FILTER; ///@brief 车辆颜色过滤条件 typedef struct tagNET_VEHICLE_COLOR_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szColor[16][64]; // 车辆颜色 "黑色","蓝色","绿色", "紫色", "灰色", "棕色","红色","黄色", // "白色","暗紫罗兰色", "棕色", "栗色","银灰色","暗灰色","白烟色","深橙色", // "浅玫瑰色","番茄红色", "橄榄色","金色","暗橄榄绿色","黄绿色","绿黄色", // "森林绿色", "海洋绿色", "深天蓝色","青色", "无法识别" int nColorCount; // emColor 数量 BYTE byReserved[128]; // 预留字段 }NET_VEHICLE_COLOR_FILTER; ///@brief 车辆类型过滤条件 typedef struct tagNET_VEHICLE_TYPE_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szType[16][64]; // 车辆类型 "未知", "客车", "大货车", "中货车", "轿车", "面包车", "小货车", "三轮车", "摩托车" // "行人", "suv-mpv", "中客车", "危化品车辆", "SUV", "MPV", "公交车", "皮卡车", "微型车", "油罐车" int nTypeCount; // szType 数量 BYTE byReserved[128]; // 预留字段 }NET_VEHICLE_TYPE_FILTER; ///@brief 车辆Logo过滤条件 typedef struct tagNET_VEHICLE_LOGO_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szLogo[16][64]; // Logo, "Audi"-奥迪, "Honda"-本田 ... int nLogoCount; // szLogo 数量 BYTE byReserved[128]; // 预留字段 }NET_VEHICLE_LOGO_FILTER; ///@brief 车系过滤条件 typedef struct tagNET_VEHICLE_SERIES_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szSeries[16][64]; // 车系,如"*Audi" int nSeriesCount; // szSeries 数量 BYTE byReserved[128]; // 预留字段 }NET_VEHICLE_SERIES_FILTER; ///@brief 事件码过滤条件 typedef struct tagNET_EVENT_CODE_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szEventCode[16][64]; // 事件码,如"*7002" int nEventCodeCount; // szEventCode 数量 BYTE byReserved[128]; // 预留字段 }NET_EVENT_CODE_FILTER; ///@brief 防伪码过滤条件 typedef struct tagNET_DEFEND_CODE_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 char szDefendCode[16][64]; // 防伪码,如"*888*" int nDefendCodeCount; // szDefendCode 数量 BYTE byReserved[128]; // 预留字段 }NET_DEFEND_CODE_FILTER; ///@brief 文件类型过滤条件 typedef struct tagNET_FILE_TYPE_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 操作类型 EM_QUERY_FILE_TYPE emFileType[16]; // 文件类型 int nFileTypeCount; // emFileType 数量 BYTE byReserved[128]; // 预留字段 }NET_FILE_TYPE_FILTER; ///@brief 违停车辆查询过滤条件 ///@brief 对于车辆Logo、车系、事件码等字段参考 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO 结构体 typedef struct tagNET_ILLEGAL_TRAFFIC_FILTER { NET_PLATE_NUMBER_FILTER stuPlateNumberFilter; // 车牌号过滤器 NET_PLATE_COLOR_FILTER stuPlateColorFilter; // 车牌颜色过滤器 NET_EVENT_TYPE_FILTER stuEventTypeFilter; // 事件类型过滤器 NET_VEHICLE_COLOR_FILTER stuVehicleColorFilter; // 车辆颜色过滤器 NET_VEHICLE_TYPE_FILTER stuVehicleTypeFilter; // 车辆类型过滤器 NET_VEHICLE_LOGO_FILTER stuVehicleLogoFilter; // 车辆Logo过滤器 NET_VEHICLE_SERIES_FILTER stuVehicleSeriesFilter; // 车系过滤器 NET_EVENT_CODE_FILTER stuEventCodeFilter; // 事件码过滤器 NET_DEFEND_CODE_FILTER stuDefendCodeFilter; // 防伪码过滤器 NET_FILE_TYPE_FILTER stuFileTypeFilter; // 文件类型过滤器 BYTE byReserved[2048]; // 预留字段 }NET_ILLEGAL_TRAFFIC_FILTER; ///@brief 违停车辆查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_ILLEGAL_TRAFFIC ) typedef struct tagMEDIAFILE_ILLEGAL_TRAFFIC_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_ILLEGAL_TRAFFIC_FILTER stuFilter; // 过滤信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_ILLEGAL_TRAFFIC_PARAM; ///@brief 违停车辆查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_ILLEGAL_TRAFFIC ) typedef struct tagMEDIAFILE_ILLEGAL_TRAFFIC_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 char szFilePath[MAX_PATH]; // 文件路径 INT64 nFileSize; // 文件长度 EM_QUERY_FILE_TYPE emFileType; // 文件类型 EM_ILLEGAL_TRAFFIC_EVENT_TYPE emEventType; // 事件类型 char szEventCode[64]; // 违章码 NET_TIME stuEventTime; // 违章时间,UTC char szEventAddress[128]; // 违章地点 int nGroupID; // 事件组ID int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nParkingTime; // 停车时间,单位秒 BYTE byReserved[4]; // 字节对齐 char szVehicleColor[64]; // 车辆颜色 char szMachineName[64]; // 机器名称 char szDefendCode[64]; // 防伪码 char szPlateColor[64]; // 车牌颜色 char szPlateNumber[64]; // 车牌号 char szVehicleLogo[64]; // 车辆logo char szVehicleSeries[64]; // 车系 char szVehicleType[64]; // 车型 BOOL bRealUTC; // 为TRUE表示stuStartTimeRealUTC和stuEndTimeRealUTC有效(使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示stuStartTimeRealUTC和stuEndTimeRealUTC无效 NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_ILLEGAL_TRAFFIC_INFO; ///@brief 烟火检测查询过滤条件 typedef struct tagNET_SMOKE_FIRE_FILTER { char szRule[64]; // 智能分析规则,当szRule不为""时,MEDIAFILE_SMOKE_FIRE_PARAM 中 nEventList 无效 // 通配符"*"代表任意规则、"SmokeDetection"、"FireDetection" BYTE byReserved[1024]; // 预留字段 }NET_SMOKE_FIRE_FILTER; ///@brief 烟火检测查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_SMOKE_FIRE ) typedef struct tagMEDIAFILE_SMOKE_FIRE_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventList[256]; // 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL、EVENT_IVS_SMOKEDETECTION int nEventCount; // 事件总数 NET_SMOKE_FIRE_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_SMOKE_FIRE_PARAM; ///@brief 烟火检测查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_SMOKE_FIRE ) typedef struct tagMEDIAFILE_SMOKE_FIRE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szGlobalSceneFilePath[260]; // 文件路径 int nGlobalSceneFileSize; // 文件长度 char szRule[64]; // 规则 NET_RECT stuBoundingBox; // 包围盒,8192坐标系 NET_EVENT_IMAGE_INFO stuImageInfo; // 小图信息 int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_SMOKE_FIRE_INFO; ///@brief 烟火检测查询过滤条件 typedef struct tagNET_FIRE_CONTROL_MONITOR_FILTER { char szRule[64]; // 智能分析规则,当szRule不为""时,MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM 中 nEventList 无效 // 通配符"*"代表任意规则、"SleepDetect"、"PlayMobilephone"、"PhoneCallDetect" BYTE byReserved[1024]; // 预留字段 }NET_FIRE_CONTROL_MONITOR_FILTER; ///@brief 消控室值班行为检测事件查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_CONTROL_MONITOR ) typedef struct tagMEDIAFILE_FIRE_CONTROL_MONITOR_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventList[256]; // 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL、EVENT_IVS_SLEEP_DETECT int nEventCount; // 事件总数 NET_FIRE_CONTROL_MONITOR_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM; ///@brief 消控室值班行为检测事件查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_CONTROL_MONITOR ) typedef struct tagMEDIAFILE_FIRE_CONTROL_MONITOR_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szGlobalSceneFilePath[260]; // 文件路径 int nGlobalSceneFileSize; // 文件长度 char szRule[64]; // 规则 NET_RECT stuBoundingBox; // 包围盒,8192坐标系 NET_EVENT_IMAGE_INFO stuImageInfo; // 小图信息 int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_FIRE_CONTROL_MONITOR_INFO; ///@brief 消防占道物体类型 typedef enum tagEM_FIRE_LANE_OBJECT_TYPE { EM_FIRE_LANE_OBJECT_TYPE_UNKNOWN, // 未知 EM_FIRE_LANE_OBJECT_TYPE_ANY, // 任意 EM_FIRE_LANE_OBJECT_TYPE_CARTON, // 盒子 EM_FIRE_LANE_OBJECT_TYPE_BOX, // 箱子 EM_FIRE_LANE_OBJECT_TYPE_NONMOTOR, // 非机动车 }EM_FIRE_LANE_OBJECT_TYPE; ///@brief 消防通道占道检测查询过滤条件 typedef struct tagNET_FIRE_LANE_DETECTION_FILTER { EM_FIRE_LANE_OBJECT_TYPE emObjectTypes[32]; // 规则触发的对象类型 int nObjectTypes; // emObjectTypes 个数 BYTE byReserved[1020]; // 预留字段 }NET_FIRE_LANE_DETECTION_FILTER; ///@brief 消防通道占道检测查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_LANE_DETECTION ) typedef struct tagMEDIAFILE_FIRE_LANE_DETECTION_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventList[256]; // 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL int nEventCount; // 事件总数 NET_FIRE_LANE_DETECTION_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_FIRE_LANE_DETECTION_PARAM; ///@brief 消防通道占道检测查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_LANE_DETECTION ) typedef struct tagMEDIAFILE_FIRE_LANE_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szGlobalSceneFilePath[260]; // 文件路径 int nGlobalSceneFileSize; // 文件长度 int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg EM_FIRE_LANE_OBJECT_TYPE emObjectType; // 规则触发的对象类型 NET_RECT stuBoundingBox; // 包围盒,8192坐标系 NET_EVENT_IMAGE_INFO stuImageInfo; // 小图信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_FIRE_LANE_DETECTION_INFO; ///@brief 安全隐患物体类型 typedef enum tagEM_NONMOTOR_ENTRYING_OBJECT_TYPE { EM_NONMOTOR_ENTRYING_OBJECT_TYPE_UNKNOWN, // 未知 EM_NONMOTOR_ENTRYING_OBJECT_TYPE_ANY, // 任意 EM_NONMOTOR_ENTRYING_OBJECT_TYPE_NONMOTOR, // 非机动车 }EM_NONMOTOR_ENTRYING_OBJECT_TYPE; ///@brief 安全隐患检测查询过滤条件 typedef struct tagNET_NONMOTOR_ENTRYING_FILTER { EM_NONMOTOR_ENTRYING_OBJECT_TYPE emObjectTypes[32]; // 规则触发的对象类型 int nObjectTypes; // emObjectTypes 个数 BYTE byReserved[1020]; // 预留字段 }NET_NONMOTOR_ENTRYING_FILTER; ///@brief 安全隐患检测查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_NONMOTOR_ENTRYING ) typedef struct tagMEDIAFILE_NONMOTOR_ENTRYING_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventList[256]; // 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL int nEventCount; // 事件总数 NET_NONMOTOR_ENTRYING_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 }MEDIAFILE_NONMOTOR_ENTRYING_PARAM; ///@brief 安全隐患检测查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_NONMOTOR_ENTRYING ) typedef struct tagMEDIAFILE_NONMOTOR_ENTRYING_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szGlobalSceneFilePath[260]; // 文件路径 int nGlobalSceneFileSize; // 文件长度 int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg EM_NONMOTOR_ENTRYING_OBJECT_TYPE emObjectType; // 规则触发的对象类型 NET_RECT stuBoundingBox; // 包围盒,8192坐标系 NET_EVENT_IMAGE_INFO stuImageInfo; // 小图信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_NONMOTOR_ENTRYING_INFO; ///@brief 安全帽佩戴状态 typedef enum tagEM_WORK_HELMET_STATE { EM_HELMET_STATE_UNKNOWN, // 未知 EM_HELMET_STATE_NOTWEAR, // 不带安全帽 EM_HELMET_STATE_WEAR, // 有带安全帽 EM_HELMET_STATE_INCONFORMITY_COLOR, // 不存在指定颜色的安全帽 } EM_WORK_HELMET_STATE; ///@brief 工作服穿戴状态 typedef enum tagEM_WORKCLOTHES_STATE { EM_WORKCLOTHES_STATE_UNKNOWN, // 未知 EM_WORKCLOTHES_STATE_NOTWEAR, // 无工作服 EM_WORKCLOTHES_STATE_WEAR, // 有工作服 } EM_WORKCLOTHES_STATE; ///@brief 安全帽过滤信息 typedef struct tagNET_HELMET_FILTER { EM_CLOTHES_COLOR emColors[16]; // 安全帽颜色 UINT nColorsCount; // emColors 数量 EM_WORK_HELMET_STATE emStates[8]; // 安全帽状态 UINT nStatesCount; // emStates 个数 char byReserved[512]; // 预留字段 }NET_HELMET_FILTER; ///@brief 工作服过滤信息 typedef struct tagNET_CLOTHES_FILTER { EM_CLOTHES_COLOR emColors[16]; // 衣服颜色 UINT nColorsCount; // emColors 数量 EM_WORKCLOTHES_STATE emStates[8]; // 衣服状态 UINT nStatesCount; // emStates 个数 char byReserved[512]; // 预留字段 }NET_CLOTHES_FILTER; ///@brief 作业管控查询过滤条件 typedef struct tagNET_WORK_CLOTHER_DETECTION_FILTER { NET_HELMET_FILTER stuHelmetFilter; // 安全帽过滤信息 NET_CLOTHES_FILTER stuClothesFilter; // 工作服过滤信息 BYTE byReserved[1024]; // 预留字段 }NET_WORK_CLOTHER_DETECTION_FILTER; ///@brief 作业管控查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_WORK_CLOTHES_DETECTION ) typedef struct tagMEDIAFILE_WORK_CLOTHES_DETECTION_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEventList[256]; // 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL int nEventCount; // 事件总数 NET_WORK_CLOTHER_DETECTION_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_WORK_CLOTHES_DETECTION_PARAM; ///@brief 安全帽信息 typedef struct tagMEDIAFILE_HELMET_INFO { EM_CLOTHES_COLOR emColor; // 安全帽颜色 EM_WORK_HELMET_STATE emState; // 安全帽状态 char byReserved[512]; // 预留字段 }MEDIAFILE_HELMET_INFO; ///@brief 工作服信息 typedef struct tagMEDIAFILE_CLOTHES_INFO { EM_CLOTHES_COLOR emColor; // 工作服颜色 EM_WORKCLOTHES_STATE emState; // 工作服状态 char byReserved[512]; // 预留字段 }MEDIAFILE_CLOTHES_INFO; ///@brief 作业管控查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_WORK_CLOTHES_DETECTION ) typedef struct tagMEDIAFILE_WORK_CLOTHES_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 MEDIAFILE_HELMET_INFO stuHelmetInfo; // 安全帽信息 MEDIAFILE_CLOTHES_INFO stuClothesInfo; // 工作服信息 char szGlobalSceneImageFilePath[260];// 全景图路径 UINT nGlobalSceneImageFileLength; // 全景图长度 char szHumanSmallImageFilePath[260]; // 人体小图路径 UINT nHumanSmallImageFileLength; // 人体小图长度 NET_RECT stuHumanBoundingBox; // 包围盒,8192坐标系 int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 BYTE byReserved[968]; // 预留字段 }MEDIAFILE_WORK_CLOTHES_DETECTION_INFO; ///@brief 智慧城管查询事件过滤条件 typedef struct tagNET_INTELLIGENT_CITY_MANAGER_EVENT_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 事件操作类型 int nEventList[64]; // 事件类型列表,参见智能分析事件类型:EVENT_IVS_ALL、EVENT_IVS_CITY_MOTORPARKING、EVENT_IVS_SHOPPRESENCE、 // EVENT_IVS_CITY_NONMOTORPARKING、EVENT_IVS_FLOWBUSINESS、EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA // EVENT_IVS_GARBAGE_EXPOSURE、EVENT_IVS_DUSTBIN_OVER_FLOW、EVENT_IVS_DOOR_FRONT_DIRTY // EVENT_IVS_SHOP_SIGN_ABNORMAL、EVENT_IVS_SHOP_WINDOW_POST int nEventCount; // 事件数 BYTE byReserved[1024]; // 预留字段 }NET_INTELLIGENT_CITY_MANAGER_EVENT_FILTER; ///@brief 智慧城管查询车牌号过滤条件 typedef struct tagNET_INTELLIGENT_CITY_MANAGER_PLATENO_FILTER { EM_COMPARE_OPERATOR_TYPE emOperatorType; // 车牌操作类型 char szPlateNo[16][32]; // 车牌信息 int nPlateCount; // 车牌数 BYTE byReserved[1024]; // 预留字段 }NET_INTELLIGENT_CITY_MANAGER_PLATENO_FILTER; ///@brief 智慧城管查询过滤条件 typedef struct tagNET_INTELLIGENT_CITY_MANAGER_FILTER { NET_INTELLIGENT_CITY_MANAGER_EVENT_FILTER stuEventFilter; // 事件过滤条件 NET_INTELLIGENT_CITY_MANAGER_PLATENO_FILTER stuPlateNoFilter; // 车牌号过滤条件 BYTE byReserved[2048]; // 预留字段 }NET_INTELLIGENT_CITY_MANAGER_FILTER; ///@brief 智慧城管查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_INTELLIGENT_CITY_MANAGER ) typedef struct tagMEDIAFILE_INTELLIGENT_CITY_MANAGER_PARAM { DWORD dwSize; // 结构体大小 int nFileType; // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_INTELLIGENT_CITY_MANAGER_FILTER stuFilter; // 过滤规则 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }MEDIAFILE_INTELLIGENT_CITY_MANAGER_PARAM; ///@brief 合成图信息 typedef struct tagMEDIAFILE_COMPOSITE_PICTURE_INFO { char szPicturePath[260]; // 合成图图片路径 UINT nPictureLength; // 合成图图片长度 UINT nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 UINT nCountInGroup; // 一个事件组内的抓拍张数 UINT nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 char szDefendCode[64]; // 防伪码 BYTE byReserved[1020]; // 预留字段 }MEDIAFILE_COMPOSITE_PICTURE_INFO; ///@brief 原始图信息 typedef struct tagMEDIAFILE_ORIGINAL_PICTURE_INFO { char szPicturePath[260]; // 原始图片路径 UINT nPictureLength; // 原始图图片长度 UINT nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 UINT nCountInGroup; // 一个事件组内的抓拍张数 UINT nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 char szDefendCode[64]; // 防伪码 BYTE byReserved[1020]; // 预留字段 }MEDIAFILE_ORIGINAL_PICTURE_INFO; ///@brief 机动车信息 typedef struct tagNET_INTELLIGENT_CITY_TRAFFIC_CAR_INFO { char szPlateColor[32]; // 车牌颜色 char szPlateNo[128]; // 车牌号 char szVehicleColor[32]; // 车身颜色 char szVehicleLogo[32]; // 车标 char szVehicleSeries[32]; // 车系 char szVehicleType[32]; // 车型 UINT nParkingDuration; // 违停持续时间,单位:秒 BYTE byReserved[1020]; // 预留字段 }NET_INTELLIGENT_CITY_TRAFFIC_CAR_INFO; ///@brief 智慧城管查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_INTELLIGENT_CITY_MANAGER ) typedef struct tagMEDIAFILE_INTELLIGENT_CITY_MANAGER_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEvent; // 事件类型,EVENT_IVS_CITY_MOTORPARKING、EVENT_IVS_SHOPPRESENCE、 // EVENT_IVS_CITY_NONMOTORPARKING、EVENT_IVS_FLOWBUSINESS、EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA // EVENT_IVS_GARBAGE_EXPOSURE、EVENT_IVS_DUSTBIN_OVER_FLOW、EVENT_IVS_DOOR_FRONT_DIRTY // EVENT_IVS_SHOP_SIGN_ABNORMAL、EVENT_IVS_SHOP_WINDOW_POST int nFileType; // 文件类型,1:jpg, 2:dav,默认:jpg NET_TIME stuEventTime; // 违章时间 char szEventCode[128]; // 违章码 char szEventAddress[256]; // 违章地点 char szSourceID[32]; // 事件关联ID:应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同。 // 如 022019030714003000001,格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位。 // 类型:02-图像 // 时间:YYYYMMDDhhmmss // 序列号:00001 MEDIAFILE_COMPOSITE_PICTURE_INFO stuCompositePicInfo[16]; // 组合图信息 UINT nCompositePicCount; // stuCompositePicInfo 数量 MEDIAFILE_ORIGINAL_PICTURE_INFO stuOriginPicInfo[16]; // 原始图信息 UINT nOriginPicCount; // stuOriginPicInfo 数量 NET_INTELLIGENT_CITY_TRAFFIC_CAR_INFO stuTrafficCar; // 机动车信息 BOOL bTrafficCar; // stuTrafficCar是否有效 UINT nPresetID; // 事件触发的预置点号,从1开始 char szShopAddress[256]; // 商铺地址 char szPresetName[128]; // 预置点名称 UINT nViolationDuration; // 违法持续时间,单位:秒 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 }MEDIAFILE_INTELLIGENT_CITY_MANAGER_INFO; ///@brief SMD 录像类型 typedef enum tagEM_SMD_RECORD_TYPE { EM_SMD_RECORD_UNKNWON, // 未知 EM_SMD_RECORD_HUMAN, // 人 EM_SMD_RECORD_VEHICLE, // 车 EM_SMD_RECORD_HUMAN_AND_VEHICLE, // 人和车 } EM_SMD_RECORD_TYPE; ///@brief 视频流类型 typedef enum tagEM_SMD_VIDEO_STREAM { EM_SMD_VIDEO_STREAM_UNKNOWN, // 未知 EM_SMD_VIDEO_STREAM_MAIN, // 主码流 EM_SMD_VIDEO_STREAM_EXTRA1, // 辅码流1 EM_SMD_VIDEO_STREAM_EXTRA2, // 辅码流2 EM_SMD_VIDEO_STREAM_EXTRA3, // 辅码流3 EM_SMD_VIDEO_STREAM_EXTRAX, // 所有的辅码流 }EM_SMD_VIDEO_STREAM; ///@brief 智能动态监测(SMD) 录像查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_SMD_RECORD_FILE ) typedef struct tagMEDIAFILE_SMD_RECORD_FILE_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_SMD_RECORD_TYPE emSmdRecordType[8]; // 需要查询的SMD录像类型 UINT nSmdRecordTypeNum; // SMD 录像类型个数 EM_SMD_VIDEO_STREAM emVideoStream; // 视频码流,无此参数表示查询所有 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 } MEDIAFILE_SMD_RECORD_FILE_PARAM; ///@brief 文件上传标志 typedef enum tagEM_MOBILE_ENFORCE_UPLOAD_FLAG { EM_MOBILE_ENFORCE_UPLOAD_FLAG_UNKNWON = -1, // 未知 EM_MOBILE_ENFORCE_UPLOAD_FLAG_NOTUPLOAD, // 未上传 EM_MOBILE_ENFORCE_UPLOAD_FLAG_UPLOADED, // 已上传 EM_MOBILE_ENFORCE_UPLOAD_FLAG_BACKEDUP = 3, // 已备份 } EM_MOBILE_ENFORCE_UPLOAD_FLAG; ///@brief 采集站和手持终端文件信息查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_MOBILE_ENFORCE ) typedef struct tagMEDIAFILE_MOBILE_ENFORCE_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_MOBILE_ENFORCE_UPLOAD_FLAG emUploadFlag; // 文件上传标志 UINT nFileTypeNum; // 文件类型个数, 为0表示查询任意类型 EM_FINDFILE_TYPE emFileType[32]; // 文件类型 int nSerialNoNum; // 手持设备序列号个数 char szSerialNo[256][128]; // 文件对应手持设备序列号,和RegistID条件互斥, 2个条件同时存在,SerialNo优先,忽略RegistID int nRegistIDNum; // 手持设备序列号个数 char szRegistID[256][128]; // 文件对应手持设备平台注册ID,和SerialNo条件互斥, 2个条件同时存在,SerialNo优先,忽略RegistID NET_TIME stuCollectStartTime; // 采集开始时间 NET_TIME stuCollectEndTime; // 采集结束时间 BOOL bIsColloectTime; // 是否使用采集时间, TRUE: stuCollectEndTime和stuCollectEndTime有效, FALSE: stuCollectEndTime和stuCollectEndTime无效 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuCollectStartTimeRealUTC; // 采集UTC开始时间(标准UTC时间), 文件的采集时间是一个时间点;如果stuCollectStartTimeRealUTC和stuCollectEndTimeRealUTC同时存在时,则按采集时间段查询,stuStartTimeRealUTC和stuEndTimeRealUTC无效 NET_TIME stuCollectEndTimeRealUTC; // 采集UTC结束时间(标准UTC时间), 文件的采集时间是一个时间点;如果stuCollectStartTimeRealUTC和stuCollectEndTimeRealUTC同时存在时,则按采集时间段查询,stuStartTimeRealUTC和stuEndTimeRealUTC无效 } MEDIAFILE_MOBILE_ENFORCE_PARAM; ///@brief SMD录像属性信息 typedef struct tagNET_SMD_RECORD_ATTRIBUTE_INFO { EM_SMD_RECORD_TYPE emSmdRecordType; // smd录像类型 BYTE byReserved[2044]; // 预留字段 } NET_SMD_RECORD_ATTRIBUTE_INFO; ///@brief 智能动态监测(SMD) 录像查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_SMD_RECORD_FILE ) typedef struct tagMEDIAFILE_SMD_RECORD_FILE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 INT64 nFileSize; // 文件长度扩展,支持文件长度大于4G,单位字节 UINT nFileType; // 文件类型 1:jpg图片, 2: dav UINT nVideoStream; // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流 4-辅码流 char szFilePath[260]; // 文件路径 BYTE byReserved[4]; // 字节对齐 int nEventLists[256]; // 关联的事件列表,事件类型列表,参见智能分析事件类型 int nEventCount; // 事件总数 UINT nPartition; // 分区号 UINT nDriveNo; // 磁盘号 UINT nCluster; // 簇号 NET_SMD_RECORD_ATTRIBUTE_INFO stuSmdAttribute; // SMD录像属性信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_SMD_RECORD_FILE_INFO; ///@brief 文件的真实类型 typedef enum tagEM_MOBILE_ENFORCE_FORMAT { EM_MOBILE_ENFORCE_FORMAT_UNKNOWN, // 未知 EM_MOBILE_ENFORCE_FORMAT_VIDEO, // 视频 EM_MOBILE_ENFORCE_FORMAT_AUDIO, // 音频 EM_MOBILE_ENFORCE_FORMAT_IMAGE, // 图片 }EM_MOBILE_ENFORCE_FORMAT; ///@brief 文件后缀类型 typedef enum tagEM_MOBILE_ENFORCE_FILE_TYPE { EM_MOBILE_ENFORCE_FILE_TYPE_UNKNOWN = 0, // 未知 EM_MOBILE_ENFORCE_FILE_TYPE_DAV, // dav EM_MOBILE_ENFORCE_FILE_TYPE_MP4, // mp4 EM_MOBILE_ENFORCE_FILE_TYPE_AAC, // aac EM_MOBILE_ENFORCE_FILE_TYPE_MP3, // mp3 EM_MOBILE_ENFORCE_FILE_TYPE_JPG, // jpg }EM_MOBILE_ENFORCE_FILE_TYPE; ///@brief 码流类型 typedef enum tagEM_MOBILE_ENFORCE_VIDEO_STREAM { EM_MOBILE_ENFORCE_VIDEO_STREAM_UNKNOWN, // 未知 EM_MOBILE_ENFORCE_VIDEO_STREAM_MAIN, // 主码流 EM_MOBILE_ENFORCE_VIDEO_STREAM_EXTRA1, // 辅码流1 EM_MOBILE_ENFORCE_VIDEO_STREAM_EXTRA2, // 辅码流2 EM_MOBILE_ENFORCE_VIDEO_STREAM_EXTRA3, // 辅码流3 }EM_MOBILE_ENFORCE_VIDEO_STREAM; ///@brief 采集站和手持终端文件信息查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_MOBILE_ENFORCE ) typedef struct tagMEDIAFILE_MOBILE_ENFORCE_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szFilePath[260]; // 文件路径 UINT nLength; // 如果查询条件中指定的时间在文件内,此处Length表示整个文件长度,而不表示指定时间段的长度,单位字节 char szUniqueID[128]; // 对应文件的唯一标示 char szOriginalDeviceID[128];// 表示原始文件创建设备的序列号ID EM_MOBILE_ENFORCE_FORMAT emFormat; // 文件的真实类型 EM_MOBILE_ENFORCE_FILE_TYPE emFileType; // 文件后缀类型 char szFileName[256]; // 文件名称 char szExtraInfos[256]; // 录像文件附加信息 NET_TIME stuCollectTime; // 文件采集时间 char szIntegrityCheckID[128];// 文件完整性校验ID BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 NET_TIME stuCollectTimeRealUTC; // 文件UTC采集时间(标准UTC时间) } MEDIAFILE_MOBILE_ENFORCE_INFO; ///@brief 厨师装备状态 typedef enum tagEM_SMART_KITCHEN_CLOTHES_STATE { EM_SMART_KITCHEN_CLOTHES_STATE_UNKNOWN, // 未知 EM_SMART_KITCHEN_CLOTHES_STATE_LACK, // 没有 EM_SMART_KITCHEN_CLOTHES_STATE_HAS, // 有 }EM_SMART_KITCHEN_CLOTHES_STATE; ///@brief 口罩相关属性状态信息 typedef struct tagNET_SMART_KITCHEN_CLOTHES_CHEF_MASK { BOOL bChefMask; // 口罩相关属性是否生效,true 生效 ,false 不生效 EM_SMART_KITCHEN_CLOTHES_STATE emHasMask[3]; // 是否有带口罩 char szReserved[1024]; // 预留字段 } NET_SMART_KITCHEN_CLOTHES_CHEF_MASK; ///@brief 厨师帽相关属性状态信息 typedef struct tagNET_SMART_KITCHEN_CLOTHES_CHEF_HAT { BOOL bChefHat; // 厨师帽相关属性是否生效,true 生效 ,false 不生效 EM_SMART_KITCHEN_CLOTHES_STATE emHasChefHat[3]; // 是否有带厨师帽 char szReserved[1024]; // 预留字段 } NET_SMART_KITCHEN_CLOTHES_CHEF_HAT; ///@brief 厨师服颜色 typedef enum tagEM_SMART_KITCHEN_CLOTHES_COLOUR { EM_SMART_KITCHEN_CLOTHES_COLOUR_UNKNOWN, // 未知 EM_SMART_KITCHEN_CLOTHES_COLOUR_RED, // 红 EM_SMART_KITCHEN_CLOTHES_COLOUR_BLACK, // 黑 EM_SMART_KITCHEN_CLOTHES_COLOUR_WHITE, // 白 }EM_SMART_KITCHEN_CLOTHES_COLOUR; ///@brief 厨师服相关属性状态信息 typedef struct tagNET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES { BOOL bChefClothes; // 厨师服相关属性是否生效,true 生效 ,false 不生效 EM_SMART_KITCHEN_CLOTHES_STATE emHasChefClothes[3]; // 是否有带厨师服 EM_SMART_KITCHEN_CLOTHES_COLOUR emChefClothesColor[3]; // 厨师服颜色 char szReserved[1024]; // 预留字段 } NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES; ///@brief 智慧厨房查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION ) typedef struct tagMEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_SMART_KITCHEN_CLOTHES_CHEF_MASK stuChefMask; // 口罩相关属性状态信息 NET_SMART_KITCHEN_CLOTHES_CHEF_HAT stuChefHat; // 厨师帽相关属性状态信息 NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES stuChefClothes; // 厨师服相关属性状态信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥 } MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM; ///@brief 智慧厨房查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION ) typedef struct tagMEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_SMART_KITCHEN_CLOTHES_STATE emHasMask; // 是否有带口罩 EM_SMART_KITCHEN_CLOTHES_STATE emHasChefHat; // 是否有带厨师帽 EM_SMART_KITCHEN_CLOTHES_STATE emHasChefClothes; // 是否有带厨师服 EM_SMART_KITCHEN_CLOTHES_COLOUR emChefClothesColor; // 厨师服颜色 char szFaceImagePath[260]; // 目标小图路径 UINT nFaceImageLength; // 目标小图图片大小,单位字节 char szHumanImagePath[260]; // 人体小图路径 UINT nHumanImageLength; // 人体小图图片大小,单位字节 char szSceneImagePath[260]; // 人体小图对应的全景图路径 UINT nSceneImageLength; // 人体小图对应的全景图图片大小,单位字节 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO; ///@brief 水利查询事件类型 typedef enum tagNET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE { NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_UNKNOWN, // 未知 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_FLOATING_OBJECT_DETECTION, // 漂浮物检测 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_WATER_LEVEL_DETECTION, // 虚拟水尺检测 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_SEWAGE_DETECTION, // 排水检测 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_WATER_COLOR_DETECTION, // 水体颜色检测 } NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE; ///@brief 水体颜色检测搜索颜色 typedef enum tagNET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR { NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_UNKNOWN, // 未知 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_BLACK, // 黑色 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_RED, // 红色 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_GREEN, // 绿色 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_YELLOW, // 黄色 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR_ALL, // 查询全部 }NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR; ///@brief 水利查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_WATER_CONSERVANCY_SEARCH ) typedef struct tagMEDIAFILE_WATER_CONSERVANCY_SEARCH_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE emEventType; // 水利查询事件类型 NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR emWaterColor; // 水体颜色检测搜索颜色, emEventType为NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE_WATER_COLOR_DETECTION时有效 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_WATER_CONSERVANCY_SEARCH_PARAM; ///@brief 水位状态 typedef enum tagNET_EM_WATER_STATUS { NET_EM_WATER_STATUS_UNKNOWN, // 未知 NET_EM_WATER_STATUS_NORMAL, // 正常 NET_EM_WATER_STATUS_ABOVE_UPPER_THRESHOLD, // 高于上限阈值 NET_EM_WATER_STATUS_BELOW_LOWER_THRESHOLD, // 低于下限阈值 } NET_EM_WATER_STATUS; ///@brief 抠图信息 typedef struct tagNET_WATER_CONSERVANCY_SEARCH_IMAGE_INFO { int nLength; // 抠图长度 char szFilePath[128]; // 抠图路径 char szReserved[892]; // 预留字段 } NET_WATER_CONSERVANCY_SEARCH_IMAGE_INFO; ///@brief 水利查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_WATER_CONSERVANCY_SEARCH ) typedef struct tagMEDIAFILE_WATER_CONSERVANCY_SEARCH_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_EM_WATER_CONSERVANCY_SEARCH_EVENT_TYPE emEventType; // 事件类型 int nCurrentRatio; // 漂浮物占比 NET_EM_WATER_STATUS emWaterStatus; // 水位状态 float fWaterValue; // 水位值(对于有拼接的情况,该值为标定的基准值加上当前刻度值,单位:米) NET_EM_WATER_CONSERVANCY_SEARCH_WATER_COLOR emWaterColor; // 污水颜色 char szGlobalSceneFilePath[256]; // 全景大图图片路径 int nGlobalScenePicLength; // 全景大图图片长度 NET_WATER_CONSERVANCY_SEARCH_IMAGE_INFO stuImageInfo; // 抠图信息 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_WATER_CONSERVANCY_SEARCH_INFO; ///@brief 违章建筑查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_BREAK_RULE_BUILDING_SEARCH ) typedef struct tagMEDIAFILE_BREAK_RULE_BUILDING_SEARCH_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_BREAK_RULE_BUILDING_SEARCH_PARAM; ///@brief 违章建筑查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_BREAK_RULE_BUILDING_SEARCH ) typedef struct tagMEDIAFILE_BREAK_RULE_BUILDING_SEARCH_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szGlobalSceneFilePath[256]; // 全景大图图片路径 int nGlobalScenePicLength; // 全景大图图片长度 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_BREAK_RULE_BUILDING_SEARCH_INFO; ///@brief 船只查询规则 typedef enum tagNET_EM_BOAT_SEARCH_RULE { NET_EM_BOAT_SEARCH_RULE_UNKNOWN, // 未知 NET_EM_BOAT_SEARCH_RULE_CROSS_LINE_DETECTION, // 船只拌线 NET_EM_BOAT_SEARCH_RULE_CROSS_REGION_DETECTION, // 船只入侵 NET_EM_BOAT_SEARCH_RULE_PARKING_DETECTION, // 船只停留 NET_EM_BOAT_SEARCH_RULE_FISHING_DETECTION, // 钓鱼检测 } NET_EM_BOAT_SEARCH_RULE; ///@brief 船只查询规则动作 typedef enum tagNET_EM_BOAT_SEARCH_ACTION { NET_EM_BOAT_SEARCH_ACTION_UNKNOWN, // 未知 NET_EM_BOAT_SEARCH_ACTION_APPEAR, // 出现 NET_EM_BOAT_SEARCH_ACTION_DISAPPEAR, // 消失 NET_EM_BOAT_SEARCH_ACTION_INSIDE, // 进入 NET_EM_BOAT_SEARCH_ACTION_CROSS, // 穿越 } NET_EM_BOAT_SEARCH_ACTION; ///@brief 船只查询方向 typedef enum tagNET_EM_BOAT_SEARCH_DIRECTION { NET_EM_BOAT_SEARCH_DIRECTION_UNKNOW = 0 , NET_EM_BOAT_SEARCH_DIRECTION_LEFT_TO_RIGHT , //左到右 NET_EM_BOAT_SEARCH_DIRECTION_RIGHT_TO_LEFT , //右到左 } NET_EM_BOAT_SEARCH_DIRECTION; ///@brief 船只查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_BOAT_SEARCH ) typedef struct tagMEDIAFILE_BOAT_SEARCH_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nRuleNum; // 查询规则个数 NET_EM_BOAT_SEARCH_RULE emRule[4]; // 查询规则 NET_EM_BOAT_SEARCH_ACTION emAction; // 规则动作 NET_EM_BOAT_SEARCH_DIRECTION emDirection; // 方向 BOOL bOnlySupportRealUTC;// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC;// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 } MEDIAFILE_BOAT_SEARCH_PARAM; ///@brief 船只查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_BOAT_SEARCH ) typedef struct tagMEDIAFILE_BOAT_SEARCH_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 NET_EM_BOAT_SEARCH_RULE emRule; // 查询规则 NET_EM_BOAT_SEARCH_ACTION emAction; // 规则动作 NET_EM_BOAT_SEARCH_DIRECTION emDirection; // 方向 char szGlobalSceneFilePath[256]; // 全景大图图片路径 int nGlobalScenePicLength; // 全景大图图片长度 BOOL bRealUTC; // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用 } MEDIAFILE_BOAT_SEARCH_INFO; ///@brief 雷达报警事件查询 ( CLIENT_FindFileEx + DH_FILE_QUERY_RADAR_REGION_DETECTION ) typedef struct tagMEDIAFILE_RADAR_REGION_DETECTION_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 } MEDIAFILE_RADAR_REGION_DETECTION_PARAM; ///@brief 雷达报警事件查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_RADAR_REGION_DETECTION ) typedef struct tagMEDIAFILE_RADAR_REGION_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 SCENE_IMAGE_INFO_EX stuSceneImage[10]; // 全景地图数组 int nSceneImageNum; // 全景地图数组大小 } MEDIAFILE_RADAR_REGION_DETECTION_INFO; ///@brief 考场录像查询 ( CLIENT_FindFileEx + DH_FILE_QUERY_EXAM ) typedef struct tagNET_MEDIAFILE_EXAM_PARAM { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szName[64]; // 考生姓名 char szNumber[64]; // 考生考号 char szCameraIP[32]; // 摄像头IP } NET_MEDIAFILE_EXAM_PARAM; ///@brief 考场录像查询结果 ( CLIENT_FindNextFileEx + DH_FILE_QUERY_EXAM ) typedef struct tagNET_MEDIAFILE_EXAM_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号从0开始,-1表示查询所有通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szName[64]; // 考生姓名 char szNumber[64]; // 考生考号 char szCameraIP[32]; // 摄像头IP } NET_MEDIAFILE_EXAM_INFO; ///@brief 通过用户 ID、警车 ID、警察局 ID搜索录像 ( CLIENT_FindFileEx + DH_FILE_QUERY_POLICEID ) typedef struct tagNET_MEDIAFILE_POLICEID_PARAM { DWORD dwSize; // 结构体大小 NET_TIME stuStartTime; // 查询开始时间 NET_TIME stuEndTime; // 查询结束时间 char szPoliceManID[32]; // 警员ID char szPoliceCarID[32]; // 警车ID char szPoliceOfficeID[64]; // 警局ID } NET_MEDIAFILE_POLICEID_PARAM; ///@brief 结构体(NET_IN_SNAPSHOT)成员 闪关灯调节控制是一个数组,每个元素对应一个闪光灯配置 typedef struct __NET_FLASHCONTROL { DWORD dwSize; // 此结构体大小 int nMode; // 工作模式 0-禁止闪光,1-始终闪光,2-自动闪光 }NET_FLASHCONTROL; ///@brief 抓拍客户端类型 typedef enum tagSNAP_CLIENT_TYPE { SNAP_CLIENT_TYPE_COMMON, // 对应"Common"类型, 默认类型 SNAP_CLIENT_TYPE_PARKINGSPACE, // 对应"ParkingSpace"类型, 停车场 }SNAP_CLIENT_TYPE; #define DH_MAX_USER_DEFINE_INFO 1024 ///@brief nTriggerType==2时 客户端触发抓拍参数 typedef struct _NET_CLIENT_SNAP_INFO { DWORD dwSize; // 此结构体大小 unsigned int nFrameSequence; // 帧序号 double PTS; // 时间戳,64位毫秒时间戳 char szUserDefinedInfo[DH_MAX_USER_DEFINE_INFO]; // 字符串,客户端自定义,"\0"结尾 SNAP_CLIENT_TYPE emSNAP_CLIENT_TYPE; // 客户端类型 DWORD dwRetCardNumber; // 卡片个数 EVENT_CARD_INFO stuCardInfo[DH_EVENT_MAX_CARD_NUM]; // 卡片信息 }NET_CLIENT_SNAP_INFO; ///@brief 接口(CLIENT_TrafficSnapByNetwork)输入参数 typedef struct __NET_IN_SNAPSHOT { DWORD dwSize; // 此结构体大小 int nTriggerType; // 触发类型 int nLaneID; // 车道号 int nGroupID; // 组序号 int nGrabTimes; // 抓拍图片数量 int nStartPicNum; // 第一张图片开始序号 int nDirection; // 车道方向(车开往的方向) 0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知 //NET_GRAB_WAITTIME stGrabWaitTime; // 多张图片之间抓拍间隔 int nGrabWaitTime; // pGrabWaitTime数组成员个数 DWORD* pGrabWaitTime; // 多张图片之间抓拍间隔,由用户申请内存,大小为nGrabWaitTime int nLowerSpeedLimit; // 速度下限,单位km/h int nUpperSpeedLimit; // 速度下限,单位km/h int nSpeed; // 车速,单位km/h int nViolationNo; // 违法编号 0-未违法 // 1-禁止名单 // 2-超速不超过50% // 3-超速在50%到100%之间 // 4-超速超过100% // 5-逆行 // 6-闯红灯 // 7-低于限速 // 8-禁行,不按车道行驶 int nRedLightTime; // 红灯时间,即红灯点亮多少时间后触发抓拍,单位秒 //NET_FLASHCONTROL stFlashControl; // 闪关灯调节控制 int nFlashControl; // pFlashControl数组个数 NET_FLASHCONTROL* pFlashControl; // 闪关灯调节控制,由用户申请内存,大小为sizeof(NET_FLASHCONTROL)*nFlashControl DWORD dwUser; // 用户数据 NSP NET_CLIENT_SNAP_INFO stClientInfo; // 客户端触发时传入的抓拍参数 }NET_IN_SNAPSHOT; ///@brief 接口(CLIENT_TrafficSnapByNetwork)输出参数 typedef struct __NET_OUT_SNAPSHOT { DWORD dwSize; // 此结构体大小 }NET_OUT_SNAPSHOT; ///@brief 接口(CLIENT_TrafficForceLightState)输入参数 typedef struct __NET_IN_FORCELIGHTSTATE { DWORD dwSize; // 此结构体大小 unsigned int nDirection; // 按位表示:0位:"Straight",1位:"TurnLeft",2位:"TurnRight",3位:"U-Turn" }NET_IN_FORCELIGHTSTATE; ///@brief 接口(CLIENT_TrafficForceLightState)输出参数 typedef struct __NET_OUT_FORCELIGHTSTATE { DWORD dwSize; // 此结构体大小 }NET_OUT_FORCELIGHTSTATE; ///@brief 接口(CLIENT_StartTrafficFluxStat)回调 typedef int (CALLBACK *fFluxStatDataCallBack)(LLONG lFluxStatHandle, DWORD dwEventType, void* pEventInfo, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser, int nSequence, void *reserved); ///@brief 接口(CLIENT_StartTrafficFluxStat)输入参数 typedef struct __NET_IN_TRAFFICFLUXSTAT { DWORD dwSize; // 此结构体大小 fFluxStatDataCallBack cbData; // 回调函数指针 LDWORD dwUser; // 用户数据 }NET_IN_TRAFFICFLUXSTAT; ///@brief 接口(CLIENT_StartTrafficFluxStat)输出参数 typedef struct __NET_OUT_TRAFFICFLUXSTAT { DWORD dwSize; // 此结构体大小 }NET_OUT_TRAFFICFLUXSTAT; ///@brief 查询要求返回的统计信息粒度 typedef enum tagEM_GRANULARITY_STARTFIND_TYPE { EM_GRANULARITY_TYPE_UNKNOWN, // 未知 EM_GRANULARITY_TYPE_MINUTE, // 按5分钟(时报表) EM_GRANULARITY_TYPE_HOUR, // 按小时(日报表) EM_GRANULARITY_TYPE_DAY, // 按天(月报表) EM_GRANULARITY_TYPE_MONTH, // 按月(年报表) }EM_GRANULARITY_STARTFIND_TYPE; ///@brief 统计方向查询条件 typedef enum tagEM_STARTFIND_DIRECTION { EM_STARTFIND_DIRECTION_UNKNOWN, // 未知 EM_STARTFIND_DIRECTION_BOTH, // 全部 EM_STARTFIND_DIRECTION_LEFTTORIGHT, // 左到右 EM_STARTFIND_DIRECTION_RIGHTTOLEFT, // 右到左 }EM_STARTFIND_DIRECTION; ///@brief 接口(CLIENT_StartFindFluxStat)输入参数 typedef struct __NET_IN_TRAFFICSTARTFINDSTAT { DWORD dwSize; // 此结构体大小 NET_TIME stStartTime; // 开始时间 暂时精确到小时 NET_TIME stEndTime; // 结束时间 暂时精确到小时 int nWaittime; // 等待接收数据的超时时间 int nChannelCount; // 查询的通道号个数 int nChannels[256]; // 查询的通道号 int nLaneCount; // 查询的车道号个数 int nLanes[16]; // 查询的车道号 int nClassType; // 数据库表类型 0表示视频结构化,1表示道路监控 EM_GRANULARITY_STARTFIND_TYPE emGranularity; // 查询要求返回的统计信息粒度 默认按小时 EM_STARTFIND_DIRECTION emDirection; // 统计方向查询条件 }NET_IN_TRAFFICSTARTFINDSTAT; ///@brief 接口(CLIENT_StartFindFluxStat)输出参数 typedef struct __NET_OUT_TRAFFICSTARTFINDSTAT { DWORD dwSize; // 此结构体大小 DWORD dwTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_TRAFFICSTARTFINDSTAT; ///@brief 接口(CLIENT_DoFindFluxStat)输入参数 typedef struct __NET_IN_TRAFFICDOFINDSTAT { DWORD dwSize; // 此结构体大小 unsigned int nCount; // 每次查询的流量统计条数 int nWaittime; // 等待接收数据的超时时间 }NET_IN_TRAFFICDOFINDSTAT; ///@brief 统计信息指针 typedef struct { DWORD dwSize; // 此结构体大小 int nStatInfo; // 统计信息个数 DH_TRAFFICFLOWSTAT *pStatInfo; // 统计信息指针,由用户申请内存,大小为sizeof(DH_TRAFFICFLOWSTAT)*nStatInfo }DH_TRAFFICFLOWSTAT_OUT; ///@brief 接口(CLIENT_DoFindFluxStat)输出参数 typedef struct __NET_OUT_TRAFFICDOFINDSTAT { DWORD dwSize; // 此结构体大小 DH_TRAFFICFLOWSTAT_OUT stStatInfo; // 统计信息指针 }NET_OUT_TRAFFICDOFINDSTAT; ///@brief 规则类型 typedef enum tagEM_RULE_TYPE { EM_RULE_UNKNOWN, // 未知 EM_RULE_NUMBER_STAT, // 人数统计 EM_RULE_MAN_NUM_DETECTION, // 区域内人数统计 EM_RULE_QUEUE_DETECTION, // 排队检测 EM_RULE_ANATOMYTEMP_DETECT, // 人体温度数据统计 } EM_RULE_TYPE; ///@brief 其他规则 typedef enum tagEM_OTHER_RULE_TYPE { EM_OTHER_RULE_TYPE_UNKOWN, // 未知 EM_OTHER_RULE_TYPE_AVERAGE_STAYTIME, // 平均滞留时间 } EM_OTHER_RULE_TYPE; ///@brief 接口(CLIENT_StartFindNumberStat)输入参数 typedef struct __NET_IN_FINDNUMBERSTAT { DWORD dwSize; // 此结构体大小 int nChannelID; // 要进行查询的通道号 NET_TIME stStartTime; // 开始时间 暂时精确到小时 NET_TIME stEndTime; // 结束时间 暂时精确到小时 int nGranularityType; // 查询粒度0:分钟,1:小时,2:日,3:周,4:月,5:季,6:年, // 7:即时, 8:人员 (7和8只在emRuleType为EM_RULE_MAN_NUM_DETECTION时有效) int nWaittime; // 等待接收数据的超时时间 UINT nPlanID; // 计划ID,仅球机有效,从1开始 EM_RULE_TYPE emRuleType; // 规则类型 int nMinStayTime; // 区域人数查询最小滞留时间,不填默认为0,返回滞留时长大于等于该时间的人数信息 // NumberStat时不需要此参数 int nAreaIDNum; // 区域ID个数 UINT nAreaID[20]; // 区域ID(一个预置点可以对应多个区域ID) EM_OTHER_RULE_TYPE emOtherRule; // 其他规则 int nGranularityExt; // 当查询粒度为分钟时,用以细化具体粒度 不填默认5分钟粒度 }NET_IN_FINDNUMBERSTAT; ///@brief 接口(CLIENT_StartFindNumberStat)输出参数 typedef struct __NET_OUT_FINDNUMBERSTAT { DWORD dwSize; // 此结构体大小 DWORD dwTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_FINDNUMBERSTAT; ///@brief 接口(CLIENT_DoFindNumberStat)输入参数 typedef struct __NET_IN_DOFINDNUMBERSTAT { DWORD dwSize; // 此结构体大小 unsigned int nBeginNumber; // [0, totalCount-1], 查询起始序号,表示从beginNumber条记录开始,取count条记录返回; unsigned int nCount; // 每次查询的流量统计条数 int nWaittime; // 等待接收数据的超时时间 }NET_IN_DOFINDNUMBERSTAT; ///@brief 温度统计信息 typedef struct tagNET_TEMPERATURE_STATISTICS_INFO { UINT nTotalCount; // 总人数 UINT nHighTempCount; // 温度异常次数 UINT nLowTempCount; // 温度异常次数 UINT nNormalTempCount; // 温度正常次数 UINT nNoMaskCount; // 未带口罩总人数 UINT nTimeKey; // 记录编号 BYTE byReserved[1024]; // 预留字段 }NET_TEMPERATURE_STATISTICS_INFO; ///@brief 返回的人数统计信息 typedef struct __DH_NUMBERSTAT { DWORD dwSize; int nChannelID; // 统计通道号 char szRuleName[DH_CHAN_NAME_LEN]; // 规则名称 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nEnteredSubTotal; // 进入人数小计 int nExitedSubtotal; // 出去人数小计 int nAvgInside; // 平均保有人数(除去零值) int nMaxInside; // 最大保有人数 int nEnteredWithHelmet; // 戴安全帽进入人数小计 int nEnteredWithoutHelmet; // 不戴安全帽进入人数小计 int nExitedWithHelmet; // 戴安全帽出去人数小计 int nExitedWithoutHelmet; // 不戴安全帽出去人数小计 int nInsideSubtotal; // 在区域内人数小计 UINT nPlanID; // 计划ID,仅球机有效,从1开始 UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) UINT nAverageStayTime; // 区域内平均滞留时间 NET_TEMPERATURE_STATISTICS_INFO stuTempInfo; // 温度统计信息(NET_IN_FINDNUMBERSTAT 字段 emRuleType 取值为 EM_RULE_ANATOMYTEMP_DETECT 时有效) int nPassedSubtotal; // 经过人数小计 }DH_NUMBERSTAT; ///@brief 接口(CLIENT_DoFindNumberStat)输出参数 typedef struct __NET_OUT_DOFINDNUMBERSTAT { DWORD dwSize; // 此结构体大小 int nCount; // 查询返回的人数统计信息个数 DH_NUMBERSTAT *pstuNumberStat; // 返回的人数统计信息数组 // 由用户申请内存,大小为nBufferLen int nBufferLen; // 用户申请的内存大小,以DH_NUMBERSTAT中的dwsize大小为单位 int nMinStayTime; // 区域人数查询时指定的最小滞留时间 }NET_OUT_DOFINDNUMBERSTAT; ///@brief 视频统计小计信息 typedef struct tagNET_VIDEOSTAT_SUBTOTAL { int nTotal; // 设备运行后人数统计总数 int nHour; // 小时内的总人数 int nToday; // 当天的总人数, 不可手动清除 int nOSD; // 统计人数, 用于OSD显示, 可手动清除 unsigned int nTotalNonMotor; // 设备运行后非机动车统计总数,重启后从上次总数开始继续累加 unsigned int nHourNonMotor; // 小时内的总非机动车数量 unsigned int nTodayNonMotor; // 当天的总非机动车数(自然天) UINT nTotalPig; // 设备运行后猪只统计总数,重启后从上次总数开始继续累加 UINT nHourPig; // 小时内的总猪只数量 UINT nTodayPig; // 当天的总猪只数(自然天) UINT nTotalPigInTimeSection; // IPC专用,如果不执行clearSectionStat操作,等同于TodayPig猪只数。 char reserved[224]; // 保留字段 } NET_VIDEOSTAT_SUBTOTAL; #define MAX_EXIT_MAN_NUM 32 // 最大支持的离开人员数量 ///@brief 离开人员的滞留时间信息 typedef struct tagNET_EXITMAN_STAY_STAT { NET_TIME stuEnterTime; // 人员进入区域时间 NET_TIME stuExitTime; // 人员离开区域时间 BYTE reserved[128]; // 保留字节 } NET_EXITMAN_STAY_STAT; ///@brief 非机动车的滞留时间信息 typedef struct tagNET_NONMOTOR_STAY_STAT { NET_TIME stuEnterTime; // 非机动车进入区域的时间 NET_TIME stuExitTime; // 非机动车离开区域的时间 BYTE reserved[128]; // 保留字节 } NET_NONMOTOR_STAY_STAT; ///@brief 猪只离开开滞留时间信息 typedef struct tagNET_PIG_STAY_STAT { NET_TIME stuEnterTime; // 猪只进入区域的时间 NET_TIME stuExitTime; // 猪只离开区域的时间 char szReserved[208]; // 保留字节 }NET_PIG_STAY_STAT; ///@brief 经过小计信息 typedef struct tagNET_PASSED_SUBTOTAL_INFO { int nTotal; // 设备运行后经过人数统计总数 int nHour; // 小时内的总人数 int nToday; // 当天的总人数(自然天) int nTotalInTimeSection; // IPC专用,如果不执行clearSectionStat操作,等同于Today人数 char szReserved[112]; // 保留字节 }NET_PASSED_SUBTOTAL_INFO; ///@brief 视频统计摘要信息 typedef struct tagNET_VIDEOSTAT_SUMMARY { int nChannelID; // 通道号 char szRuleName[32]; // 规则名称 NET_TIME_EX stuTime; // 统计时间 NET_VIDEOSTAT_SUBTOTAL stuEnteredSubtotal; // 进入小计 NET_VIDEOSTAT_SUBTOTAL stuExitedSubtotal; // 出去小计 UINT nInsidePeopleNum; // 区域内人数 EM_RULE_TYPE emRuleType; // 规则类型 int nRetExitManNum; // 离开的人数个数 NET_EXITMAN_STAY_STAT stuExitManStayInfo[MAX_EXIT_MAN_NUM]; // 离开人员的滞留时间信息 UINT nPlanID; // 计划ID,仅球机有效,从1开始 UINT nAreaID; // 区域ID(一个预置点可以对应多个区域ID) UINT nCurrentDayInsidePeopleNum; // 当天区域内总人数 UINT nInsideTotalNonMotor; // 区域内非机动车总数 UINT nInsideTodayNonMotor; // 当天的非机动车数 int nRetNonMotorNum; // 非机动车的滞留个数 NET_NONMOTOR_STAY_STAT stuNonMotorStayStat[MAX_EXIT_MAN_NUM]; // 非机动车的滞留时间信息 UINT nInsideTotalPig; // 区域内猪只数 int nPigStayStatCount; // 猪只离开滞留时间信息个数 NET_PIG_STAY_STAT stuPigStayStatInfo[32]; // 猪只离开滞留时间信息 UINT nInsideTodayPig; // 当天的猪只数 char szReserved[4]; // 字节对齐 NET_PASSED_SUBTOTAL_INFO stuPassedSubtotal; // 经过小计 BYTE reserved[884]; // 保留字节 } NET_VIDEOSTAT_SUMMARY; ///@brief 视频统计摘要信息回调函数原形,lAttachHandle 是 CLIENT_AttachVideoStatSummary 返回值 typedef void (CALLBACK *fVideoStatSumCallBack) (LLONG lAttachHandle, NET_VIDEOSTAT_SUMMARY* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief CLIENT_AttachVideoStatSummary 入参 typedef struct tagNET_IN_ATTACH_VIDEOSTAT_SUM { DWORD dwSize; int nChannel; // 视频通道号 fVideoStatSumCallBack cbVideoStatSum; // 视频统计摘要信息回调 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_VIDEOSTAT_SUM; ///@brief CLIENT_AttachVideoStatSummary 出参 typedef struct tagNET_OUT_ATTACH_VIDEOSTAT_SUM { DWORD dwSize; } NET_OUT_ATTACH_VIDEOSTAT_SUM; ///@brief 热度图类型 typedef enum tagEM_HEATMAP_TYPE { EM_HEATMAP_UNKNOWN, // 未知 EM_HEATMAP_AVERAGESTAYTIME, // 平均滞留时间热度图 EM_HEATMAP_HUMANSTATISTICS, // 人数统计热度图 EM_HEATMAP_HUMANTRACK, // 行人轨迹图 }EM_HEATMAP_TYPE; ///@brief 获取热图数据接口入参 typedef struct tagNET_IN_GET_VIDEOSTAT_HEATMAP { DWORD dwSize; // 此结构体大小 int nPlanID; // 计划(预置点,仅球机有效,范围1~MaxNumberStatPlan) NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_HEATMAP_TYPE emHeatMapType; // Ai 热度图类型 }NET_IN_GET_VIDEOSTAT_HEATMAP; ///@brief 获取热图数据接口出参 typedef struct tagNET_OUT_GET_VIDEOSTAT_HEATMAP { DWORD dwSize; // 此结构体大小 UINT nToken; // 查询的Token }NET_OUT_GET_VIDEOSTAT_HEATMAP; ///@brief 热度图数据信息 typedef struct tagNET_CB_VIDEOSTAT_HEATMAP { UINT nToken; EM_HEATMAP_TYPE emHeatMapType; // 热度图类型 BYTE byReserved[1024]; // 保留字节 }NET_CB_VIDEOSTAT_HEATMAP; ///@brief 热度图数据回调函数 typedef void (CALLBACK *fVideoStatHeatMapCallBack) (LLONG lAttachHandle, NET_CB_VIDEOSTAT_HEATMAP* pBuf, const char* pBinData, DWORD dwBinDataLen, LDWORD dwUser); ///@brief 订阅热度图信息入参 typedef struct tagNET_IN_ATTACH_VIDEOSTAT_HEATMAP { DWORD dwSize; // 此结构体大小 int nChannel; // 视频通道号 fVideoStatHeatMapCallBack cbVideoStatHeatMap; // 热图数据回调 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_VIDEOSTAT_HEATMAP; ///@brief 订阅热度图信息出参 typedef struct tagNET_OUT_ATTACH_VIDEOSTAT_HEATMAP { DWORD dwSize; // 此结构体大小 } NET_OUT_ATTACH_VIDEOSTAT_HEATMAP; ///@brief 粒度模式 typedef enum tagEM_STAT_GRANULARITY { EM_STAT_GRANULARITY_UNKNOWN, // 未知 EM_STAT_GRANULARITY_MINUTE, // 分钟粒度 }EM_STAT_GRANULARITY; ///@brief 本周期区域内滞留人员统计信息 typedef struct tagNET_INSIDE_SUB_TOTAL_INFO { int nTotal; // 本周期上报的区域内总人数 int nTotalStayTime; // 当前周期,所有人的总滞留时长 int nManStaySummaryValidNum; // 人次数据有效个数 int nManStaySummary[8]; // 人次数据, 例此处下发的规则为滞留时间大于3,5,10,300秒的规则.此处结果就是滞留时间大于3秒共10人次,大于5秒的6人次,10秒的3人次,300秒的0人次 int nTotalStayTimeSummaryValidNum; // 总滞留时长有效个数 int nTotalStayTimeSummary[8]; // 总滞留时长,单位秒, 例此处下发的规则为滞留时间大于3,5,10,300秒的规则,此处结果就是滞留时间大于3秒的人员的总滞留时长50秒,大于5秒的48秒,10秒的30秒,300秒的0秒 } NET_INSIDE_SUB_TOTAL_INFO; ///@brief 统计通道数据信息 typedef struct tagNET_CB_VIDEOSTAT_STREAM { int nChannel; // 统计通道号 int nPtzPresetId; // 预置点编号默认值为0,球机必填,范围1~PtzPresetMax,IPC可不填。 char szRuleNanme[128]; // 规则名称 char szStartTime[20]; // 当前这一统计周期的开始时间 char szRuleType[32]; // "NumberStat":人数统计 EM_STAT_GRANULARITY emStatGranularity; // 粒度 unsigned short nCycle; // 与Granularity结合使用,如emGranularity为 EM_GRANULARITY_MINUTE, Cycle 值为5,表示以5分钟统计周期上报数据 unsigned short nAreaID; // 区域ID,没有该字段或者为0,为单区域 UINT nEnteredSubtotal; // 本周期内进入人数小计 UINT nExitedSubtotal; // 本周期内离开人数小计 UINT nPassedSubtotal; // 本周期内经过人数小计 NET_INSIDE_SUB_TOTAL_INFO stuInsideSubtotal; // 本周期区域内滞留人员统计信息, bIsSendMinStayTime为TRUE时有效 char szReserved[940]; // 保留字节 }NET_CB_VIDEOSTAT_STREAM; ///@brief 统计通道数据回调函数 typedef void (CALLBACK *fVideoStatStreamCallBack) (LLONG lAttachHandle, NET_CB_VIDEOSTAT_STREAM* pBuf, int nBufLen, LDWORD dwUser); ///@brief 订阅统计通道数据入参 typedef struct tagNET_IN_ATTACH_VIDEOSTAT_STREAM { DWORD dwSize; // 结构体大小 int nVideoChannel; // 视频通道号 EM_STAT_GRANULARITY emGranularity; // 粒度 char szReserved1[4]; // 字节对齐 char szRuleType[32]; // "NumberStat":人数统计,统计进入离开数量; "ManNumDetection":区域内人数统计,统计区域内人员数量及滞留时间 char szStartTime[20]; // 开始时间,表示从什么时间开始统计上报,开始时间,需按周期取整。如推送周期是10分钟一次,那么开始时间,只能为,每个小时的 第0分,10分、20分、30分、40、分、50分。 fVideoStatStreamCallBack cbVideoStatStream; // 统计通道数据回调 LDWORD dwUser; // 用户数据 unsigned short nCycle; // 与Granularity结合使用,如emGranularity为 EM_GRANULARITY_MINUTE, Cycle 值为5,表示以5分钟统计周期上报数据 char szReserved2[2]; // 字节对齐 int nSendMinStayTimeValidNum; // 滞留情况数组大小,如填0则不下发该字段 int nMinStayTime[8]; // 上报时间段内区域人员滞留情况, 表示统计的间隔结果中返回滞留时间大于3秒,大于5秒,大于10秒的记录,单位秒, 不下发时回调仅返回总人数和总滞留时长 }NET_IN_ATTACH_VIDEOSTAT_STREAM; ///@brief 订阅统计通道数据出参 typedef struct tagNET_OUT_ATTACH_VIDEOSTAT_STREAM { DWORD dwSize; // 此结构体大小 }NET_OUT_ATTACH_VIDEOSTAT_STREAM; ///@brief 接口 CLIENT_GetParkingSpaceStatus 的输入参数 typedef struct tagNET_IN_GET_PARKINGSPACE_STATUS { DWORD dwSize; // 此结构体大小 DWORD dwWaitTime; // 接口超时等待时间 int nChannelID; // 通道号 int * pLaneID; // 取值范围[0,255], pLaneID==NULL表示所有车位,车位最大数同DH_PRODUCTION_DEFNITION.nMaxRoadWays int nLaneCount; // 申请的内存为sizeof(int)*nLaneCount } NET_IN_GET_PARKINGSPACE_STATUS; ///@brief 返回的车位状态 typedef struct tagNET_LANE_PARKINGSPACE_STATUS { DWORD dwSize; // 此结构体大小 int nLaneID; // 车位号 unsigned int nPictureId; // 图片ID,用于获取图片数据 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 } NET_LANE_PARKINGSPACE_STATUS; ///@brief 接口 CLIENT_GetParkingSpaceStatus 的输出参数 typedef struct tagNET_OUT_GET_PARKINGSPACE_STATUS { DWORD dwSize; // 此结构体大小 NET_LANE_PARKINGSPACE_STATUS* pStatus; // 返回的车位状态,由用户申请内存 int nMaxStatus; // 需要事先申请的内存为sizeof(NET_LANE_PARKINGSPACE_STATUS)*nMaxStatus,且nMaxStatus == DH_PRODUCTION_DEFNITION.nMaxRoadWays int nRetStatus; // 实际返回的车位状态数 } NET_OUT_GET_PARKINGSPACE_STATUS; ///@brief 接口 CLIENT_AttachParkingSpaceData 的输入参数 typedef struct tagNET_CB_PARKINGSPACE_DATA { DWORD dwSize; // 此结构体大小 void* pPicBuffer; // 图片二进制数据,由用户申请内存,大小为sizeof(unsigned int)*nPicLength unsigned int nPicLength; // 图片总长度 } NET_CB_PARKINGSPACE_DATA; ///@brief 接口 CLIENT_AttachParkingSpaceData 回调函数,pBuf是json和图片数据,nBufLen是pBuf相应长度,用于转发服务 typedef int (CALLBACK *fNotifySnapData)(LLONG lParkingHandle, NET_CB_PARKINGSPACE_DATA* pDiagnosisInfo, void* pBuf, int nBufLen, LDWORD dwUser); ///@brief 接口 CLIENT_AttachParkingSpaceData 的输入参数 typedef struct tagNET_IN_ATTACH_PARKINGSPACE { DWORD dwSize; // 此结构体大小 DWORD dwWaitTime; // 接口超时等待时间 int nChannelID; // 通道号 unsigned int nPictureId; // 图片ID,见NET_LANE_PARKINGSPACE_STATUS.nPictureId fNotifySnapData cbNotifySnapData; // 回调函数 LDWORD dwUser; // 用户自定义参数 } NET_IN_ATTACH_PARKINGSPACE; ///@brief 信息信息 typedef struct tagNET_CB_FINGERPRINT_INFO { UINT nIndex; // 信息索引号,从左手小指依次到右手小指为0到9 char szFingerprintData[DH_COMMON_STRING_2048]; // 信息数据,经过Base64后的字符串 BYTE bReserved[256]; // 保留字段 }NET_CB_FINGERPRINT_INFO; ///@brief 回调函数中目标信息 typedef struct tagNET_CB_PERSON_INFO { UINT nSID; // 服务器订阅ID号 UINT nPicLength; // 采集的人员图片长度 char szUserID[DH_MAX_USERID_LEN]; // 用户ID UINT nRetFaceDataNum; // 返回的目标模版数据个数 char szFaceData[MAX_FACE_DATA_NUM][MAX_FACE_DATA_LEN]; // 目标数据 char szPassword[DH_COMMON_STRING_64];//卡密码 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szCardName[DH_COMMON_STRING_32];//卡命名 UINT nFingerPrintNum; // 返回信息个数 NET_CB_FINGERPRINT_INFO stuFingerPrintInfo[MAX_FINGERPRINT_NUM];//信息信息 BYTE bReserved[2048]; // 保留字段 }NET_CB_PERSON_INFO; ///@brief 目标信息采集回调函数 typedef int (CALLBACK *fNotifyPersonInfo)(LLONG lLoginID, LLONG lPersonHandle, NET_CB_PERSON_INFO *pstuPersonInfo, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser, void *reserved); ///@brief CLIENT_AttachPersonInfoCollect 入参 typedef struct tagNET_IN_ATTACH_PERSONINFOCOLLECT { DWORD dwSize; // 结构体大小 DWORD dwWaitTime; // 接口超时等待时间 fNotifyPersonInfo cbNotifyPersonInfo; // 回调函数 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_PERSONINFOCOLLECT; ///@brief CLIENT_AttachPersonInfoCollect 出参 typedef struct tagNET_OUT_ATTACH_PERSONINFOCOLLECT { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_PERSONINFOCOLLECT; ///@brief CLIENT_DetachPersonInfoColloect 入参 typedef struct tagNET_IN_DETACH_PERSONINFOCOLLECT { DWORD dwSize; //结构体大小 DWORD dwWaitTime; // 接口超时等待时间 LLONG lPersonHandle; // CLIENT_AttachPersonInfoCollect 返回的句柄 }NET_IN_DETACH_PERSONINFOCOLLECT; ///@brief CLIENT_DetachPersonInfoColloect 出参 typedef struct tagNET_OUT_DETACH_PERSONINFOCOLLECT { DWORD dwSize; // 结构体大小 }NET_OUT_DETACH_PERSONINFOCOLLECT; ///@brief 订阅目标信息采集 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPersonInfoCollect(LLONG lLoginID, NET_IN_ATTACH_PERSONINFOCOLLECT *pstuInParam, NET_OUT_ATTACH_PERSONINFOCOLLECT *pstuOutParam); ///@brief 取消订阅目标信息采集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPersonInfoColloect(NET_IN_DETACH_PERSONINFOCOLLECT* pstuInParam, NET_OUT_DETACH_PERSONINFOCOLLECT* pstuOutParam); ///@brief NET_CAR_PASS_INFOS 相关枚举类型 typedef enum tagNET_CAR_SIZE { CAR_SIZE_UNKNOWN = 0 , //未知 CAR_SIZE_SAMLL , //小车 CAR_SIZE_BIG , //大车 }NET_CAR_SIZE; ///@brief 车辆动作类型 typedef enum tagNET_CAR_ACTION { CAR_ACTION_UNKNOWN = 0 , CAR_ACTION_ENTER , //进入检测区域 CAR_ACTION_LEAVE , //离开检测区域 }NET_CAR_ACTION; ///@brief CLIENT_AttachCarPassInfo 回调函数返回的过车信息结构体 typedef struct tagNET_CAR_PASS_INFO { DWORD dwSize; DWORD nID; // 车辆物体ID DWORD nLaneNumber; // 从0开始,比如现有3个车道,则车道号分别为0 1 2 DWORD nRoadwayNumber; // 自定义车道号,用户配置的车道号,目前取值范围为1-16 DWORD nSpeed; // 车速,单位(km/h) NET_CAR_SIZE emCarSize; // 车辆大小类型 NET_CAR_ACTION emCarAction; // 车辆动作类型 NET_TIME_EX stuTime; // 动作发生的时间,精确到毫秒 }NET_CAR_PASS_INFO; ///@brief 接口 CLIENT_AttachCarPassInfo 回调函数 // nInfoNum 过车信息数 // pstuCarPassInfos 过车信息数组 typedef int (CALLBACK *fNotifyCarPassInfo)(LLONG lCarPassHandle, NET_CAR_PASS_INFO* pstuCarPassInfos, int nInfoNum , LDWORD dwUser); ///@brief 接口 CLIENT_AttachCarPassInfo 的输入参数 typedef struct tagNET_IN_ATTACH_CAR_PASS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nChannelID; // 通道号 fNotifyCarPassInfo cbNotifyCarPassInfo; // 回调函数,有过车信息时,回调给上层 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_CAR_PASS_INFO; ///@brief 接口 CLIENT_AttachCarPassInfo 的输出参数 typedef struct tagNET_OUT_ATTACH_CAR_PASS_INFO { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_ATTACH_CAR_PASS_INFO; ///@brief 接口 CLIENT_AttachParkingSpaceData 的输出参数 typedef struct tagNET_OUT_ATTACH_PARKINGSPACE { DWORD dwSize; // 此结构体大小 } NET_OUT_ATTACH_PARKINGSPACE; ///@brief 接口 CLIENT_DetachParkingSpaceData 的输入参数 typedef struct tagNET_IN_DETACH_PARKINGSPACE { DWORD dwSize; // 此结构体大小 DWORD dwWaitTime; // 接口超时等待时间 LLONG lParkingHandle; // CLIENT_AttachParkingSpaceData返回的句柄 } NET_IN_DETACH_PARKINGSPACE; ///@brief 接口 CLIENT_DetachParkingSpaceData 的输出参数 typedef struct tagNET_OUT_DETACH_PARKINGSPACE { DWORD dwSize; // 此结构体大小 } NET_OUT_DETACH_PARKINGSPACE; ///@brief 获取车位锁状态接口,CLIENT_GetParkingLockState 入参 typedef struct tagNET_IN_GET_PARKINGLOCK_STATE_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GET_PARKINGLOCK_STATE_INFO; ///@brief 车位锁状态 typedef enum tagEM_STATE_TYPE { EM_STATE_TYPE_UNKNOW, // 未知 EM_STATE_TYPE_LOCKRISE, // 车位锁升起 EM_STATE_TYPE_LOCKDOWN, // 车位锁降下 EM_STATE_TYPE_LOCKERROR, // 车位锁异常 } EM_STATE_TYPE; ///@brief 车位锁状态通信接口参数 typedef struct tagNET_STATE_LIST_INFO { unsigned int nLane; // 车位号 EM_STATE_TYPE emState; // 车位锁状态 BYTE byReserved[256]; // 保留 } NET_STATE_LIST_INFO; ///@brief 获取车位锁状态, CLIENT_GetParkingLockState 出参 typedef struct tagNET_OUT_GET_PARKINGLOCK_STATE_INFO { DWORD dwSize; // 结构体大小 int nStateListNum; // 车位锁状态个数 NET_STATE_LIST_INFO stuStateList[MAX_PARKINGLOCK_STATE_NUM]; // 车位锁状态 } NET_OUT_GET_PARKINGLOCK_STATE_INFO; ///@brief 设置车位锁状态接口,CLIENT_SetParkingLockState 入参 typedef struct tagNET_IN_SET_PARKINGLOCK_STATE_INFO { DWORD dwSize; // 结构体大小 int nStateListNum; // 车位锁状态个数 NET_STATE_LIST_INFO stuStateList[MAX_PARKINGLOCK_STATE_NUM]; // 车位锁状态 int nControlType; // 控制车位锁状态类型, 0:未知, 1:平台正常控制, 2:平台手动控制 } NET_IN_SET_PARKINGLOCK_STATE_INFO; ///@brief 设置车位锁状态接口,CLIENT_SetParkingLockState 出参 typedef struct tagNET_OUT_SET_PARKINGLOCK_STATE_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_SET_PARKINGLOCK_STATE_INFO; ///@brief 设置停车规则接口,CLIENT_SetParkingRule 入参 typedef struct tagNET_IN_SET_PARKINGRULE_INFO { DWORD dwSize; // 结构体大小 UINT nParkingTimeThreshold; // 停车时长阈值,单位秒 } NET_IN_SET_PARKINGRULE_INFO; ///@brief 设置停车规则接口,CLIENT_SetParkingRule 出参 typedef struct tagNET_OUT_SET_PARKINGRULE_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_SET_PARKINGRULE_INFO; ///@brief 车位状态 typedef enum tagEM_PARKINGSPACE_STATE { EM_PARKINGSPACE_STATE_UNKNOWN = -1, // 未知 EM_PARKINGSPACE_STATE_NOPARKING, // 车位无车 EM_PARKINGSPACE_STATE_PARKING // 车位有车 }EM_PARKINGSPACE_STATE; ///@brief 设置停车车位状态 CLIENT_SetParkingSpaceState 入参 typedef struct tagNET_IN_SET_PARKINGSPACE_STATE_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szPlateNumber[64]; // 车牌号码 char szParkingNo[32]; // 车位号 EM_PARKINGSPACE_STATE emState; // 车位状态 BOOL bUnNeedPic; // 是否不需要图片, 默认FALSE }NET_IN_SET_PARKINGSPACE_STATE_INFO; ///@brief 设置停车车位状态 CLIENT_SetParkingSpaceState 出参 typedef struct tagNET_OUT_SET_PARKINGSPACE_STATE_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PARKINGSPACE_STATE_INFO; ///@brief 设置停车车位余位信息 CLIENT_SetParkingRemainInfo 入参 typedef struct tagNET_IN_SET_PARKING_REMAIN_INFO { DWORD dwSize; // 结构体大小 UINT nRemainSpace; // 停车场余位数 } NET_IN_SET_PARKING_REMAIN_INFO; ///@brief 设置停车车位余位信息 CLIENT_SetParkingRemainInfo 出参 typedef struct tagNET_OUT_SET_PARKING_REMAIN_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_SET_PARKING_REMAIN_INFO; ///@brief 停车位记录信息 typedef struct tagNET_PARKINGRECORD_INFO { int nChannel; // 通道号 char szPlateNumber[64]; // 车牌号码 char szParkingNo[32]; // 车位号 BYTE byReserverd[512]; // 保留字节 }NET_PARKINGRECORD_INFO; ///@brief 修改停车记录信息 CLIENT_ModifyParkingRecord 入参 typedef struct tagNET_IN_MODIFY_PARKINGRECORD_INFO { DWORD dwSize; // 结构体大小 NET_PARKINGRECORD_INFO stuOld; // 老的记录 NET_PARKINGRECORD_INFO stuNew; // 新的记录 }NET_IN_MODIFY_PARKINGRECORD_INFO; ///@brief 修改停车记录信息 CLIENT_ModifyParkingRecord 出参 typedef struct tagNET_OUT_MODIFY_PARKINGRECORD_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_PARKINGRECORD_INFO; ///@brief 文件批量下载 // 下载进度回调函数原型, nError表示在下载过程出现的错误,1-缓存不足,2-对返回数据的校验出错,3-下载当前文件失败,4-创建对应保存文件失败 // 按文件下载时,ID为用户设置的dwFileID,按条件下载时,ID为用户设置的dwConditionID // pReserved 为 NET_DOWNLOADFILE_RESERVED_INFO typedef void (CALLBACK *fMultiFileDownLoadPosCB)(LLONG lDownLoadHandle, DWORD dwID, DWORD dwFileTotalSize, DWORD dwDownLoadSize, int nError, LDWORD dwUser, void* pReserved); ///@brief 文件批量下载回调扩展 typedef struct tagNET_DOWNLOADFILE_RESERVED_INFO { DWORD dwSize; BYTE* pPieceBuff; // 文件二进制片信息 UINT nPieceLen; // 文件二进制片长度 }NET_DOWNLOADFILE_RESERVED_INFO; ///@brief 下载文件方式 typedef enum tagEM_DOWNLOAD_FILE_TYPE { EM_DOWNLOAD_BY_FILENAME = 0 , //按文件名下载 EM_DOWNLOAD_BY_CONDITION , //按条件下载 }EM_DOWNLOAD_FILE_TYPE; ///@brief 下载时间类型 typedef enum tagEM_DOWNLOAD_TIME_TYPE { EM_DOWNLOAD_TIME_SNAP = 0 , //抓拍时间 EM_DOWNLOAD_TIME_STORAGE , //存储时间 }EM_DOWNLOAD_TIME_TYPE; ///@brief 下载数据类型 typedef enum tagEM_DOWNLOAD_DATA_TYPE { EM_DOWNLOAD_DATA_RECORD = 0 , //录像 EM_DOWNLOAD_DATA_PICTURE , //图片 }EM_DOWNLOAD_DATA_TYPE; ///@brief CLIENT_DownLoadMultiFile 接口参数 typedef struct tagNET_DOWNLOADFILE_INFO { DWORD dwSize; DWORD dwFileID; // 文件ID, 由用户自己分配 int nFileSize; // 查询到的文件大小 char szSourceFilePath[MAX_PATH]; // 查询到的文件路径 char szSavedFileName[MAX_PATH]; // 文件保存路径 }NET_DOWNLOADFILE_INFO; ///@brief 下载条件 typedef struct tagNET_DOWNLOAD_CONDITION_INFO { DWORD dwSize; DWORD dwConditionID; // 条件ID, 由用户自己分配 int nChannel; // 通道号 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 EM_DOWNLOAD_TIME_TYPE emTimeType; // 时间类型 EM_DOWNLOAD_DATA_TYPE emDataType; // 数据类型 char szSavedFileName[MAX_PATH]; // 文件保存路径 }NET_DOWNLOAD_CONDITION_INFO; ///@brief 文件方式下载选项 typedef struct tagNET_DOWNLOADFILE_OPTIONS_INFO { int nChannel; // 通道号 BYTE byReserved[508]; // 预留字段 }NET_DOWNLOADFILE_OPTIONS_INFO; ///@brief CLIENT_DownLoadMultiFile输入参数 typedef struct tagNET_IN_DOWNLOAD_MULTI_FILE { DWORD dwSize; /*按文件名下载*/ int nFileCount; // 待下载文件数,emDownloadType为EM_DOWNLOAD_BY_FILENAME有效 NET_DOWNLOADFILE_INFO* pFileInfos; // 待下载文件信息,emDownloadType为EM_DOWNLOAD_BY_FILENAME有效 // 由用户申请内存,大小为sizeof(NET_DOWNLOADFILE_INFO)*nFileCount fMultiFileDownLoadPosCB cbPosCallBack; // 进度回调函数 LDWORD dwUserData; // 用户数据 EM_DOWNLOAD_FILE_TYPE emDownloadType; // 下载方式 /*按查询条件下载*/ int nConditionCount; // 下载条件数,emDownloadType为EM_DOWNLOAD_BY_CONDITION有效 NET_DOWNLOAD_CONDITION_INFO* pConditionInfos; // 下载条件,emDownloadType为EM_DOWNLOAD_BY_CONDITION有效 // 由用户申请内存,大小为sizeof(NET_DOWNLOAD_CONDITION_INFO)*nConditionCount EM_SUBCLASSID_TYPE emSubClass; // 从设备类型(定制) NET_DOWNLOADFILE_OPTIONS_INFO *pFileOptions; // 待下载文件信息, 下载选项;emDownloadType为EM_DOWNLOAD_BY_FILENAME有效 }NET_IN_DOWNLOAD_MULTI_FILE; ///@brief CLIENT_DownLoadMultiFile输出参数 typedef struct tagNET_OUT_DOWNLOAD_MULTI_FILE { DWORD dwSize; LLONG lDownLoadHandle; // 下载句柄 }NET_OUT_DOWNLOAD_MULTI_FILE; ///@brief 回调信息 typedef struct __NET_VIDEOANALYSE_STATE { DWORD dwSize; DWORD dwProgress; // 分析进度,0-100 char szState[DH_COMMON_STRING_64]; // 通道状态,Running":运行,"Stop":停止,"NoStart":未启动,"Failed":失败,"Successed":成功 char szFailedCode[DH_COMMON_STRING_64]; // 错误码 }NET_VIDEOANALYSE_STATE; ///@brief 视频分析进度状态实时回调函数 typedef int (CALLBACK *fVideoAnalyseState)(LLONG lAttachHandle, NET_VIDEOANALYSE_STATE* pAnalyseStateInfos, LDWORD dwUser, void* pReserved); ///@brief CLIENT_AttachVideoAnalyseState接口输入参数 typedef struct __NET_IN_ATTACH_VIDEOANALYSE_STATE { DWORD dwSize; int nChannleId; // 通道号 fVideoAnalyseState cbVideoAnalyseState; // 视频分析状态回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_VIDEOANALYSE_STATE; ///@brief CLIENT_AttachVideoAnalyseState接口输出参数 typedef struct __NET_OUT_ATTACH_VIDEOANALYSE_STATE { DWORD dwSize; LLONG lAttachHandle; // 分析进度句柄,唯一标识某一通道的分析进度 }NET_OUT_ATTACH_VIDEOANALYSE_STATE; ///@brief 目标类型 typedef enum tagEM_TRACK_OBJECT_TYPE { EM_TRACK_OBJECT_TYPE_UNKNOWN = -1, // 未知 EM_TRACK_OBJECT_TYPE_FACE, // 目标 EM_TRACK_OBJECT_TYPE_HUMAN, // 人体 EM_TRACK_OBJECT_TYPE_VECHILE, // 机动车 EM_TRACK_OBJECT_TYPE_NOMOTOR, // 非机动车 } EM_TRACK_OBJECT_TYPE; ///@brief 视频目标信息 typedef struct tagNET_VIDEO_TRACK_OBJECT_INFO { char szObjectUUID[128]; // 目标uuid EM_TRACK_OBJECT_TYPE emObjectType[32]; // 目标类型 int nObjectTypeNum; // 目标类型的个数 NET_RECT stuBoundingBox; // 包围盒 }NET_VIDEO_TRACK_OBJECT_INFO; ///@brief 外部轨迹的信息 typedef struct tagNET_VIDEO_ANALYSE_TRACK_PROC { DWORD dwSize; // 结构体大小 int nChannelId; // 通道号 NET_VIDEO_TRACK_OBJECT_INFO stuTrackObject[128]; // 视频目标信息 int nTrackObjectNum; // 视频目标个数 char szReserved[256]; // 保留字节 }NET_VIDEO_ANALYSE_TRACK_PROC; ///@brief 外部轨迹的回调函数 typedef void (CALLBACK *fVideoAnalyseTrackProc)(LLONG lAttachHandle, NET_VIDEO_ANALYSE_TRACK_PROC* pstuVideoAnalyseTrackProc, LDWORD dwUser); ///@brief CLIENT_AttachVideoAnalyseTrackProc 输入参数 typedef struct tagNET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC { DWORD dwSize; // 此结构体大小,必须赋值 int nChannelId; // 通道号 fVideoAnalyseTrackProc cbVideoAnalyseTrackProc; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC; ///@brief CLIENT_AttachVideoAnalyseTrackProc 输出参数 typedef struct tagNET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC; ///@brief 订阅外部轨迹 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachVideoAnalyseTrackProc(LLONG lLoginID, NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC* pstInParam, NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC* pstOutParam , int nWaitTime); ///@brief 取消订阅外部轨迹 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachVideoAnalyseTrackProc(LLONG lAttachHandle); ///@brief CLIENT_GetWaterLevelInfobyEvent 输入参数 typedef struct tagNET_IN_GET_WATER_LEVELINFO_BY_EVENT { DWORD dwSize; // 此结构体大小,必须赋值 UINT nChannel; // 通道号 int nPresetId; // 事件触发的预置点号,从1开始 }NET_IN_GET_WATER_LEVELINFO_BY_EVENT; ///@brief CLIENT_GetWaterLevelInfobyEvent 输出参数 typedef struct tagNET_OUT_GET_WATER_LEVELINFO_BY_EVENT { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_GET_WATER_LEVELINFO_BY_EVENT; ///@brief 上海防汛门五期水利球水位报警对接高诚平台定制,用于平台主动查询水位信息,设备通过水位监测事件上报实时数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWaterLevelInfobyEvent(LLONG lLoginID, NET_IN_GET_WATER_LEVELINFO_BY_EVENT* pstInParam, NET_OUT_GET_WATER_LEVELINFO_BY_EVENT* pstOutParam , int nWaitTime); ///@brief 语音对讲状态 typedef enum tagEM_TALK_STATE { EM_TALK_STATE_UNKNOWN, // 未知 EM_TALK_STATE_INVITING, // 主叫 EM_TALK_STATE_RINGING, // 被叫 EM_TALK_STATE_ANSWER, // 应答 EM_TALK_STATE_REFUSE, // 拒绝 EM_TALK_STATE_HANGUP, // 挂断 EM_TALK_STATE_BUSYING, // 忙碌 EM_TALK_STATE_CANCEL, // 取消呼叫 } EM_TALK_STATE; #define NET_CALL_NUM_MAX 128 // 最大通话号码数量 ///@brief CLIENT_AttachTalkState 回调函数返回的语音对讲状态 typedef struct tagNET_TALK_STATE { DWORD dwSize; char szCallID[DH_COMMON_STRING_64]; // 呼叫惟一标识符 int nAudioPort; // 音频端口 int nVideoPort; // 视频端口 char szMediaAddr[DH_MAX_IPADDR_LEN]; // 取流地址 EM_TALK_STATE emState; // 状态 int nNumberCount; // 呼叫号码数 char szNumbers[NET_CALL_NUM_MAX][DH_COMMON_STRING_32]; // 呼叫号码列表 } NET_TALK_STATE; ///@brief 接口 CLIENT_AttachTalkState 的回调函数 typedef void (CALLBACK *fNotifyTalkState)(LLONG lAttachHandle, NET_TALK_STATE* pstuState, int nLen, LDWORD dwUser); ///@brief 接口 CLIENT_AttachTalkState 的输入参数 typedef struct tagNET_IN_ATTACH_TALK_STATE { DWORD dwSize; // 此结构体大小,必须赋值 int nChnId; // 通道号,用于标识对讲单元 fNotifyTalkState cbCallBack; // 回调函数,有对讲状态时,回调给上层 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_TALK_STATE; ///@brief 接口 CLIENT_AttachTalkState 的输出参数 typedef struct tagNET_OUT_ATTACH_TALK_STATE { DWORD dwSize; // 此结构体大小,必须赋值 char szCallID[DH_COMMON_STRING_64]; // 呼叫惟一标识符 }NET_OUT_ATTACH_TALK_STATE; ///////////////////////////// IVS 服务器视频诊断模块 ///////////////////////////////// // 视频诊断上报结果检测类型定义 #define NET_DIAGNOSIS_DITHER "VideoDitherDetection" // 视频抖动检测 对应结构体(NET_VIDEO_DITHER_DETECTIONRESULT) #define NET_DIAGNOSIS_STRIATION "VideoStriationDetection" // 视频条纹检测 对应结构体(NET_VIDEO_STRIATION_DETECTIONRESULT) #define NET_DIAGNOSIS_LOSS "VideoLossDetection" // 视频丢失检测 对应结构体(NET_VIDEO_LOSS_DETECTIONRESULT) #define NET_DIAGNOSIS_COVER "VideoCoverDetection" // 视频遮挡检测 对应结构体(NET_VIDEO_COVER_DETECTIONRESULT) #define NET_DIAGNOSIS_FROZEN "VideoFrozenDetection" // 视频冻结检测 对应结构体(NET_VIDEO_FROZEN_DETECTIONRESULT) #define NET_DIAGNOSIS_BRIGHTNESS "VideoBrightnessDetection" // 视频亮度异常检测 对应结构体(NET_VIDEO_BRIGHTNESS_DETECTIONRESULT) #define NET_DIAGNOSIS_CONTRAST "VideoContrastDetection" // 视频对比度异常检测 对应结构体(NET_VIDEO_CONTRAST_DETECTIONRESULT) #define NET_DIAGNOSIS_UNBALANCE "VideoUnbalanceDetection" // 视频偏色检测 对应结构体(NET_VIDEO_UNBALANCE_DETECTIONRESULT) #define NET_DIAGNOSIS_NOISE "VideoNoiseDetection" // 视频噪声检测 对应结构体(NET_VIDEO_NOISE_DETECTIONRESULT) #define NET_DIAGNOSIS_BLUR "VideoBlurDetection" // 视频模糊检测 对应结构体(NET_VIDEO_BLUR_DETECTIONRESULT) #define NET_DIAGNOSIS_SCENECHANGE "VideoSceneChangeDetection" // 视频场景变化检测 对应结构体(NET_VIDEO_SCENECHANGE_DETECTIONRESULT) #define NET_DIAGNOSIS_VIDEO_DELAY "VideoDelay" // 视频延时检测 对应结构体(NET_VIDEO_DELAY_DETECTIONRESUL) #define NET_DIAGNOSIS_PTZ_MOVING "PTZMoving" // 云台移动检测 对应结构体(NET_PTZ_MOVING_DETECTIONRESULT) #define NET_DIAGNOSIS_BLACK_WHITE "VideoBlackAndWhite" // 黑白图像检测, 对应结构体(NET_BLACK_WHITE_DETECTIONRESULT) #define NET_DIAGNOSIS_DRAMATIC_CHANGE "VideoDramaticChange" // 场景剧变检测, 对应结构体(NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT) #define NET_DIAGNOSIS_VIDEO_AVAILABILITY "VideoAvailability" // 视频完好率监测, 对应结构体(NET_VIDEO_AVAILABILITY_DETECTIONRESULT) #define NET_DIAGNOSIS_SNOWFLAKE "SnowflakeDetection" // 雪花屏检测, 对应结构体(NET_VIDEO_SNOWFLAKE_DETECTIONRESULT) #define NET_DIAGNOSIS_VIDEO_ALGORITHMTYPE "VideoAlgorithmType" // 视频算法类型检测,对应结构体(NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT) #define NET_DIAGNOSIS_VIDEO_FILCKERING_DETECTION "VideoFilckeringDetection" // 视频闪频检测, 对应结构体(NET_VIDEO_FILCKERING_DETECTION_RESULT) #define NET_DIAGNOSIS_VIDEO_LOSS_FRAME_DETECTION "VideoLossFrameDetection" // 视频丢帧检测, 对应结构体(NET_VIDEO_LOSS_FRAME_DETECTION_RESULT) ///@brief 检测结果状态 typedef enum tagNET_STATE_TYPE { NET_EM_STATE_ERR, // 其它 NET_EM_STATE_NORMAL, // "Normal" 正常 NET_EM_STATE_WARNING, // "Warning" 警告 NET_EM_STATE_ABNORMAL, // "Abnormal" 异常 }NET_STATE_TYPE; ///@brief 视频诊断结果类型 typedef enum tagNET_VIDEODIAGNOSIS_RESULT_TYPE { NET_EM_ROTATION, // "Rotation" -视频轮巡分析结果 NET_EM_REAL, // "Real" -实时视频分析结果 NET_EM_NR_UNKNOW, // 未定义 }NET_VIDEODIAGNOSIS_RESULT_TYPE; ///@brief 视频诊断错误原因 typedef enum tagNET_VIDEODIAGNOSIS_FAIL_TYPE { NET_EM_NO_ERROR, // 诊断成功 NET_EM_DISCONNECT, // "Disconnect" - 末能连接设备 NET_EM_CH_NOT_EXIST, // "ChannelNotExist" - 通道不存在 NET_EM_LOGIN_OVER_TIME, // "LoginOverTime" - 登录超时 NET_EM_NO_VIDEO, // "NoVideo" - 登录成功无视频 NET_EM_NO_RIGHT, // "NoRight" - 无操作权限 NET_EM_PLATFROM_LOGIN_FAILED, // "PlatformLoginFailed" - 平台登入失败 NET_EM_PLATFROM_DISCONNECT, // "PlatformDisconnect" - 平台断开连接 NET_EM_GET_STREAM_OVER_TIME, // "GetStreamOverTime" - 获取码流超时 NET_EM_GET_NO_ENOUGH_STREAM, // "NoEnoughStream" - 码流不足 NET_EM_DECODE_STREAM_FAILED, // "DecodeStreamFailed" - 解码失败 NET_EM_GET_OFF_LINE, // "OffLine" - 前端设备离线 NET_EM_NF_UNKNOW, // 其他原因,详见结构体里的失败原因描述 NET_EM_NOT_SD, // "NotSD" - 设备非球机,云台类检测无效 NET_EM_RTSP_PROCESS_FAILED, // "RtspProcesssFailed" - RTSP过程失败 NET_EM_PLAY_FAILED, // "PlayFailed" - 播放失败 NET_EM_SNAP_FAILED, // "SnapFailed" - 抓图失败 NET_EM_FULL_CHANNEL_LINKS, // "FullChannelLinks" - 由于资源管控,该角色的用户连接数已满,导致拉流失败 NET_EM_LICENSE_ERROR, // "LicenseError" - 证书错误 NET_EM_AUTHORIZATION_ERROR, // "AuthorizationError" - 授权错误, 超出最大最大授权路 }NET_VIDEODIAGNOSIS_FAIL_TYPE; ///@brief 通用变长字符串以‘\0’结束 typedef struct tagNET_ARRAY { DWORD dwSize; // 此结构体大小 char* pArray; // 缓冲区 目前最小260字节,调用者申请内存 填充数据保证是'\0'结束 DWORD dwArrayLen; // 缓冲空间长度 }NET_ARRAY; #define MAX_BACKPIC_COUNT 8 // 最大背景图片个数 ///@brief 视频诊断结果上报通用数据 typedef struct tagNET_VIDEODIAGNOSIS_COMMON_INFO { DWORD dwSize; // 此结构体大小 int nDiagnosisID; // 检测通道 NET_ARRAY stProject; // 计划名称 NET_ARRAY stTask; // 任务名称 NET_ARRAY stProfile; // 参数表名称 NET_ARRAY stDeviceID; // 设备唯一标志 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 int nVideoChannelID; // 视频通道号 前端设备比如DVR,IPC的通道 NET_STREAM_TYPE emVideoStream; // 视频码流 NET_VIDEODIAGNOSIS_RESULT_TYPE emResultType; // 诊断结果类型 BOOL bCollectivityState; // 诊断结果 NET_VIDEODIAGNOSIS_FAIL_TYPE emFailedCause; // 失败原因 char szFailedCode[DH_COMMON_STRING_64]; // 失败原因描述 char szResultAddress[DH_COMMON_STRING_128]; // 诊断结果存放地址,建议使用szResultAddressEx字段 int nFrameRate; // 码率 单位 kb/s, 每天上报一次 int nFrameWidth; // 宽 每天上报一次 int nFrameHeight; // 高 每天上报一次 int nBackPic; // 背景图片个数 char szBackPicAddress[MAX_BACKPIC_COUNT][DH_COMMON_STRING_128]; // 背景图片路径 char szResultAddressEx[DH_COMMON_STRING_256]; // 诊断结果存放地址扩展 NET_TIME stStreamStartTime; // 流开始时间 NET_TIME stStreamEndTime; // 流结束时间 }NET_VIDEODIAGNOSIS_COMMON_INFO; ///@brief 对应检测类型(NET_DIAGNOSIS_DITHER) 视频抖动检测结果 -- 画面变化 风吹,晃动,转动包括云台转动 typedef struct tagNET_VIDEO_DITHER_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 一般小于是正常,大于是异常,中间是警告 int nDuration; // 状态持续时间 检测项持续检测时间 暂时无用 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_DITHER_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_STRIATION)视频条纹检测结果 -- 相机受到干扰出现异常条纹 typedef struct tagNET_VIDEO_STRIATION_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_STRIATION_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_LOSS)视频丢失检测结果 -- 断电 断线等造成的 typedef struct tagNET_VIDEO_LOSS_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_LOSS_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_COVER)视频遮挡检测结果 -- 相机被遮挡了 typedef struct tagNET_VIDEO_COVER_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_COVER_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_FROZEN)视频冻结检测结果 -- 画面不动多久为冻结 typedef struct tagNET_VIDEO_FROZEN_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_FROZEN_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_BRIGHTNESS)视频亮度异常检测结果 --以下是相机配置不正确的一些现象检测 typedef struct tagNET_VIDEO_BRIGHTNESS_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_BRIGHTNESS_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_CONTRAST)视频对比度异常检测结果 typedef struct tagNET_VIDEO_CONTRAST_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_CONTRAST_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_UNBALANCE)视频偏色异常检测结果 typedef struct tagNET_VIDEO_UNBALANCE_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_UNBALANCE_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_NOISE)视频噪声异常检测结果 typedef struct tagNET_VIDEO_NOISE_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_NOISE_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_BLUR)视频模糊异常检测结果 typedef struct tagNET_VIDEO_BLUR_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_BLUR_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_SCENECHANGE)视频场景变化检测结果 typedef struct tagNET_VIDEO_SCENECHANGE_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 }NET_VIDEO_SCENECHANGE_DETECTIONRESULT; ///@brief 运动移动检测结果类型 typedef enum tagEM_PTZ_MOVING_RESULT_TYPE { EM_PTZ_MOVING_UNKNOWN , // 未知 EM_PTZ_MOVING_NORMAL , // 检测正常 EM_PTZ_MOVING_NOTOBEY , // 不按指令运动 EM_PTZ_MOVING_NOTMOVE , // 不能运动 EM_PTZ_MOVING_NOTDETECT , // 未做检测 }EM_PTZ_MOVING_RESULT_TYPE; ///@brief 对应检测类型(NET_DIAGNOSIS_PTZ_MOVING)云台移动检测结果 typedef struct tagNET_PTZ_MOVING_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingUp; // 向上运动检测结果 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingDown; // 向下运动检测结果 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingLeft; // 向左运动检测结果 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingRight; // 向右运动检测结果 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingZoomWide; // 变倍(大)运动检测结果 EM_PTZ_MOVING_RESULT_TYPE emPTZMovingZoomTele; // 变倍(小)运动检测结果 }NET_PTZ_MOVING_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_BLACK_WHITE) 黑白图像检测结果 typedef struct tagNET_BLACK_WHITE_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 } NET_BLACK_WHITE_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_DRAMATIC_CHANGE) 场景剧变检测结果 typedef struct tagNET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT { DWORD dwSize; // 此结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间 char szPicUrl[256]; // 异常检测结果图片地址 } NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT; ///@brief 对应检测类型(NET_DIAGNOSIS_VIDEO_DELAY)视频延时检测结果 typedef struct tagNET_VIDEO_DELAY_DETECTIONRESUL { DWORD dwSize; // 此结构体大小 int nSignalDelay; // 信令延时,-1表示检测失败, 单位ms int nStreamDelay; // 视频流延时,-1表示检测失败, 单位ms int nIFrameDelay; // I帧延时,-1表示检测失败 单位ms }NET_VIDEO_DELAY_DETECTIONRESUL; ///@brief 一次诊断结果数据 typedef struct tagNET_DIAGNOSIS_RESULT_HEADER { DWORD dwSize; // 此结构体大小 char szDiagnosisType[MAX_PATH]; // 诊断类型,详见dhnetsdk.h中"视频诊断上报结果检测类型定义" 如NET_DIAGNOSIS_DITHER int nDiagnosisTypeLen; // 该诊断类型结构体大小 }NET_DIAGNOSIS_RESULT_HEADER; ///@brief cbVideoDiagnosis 回调参数类型 typedef struct tagNET_REAL_DIAGNOSIS_RESULT { DWORD dwSize; // 此结构体大小 NET_VIDEODIAGNOSIS_COMMON_INFO* pstDiagnosisCommonInfo; //视频诊断通用信息 int nTypeCount; // 诊断结果数据诊断类型个数 void* pDiagnosisResult; // 一次诊断结果数据,格式如NET_DIAGNOSIS_RESULT_HEADER+诊断类型1+NET_DIAGNOSIS_RESULT_HEADER+诊断类型2+... DWORD dwBufSize; // 缓冲长度 }NET_REAL_DIAGNOSIS_RESULT; ///@brief 视频诊断结果上报回调函数 typedef int (CALLBACK *fRealVideoDiagnosis)(LLONG lDiagnosisHandle, NET_REAL_DIAGNOSIS_RESULT* pDiagnosisInfo, void* pBuf, int nBufLen, LDWORD dwUser); ///@brief 接口 CLIENT_StartVideoDiagnosis 的输入参数 typedef struct tagNET_IN_VIDEODIAGNOSIS { DWORD dwSize; // 此结构体大小 int nDiagnosisID; // 视频诊断ID,从0开始 DWORD dwWaitTime; // 接口超时等待时间 fRealVideoDiagnosis cbVideoDiagnosis; // 视频诊断结果回调函数 LDWORD dwUser; // 用户自定义参数 }NET_IN_VIDEODIAGNOSIS; ///@brief 接口 CLIENT_StartVideoDiagnosis 的输出参数 typedef struct tagNET_OUT_ATTACH_REALDIAGNOSIS { DWORD dwSize; // 此结构体大小 LLONG lDiagnosisHandle; // 订阅句柄 }NET_OUT_VIDEODIAGNOSIS; ///@brief 诊断结果状态 typedef enum tagEM_COLLECTIVITY_STATE { EM_COLLECTIVITY_STATE_SUCCESSED, // 成功 EM_COLLECTIVITY_STATE_FAILED, // 失败 } EM_COLLECTIVITY_STATE; ///@brief 接口 CLIENT_StartFindDiagnosisResult 的输入参数 typedef struct tagNET_IN_FIND_DIAGNOSIS { DWORD dwSize; // 此结构体大小 int nDiagnosisID; // 视频诊断ID,从0开始 DWORD dwWaitTime; // 接口超时等待时间 NET_ARRAY stuDeviceID; // 设备唯一标志,pArray:NULL表示不使用设备ID查询 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nVideoChannel; // 视频通道号,-1:所有通道号 int nTypeCount; // 诊断类型个数,0:不使用诊断类型查询 NET_ARRAY* pstDiagnosisTypes; // 诊断类型数组,表示需要查询的诊断类型 // 由用户申请内存,大小为sizeof(NET_ARRAY)*nTypeCount char szProjectName[MAX_PATH]; // 计划名称 int nCollectivityStateNum; // 需要查询的诊断结果状态个数, 为0时表示需要查询的诊断结果类型为成功 EM_COLLECTIVITY_STATE emCollectivityState[2]; // 需要查询的诊断结果状态数组, 表示需要查询的诊断结果类型 } NET_IN_FIND_DIAGNOSIS; ///@brief 接口 CLIENT_StartFindDiagnosisResult 的输出参数 typedef struct tagNET_OUT_FIND_DIAGNOSIS { DWORD dwSize; // 此结构体大小 LLONG lFindHandle; // 查询句柄 DWORD dwTotalCount; // 符合条件的总个数 }NET_OUT_FIND_DIAGNOSIS; ///@brief 接口 CLIENT_DoFindDiagnosisResult 的输入参数 typedef struct tagNET_IN_DIAGNOSIS_INFO { DWORD dwSize; // 此结构体大小 int nDiagnosisID; // 视频诊断ID,从0开始 DWORD dwWaitTime; // 接口超时等待时间 int nFindCount; // 每次查询的视频诊断结果条数 int nBeginNumber; // 查询起始序号 0<=beginNumber<= totalCount-1 }NET_IN_DIAGNOSIS_INFO; ///@brief CLIENT_StartRealTimeProject 接口输入参数 typedef struct tagNET_IN_START_RT_PROJECT_INFO { DWORD dwSize; // 此结构体大小 char* pszProjectInfo; // 实时计划信息,通过调用dhconfigsdk.dll中接口CLIENT_PacketData封装得到 // 对应的封装命令为 CFG_CMD_VIDEODIAGNOSIS_REALPROJECT }NET_IN_START_RT_PROJECT_INFO; ///@brief CLIENT_StartRealTimeProject 接口输出参数 typedef struct tagNET_OUT_START_RT_PROJECT_INFO { DWORD dwSize; // 此结构体大小 }NET_OUT_START_RT_PROJECT_INFO; ///@brief CLIENT_UpdateProjectBackGround 接口输入参数 typedef struct tagNET_IN_UPDATE_PROJECT_BCKGROUND_INFO { DWORD dwSize; // 此结构体大小 char szProjectName[MAX_PATH]; // 计划名,值为""表示更新所有执行计划的背景 char szTaskName[MAX_PATH]; // 任务名,值为""表示更新所有任务的背景 char szDeviceID[MAX_PATH]; // 设备唯一标志,值为""表示更新所有设备的背景 int nChannelID; // 视频通道号,值为-1(此时Device必然不为空)表示更新该设备所有通道的背景 } NET_IN_UPDATE_PROJECT_BACKGROUND_INFO; ///@brief CLIENT_UpdateProjectBackGround 接口输出参数 typedef struct tagNET_OUT_UPDATE_PROJECT_BACKGROUND_INFO { DWORD dwSize; // 此结构体大小 } NET_OUT_UPDATE_PROJECT_BACKGROUND_INFO; ///@brief CLIENT_StopRealTimeProject 接口输入参数 typedef struct tagNET_IN_STOP_RT_PROJECT_INFO { DWORD dwSize; // 此结构体大小 char* pszProjectNames; // 计划名称,以&&作为名字的分割符,示例:Project1&&Project2 }NET_IN_STOP_RT_PROJECT_INFO; ///@brief CLIENT_StopRealTimeProject 接口输出参数 typedef struct tagNET_OUT_STOP_RT_PROJECT_INFO { DWORD dwSize; // 此结构体大小 }NET_OUT_STOP_RT_PROJECT_INFO; #define MAX_VIDEODIAGNOSIS_PROJECT_NAME_LEN 260 // 视频诊断计划名称最大长度 #define MAX_VIDEODIAGNOSIS_TASK_NAME_LEN 260 // 视频诊断任务名称最大长度 ///@brief CLIENT_StartManualDiagnosisProject 接口输入参数 typedef struct tagNET_IN_START_MANUAL_PROJECT_INFO { DWORD dwSize; // 此结构体大小 char szProjectName[MAX_VIDEODIAGNOSIS_PROJECT_NAME_LEN]; // 诊断计划名称 NET_TIME stuStartTime; // 计划预计的开始时间 BOOL bIsCycle; // 任务是否循环 char szTaskName[MAX_VIDEODIAGNOSIS_TASK_NAME_LEN]; // 计划使用的任务名称 } NET_IN_START_MANUAL_PROJECT_INFO; ///@brief CLIENT_StartManualDiagnosisProject 接口输出参数 typedef struct tagNET_OUT_START_MANUAL_PROJECT_INFO { DWORD dwSize; // 此结构体大小 } NET_OUT_START_MANUAL_PROJECT_INFO; ///@brief CLIENT_StopManualDiagnosisProject 接口输入参数 typedef struct tagNET_IN_STOP_MANUAL_PROJECT_INFO { DWORD dwSize; // 此结构体大小 char szProjectName[MAX_VIDEODIAGNOSIS_PROJECT_NAME_LEN]; // 诊断计划名称 } NET_IN_STOP_MANUAL_PROJECT_INFO; ///@brief CLIENT_StopManualDiagnosisProject 接口输出参数 typedef struct tagNET_OUT_STOP_MANUAL_PROJECT_INFO { DWORD dwSize; // 此结构体大小 } NET_OUT_STOP_MANUAL_PROJECT_INFO; ///@brief 车位灯信息 typedef struct tagNET_CARPORTLIGHT_INFO { DWORD dwSize; NET_CARPORTLIGHT_TYPE emType; // 车位灯类型 NET_CARPORTLIGHT_MODE emMode; // 车位灯亮灯方式 }NET_CARPORTLIGHT_INFO; ///@brief 车位灯状态 typedef struct tagNET_CARPORTLIGHT_STATUS { DWORD dwSize; // 此结构体大小 int nLightNum; // 车位灯数 NET_CARPORTLIGHT_INFO stuLights[DH_MAX_CARPORTLIGHT_NUM]; // 车位灯信息,数组中emType不能重复,一个红灯和一个绿灯 int nFiringTime; // 状态启动时间,单位秒 int nHoldTime; // 状态保持时间,单位秒,-1表示无限保持,0表示自行控制 }NET_CARPORTLIGHT_STATUS; ///@brief 接口CLIENT_GetCarPortLightStatus的输入参数 typedef struct tagNET_IN_GET_CARPORTLIGHT_STATUS { DWORD dwSize; // 此结构体大小 int nChannelId; // 通道号 }NET_IN_GET_CARPORTLIGHT_STATUS; ///@brief 接口CLIENT_GetCarPortLightStatus的输出参数 typedef struct tagNET_OUT_GET_CARPORTLIGHT_STATUS { DWORD dwSize; // 此结构体大小 NET_CARPORTLIGHT_STATUS stuLightStatus; // 车位灯状态 }NET_OUT_GET_CARPORTLIGHT_STATUS; ///@brief 接口 CLIENT_SetCarPortLightStatus 的输入参数 typedef struct tagNET_IN_SET_CARPORTLIGHT_STATUS { DWORD dwSize; // 此结构体大小 int nChannelId; NET_CARPORTLIGHT_STATUS stuLightStatus; // 车位灯状态 }NET_IN_SET_CARPORTLIGHT_STATUS; ///@brief 接口 CLIENT_SetCarPortLightStatus 的输出参数 typedef struct tagNET_OUT_SET_CARPORTLIGHT_STATUS { DWORD dwSize; // 此结构体大小 }NET_OUT_SET_CARPORTLIGHT_STATUS; ///@brief 视频完好率监测结果 typedef struct tagNET_VIDEO_AVAILABILITY_DETECTIONRESULT { DWORD dwSize; // 结构体大小 int nSignalDelay; // 信令延时,-1表示检测失败, 单位ms int nStreamDelay; // 视频流延时,-1表示检测失败, 单位ms int nIFrameDelay; // I帧延时,-1表示检测失败 单位ms }NET_VIDEO_AVAILABILITY_DETECTIONRESULT; ///@brief 雪花屏检测 typedef struct tagNET_VIDEO_SNOWFLAKE_DETECTIONRESULT { DWORD dwSize; // 结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间,单位:秒 char szPicUrl[256]; // 异常检测结果图片地址 } NET_VIDEO_SNOWFLAKE_DETECTIONRESULT; ///@brief 视频算法类型检测 typedef struct tagNET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT { DWORD dwSize; // 结构体大小 BOOL bFaceAlgorithm; // 是否满足目标算法条件 int nFaceAlgorithmValue; // 目标算法分值 BOOL bHumanBodyAlgorithm; // 是否满足人体算法条件 int nHumanBodyAlgorithmValue; // 人体算法分值 BOOL bVehicleAlgorithm; // 是否满足车辆算法条件 int nVehicleAlgorithmValue; // 车辆算法分值 BOOL bPlateNumAlgorithm; // 是否满足车牌算法条件 int nPlateNumAlgorithmValue; // 车牌算法分值 } NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT; ///@brief 视频闪频检测 typedef struct tagNET_VIDEO_FILCKERING_DETECTION_RESULT { DWORD dwSize; // 结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间,单位:秒 char szPicUrl[256]; // 异常检测结果图片地址 } NET_VIDEO_FILCKERING_DETECTION_RESULT; ///@brief 视频丢帧检测 typedef struct tagNET_VIDEO_LOSS_FRAME_DETECTION_RESULT { DWORD dwSize; // 结构体大小 int nValue; // 检测结果量化值 NET_STATE_TYPE emState; // 检测结果状态 int nDuration; // 状态持续时间,单位:秒 char szPicUrl[256]; // 异常检测结果图片地址 } NET_VIDEO_LOSS_FRAME_DETECTION_RESULT; ///@brief 结果数据 typedef struct tagNET_DEV_VIDEODIAGNOSIS_MULTI_INFO { DWORD dwSize; // 此结构体大小 NET_VIDEODIAGNOSIS_COMMON_INFO* pstDiagnosisCommonInfo;//视频诊断通用信息 以下结构体指针需要调用者分配 BOOL abDither; // 用于表示此次结果中这个诊断项是否有效 NET_VIDEO_DITHER_DETECTIONRESULT* pstDither; // 视频抖动检测 BOOL abStration; NET_VIDEO_STRIATION_DETECTIONRESULT* pstStration; // 视频条纹检测 BOOL abLoss; NET_VIDEO_LOSS_DETECTIONRESULT* pstLoss; // 视频丢失检测 BOOL abCover; NET_VIDEO_COVER_DETECTIONRESULT* pstCover; // 视频遮挡检测 BOOL abFrozen; NET_VIDEO_FROZEN_DETECTIONRESULT* pstFrozen; // 视频冻结检测 BOOL abBrightness; NET_VIDEO_BRIGHTNESS_DETECTIONRESULT* pstBrightness; // 视频亮度异常检测 BOOL abContrast; NET_VIDEO_CONTRAST_DETECTIONRESULT* pstContrast; // 视频对比度异常检测 BOOL abUnbalance; NET_VIDEO_UNBALANCE_DETECTIONRESULT* pstUnbalance; // 视频偏色检测 BOOL abNoise; NET_VIDEO_NOISE_DETECTIONRESULT* pstNoise; // 视频噪声检测 BOOL abBlur; NET_VIDEO_BLUR_DETECTIONRESULT* pstBlur; // 视频模糊检测 BOOL abSceneChange; NET_VIDEO_SCENECHANGE_DETECTIONRESULT* pstSceneChange; // 视频场景变化检测 BOOL abVideoDelay; NET_VIDEO_DELAY_DETECTIONRESUL* pstVideoDelay; // 视频延迟检测 BOOL abPTZMoving; NET_PTZ_MOVING_DETECTIONRESULT* pstPTZMoving; // 云台操作检测 BOOL abBlackAndWhite; NET_BLACK_WHITE_DETECTIONRESULT* pstBlackAndWhite; // 黑白图像检测 BOOL abDramaticChange; NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT* pstDramaticChange; // 场景剧变检测 BOOL abVideoAvailability; // 是否支持视频完好率监测 NET_VIDEO_AVAILABILITY_DETECTIONRESULT* pstVideoAvailability; // 视频完好率监测结果 BOOL abSnowflake; // 是否支持雪花屏检测 NET_VIDEO_SNOWFLAKE_DETECTIONRESULT* pstSnowflake; // 雪花屏检测 BOOL abAlgorithmType; //是否支持视频算法类型检测结果 NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT* pstAlgorithmType; //视频算法类型检测结果 BOOL abVideoFilckering; //是否支持视频闪频检测 NET_VIDEO_FILCKERING_DETECTION_RESULT* pstVideoFilckering; //视频闪频检测 BOOL abVideoLossFrame; //是否支持视频丢帧检测 NET_VIDEO_LOSS_FRAME_DETECTION_RESULT* pstVideoLossFrame; //视频丢帧检测 }NET_VIDEODIAGNOSIS_RESULT_INFO; ///@brief 接口 CLIENT_DoFindDiagnosisResult 的输出参数 typedef struct tagNET_OUT_DIAGNOSIS_INFO { DWORD dwSize; // 此结构体大小 int nInputNum; // 用户分配的NET_DEV_RESULT_VIDEODIAGNOSIS_INFO个数 int nReturnNum; // 返回结果个数 NET_VIDEODIAGNOSIS_RESULT_INFO* pstDiagnosisResult; // 结果数据 结构体指针需要调用者分配 // 申请内存大小为sizeof(NET_VIDEODIAGNOSIS_RESULT_INFO)*nInputNum }NET_OUT_DIAGNOSIS_INFO; ///////////////////////////// 主从式设备控制模块 ////////////////////////////////////////////////////// ///////////////////////////// CLIENT_OperateMasterSlaveDevice接口参数定义 ///////////////////////////////// #define MASTERSLAVE_CMD_START "masterSlaveTracker.start" // 开启主从式跟踪器工作 #define MASTERSLAVE_CMD_STOP "masterSlaveTracker.stop" // 停止主从式跟踪器工作 #define MASTERSLAVE_CMD_MANUALTRACK "masterSlaveTracker.manualSelectObjectTrack" // 手动选定目标跟踪 #define MASTERSLAVE_CMD_POINTTRACK "masterSlaveTracker.selectPointTrack" // 定点跟踪 #define MASTERSLAVE_CMD_GETCALIBPOINTS "masterSlaveTracker.getCalibratePoints" // 得到所有标定点 #define MASTERSLAVE_CMD_CALIBRATE "masterSlaveTracker.calibrate" // 保存标定点 #define MASTERSLAVE_CMD_ADDCALIBPOINT "masterSlaveTracker.addCalibratePoint" // 增加标定点 #define MASTERSLAVE_CMD_REMOVECALIBPOINT "masterSlaveTracker.removeCalibratePoint" // 删除标定点 #define MASTERSLAVE_CMD_MARKMAXZOOM "masterSlaveTracker.markSceneMaxZoom" // 标定场景最大跟踪倍率, 把当前倍率作为最大倍率 ///@brief 主从式设备点对 typedef struct __NET_MS_PAIRPOINTS { int nStructSize; DH_POINT stMasterPoint; // 主相机标定点,点的坐标归一化到[0,8191]区间 DH_POINT stSlavePoint; // 从相机标定点,点的坐标归一化到[0,8191]区间 }NET_MS_PAIRPOINTS; ///@brief MASTERSLAVE_CMD_START命令的输入结构体 typedef struct __NET_IN_MS_START { int nStructSize; }NET_IN_MS_START; ///@brief MASTERSLAVE_CMD_START命令的输出结构体 typedef struct __NET_OUT_MS_START { int nStructSize; }NET_OUT_MS_START; ///@brief MASTERSLAVE_CMD_STOP命令的输入结构体 typedef struct __NET_IN_MS_STOP { int nStructSize; }NET_IN_MS_STOP; ///@brief MASTERSLAVE_CMD_STOP命令的输出结构体 typedef struct __NET_OUT_MS_STOP { int nStructSize; }NET_OUT_MS_STOP; ///@brief MASTERSLAVE_CMD_MANUALTRACK命令的输入结构体 typedef struct __NET_IN_MS_MANUALTRACK { int nStructSize; DWORD dwObject; // -1 表示整个区域的任意位置物体, >=0表示指定的物体(可以从设备返回智能帧得到) }NET_IN_MS_MANUALTRACK; ///@brief MASTERSLAVE_CMD_MANUALTRACK命令的输出结构体 typedef struct __NET_OUT_MS_MANUALTRACK { int nStructSize; }NET_OUT_MS_MANUALTRACK; ///@brief MASTERSLAVE_CMD_POINTTRACK命令的输入结构体 typedef struct __NET_IN_MS_POINTTRACK { int nStructSize; DH_POINT stTrackerPoint; // 跟踪点,点的坐标归一化到[0,8191]区间 }NET_IN_MS_POINTTRACK; ///@brief MASTERSLAVE_CMD_POINTTRACK命令的输出结构体 typedef struct __NET_OUT_MS_POINTTRACK { int nStructSize; }NET_OUT_MS_POINTTRACK; ///@brief MASTERSLAVE_CMD_GETCALIBPOINTS命令的输入结构体 typedef struct __NET_IN_MS_GETCALIBPOINTS { int nStructSize; }NET_IN_MS_GETCALIBPOINTS; ///@brief MASTERSLAVE_CMD_GETCALIBPOINTS命令的输出结构体 typedef struct __NET_OUT_MS_GETCALIBPOINTS { int nStructSize; int nPointsNum; // 实际标定点数 NET_MS_PAIRPOINTS stPairPoints[MAX_CALIBPOINTS_NUM]; // 标定坐标点组 }NET_OUT_MS_GETCALIBPOINTS; ///@brief MASTERSLAVE_CMD_CALIBRATE命令的输入结构体 typedef struct __NET_IN_MS_CALIBRATE { int nStructSize; }NET_IN_MS_CALIBRATE; ///@brief MASTERSLAVE_CMD_CALIBRATE命令的输出结构体 typedef struct __NET_OUT_MS_CALIBRATE { int nStructSize; }NET_OUT_MS_CALIBRATE; ///@brief MASTERSLAVE_CMD_ADDCALIBPOINT命令的输入结构体 typedef struct __NET_IN_MS_ADDCALIBPOINT { int nStructSize; BOOL bSlavePointEn; // 从相机标定点使能位, TURE设置从相机标定点有效;FASLE则无效, 设备自己获取当前的从相机标定点。 NET_MS_PAIRPOINTS stPairPoints; // 主从相机定标点对 }NET_IN_MS_ADDCALIBPOINT; ///@brief MASTERSLAVE_CMD_ADDCALIBPOINT命令的输出结构体 typedef struct __NET_OUT_MS_ADDCALIBPOINT { int nStructSize; DH_POINT stPoint; // 从标定点 }NET_OUT_MS_ADDCALIBPOINT; ///@brief MASTERSLAVE_CMD_REMOVECALIBPOINT命令的输入结构体 typedef struct __NET_IN_MS_REMOVECALIBPOINT { int nStructSize; DH_POINT stPoint; // 主标定点 }NET_IN_MS_REMOVECALIBPOINT; ///@brief MASTERSLAVE_CMD_REMOVECALIBPOINT命令的输出结构体 typedef struct __NET_OUT_MS_REMOVECALIBPOINT { int nStructSize; }NET_OUT_MS_REMOVECALIBPOINT; ///@brief MASTERSLAVE_CMD_MARKMAXZOOM命令输入结构体 typedef struct __NET_IN_MS_MARKMAXZOOM { int nStructSize; }NET_IN_MS_MARKMAXZOOM; ///@brief MASTERSLAVE_CMD_MARKMAXZOOM命令输出结构体 typedef struct __NET_OUT_MS_MARKMAXZOOM { int nStructSize; }NET_OUT_MS_MARKMAXZOOM; ///////////////////////////// CLIENT_OperateCommDevice 接口参数定义 ///////////////////////////////// #define COMMDEV_GET_EXTERNLDATA "devComm.getExternalData" //获取串口外接数据 用于第三方通用数据 #define MAX_EXTERN_DATA_LEN 2048 ///@brief COMMDEV_GET_EXTERNLDATA 输入参数 typedef struct __COMMDEV_IN_GET_EXTERNDATA { DWORD dwSize; }COMMDEV_IN_GET_EXTERNDATA; ///@brief COMMDEV_GET_EXTERNLDATA 输出参数 typedef struct __COMMDEV_OUT_GET_EXTERNDATA { DWORD dwSize; char szGetData[MAX_EXTERN_DATA_LEN]; //串口外接设备采集数据(数据格式根据项目自定义) }COMMDEV_OUT_GET_EXTERNDATA; ///////////////////////////// CLIENT_OperateVideoAnalyseDevice 接口参数定义 ///////////////////////////////// #define NET_SET_MODULESTATE "devVideoAnalyse.setModuleState" // 设置模块状态 #define NET_TEST_WITH_SCREENPOINTS "devVideoAnalyse.testCalibrateWithScreenPoints" // 根据屏幕坐标测试景深参数,得到的是两点之间的实际距离。在测试之前,需要先完成参数设置。 #define NET_TEST_WITH_METRICLENGTH "devVideoAnalyse.testCalibrateWithMetricLength" // 根据实际长度、起始点及方向点坐标,测试景深参数 #define NET_GET_INTERNALOPTIONS "devVideoAnalyse.getInternalOptions" // 获取内部选项 #define NET_TUNE_INTERNALOPTIONS "devVideoAnalyse.tuneInternalOptions" // 调试内部选项 #define NET_RESET_INTERNALOPTIONS "devVideoAnalyse.resetInternalOptions" // 复位所有调试内部选项 #define NET_SET_PTZ_PRESET_STATUS "devVideoAnalyse.setPtzPresetStatus" // 获取预置点信息 ///@brief 线段类型 typedef enum tagNET_EM_LINETYPE { NET_EM_HORIZONTAL, NET_EM_VERTICAL, }NET_EM_LINETYPE; ///@brief 预置点状态枚举 typedef enum tagEM_DH_PTZ_PRESET_STATUS { EM_DH_PTZ_PRESET_STATUS_UNKNOWN, // 未知 EM_DH_PTZ_PRESET_STATUS_REACH, // 预置点到达 EM_DH_PTZ_PRESET_STATUS_UNREACH, // 预置点未到达 }EM_DH_PTZ_PRESET_STATUS; ///@brief 云台P/T运动状态 typedef enum tagEM_DH_PTZ_PAN_TILT_STATUS { EM_DH_PTZ_PAN_TILT_STATUS_UNKNOWN, // 未知 EM_DH_PTZ_PAN_TILT_STATUS_IDLE, // 空闲状态 EM_DH_PTZ_PAN_TILT_STATUS_MOVING, // 运动状态 }EM_DH_PTZ_PAN_TILT_STATUS; ///@brief 云台定位信息报警 typedef struct { int nChannelID; // 通道号 int nPTZPan; // 云台水平运动位置,有效范围:[0,3600] int nPTZTilt; // 云台垂直运动位置,有效范围:[-1800,1800] int nPTZZoom; // 云台光圈变动位置,有效范围:[0,128] BYTE bState; // 云台运动状态, 0-未知 1-运动 2-空闲 BYTE bAction; // 云台动作,255-未知,0-预置点,1-线扫,2-巡航,3-巡迹,4-水平旋转,5-普通移动,6-巡迹录制,7-全景云台扫描,8-热度图 // 9-精确定位,10-设备校正,11-智能配置,12-云台重启 BYTE bFocusState; // 云台聚焦状态, 0-未知, 1-运动状态, 2-空闲 BYTE bEffectiveInTimeSection; // 在时间段内预置点状态是否有效 // 如果当前上报的预置点是时间段内的预置点,则为1,其他情况为0 int nPtzActionID; // 巡航ID号 DWORD dwPresetID; // 云台所在预置点编号 float fFocusPosition; // 聚焦位置 BYTE bZoomState; // 云台ZOOM状态,0-未知,1-ZOOM,2-空闲 BYTE bReserved[3]; // 对齐 DWORD dwSequence; // 包序号,用于校验是否丢包 DWORD dwUTC; // 对应的UTC(1970-1-1 00:00:00)秒数。 EM_DH_PTZ_PRESET_STATUS emPresetStatus; // 预置点位置 int nZoomValue; // 真实变倍值 当前倍率(扩大100倍表示) NET_PTZSPACE_UNNORMALIZED stuAbsPosition;// 云台方向与放大倍数(扩大100倍表示) // 第一个元素为水平角度,0-36000; // 第二个元素为垂直角度,(-18000)-(18000); // 第三个元素为显示放大倍数,0-MaxZoom*100 int nFocusMapValue; // 聚焦映射值 int nZoomMapValue; // 变倍映射值 EM_DH_PTZ_PAN_TILT_STATUS emPanTiltStatus; //云台P/T运动状态 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[696]; // 保留字段 }DH_PTZ_LOCATION_INFO; ///@brief NET_SET_PTZ_PRESET_STATUS typedef struct __NET_IN_PTZ_PRESET_STATUS { DWORD dwSize; DH_PTZ_LOCATION_INFO stPTZStatus; }NET_IN_PTZ_PRESET_STATUS; ///@brief NET_OUT_PTZ_PRESET_STATUS typedef struct __NET_OUT_PTZ_PRESET_STATUS { DWORD dwSize; }NET_OUT_PTZ_PRESET_STATUS; ///@brief NET_TEST_WITH_SCREENPOINTS typedef struct __NET_IN_CALIBRATE_BY_POINTS { DWORD dwSize; // 此结构体大小 DH_POINT stStartPoint; // 线段起点坐标 点的坐标坐标归一化到[0,8191]区间。 DH_POINT stEndPoint; // 终止点坐标 点的坐标坐标归一化到[0,8191]区间。 NET_EM_LINETYPE emType; // 线段类型 em_Horizontal("Horizontal") 水平线段 em_Vertical("Vertical")垂直线段 }NET_IN_CALIBRATE_BY_POINTS; ///@brief NET_OUT_CALIBRATE_BY_POINTS typedef struct __NET_OUT_CALIBRATE_BY_POINTS { DWORD dwSize; // 此结构体大小 double dlength; // 两点之间的实际长度 单位为米 }NET_OUT_CALIBRATE_BY_POINTS; ///@brief NET_TEST_WITH_METRICLENGTH typedef struct __NET_IN_CALIBRATE_BY_LENGTH { DWORD dwSize; // 此结构体大小 double nLength; // 两点之间的实际长度,米为单位 DH_POINT stStartPoint; // 线段起点坐标,点的坐标坐标归一化到[0,8191]区间。 DH_POINT stDirection; // 线段方向点坐标,只对垂直线段有效。点的坐标坐标归一化到[0,8191]区间。 NET_EM_LINETYPE emType; // 线段类型,em_Horizontal("Horizontal") 水平线段 em_Vertical("Vertical")垂直线段 }NET_IN_CALIBRATE_BY_LENGTH; ///@brief NET_OUT_CALIBRATE_BY_LENGTH typedef struct __NET_OUT_CALIBRATE_BY_LENGTH { DWORD dwSize; // 此结构体大小 DH_POINT stEndPoint; // 线段终点屏幕坐标 点的坐标坐标归一化到[0,8191]区间。 }NET_OUT_CALIBRATE_BY_LENGTH; ///@brief 选项列表 typedef struct __NET_INTERNAL_OPTION { DWORD dwSize; // 此结构体大小 int nIndex; // 选项序号 NET_ARRAY stKey; // 选项名称,包括‘\0’共256字节,加密数据 int nValue; // 选项取值 int nMinValue; // 最小值 int nMaxValue; // 最大值 }NET_INTERNAL_OPTION; ///@brief 调试内部选项 NET_GET_INTERNALOPTIONS typedef struct __NET_IN_GETINTERNAL_OPTIONS { DWORD dwSize; // 此结构体大小 }NET_IN_GETINTERNAL_OPTIONS; ///@brief 调试内部选项 NET_OUT_GETINTERNAL_OPTIONS typedef struct __NET_OUT_GETINTERNAL_OPTIONS { DWORD dwSize; // 此结构体大小 int nTotalOptionNum; // 选项个数 最大值查询能力 int nReturnOptionNum; // 返回的实际选项个数 NET_INTERNAL_OPTION* pstInternalOption; // 选项列表 调用者分配地址 // 由用户申请内存,大小为sizeof(NET_INTERNAL_OPTION)*nTotalOptionNum }NET_OUT_GETINTERNAL_OPTIONS; ///@brief NET_TUNE_INTERNALOPTIONS typedef struct __NET_IN_TUNEINTERNAL_OPTION { DWORD dwSize; // 此结构体大小 int nOptionCount; // 选项个数 NET_INTERNAL_OPTION* pstInternalOption; // 选项列表 能力来体现个数 // 由用户申请内存,大小为sizeof(NET_INTERNAL_OPTION)*nOptionCount }NET_IN_TUNEINTERNAL_OPTION; ///@brief NET_OUT_TUNEINTERNAL_OPTION typedef struct __NET_OUT_TUNEINTERNAL_OPTION { DWORD dwSize; // 此结构体大小 }NET_OUT_TUNEINTERNAL_OPTION; ///@brief NET_RESET_INTERNALOPTIONS typedef struct __NET_IN_RESETINTERNAL_OPTION { DWORD dwSize; // 此结构体大小 }NET_IN_RESETINTERNAL_OPTION; ///@brief NET_OUT_RESETINTERNAL_OPTION typedef struct __NET_OUT_RESETINTERNAL_OPTION { DWORD dwSize; // 此结构体大小 }NET_OUT_RESETINTERNAL_OPTION; ///@brief NET_SET_MODULESTATE typedef enum tagNET_EM_MODULESTATE { NET_EM_MODULESTATE_OK, NET_EM_MODULESTATE_PAUSE, }NET_EM_MODULESTATE; ///@brief NET_IN_SETMODULESTATE typedef struct __NET_IN_SETMODULESTATE { DWORD dwSize; // 此结构体大小 NET_EM_MODULESTATE emState; // 0-正常工作,1-暂停,再次切换到正常后画面可能已经发生变化,需要重建背景。 int nIndex; // 模块编号 -1指所有模块 }NET_IN_SETMODULESTATE; ///@brief NET_OUT_SETMODULESTATE typedef struct __NET_OUT_SETMODULESTATE { DWORD dwSize; // 此结构体大小 }NET_OUT_SETMODULESTATE; /////////////////////////////CLIENT_DeleteDevConfig 接口参数///////////////////////////////// ///@brief 选项 typedef enum tagNET_EM_CONFIGOPTION { NET_EM_CONFIGOPTION_OK, NET_EM_CONFIGOPTION_NEEDRESTART, NET_EM_CONFIGOPTION_NEEDREBOOT=2, NET_EM_CONFIGOPTION_WRITEFILEERROR=4, NET_EM_CONFIGOPTION_CAPSNOTSUPPORT=8, NET_EM_CONFIGOPTION_VALIDATEFAILED=16, }NET_EM_CONFIGOPTION; ///@brief CLIENT_DeleteDevConfig 输入参数 typedef struct tagNET_IN_DELETECFG { DWORD dwSize; // 结构体大小 char* szCommand; // 配置命令 }NET_IN_DELETECFG; ///@brief CLIENT_DeleteDevConfig 输出参数 typedef struct tagNET_OUT_DELETECFG { DWORD dwSize; // 结构体大小 int nError; // 设备返回的错误码 int nRestart; // 设备是否重启 DWORD dwOptionMask; // 选项 具体见枚举NET_EM_CONFIGOPTION }NET_OUT_DELETECFG; /////////////////////////////CLIENT_GetMemberNames 接口参数///////////////////////////////// ///@brief CLIENT_GetMemberNames 输入参数 typedef struct tagNET_IN_MEMBERNAME { DWORD dwSize; // 结构体大小 char* szCommand; // 配置命令 }NET_IN_MEMBERNAME; ///@brief CLIENT_GetMemberNames 输出参数 typedef struct tagNET_OUT_MEMBERNAME { DWORD dwSize; // 结构体大小 int nError; // 设备返回的错误码 int nRestart; // 设备是否重启 int nTotalNameCount; // 名称个数 通过能力集得到,调用者填写 int nRetNameCount; // 返回的实际名称个数 NET_ARRAY* pstNames; // 名称数组 调用者申请内存,个数是nTotalNameCount个 // 由用户申请内存,大小为sizeof(NET_ARRAY)*nTotalNameCount }NET_OUT_MEMBERNAME; ////////////////////////////////视频浓缩相关结构体////////////////////////////////////// ///@brief 标尺类型 typedef enum tagNET_EM_STAFF_TYPE { NET_EM_STAFF_TYPE_ERR, NET_EM_STAFF_TYPE_HORIZONTAL, // "Horizontal" 水平线段 NET_EM_STAFF_TYPE_VERTICAL, // "Vertical" 垂直线段 NET_EM_STAFF_TYPE_ANY, // "Any" 任意线段 NET_EM_STAFF_TYPE_CROSS, // "Cross" 垂直面交线段 }NET_EM_STAFF_TYPE; ///@brief 区域类型 typedef enum tagNET_EM_CALIBRATEAREA_TYPE { NET_EM_CALIBRATEAREA_TYPE_ERR, NET_EM_CALIBRATEAREA_TYPE_GROUD, // "Groud" : 地面,需要N条竖直线段+M条水平线段((N=3,M=1);(N=2,M=2);今后扩展)。 NET_EM_CALIBRATEAREA_TYPE_HORIZONTAL, // "Horizontal" : 水平面,需要水平面上一点到地面点的投影垂直线段。 NET_EM_CALIBRATEAREA_TYPE_VERTICAL, // "Vertical" : 垂直面,需要垂直面与地面的交线。 NET_EM_CALIBRATEAREA_TYPE_ANY, // "Any" 任意平面,N条竖直线段,及每条长度(N=3,及今后扩展)。 }NET_EM_CALIBRATEAREA_TYPE; ///@brief 浓缩后的输出资料子类型 typedef enum tagNET_EM_OUTPUT_SUB_TYPE { NET_EM_OUTPUT_SUB_TYPE_ERR, NET_EM_OUTPUT_SUB_TYPE_NORMAL, // 普通播放速度(父类型为浓缩视频时有效) NET_EM_OUTPUT_SUB_TYPE_SYNOPSIS, // 按浓缩后的播放速度(父类型为浓缩视频时有效),在没有物体时快放,在物体出现时按正常速度播放 }NET_EM_OUTPUT_SUB_TYPE; ///@brief 标尺信息 typedef struct tagNET_STAFF_INFO { DH_POINT stuStartLocation; // 起始坐标点 DH_POINT stuEndLocation; // 终止坐标点 float nLenth; // 实际长度,单位米 NET_EM_STAFF_TYPE emType; // 标尺类型 }NET_STAFF_INFO; ///@brief 标定区域,普通场景使用 typedef struct tagNET_CALIBRATEAREA_INFO { int nLinePoint; // 水平方向标尺线顶点数 DH_POINT stuLine[DH_MAX_POLYLINE_NUM]; // 水平方向标尺线 float fLenth; // 实际长度 DH_POLY_POINTS stuArea; // 区域 int nStaffNum; // 垂直标尺数 NET_STAFF_INFO stuStaffs[DH_MAX_STAFF_NUM]; // 垂直标尺 NET_EM_CALIBRATEAREA_TYPE emType; // 区域类型 }NET_CALIBRATEAREA_INFO; ///@brief 本地文件信息 typedef struct tagNET_LOCALFILE_INFO { DWORD dwSize; char szFilePath[MAX_PATH]; // 文件绝对路径 NET_TIME stuStartTime; // 开始时间(设备本地时间) NET_TIME stuEndTime; // 结束时间(设备本地时间) UINT nFileLength; // 文件大小, 单位: 字节 }NET_LOCALFILE_INFO; ///@brief 远程文件信息 typedef struct tagNET_REMOTEFILE_INFO { DWORD dwSize; char szIP[MAX_PATH]; // 远程设备IP unsigned int nPort; // 远程设备端口 char szName[DH_MAX_NAME_LEN]; // 登陆远程设备用户名 char szPassword[DH_MAX_NAME_LEN]; // 登陆远程设备密码 BYTE byProtocolType; // 远程设备使用的协议类型,2-私有二代,3-私有三代 BYTE byReserved[3]; // 字节对齐 char szFilePath[MAX_PATH]; // 文件绝对路径,byProtocolType为3时有效 int nStartCluster; // 起始簇号,byProtocolType为2时有效 int nDriverNo; // 盘号,byProtocolType为2时有效 NET_TIME stuStartTime; // 开始时间(设备本地时间),优先使用磁盘号和分区号 NET_TIME stuEndTime; // 结束时间(设备本地时间),优先使用磁盘号和分区号 int nChannel; // 录像通道号, 优先使用磁盘号和分区号 NET_STREAM_TYPE emStreamType; // 码流类型, 只支持主码流和辅码流1/ 2 }NET_REMOTEFILE_INFO; ///@brief 文件位置信息 typedef struct tagNET_FILEPATH_INFO { DWORD dwSize; BOOL bFileType; // TRUE: 服务器本地文件; FALSE: 远程设备文件 NET_LOCALFILE_INFO stuLocalFile; // 本地文件信息, bFileType==TRUE有效 NET_REMOTEFILE_INFO stuRemoteFile; // 远程文件信息, bFileType==FALSE有效 }NET_FILEPATH_INFO; ///@brief 全局参数 typedef struct tagNET_GLOBAL_INFO { DWORD dwSize; char szSceneType[DH_MAX_NAME_LEN]; // 应用场景 int nStaffNum; // 标尺数 NET_STAFF_INFO stuStaffs[DH_MAX_STAFF_NUM]; // 标尺 int nCalibrateAreaNum; // 标定区域数 NET_CALIBRATEAREA_INFO stuCalibrateArea[DH_MAX_CALIBRATEBOX_NUM]; // 标定区域(若该字段不存在,则以整幅场景为标定区域) int nJitter; // 摄像机抖动率 : 摄像机抖动率,取值0-100,反应静止摄像机抖动程度,抖动越厉害,值越大。 BOOL bDejitter; // 是否开启去抖动模块 BOOL bSceneTypeEx; // szSceneTypeEx 是否有效 char szSceneTypeEx[128]; // 应用场景扩展字段 }NET_GLOBAL_INFO; ///@brief 模块参数 typedef struct tagNET_MODULE_INFO { DWORD dwSize; // 该结构体大小 BYTE bSensitivity; // 灵敏度,取值1-10,值越小灵敏度越低 BYTE bReserved[3]; int nDetectRegionPoint; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_POLYGON_NUM]; // 检测区域 int nExcludeRegionNum; // 排除区域数 DH_POLY_POINTS stuExcludeRegion[DH_MAX_EXCLUDEREGION_NUM]; // 排除区域 }NET_MODULE_INFO; ///@brief 物体过滤信息 typedef struct tagNET_OBJFILTER_INFO { DWORD dwSize; // 该结构体大小 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szObjectType[DH_MAX_NAME_LEN]; // 物体类型,支持以下: //"Unknown", "Human", "Vehicle", //"Fire", "Smoke", "Plate", "HumanFace", "Container", "Animal", "TrafficLight", "PastePaper", "HumanHead", "Entity" char szObjectSubType[64]; // 物体子类别,根据不同的物体类型,可以取以下子类型: // Vehicle Category:"Unknown" 未知,"Motor" 机动车,"Non-Motor":非机动车,"Bus": 公交车,"Bicycle" 自行车,"Motorcycle":摩托车 // Plate Category:"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,,"SAR" 港澳特区号牌,"Trainning" 教练车号牌 // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌 // "Civilaviation"民航号牌,"Black"黑牌 // "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车 // "MixedNewEnergyLargeCar"混合新能源大车 // HumanFace Category:"Normal" 普通目标,"HideEye" 眼部遮挡,"HideNose" 鼻子遮挡,"HideMouth" 嘴部遮挡 DWORD dwRGBMainColor[DH_MAX_COLOR_NUM]; // 物体主要颜色,物体为人时表示上半身颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000 DWORD dwLowerBodyColor[DH_MAX_COLOR_NUM]; // 物体为人时表示下半身颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000 int nMinSize; // 物体最小尺寸, m int nMaxSize; // 物体最大尺寸, m int nMinSpeed; // 最小速度, km/h int nMaxSpeed; // 最大速度, km/h DWORD dwRGBMainColorNum; // 当物体类型为人,标志dwRGBMainColor有效的颜色种类数 DWORD dwLowerBodyColorNum; // 当物体类型为人且bRGBMainColor==true,标志下半身有效的颜色种类数 BOOL bRGBMainColor; // true-dwRGBMainColor表示上半身颜色,dwLowerBodyColor表示下半身颜色; false-dwRGBMainColor表示人主要颜色,dwLowerBodyColor无效 }NET_OBJFILTER_INFO; ///@brief 规则参数 typedef struct tagNET_VIDEOSYNOPSISRULE_INFO { DWORD dwSize; // 该结构体大小 BYTE byOutputType; // 浓缩后输出资料的类型,1-视频大纲(一组快照);2-浓缩视频;3-既有快照又有视频 BYTE byDensity; // 密度, 1-10, 值越大, 浓缩密度越高 bool bShowTime; // 浓缩结果是否显示时标 bool bShowBox; // 浓缩结果是否显示物标 bool bEnableRecordResult; // 浓缩结果是否记录入数据库 BYTE byTime; // 视频浓缩后时长,单位:分钟 BYTE byReserved[2]; NET_OBJFILTER_INFO stuFilter[MAX_OBJFILTER_NUM]; // 物体过滤信息 DWORD dwObjFilterNum; // 物体过滤信息数目 /* NET_OUT_QUERY_VIDEOSYNOPSIS和TYPE_CB_VIDEOSYNOPSIS_RULE回调解析时, 按照CFG_CMD_ANALYSERULE命令调用dhconfigsdk.dll中接口CLIENT_ParseData解析,得到对应的结构体,这时要先分配足够内存 */ /* NET_IN_ADD_VIDEOSYNOPSIS中,按照CFG_CMD_ANALYSERULE命令调用dhconfigsdk.dll中接口CLIENT_PacketData封装,得到此信息 */ char* szAnalyseRuleInfo; // JSON封装规则信息 int nBufferLen; // TYPE_CB_VIDEOSYNOPSIS_RULE, NET_OUT_QUERY_VIDEOSYNOPSIS用时,申请的szAnalyseRuleInfo长度 BOOL bCustomResolution; // 自定义分辨率使能, TRUE-分辨率由emResolution确定, FALSE-根据原始视频分辨率生产浓缩视频 CAPTURE_SIZE emResolution; // 分辨率, bCustomResolution为TRUE才有效 BOOL bEnableMaxUsedCPU; // 是否最大化占有需求的CPU资源 BOOL bEnableSmoothBorder; // 是否平滑目标边框 NET_EM_OUTPUT_SUB_TYPE emOutputSubType; // 浓缩后输出资料的子类型,详见NET_EM_OUTPUT_SUB_TYPE int nExtractFrameRate; // 浓缩视频的抽帧速率 1-32,值越大,抽帧速率越高,客户端呈现的播放速度越快 // 该字段仅在浓缩后的输出资料子类型(emOutputSubType)是NET_EM_OUTPUT_SUB_TYPE_SYNOPSIS有效 /*视频浓缩额外信息*/ int nSynopsisSpeed; // 浓缩速度域值,共分1~10共十个档位,5表示浓缩后只保留5以上速度的物体。是个相对单位 // 为0时,该字段无效 int nSynopsisSize; // 浓缩尺寸域值,共分1~10共十个档位,3表示浓缩后只保留3以上大小的物体。是个相对单位 // 为0时,该字段无效 BOOL bEnableDirection; // 为True时,对物体运动方向做过滤 // 为False时,不对物体运动方向做过滤, DH_POINT stuSynopsisStartLocation; // 浓缩运动方向,起始坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效 DH_POINT stuSynopsisEndLocation; // 浓缩运动方向,终止坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效 }NET_VIDEOSYNOPSISRULE_INFO; ///@brief 添加浓缩视频任务输入参数 typedef struct tagNET_IN_ADD_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 NET_FILEPATH_INFO* pFilePathInfo; // 文件位置信息,用户分配空间 // 由用户分配内存,大小为sizeof(NET_FILEPATH_INFO)*dwFileCount DWORD dwFileCount; // 有效文件个数 NET_GLOBAL_INFO stuGlobalInfo; // 全局信息 NET_MODULE_INFO stuModuleInfo; // 模块信息 NET_VIDEOSYNOPSISRULE_INFO stuRuleInfo; // 规则信息 unsigned int nWaitTime; // 等待超时时间,单位ms }NET_IN_ADD_VIDEOSYNOPSIS; ///@brief 添加浓缩视频任务输出参数 typedef struct tagNET_OUT_ADD_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 DWORD* pnTaskID; // TaskID数组,用户分配空间.按顺序一一对应添加任务的文件;等于0表示对应任务添加失败 DWORD nTaskIDCount; // TaskID个数 }NET_OUT_ADD_VIDEOSYNOPSIS; ///@brief 浓缩视频预处理任务输入参数 typedef struct tagNET_IN_PRE_HANDLE_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 NET_FILEPATH_INFO* pFilePathInfo; // 文件位置信息,用户分配空间,大小为sizeof(NET_FILEPATH_INFO)*dwFileCount DWORD dwFileCount; // 有效文件个数 unsigned int nWaitTime; // 等待超时时间,单位ms char szTaskName[DH_COMMON_STRING_64];// 浓缩任务名称,可以为空 }NET_IN_PRE_HANDLE_VIDEOSYNOPSIS; ///@brief 浓缩视频预处理任务输出参数 typedef struct tagNET_OUT_PRE_HANDLE_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 DWORD* pnTaskID; // TaskID数组,用户分配空间.按顺序一一对应添加任务的文件;等于0表示对应任务添加失败 // 由用户分配内存,大小为sizeof(DWORD)*nTaskIDCount DWORD nTaskIDCount; // TaskID个数 }NET_OUT_PRE_HANDLE_VIDEOSYNOPSIS; ///@brief 以视频通道为单位执行视频浓缩预处理任务入参 typedef struct tagNET_IN_PRETASK_BYCHANNEL { DWORD dwSize; int nChannelCount; // 下发通道个数 int nChannel[DH_PRETASK_CHANNEL]; // 下发通道 NET_TIME stuStartTime; // 浓缩录像开始时间 NET_TIME stuEndTime; // 浓缩录像结束时间 unsigned int nWaitTime; // 等待超时时间 }NET_IN_PRETASK_BYCHANNEL; ///@brief 以视频通道为单位执行视频浓缩预处理任务出参 typedef struct tagNET_OUT_PRETASK_BYCHANNEL { DWORD dwSize; int nTaskCount; // 需要申请的预处理任务ID个数 int nRealCount; // 实际返回的预处理任务ID个数 DWORD* pnTaskID; // 视频浓缩预处理任务ID, 与通道一一对应,大小为sizeof(DWORD)*nTaskCount // 0表示该任务添加创建失败;>0表示成功 }NET_OUT_PRETASK_BYCHANNEL; ///@brief 获取浓缩任务进度入参 typedef struct tagNET_IN_GET_VIDEOSYNOPSIS_STATE { DWORD dwSize; unsigned int nTaskID; // 视频浓缩任务ID unsigned int nWaitTime; // 等待超时时间 }NET_IN_GET_VIDEOSYNOPSIS_STATE; ///@brief 视频浓缩当前状态 typedef enum tagEM_VIDEOSYNOPSIS_STATE { EM_VIDEOSYNOPSIS_STATE_UNKNOWN, // 未知 EM_VIDEOSYNOPSIS_STATE_SUCESSED, // 浓缩成功 EM_VIDEOSYNOPSIS_STATE_FAILED, // 浓缩失败 EM_VIDEOSYNOPSIS_STATE_PRETASK, // 在addPreTask阶段 EM_VIDEOSYNOPSIS_STATE_SYNO // 在addSynoInfo阶段 }EM_VIDEOSYNOPSIS_STATE; ///@brief 获取浓缩任务进度出参 typedef struct tagNET_OUT_GET_VIDEOSYNOPSIS_STATE { DWORD dwSize; int nProcess; // 单位: %百分数。空闲为-1 EM_VIDEOSYNOPSIS_STATE emState; // 浓缩任务当前状态 }NET_OUT_GET_VIDEOSYNOPSIS_STATE; ///@brief 开始查询智能录像浓缩历史入参 typedef struct tagNET_IN_VIDEOSYNOPSIS_STARTFIND { DWORD dwSize; int nChannelCount; // 视频通道个数 int* pnChannel; // 视频通道号, 大小为sizeof(pnChannel)*nChannelCount; NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 unsigned int nWaitTime; // 等待超时时间 }NET_IN_VIDEOSYNOPSIS_STARTFIND; ///@brief 开始查询智能录像浓缩历史出参 typedef struct tagNET_OUT_VIDEOSYNOPSIS_STARTFIND { DWORD dwSize; int nToken; // 取到的查询令牌 int nTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_VIDEOSYNOPSIS_STARTFIND; ///@brief 获取历史搜索结果信息入参 typedef struct tagNET_IN_VIDEOSYNOPSIS_DOFIND { DWORD dwSize; int nToken; // 查询令牌 int nBeginNumber; // 查询起始序号,表示从nBeginNumber条记录开始,取nCount条记录返回; int nCount; // 每次查询的结果个数 unsigned int nWaitTime; // 等待超时时间 }NET_IN_VIDEOSYNOPSIS_DOFIND; ///@brief 获取历史搜索结果信息 typedef struct tagNET_VIDEOSYNOPSIS_DOFIND_INFO { int nChannel; // 录像通道 NET_TIME stuStartTime; // 原始视频开始时间 NET_TIME stuEndTime; // 原始视频结束时间 int nDisk; // 磁盘号 int nPartition; // 分区号 int nCluster; // 簇号 int nFileLength; // 浓缩视频的时间长度, 单位秒 int nFileSize; // 浓缩视频文件长度, 下载时需要,单位K BOOL bLocked; // 是否被锁定 NET_TIME stuBeginWriteTime; // 浓缩视频文件开始写入的时间 NET_TIME stuEndWriteTime; // 浓缩视频文件结束写入的时间 BYTE byReserved[976]; // 保留字节 }NET_VIDEOSYNOPSIS_DOFIND_INFO; ///@brief 获取历史搜索结果信息出参 typedef struct tagNET_OUT_VIDEOSYNOPSIS_DOFIND { DWORD dwSize; int nMaxFind; // 要查询的最大条数 int nRealFound; // 实际查询到的条数 NET_VIDEOSYNOPSIS_DOFIND_INFO* pstuFindInfo; // 查询信息,由用户申请,大小为sizeof(NET_VIDEOSYNOPSIS_DOFIND_INFO) * nMaxFind }NET_OUT_VIDEOSYNOPSIS_DOFIND; ///@brief 结束浓缩历史查询入参 typedef struct tagNET_IN_VIDEOSYNOPSIS_STOPFIND { DWORD dwSize; int nToken; // 查询令牌 unsigned int nWaitTime; // 等待超时时间 }NET_IN_VIDEOSYNOPSIS_STOPFIND; ///@brief 结束浓缩历史查询出参 typedef struct tagNET_OUT_VIDEOSYNOPSIS_STOPFIND { DWORD dwSize; }NET_OUT_VIDEOSYNOPSIS_STOPFIND; ///@brief 执行浓缩视频任务输入参数 typedef struct tagNET_IN_RUN_VIDEOSYNOPSIS_TASK { DWORD dwSize; // 该结构体大小 DWORD nTaskID; // 任务ID,CLIENT_PreHandleVideoSynopsisTask接口输出函数返回 NET_GLOBAL_INFO stuGlobalInfo; // 全局信息 NET_MODULE_INFO stuModuleInfo; // 模块信息 NET_VIDEOSYNOPSISRULE_INFO stuRuleInfo; // 规则信息 unsigned int nWaitTime; // 等待超时时间,单位ms }NET_IN_RUN_VIDEOSYNOPSIS_TASK; ///@brief 执行浓缩视频任务输出参数 typedef struct tagNET_OUT_RUN_VIDEOSYNOPSIS_TASK { DWORD dwSize; // 该结构体大小 DWORD nPlayID; // 回放ID,等于0表示接口失败,否则传入CLIENT_PlayBackBySynopsisFile接口用于回放视频 DWORD nTime; // 浓缩视频时长,单位:秒 }NET_OUT_RUN_VIDEOSYNOPSIS_TASK; ///@brief 暂停视频浓缩任务输入参数 typedef struct tagNET_IN_PAUSE_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 BOOL bPause; // TRUE-表示暂停任务 FALSE-表示恢复任务 DWORD* pnTaskID; // TaskID数组,用户分配空间,大小为sizeof(DWORD)*nTaskIDCount DWORD nTaskIDCount; // TaskID个数 DWORD nWaitTime; // 等待超时时间,单位ms }NET_IN_PAUSE_VIDEOSYNOPSIS; ///@brief 要移除的任务类型 typedef enum tagNET_SYNOPSIS_REMOVE_TYPE { EM_SYNOPSIS_REMOVE_UNKNOW =0 , // 未知 EM_SYNOPSIS_REMOVE_PRETASK , // 预处理任务 EM_SYNOPSIS_REMOVE_SYNO , // 浓缩任务 }NET_SYNOPSIS_REMOVE_TYPE; ///@brief 移除视频浓缩任务输入参数 typedef struct tagNET_IN_REMOVE_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 DWORD* pnTaskID; // TaskID数组,用户分配空间,大小为sizeof(DWORD)*nTaskIDCount DWORD nTaskIDCount; // TaskID个数 DWORD nWaitTime; // 等待超时时间,单位ms NET_SYNOPSIS_REMOVE_TYPE emRemoveType; // 要移除的任务类型 }NET_IN_REMOVE_VIDEOSYNOPSIS; ///@brief 视频浓缩返回的物体信息 typedef struct tagNET_REAL_SYNOPSIS_OBJECT_INFO { DWORD dwSize; DWORD dwTaskID; // 当前物体对应的任务ID DH_MSG_OBJECT_EX2 stuObjectInfo; // 物体具体信息 }NET_REAL_SYNOPSIS_OBJECT_INFO; ///@brief 视频浓缩进度状态 typedef struct tagNET_REAL_SYNOPSIS_STATE_INFO { DWORD dwSize; DWORD dwTaskID; // 任务ID int nObjectNum; // 目前浓缩过程中已发现的物体数量 int nTaolProgress; // 当前浓缩源(整个过程的,含下载、准备、浓缩)的完成进度,0~100 char szState[DH_MAX_SYNOPSIS_STATE_NAME];// 对应视频浓缩状态,"Downloading"-正在下载","Synopsising"-正在浓缩", // "DownloadFailed"-下载失败","DownloadSucceeded"-下载成功 // "SynopsisFailed"-浓缩失败","Succeeded"-浓缩成功 // "DownloadPause"-下载暂停,"SynopsisPause"-浓缩暂停 int nProgressOfCurrentState; // 当前浓缩步骤对应的完成进度,0~100 char szFailedCode[DH_MAX_STRING_LEN]; // 失败码,szState="SynopsisFailed"有效 // "OutOfMemory" 内存不足; // "TooMany_TargetInVideo" 整个视频目标数过多; // "InvalidFilePointer" 文件指针无效; // "InvalidFilePath" 文件路径无效; // "CreateDirectoryFailed" 创建文件夹路径失败; // "WriteDataFailed" 写Tube中间文件失败 // "DataSizeTooLarge" Tube文件太大 // "Detect_Nothing" 场景中无运动目标 // "OpenDataFailed" 打开中间文件失败 // "InvalidSynopsisBackgroud" 浓缩背景无效 // "ColorRetrieval" 错误的颜色检索配置 // "UnsupportRuleType" 不支持的规则类型 // "RuleNumberExceedLimit" 规则数超限 // "NoFunctionCfgInfo" 指定了相应功能但没有配置信息 // "FunctionNumberExceedLimit" 每条规则的功能数目数量超限 // "PointsExceedLimit" 线或者区域的点数超限 // "BadFunctionType" 错误的功能类型 // "RulePointNumber" 规则点数错误 // "MaskRegionNumberExceedLimit" 屏蔽区域数量超限 // "CameraSceneSwitch" 相机场景切换 // "TooManyTargeInFrame" 单帧中目标数过多 // "InalidSynopsisDesity" 浓缩密度无效 // "ExtrackColorFeatureFailed" 提取颜色特征失败 // "JpegEncodeFrameFailed" Jpeg编码失败 // "JpegParamRestFailed" Jpeg重置编码参数失败 // "JpegDecodeFrameFailed" Jpeg解码失败 // "RetrieveObjectIdInvalid" 检索目标ID无效 // "RetrieveImageInvalid" 检索图像无效 // "NetworkAnomaly" 映射盘网络异常 // "ObjectNumberLimit" 超过分析目标数目限制 // "CreateChannelFailed" 创建通道失败 // "ReadUGFileFailed" 读取UG文件失败 // "GetSynopsisInfoFailed" 获取浓缩视频信息失败 // "ObjectNumberExceedLimit" 场景中目标数目超过限制 // "RebuildBackgroudFailed" 重建背景失败 // "NotExistMiddleFile" 中间文件不存在 // "NotExistSourceFile" 原始文件不存在 // "NotDog" 没有加密狗 // "NotEnoughFreeDisk" 磁盘空间不够 // "StartDecodeFail" 开始解码失败 // "DecodeTimeOut" 解码等待超时 // "EncodeTimeOut" 编码等待超时 // "ExactTimeOut" 提取快照等待超时 // "ReadMidlleFileFail" 读取中间文件失败 // "ExactPictureFail" 提取图片失败 char szPicPath[DH_COMMON_STRING_512]; // 预处理文件提取到的快照 文件路径 // 支持HTTP URL表示 // 支持FTP URL表示 // 支持服务器本地路径 // a)"C:/pic/1.jpg" // b)"/mnt//2010/8/11/dav/15:40:50.jpg" int nMaxTime; // 支持浓缩视频最大时间长度,单位 秒 int nMinTime; // 支持浓缩视频最小时间长度,单位 秒 char szVideoPath[DH_COMMON_STRING_512]; // 浓缩录像路径, 当前面的浓缩状态szState 为Succeeded 时有效 }NET_REAL_SYNOPSIS_STATE_INFO; ///@brief 视频浓缩物体信息实时回调函数 typedef int (CALLBACK *fVideoSynopsisObjData)(LLONG lRealLoadHandle, NET_REAL_SYNOPSIS_OBJECT_INFO* pSynopsisObjectInfo, void* pBuf, int nBufLen, LDWORD dwUser, void* pReserved); ///@brief 视频浓缩进度状态实时回调函数 typedef int (CALLBACK *fVideoSynopsisState)(LLONG lRealLoadHandle, NET_REAL_SYNOPSIS_STATE_INFO* pSynopsisStateInfos, int nInfoCount, LDWORD dwUser, void* pReserved); ///@brief CLIENT_RealLoadObjectData接口参数定义 typedef struct tagNET_IN_REALLOAD_OBJECTDATA { DWORD dwSize; // 结构体大小 int nTaskIDNum; // 任务ID个数 DWORD *pTaskIDs; // 具体任务ID,由用户分配内存,大小为sizeof(DWORD)*nTaskIDNum BOOL bNeedPicFile; // 是否下载对应的图片文件 int nWaitTime; // 等待时间,单位ms fVideoSynopsisObjData cbVideoSynopsisObjData; // 视频浓缩物体信息实时回调函数指针 LDWORD dwUser; }NET_IN_REALLOAD_OBJECTDATA; ///@brief CLIENT_RealLoadObjectData接口参数定义 typedef struct tagNET_OUT_REALLOAD_OBJECTDATA { DWORD dwSize; // 结构体大小 LLONG lRealLoadHandle; // 接口返回的订阅句柄,可唯一标识某个订阅 }NET_OUT_REALLOAD_OBJECTDATA; ///@brief CLIENT_StopLoadObjectData接口参数定义 typedef struct tagNET_IN_STOPLOAD_OBJECTDATA { DWORD dwSize; int nTackIDNum; // 任务ID个数 DWORD *pTaskIDs; // 具体任务ID, 由用户分配内存,大小为sizeof(DWORD)*nTaskIDNum }NET_IN_STOPLOAD_OBJECTDATA; ///@brief CLIENT_RealLoadSynopsisState接口参数定义 typedef struct tagNET_IN_REALLAOD_SYNOPSISSTATE { DWORD dwSize; // 结构体大小 int nTaskIDNum; // 任务ID个数, 0 表示订阅全部 DWORD *pTaskIDs; // 具体任务ID,由用户申请内存,大小为sizeof(DWORD)*nTaskIDNum int nWaitTime; // 等待时间,单位ms fVideoSynopsisState cbVideoSynopsisState; // 视频浓缩物体信息实时回调函数指针 LDWORD dwUser; }NET_IN_REALLAOD_SYNOPSISSTATE; ///@brief CLIENT_RealLoadSynopsisState接口参数定义 typedef struct tagNET_OUT_REALLOAD_SYNOPSISSTATE { DWORD dwSize; // 结构体大小 LLONG lRealLoadHandle; // 接口返回的下载句柄,可唯一标识某个下载 }NET_OUT_REALLOAD_SYNOPSISSTATE; ///@brief CLIENT_StopLoadSynopsisState接口参数定义 typedef struct tagNET_IN_STOPLOAD_SYNOPSISSTATE { DWORD dwSize; int nTackIDNum; // 任务ID个数 DWORD *pTaskIDs; // 具体任务ID,由用户申请内存,大小为sizeof(DWORD)*nTaskIDNum }NET_IN_STOPLOAD_SYNOPSISSTATE; ///@brief 浓缩视频信息的查找类型 typedef enum tagEM_VIDEOSYNOPSIS_QUERY_TYPE { EM_VIDEOSYNOPSIS_TASK, // 任务信息 EM_VIDEOSYNOPSIS_OBJ, // 物体对应的快照 }EM_VIDEOSYNOPSIS_QUERY_TYPE; ///@brief 查询浓缩视频的任务信息的条件 typedef struct tagNET_QUERY_VSTASK_INFO { DWORD dwSize; // 该结构体大小 DWORD dwTaskID; // 该任务ID,为0时表示查询所有任务 }NET_QUERY_VSTASK_INFO; ///@brief 浓缩物体颜色信息, 物体相对于某一颜色的相似度 typedef struct tagNET_VSO_COLORSIMILAR_INFO { int nRed; // 红色相似度, 范围0到100, 0表示不关心该颜色 int nYellow; // 黄色相似度, 范围0到100, 0表示不关心该颜色 int nGreen; // 绿色相似度, 范围0到100, 0表示不关心该颜色 int nCyan; // 青色相似度, 范围0到100, 0表示不关心该颜色 int nBlue; // 蓝色相似度, 范围0到100, 0表示不关心该颜色 int nPurple; // 紫色相似度, 范围0到100, 0表示不关心该颜色 int nBlack; // 黑色相似度, 范围0到100, 0表示不关心该颜色 int nWhite; // 白色相似度, 范围0到100, 0表示不关心该颜色 BYTE byReserved[512]; // 保留字节 } NET_VSO_COLORSIMILAR_INFO; ///@brief 查询浓缩视频任务中物体信息的条件 typedef struct tagNET_QUERY_VSOBJECT_INFO { DWORD dwSize; // 该结构体大小 DWORD* pdwTaskID; // 物体所在任务的ID,为-1表示查询所有任务 DWORD dwTaskIDCount; // 有效的任务数目 DH_MSG_OBJECT stuObjInfo; // 物体信息,objectID为非0时表示查询该任务中所有物体 int nSpeed; // 物体速度, 单位为km/h, -1表示不关心速度 int nDirection; // 目标方向, 单位度, 范围为-1到360, 12点钟方向为0, 顺时针旋转, -1表示不关心方向 NET_TIME_EX stuStartTime; // 开始时间(设备本地时间) NET_TIME_EX stuEndTime; // 结束时间(设备本地时间) NET_VSO_COLORSIMILAR_INFO stuColorSimilarInfo; // 浓缩物体颜色信息, 物体相对于某一颜色的相似度 }NET_QUERY_VSOBJECT_INFO; ///@brief --CLIENT_QueryVideoSynopsisInfo接口输入参数定义 typedef struct tagNET_IN_QUERY_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 EM_VIDEOSYNOPSIS_QUERY_TYPE emQueryType; // 查找类型 DWORD dwCount; // 查询的条数 DWORD dwBeginNumber; // 查询起始序号 void* pQueryInfo; // 查询条件信息,用户分配空间; // 如果emQueryType==EM_VIDEOSYNOPSIS_TASK,对应NET_QUERY_VSTASK_INFO,大小为sizeof(NET_QUERY_VSTASK_INFO)*dwCount // 如果emQueryType==EM_VIDEOSYNOPSIS_OBJ,对应NET_QUERY_VSOBJECT_INFO,大小为sizeof(NET_QUERY_VSOBJECT_INFO)*dwCount DWORD dwWaitTime; // 等待超时时间,单位ms }NET_IN_QUERY_VIDEOSYNOPSIS; ///@brief 查询到的每个浓缩视频任务的信息 typedef struct tagNET_VSTASK_INFO { DWORD dwSize; // 该结构体大小 DWORD dwTaskID; // 任务ID NET_MODULE_INFO stuModuleInfo; // 模块信息 NET_VIDEOSYNOPSISRULE_INFO stuRuleInfo; // 任务的规则信息 NET_GLOBAL_INFO stuGlobalInfo; // 全局参数 NET_TIME stuCreateTime; // 任务的创建时间 char szCurrState[DH_MAX_SYNOPSIS_STATE_NAME]; // 当前视频浓缩状态,"Downloading"-正在下载","Synopsising"-正在浓缩", // "DownloadFailed"-下载失败","DownloadSucceeded"-下载成功 // "SynopsisFailed"-浓缩失败","Succeeded"-浓缩成功 // "DownloadPause"-下载暂停,"SynopsisPause"-浓缩暂停 char szCreateUser[DH_MAX_NAME_LEN]; // 创建任务的用户 int nProgressOfCurrentState; // 当前浓缩步骤对应的完成进度,0~100 char szLocalFilePath[MAX_PATH]; // 本地文件路径或远端视频源文件下载后在本地的路径 int nObjectNum; // 目前浓缩过程中已发现的物体数量 NET_FILEPATH_INFO stuVideoSourceFilePath; // 源视频文件路径 NET_FILEPATH_INFO stuSynopsisVideoFilePath; // 浓缩视频文件路径 char szFailedCode[DH_MAX_STRING_LEN]; // 浓缩视频失败错误码,szCurrState为"SynopsisFailed"时有效 // "OutOfMemory" 内存不足; // "TooMany_TargetInVideo" 整个视频目标数过多; // "InvalidFilePointer" 文件指针无效; // "InvalidFilePath" 文件路径无效; // "CreateDirectoryFailed" 创建文件夹路径失败; // "WriteDataFailed" 写Tube中间文件失败 // "DataSizeTooLarge" Tube文件太大 // "Detect_Nothing" 场景中无运动目标 // "OpenDataFailed" 打开中间文件失败 // "InvalidSynopsisBackgroud" 浓缩背景无效 // "ColorRetrieval" 错误的颜色检索配置 // "UnsupportRuleType" 不支持的规则类型 // "RuleNumberExceedLimit" 规则数超限 // "NoFunctionCfgInfo" 指定了相应功能但没有配置信息 // "FunctionNumberExceedLimit" 每条规则的功能数目数量超限 // "PointsExceedLimit" 线或者区域的点数超限 // "BadFunctionType" 错误的功能类型 // "RulePointNumber" 规则点数错误 // "MaskRegionNumberExceedLimit" 屏蔽区域数量超限 // "CameraSceneSwitch" 相机场景切换 // "TooManyTargeInFrame" 单帧中目标数过多 // "InalidSynopsisDesity" 浓缩密度无效 // "ExtrackColorFeatureFailed" 提取颜色特征失败 // "JpegEncodeFrameFailed" Jpeg编码失败 // "JpegParamRestFailed" Jpeg重置编码参数失败 // "JpegDecodeFrameFailed" Jpeg解码失败 // "RetrieveObjectIdInvalid" 检索目标ID无效 // "RetrieveImageInvalid" 检索图像无效 // "NetworkAnomaly" 映射盘网络异常 // "ObjectNumberLimit" 超过分析目标数目限制 // "CreateChannelFailed" 创建通道失败 // "ReadUGFileFailed" 读取UG文件失败 // "GetSynopsisInfoFailed" 获取浓缩视频信息失败 // "ObjectNumberExceedLimit" 场景中目标数目超过限制 // "RebuildBackgroudFailed" 重建背景失败 // "NotExistMiddleFile" 中间文件不存在 // "NotExistSourceFile" 原始文件不存在 // "NotDog" 没有加密狗 // "NotEnoughFreeDisk" 磁盘空间不够 // "StartDecodeFail" 开始解码失败 // "DecodeTimeOut" 解码等待超时 // "EncodeTimeOut" 编码等待超时 // "ExactTimeOut" 提取快照等待超时 // "ReadMidlleFileFail" 读取中间文件失败 // "ExactPictureFail" 提取图片失败 char szTaskName[DH_COMMON_STRING_64]; // 浓缩任务名称 }NET_VSTASK_INFO; ///@brief 浓缩视频任务中每个物体信息 typedef struct tagNET_VSOBJECT_INFO { DWORD dwSize; // 该结构体大小 DWORD dwTaskID; // 物体对应任务ID DH_MSG_OBJECT stuObjInfo; // 物体信息,建议使用stuObjInfoEx NET_FILEPATH_INFO stuFilePathInfo; // 物体对应的文件信息 DWORD dwFileLength; // 快照文件的字节数大小 int nDirection; // 目标方向, 单位度, 范围有效值[0,360], -1表示不关心方向, 12点钟方向为0, 顺时针旋转 DH_MSG_OBJECT_EX2 stuObjInfoEx; // 物体信息扩展 }NET_VSOBJECT_INFO; ///@brief --CLIENT_QueryVideoSynopsisInfo接口输出参数定义 typedef struct tagNET_OUT_QUERY_VIDEOSYNOPSIS { DWORD dwSize; // 该结构体大小 DWORD dwTotalCount; // 符合此次查询条件的结果总条数 DWORD dwFoundCount; // 本次查询返回的条数 void* pResult; // 返回的信息,用户分配空间 // 如果emQueryType==EM_VIDEOSYNOPSIS_TASK,对应NET_VSTASK_INFO,大小为sizeof(NET_VSTASK_INFO)*dwMaxCount // 如果emQueryType==EM_VIDEOSYNOPSIS_OBJ,对应NET_VSOBJECT_INFO,大小为sizeof(NET_VSOBJECT_INFO)*dwMaxCount DWORD dwMaxCount; // 用户希望的结果的个数 }NET_OUT_QUERY_VIDEOSYNOPSIS; ///@brief CLIENT_FindSynopsisFile接口参数定义 ///@brief 浓缩相关文件查询类型 typedef enum tagNET_EM_QUERY_SYNOPSIS_FILE { DH_FILE_QUERY_VIDEO, // 普通录像文件信息,对应查询结构体:NET_SYNOPSIS_QUERY_VIDEO_PARAM, 返回结果结构体:NET_SYNOPSISFILE_VIDEO_INFO DH_FILE_QUERY_SYNOPSISVIDEO, // 浓缩视频信息, 对应查询结构体:NET_QUERY_SYNOPSISVIDEO_PARAM,返回结果结构体:NET_QUERY_SYNOPSISVIDEO_INFO }NET_EM_QUERY_SYNOPSIS_FILE; ///@brief 查询条件 typedef struct __NET_SYNOPSIS_QUERY_VIDEO_PARAM { DWORD dwSize; DWORD dwQueryMask; // 查询类型掩码, 按照从低到高位,第一位按时间段、第二位按文件路径 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szFilePath[DH_MAX_SYNOPSIS_QUERY_FILE_COUNT][MAX_PATH]; // 待查询文件的绝对路径 DWORD dwFileCount; // 待查询文件的个数 }NET_SYNOPSIS_QUERY_VIDEO_PARAM; ///@brief 具体浓缩任务信息 typedef struct { DWORD dwSize; int nTaskId; // 任务ID DWORD dwOutPutTypeMask; // 当前任务的输出类型,第1位.视频大纲(一组快照);第2位浓缩视频 char szCurrentState[DH_MAX_SYNOPSIS_STATE_NAME]; // 当前浓缩状态 }NET_VIDEOSYNOPSIS_TASK_INFO; ///@brief DH_FILE_QUERY_VIDEO 返回的录像文件信息 typedef struct { DWORD dwSize; unsigned int nchannelId; // 通道号 char szFilePath[MAX_PATH]; // 文件路径 unsigned int nFileLenth; // 文件长度,字节为单位,该字段废弃,请使用nFileLengthEx NET_TIME stuStarttime; // 开始时间 NET_TIME stuEndtime; // 结束时间 unsigned int nWorkDirSN; // 工作目录编号 unsigned int nCluster; // 簇号 BYTE bHint; // 文件定位索引 BYTE bDriveNo; // 磁盘号 BYTE bReserved[18]; // 保留字段 int nTaskInfoNum; // 录像文件对应的浓缩任务个数 NET_VIDEOSYNOPSIS_TASK_INFO stuTaskInfo[16]; // 具体浓缩任务信息 /*频浓缩文件相关信息*/ char szSynopsisPicPath[DH_COMMON_STRING_512]; // 预处理文件提取到的快照 文件路径 // 支持HTTP URL表示 // 支持FTP URL表示 // 支持服务器本地路径 // a)"C:/pic/1.jpg" // b)"/mnt//2010/8/11/dav/15:40:50.jpg" int nSynopsisMaxTime; //支持浓缩视频最大时间长度,单位 秒 int nSynopsisMinTime; //支持浓缩视频最小时间长度,单位 秒 INT64 nFileLengthEx; //文件长度扩展,支持文件长度大于4G,单位字节 }NET_SYNOPSISFILE_VIDEO_INFO; ///@brief DH_FILE_QUERY_SYNOPSISVIDEO 浓缩视频文件查询参数 typedef struct __NET_QUERY_SYNOPSISVIDEO_PARAM { DWORD dwSize; int nTaskID; // 任务ID }NET_QUERY_SYNOPSISVIDEO_PARAM; ///@brief DH_FILE_QUERY_SYNOPSISVIDEO浓缩视频查询结果 typedef struct __NET_QUERY_SYNOPSISVIDEO_INFO { DWORD dwSize; char szFilePath[MAX_PATH]; // 文件路径 unsigned int nFileLenth; // 文件长度,该字段废弃,请使用nFileLengthEx int nDurationTime; // 持续时间,单位s INT64 nFileLengthEx; // 文件长度扩展,支持文件长度大于4G,单位字节 }NET_QUERY_SYNOPSISVIDEO_INFO; ///@brief CLIENT_FindSynopsisFile 接口参数 typedef struct tagNET_IN_FIND_SYNOPSISFILE { DWORD dwSize; NET_EM_QUERY_SYNOPSIS_FILE emQueryType; // 查询类型 void* pQueryCondition; // 查询条件,由用户分配内存 // 若查询类型为DH_FILE_QUERY_VIDEO,对应查询结构体:NET_SYNOPSIS_QUERY_VIDEO_PARAM,申请大小为sizeof(NET_SYNOPSIS_QUERY_VIDEO_PARAM) // 若查询类型为DH_FILE_QUERY_SYNOPSISVIDEO,对应查询结构体:NET_QUERY_SYNOPSISVIDEO_PARAM,申请大小为sizeof(NET_QUERY_SYNOPSISVIDEO_PARAM) int nWaitTime; // 等待超时时间,单位ms }NET_IN_FIND_SYNOPSISFILE; ///@brief CLIENT_FindSynopsisFile 接口参数 typedef struct tagNET_OUT_FIND_SYNOPSISFILE { DWORD dwSize; LLONG lFindHandle; // 查询句柄 }NET_OUT_FIND_SYNOPSISFILE; ///@brief CLIENT_FindNextSynopsisFile 接口参数 typedef struct tagNET_IN_FINDNEXT_SYNOPSISFILE { DWORD dwSize; int nFileCount; // 待查询的文件条数 NET_EM_QUERY_SYNOPSIS_FILE emQueryType; // 查询类型 void* pSynopsisFileInfo; // 文件信息存放缓冲,由用户申请内存,大小为nMaxlen int nMaxlen; // 缓冲区大小 int nWaitTime; // 等待超时时间,单位ms }NET_IN_FINDNEXT_SYNOPSISFILE; ///@brief CLIENT_FindNextSynopsisFile 接口参数 typedef struct tagNET_OUT_FINDNEXT_SYNOPSISFILE { DWORD dwSize; int nRetFileCount; // 接口实际返回的信息条数,返回值dwSize == nBufLen typedef void (CALLBACK *fAddFileStateCB) (LLONG lLoginID, LLONG lAttachHandle, NET_CB_ADDFILESTATE* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttacAddFileState()接口输入参数 typedef struct tagNET_IN_ADDFILE_STATE { DWORD dwSize; fAddFileStateCB cbAttachState; // 监听增加文件状态回调 LDWORD dwUser; // 用户数据 }NET_IN_ADDFILE_STATE; ///@brief CLIENT_AttacAddFileState()接口输入参数 typedef struct tagNET_OUT_ADDFILE_STATE { DWORD dwSize; }NET_OUT_ADDFILE_STATE; ///////////////////////////////目标识别模块相关结构体/////////////////////////////////////// ///@brief 人员唯一标识符 typedef struct tagNET_UID_CHAR { char szUID[DH_MAX_PERSON_ID_LEN]; //UID内容 }NET_UID_CHAR; ///@brief 人员唯一标识符 typedef struct tagNET_UUID_CHAR { char szUUID[DH_MAX_PERSON_ID_LEN]; //UUID内容 }NET_UUID_CHAR; ///@brief CLIENT_OperateFaceRecognitionDB接口输入参数 typedef struct __NET_IN_OPERATE_FACERECONGNITIONDB { DWORD dwSize; EM_OPERATE_FACERECONGNITIONDB_TYPE emOperateType; // 操作类型 FACERECOGNITION_PERSON_INFO stPersonInfo; // 人员信息 /*emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用,stPeronInfo字段无效*/ DWORD nUIDNum; //UID个数 NET_UID_CHAR *stuUIDs; //人员唯一标识符,首次由服务端生成,区别于ID字段 // 由用户申请内存,大小为sizeof(NET_UID_CHAR)*nUIDNum /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 BOOL bUsePersonInfoEx; // 使用人员扩展信息 FACERECOGNITION_PERSON_INFOEX stPersonInfoEx; // 人员信息扩展 /*emOperateType操作类型为NET_FACERECONGNITIONDB_DELETE_BY_UUID时使用,stPeronInfo字段无效*/ DWORD nUUIDNum; //UUID个数 NET_UUID_CHAR *stuUUIDs; //人员唯一标识符,由平台端下发,区别于UID字段 // 由用户申请内存,大小为sizeof(NET_UUID_CHAR)*nUUIDNum }NET_IN_OPERATE_FACERECONGNITIONDB; ///@brief 错误代码,emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用 typedef enum tagEM_ERRORCODE_TYPE { EM_ERRORCODE_TYPE_UNKNOWN = -1, // 未知错误 EM_ERRORCODE_TYPE_SUCCESS, // 成功 EM_ERRORCODE_TYPE_PERSON_NOT_EXIST, // 人员不存在 EM_ERRORCODE_TYPE_DATABASE_ERROR, // 数据库操作失败 } EM_ERRORCODE_TYPE; ///@brief CLIENT_OperateFaceRecognitionDB接口输出参数 typedef struct __NET_OUT_OPERATE_FACERECONGNITIONDB { DWORD dwSize; char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符, 只有在操作类型为NET_FACERECONGNITIONDB_ADD时有效 /*emOperateType操作类型为NET_FACERECONGNITIONDB_DELETE_BY_UID, NET_FACERECONGNITIONDB_DELETE_BY_UUID时使用*/ int nErrorCodeNum; // 错误码个数 EM_ERRORCODE_TYPE emErrorCodes[MAX_ERRORCODE_NUM]; // 错误码 /* emOperateType操作类型为NET_FACERECONGNITIONDB_DELETE_BY_UID, NET_FACERECONGNITIONDB_DELETE_BY_UUID时使用*/ }NET_OUT_OPERATE_FACERECONGNITIONDB; ///@brief 目标导入的状态 typedef enum tagEM_FACE_APPEND_STATE { EM_FACE_APPEND_STATE_UNKNOWN, //未知 EM_FACE_APPEND_STATE_START, //开始导入 EM_FACE_APPEND_STATE_RUN, //正在导入 EM_FACE_APPEND_STATE_STOP, //导入结束 EM_FACE_APPEND_STATE_CANCLE, //导入取消 }EM_FACE_APPEND_STATE; ///@brief 扩展信息 typedef struct tagNET_MULTI_APPEND_EXTENDED_INFO { UINT nToken; // 该次目标导入的token值 EM_FACE_APPEND_STATE emState; // 目标导入状态 char szResvered[248]; // 保留字节 }NET_MULTI_APPEND_EXTENDED_INFO; ////@brief CLIENT_BatchAppendFaceRecognition 接口输入参数 typedef struct tagNET_IN_BATCH_APPEND_FACERECONGNITION { DWORD dwSize; // 结构体大小 UINT nPersonNum; // 需要添加的人员数量 FACERECOGNITION_PERSON_INFOEX *pstPersonInfo; // 人员信息,内存由用户申请,大小为nPersonNum * sizeof(FACERECOGNITION_PERSON_INFOEX) /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 UINT nBufferLen; // 缓冲数据长度 BYTE bReserved[4]; // 字节对齐 NET_MULTI_APPEND_EXTENDED_INFO stuInfo; // 扩展信息 } NET_IN_BATCH_APPEND_FACERECONGNITION; ///@brief 批量添加人员结果信息 typedef struct tagNET_BATCH_APPEND_PERSON_RESULT { UINT nUID; // 人员UID DWORD dwErrorCode; // 错误码信息 char szUID2[64]; // 添加人员UID, 根据UIDType指定UID使用字段 BYTE bReserved[448]; // 保留字段 } NET_BATCH_APPEND_PERSON_RESULT; ///@brief CLIENT_BatchAppendFaceRecognition 接口输出参数 typedef struct tagNET_OUT_BATCH_APPEND_FACERECONGNITION { DWORD dwSize; // 结构体大小 UINT nResultNum; // 批量添加结果个数,由用户指定,数值与NET_IN_BATCH_APPEND_FACERECONGNITION中的nPersonNum一致 NET_BATCH_APPEND_PERSON_RESULT *pstResultInfo; // 批量添加结果信息 UINT nUIDType; // 指定NET_BATCH_APPEND_PERSON_RESULT中的UID使用字段,不存在本字段或值为0则使用UID字段,若值为1则使用UID2字段 } NET_OUT_BATCH_APPEND_FACERECONGNITION; ///@brief 以图搜图查询模式 typedef enum tagEM_FINDPIC_QUERY_MODE { EM_FINDPIC_QUERY_UNKNOWN, // 未知 EM_FINDPIC_QUERY_PASSIVE, // 被动查询 EM_FINDPIC_QUERY_ACTIVE, // 主动推送 } EM_FINDPIC_QUERY_MODE; ///@brief 以图搜图结果上报排序方式 typedef enum tagEM_FINDPIC_QUERY_ORDERED { EM_FINDPIC_QUERY_BY_SIMILARITY, // 按相似度从高到底 EM_FINDPIC_QUERY_BY_TIME_FORWARD, // 按时间正序 EM_FINDPIC_QUERY_BY_TIME_REVERSE, // 按时间倒序 } EM_FINDPIC_QUERY_ORDERED; ///@brief 目标匹配选项 typedef struct __NET_FACE_MATCH_OPTIONS { DWORD dwSize; unsigned int nMatchImportant; // 人员重要等级 1~10,数值越高越重要,(查询重要等级大于等于此等级的人员) EM_FACE_COMPARE_MODE emMode; // 目标比对模式,详见EM_FACE_COMPARE_MODE int nAreaNum; // 目标区域个数 EM_FACE_AREA_TYPE szAreas[MAX_FACE_AREA_NUM]; // 目标区域组合,emMode为NET_FACE_COMPARE_MODE_AREA时有效 int nAccuracy; // 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1 表示检测速度优先,最大值为10表示检测精度优先。 暂时只对目标检测有效) int nSimilarity; // 相似度(必须大于该相识度才报告;百分比表示,1~100) int nMaxCandidate; // 报告的最大候选个数(根据相似度进行排序,取相似度最大的候选人数报告) EM_FINDPIC_QUERY_MODE emQueryMode; // 以图搜图查询模式 EM_FINDPIC_QUERY_ORDERED emOrdered; // 以图搜图结果上报排序方式 }NET_FACE_MATCH_OPTIONS; ///@brief 查询过滤条件 typedef struct __NET_FACE_FILTER_CONDTION { DWORD dwSize; NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 char szMachineAddress[MAX_PATH]; // 地点,支持模糊匹配 int nRangeNum; // 实际数据库个数 BYTE szRange[MAX_FACE_DB_NUM]; // 待查询数据库类型,详见 EM_FACE_DB_TYPE EM_FACERECOGNITION_FACE_TYPE emFaceType; // 待查询目标类型,详见 EM_FACERECOGNITION int nGroupIdNum; // 人员组数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID NET_TIME stBirthdayRangeStart; // 生日起始时间 NET_TIME stBirthdayRangeEnd; // 生日结束时间 BYTE byAge[MAX_AGE_NUM]; // 年龄区间,当byAge[0]=0与byAge[1]=0时,表示查询全年龄 BYTE byReserved[2]; // 保留字节对齐 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion[MAX_EMOTION_NUM]; // 表情条件 int nEmotionNum; // 表情条件的个数 int nUIDNum; // 人员唯一标识数 char szUIDs[64][32]; // 人员唯一标识列表 int nUUIDNum; // 平台端人员唯一标识数 char szUUIDs[64][32]; // 平台端人员唯一标识列表,根据faceRecognitionServer.getCaps获取到的能力是否存在字段SupportIDFromServer且值为true时有效 }NET_FACE_FILTER_CONDTION; #define MAX_SMALLPIC_NUM 32 // 最大小图张数 ///@brief CLIENT_StartFindFaceRecognition接口输入参数 typedef struct __NET_IN_STARTFIND_FACERECONGNITION { DWORD dwSize; BOOL bPersonEnable; // 人员信息查询条件是否有效 FACERECOGNITION_PERSON_INFO stPerson; // 人员信息查询条件 NET_FACE_MATCH_OPTIONS stMatchOptions; // 目标匹配选项 NET_FACE_FILTER_CONDTION stFilterInfo; // 查询过滤条件 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 int nChannelID; // 通道号 BOOL bPersonExEnable; // 人员信息查询条件是否有效, 并使用扩展结构体 FACERECOGNITION_PERSON_INFOEX stPersonInfoEx; // 人员信息扩展 int nSmallPicIDNum; // 小图ID数量 int nSmallPicID[MAX_SMALLPIC_NUM]; // 小图ID EM_OBJECT_TYPE emObjectType; // 搜索的目标类型 char szChannel[DH_COMMON_STRING_32]; // 通道号(定制使用) }NET_IN_STARTFIND_FACERECONGNITION; ///@brief CLIENT_StartFindFaceRecognition接口输出参数 typedef struct __NET_OUT_STARTFIND_FACERECONGNITION { DWORD dwSize; int nTotalCount; // 返回的符合查询条件的记录个数 // -1表示总条数未生成,要推迟获取 // 使用CLIENT_AttachFaceFindState接口状态 LLONG lFindHandle; // 查询句柄 int nToken; // 获取到的查询令牌 }NET_OUT_STARTFIND_FACERECONGNITION; ///@brief CLIENT_StartMultiFindFaceRecognition 接口输入参数 typedef struct tagNET_IN_STARTMULTIFIND_FACERECONGNITION { DWORD dwSize; int* pChannelID; // 通道号 int nChannelCount; // 通道申请个数 BOOL bPersonEnable; // 人员信息查询条件是否有效 FACERECOGNITION_PERSON_INFO stPerson; // 人员信息查询条件 NET_FACE_MATCH_OPTIONS stMatchOptions; // 目标匹配选项 NET_FACE_FILTER_CONDTION stFilterInfo; // 查询过滤条件 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 BOOL bPersonExEnable; // 人员信息查询条件是否有效, 并使用人员信息扩展结构体 FACERECOGNITION_PERSON_INFOEX stPersonInfoEx; // 人员信息扩展 EM_OBJECT_TYPE emObjectType; // 搜索的目标类型 int nChannelNum; // 通道有效个数 char szChannelString[512][32]; // 通道号(定制使用) int nProcessType; // 以图搜图类型, -1: 未知, 0: 特征值搜索, 1: SMD属性特征搜索 }NET_IN_STARTMULTIFIND_FACERECONGNITION; ///@brief CLIENT_StartMultiFindFaceRecognition 接口输出参数 typedef struct tagNET_OUT_STARTMULTIFIND_FACERECONGNITION { DWORD dwSize; int nTotalCount; // 返回的符合查询条件的记录个数 // -1表示总条数未生成,要推迟获取 // 使用CLIENT_AttachFaceFindState接口状态 LLONG lFindHandle; // 查询句柄 int nToken; // 获取到的查询令牌 }NET_OUT_STARTMULTIFIND_FACERECONGNITION; ///@brief CLIENT_StartMultiPersonFindFaceR 接口输入参数 typedef struct tagNET_IN_STARTMULTIPERSONFIND_FACER { DWORD dwSize; // 结构体大小 NET_FACE_FILTER_CONDTION stFilterInfo; // 查询过滤条件 int* pChannelID; // 通道号,过滤条件szRange为NET_FACE_DB_TYPE_HISTORY有效,用户分配内存 int nChannelCount; // 通道申请个数 int nTaskIdCount; // 任务ID数量 int* pTaskId; // 任务ID,过滤条件szRange为NET_FACE_DB_TYPE_HISTORY有效,和channel字段二选一,用户分配内存 FACERECOGNITION_PERSON_INFOEX stPerson; // 人员信息查询条件,和smallID二选一 NET_FACE_MATCH_OPTIONS stMatchOptions; // 目标匹配选项 int nSmallPicIDNum; // 小图ID数量 int nSmallPicID[32]; // 小图ID EM_OBJECT_TYPE emObjectType; // 搜索的目标类型 /* 图片二进制数据 */ int nBufferLen; // 缓冲数据长度 char *pBuffer; // 缓冲地址 }NET_IN_STARTMULTIPERSONFIND_FACER; ///@brief CLIENT_StartMultiPersonFindFaceR 接口输出参数 typedef struct tagNET_OUT_STARTMULTIPERSONFIND_FACER { DWORD dwSize; // 结构体大小 int nTotalCount; // 返回的符合查询条件的记录个数 // -1表示总条数未生成,要推迟获取 // 使用CLIENT_AttachFaceFindState接口状态 LLONG lFindHandle; // 查询句柄 UINT nToken; // 获取到的查询令牌 }NET_OUT_STARTMULTIPERSONFIND_FACER; ///@brief CLIENT_FaceRServerGetDetectToken 接口输入参数 typedef struct tagNET_IN_FACERSERVER_GETDETEVTTOKEN { DWORD dwSize; // 结构体大小 }NET_IN_FACERSERVER_GETDETEVTTOKEN; ///@brief CLIENT_FaceRServerGetDetectToken 接口输出参数 typedef struct tagNET_OUT_FACERSERVER_GETDETEVTTOKEN { DWORD dwSize; // 结构体大小 UINT nToken; // 获取到的查询令牌 }NET_OUT_FACERSERVER_GETDETEVTTOKEN; ///@brief 获取目标检测令牌 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数 ///@param[out]pOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FaceRServerGetDetectToken(LLONG lLoginID, NET_IN_FACERSERVER_GETDETEVTTOKEN *pInParam, NET_OUT_FACERSERVER_GETDETEVTTOKEN *pOutParam, int nWaitTime); ///@brief CLIENT_StartMultiFindFaceRecognitionRecord 输入参数(对应的开始识别目标多通道查询) typedef struct tagNET_IN_STARTMULTIFIND_FACERECONGNITIONRECORD { DWORD dwSize; // 结构体大小 /* 查询过滤条件 */ NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 char szMachineAddress[MAX_PATH]; // 地点,支持模糊匹配 int nAlarmType; // 待查询报警类型,详见 EM_FACERECOGNITION_ALARM_TYPE BOOL abPersonInfo; // 人员信息是否有效 FACERECOGNITION_PERSON_INFO stPersonInfo; // 人员信息 int* pChannelID; // 通道号 int nChannelCount; // 通道个数 int nGroupIdNum; // 人员组数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID BOOL abPersonExInfo; // 人员信息是否有效, 并使用人员信息扩展结构体 FACERECOGNITION_PERSON_INFOEX stPersonInfoEx; // 人员信息扩展 }NET_IN_STARTMULTIFIND_FACERECONGNITIONRECORD; ///@brief CLIENT_StartMultiFindFaceRecognitionRecord 输出参数(对应的开始识别目标多通道查询) typedef struct tagNET_OUT_STARTMULTIFIND_FACERECONGNITIONRECORD { DWORD dwSize; int nTotalCount; // 返回的符合查询条件的记录个数 // -1表示总条数未生成,要推迟获取 // 使用CLIENT_AttachFaceFindState接口状态 LLONG lFindHandle; // 查询句柄 int nToken; // 获取到的查询令牌 }NET_OUT_STARTMULTIFIND_FACERECONGNITIONRECORD; ///@brief CLIENT_DoFindFaceRecognitionRecord 输入参数(对应的开始识别目标多通道查询) typedef struct tagNET_IN_DOFIND_FACERECONGNITIONRECORD { DWORD dwSize; int nTotalCount; // 查询条件的记录个数 LLONG lFindHandle; // 查询句柄 int nBeginNumber; // 查询起始序号,表示从beginNumber条记录开始,取count条记录返回; }NET_IN_DOFIND_FACERECONGNITIONRECORD; ///@brief 目标识别信息数据 typedef struct tagNET_DOFIND_FACERECONGNITIONRECORD_INFO { BOOL bGlobalScenePic; // 全景图是否存在 NET_PIC_INFO stGlobalScenePic; // 全景图片文件路径 DH_MSG_OBJECT stuObject; // 目标目标物体信息 NET_PIC_INFO stObjectPic; // 目标目标文件路径 int nCandidateNum; // 当前目标匹配到的候选对象数量 CANDIDATE_INFO stuCandidates[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息 NET_CANDIDAT_PIC_PATHS_EX stuCandidatesPic[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象图片文件路径 NET_TIME stTime; // 报警发生时间 char szAddress[MAX_PATH]; // 报警发生地点 int nChannelId; // 通道号 BYTE bReserved[256]; // 保留 }NET_DOFIND_FACERECONGNITIONRECORD_INFO; ///@brief CLIENT_DoFindFaceRecognitionRecord 输出参数(对应的开始识别目标多通道查询) typedef struct tagNET_OUT_DOFIND_FACERECONGNITIONRECORD { DWORD dwSize; NET_DOFIND_FACERECONGNITIONRECORD_INFO *stuResults; // 返回的目标识别信息数据(内存申请释放由用户管理) int nResultNum; // 申请的目标识别信息的内存个数 int nTotalCount; // 实际返回个数 }NET_OUT_DOFIND_FACERECONGNITIONRECORD; ///@brief CLIENT_DoFindFaceRecognitionRecordEx 输入参数(对应的开始识别目标多通道查询) typedef struct tagNET_IN_DOFIND_FACERECONGNITIONRECORD_EX { DWORD dwSize; int nTotalCount; // 每次需要获取的条数 LLONG lFindHandle; // 查询句柄 int nBeginNumber; // 查询起始序号,表示从beginNumber条记录开始,取count条记录返回; }NET_IN_DOFIND_FACERECONGNITIONRECORD_EX; ///@brief 目标识别信息数据扩展 typedef struct tagNET_DOFIND_FACERECONGNITIONRECORD_INFO_EX { BOOL bGlobalScenePic; // 全景图是否存在 NET_PIC_INFO stGlobalScenePic; // 全景图片文件路径 DH_MSG_OBJECT stuObject; // 目标目标物体信息 NET_PIC_INFO stObjectPic; // 目标目标文件路径 int nCandidateNum; // 当前目标匹配到的候选对象数量 CANDIDATE_INFOEX stuCandidates[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象信息 NET_CANDIDAT_PIC_PATHS_EX stuCandidatesPic[DH_MAX_CANDIDATE_NUM]; // 当前目标匹配到的候选对象图片文件路径 NET_TIME stTime; // 报警发生时间 char szAddress[MAX_PATH]; // 报警发生地点 int nChannelId; // 通道号 BYTE bReserved[1024]; // 保留 }NET_DOFIND_FACERECONGNITIONRECORD_INFO_EX; ///@brief CLIENT_DoFindFaceRecognitionRecordEx 输出参数(对应的开始识别目标多通道查询) typedef struct tagNET_OUT_DOFIND_FACERECONGNITIONRECORD_EX { DWORD dwSize; NET_DOFIND_FACERECONGNITIONRECORD_INFO_EX *pstResults; // 返回的目标识别信息数据(内存申请释放由用户管理) int nMaxResultNum; // 申请的目标识别信息的内存个数 int nRetResultNum; // 实际返回个数 }NET_OUT_DOFIND_FACERECONGNITIONRECORD_EX; #define MAX_FIND_COUNT 20 ///@brief 查询结果返回图片的格式 typedef enum tagEM_NEEDED_PIC_RETURN_TYPE { EM_NEEDED_PIC_TYPE_UNKOWN, // 未知类型 EM_NEEDED_PIC_TYPE_HTTP_URL, // 返回图片HTTP链接 EM_NEEDED_PIC_TYPE_BINARY_DATA, // 返回图片二进制数据 EM_NEEDED_PIC_TYPE_HTTP_AND_BINARY, // 返回二进制和HTTP链接 }EM_NEEDED_PIC_RETURN_TYPE; ///@brief CLIENT_DoFindFaceRecognition 接口输入参数 typedef struct __NET_IN_DOFIND_FACERECONGNITION { DWORD dwSize; LLONG lFindHandle; // 查询句柄 int nBeginNum; // 查询起始序号 int nCount; // 当前想查询的记录条数 EM_NEEDED_PIC_RETURN_TYPE emDataType; // 指定查询结果返回图片的格式 }NET_IN_DOFIND_FACERECONGNITION; ///@brief CLIENT_DoFindFaceRecognition接口输出参数 typedef struct __NET_OUT_FINDNEXT_FACERECONGNITION { DWORD dwSize; int nCadidateNum; // 实际返回的候选信息结构体个数 CANDIDATE_INFO stCadidateInfo[MAX_FIND_COUNT]; // 候选信息数组 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 BOOL bUseCandidatesEx; // 是否使用候选对象扩展结构体, // 若为TRUE, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反 int nCadidateExNum; // 实际返回的候选信息结构体个数 CANDIDATE_INFOEX stuCandidatesEx[MAX_FIND_COUNT];// 当前目标匹配到的候选对象信息, 实际返回个数同nCandidateNum }NET_OUT_DOFIND_FACERECONGNITION; ///@brief 眼镜状态 typedef enum tagEM_GLASSES_STATE { EM_GLASSES_STATE_UNKNOWN, // 未知 EM_GLASSES_STATE_NO, // 不戴 EM_GLASSES_STATE_WEAR, // 戴 } EM_GLASSES_STATE; ///@brief 历史库人员信息 typedef struct tagNET_HISTORY_PERSON_INFO { char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符,首次由服务端生成,区别于ID字段 // 修改,删除操作时必填 EM_SEX_TYPE emSexType; // 性别 UINT nAge; // 年龄, 0表示未知 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 表情 EM_GLASSES_STATE emGlassesState; // 眼镜状态 EM_GLASSES_TYPE emGlassesType; // 眼镜类型 char szReserved1[4]; EM_EYE_STATE_TYPE emEye; // 眼睛状态 EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_MASK_STATE_TYPE emMask; // 口罩状态 EM_BEARD_STATE_TYPE emBeard; // 胡子状态 int nAttractive; // 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高 UINT nFacePicNum; // 图片张数 NET_FACE_IMAGE_INFO stuFacePicInfo[DH_MAX_PERSON_IMAGE_NUM]; // 当前人员对应的图片信息 BYTE bReserved[2048]; // 预留字节数 } NET_HISTORY_PERSON_INFO; ///@brief 历史库以图搜图主动上报的候选人信息 typedef struct tagNET_HISTORY_ACTIVE_CANDIDATE { UINT nSimilarity; // 相似度 int nChannelID; // 抓拍通道号 NET_HISTORY_PERSON_INFO stuHistoryPerson; // 历史库人员信息 NET_TIME stuTime; // 查询人员出现的时间 NET_FACE_IMAGE_INFO stuSceneImage; // 目标全景图 char szChannelString[32]; // 通道号(定制使用) BYTE bReserved[1204]; // 预留字节数 } NET_HISTORY_ACTIVE_CANDIDATE; #define MAX_CANDIDATE_NUM 50 // 候选人员最大数量 ///@brief 历史库以图搜图主动上报结果信息 typedef struct tagNET_RESULT_OF_FINDHISTORY_BYPIC { UINT nSmallPicID; // 小图ID UINT nPictureID; // 目标图ID UINT nCandidateNum; // 候选人员数量 NET_HISTORY_ACTIVE_CANDIDATE stuCandidateInfo[MAX_CANDIDATE_NUM]; // 候选人员信息 BYTE bReserved[1024]; // 预留字节数 } NET_RESULT_OF_FINDHISTORY_BYPIC; #define MAX_FINDPERSON_RESULT_NUM 32 // 以图搜图主动上报结果最大数量 ///@brief 历史库以图搜图回调信息 typedef struct tagNET_CB_RESULT_OF_FIND_HISTORY_BYPIC { UINT nToken; // 查询令牌 UINT nProgress; // 查询进度百分比 UINT nTotalCount; // 满足条件的总条数 int nHistoryResultNum; // 历史库以图搜图查询结果数量 NET_RESULT_OF_FINDHISTORY_BYPIC stuHistoryResult[MAX_FINDPERSON_RESULT_NUM]; // 历史库以图搜图查询结果信息 BYTE bReserved[1024]; // 预留字节数 } NET_CB_RESULT_OF_FIND_HISTORY_BYPIC; ///@brief 订阅历史库以图搜图回调函数原型, lAttachHandle为CLIENT_AttachResultOfFindHistoryByPic接口的返回值 typedef void (CALLBACK *fResultOfFindHistory)(LLONG lAttachHandle, NET_CB_RESULT_OF_FIND_HISTORY_BYPIC* pstesult, const char *pBinBuf, int nBinBufLen, LDWORD dwUser); ///@brief CLIENT_AttachResultOfFindHistoryByPic接口输入参数 typedef struct tagNET_IN_ATTACH_RESULT_FINDHISTORY_BYPIC { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌, 由CLIENT_StartFindFaceRecognition返回 fResultOfFindHistory cbResultOfFindHistory; // 订阅历史库以图搜图回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_RESULT_FINDHISTORY_BYPIC; ///@brief CLIENT_AttachResultOfFindHistoryByPic接口输出参数 typedef struct tagNET_OUT_ATTACH_RESULT_FINDHISTORY_BYPIC { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_RESULT_FINDHISTORY_BYPIC; ///@brief 人体历史库以图搜图主动上报的候选人信息 typedef struct tagNET_HUMANHISTORY_CANDIDATE { UINT nSimilarity; // 相似度 int nChannelID; // 抓拍通道号 NET_HISTORY_HUMAN_INFO stuHistoryHuman; // 历史库人体信息 NET_TIME stuTime; // 查询人员出现的时间 NET_FACE_IMAGE_INFO stuSceneImage; // 人体全景图 BYTE bReserved[748]; // 预留字节数 } NET_HUMANHISTORY_CANDIDATE; ///@brief 人体历史库以图搜图主动上报结果信息 typedef struct tagNET_RESULT_OF_HUMANHISTORY_BYPIC { UINT nSmallPicID; // 小图ID UINT nPictureID; // 目标图ID NET_HUMANHISTORY_CANDIDATE stuCandidateInfo[50]; // 候选人员信息 UINT nCandidateNum; // 候选人员数量 BYTE bReserved[1028]; // 预留字节数 } NET_RESULT_OF_HUMANHISTORY_BYPIC; ///@brief 人体历史库以图搜图回调信息 typedef struct tagNET_CB_RESULT_OF_HUMAN_HISTORY_BYPIC { UINT nToken; // 查询令牌 UINT nProgress; // 查询进度百分比 UINT nTotalCount; // 满足条件的总条数 int nHistoryResultNum; // 历史库以图搜图查询结果数量 NET_RESULT_OF_HUMANHISTORY_BYPIC stuHistoryResult[32]; // 历史库以图搜图查询结果信息 BYTE bReserved[1024]; // 预留字节数 } NET_CB_RESULT_OF_HUMAN_HISTORY_BYPIC; ///@brief 订阅人体历史库以图搜图回调函数原型, lAttachHandle为CLIENT_AttachResultOfHumanHistoryByPic接口的返回值 typedef void (CALLBACK *fResultOfHumanHistory)(LLONG lAttachHandle, NET_CB_RESULT_OF_HUMAN_HISTORY_BYPIC* pstesult, const char *pBinBuf, int nBinBufLen, LDWORD dwUser); ///@brief CLIENT_AttachResultOfHumanHistoryByPic 接口输入参数 typedef struct tagNET_IN_ATTACH_RESULT_HUMAN_HISTORY_BYPIC { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌, 由CLIENT_StartFindFaceRecognition返回 fResultOfHumanHistory cbResultOfHumanHistory; // 订阅人体历史库以图搜图回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_RESULT_HUMAN_HISTORY_BYPIC; ///@brief CLIENT_AttachResultOfHumanHistoryByPic 接口输出参数 typedef struct tagNET_OUT_ATTACH_RESULT_HUMAN_HISTORY_BYPIC { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_RESULT_HUMAN_HISTORY_BYPIC; ///@brief 机动车信息 typedef struct tagNET_HISTORY_TRAFFIC_CAR_INFO { char szUID[64]; // 非机动车唯一标识符 NET_RECT stuBoundingBox; // 包围盒(8192坐标系) char szPlateNumber[32]; // 车牌号码 char szPlateType[32]; // 车牌类型 char szPlateColor[32]; // 车牌颜色 char szVehicleColor[32]; // 车身颜色 char szCategory[32]; // 车辆类型 char szSpecialCar[32]; // 特种车辆 char szVehicleSign[64]; // 车辆标识 UINT nSubBrand; // 车辆子品牌 UINT nBrandYear; // 车辆年款 UINT nFurnitureCount; // 摆件数量 UINT nPendantCount; // 挂件数量 UINT nAnnualInspectionCount; // 年检标数量 int nAnnualInspectionShape; // 年检标顺序, 0: 未知 1: 乱排 2: 横排 3: 竖排 NET_SUNSHADE_STATE emSunShade; // 主驾驶遮阳板状态 NET_SUNSHADE_STATE emSubSeatSunShade; // 副驾驶遮阳板状态 UINT nCardCount; // 卡片数量 NET_SAFEBELT_STATE emSafeBelt; // 主驾驶安全带 int nCalling; // 是否在打电话, 0: 未知 1: 否 2: 是 int nPlayPhone; // 是否在玩手机, 0: 未知 1: 否 2: 是 int nSmoking; // 是否在抽烟, 0: 未知 1: 否 2: 是 int nSubSeatPeople; // 副驾驶是否有人, 0: 未知 1: 否 2: 是 NET_SAFEBELT_STATE emSubSeatSafeBelt; // 副驾驶安全带 int nHoldBaby; // 是否抱小孩, 0: 未知 1: 否 2: 是 int nSunroof; // 是否有天窗, 0: 未知 1: 否 2: 是 int nLuggageRack; // 是否有行李架, 0: 未知 1: 否 2: 是 int nVehicleCollision; // 是否有车辆撞损, 0: 未知 1: 否 2: 是 int nVehiclePrint; // 是否有喷绘, 0: 未知 1: 否 2: 是 int nBackupTire; // 是否有备胎, 0: 未知 1: 否 2: 是 int nTrunk; // 后备箱状态, 0: 未知 1: 关闭 2: 打开 int nPlateAttribute; // 车牌污损状态, 0: 未知 1: 正常 2: 无牌 3: 部分遮挡/污损 4: 完全遮挡/污损 int nMuskHide; // 渣土车遮盖状态, 0: 未知 1: 有遮盖 2: 无遮盖空载 3: 无遮盖满载 NET_PIC_INFO_EX stuImage; // 机动车图片信息 int nPressParkingStatus; // 车辆停车是否压线, 0: 未知 1: 未压线停车 2: 压线停车 char szReserved[256]; // 保留字节 } NET_HISTORY_TRAFFIC_CAR_INFO; ///@brief 人体历史库以图搜图主动上报的候选人信息 typedef struct tagNET_VEHICLEHISTORY_CANDIDATE { UINT nSimilarity; // 相似度 int nChannelID; // 抓拍通道号 NET_HISTORY_TRAFFIC_CAR_INFO stuHistoryTrafficCar; // 历史库人体信息 NET_TIME stuTime; // 查询人员出现的时间 NET_FACE_IMAGE_INFO stuSceneImage; // 人体全景图 char szReserved[748]; // 预留字节数 } NET_VEHICLEHISTORY_CANDIDATE; ///@brief 人体历史库以图搜图主动上报结果信息 typedef struct tagNET_RESULT_OF_VEHICLEHISTORY_BYPIC { UINT nSmallPicID; // 小图ID UINT nPictureID; // 目标图ID NET_VEHICLEHISTORY_CANDIDATE stuCandidateInfo[50]; // 候选人员信息 UINT nCandidateNum; // 候选人员数量 char szReserved[1028]; // 预留字节数 } NET_RESULT_OF_VEHICLEHISTORY_BYPIC; ///@brief 人体历史库以图搜图回调信息 typedef struct tagNET_CB_RESULT_OF_VEHICLE_HISTORY_BYPIC { UINT nToken; // 查询令牌 UINT nProgress; // 查询进度百分比 UINT nTotalCount; // 满足条件的总条数 int nHistoryResultNum; // 历史库以图搜图查询结果数量 NET_RESULT_OF_VEHICLEHISTORY_BYPIC stuHistoryResult[32]; // 历史库以图搜图查询结果信息 char szReserved[1024]; // 预留字节数 } NET_CB_RESULT_OF_VEHICLE_HISTORY_BYPIC; ///@brief 订阅车辆历史库以图搜图回调函数原型, lAttachHandle为CLIENT_AttachResultOfVehicleHistoryByPic接口的返回值 typedef void (CALLBACK *fResultOfVehicleHistory)(LLONG lAttachHandle, NET_CB_RESULT_OF_VEHICLE_HISTORY_BYPIC* pstuResult, const char *pBinBuf, int nBinBufLen, LDWORD dwUser); ///@brief CLIENT_AttachResultOfVehicleHistoryByPic 接口输入参数 typedef struct tagNET_IN_ATTACH_RESULT_VEHICLE_HISTORY_BYPIC { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌, 由CLIENT_StartFindFaceRecognition返回 fResultOfVehicleHistory cbResultOfVehicleHistory; // 订阅人体历史库以图搜图回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_RESULT_VEHICLE_HISTORY_BYPIC; ///@brief CLIENT_AttachResultOfVehicleHistoryByPic 接口输出参数 typedef struct tagNET_OUT_ATTACH_RESULT_VEHICLE_HISTORY_BYPIC { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_RESULT_VEHICLE_HISTORY_BYPIC; ///@brief CLIENT_DetectFace接口输入参数 typedef struct __NET_IN_DETECT_FACE { DWORD dwSize; DH_PIC_INFO stPicInfo; // 大图信息 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 }NET_IN_DETECT_FACE; ///@brief CLIENT_DetectFace接口输出参数 typedef struct __NET_OUT_DETECT_FACE { DWORD dwSize; DH_PIC_INFO *pPicInfo; // 检测出的目标图片信息,由用户申请空间,大小为sizeof(DH_PIC_INFO)*nMaxPicNum int nMaxPicNum; // 最大目标图片信息个数 int nRetPicNum; // 实际返回的目标图片个数 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址,由用户申请空间,存放检测出的目标图片数据 int nBufferLen; // 缓冲数据长度 }NET_OUT_DETECT_FACE; ///@brief 人员组操作枚举 typedef enum tagEM_OPERATE_FACERECONGNITION_GROUP_TYPE { NET_FACERECONGNITION_GROUP_UNKOWN, NET_FACERECONGNITION_GROUP_ADD, // 添加人员组信息 NET_FACERECONGNITION_GROUP_MODIFY, // 修改人员组信息 NET_FACERECONGNITION_GROUP_DELETE, // 删除人员组信息 }EM_OPERATE_FACERECONGNITION_GROUP_TYPE; ///@brief 路人库满时覆盖策略 typedef enum tagEM_PASSERBY_DB_OVERWRITE_TYPE { EM_OVERWRITE_TYPE_UNKNOWN = -1, // 未知 EM_OVERWRITE_TYPE_FULL_STOP, // 满停止 EM_OVERWRITE_TYPE_FULL_COVERAGE, // 满覆盖 }EM_PASSERBY_DB_OVERWRITE_TYPE; ///@brief 路人库去重策略类型 typedef enum tagEM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE { EM_DUPLICATE_REMOVE_TYPE_UNKNOWN = -1, // 未知 EM_DUPLICATE_REMOVE_TYPE_ALL, // 无条件去重 EM_DUPLICATE_REMOVE_TYPE_TIME, // 按时间间隔去重 EM_DUPLICATE_REMOVE_TYPE_TIME_SLOT, // 按时间段间隔去重 }EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE; ///@brief 路人库去重策略配置(选填) typedef struct tagPASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO { BOOL bEnable; // 使能开关,TRUE:开 FALSE:关 EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE emDuplicateRemoveType; // 路人库去重策略类型 DH_TSECT stuTimeSection[8][6]; // 时间段间隔(EM_DUPLICATE_REMOVE_TYPE 为 EM_DUPLICATE_REMOVE_TYPE_TIME_SLOT有效) DWORD dwInterval; // 时间间隔,单位分钟(EM_DUPLICATE_REMOVE_TYPE 为 EM_DUPLICATE_REMOVE_TYPE_TIME有效) BYTE byReserved1[4]; // 字节保留 BYTE byReserved[256]; // 字节保留 }PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO; ///@brief 路人库配置(选填) typedef struct tagNET_PASSERBY_DB_CONFIG_INFO { DWORD dwCapacity; // 路人库最大注册数目 EM_PASSERBY_DB_OVERWRITE_TYPE emOverWriteType; // 路人库满时覆盖策略 PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO stuDuplicateRemoveConfigInfo; // 路人库去重策略配置(选填) DWORD dwFileHoldTime; // 设置文件保留天数【范围:0~31】单位:天,超过时间将被删除 0:永不过期 BYTE byReserved1[4]; // 字节对齐 BYTE byReserved[256]; // 字节保留 }NET_PASSERBY_DB_CONFIG_INFO; ///@brief 人员组信息 typedef struct tagNET_FACERECONGNITION_GROUP_INFO { DWORD dwSize; EM_FACE_DB_TYPE emFaceDBType; // 人员组类型,详见 EM_FACE_DB_TYPE char szGroupId[DH_COMMON_STRING_64]; // 人员组ID,唯一标识一组人员 char szGroupName[DH_COMMON_STRING_128]; // 人员组名称 char szGroupRemarks[DH_COMMON_STRING_256]; // 人员组备注信息 int nGroupSize; // 当前组内人员数 int nRetSimilarityCount; // 实际返回的库相似度阈值个数 int nSimilarity[MAX_SIMILARITY_COUNT]; // 库相似度阈值,目标比对高于阈值认为匹配成功 int nRetChnCount; // 实际返回的通道号个数 int nChannel[DH_MAX_CAMERA_CHANNEL_NUM]; // 当前组绑定到的视频通道号列表 UINT nFeatureState[MAX_FEATURESTATE_NUM]; // 目标组建模状态信息: // [0]-准备建模的人员数量,不保证一定建模成功 // [1]-建模失败的人员数量,图片不符合算法要求,需要更换图片 // [2]-已建模成功人员数量,数据可用于算法进行目标识别 // [3]-曾经建模成功,但因算法升级变得不可用的数量,重新建模就可用 EM_REGISTER_DB_TYPE emRegisterDbType; // 注册库类型 BYTE byReserved1[4]; // 字节对齐 NET_PASSERBY_DB_CONFIG_INFO stuPasserbyDBConfig; // 路人库配置(选填) UINT nGroupSimilarity; // 组相似度阈值,人脸比对高于阈值认为匹配成功 UINT nMaskSimilarity; // 库口罩相似度阈值,取值范围0-100,可用于口罩检测 }NET_FACERECONGNITION_GROUP_INFO; ///@brief 添加人员组信息 typedef struct tagNET_ADD_FACERECONGNITION_GROUP_INFO { DWORD dwSize; NET_FACERECONGNITION_GROUP_INFO stuGroupInfo; // 人员组信息 }NET_ADD_FACERECONGNITION_GROUP_INFO; ///@brief 删除人员组信息 typedef struct tagNET_DELETE_FACERECONGNITION_GROUP_INFO { DWORD dwSize; char szGroupId[DH_COMMON_STRING_64];// 人员组ID,唯一标识一组人员 }NET_DELETE_FACERECONGNITION_GROUP_INFO; ///@brief 修改人员组信息 typedef struct tagNET_MODIFY_FACERECONGNITION_GROUP_INFO { DWORD dwSize; NET_FACERECONGNITION_GROUP_INFO stuGroupInfo; // 人员组信息 }NET_MODIFY_FACERECONGNITION_GROUP_INFO; ///@brief CLIENT_OperateFaceRecognitionGroup接口输入参数 typedef struct tagNET_IN_OPERATE_FACERECONGNITION_GROUP { DWORD dwSize; EM_OPERATE_FACERECONGNITION_GROUP_TYPE emOperateType; // 操作类型 void *pOPerateInfo; // 相关操作信息,由用户申请内存,申请大小参照操作类型对应的结构体 // 若操作类型为NET_FACERECONGNITION_GROUP_ADD,对应结构体为NET_ADD_FACERECONGNITION_GROUP_INFO; // 若操作类型为NET_FACERECONGNITION_GROUP_MODIFY,对应结构体为NET_MODIFY_FACERECONGNITION_GROUP_INFO // 若操作类型为NET_FACERECONGNITION_GROUP_DELETE,对应结构体为NET_DELETE_FACERECONGNITION_GROUP_INFO }NET_IN_OPERATE_FACERECONGNITION_GROUP; ///@brief CLIENT_OperateFaceRecognitionGroup接口输出参数 typedef struct tagNET_OUT_OPERATE_FACERECONGNITION_GROUP { DWORD dwSize; char szGroupId[DH_COMMON_STRING_64]; // 新增记录的人员组ID,唯一标识一组人员 }NET_OUT_OPERATE_FACERECONGNITION_GROUP; // 获取人员类型最大个数 #define MAX_FACE_RECOGNITION_SERVER_PERSON_TYPE 64 ///@brief CLIENT_GetFaceRecognitionPersonType接口输入参数 typedef struct tagNET_IN_GET_FACERECOGNITION_PERSON_TYPE { DWORD dwSize; // 结构体大小 } NET_IN_GET_FACERECOGNITION_PERSON_TYPE; ///@brief CLIENT_GetFaceRecognitionPersonType接口输出参数 typedef struct tagNET_OUT_GET_FACERECOGNITION_PERSON_TYPE { DWORD dwSize; // 结构体大小 char szPersonType[MAX_FACE_RECOGNITION_SERVER_PERSON_TYPE][DH_COMMON_STRING_16]; // 人员类型 int nPersonTypeNum; // 实际返回的人员类型个数 BYTE byDefault[DH_COMMON_STRING_16]; // 人员类型,详见 EM_PERSON_TYPE int nDefaultNum; // 返回的人员个数 } NET_OUT_GET_FACERECOGNITION_PERSON_TYPE; ///@brief CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS) 输入参数 typedef struct tagNET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY { DWORD dwSize; // 结构体大小 } NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY; ///@brief 目标检测框颜色 typedef struct tagNET_FACEBOXCOLOR_CAPS { BOOL bSupport; // 是否支持目标检测框颜色上报 NET_COLOR_RGBA stuDefaultColor; // 默认颜色 BYTE byReserved[1024]; // 保留 }NET_FACEBOXCOLOR_CAPS; ///@brief 是否支持以图搜图 typedef enum tagEM_SUPPORT_SEARCH_BY_PIC { EM_SUPPORT_SEARCH_BY_PIC_UNKNOWN, // 未知, IVSS, NVR, DVR大概率支持目标以图搜图,IPC-FR不支持 EM_SUPPORT_SEARCH_BY_PIC_UNSUPPORT, //不支持 EM_SUPPORT_SEARCH_BY_PIC_SUPPORT, // 支持 } EM_SUPPORT_SEARCH_BY_PIC; ///@brief CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS)输出参数 typedef struct tagNET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY { DWORD dwSize; // 结构体大小 BOOL bmultiFind; // 是否支持多通道查找 UINT nmaxFaceType; // 最多支持添加自定义目标类型数量 NET_FACEBOXCOLOR_CAPS stuFaceBoxColor; // 目标检测框颜色能力 BOOL bAsynPush; // 是否支持以图搜图数据推送 UINT nMaxGroupNum; // 最大目标库数量, 0表示无效 UINT nMaxPersonNum; // 最大存储目标容量, 0表示无效 UINT nMultiAppendPicLength; // 批量导图每次接收图片的大小, 单位KB EM_SUPPORT_SEARCH_BY_PIC emSupportSearchByPic; // 是否支持以图搜图 DWORD dwSearchTypeMask; // 以图搜图支持的目标类型掩码, emSupportSearchByPic为EM_SUPPORT_SEARCH_BY_PIC_SUPPORT时有效 // bit0:目标, bit1:人体, bit2:机动车, bit3:非机动车 UINT nSinglePicMaxLength; // 单个图片最大大小的值,单位KB BOOL bPersonWithMultiFace; // 设备目标注册库是否支持一人多图 BOOL bSupportIDFromServer; // 是否支持使用目标库GroupID和人员UUID分别对目标库和人员进行管理 UINT nSupportSMDPicSearchMask; // 是否支持SMD属性特征以图搜图的类型掩码, bit0: 人脸, bit1: 人体, bit2: 机动车, bit3: 非机动车 } NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY; ///@brief 人员类型操作枚举 typedef enum tagEM_OPERATE_FACERECOGNITION_PERSON_TYPE { NET_PERSON_TYPE_UNKOWN, // 未知 NET_PERSON_TYPE_ADD, // 添加自定义人员类型 NET_PERSON_TYPE_MODIFY, // 修改人员类型 NET_PERSON_TYPE_DELETE, // 删除人员类型 } EM_OPERATE_FACERECOGNITION_PERSON_TYPE; ///@brief 添加人员类型信息 typedef struct tagNET_ADD_FACERECOGNITION_PERSON_TYPE_INFO { DWORD dwSize; // 结构体大小 char szType[DH_COMMON_STRING_16]; // 人员类型 } NET_ADD_FACERECOGNITION_PERSON_TYPE_INFO; ///@brief 修改人员类型信息 typedef struct tagNET_MODIFY_FACERECOGNITION_PERSON_TYPE_INFO { DWORD dwSize; // 结构体大小 char szType[DH_COMMON_STRING_16]; // 修改的人员类型 char szNewType[DH_COMMON_STRING_16]; // 新的人员类型 } NET_MODIFY_FACERECOGNITION_PERSON_TYPE_INFO; ///@brief 删除人员类型信息 typedef struct tagNET_DELETE_FACERECOGNITION_PERSON_TYPE_INFO { DWORD dwSize; // 结构体大小 char szType[DH_COMMON_STRING_16]; // 人员类型 } NET_DELETE_FACERECOGNITION_PERSON_TYPE_INFO; ///@brief CLIENT_OperateFaceRecognitionPersonType接口输入参数 typedef struct tagNET_IN_OPERATE_FACERECOGNITION_PERSON_TYPE { DWORD dwSize; // 结构体大小 EM_OPERATE_FACERECOGNITION_PERSON_TYPE emOperateType; // 操作类型 void *pOPerateInfo; // 相关操作信息,由用户申请内存,申请大小参照操作类型对应的结构体 // 若操作类型为NET_PERSON_TYPE_ADD,对应结构体为NET_ADD_FACERECOGNITION_PERSON_TYPE_INFO; // 若操作类型为NET_PERSON_TYPE_MODIFY,对应结构体为NET_MODIFY_FACERECOGNITION_PERSON_TYPE_INFO // 若操作类型为NET_PERSON_TYPE_DELETE,对应结构体为NET_DELETE_FACERECOGNITION_PERSON_TYPE_INFO } NET_IN_OPERATE_FACERECOGNITION_PERSON_TYPE; ///@brief CLIENT_OperateFaceRecognitionPersonType接口输出参数 (删除人员类型时有效) typedef struct tagNET_OUT_OPERATE_FACERECOGNITION_PERSON_TYPE { DWORD dwSize; // 结构体大小 char szFailedCode[DH_COMMON_STRING_16]; // 错误代码 } NET_OUT_OPERATE_FACERECOGNITION_PERSON_TYPE; ///@brief CLIENT_FindGroupInfo接口输入参数 typedef struct tagNET_IN_FIND_GROUP_INFO { DWORD dwSize; char szGroupId[DH_COMMON_STRING_64];// 人员组ID,唯一标识一组人员,为空表示查询全部人员组信息 }NET_IN_FIND_GROUP_INFO; ///@brief CLIENT_FindGroupInfo接口输出参数 typedef struct tagNET_OUT_FIND_GROUP_INFO { DWORD dwSize; NET_FACERECONGNITION_GROUP_INFO *pGroupInfos; // 人员组信息,由用户申请空间,大小为sizeof(NET_FACERECONGNITION_GROUP_INFO)*nMaxGroupNum int nMaxGroupNum; // 当前申请的数组大小 int nRetGroupNum; // 设备返回的人员组个数 }NET_OUT_FIND_GROUP_INFO; ///@brief CLIENT_SetGroupInfoForChannel接口输入参数 typedef struct tagNET_IN_SET_GROUPINFO_FOR_CHANNEL { DWORD dwSize; int nChannelID; // 通道号 int nGroupIdNum; // 人员组数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID, 填[""]表示视频通道不布控目标组,此时目标识别退化为目标检测 int nSimilaryNum; // 相似度阈值个数, 与人员组数相同 int nSimilary[MAX_GOURP_NUM]; // 每个目标组的相似度阈值, 0-100 }NET_IN_SET_GROUPINFO_FOR_CHANNEL; ///@brief CLIENT_SetGroupInfoForChannel接口输出参数 typedef struct tagNET_OUT_SET_GROUPINFO_FOR_CHANNEL { DWORD dwSize; }NET_OUT_SET_GROUPINFO_FOR_CHANNEL; ///@brief CLIENT_GetGroupInfoForChannel接口输入参数 typedef struct tagNET_IN_GET_GROUPINFO_FOR_CHANNEL { DWORD dwSize; int nChannelID; // 通道号 }NET_IN_GET_GROUPINFO_FOR_CHANNEL; ///@brief CLIENT_GetGroupInfoForChannel接口输出参数 typedef struct tagNET_OUT_GET_GROUPINFO_FOR_CHANNEL { DWORD dwSize; int nGroupIdNum; // 人员组数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID int nSimilaryNum; // 相似度阈值个数, 与人员组数相同 int nSimilary[MAX_GOURP_NUM]; // 每个目标组的相似度阈值, 0-100 }NET_OUT_GET_GROUPINFO_FOR_CHANNEL; ///@brief 目标查询状态信息回调函数, lAttachHandle是CLIENT_AttachFaceFindState的返回值 typedef struct tagNET_CB_FACE_FIND_STATE { DWORD dwSize; int nToken; //视频浓缩任务数据库主键ID int nProgress; //正常取值范围:0-100,-1,表示查询token不存在(当订阅一个不存在或结束的查询时) int nCurrentCount; //目前符合查询条件的目标数量 }NET_CB_FACE_FIND_STATE; ///@brief 回调函数 typedef void (CALLBACK *fFaceFindState)(LLONG lLoginID, LLONG lAttachHandle, NET_CB_FACE_FIND_STATE* pstStates, int nStateNum, LDWORD dwUser); ///@brief CLIENT_AttachFaceFindState接口输入参数 typedef struct tagNET_IN_FACE_FIND_STATE { DWORD dwSize; //结构体大小,必须填写 int nTokenNum; //查询令牌数,为0时,表示订阅所有的查询任务 int *nTokens; //查询令牌,由用户申请内存,大小为sizeof(int)*nTokenNum fFaceFindState cbFaceFindState; //回调函数 LDWORD dwUser; //用户数据 }NET_IN_FACE_FIND_STATE; ///@brief CLIENT_AttachFaceFindState接口输出参数 typedef struct tagNET_OUT_FACE_FIND_STATE { DWORD dwSize; }NET_OUT_FACE_FIND_STATE; ///@brief CLIENT_FaceRecognitionSetSearchImageInfo 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_SET_SEARCH_IMAGE_INFO { DWORD dwSize; int nChannel; // 视频分析通道号 char szFilePath[DH_COMMON_STRING_256]; // 人文件路径,目标图片路径 }NET_IN_FACE_RECOGNITION_SET_SEARCH_IMAGE_INFO; ///@brief CLIENT_FaceRecognitionSetSearchImageInfo 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_SET_SEARCH_IMAGE_INFO { DWORD dwSize; }NET_OUT_FACE_RECOGNITION_SET_SEARCH_IMAGE_INFO; ///@brief 布控的视频通道信息 typedef struct tagNET_DISPOSITION_CHANNEL_INFO { int nChannelID; // 视频通道号 int nSimilary; // 相似度阈值, 0-100 char szChannelCode[64]; // 平台下发的通道唯一编码,与实际视频通道号一一对应 BYTE bReserved[192]; // 保留 } NET_DISPOSITION_CHANNEL_INFO; ///@brief CLIENT_FaceRecognitionPutDisposition 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO { DWORD dwSize; char szGroupId[DH_COMMON_STRING_64]; // 人员组ID int nDispositionChnNum; // 布控视频通道个数 NET_DISPOSITION_CHANNEL_INFO stuDispositionChnInfo[DH_MAX_CAMERA_CHANNEL_NUM]; // 布控视频通道信息 } NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO; ///@brief CLIENT_FaceRecognitionPutDisposition 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO { DWORD dwSize; int nReportCnt; // 通道布控结果个数 BOOL bReport[DH_MAX_CAMERA_CHANNEL_NUM]; // 通道布控结果, TRUE追加成功, FALSE追加失败 } NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO; ///@brief CLIENT_FaceRecognitionDelDisposition 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO { DWORD dwSize; char szGroupId[DH_COMMON_STRING_64]; // 人员组ID int nDispositionChnNum; // 撤控视频通道个数 int nDispositionChn[DH_MAX_CAMERA_CHANNEL_NUM]; // 撤控视频通道列表 } NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO; ///@brief CLIENT_FaceRecognitionDelDisposition 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO { DWORD dwSize; int nReportCnt; // 通道布控结果个数 BOOL bReport[DH_MAX_CAMERA_CHANNEL_NUM]; // 通道布控结果, TRUE删除成功, FALSE删除失败 } NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO; #define MAX_BIG_PIC_NUM 50 // 大图搜小图最大支持的大图数量 #define MAX_TOKEN_NUM 128 // 最大查询令牌数量 ///@brief 目标类型 typedef enum tagEM_DETECT_OBJECT_TYPE { EM_DETECT_OBJECT_TYPE_UNKNOWN = 0, // 未知 EM_DETECT_OBJECT_TYPE_FACE, // 目标 EM_DETECT_OBJECT_TYPE_VEHICLE, // 车辆 EM_DETECT_OBJECT_TYPE_STRUCTLIZE, // 结构化 } EM_DETECT_OBJECT_TYPE; ///@brief 处理类型 typedef enum tagEM_DETECT_PROCESS_TYPE { EM_DETECT_PROCESS_TYPE_UNKNOWN = 0, // 当此值为0或者不存在,就做检测,与EM_DETECT_PROCESS_TYPE_DETECT一致 EM_DETECT_PROCESS_TYPE_FEATURE, // 提取特征 EM_DETECT_PROCESS_TYPE_ATTRIBUTE, // 提取属性 EM_DETECT_PROCESS_TYPE_DETECT, // 检测 } EM_DETECT_PROCESS_TYPE; ///@brief 坐标系类型 typedef enum tagEM_COORDINATE_TYPE { EM_COORDINATE_TYPE_UNKNOWN = 0, // 未知 EM_COORDINATE_TYPE_ABSOLUTE, // 绝对坐标 EM_COORDINATE_TYPE_8192, // 8192坐标 } EM_COORDINATE_TYPE; ///@brief 大图信息(大图抠小图功能) typedef struct tagNET_DETECT_BIG_PIC_INFO { int nPicID; // 大图ID DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 DWORD dwWidth; // 图片宽度, 单位:像素 DWORD dwHeight; // 图片高度, 单位:像素 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 BYTE bReserved[44]; // 保留字节 }NET_DETECT_BIG_PIC_INFO; ///@brief 大图信息(大图抠小图功能) typedef struct tagNET_DETECT_BIG_PIC_INFO_EX { int nPicID; // 大图ID DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 DWORD dwWidth; // 图片宽度, 单位:像素 DWORD dwHeight; // 图片高度, 单位:像素 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 char szRequestID[64]; // 请求图片ID char szPath[256]; // 通过URL下载图片 EM_COORDINATE_TYPE emCoordinateType; // 坐标系类型 EM_DETECT_OBJECT_TYPE emObjectType; // 目标类型 UINT nTargetType; // 按位组合,全1表示全检测,1表示目标,2表示人体,4表示机动车,8表示非机动整体, 16表示非机动车 int nProcessTypeNum; // 处理类型个数 EM_DETECT_PROCESS_TYPE emProcessType[8]; // 处理类型 char* szData; // 全景大图数据,经过Base64后的字符串 无该字段或该字段为空则使用二进制图片数据 int nDataLen; // 全景大图数据长度 BYTE bReserved[1016]; // 保留字节 }NET_DETECT_BIG_PIC_INFO_EX; ///@brief CLIENT_FaceRecognitionDetectMultiFace 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO { DWORD dwSize; // 此结构体的大小 int nBigPicNum; // 大图张数 NET_DETECT_BIG_PIC_INFO stuBigPicInfo[MAX_BIG_PIC_NUM]; // 大图信息(推荐使用stuBigPicInfoEx) /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 int nBufferLen; // 缓冲数据长度 EM_OBJECT_TYPE emDetectObjType; // 目标类型 BOOL bBigPicInfoExEnable; // stuBigPicInfoEx是否有效 int nBigPicNumEx; // 大图张数 NET_DETECT_BIG_PIC_INFO_EX stuBigPicInfoEx[MAX_BIG_PIC_NUM]; // 大图信息(扩展) UINT nToken; // 查询令牌,没有则为0 } NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO; ///@brief CLIENT_FaceRecognitionDetectMultiFace 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO { DWORD dwSize; // 此结构体的大小 } NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO; ///@brief 大图中小图的信息 typedef struct tagNET_SMALL_PIC_INFO { int nSmallPicId; // 小图ID NET_RECT stuRect; // 小图在大图中的位置 EM_OBJECT_TYPE emDetectObjType; // 目标类型 BYTE bReserved[124]; // 保留字节 } NET_SMALL_PIC_INFO; ///@brief 大图检测小图结果错误码 typedef enum tagEM_MULTIFACE_DETECT_ERRCODE { EM_MULTIFACE_DETECT_UNKNOWN = -1, // 未知 EM_MULTIFACE_DETECT_SUCCESS, // 成功 EM_MULTIFACE_DETECT_DECODE_FAIL, // 解码失败 EM_MULTIFACE_DETECT_NO_OBJECT, // 未检测到有效目标 } EM_MULTIFACE_DETECT_ERRCODE; ///@brief 一张大图检测到小图的结果 typedef struct tagNET_IMAGE_RELATION { int nBigPicId; // 大图ID int nSmallPicNum; // 大图中小图张数 NET_SMALL_PIC_INFO stuSmallPicInfo[MAX_SMALLPIC_NUM]; // 大图中小图的信息 EM_MULTIFACE_DETECT_ERRCODE emDetectErrCode; // 大图检测小图结果错误码 BYTE bReserved[124]; // 保留字节 } NET_IMAGE_RELATION; ///@brief 订阅大图检测小图进度回调结构体 typedef struct tagNET_CB_MULTIFACE_DETECT_STATE { int nProgress; // 检测进度 NET_IMAGE_RELATION stuImageRelation; // 大图检测小图的检测结果 BYTE byReserved[512]; //保留字节 } NET_CB_MULTIFACE_DETECT_STATE; ///@brief 订阅大图检测小图进度回调函数原型 typedef void (CALLBACK *fMultiFaceDetectState)(LLONG lAttachHandle, NET_CB_MULTIFACE_DETECT_STATE *pstStates, LDWORD dwUser); ///@brief 一张大图检测结果列表 typedef struct tagNET_IMAGE_RELATION_LIST { char* pszFeature; // base64特征值 int nFeatureLen; // base64特征值长度 char szFeatureID[64]; // 特征ID NET_FACE_DATA stuFaceData; // 目标数据 HUMAN_ATTRIBUTES_INFO stuHumanAttributes; // 人体属性 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 char szAlgorithmVersion[32]; // 特征版本号 char szVendor[32]; // 厂商 EM_OBJECT_TYPE emObjectType; // 目标类型 DH_POINT stuRectPoint[2]; // 矩形区域 NET_HISTORY_TRAFFIC_CAR_INFO stuHistoryTrafficCar; // 机动车属性 BYTE bReserved[1024]; // 保留字节 } NET_IMAGE_RELATION_LIST; ///@brief 小图信息 typedef struct tagNET_IMAGE_RELATION_EX_IMAGEINFO { int nOffset; // 在二进制数据块中的偏移 int nLength; // 图片大小,单位字节 char szReserved[16]; // 预留字节 }NET_IMAGE_RELATION_EX_IMAGEINFO; ///@brief 一张大图检测到小图的结果 typedef struct tagNET_IMAGE_RELATION_EX { char szRequestID[64]; // 图片的请求ID int nBigPicId; // 大图ID int nSmallPicNum; // 大图中小图张数 NET_SMALL_PIC_INFO stuSmallPicInfo[MAX_SMALLPIC_NUM]; // 大图中小图的信息 EM_MULTIFACE_DETECT_ERRCODE emDetectErrCode; // 大图检测小图结果错误码 NET_IMAGE_RELATION_LIST stuImageRelation[32]; // 大图检测结果列表 int nstuImageRelationNum; // 大图检测结果列表个数 UINT nToken; // 查询令牌 NET_IMAGE_RELATION_EX_IMAGEINFO stuImageInfo[32]; // 小图信息 int nImageNum; // 小图信息个数 char* pData; // 小图图片数据 BYTE bReserved[248]; // 保留字节 } NET_IMAGE_RELATION_EX; ///@brief 订阅大图检测小图进度回调结构体 typedef struct tagNET_CB_MULTIFACE_DETECT_STATE_EX { int nProgress; // 检测进度 NET_IMAGE_RELATION_EX stuImageRelation; // 大图检测小图的检测结果 BYTE byReserved[512]; // 保留字节 } NET_CB_MULTIFACE_DETECT_STATE_EX; ///@brief 订阅大图检测小图进度回调函数原型 typedef void (CALLBACK *fMultiFaceDetectStateEx)(LLONG lAttachHandle, NET_CB_MULTIFACE_DETECT_STATE_EX *pstStates, LDWORD dwUser); ///@brief CLIENT_AttachDetectMultiFaceState 接口输入参数 typedef struct tagNET_IN_MULTIFACE_DETECT_STATE { DWORD dwSize; // 此结构体大小 BYTE bReserved[4]; // 用于字节对齐 fMultiFaceDetectState cbMultiFaceDetectState; //回调函数 LDWORD dwUser; //用户数据 fMultiFaceDetectStateEx cbMultiFaceDetectStateEx; // 回调函数扩展(推荐使用) UINT nTokens[10]; // 查询令牌 int nTokensNum; // 查询令牌个数, 若为0,则默认订阅token为0的检测, 若为-1表示订阅全部token } NET_IN_MULTIFACE_DETECT_STATE; ///@brief CLIENT_AttachDetectMultiFaceState 接口输出参数 typedef struct tagNET_OUT_MULTIFACE_DETECT_STATE { DWORD dwSize; // 此结构体大小 } NET_OUT_MULTIFACE_DETECT_STATE; ///@brief 人员重建信息 typedef struct tagNET_REABSTRACT_PERSON_INFO { char szUID[DH_MAX_PERSON_ID_LEN]; // 人员唯一标识符 BYTE bReserved[1024]; } NET_REABSTRACT_PERSON_INFO; ///@brief CLIENT_FaceRecognitionReAbstract 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 int nPersonNum; // 重新建模的人员个数 NET_REABSTRACT_PERSON_INFO *pstReAbstractPersonInfo; // 重新建模的人员信息 } NET_IN_FACE_RECOGNITION_REABSTRACT_INFO; ///@brief CLIENT_FaceRecognitionReAbstract 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 } NET_OUT_FACE_RECOGNITION_REABSTRACT_INFO; ///@brief CLIENT_FaceRecognitionGroupReAbstract 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_GROUP_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 int nGroupNum; // 人员组个数 char szGroupId[MAX_GOURP_NUM][DH_COMMON_STRING_64]; // 人员组ID } NET_IN_FACE_RECOGNITION_GROUP_REABSTRACT_INFO; ///@brief CLIENT_FaceRecognitionGroupReAbstract 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_GROUP_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 UINT nToken; // 重建令牌,可以用该令牌来中止重建 } NET_OUT_FACE_RECOGNITION_GROUP_REABSTRACT_INFO; ///@brief CLIENT_FaceRecognitionStopGroupReAbstract 接口输入参数 typedef struct tagNET_IN_FACE_RECOGNITION_STOP_GROUP_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 UINT nToken; // 重建令牌 } NET_IN_FACE_RECOGNITION_STOP_GROUP_REABSTRACT_INFO; ///@brief CLIENT_FaceRecognitionStopGroupReAbstract 接口输出参数 typedef struct tagNET_OUT_FACE_RECOGNITION_STOP_GROUP_REABSTRACT_INFO { DWORD dwSize; // 此结构体大小 } NET_OUT_FACE_RECOGNITION_STOP_GROUP_REABSTRACT_INFO; ///@brief CLIENT_GetFaceParam 接口输入参数 typedef struct tagNET_IN_GET_FACE_PARAM { DWORD dwSize; // 此结构体大小 int nChannel; // 通道号 } NET_IN_GET_FACE_PARAM; ///@brief CLIENT_GetFaceParam 接口输出参数 typedef struct tagNET_OUT_GET_FACE_PARAM { DWORD dwSize; // 此结构体大小 int nRegMinQuality; // 图片质量阀值, 1-100 UINT nMinFaceSize; // 入库最小目标像素过滤, 真实分辨率下, 单位像素, 默认0表示不生效 unsigned short nConfidence; // 入库目标检测置信度过滤, 1-100, 默认0表示不生效 unsigned short nAlignScore; // 入库目标关键点置信度过滤, 1-100, 默认0表示不生效 short nRoll; // 入库目标角度过滤 翻滚角, -90~90, 默认0表示不生效 short nPitch; // 入库目标角度过滤 俯仰角, -90~90, 默认0表示不生效 short nYaw; // 入库目标角度过滤 航偏角, -90~90, 默认0表示不生效 BYTE reserved[2]; // 保留字节 } NET_OUT_GET_FACE_PARAM; ///@brief CLIENT_SetFaceParam 接口输入参数 typedef struct tagNET_IN_SET_FACE_PARAM { DWORD dwSize; // 此结构体大小 int nChannel; // 通道号 int nRegMinQuality; // 图片质量阀值, 1-100 UINT nMinFaceSize; // 入库最小目标像素过滤, 真实分辨率下, 单位像素, 默认0表示不生效 unsigned short nConfidence; // 入库目标检测置信度过滤, 1-100, 默认0表示不生效 unsigned short nAlignScore; // 入库目标关键点置信度过滤, 1-100, 默认0表示不生效 short nRoll; // 入库目标角度过滤 翻滚角, -90~90, 默认0表示不生效 short nPitch; // 入库目标角度过滤 俯仰角, -90~90, 默认0表示不生效 short nYaw; // 入库目标角度过滤 航偏角, -90~90, 默认0表示不生效 BYTE reserved[6]; // 保留字节 } NET_IN_SET_FACE_PARAM; ///@brief CLIENT_SetFaceParam 接口输出参数 typedef struct tagNET_OUT_SET_FACE_PARAM { DWORD dwSize; // 此结构体大小 } NET_OUT_SET_FACE_PARAM; ///@brief 权限组信息 typedef struct tagNET_PER_GROUP_INFO { UINT nPerGroupID; // 权限组编号 char szName[128]; // 权限组名称 DH_TSECT stuTimeSection[DH_N_SCHEDULE_TSECT][DH_N_REC_TSECT]; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 int nChannelCount; // 拥有权限的通道个数 UINT nPerChannel[600]; // 拥有权限的通道 char szComment[256]; // 备注 BYTE byReserved[256]; // 保留字节 } NET_PER_GROUP_INFO; ///@brief 更新权限错误码 typedef enum tagNET_EM_OPERATE_ERROR_CODE { NET_EM_OPERATE_ERROR_CODE_UNKNOWN = -1, // 未知 NET_EM_OPERATE_ERROR_CODE_SUCCESS = 0, // 成功 NET_EM_OPERATE_ERROR_CODE_GROUP_NOT_EXIST = 1, // 权限组不存在 } NET_EM_OPERATE_ERROR_CODE; ///@brief 修改权限错误码 typedef enum tagNET_EM_MODIFY_ERROR_CODE { NET_EM_MODIFY_ERROR_CODE_UNKNOWN = -1, // 未知 NET_EM_MODIFY_ERROR_CODE_SUCCESS = 0, // 成功 NET_EM_MODIFY_ERROR_CODE_GROUP_NOT_EXIST = 1, // 权限组不存在 NET_EM_MODIFY_ERROR_CODE_UID_NOT_EXIST = 2, // 人员UID不存在或为空 } NET_EM_MODIFY_ERROR_CODE; ///@brief 权限操作类型 typedef enum tagNET_EM_PERMISSSION_OPERATE_TYPE { NET_EM_OPERATE_TYPE_UNKNOWN = -1, // 未知 NET_EM_OPERATE_TYPE_ADD = 0, // 增加权限 NET_EM_OPERATE_TYPE_MODIFY = 1, // 修改权限 NET_EM_OPERATE_TYPE_DELETE = 2, // 删除权限 } NET_EM_PERMISSSION_OPERATE_TYPE; ///@brief CLIENT_OperatePerGroup 接口输入参数 typedef struct tagNET_IN_OPERATE_PER_GROUP { DWORD dwSize; // 结构体大小 int nGroupCount; // 实际权限组个数 NET_PER_GROUP_INFO stuGroupInfo[100]; // 权限组信息 NET_EM_PERMISSSION_OPERATE_TYPE emOperateType; // 操作类型 } NET_IN_OPERATE_PER_GROUP; ///@brief CLIENT_OperatePerGroup 接口输出参数 typedef struct tagNET_OUT_OPERATE_PER_GROUP { DWORD dwSize; // 结构体大小 int nGroupCount; // 权限组个数 int nPerGroupID[100]; // 权限组编号 int nErrCodeCount; // 错误码个数 NET_EM_OPERATE_ERROR_CODE emErrCode[100]; // 错误码 } NET_OUT_OPERATE_PER_GROUP; ///@brief 人员权限信息 typedef struct tagNET_PERMISSION_PERSON_INFO { UINT nUID; // 人员的UID int nGroupCount; // 人员权限组个数 int nPerGroupID[100]; // 人员的权限组编号, 范围0-99 BYTE byReserved[128]; // 保留字节 } NET_PERMISSION_PERSON_INFO; ///@brief CLIENT_ModifyPermission 接口输入参数 typedef struct tagNET_IN_MODIFY_PERMISSION { DWORD dwSize; // 结构体大小 int nPersonCount; // 人员个数 NET_PERMISSION_PERSON_INFO stuPersonInfo[300]; // 人员权限信息 } NET_IN_MODIFY_PERMISSION; ///@brief CLIENT_ModifyPermission 接口输出参数 typedef struct tagNET_OUT_MODIFY_PERMISSION { DWORD dwSize; // 结构体大小 int nUIDCount; // UID个数 int nUID[300]; // UID int nErrCodeCount; // 错误码个数 NET_EM_MODIFY_ERROR_CODE emErrCode[300]; // 错误码 } NET_OUT_MODIFY_PERMISSION; ///@brief 人员的权限组信息开始查询条件 typedef struct tagNET_STARTFIND_PERMISSION_CONDITION { UINT nUIDCount; // 人员唯一标识个数,值为0表示查询组内的所有人员权限信息 UINT nUIDs[1024]; // 人员唯一标识列表 UINT nGroupIDCount; // 查询库个数,值为0表示查询所有组内的人员权限信息 UINT nGroupID[128]; // 查询库列表 char szReserved[2048]; // 保留字节 }NET_STARTFIND_PERMISSION_CONDITION; ///@brief CLIENT_StartFindPermission 接口输入参数 typedef struct tagNET_IN_STARTFIND_PERMISSION { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 NET_STARTFIND_PERMISSION_CONDITION stuPermissionCondition; // 查询条件,值为空时表示查询设备上的所有人员的权限信息 }NET_IN_STARTFIND_PERMISSION; ///@brief CLIENT_StartFindPermission 接口输出参数 typedef struct tagNET_OUT_STARTFIND_PERMISSION { DWORD dwSize; // 结构体大小 int nTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_STARTFIND_PERMISSION; ///@brief 人员的权限组信息查询条件 typedef struct tagNET_DOFIND_PERMISSION_CONDITION { UINT nBeginNumber; // 查询起始序号,表示从nBeginNumber条记录开始,取nCount条记录返回,最大值不超过CLIENT_StartFindPermission出参中nTotalCount int nCount; // 每次获取的条数,不应超过1024 char szReserved[128]; // 保留字节 }NET_DOFIND_PERMISSION_CONDITION; ///@brief CLIENT_DoFindPermission 接口输入参数 typedef struct tagNET_IN_DOFIND_PERMISSION { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 NET_DOFIND_PERMISSION_CONDITION stuPermissionCondition; // 查询条件,值为空时表示查询设备上的所有人员的权限信息 }NET_IN_DOFIND_PERMISSION; ///@brief 候选人员信息 typedef struct tagNET_PERMISSION_CANDIDATES_INFO { UINT nUID; // 人员UID int nPerGroupIDCount; // 权限组编号个数 UINT nPerGroupID[100]; // 权限组编号,范围0-99 char szReserved[1024]; // 保留字节 }NET_PERMISSION_CANDIDATES_INFO; ///@brief CLIENT_DoFindPermission 接口输出参数 typedef struct tagNET_OUT_DOFIND_PERMISSION { DWORD dwSize; // 结构体大小 int nCadidatesFound; // 实际返回的查询到的条数 NET_PERMISSION_CANDIDATES_INFO* pstCandidates; // 候选人员信息列表,不超过1024, 实际返回个数同nCadidatesFound,内存由用户申请释放,申请大小不小于nMaxNum*sizeof(NET_PERMISSION_CANDIDATES_INFO) int nMaxNum; // 用户分配内存的个数 char szReserved[4]; // 字节对齐 }NET_OUT_DOFIND_PERMISSION; ///@brief CLIENT_GetFaceRecognitionAppendToken 接口输入参数 typedef struct tagNET_IN_GET_FACE_RECOGNITION_APPEND_TOKEN { DWORD dwSize; // 结构体大小 }NET_IN_GET_FACE_RECOGNITION_APPEND_TOKEN; ///@brief CLIENT_GetFaceRecognitionAppendToken 接口输出参数 typedef struct tagNET_OUT_GET_FACE_RECOGNITION_APPEND_TOKEN { DWORD dwSize; // 结构体大小 UINT nToken; // 导入的令牌 }NET_OUT_GET_FACE_RECOGNITION_APPEND_TOKEN; ///////////////////////////// 刻录上传 ///////////////////////////////// ///@brief fBurnCheckCallBack 参数 typedef struct tagNET_CB_BURN_CHECK_STATE { DWORD dwSize; const char* szType; // 消息类型 // "Checking": 校验中 // "CheckResult": 校验结果 BOOL bCheckResult; // 校验结果, 用于"CheckResult", TRUE-成功, FALSE-失败 BYTE byProgress; // 校验进度, 用于"Checking", 百分比, 0~100 BYTE reserved[3]; } NET_CB_BURN_CHECK_STATE; ///@brief 刻录校验回调函数原形, lAttachHandle是CLIENT_AttachBurnCheckState的返回值 typedef void (CALLBACK *fBurnCheckCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_CB_BURN_CHECK_STATE* pstState, void* reserved, LDWORD dwUser); ///@brief CLIENT_AttachBurnCheckState 接口的输入参数(监听刻录校验状态) typedef struct tagNET_IN_ATTACH_BURN_CHECK { DWORD dwSize; fBurnCheckCallBack cbBurnCheck; // 刻录校验回调 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_BURN_CHECK; ///@brief CLIENT_AttachBurnCheckState 接口的输出参数(监听刻录校验状态) typedef struct tagNET_OUT_ATTACH_BURN_CHECK { DWORD dwSize; } NET_OUT_ATTACH_BURN_CHECK; ///////////////////////////// 逻辑设备 ///////////////////////////////// ///@brief 回调信息 typedef struct tagNET_CB_CAMERASTATE { DWORD dwSize; int nChannel; // 通道 CONNECT_STATE emConnectState; // 连接状态 }NET_CB_CAMERASTATE; ///@brief CLIENT_AttachCameraState()回调函数原形, 每次1条,pBuf->dwSize == nBufLen typedef void (CALLBACK *fCameraStateCallBack) (LLONG lLoginID, LLONG lAttachHandle, const NET_CB_CAMERASTATE *pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachCameraState()输入参数 typedef struct tagNET_IN_CAMERASTATE { DWORD dwSize; int * pChannels; // 观察的通道号,数组元素中,有一个是-1,则观察所有通道 // 由用户申请内存,大小为sizeof(int)*nChannels int nChannels; // pChannels指针指向的数组元素个数 fCameraStateCallBack cbCamera; // 状态回调函数 LDWORD dwUser; // 用户数据 }NET_IN_CAMERASTATE; ///@brief CLIENT_AttachCameraState()输出参数 typedef struct tagNET_OUT_CAMERASTATE { DWORD dwSize; int nObjectID; // 物体ID,每个ID表示一个唯一的物体 }NET_OUT_CAMERASTATE; /////////////////////////////特殊版本///////////////////////////////// ///@brief 触发设备抓图,叠加卡号信息 typedef struct __NET_SNAP_COMMANDINFO { char szCardInfo[16]; // 卡号信息 char reserved[64]; // 保留 } NET_SNAP_COMMANDINFO, LPNET_SNAP_COMMANDINFO; ///@brief 通道状态 typedef struct { int nChannelNum; // 通道号 char szUseType[32]; // 通道用途 DWORD dwStreamSize; // 流量大小(单位:kb/s) char reserved[32]; // 保留 } DHDEV_USE_CHANNEL_STATE; ///@brief 用户信息 typedef struct { char szUserName[32]; // 用户名 char szUserGroup[32]; // 用户组 NET_TIME time; // 登入时间 int nOpenedChannelNum; // 开启的通道个数 DHDEV_USE_CHANNEL_STATE channelInfo[DH_MAX_CHANNUM]; char szIpAddress[DH_MAX_IPADDR_LEN_EX]; // ip地址 char reserved[24]; } DHDEV_USER_NET_INFO; ///@brief 网络运行状态信息 typedef struct { int nUserCount; // 用户数量 DHDEV_USER_NET_INFO stuUserInfo[32]; char reserved[256]; }DHDEV_TOTAL_NET_STATE; ///@brief 用户信息 typedef struct { char szIpAddress[DH_MAX_IPADDR_LEN]; // ip地址 char szUserGroup[32]; // 用户组 char szUserName[32]; // 用户名 char reserved[64]; }DHDEV_USER_REJECT_INFO; ///@brief 剔除用户 typedef struct { int nUserCount; // 用户数量 DHDEV_USER_REJECT_INFO stuUserInfo[10]; char reserved[256]; }DHDEV_REJECT_USER; ///@brief 用户信息 typedef struct { char szIpAddress[DH_MAX_IPADDR_LEN]; // ip地址 char szUserGroup[32]; // 用户组 char szUserName[32]; // 用户名 int nForbiddenTime; // 屏蔽时间 char reserved[64]; }DHDEV_USER_SHIELD_INFO; ///@brief 屏蔽用户 typedef struct { int nUserCount; // 用户数量 DHDEV_USER_SHIELD_INFO stuUserInfo[10]; char reserved[256]; }DHDEV_SHIELD_USER; ///@brief 经纬度 typedef struct {// 经度在前,维度在后 char chPreLogi; // 经度前置标志:N、S、W、E,分别表示北、南、西、东。 char chPreLati; // 纬度前置标志:N、S、W、E,分别表示北、南、西、东。 BYTE reserved[6]; // 保留字节,对齐 double dbLongitude; // 经度 double dbLatitude; // 纬度 }DHDEV_LONGI_LATI; ///@brief 导航信息和短消息 typedef struct { char szPhoneNum[DH_MAX_PHONE_NO_LEN]; // 电话号码 NET_TIME stMsgTime; // 信息发送时间 char szMsgType[DH_MAX_MSGTYPE_LEN]; // 信息类型(导航信息-Navigation; 短消息--SMS) char szSmsContext[DH_MAX_MSG_LEN]; // 发送的信息内容 DHDEV_LONGI_LATI stLogiLati; // 起始经纬度 unsigned int uFlag; // 01:标志发来的是真实经纬度 char szNavigationType[16]; // TNC,为凯立德地图中心导航格式,TXZ,为天行者地图中心导航格式 char szAddress[32]; // 地点信息 char szNavigationMode[32]; // 导航模式 有Recommend推荐,Economical经济型,Fastest 最快;Shortest 最短; DHDEV_LONGI_LATI stPassLogiLati[5]; // 经由点 DHDEV_LONGI_LATI stNoPassLogiLati[5]; // 不经由点 BYTE reserved[256]; }DHDEV_NAVIGATION_SMSS; ///@brief 图象水印配置 typedef struct __DHDEV_WATERMAKE_CFG { DWORD dwSize; int nEnable; // 使能 int nStream; // 码流(1~n)0-所有码流 int nKey; // 数据类型(1-文字,2-图片) char szLetterData[DH_MAX_WATERMAKE_LETTER]; // 文字 char szData[DH_MAX_WATERMAKE_DATA]; // 图片数据 BYTE bReserved[512]; // 保留 } DHDEV_WATERMAKE_CFG; ///@brief 存储位置设置结构体,每通道独立设置,每通道可以选择各种存储类型, 目前包括本地, 可移动, 远程存储. typedef struct { DWORD dwSize; DWORD dwLocalMask; // 本地存储掩码;按位表示: // 第一位:系统预录,第二位:定时录像,第三位:动检录像, // 第四位:报警录像,第五位:卡号录像,第六位:手动录像 DWORD dwMobileMask; // 可移动存储掩码 存储掩码如本地存储掩码 int RemoteType; // 远程存储类型 0: Ftp 1: Smb DWORD dwRemoteMask; // 远程存储掩码 存储掩码如本地存储掩码 DWORD dwRemoteSecondSelLocal; // 远程异常时本地存储掩码 DWORD dwRemoteSecondSelMobile; // 远程异常时可移动存储掩码 char SubRemotePath[MAX_PATH_STOR]; // 远程目录, 其中长度为240 DWORD dwFunctionMask; // 功能屏蔽位,按位表示,bit0 = 1:屏蔽抓图事件触发存储位置功能 DWORD dwAutoSyncMask; // 是否同步掩码;远程存储网络故障恢复后,自动将本地存储的数据同步到远程存储。 BYTE bAutoSyncRange; // 从网络恢复的时刻开始,需要往前同步的数据时间范围,小时为单位。0:同步所有数据 1:1小时内的数据 n:n小时内的数据 char reserved[119]; } DH_STORAGE_STATION_CFG; #define MAX_ALARM_DECODER_NUM 16 ///@brief 报警解码器 typedef struct { DWORD dwAlarmDecoder; // 现在最多支持8个报警输入口,留8位待以后扩展 BYTE bDecoderIndex; // 表示第几个报警解码器 BYTE bReserved[3]; } ALARM_DECODER; ///@brief 报警解码器报警 typedef struct { int nAlarmDecoderNum; ALARM_DECODER stuAlarmDecoder[MAX_ALARM_DECODER_NUM]; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[32]; } ALARM_DECODER_ALARM; ///@brief DSP报警 typedef struct { BOOL bError; //0,DSP正常 1,DSP异常 DWORD dwErrorMask; //按位表示,非0表示有此错误,0表示没有。(目前每次报警只有一位有效) //bit DSP报警 // 1 DSP加载失败 // 2 DSP错误 // 3 制式不对 // 4 分辨率不支持 // 5 数据格式不支持 // 6 找不到I帧 DWORD dwDecChnnelMask; //按位表示,报警的解码通道号,dwErrorMask为DSP错误,制式不对,分辨率不支持,数据格式不支持时此项有效 DWORD dwDecChnnelMask1; //按位表示,33-64通道的报警的解码通道号, dwErrorMask为DSP错误,制式不对,分辨率不支持,数据格式不支持时此项有效 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[24]; }DSP_ALARM; ///@brief 光纤编码能力报警 typedef struct { int nFDDINum; BYTE bAlarm[256]; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_FDDI_ALARM; #define ALARM_PTZ_LOCATION_INFO DH_PTZ_LOCATION_INFO ///@brief 新音频检测报警配置 typedef struct { BOOL bEnable; // 报警输入使能 int Volume_min; // 音量的最小值 int Volume_max; // 音量的最大值 char reserved[128]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; DH_MSG_HANDLE struHandle; // 处理方式 } DH_AUDIO_DETECT_INFO; ///@brief 音频检测配置 typedef struct { DWORD dwSize; int AlarmNum; DH_AUDIO_DETECT_INFO AudioDetectAlarm[DH_MAX_AUDIO_IN_NUM]; char reserved[256]; } DH_AUDIO_DETECT_CFG; ///@brief 矩阵配置 typedef struct { BOOL bTourEnable; // 轮巡使能 int nTourPeriod; // 轮巡间隔,单位秒, 5-300 DWORD dwChannelMask; // 轮巡的通道,掩码形式表示 char reserved[64]; }DH_VIDEOGROUP_CFG; ///@brief 本机矩阵控制策略配置 typedef struct { DWORD dwSize; int nMatrixNum; // 矩阵个数(注:不允许修改) DH_VIDEOGROUP_CFG struVideoGroup[DH_MATRIX_MAXOUT]; char reserved[32]; } DHDEV_VIDEO_MATRIX_CFG; ///@brief WEB路径配置 typedef struct { DWORD dwSize; BOOL bSnapEnable; // 是否抓图 int iSnapInterval; // 抓图周期 char szHostIp[DH_MAX_IPADDR_LEN]; // HTTP主机IP WORD wHostPort; int iMsgInterval; // 状态消息发送间隔 char szUrlState[DH_MAX_URL_LEN]; // 状态消息上传URL char szUrlImage[DH_MAX_URL_LEN]; // 图片上传Url char szDevId[DH_MAX_DEV_ID_LEN]; // 机器的web编号 BYTE byReserved[2]; } DHDEV_URL_CFG; ///@brief OEM查询 typedef struct { char szVendor[DH_MAX_STRING_LEN]; char szType[DH_MAX_STRING_LEN]; char reserved[128]; } DHDEV_OEM_INFO; ///@brief 视频OSD叠加配置 typedef struct { DWORD rgbaFrontground; // 物件的前景;按字节表示,分别为红、绿、蓝和透明度 DWORD rgbaBackground; // 物件的背景;按字节表示,分别为红、绿、蓝和透明度 RECT rcRelativePos; // 位置,物件边距与整长的比例*8191 BOOL bPreviewBlend; // 预览叠加使能 BOOL bEncodeBlend; // 编码叠加使能 BYTE bReserved[4]; // 保留 } DH_DVR_VIDEO_WIDGET; ///@brief OSD信息 typedef struct { DH_DVR_VIDEO_WIDGET StOSD_POS; // OSD叠加的位置和背景色 char SzOSD_Name[DH_VIDEO_OSD_NAME_NUM]; // OSD叠加的名称 }DH_DVR_VIDEOITEM; ///@brief 每个通道的OSD信息 typedef struct { DWORD dwSize; DH_DVR_VIDEOITEM StOSDTitleOpt [DH_VIDEO_CUSTOM_OSD_NUM]; // 每个通道的OSD信息 BYTE bReserved[16]; // 保留 } DH_DVR_VIDEOOSD_CFG; ///@brief 配置CDMA/GPRS网络信息 ///@brief 时间段结构 typedef struct { BYTE bEnable; // 时间段使能,1表示该时间段有效,0表示该时间段无效。 BYTE bBeginHour; BYTE bBeginMin; BYTE bBeginSec; BYTE bEndHour; BYTE bEndMin; BYTE bEndSec; BYTE bReserved; //保留 } DH_3G_TIMESECT, *LPDH_3G_TIMESECT; ///@brief 配置 typedef struct { DWORD dwSize; BOOL bEnable; // 无线模块使能标志 DWORD dwTypeMask; // 设备支持网络类型掩码;按位表示,第一位;自动选择; // 第二位:TD-SCDMA网络;第三位:WCDMA网络; // 第四位:CDMA 1.x网络;第五位:CDMA2000网络;第六位:GPRS网络; // 第七位:EVDO网络;第八位:WIFI DWORD dwNetType; // 当前的无线网络类型,为EM_GPRSCDMA_NETWORK_TYPE值 char szAPN[128]; // 接入点名称 char szDialNum[128]; // 拨号号码 char szUserName[128]; // 拨号用户名 char szPWD[128]; // 拨号密码 /* 下面是设备的只读部分 */ BOOL iAccessStat; // 无线网络注册状态 char szDevIP[16]; // 前端设备拨号IP,字符串, 包括'\0'结束符共16byte char szSubNetMask [16]; // 前端设备拨号子网掩码,字符串, 包括'\0'结束符共16byte char szGateWay[16]; // 前端设备拨号网关,字符串, 包括'\0'结束符共16byte /* 上面是设备的只读部分 */ int iKeepLive; // 保活时间 DH_3G_TIMESECT stSect[DH_N_WEEKS][DH_N_TSECT]; // 3G拨号时间段,有效时间段之内,开启拨号;有效时间段之外,关闭拨号。 BYTE byActivate; // 是否需要被语音或短信激活 BYTE bySimStat; // SIM(UIM)状态:存在1,不存在0 (只读数据) 占用Reserved的1个字节 char szIdentify[128]; // 鉴权方式 bool bPPPEnable; // PPP拨号,0-断开ppp连接,1-ppp拨号 BYTE bPPPState; // PPP拨号状态(只读),具体含义见EM_MOBILE_PPP_STATE BYTE bNetCardState; // 网卡所处状态(只读),具体含义见EM_3GMOBILE_STATE char szPhyCardNo[32]; // 物理卡号 char Reserved[4]; // 保留字节,用于扩展 BYTE byPinShow; // PIN码是否显示(只读), 0-不支持, 1-显示, 2-不显示 BYTE byPinEnable; // PIN码设置使能(只读), 0-不使能, 1-使能 BYTE byPinCount; // PIN码剩余设置次数(只读), 0~3 /*-------------------------------以下字段设置dwSize后才有效------------------------------------*/ char szPinNo[16]; // PIN码值, 字母或数字的任意组合 } DHDEV_CDMAGPRS_CFG; ///@brief 录像打包长度配置 typedef struct { DWORD dwSize; int nType; // 0:按时间,1:按大小 int nValue; // nType = 0时:单位分钟,nType = 1时:单位KB char Reserved[128]; // 保留字节,用于扩展 } DHDEV_RECORD_PACKET_CFG; ///@brief (定向)主动注册服务器信息 typedef struct __DEV_AUTOREGISTER_INFO { LONG lConnectionID; // 连接ID char szServerIp[DH_MAX_IPADDR_LEN]; // 主动注册服务器的IP int nPort; // 主动注册服务器端口0- 65535 int nState; // 服务器的状态:0-注册失败;1-注册成功; 2-连接失败 char reserved[16]; } DEV_AUTOREGISTER_INFO; ///@brief 查询设备上主动注册服务器信息 typedef struct __DEV_SERVER_AUTOREGISTER { DWORD dwSize; int nRegisterSeverCount; // 主动注册服务器个数 DEV_AUTOREGISTER_INFO stuDevRegisterSeverInfo[DH_CONTROL_AUTO_REGISTER_NUM]; // 各主动注册服务器信息 char reserved[256]; } DEV_SERVER_AUTOREGISTER, *LPDEV_SERVER_AUTOREGISTER; ///@brief 附件刻录附件上传 typedef struct { DWORD dwSize; char szSourFile[MAX_PATH_STOR]; // 源文件路径 int nFileSize; // 源文件大小,如果小于等于0,sdk自行计算文件大小. char szBurnFile[MAX_PATH_STOR]; // 刻录后的文件名 BYTE bReserved[64]; } DHDEV_BURNFILE_TRANS_CFG; ///@brief 升级文件上传 typedef struct { char szFile[MAX_PATH_STOR]; // 升级文件路径 int nFileSize; // 升级文件大小 BYTE byChannelId; // 通道号 BYTE byManufactryType; // 厂商类型,详见EM_IPC_TYPE BYTE byReserved[126]; // 保留 }DHDEV_UPGRADE_FILE_INFO; ///@brief 禁止/允许名单上传 typedef struct { char szFile[MAX_PATH_STOR]; // 禁止/允许名单文件路径 int nFileSize; // 升级文件大小 BYTE byFileType; // 当前文件类型,0-禁止名单,1-允许名单 BYTE byAction; // 动作,0-覆盖,1-追加 BYTE byReserved[126]; // 保留 }DHDEV_BLACKWHITE_LIST_INFO; ///@brief 禁止/允许名单下载 typedef struct { char szFile[MAX_PATH_STOR]; // 禁止/允许名单文件保存路径 BYTE byFileType; // 当前文件类型,0-禁止名单,1-允许名单 BYTE byReserved[127]; // 保留 }DHDEV_LOAD_BLACKWHITE_LIST_INFO; ///@brief 郑州威科姆EC_U视频数据叠加使能配置 typedef struct { BOOL bEnable; // 使能 int nPort; // 端口 BYTE bReserved[64]; } DHDEV_OSD_ENABLE_CFG; ///@brief 车载相关配置:北京公交使用配置 typedef struct { BOOL bAutoBootEnable; //自动开机使能 DWORD dwAutoBootTime; //每天自动开机时间点, 单位秒,从0算起.[0,82800] BOOL bAutoShutDownEnable; //自动关机使能 DWORD dwAutoShutDownTime; //每天自动关机时间点, 单位秒,从0算起.[0,82800] DWORD dwShutDownDelayTime; //延时关机时间,单位秒. BYTE bEventNoDisk; //1,(Ignore:忽略); 2,(Reboot:重起系统) BYTE bWifiEnable; //是否支持车载无线模块. BYTE bUpperSpeedEnable; //是否使用超速判断 BYTE bLowerSpeedEnable; //是否使用低速判断 DWORD dwUpperSpeedValue; //超速值开区间(1,1000).公里/小时 DWORD dwLowerSpeedValue; //低速值开区间(1,1000).公里/小时 DWORD dwUpperSpeedDelayTime; //设置超速持续值 DWORD dwLowerSpeedDelayTime; //设置低速持续值 DWORD dwAlarmMaskEnable; //查询/设置叠加报警信息使能,0:关闭,1:打开, 每一位从低到高表示各个外部报警通道0-N使能 BOOL bSpeedOverAlarmRecordEnable; // 超速报警联动录像使能 BOOL bSpeedLowAlarmRecordEnable; // 低速报警联动录像使能 BYTE bReserved[480]; //reserved byte. } DHDEV_ABOUT_VEHICLE_CFG; ///@brief atm:查询叠加相关能力信息 typedef struct { DWORD dwDataSource; //按位, 位0:Net(网络), 位1:Com(串口), 位2:Com422(串口422) char szProtocol[32][33]; //协议名字,最大长度32(保留一个结束符). BYTE bReserved[256]; } DHDEV_ATM_OVERLAY_GENERAL; ///@brief atm:配置叠加设置 typedef struct { DWORD dwDataSource; // 1:Net(网络), 2:Com(串口), 3:Com422(串口422) char szProtocol[33]; // 协议名字,由DHDEV_ATM_OVERLAY_GENERAL返回 BYTE bReserved_1[3]; DWORD dwChannelMask; // 叠加的通道号,掩码表示。 BYTE bMode; // 1:Preview(预览叠加), 2:Encode(编码叠加), 3:Preview&Encode(预览和编码叠加) BYTE bLocation; // 1:LeftTop(左上), 2:LeftBottom(左下), 3:RightTop(右上), 4:RightBottom(右下) BYTE bReserved_3[2]; int nLatchTime; // 叠加显示延迟时间,卡号录像延时关闭时间,0~65535s BYTE bReserved_4[3]; BYTE bRecordSrcKeyNum; // 关键字个数 int nRecordSrcKey[32]; // 各视频通道对应数据源关键字(不同通道可以对应不同的数据源) BYTE bReserved_2[120]; } DHDEV_ATM_OVERLAY_CONFIG; ///@brief atm:配置叠加设置 typedef struct { DWORD dwSize; // 结构体大小 DWORD dwDataSource; // 1:Net(网络), 2:Com(串口), 3:Com422(串口422) char szProtocol[33]; // 协议名字, BYTE bReserved_1[3]; DWORD dwChannelMask[8]; // 叠加的通道号,掩码表示, dwChannelMask[0]表示0-31通道,依此类推。 BYTE bMode; // 1:Preview(预览叠加), 2:Encode(编码叠加), 3:Preview&Encode(预览和编码叠加) BYTE bLocation; // 1:LeftTop(左上), 2:LeftBottom(左下), 3:RightTop(右上), 4:RightBottom(右下) BYTE bReserved_3[2]; int nLatchTime; // 叠加显示延迟时间,卡号录像延时关闭时间,0~65535s BYTE bReserved_4[3]; BYTE bRecordSrcKeyNum; // 关键字个数 int nRecordSrcKey[256]; // 各视频通道对应数据源关键字(不同通道可以对应不同的数据源) } DHDEV_ATM_OVERLAY_CONFIG_EX; ///@brief 雷达配置——车速 typedef struct tagNET_RADAR_CARSPEED_INFO { int nTriggerLower; // 触发值下限 范围 1~255km/h int nTriggerUpper; // 触发值上限 范围 1~255km/h int nLimitLower; // 限速值下限 范围 5~255km/h int nLimitUpper; // 限速值上限 范围 5~255km/h } NET_RADAR_CARSPEED_INFO; ///@brief 雷达配置 typedef struct tagDEV_DAHUA_RADAR_CONFIG { int nAngle; // 角度,用于修正雷达探头安装的角度造成的速度误差 单位度,范围0~45 BOOL bLowSpeed; // 是否启用低限速,为 TRUE NET_RADAR_CARSPEED_INFO 结构中各下限值有效 BOOL bSpeedForSize; // 是否启用大小车限速,为 FALSE 时仅小车速度配置(stuSmallCarSpeed)有效 NET_RADAR_CARSPEED_INFO stuSmallCarSpeed; // 小车速度配置,bSpeedForSize 为 TRUE 时 nTriggerLower 成员同时也代表中车和大车的触发值下限 NET_RADAR_CARSPEED_INFO stuMediumCarSpeed; // 中车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效 NET_RADAR_CARSPEED_INFO stuBigCarSpeed; // 大车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效 char szName[256]; // 设备安装地址 int nSensitivity; // 灵敏度 范围0~5,0最高 int nDetectMode; // 检测模式,取值:-1 无意义 0 前向来车 1 前向去车 2 后向来车 3 后向去车 4 前向双向 5 后向双向 BYTE bReserved[1024]; } DEV_DAHUA_RADAR_CONFIG; ///@brief 森思泰克77Ghz网络雷达配置 typedef struct tagNET_STJ77D5_RADAR_CONFIG { UINT nLaneNumber; // 车道个数, 范围1~4 UINT nDetectMode; // 道路方向, 取值:17 来向, 18 去向, 19 双向 double dbHeight; // 雷达安装高度 ,0.01m/bit; 范围0~25 double dbHorizonShift; // 水平偏移, 0.2m/bit; 范围-25~25 UINT nLaneCount; // 车道个数 double dbLaneWidth[4]; // 车道1-4宽度, 0.01m/bit; 范围2~5。第一个元素是车道1宽度, 以此类推 double dbStopLine; // 停止线距离, 0.1m/bit; 范围20~60 UINT nSceneMode; // 雷达工作场景模式, 0:未知, 1:主路模式, 2:路口模式 double dbShiftAngle; // 角度修正 ,0.1/bit; 范围-12~12 double dbLengthwayShiftDistance; // 纵向距离修正, 0.2m/bit; 范围-25~25 double dbSensitive; // 灵敏度设置, 0.1/bit; 范围0~3 UINT nIDset; // ID设置; 范围0~4 UINT nWorkMode; // 雷达工作模式, 0:调试模式 1:工作模式 UINT nRadarFlowTime; // 雷达流量统计时间间隔, 单位:s UINT nRadarFlowSwitch; // 雷达流量输出开关, 0:未知, 1:开启, 2:关闭 UINT nNonMotorDiscern; // 非机动车/行人识别控制开关, 0:未知, 1:开启, 2:关闭 int nVehicleDistinguish; // 车型分别能力;范围-10~10, 负值:大车门限降低, 正值:大车门限升高 UINT nStopTargetDisappearTime; // 停止目标消失时间,1s/bit, 0:关闭, 非0时:停止目标消失的时间 UINT nStartLane; // 雷达的起始车道号, 取值范围: 0~7 UINT nRadarLanNumber; // 雷达支持的车道数目, 取值范围:1~8 UINT nVirtualCoilTriggerCount; // 虚拟线圈个数 UINT nVirtualCoilTrigger[4]; // 虚拟线圈触发方式: 1:头线圈, 2:尾线圈, 3:头尾线圈, 90:线圈,不统计 UINT nVirtualCoilDistanceCount; // 虚拟线圈个数 double dbVirtualCoilDistance[4]; // 虚拟线圈起始位置(下边沿,y向距离雷达距离), 单位:m UINT nVirtualCoilLengthCount; // 虚拟线圈个数 double dbVirtualCoilLength[4]; // 虚拟线圈长度, 单位:m double dbCameraToRoadEndDistance; // 相机到车道监控面路口距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m) double dbCameraToStopLane; // 相机到停止线距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m) UINT nLaneDirection[4]; // 车道方向 UINT nLaneDirectionCount; // 车道个数 BYTE bReserved[1020]; }NET_STJ77D5_RADAR_CONFIG; ///@brief 雷达配置 typedef struct tagDEV_RADAR_CONFIG { DWORD dwSize; BOOL bEnable; // 是否开启功能 int nPort; // 串口端口号 DH_COMM_PROP stuCommAttr; // 串口属性 int nAddress; // 设备地址,如果串口上挂了多个串口设备,通过地址区分 int nPreSpeedWait; // 速度先来情况下等待时间,速度来时尚未抓拍 范围 (1 -- 5000ms) int nDelaySpeedWait; // 速度后来情况下等待时间,抓拍时还没有来速度 范围 (1 -- 5000ms) BOOL bDahuaRadarEnable; // 雷达配置是否可用 DEV_DAHUA_RADAR_CONFIG stuDhRadarConfig; // 雷达参数配置 BOOL bSTJ77D5RadarEnable; // 森思泰克77Ghz网络雷达配置是否可用 NET_STJ77D5_RADAR_CONFIG stuSTJ77D5RadarConfig; // 森思泰克77Ghz网络雷达配置 }DEV_RADAR_CONFIG; ///@brief 雷达RFID卡片信息 typedef struct tagNET_RADAR_RFIDCARD_CONFIG { char szCardID[24]; // 卡片ID UINT nValidTime; // 卡片有效时间的utc时间戳,单位秒 UINT nInvalidTime; // 卡片过期时间的utc时间戳,单位秒 char byReserved[256]; // 保留字节 }NET_RADAR_RFIDCARD_CONFIG; ///@brief 雷达RFID卡片信息配置 typedef struct tagNET_CFG_RADAR_RFIDCARD_INFO { DWORD dwSize; // 结构体大小 int nCardNum; // RFID卡片数量 NET_RADAR_RFIDCARD_CONFIG stuCardInfo[256]; // RFID卡片配置信息 }NET_CFG_RADAR_RFIDCARD_INFO; ///@brief 遥控器卡片信息 typedef struct tagNET_REMOTE_CARD_INFO { BOOL bEnable; // 卡片是否有效 char szCardID[24]; // 卡片ID char szName[128]; // 使用卡片的用户名 char szReserved[868]; // 保留字节 }NET_REMOTE_CARD_INFO; ///@brief 雷达一体机RFID遥控器卡片配置 typedef struct tagNET_CFG_RADAR_REMOTE_CARD_INFO { DWORD dwSize; // 结构体大小 UINT nMode; // 遥控器卡片模式, 0表示普通模式, 1表示管理模式 int nCardNum; // 遥控器卡片数量 NET_REMOTE_CARD_INFO stuCardInfo[1024]; // 遥控器卡片信息 }NET_CFG_RADAR_REMOTE_CARD_INFO; ///@brief RFID识别距离配置 typedef struct tagNET_CFG_RADAR_RFID_READ_DISTANCE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // RFIDReadDistance配置是否生效 int nDistance; // 有效距离(激光雷达的扫射半径), 扩大100倍使用, 单位:米 int nWidth; // 有效宽度(平行于法线的距离), 扩大100倍使用, 单位:米 }NET_CFG_RADAR_RFID_READ_DISTANCE_INFO; ///@brief 激光雷达地图构建静态背景阈值配置 typedef struct tagNET_CFG_RADAR_STATIC_BACKGROUND_INFO { DWORD dwSize; // 结构体大小 int nValue; // 静态背景阈值 }NET_CFG_RADAR_STATIC_BACKGROUND_INFO; #define DH_MAX_BACKUPDEV_NUM 16 #define DH_MAX_BACKUP_NAME 32 ///@brief 备份设备列表 typedef struct { int nBackupDevNum; // 实际的备份设备数量 char szBackupDevNames[DH_MAX_BACKUPDEV_NUM][DH_MAX_BACKUP_NAME]; // 备份设备的名称 } DHDEV_BACKUP_LIST, *LPDHDEV_BACKUP_LIST; ///@brief 备份设备介质类型 typedef enum __BACKUP_TYPE { BT_DHFS = 0, // 私有文件系统 BT_DISK, // 移动硬盘 BT_CDRW // 光盘刻录 } DHDEV_BACKUP_TYPE; ///@brief 备份设备接口类型 typedef enum __BACKUP_BUS { BB_USB = 0, // usb接口 BB_1394, // 1394接口 BB_IDE, // ide接口 BB_ESATA, // esata接口 } DHDEV_BACKUP_BUS; ///@brief 备份信息 typedef struct { char szName[32]; // 设备名 BYTE byType; // 备份设备的介质类型 枚举值见BACKUP_TYPE BYTE byBus; // 备份设备的接口类型 枚举值见BACKUP_BUS UINT nCapability; // 总容量, 以kBytes为单位 UINT nRemain; // 剩余容量,以kBytes为单位 char szDirectory[128]; // 远程备份的目录 } DHDEV_BACKUP_INFO, *LPDHDEV_BACKUP_INFO; ///@brief 备份信息 typedef struct { char szName[32]; // 设备名 UINT nCapability; // 总容量, 以kBytes为单位 UINT nRemain; // 当前备份剩余容量,以kBytes为单位 } DHDEV_BACKUP_FEEDBACK, *LPDHDEV_BACKUP_FEEDBACK; #define DH_MAX_BACKUPRECORD_NUM 1024 ///@brief 备份记录 typedef struct { char szDeviceName[DH_MAX_BACKUP_NAME]; //备份设备名称 int nRecordNum; //备份记录数量 NET_RECORDFILE_INFO stuRecordInfo[DH_MAX_BACKUPRECORD_NUM]; //备份记录信息 } BACKUP_RECORD, *LPBACKUP_RECORD; ///@brief 多通道打开视频输入 typedef struct { int iChannelID; // 通道号 DH_RealPlayType realplayType; // 视频类型 char reserve[32]; }DHDEV_IN_MULTIPLAY_PARAM; ///@brief 多通道打开视频输出 typedef struct { int iChannelID; // 通道号 LLONG lRealHandle; // 实时预览句柄 char reserve[32]; }DHDEV_OUT_MULTIPLAY_PARAM; /////////////////////////////平台接入///////////////////////////////// ///@brief 平台接入配置 - U网通 typedef struct { BOOL bChnEn; char szChnId[DH_INTERVIDEO_UCOM_CHANID]; } DH_INTERVIDEO_UCOM_CHN_CFG; ///@brief ucom配置 typedef struct { DWORD dwSize; BOOL bFuncEnable; // 接入功能使能 BOOL bAliveEnable; // 心跳使能 DWORD dwAlivePeriod; // 心跳周期,单位秒,0-3600 char szServerIp[DH_MAX_IPADDR_LEN]; // CMS的IP WORD wServerPort; // CMS的Port char szRegPwd[DH_INTERVIDEO_UCOM_REGPSW]; // 注册密码 char szDeviceId[DH_INTERVIDEO_UCOM_DEVID]; // 设备id char szUserName[DH_INTERVIDEO_UCOM_USERNAME]; char szPassWord[DH_INTERVIDEO_UCOM_USERPSW]; DH_INTERVIDEO_UCOM_CHN_CFG struChnInfo[DH_MAX_CHANNUM]; // 通道id,en } DHDEV_INTERVIDEO_UCOM_CFG; ///@brief 平台接入配置 - 阿尔卡特 typedef struct { DWORD dwSize; unsigned short usCompanyID[2]; // 公司ID,数值,不同的第三方服务公司,考虑4字节对齐,目前只用数组第一个 char szDeviceNO[32]; // 前端设备序列号,字符串,包括'\0'结束符共32byte char szVSName[32]; // 前端设备名称,字符串,包括'\0'结束符共16byte char szVapPath[32]; // VAP路径 unsigned short usTcpPort; // TCP端口,数值:数值 1~65535 unsigned short usUdpPort; // UDP端口,数值:数值 1~65535 bool bCsEnable[4]; // 中心服务器使能标志,数值:true使能,false不使能,考虑4字节对齐,目前只用数组第一个 char szCsIP[16]; // 中心服务器IP地址,字符串,包括'\0'结束符共16byte unsigned short usCsPort[2]; // 中心服务器端口,数值:数值 1~65535,考虑4字节对齐,目前只用数组第一个 bool bHsEnable[4]; // 心跳服务器使能标志,数值:true使能,false不使能,考虑4字节对齐,目前只用数组第一个 char szHsIP[16]; // 心跳服务器IP地址,字符串,包括'\0'结束符共16byte unsigned short usHsPort[2]; // 心跳服务器端口,数值:数值 1~65535,考虑4字节对齐,目前只用数组第一个 int iHsIntervalTime; // 心跳服务器间隔周期,数值(单位:秒) bool bRsEnable[4]; // 注册服务器使能标志,数值:true使能,false不使能,考虑4字节对齐,目前只用数组第一个 char szRsIP[16]; // 注册服务器IP地址,字符串,包括'\0'结束符共16byte unsigned short usRsPort[2]; // 注册服务器端口,数值:数值 1~65535,考虑4字节对齐,目前只用数组第一个 int iRsAgedTime; // 注册服务器有效时间,数值(单位:小时) char szAuthorizeServerIp[16]; // 鉴权服务器IP unsigned short usAuthorizePort[2]; // 鉴权服务器端口,考虑4字节对齐,目前只用数组第一个 char szAuthorizeUsername[32]; // 鉴权服务器帐号 char szAuthorizePassword[36]; // 鉴权服务器密码 char szIpACS[16]; // ACS(自动注册服务器) IP unsigned short usPortACS[2]; // ACS Port,考虑4字节对齐,目前只用数组第一个 char szUsernameACS[32]; // ACS用户名 char szPasswordACS[36]; // ACS密码 bool bVideoMonitorEnabled[4]; // DVS是否定期上报前端视频信号监控信息,数值:true使能,false不使能 int iVideoMonitorInterval; // 上报周期(分钟) char szCoordinateGPS[64]; // GPS坐标 char szPosition[32]; // 设备位置 char szConnPass[36]; // 设备接入码 } DHDEV_INTERVIDEO_BELL_CFG; ///@brief 平台接入配置 - 力维 typedef struct { DWORD dwSize; unsigned short nSevPort; // 服务器端口,数值,数值1~65535 char szSevIp[DH_INTERVIDEO_NSS_IP]; // 服务器IP地址,字符串,包括'\0'结束符共32byte char szDevSerial[DH_INTERVIDEO_NSS_SERIAL]; // 前端设备序列号,字符串,包括'\0'结束符共32byte char szUserName[DH_INTERVIDEO_NSS_USER]; char szPwd[DH_INTERVIDEO_NSS_PWD]; } DHDEV_INTERVIDEO_NSS_CFG; ///@brief 平台接入配置 - 天地阳光 typedef struct { char szDevSerial[DH_INTERVIDEO_AMP_DEVICESERIAL]; //前端设备序列号,即编码器的序列号,该参数只读 char szDevName[DH_INTERVIDEO_AMP_DEVICENAME]; //前端设备名称,编码器的名称,该参数只读 char szRegUserName[DH_INTERVIDEO_AMP_USER]; //注册服务器用户名 char szRegPwd[DH_INTERVIDEO_AMP_PWD]; //注册服务器密码 BYTE bReserved[128]; } DHDEV_INTERVIDEO_AMP_CFG; ////////////////////////////HDVR专用////////////////////////////////// ///@brief 报警联动扩展结构体 typedef struct { /* 消息处理方式,可以同时多种处理方式,包括 * 0x00000001 - 报警上传 * 0x00000002 - 联动录象 * 0x00000004 - 云台联动 * 0x00000008 - 发送邮件 * 0x00000010 - 本地轮巡 * 0x00000020 - 本地提示 * 0x00000040 - 报警输出 * 0x00000080 - Ftp上传 * 0x00000100 - 蜂鸣 * 0x00000200 - 语音提示 * 0x00000400 - 抓图 */ DWORD dwActionMask; // 当前报警所支持的处理方式,按位掩码表示 DWORD dwActionFlag; // 触发动作,按位掩码表示,具体动作所需要的参数在各自的配置中体现 BYTE byRelAlarmOut[DH_MAX_ALARMOUT_NUM_EX]; // 报警触发的输出通道,报警触发的输出,为1表示触发该输出 DWORD dwDuration; // 报警持续时间 /* 联动录象 */ BYTE byRecordChannel[DH_MAX_VIDEO_IN_NUM_EX]; // 报警触发的录象通道,为1表示触发该通道 DWORD dwRecLatch; // 录象持续时间 /* 抓图通道 */ BYTE bySnap[DH_MAX_VIDEO_IN_NUM_EX]; // 抓图通道 BYTE byTour[DH_MAX_VIDEO_IN_NUM_EX]; // 轮巡通道 0-31路 /* 云台联动 */ DH_PTZ_LINK struPtzLink[DH_MAX_VIDEO_IN_NUM_EX]; DWORD dwEventLatch; // 联动开始延时时间,s为单位,范围是0~15,默认值是0 BYTE byRelWIAlarmOut[DH_MAX_ALARMOUT_NUM_EX]; // 报警触发的无线输出通道,报警触发的输出,为1表示触发该输出 BYTE bMessageToNet; BYTE bMMSEn; // 短信报警使能 BYTE bySnapshotTimes; // 短信发送抓图张数 BYTE bMatrixEn; // 矩阵使能 DWORD dwMatrix; // 矩阵掩码 BYTE bLog; // 日志使能,目前只有在WTN动态检测中使用 BYTE bSnapshotPeriod; // 抓图帧间隔,每隔多少帧抓一张图片,一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧,连续抓拍 BYTE byTour2[DH_MAX_VIDEO_IN_NUM_EX]; // 轮巡通道 32-63路*/ BYTE byEmailType; // 0,图片附件,1,录像附件> BYTE byEmailMaxLength; // 附件录像时的最大长度,单位MB> BYTE byEmailMaxTime; // 附件是录像时最大时间长度,单位秒> BYTE byReserved[475]; } DH_MSG_HANDLE_EX; ///@brief 外部报警扩展 typedef struct { BYTE byAlarmType; // 报警器类型,0:常闭,1:常开 BYTE byAlarmEn; // 报警使能 BYTE byReserved[2]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE_EX struHandle; // 处理方式 } DH_ALARMIN_CFG_EX, *LPDHDEV_ALARMIN_CFG_EX; ///@brief 动态检测报警 typedef struct { BYTE byMotionEn; // 动态检测报警使能 BYTE byReserved; WORD wSenseLevel; // 灵敏度 WORD wMotionRow; // 动态检测区域的行数 WORD wMotionCol; // 动态检测区域的列数 BYTE byDetected[DH_MOTION_ROW][DH_MOTION_COL]; // 检测区域,最多32*32块区域 DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE_EX struHandle; //处理方式 } DH_MOTION_DETECT_CFG_EX; ///@brief 火警报警 typedef struct { BOOL byFireEn; // 火警报警时能; DH_MSG_HANDLE_EX struHandle; // 处理方式 BYTE byReserved[128]; }DHDEV_FIRE_ALARM_CFG; ///@brief 静态检测报警 typedef struct { BYTE byStaticEn; // 静态检测报警使能 BYTE byLatch; // 检测延时(范围0-127,若超出范围则用nLatch) WORD wSenseLevel; // 灵敏度 WORD wStaticRow; // 静态检测区域的行数 WORD wStaticCol; // 静态检测区域的列数 BYTE byDetected[DH_STATIC_ROW][DH_STATIC_COL]; // 检测区域,最多32*32块区域 DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE_EX struHandle; // 处理方式 int nLatch; // 检测延时 BYTE bReserved[64]; // 保留字段 } DH_STATIC_DETECT_CFG_EX; ///@brief ACC断线报警事件配置 typedef struct _DHDEV_ACC_POWEROFF_CFG { BOOL bEnable; // ACC断线报警使能 int nDelayTime; // ACC断线报警延时时间,单位分钟 DH_MSG_HANDLE_EX struHandle; // 处理方式 BYTE Reserved[128]; // 保留字段 }DHDEV_ACC_POWEROFF_CFG; ///@brief 防爆盒报警事件配置 typedef struct _DHDEV_EXPLOSION_PROOF_CFG { BOOL bEnable; // 防爆盒报警使能 DH_MSG_HANDLE_EX struHandle; // 处理方式 BYTE Reserved[128]; // 保留字段 }DHDEV_EXPLOSION_PROOF_CFG; ///@brief Raid事件配置 typedef struct _DHDEV_RAID_EVENT_CFG { BOOL bEnable; // Raid事件使能 DH_MSG_HANDLE_EX struHandle; // 处理方式 BYTE Reserved[128]; // 保留字段 }DHDEV_RAID_EVENT_CFG; ///@brief 视频丢失报警 typedef struct { BYTE byAlarmEn; // 视频丢失报警使能 BYTE byReserved[3]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE_EX struHandle; // 处理方式 } DH_VIDEO_LOST_CFG_EX; ///@brief 图像遮挡报警 typedef struct { BYTE byBlindEnable; // 使能 BYTE byBlindLevel; // 灵敏度1-6 BYTE byReserved[2]; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // NSP DH_MSG_HANDLE_EX struHandle; // 处理方式 } DH_BLIND_CFG_EX; ///@brief 硬盘消息(内部报警) typedef struct { BYTE byNoDiskEn; // 无硬盘时报警 BYTE byReserved_1[3]; DH_TSECT stNDSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE_EX struNDHandle; // 处理方式 BYTE byLowCapEn; // 硬盘低容量时报警 BYTE byLowerLimit; // 容量阀值,0-99 BYTE byReserved_2[2]; DH_TSECT stLCSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE_EX struLCHandle; // 处理方式 BYTE byDiskErrEn; // 硬盘故障报警 BYTE bDiskNum; BYTE byReserved_3[2]; DH_TSECT stEDSect[DH_N_WEEKS][DH_N_REC_TSECT]; //NSP DH_MSG_HANDLE_EX struEDHandle; // 处理方式 } DH_DISK_ALARM_CFG_EX; ///@brief 网络中断报警配置 typedef struct { BYTE byEnable; BYTE byReserved[3]; DH_MSG_HANDLE_EX struHandle; } DH_NETBROKEN_ALARM_CFG_EX; ///@brief 前端接入配置参数信息 typedef struct __DEV_ENCODER_CFG { int nChannels; // 数字通道个数 DEV_ENCODER_INFO stuDevInfo[32]; // 各数字通道的前端编码器信息 BYTE byHDAbility; // 数字通道中最多可支持高清视频个数(为0表示不支持高清设置) // 注:如果支持高清设置,高清通道为0~N-1,若将N之后的数字通道设置为高清,有可能保存不成功 BYTE bTVAdjust; // 设备是否支持TV调节, 0:不支持 1:支持. BYTE bDecodeTour; // 设备是否支持解码轮巡, 0:不支持 大于0:表示前端支持轮巡最大设备数. BYTE bRemotePTZCtl; // 指示是否支持远程云台控制。 char reserved[12]; } DEV_ENCODER_CFG, *LPDEV_ENCODER_CFG; ///@brief 前端接入配置参数信息扩展 typedef struct __DEV_ENCODER_CFG_EX { int nChannels; // 数字通道个数 DEV_ENCODER_INFO stuDevInfo[128]; // 各数字通道的前端编码器信息 BYTE byHDAbility; // 数字通道中最多可支持高清视频个数(为0表示不支持高清设置) // 注:如果支持高清设置,高清通道为0~N-1,若将N之后的数字通道设置为高清,有可能保存不成功 BYTE bTVAdjust; // 设备是否支持TV调节, 0:不支持 1:支持. BYTE bDecodeTour; // 设备是否支持解码轮巡, 0:不支持 大于0:表示前端支持轮巡最大设备数. BYTE bRemotePTZCtl; // 指示是否支持远程云台控制。 char reserved[256]; } DEV_ENCODER_CFG_EX, *LPDEV_ENCODER_CFG_EX; ///@brief 前端接入配置参数信息扩展 typedef struct __DEV_ENCODER_CFG_EX2 { int nChannels; // 实际获取/设置的数字通道个数 int nDevInfoMaxNum; // 最大申请数字通道个数 DEV_ENCODER_INFO *pstuDevInfo; // 各数字通道的前端编码器信息,大小为sizeof(DEV_ENCODER_INFO)*nDevInfoMaxNum; BYTE byHDAbility; // 数字通道中最多可支持高清视频个数(为0表示不支持高清设置) // 注:如果支持高清设置,高清通道为0~N-1,若将N之后的数字通道设置为高清,有可能保存不成功 BYTE bTVAdjust; // 设备是否支持TV调节, 0:不支持 1:支持. BYTE bDecodeTour; // 设备是否支持解码轮巡, 0:不支持 大于0:表示前端支持轮巡最大设备数. BYTE bRemotePTZCtl; // 指示是否支持远程云台控制。 char reserved[256]; } DEV_ENCODER_CFG_EX2, *LPDEV_ENCODER_CFG_EX2; ///@brief struct 控制器 typedef struct tagDHCONFIG_CONTROLER{ DH_COMM_PROP struComm; // 串口属性 BYTE bLightGroup[DH_MAX_LIGHT_NUM]; // 受控灯数组(灯序号从1开始计数,比如[1,3,8,0…0]表示控制序号为1,3,8的灯 BYTE bDeviceAddr; // 控制器地址 BYTE bComPortType; // 串口类型 0:485串口, 1:232串口 BYTE bReserved[6]; // 保留 } DH_CONFIG_CONTROLER; ///@brief 灯光控制配置 typedef struct __DHDEV_LIGHTCONTROL_CFG { DH_CONFIG_CONTROLER struControlers[DH_MAX_CONTROLER_NUM]; // 控制配置 BYTE bControlerNum; // 有效控制器数目 BYTE bReserved[1023]; // 保留 } DHDEV_LIGHTCONTROL_CFG, *LPDHDEV_LIGHTCONTROL_CFG; ///@brief 3G流量信息配置 typedef struct { int nStrategy; //流量使用策略, 0:按流量包月 1:按时间包月 int nUpLimit; //流量使用上限, 按流量: 单位MB 按时间: 单位小时 int nreserved[22]; //保留字节 }DHDEV_3GFLOW_INFO_CFG; ///@brief IPv6配置 typedef struct { char szLinkAddr[44]; // 链路地址: 字符串, 长度为44;(局域网内每台主机拥有唯一的链路地址,只读) char szHostIP[40]; // 主机IP DWORD dwPreFix; // 网络前缀(范围:1-128,可读可写) char szGateWay[40]; // 默认网关 BOOL bAutoGet; // 自动获取使能 char szPrimaryDns[40]; // 首选DNS char szSecondDns[40]; // 备选DNS char cReserved[256]; // 保留字段 }DHDEV_IPV6_CFG; ///@brief 紧急存储配置 typedef struct __DEV_URGENCY_RECORD_CFG { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否使能,1使能,0不使能 UINT nMaxRecordTime; // 最大录像时间,单位秒 char szClientMac[64]; // 客户端标识,手动传mac地址时需要自己去掉':';此处若不填写,将使用默认网卡作为标识 // (注意,如果手动设置非默认网卡的标识,将无法获取到该配置) }DHDEV_URGENCY_RECORD_CFG; ///@brief 电梯运行参数配置 typedef struct __DEV_ELEVATOR_ATTRI_CFG { DWORD dwSize; // 结构体大小 UINT nMAXFloorNum; //最大楼层 最小2 UINT nFloorDelayTime; //停靠判断时间,5-60;保持此时间长度认为是电梯停靠此楼层。 UINT nIntervalTime; //电梯上行或下行经过一层的最大时间,如果超过此时间,则认为电梯故障,轿厢停止了两层之间。 }DHDEV_ELEVATOR_ATTRI_CFG; ///@brief 虚拟摄像头状态查询 typedef struct tagDHDEV_VIRTUALCAMERA_STATE_INFO { DWORD nStructSize; // 结构体大小 int nChannelID; // 通道号 CONNECT_STATE emConnectState; // 连接状态 UINT uiPOEPort; // 此虚拟摄像头所连接的POE端口号,0表示不是POE连接 char szDeviceName[64]; // 设备名称 char szDeviceType[128]; // 设备类型 char szSystemType[128]; // 系统版本 char szSerialNo[DH_SERIALNO_LEN]; // 序列号 int nVideoInput; // 视频输入 int nAudioInput; // 音频输入 int nAlarmOutput; // 外部报警 }DHDEV_VIRTUALCAMERA_STATE_INFO; ///@brief 设备工作视频/线圈模式状态等信息查询 typedef struct tagDHDEV_TRAFFICWORKSTATE_INFO { DWORD nStructSize; // 结构体大小 int nChannelID; // 通道号 DH_TRAFFIC_SNAP_MODE emSnapMode; // 抓拍模式 }DHDEV_TRAFFICWORKSTATE_INFO; ///@brief 防区类型 typedef enum tagEM_NET_DEFENCE_AREA_TYPE { EM_NET_DEFENCE_AREA_TYPE_UNKNOW, // 未知 EM_NET_DEFENCE_AREA_TYPE_INTIME, // 即时防区 EM_NET_DEFENCE_AREA_TYPE_DELAY, // 延时防区 EM_NET_DEFENCE_AREA_TYPE_FULLDAY, // 24小时防区 EM_NET_DEFENCE_AREA_TYPE_Follow, // 跟随防区 EM_NET_DEFENCE_AREA_TYPE_MEDICAL, // 医疗紧急防区 EM_NET_DEFENCE_AREA_TYPE_PANIC, // 恐慌防区 EM_NET_DEFENCE_AREA_TYPE_FIRE, // 火警防区 EM_NET_DEFENCE_AREA_TYPE_FULLDAYSOUND, // 24小时有声防区 EM_NET_DEFENCE_AREA_TYPE_FULLDATSLIENT, // 24小时无声防区 EM_NET_DEFENCE_AREA_TYPE_ENTRANCE1, // 出入防区1 EM_NET_DEFENCE_AREA_TYPE_ENTRANCE2, // 出入防区2 EM_NET_DEFENCE_AREA_TYPE_INSIDE, // 内部防区 EM_NET_DEFENCE_AREA_TYPE_OUTSIDE, // 外部防区 EN_NET_DEFENCE_AREA_TYPE_PEOPLEDETECT, // 人员检测防区 EM_NET_DEFENCE_AREA_TYPE_ROBBERY, // 匪警防区(西欧报警主机需求) } EM_NET_DEFENCE_AREA_TYPE; ///@brief 本地报警事件(对DH_ALARM_ALARM_EX升级) typedef struct tagALARM_ALARM_INFO_EX2 { DWORD dwSize; int nChannelID; // 通道号 int nAction; // 0:开始 1:停止 NET_TIME stuTime; // 报警事件发生的时间 NET_SENSE_METHOD emSenseType; // 传感器类型 DH_MSG_HANDLE_EX stuEventHandler; // 联动信息 EM_NET_DEFENCE_AREA_TYPE emDefenceAreaType; // 防区类型 UINT nEventID; //事件ID char szName[DH_COMMON_STRING_32]; // 通道名称 int nCount; // 事件发生次数 NET_GPS_STATUS_INFO stuGPS; // GPS信息 char szUserID[32]; // 本地报警时登陆的用户ID char szUserName[128]; // 本地报警时登陆的用户名 char szSN[32]; // 设备序列号 BOOL bExAlarmIn; // 外部输入报警 int nAreaNums; // 报警通道所属区域的个数 int nAreas[64]; // 报警通道所属的区域 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[568]; // 保留字节 }ALARM_ALARM_INFO_EX2; ///@brief 事件类型EVENT_IVS_ALARM_IPC(DVR/NVR设备上的IPC报警 )对应的数据块描述信息 typedef struct tagDEV_EVENT_ALARM_IPC_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 0:开始 1:停止 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_ALARM_IPC_INFO; /////////////////////////////智能交通图片订阅接口参数///////////////////////////////// ///@brief 数据类型 typedef struct RESERVED_DATA_INTEL_BOX { DWORD dwEventCount; //事件个数 DWORD* dwPtrEventType; //指向连续的事件类型的值。空间由用户自己申请,大小为sizeof(DWORD)*dwEventCount DWORD dwInternalTime; // 图片上传间隔时间,单位:s BYTE bReserved[1020]; //保留字节 }ReservedDataIntelBox; #define RESERVED_TYPE_FOR_INTEL_BOX 0x00000001 ///@brief ReservedPara typedef struct RESERVED_PARA { DWORD dwType; //pData的数据类型 //当[dwType]为 RESERVED_TYPE_FOR_INTEL_BOX 时,pData 对应为结构体ReservedDataIntelBox的地址 //当[dwType]为 RESERVED_TYPE_FOR_COMMON 时,[pData]对应为结构体NET_RESERVED_COMMON的结构体地址 //当[dwType]为 RESERVED_TYPE_FOR_PATH 时,[pData]对应结构体NET_RESERVED_PATH的结构体地址 void* pData; //数据,由用户申请内存,大小参考对应的结构体 }ReservedPara; #define RESERVED_TYPE_FOR_PATH 0x00000100 ///@brief 图片路径类型 typedef enum tagNET_PICTURE_PATH_TYPE { NET_PATH_LOCAL_PATH , //本地硬盘或者sd卡成功写入路径 NET_PATH_FTP_PATH , //设备成功写到ftp服务器的路径 NET_PATH_VIDEO_PATH , //当前接入需要获取当前违章的关联视频的FTP上传路径 }NET_PICTURE_PATH_TYPE; #define MAX_PIC_PATH_NUM 16 ///@brief 路径类型 typedef struct tagNET_RESERVED_PATH { int nMaxPathNum; //图片路径总数,为0时采用设备默认路径 NET_PICTURE_PATH_TYPE emPictruePaths[MAX_PIC_PATH_NUM]; //图片路径类型 }NET_RESERVED_PATH; #define RESERVED_TYPE_FOR_COMMON 0x00000010 ///@brief 离线传输参数 typedef struct tagNET_OFFLINE_PARAM { char szClientID[20]; // 客户端mac地址,冒号分隔形式 BYTE byReserved[108]; // 保留 }NET_OFFLINE_PARAM; ///@brief 返回的图片存储路径模式 typedef enum tagEM_PATH_MODE { EM_PATH_MODE_UNKNOWN = -1, // 未知 EM_PATH_MODE_ASYNC, // 异步 EM_PATH_MODE_SYNC, // 同步 } EM_PATH_MODE; ///@brief 返回的图片类型 typedef enum tagNET_FILTER_IMAGE_TYPE { EM_FILTER_IMAGE_UNKNOWN, // 未知 EM_FILTER_IMAGE_OBJECT, // 上报目标抠图 EM_FILTER_IMAGE_SCENE, // 上报场景大图 }EM_FILTER_IMAGE_TYPE; ///@brief 事件类型描述 typedef enum tagNET_EVENT_TYPE_DESCEIBEINFO { EM_EVENT_NORMAL = 0, // 正常抓图事件 EM_EVENT_EMAIL, // 邮件联动抓图事件 }EM_EVENT_TYPE_DESCEIBEINFO; ///@brief 设备给客户端传离线图片需要按照的顺序 typedef enum tagEM_EVENT_ORDER { EM_EVENT_ORDER_UNKNOWN, // 未知 EM_EVENT_ORDER_ASCENT, // 正序上传 EM_EVENT_ORDER_DESCENT, // 倒序上传 }EM_EVENT_ORDER; ///@brief 抓图标志 typedef struct tagNET_RESERVED_COMMON { DWORD dwStructSize; ReservedDataIntelBox* pIntelBox; // 兼容RESERVED_TYPE_FOR_INTEL_BOX DWORD dwSnapFlagMask; // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout", 7位:"Task"(当Flags为"Task"时,channel需要填-1) NET_OFFLINE_PARAM* pstuOfflineParam; // 离线传输参数 NET_RESERVED_PATH* pstuPath; // 兼容RESERVED_TYPE_FOR_PATH EM_PATH_MODE emPathMode; // 返回的图片存储路径模式 EM_FILTER_IMAGE_TYPE* pImageType; // 返回的图片类型, 由用户申请释放 int nImageTypeNum; // pImageType 有效个数 BOOL bFlagCustomInfo; // szCustomInfo 标志位 TRUE时 使用szCustomInfo字段 char szCustomInfo[512]; // 客户自定义信息 customInfo是getFiltercaps中能力对应的订阅参数的格式化字符串表示,字符串格式为:订阅参数以&分隔,订阅参数的名字和值用=连接 BOOL bSetEventsType; // 是否设置事件类型 char szRserved[4]; // 字节对齐 EM_EVENT_ORDER emOrder; // 设备给客户端传离线图片需要按照的顺序,如果是倒序上传:越晚产生的优先上传,越早产生的后传 }NET_RESERVED_COMMON; /////////////////////////////智能球控制接口参数///////////////////////////////// ///@brief 场景结构信息 typedef struct { DWORD dwSize; int nScene; //场景编号 }DHDEV_INTELLI_SCENE_INFO; ///@brief 场景边界限位信息 typedef struct { DWORD dwSize; int nScene; //场景编号 int nType; //0:上边界限位,1:下边界限位,2:左边界,3:右边界 }DHDEV_INTELLI_SCENELIMIT_INFO; ///@brief 手动跟踪目标结构体信息 typedef struct { DWORD dwSize; int nObjectID; // 物体ID,-1 表示web上框选的是智能帧上传框外任意位置物体,>=0表示框选的是智能帧上传的物体 RECT stuBound; // 矩形范围,点的坐标归一化到[0,8191]区间 int nTrackTimeOut; // 跟踪持续时间,单位为秒 int nStaticTimeOut; // 静止等待时间,单位为秒 }DHDEV_INTELLI_TRACKOBJECT_INFO; ///@brief 控制类型 typedef enum __TRACKCONTROL_TYPE { DH_TRACK_MARKSCENE, // 标定场景, 对应于DHDEV_INTELLI_SCENE_INFO结构体 DH_TRACK_GOTOSCENE, // 转动到场景,对应于DHDEV_INTELLI_SCENE_INFO结构体 DH_TRACK_MARKSCENELIMIT, // 标定场景边界限位,对应于DHDEV_INTELLI_SCENELIMIT_INFO结构体 DH_TRACK_GOTOSCENELIMIT, // 转动到场景边界限位处,对应于DHDEV_INTELLI_SCENELIMIT_INFO结构体 DH_TRACK_MARKSCENEMAXZOOM, // 标定场景最大跟踪倍率, 对应于DHDEV_INTELLI_SCENE_INFO结构体 DH_TRACK_OBJECT, // 选中场景中的跟踪目标,对应于DHDEV_INTELLI_TRACKOBJECT_INFO机构体 DH_TRACK_START, // 开始智能跟踪,无需指定参数信息 DH_TRACK_STOP, // 停止智能跟踪,无需指定参数信息 DH_TRACK_TYPE_NUM, }DH_TRACKCONTROL_TYPE; ///@brief 智能球机控制输入参数 typedef struct tagNET_IN_CONTROL_INTELLITRACKER { DWORD dwSize; int nChannelID; // 通道ID DH_TRACKCONTROL_TYPE emCtrlType; // 控制类型 void* pCtrlInfo; // 控制类型对应控制信息结构体指针,参见DH_TRACKCONTROL_TYPE定义。由用户申请内存 int nMaxLen; // 控制信息结构体大小 int nWaittime; // 等待超时时间 }NET_IN_CONTROL_INTELLITRACKER; ///@brief 智能球机控制输出参数 typedef struct tagNET_OUT_CONTROL_INTELLITRACKER { DWORD dwSize; }NET_OUT_CONTROL_INTELLITRACKER; ///@brief CLIENT_GetLastEventInfo 入参 typedef struct tagNET_IN_GET_LAST_EVENT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 EM_CLASS_TYPE emClassType; // 业务大类 DWORD dwAlarmType; // 智能分析事件类型 BOOL bOnlySendFrame; // 是否事件仅通过事件帧发送 }NET_IN_GET_LAST_EVENT_INFO; ///@brief CLIENT_GetLastEventInfo 出参 typedef struct tagNET_OUT_GET_LAST_EVENT_INFO { DWORD dwSize; // 结构体大小 int nState; // 智能规则当前查询时的状态 0-关闭状态,1-开启状态 LPVOID pEventInfo; // 事件结构体-内存由用户分配和释放 LDWORD dwBufferSize; // 事件结构体大小 DWORD dwOutBufferSize; // 实际使用的大小 }NET_OUT_GET_LAST_EVENT_INFO; /////////////////////////////视频分析接口参数///////////////////////////////// #define MAX_TEMPLATEIMAGE_NUM 32 //有效图片个数上限 ///@brief 获取视频分析对象输入参数 typedef struct tagNET_IN_VIDEOANALYSE_GETTEMPLATEIMAGE { DWORD dwSize; int nChannelID; // 通道ID char szRule[DH_COMMON_STRING_128]; // 模板图片对应的规则 }NET_IN_VIDEOANALYSE_GETTEMPLATEIMAGE; ///@brief 获取视频分析对象输出参数 typedef struct tagNET_OUT_VIDEOANALYSE_GETTEMPLATEIMAGE { DWORD dwSize; unsigned int nImageNum; // 有效图片个数 DH_PIC_INFO_EX2 stuImage[MAX_TEMPLATEIMAGE_NUM]; // 图片信息 char* pBuffer; // 图片缓冲区指针, 由用户自己申请 int nBufLen; // 图片缓冲区大小, 由用户自己填写 int nRetLen; // 获取的图片数据总长度, 无需用户填写, 可以根据此参数判断分配的缓存区大小是否足够 }NET_OUT_VIDEOANALYSE_GETTEMPLATEIMAGE; ///@brief 设置视频分析对象输入参数 typedef struct tagNET_IN_VIDEOANALYSE_SETTEMPLATEIMAGE { DWORD dwSize; int nChannelID; // 通道ID char szRule[DH_COMMON_STRING_128]; // 模板图片对应的规则 unsigned int nImageNum; // 有效图片个数 DH_PIC_INFO_EX2 stuImage[MAX_TEMPLATEIMAGE_NUM]; // 图片信息 char* pBuffer; // 图片缓冲区指针,由用户申请内存,大小为nBufLen int nBufLen; // 图片缓冲区大小 }NET_IN_VIDEOANALYSE_SETTEMPLATEIMAGE; ///@brief 设置视频分析对象输出参数 typedef struct tagNET_OUT_VIDEOANALYSE_SETTEMPLATEIMAGE { DWORD dwSize; }NET_OUT_VIDEOANALYSE_SETTEMPLATEIMAGE; /////////////////////////////淘汰类型///////////////////////////////// ///@brief 查询设备工作状态通道信息,相关接口已淘汰,请不要使用 typedef struct { BYTE byRecordStatic; // 通道是否在录像;0:不录像,1:手动录像,2:自动录象 BYTE bySignalStatic; // 连接的信号状态;0:正常,1:信号丢失 BYTE byHardwareStatic; // 通道硬件状态;0:正常,1:异常,例如DSP死掉 char reserve; DWORD dwBitRate; // 实际码率 DWORD dwLinkNum; // 客户端连接的个数 DWORD dwClientIP[DH_MAX_LINK]; // 客户端的IP地址 } NET_DEV_CHANNELSTATE, *LPNET_DEV_CHANNELSTATE; ///@brief 查询设备工作状态,相关接口已淘汰,请不要使用 typedef struct { DWORD dwDeviceStatic; // 设备的状态;0x00:正常,0x01:CPU占用过高,0x02:硬件错误 NET_DEV_DISKSTATE stHardDiskStatic[DH_MAX_DISKNUM]; NET_DEV_CHANNELSTATE stChanStatic[DH_MAX_CHANNUM]; //通道的状态 BYTE byAlarmInStatic[DH_MAX_ALARMIN]; //报警端口的状态;0:没有报警,1:有报警 BYTE byAlarmOutStatic[DH_MAX_ALARMOUT]; //报警输出端口的状态;0:没有输出,1:有报警输出 DWORD dwLocalDisplay; // 本地显示状态;0:正常,1:不正常 } NET_DEV_WORKSTATE, *LPNET_DEV_WORKSTATE; ///@brief 协议信息 typedef struct { char protocolname[12]; // 协议名 unsigned int baudbase; // 波特率 unsigned char databits; // 数据位 unsigned char stopbits; // 停止位 unsigned char parity; // 校验位 unsigned char reserve; } PROTOCOL_INFO, *LPPROTOCOL_INFO; ///@brief 语音对讲参数配置 typedef struct { /* 音频输入参数 */ BYTE byInFormatTag; // 编码类型,如PCM BYTE byInChannels; // 声道数 WORD wInBitsPerSample; // 采样深度 DWORD dwInSamplesPerSec; // 采样率 /* 音频输出参数 */ BYTE byOutFormatTag; // 编码类型,如PCM BYTE byOutChannels; // 声道数 WORD wOutBitsPerSample; // 采样深度 DWORD dwOutSamplesPerSec; // 采样率 } DHDEV_TALK_CFG, *LPDHDEV_TALK_CFG; /////////////////////////////// 矩阵 /////////////////////////////////////// #define DH_MATRIX_INTERFACE_LEN 16 // 信号接口名称长度 #define DH_MATRIX_MAX_CARDS 128 // 矩阵子卡最大数量 #define DH_SPLIT_PIP_BASE 1000 // 分割模式画中画的基础值 #define DH_MAX_SPLIT_MODE_NUM 64 // 最大分割模式数 #define DH_MATRIX_MAX_CHANNEL_IN 1500 // 矩阵最大输入通道数 #define DH_MATRIX_MAX_CHANNEL_OUT 256 // 矩阵最大输出通道数 #define DH_DEVICE_NAME_LEN 64 // 设备名称长度 #define DH_MAX_CPU_NUM 16 // 最大CPU数量 #define DH_MAX_FAN_NUM 16 // 最大风扇数量 #define DH_MAX_POWER_NUM 16 // 最大电源数量 #define DH_MAX_BATTERY_NUM 16 // 最大电池数量 #define DH_MAX_TEMPERATURE_NUM 256 // 最大温度传感器数量 #define DH_MAX_ISCSI_NAME_LEN 128 // ISCSI名称长度 #define DH_VERSION_LEN 64 // 版本信息长度 #define DH_MAX_STORAGE_PARTITION_NUM 32 // 存储分区最大数量 #define DH_STORAGE_MOUNT_LEN 64 // 挂载点长度 #define DH_STORAGE_FILE_SYSTEM_LEN 16 // 文件系统名称长度 #define DH_MAX_MEMBER_PER_RAID 32 // RAID成员最大数量 #define DH_DEV_ID_LEN_EX 128 // 设备ID最大长度 #define DH_MAX_BLOCK_NUM 32 // 最大区块数量 #define DH_MAX_SPLIT_WINDOW 128 // 最大分割窗口数量 #define DH_FILE_TYPE_LEN 64 // 文件类型长度 #define DH_DEV_ID_LEN 128 // 设备ID最大长度 #define DH_DEV_NAME_LEN 128 // 设备名称最大长度 #define DH_TSCHE_DAY_NUM 8 // 时间表第一维大小, 表示天数 #define DH_TSCHE_SEC_NUM 6 // 时间表第二维大小, 表示时段数 #define DH_SPLIT_INPUT_NUM 256 // 设备二级切换时第一级split支持的输入通道数 #define DH_TSCHE_SEC_NUM_EX 36 // 时间表第二维大小, 表示时段数 #define DH_DEVICE_ID_LOCAL "Local" // 本地设备ID #define DH_DEVICE_ID_REMOTE "Remote" // 远程设备ID #define DH_DEVICE_ID_UNIQUE "Unique" // 设备内统一编号 ///@brief 分割模式 typedef enum tagDH_SPLIT_MODE { DH_SPLIT_1 = 1, // 1画面 DH_SPLIT_2 = 2, // 2画面 DH_SPLIT_4 = 4, // 4画面 DH_SPLIT_5 = 5, // 5画面 DH_SPLIT_6 = 6, // 6画面 DH_SPLIT_8 = 8, // 8画面 DH_SPLIT_9 = 9, // 9画面 DH_SPLIT_12 = 12, // 12画面 DH_SPLIT_16 = 16, // 16画面 DH_SPLIT_20 = 20, // 20画面 DH_SPLIT_25 = 25, // 25画面 DH_SPLIT_36 = 36, // 36画面 DH_SPLIT_64 = 64, // 64画面 DH_SPLIT_144 = 144, // 144画面 DH_PIP_1 = DH_SPLIT_PIP_BASE + 1, // 画中画模式, 1个全屏大画面+1个小画面窗口 DH_PIP_3 = DH_SPLIT_PIP_BASE + 3, // 画中画模式, 1个全屏大画面+3个小画面窗口 DH_SPLIT_FREE = DH_SPLIT_PIP_BASE * 2, // 自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序 DH_COMPOSITE_SPLIT_1 = DH_SPLIT_PIP_BASE * 3 + 1, // 融合屏成员1分割 DH_COMPOSITE_SPLIT_4 = DH_SPLIT_PIP_BASE * 3 + 4, // 融合屏成员4分割 DH_SPLIT_3 = 10, // 3画面 DH_SPLIT_3B = 11, // 3画面倒品 DH_SPLIT_4A = DH_SPLIT_PIP_BASE * 4 + 1, // 4个画面, 一个大画面在左边,3个小画面在右边排成一列 } DH_SPLIT_MODE; #define DH_PROTOCOL_DAHUA2 DH_PROTOCOL_PRIVATE2 #define DH_PROTOCOL_DAHUA3 DH_PROTOCOL_PRIVATE3 ///@brief 设备协议类型 typedef enum tagDH_DEVICE_PROTOCOL { DH_PROTOCOL_PRIVATE2, // 私有2代协议 DH_PROTOCOL_PRIVATE3, // 私有3代协议 DH_PROTOCOL_ONVIF, // Onvif DH_PROTOCOL_VNC, // 虚拟网络计算机 DH_PROTOCOL_TS, // 标准TS DH_PROTOCOL_ECLOUD, // 云睿接入 DH_PROTOCOL_GENERAL, // 以URL形式添加 DH_PROTOCOL_PRIVATE = 100, // 私有协议 DH_PROTOCOL_AEBELL, // 美电贝尔 DH_PROTOCOL_PANASONIC, // 松下 DH_PROTOCOL_SONY, // 索尼 DH_PROTOCOL_DYNACOLOR, // Dynacolor DH_PROTOCOL_TCWS, // 天城威视 DH_PROTOCOL_SAMSUNG, // 三星 DH_PROTOCOL_YOKO, // YOKO DH_PROTOCOL_AXIS, // 安讯视 DH_PROTOCOL_SANYO, // 三洋 DH_PROTOCOL_BOSH, // Bosch DH_PROTOCOL_PECLO, // Peclo DH_PROTOCOL_PROVIDEO, // Provideo DH_PROTOCOL_ACTI, // ACTi DH_PROTOCOL_VIVOTEK, // Vivotek DH_PROTOCOL_ARECONT, // Arecont DH_PROTOCOL_PRIVATEEH, // PrivateEH DH_PROTOCOL_IMATEK, // IMatek DH_PROTOCOL_SHANY, // Shany DH_PROTOCOL_VIDEOTREC, // 动力盈科 DH_PROTOCOL_URA, // Ura DH_PROTOCOL_BITICINO, // Bticino DH_PROTOCOL_ONVIF2, // Onvif协议类型, 同DH_PROTOCOL_ONVIF DH_PROTOCOL_SHEPHERD, // 视霸 DH_PROTOCOL_YAAN, // 亚安 DH_PROTOCOL_AIRPOINT, // Airpop DH_PROTOCOL_TYCO, // TYCO DH_PROTOCOL_XUNMEI, // XM DH_PROTOCOL_HIKVISION, // HIK DH_PROTOCOL_LG, // LG DH_PROTOCOL_AOQIMAN, // 奥奇曼 DH_PROTOCOL_BAOKANG, // 宝康 DH_PROTOCOL_WATCHNET, // Watchnet DH_PROTOCOL_XVISION, // Xvision DH_PROTOCOL_FUSITSU, // 富士通 DH_PROTOCOL_CANON, // Canon DH_PROTOCOL_GE, // GE DH_PROTOCOL_Basler, // 巴斯勒 DH_PROTOCOL_Patro, // 帕特罗 DH_PROTOCOL_CPKNC, // CPPLUS K系列 DH_PROTOCOL_CPRNC, // CPPLUS R系列 DH_PROTOCOL_CPUNC, // CPPLUS U系列 DH_PROTOCOL_CPPLUS, // CPPLUS IPC DH_PROTOCOL_XunmeiS, // Xms DH_PROTOCOL_GDDW, // GDDW DH_PROTOCOL_PSIA, // PSIA DH_PROTOCOL_GB2818, // GB2818 DH_PROTOCOL_GDYX, // GDYX DH_PROTOCOL_OTHER, // 由用户自定义 DH_PROTOCOL_MULTICAST = 179, // 组播,实现组播功能,当成第三方设备接入来处理 DH_PROTOCOL_MULTICASTTS = 185, // 组播,处理TS组播功能,当成第三方设备接入来处理 } DH_DEVICE_PROTOCOL; ///@brief 一屏幕的分割模式信息 typedef struct tagDH_SPLIT_MODE_INFO { DWORD dwSize; DH_SPLIT_MODE emSplitMode; // 分割模式 int nGroupID; // 分组序号 DWORD dwDisplayType; // 显示类型;具体见DH_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General") } DH_SPLIT_MODE_INFO; ///@brief 分割能力 typedef struct tagDH_SPLIT_CAPS { DWORD dwSize; int nModeCount; // 支持的分割模式数量 DH_SPLIT_MODE emSplitMode[DH_MAX_SPLIT_MODE_NUM]; // 支持的分割模式 int nMaxSourceCount; // 最大显示源配置数 int nFreeWindowCount; // 支持的最大自由开窗数目 BOOL bCollectionSupported; // 是否支持区块收藏 DWORD dwDisplayType; // 掩码表示多个显示类型,具体见DH_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General") int nPIPModeCount; // 画中画支持的分割模式数量 DH_SPLIT_MODE emPIPSplitMode[DH_MAX_SPLIT_MODE_NUM]; // 画中画支持的分割模式 int nInputChannels[DH_SPLIT_INPUT_NUM]; // 支持的输入通道 int nInputChannelCount; // 支持的输入通道个数, 0表示没有输入通道限制 int nBootModeCount; // 启动分割模式数量 DH_SPLIT_MODE emBootMode[DH_MAX_SPLIT_MODE_NUM]; // 支持的启动默认画面分割模式 } DH_SPLIT_CAPS; ///@brief 级联权限验证信息 typedef struct tagDH_CASCADE_AUTHENTICATOR { DWORD dwSize; char szUser[DH_NEW_USER_NAME_LENGTH]; // 用户名 char szPwd[DH_NEW_USER_PSW_LENGTH]; // 密码 char szSerialNo[DH_SERIALNO_LEN]; // 设备序列号 } DH_CASCADE_AUTHENTICATOR; ///@brief 推流方式的码流类型 typedef enum tagEM_SRC_PUSHSTREAM_TYPE { EM_SRC_PUSHSTREAM_AUTO, // 设备端根据码流头自动识别,默认值 EM_SRC_PUSHSTREAM_HIKVISION, // 海康私有码流 EM_SRC_PUSHSTREAM_PS, // PS流 EM_SRC_PUSHSTREAM_TS, // TS流 EM_SRC_PUSHSTREAM_SVAC, // SVAC码流 }EM_SRC_PUSHSTREAM_TYPE; ///@brief 加密等级 typedef enum tagEM_ENCRYPT_LEVEL { EM_ENCRYPT_LEVEL_UNKNOWN, // 未知 EM_ENCRYPT_LEVEL_NONE, // 不加密 EM_ENCRYPT_LEVEL_IFRAME256, // 加密I帧前256字节 EM_ENCRYPT_LEVEL_IFRAME_WHOLE, // 加密整个I帧 EM_ENCRYPT_LEVEL_IAXFRAME, // 对I帧, 音频帧及其他辅助帧进行加密 }EM_ENCRYPT_LEVEL; ///@brief 码流加密方式 typedef enum tagEM_ENCRYPT_ALGORITHM_TYPE { EM_ENCRYPT_ALGORITHM_UNKNOWN, // 未知 EM_ENCRYPT_ALGORITHM_AES, // AES加密 EM_ENCRYPT_ALGORITHM_DES, // DES加密 EM_ENCRYPT_ALGORITHM_3DES, // 3DES加密 }EM_ENCRYPT_ALGORITHM_TYPE; ///@brief 密钥交换方式 typedef enum tagEM_KEY_EXCHANGE_TYPE { EM_KEY_EXCHANGE_UNKNOWN, // 未知 EM_KEY_EXCHANGE_MIKEY, // Mikey密钥 EM_KEY_EXCHANGE_PSK, // 预共享密钥 EM_KEY_EXCHANGE_PK, // 公共密钥 EM_KEY_EXCHANGE_DH, // 霍夫曼密钥 }EM_KEY_EXCHANGE_TYPE; ///@brief 显示源码流加密方式 typedef struct tagNET_SOURCE_STREAM_ENCRYPT { EM_ENCRYPT_LEVEL emEncryptLevel; // 加密等级 EM_ENCRYPT_ALGORITHM_TYPE emAlgorithm; // 加密算法 EM_KEY_EXCHANGE_TYPE emExchange; // 密钥交换方式 BOOL bUnvarnished; // MTS使用场景,true为交互MIKEY后让数据不进行加/解密 char szPSK[1032]; // 密钥 BYTE byReserved[1024]; // 保留字节 }NET_SOURCE_STREAM_ENCRYPT; ///@brief 显示源 typedef struct tagDH_SPLIT_SOURCE { DWORD dwSize; BOOL bEnable; // 使能 char szIp[DH_MAX_IPADDR_LEN]; // IP, 空表示没有设置 char szUser[DH_USER_NAME_LENGTH]; // 用户名, 建议使用szUserEx char szPwd[DH_USER_PSW_LENGTH]; // 密码, 建议使用szPwdEx int nPort; // 端口 int nChannelID; // 通道号 int nStreamType; // 视频码流, -1-自动, 0-主码流, 1-辅码流1, 2-辅码流2, 3-辅码流3, 4-snap, 5-预览, 6-多画面预览 int nDefinition; // 清晰度, 0-标清, 1-高清 DH_DEVICE_PROTOCOL emProtocol; // 协议类型 char szDevName[DH_DEVICE_NAME_LEN]; // 设备名称 int nVideoChannel; // 视频输入通道数 int nAudioChannel; // 音频输入通道数 /*--------------------------------------------------------------------------------------*/ /* 以下只对解码器有效 */ BOOL bDecoder; // 是否是解码器 BYTE byConnType; // -1: auto, 0:TCP;1:UDP;2:组播 BYTE byWorkMode; // 0:直连;1:转发 WORD wListenPort; // 指示侦听服务的端口,转发时有效; byConnType为组播时,则作为多播端口 char szDevIpEx[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // szDevIp扩展,前端DVR的IP地址(可以输入域名) BYTE bySnapMode; // 抓图模式(nStreamType==4时有效) 0:表示请求一帧,1:表示定时发送请求 BYTE byManuFactory; // 目标设备的生产厂商, 具体参考EM_IPC_TYPE类 BYTE byDeviceType; // 目标设备的设备类型, 0:IPC BYTE byDecodePolicy; // 目标设备的解码策略, 0:兼容以前 // 1:实时等级高 2:实时等级中 // 3:实时等级低 4:默认等级 // 5:流畅等级高 6:流畅等级中 // 7:流畅等级低 /*--------------------------------------------------------------------------------------*/ DWORD dwHttpPort; // Http端口号, 0-65535 DWORD dwRtspPort; // Rtsp端口号, 0-65535 char szChnName[DH_DEVICE_NAME_LEN]; // 远程通道名称, 只有读取到的名称不为空时才可以修改该通道的名称 char szMcastIP[DH_MAX_IPADDR_LEN]; // 多播IP地址, byConnType为组播时有效 char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID, ""-null, "Local"-本地通道, "Remote"-远程通道, 或者填入具体的RemoteDevice中的设备ID BOOL bRemoteChannel; // 是否远程通道(只读) unsigned int nRemoteChannelID; // 远程通道ID(只读), bRemoteChannel=TRUE时有效 char szDevClass[DH_DEV_TYPE_LEN]; // 设备类型, 如IPC, DVR, NVR等 char szDevType[DH_DEV_TYPE_LEN]; // 设备具体型号, 如IPC-HF3300 char szMainStreamUrl[MAX_PATH]; // 主码流url地址, byManuFactory为DH_IPC_OTHER时有效 char szExtraStreamUrl[MAX_PATH]; // 辅码流url地址, byManuFactory为DH_IPC_OTHER时有效 int nUniqueChannel; // 设备内统一编号的唯一通道号, 只读 DH_CASCADE_AUTHENTICATOR stuCascadeAuth; // 级联认证信息, 设备ID为"Local/Cascade/SerialNo"时有效, 其中SerialNo是设备序列号 int nHint; // 0-普通视频源, 1-报警视频源 int nOptionalMainUrlCount; // 备用主码流地址数量 char szOptionalMainUrls[DH_MAX_OPTIONAL_URL_NUM][MAX_PATH]; // 备用主码流地址列表 int nOptionalExtraUrlCount; // 备用辅码流地址数量 char szOptionalExtraUrls[DH_MAX_OPTIONAL_URL_NUM][MAX_PATH]; // 备用辅码流地址列表 /*--------------------------------------------------------------------------------------*/ /*协议后续添加字段*/ int nInterval; // 轮巡时间间隔 单位:秒 char szUserEx[DH_NEW_USER_NAME_LENGTH]; // 用户名 char szPwdEx[DH_NEW_USER_PSW_LENGTH]; // 密码 EM_SRC_PUSHSTREAM_TYPE emPushStream; // 推流方式的码流类型,只有byConnType为TCP-Push或UDP-Push才有该字段 NET_RECT stuSRect; // 视频源区域,当szDeviceID不为空时有效,若区域为(0,0,0,0)表示数据无效,设备使用默认值(0,0,8192,8192) NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt; // 码流加密方式 char szSerialNo[DH_SERIALNO_LEN]; // 设备序列号,当连接设备的协议类型为云睿接入,该字段必填 char szCaption[128]; // 通道备注,可用于在OSD显示 BOOL bUserStreamUrlEx; // 是否使用szMainStreamUrlEx/szExtraStreamUrlEx字段 char szMainStreamUrlEx[1024]; // 主码流url地址, byManuFactory为DH_IPC_OTHER时有效 char szExtraStreamUrlEx[1024]; // 辅码流url地址, byManuFactory为DH_IPC_OTHER时有效 } DH_SPLIT_SOURCE; ///@brief 视频输出能力集 typedef struct tagDH_VIDEO_OUT_CAPS { DWORD dwSize; BOOL bColor; // 是否支持输出颜色设置 BOOL bMargin; // 是否支持边界设置 int nLayers; // 支持同时显示的图层数 BOOL bPowerMode; // 是否支持电源控制 int bSplitMode; // 支持的画面分割模式, 0-单画面, 1-'#'字型模式(包括单画面), 2-任意模式 unsigned int nBackground; // 支持的背景方式, 按位表示, 0-颜色, 1-图片 BOOL bBindOutput; // 是否支持输出屏分辨率绑定设置 BOOL bAudioSupport; // 是否支持音频输出 DWORD dwAudioMode; // 支持的音频模式, 按位表示, bit0-主控输出, bit1-子卡输出 } DH_VIDEO_OUT_CAPS; ///@brief 颜色BCSH typedef struct tagDH_COLOR_BCSH { int nBirghtness; // 亮度 int nContrast; // 对比度 int nSaturation; // 饱和度 int nHue; // 色调 } DH_COLOR_BCSH; ///@brief 尺寸 typedef struct tagDH_SIZE { int nWidth; // 宽度 int nHeight; // 高度 } DH_SIZE; ///@brief 热拔插模式 typedef struct tagDH_HOT_PLUG_MODE { DWORD dwSize; int nMode; // 热拔插模式, 0-热插拔模式, 1-强制输出模式 } DH_HOT_PLUG_MODE; ///@brief 视频输出选项 typedef struct tagDH_VIDEO_OUT_OPT { DWORD dwSize; DH_RECT* pstuMargin; // 边界范围 DH_COLOR_BCSH* pstuColor; // 输出颜色 DH_COLOR_RGBA* pstuBackground; // 背景色 DH_SIZE* pstuSize; // 输出尺寸 DH_HOT_PLUG_MODE* pstuHotPlugMode; // 热拔插模式 } DH_VIDEO_OUT_OPT; #define NET_VIDEOANALYSE_SCENES (32) #define NET_VIDEOANALYSE_RULES (64) ///@brief 智能分析 typedef struct tagNET_PD_VIDEOANALYSE { BOOL bSupport; // 是否支持智能分析 char szSupportScenes[NET_VIDEOANALYSE_SCENES][DH_COMMON_STRING_64]; // 支持的场景 char SupportRules[NET_VIDEOANALYSE_RULES][DH_COMMON_STRING_64]; // 支持的规则 } NET_PD_VIDEOANALYSE; ///@brief 设备声道支持类型 typedef enum tagEM_AUDIO_CHANNEL_TYPE { EM_AUDIO_CHANNEL_SINGLE, // 单声道 EM_AUDIO_CHANNEL_DOUBLE, // 双声道 }EM_AUDIO_CHANNEL_TYPE; ///@brief WIFI扫描及配置支持的版本类型 typedef enum tagEM_WLAN_SCAN_AND_CONFIG_TYPE { EM_WLAN_SCAN_AND_CONFIG_UNKNOWN, // 未知 EM_WLAN_SCAN_AND_CONFIG_V2, // V2:二代协议 EM_WLAN_SCAN_AND_CONFIG_V3, // v3:三代协议 }EM_WLAN_SCAN_AND_CONFIG_TYPE; ///@brief 产品定义 typedef struct tagDH_PRODUCTION_DEFNITION { DWORD dwSize; int nVideoInChannel; // 视频输入通道数 int nVideoOutChannel; // 视频输出通道数 int nRemoteDecChannel; // 远程解码通道数 char szDevType[DH_DEV_TYPE_LEN]; // 设备类型 char szVendor[DH_MAX_NAME_LEN]; // OEM客户 int nOEMVersion; // OEM版本 int nMajorVerion; // 主版本号 int nMinorVersion; // 次版本号 int nRevision; // 修订版本 char szWebVerion[DH_MAX_NAME_LEN]; // Web版本 char szDefLanguage[DH_MAX_NAME_LEN]; // 默认语言 NET_TIME stuBuildDateTime; // 发布时间, 精确到秒 int nAudioInChannel; // 音频输入通道数 int nAudioOutChannel; // 音频输出通道数 BOOL bGeneralRecord; // 是否支持定时存储 BOOL bLocalStore; // 是否支持本地存储 BOOL bRemoteStore; // 是否支持网络存储 BOOL bLocalurgentStore; // 是否支持紧急存储到本地 BOOL bRealtimeCompress; // 是否支持实时压缩存储 DWORD dwVideoStandards; // 支持的视频制式列表, bit0-PAL, bit1-NTSC int nDefVideoStandard; // 默认视频制式, 0-PAL, 1-NTSC int nMaxExtraStream; // 最大辅码流路数 int nRemoteRecordChannel; // 远程录像通道数 int nRemoteSnapChannel; // 远程抓图通道数 int nRemoteVideoAnalyseChannel; // 远程视频分析通道数 int nRemoteTransmitChannel; // 远程实时流转发最大通道数 int nRemoteTransmitFileChannel; // 远程文件流竹筏通道通道数 int nStreamTransmitChannel; // 最大网络传输通道总数 int nStreamReadChannel; // 最大读文件流通道总数 int nMaxStreamSendBitrate; // 最大码流网络发送能力, kbps int nMaxStreamRecvBitrate; // 最大码流网络接口能力, kbps BOOL bCompressOldFile; // 是否压缩旧文件, 去除P帧, 保留I帧 BOOL bRaid; // 是否支持RAID int nMaxPreRecordTime; // 最大预录时间, s BOOL bPtzAlarm; // 是否支持云台报警 BOOL bPtz; // 是否支持云台 BOOL bATM; // 是否显示ATM相关功能 BOOL b3G; // 是否支持3G模块 BOOL bNumericKey; // 是否带数字键 BOOL bShiftKey; // 是否带Shift键 BOOL bCorrectKeyMap; // 数字字母映射表是否正确 BOOL bNewATM; // 新的二代ATM前面板 BOOL bDecoder; // 是否是解码器 DEV_DECODER_INFO stuDecoderInfo; // 解码器信息, bDecoder=true时有效 int nVideoOutputCompositeChannels; // 融合屏输出通道上限 BOOL bSupportedWPS; // 是否支持WPS功能 int nVGAVideoOutputChannels; // VGA视频输出通道数 int nTVVideoOutputChannels; // TV视频输出通道数 int nMaxRemoteInputChannels; // 最大远程通道数 int nMaxMatrixInputChannels; // 最大矩阵通道数 int nMaxRoadWays; // 智能交通最大车道数 1~6 int nMaxParkingSpaceScreen; // 和相机对接最多支持的区域屏个数 0~20 int nPtzHorizontalAngleMin; // 云台水平最小角度, [0-360] int nPtzHorizontalAngleMax; // 云台水平最大角度, [0-360] int nPtzVerticalAngleMin; // 云台垂直最小角度, [-90,90] int nPtzVerticalAngleMax; // 云台垂直最大角度, [-90,90] BOOL bPtzFunctionMenu; // 是否支持云台功能菜单 BOOL bLightingControl; // 是否支持灯光控制 DWORD dwLightingControlMode; // 手动灯光控制模式, 按位, 见NET_LIGHTING_CTRL_ON_OFF int nNearLightNumber; // 近光灯组数量, 0表示不支持 int nFarLightNumber; // 远光灯组数量, 0表示不支持 BOOL bFocus; // 是否支持控制聚焦 BOOL bIris; // 是否支持控制光圈 char szPtzProtocolList[DH_COMMON_STRING_1024];// 云台支持的协议列表, 可以是多个, 每个用';'分隔 BOOL bRainBrushControl; // 是否支持雨刷控制 int nBrushNumber; // 雨刷数量, 为0时表示不支持 int nLowerMatrixInputChannels[DH_MAX_LOWER_MITRIX_NUM]; // 下位矩阵视频输入通道, 下标对应矩阵编号 int nLowerMatrixOutputChannels[DH_MAX_LOWER_MITRIX_NUM];// 下位矩阵视频输出通道, 下标对应矩阵编号 BOOL bSupportVideoAnalyse; // 是否支持智能分析 BOOL bSupportIntelliTracker; // 是否支持智能跟踪 DWORD nSupportBreaking; //设备支持的违章类型掩码(按位获取) //0-闯红灯 1-压线 2-逆行 3-欠速 4-超速 5-有车占道 6-黄牌占道 7-违章行驶(左转、右转、调头) //8-违章进入待行区 9-违章停车 10-交通拥堵 11-不按车道行驶 12-违章变道 13-压黄线 14-路肩行驶 //15-手动抓拍 16-违章滞留 17-斑马线行人优先 18-流量过大 19-流量过小 20-违章占道 21-违章倒车 //22-压停止线 23-闯黄灯 24-黄网格线停车 25-车位有车 26-车位无车 27-车位有车压线 28-受限车牌 //29-禁行 30-不系安全带 31-驾驶员抽烟 DWORD nSupportBreaking1; //0-驾驶员打电话 1-行人闯红灯 2-车辆拥堵禁入 3-未按规定依次交替通行 NET_PD_VIDEOANALYSE stuVideoAnalyse; //智能分析 BOOL bTalkTransfer; //是否支持转发对讲功能 BOOL bCameraAttribute; // 是否支持球机摄像头属性页面 BOOL bPTZFunctionViaApp; // 是否支持由应用主控的云台功能逻辑 BOOL bAudioProperties; // 喇叭是否支持语音播报 BOOL bIsCameraIDOsd; // 是否支持摄像机编号叠加 BOOL bIsPlaceOsd; // 是否支持地点信息叠加 unsigned int nMaxGeographyTitleLine; // 地理位置叠加最大支持行数 EM_AUDIO_CHANNEL_TYPE emAudioChannel; // 设备声道支持类型 char szVendorAbbr[DH_COMMON_STRING_32]; // 厂商缩写 char szTypeVersion[DH_COMMON_STRING_32]; // 软件发布类型 BOOL bIsVideoNexus; EM_WLAN_SCAN_AND_CONFIG_TYPE emWlanScanAndConfig; // WIFI扫描及配置支持的版本类型 BOOL bSupportLensMasking; // IPC是否支持镜头调节到负角度,进行结构遮挡 } DH_PRODUCTION_DEFNITION; // 手动灯光控制模式 #define NET_LIGHTING_CTRL_ON_OFF 0x01 // 直接开关模式 #define NET_LIGHTING_CTRL_ADJUST_BRIGHTNESS 0x02 // 手动调节亮度模式 #define NET_LIGHTING_CTRL_ZOOM_PRIO 0x04 // 倍率优先 // 矩阵子卡类型, 多种类型可以组合 #define DH_MATRIX_CARD_MAIN 0x10000000 // 主卡 #define DH_MATRIX_CARD_INPUT 0x00000001 // 输入卡 #define DH_MATRIX_CARD_OUTPUT 0x00000002 // 输出卡 #define DH_MATRIX_CARD_ENCODE 0x00000004 // 编码卡 #define DH_MATRIX_CARD_DECODE 0x00000008 // 解码卡 #define DH_MATRIX_CARD_CASCADE 0x00000010 // 级联卡 #define DH_MATRIX_CARD_INTELLIGENT 0x00000020 // 智能卡 #define DH_MATRIX_CARD_ALARM 0x00000040 // 报警卡 #define DH_MATRIX_CARD_RAID 0x00000080 // 硬Raid卡 #define DH_MATRIX_CARD_NET_DECODE 0x00000100 // 网络解码卡 ///@brief 矩阵子卡信息 typedef struct tagDH_MATRIX_CARD { DWORD dwSize; BOOL bEnable; // 是否有效 DWORD dwCardType; // 子卡类型 char szInterface[DH_MATRIX_INTERFACE_LEN]; // 子卡接口类型, "CVBS", "VGA", "DVI", "BT656","BT1120", "Fiber","HD-SDI", "HDCVI","HDMI","Dual-Link","3G-SDI", "RJ45"... char szAddress[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 设备ip或域名, 无网络接口的子卡可以为空 int nPort; // 端口号, 无网络接口的子卡可以为0 int nDefinition; // 清晰度, 0=标清, 1=高清 int nVideoInChn; // 视频输入通道数 int nAudioInChn; // 音频输入通道数 int nVideoOutChn; // 视频输出通道数 int nAudioOutChn; // 音频输出通道数 int nVideoEncChn; // 视频编码通道数 int nAudioEncChn; // 音频编码通道数 int nVideoDecChn; // 视频解码通道数 int nAudioDecChn; // 音频解码通道数 int nStauts; // 状态: -1-未知, 0-正常, 1-无响应, 2-网络掉线, 3-冲突, 4-正在升级, 5-链路状态异常, 6-子板背板未插好, 7-程序版本出错 int nCommPorts; // 串口数 int nVideoInChnMin; // 视频输入通道号最小值 int nVideoInChnMax; // 视频输入通道号最大值 int nAudioInChnMin; // 音频输入通道号最小值 int nAudioInChnMax; // 音频输入通道号最大值 int nVideoOutChnMin; // 视频输出通道号最小值 int nVideoOutChnMax; // 视频输出通道号最大值 int nAudioOutChnMin; // 音频输出通道号最小值 int nAudioOutChnMax; // 音频输出通道号最大值 int nVideoEncChnMin; // 视频编码通道号最小值 int nVideoEncChnMax; // 视频编码通道号最大值 int nAudioEncChnMin; // 音频编码通道号最小值 int nAudioEncChnMax; // 音频编码通道号最大值 int nVideoDecChnMin; // 视频解码通道号最小值 int nVideoDecChnMax; // 视频解码通道号最大值 int nAudioDecChnMin; // 音频解码通道号最小值 int nAudioDecChnMax; // 音频解码通道号最大值 int nCascadeChannels; // 级联通道数 int nCascadeChannelBitrate; // 级联通道带宽, 单位Mbps int nAlarmInChnCount; // 报警输入通道数 int nAlarmInChnMin; // 报警输入通道号最小值 int nAlarmInChnMax; // 报警输入通道号最大值 int nAlarmOutChnCount; // 报警输出通道数 int nAlarmOutChnMin; // 报警输入通道号最小值 int nAlarmOutChnMax; // 报警输入通道号最大值 int nVideoAnalyseChnCount; // 智能分析通道数 int nVideoAnalyseChnMin; // 智能分析通道号最小值 int nVideoAnalyseChnMax; // 智能分析通道号最大值 int nCommPortMin; // 串口号最小值 int nCommPortMax; // 串口号最大值 char szVersion[DH_COMMON_STRING_32]; // 版本信息 NET_TIME stuBuildTime; // 编译时间 char szBIOSVersion[DH_COMMON_STRING_64]; // BIOS版本号 char szMAC[DH_MACADDR_LEN]; // MAC地址 } DH_MATRIX_CARD; ///@brief 矩阵子卡列表 typedef struct tagDH_MATRIX_CARD_LIST { DWORD dwSize; int nCount; // 子卡数量 DH_MATRIX_CARD stuCards[DH_MATRIX_MAX_CARDS]; // 子卡列表 } DH_MATRIX_CARD_LIST; ///@brief 视频输出窗口 typedef struct tagDH_VIDEO_OUT_WINDOW { DWORD dwSize; int nBackboardID; // 背板号 int nScreenID; // 屏幕号 int nWindowID; // 窗口号 } DH_VIDEO_OUT_WINDOW; ///@brief 设置备份源信息,输入参数 typedef struct tagNET_IN_SETBACKUP_SOURCES_INFO { DWORD dwSize; int nSetSourcesNum; // 设置源信息个数 DH_SPLIT_SOURCE * pSource; // 源信息指针(内存由用户申请释放) } NET_IN_SETBACKUP_SOURCES_INFO; ///@brief 设置备份源信息,输出参数 typedef struct tagNET_OUT_SETBACKUP_SOURCES_INFO { DWORD dwSize; } NET_OUT_SETBACKUP_SOURCES_INFO; ///@brief CLIENT_GetISCSITargets接口输入参数 typedef struct tagDH_IN_ISCSI_TARGETS { DWORD dwSize; const char* pszAddress; // 服务器地址 int nPort; // 端口 const char* pszUser; // 用户名 const char* pszPwd; // 密码 } DH_IN_ISCSI_TARGETS; ///@brief ISCSI Target信息 typedef struct tagDH_ISCSI_TARGET { DWORD dwSize; char szName[DH_MAX_ISCSI_NAME_LEN]; // 名称 char szAddress[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 服务器地址 char szUser[DH_NEW_USER_NAME_LENGTH]; // 用户名 int nPort; // 端口 UINT nStatus; // 状态, 0-未知, 1-已连接, 2-未连接, 3-连接失败, 4-认证失败, 5-连接超时, 6-不存在 } DH_ISCSI_TARGET; ///@brief CLIENT_GetISCSITargets接口输出参数 typedef struct tagDH_OUT_ISCSI_TARGETS { DWORD dwSize; DH_ISCSI_TARGET* pstuTargets; // iscsi数组,由用户申请内存,大小为sizeof(DH_ISCSI_TARGET)*nMaxCount int nMaxCount; // iscsi数组大小 int nRetCount; // 获取到的iscsi信息数 } DH_OUT_ISCSI_TARGETS; ///@brief 位图精度 typedef enum tagDH_BITMAP_ACCURACY { BA_DAY , //天 BA_HOUR , //小时 BA_5MIN , //5分钟 }DH_BITMAP_ACCURACY; #define DH_MAX_BITMAPS 256 // 位图字节数,DH_MAX_BITMAPS*8位 #define DH_MAX_CHN_NUM 256 // 最大通道数 ///@brief CLIENT_GetBitmap接口输入参数 typedef struct tagDH_IN_BITMAP { DWORD dwSize; NET_TIME stuStartTime; // 开始时间, 精确到秒 NET_TIME stuEndTime; // 结束时间, 精确到秒 int nChnList[DH_MAX_CHN_NUM]; // [1, …, 10] 通道号列表,-1表示全部通道,0表示列表结束 DH_BITMAP_ACCURACY emAccuracy; // 位图精度 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }DH_IN_BITMAP; ///@brief bitmap typedef struct tagDH_BITMAP_INFO { DWORD dwSize; int nChnID; //通道号,通道号位0,表示列表结束 BYTE bBitmap[DH_MAX_BITMAPS]; //位图(每一比特位表示一个查询刻度,由低位向高位填充) //支持DH_MAX_BITMAPS * 8个刻度 int nBitNum; //获取的位图位数 }DH_BITMAP_INFO; ///@brief CLIENT_GetBitmap接口输出参数 typedef struct tagDH_OUT_BITMAP { DWORD dwSize; DH_BITMAP_INFO *pstBitmapInfos; // 由用户申请内存,大小为sizeof(DH_BITMAP_INFO)*nMaxBitmapInfo int nGetBitmapInfo; int nMaxBitmapInfo; }DH_OUT_BITMAP; ///@brief 存储设备名称 typedef struct tagDH_STORAGE_DEVICE_NAME { DWORD dwSize; char szName[DH_STORAGE_NAME_LEN]; } DH_STORAGE_DEVICE_NAME; // RAID状态 #define DH_RAID_STATE_ACTIVE 0x00000001 #define DH_RAID_STATE_INACTIVE 0x00000002 #define DH_RAID_STATE_CLEAN 0x00000004 #define DH_RAID_STATE_FAILED 0x00000008 #define DH_RAID_STATE_DEGRADED 0x00000010 #define DH_RAID_STATE_RECOVERING 0x00000020 #define DH_RAID_STATE_RESYNCING 0x00000040 #define DH_RAID_STATE_RESHAPING 0x00000080 #define DH_RAID_STATE_CHECKING 0x00000100 #define DH_RAID_STATE_NOTSTARTED 0x00000200 ///@brief RAID成员信息 typedef struct tagNET_RAID_MEMBER_INFO { DWORD dwSize; DWORD dwID; // 磁盘号, 可用于描述磁盘在磁柜的槽位 BOOL bSpare; // 是否局部热备, true-局部热备, false-RAID子盘 } NET_RAID_MEMBER_INFO; ///@brief RAID信息 typedef struct tagDH_STORAGE_RAID { DWORD dwSize; int nLevel; // 等级 int nState; // RAID状态组合, 如 DH_RAID_STATE_ACTIVE | DH_RAID_STATE_DEGRADED int nMemberNum; // 成员数量 char szMembers[DH_MAX_MEMBER_PER_RAID][DH_STORAGE_NAME_LEN]; // RAID成员 float fRecoverPercent; // 同步百分比, 0~100, RAID状态中有"Recovering"或"Resyncing"时有效 float fRecoverMBps; // 同步速度, 单位MBps, RAID状态中有"Recovering"或"Resyncing"时有效 float fRecoverTimeRemain; // 同步剩余时间, 单位分钟, RAID状态中有"Recovering"或"Resyncing"时有效 NET_RAID_MEMBER_INFO stuMemberInfos[DH_MAX_MEMBER_PER_RAID]; // RAID成员信息 int nRaidDevices; // RAID设备个数 int nTotalDevices; // RAID设备总数 int nActiveDevices; // 活动设备个数 int nWorkingDevices; // 工作设备个数 int nFailedDevices; // 失败设备个数 int nSpareDevices; // 热备设备个数 char szAliasName[DH_COMMON_STRING_24]; // RAID别名,UTF-8编码 } DH_STORAGE_RAID; ///@brief 存储分区信息 typedef struct tagDH_STORAGE_PARTITION { DWORD dwSize; char szName[DH_STORAGE_NAME_LEN]; // 名称 INT64 nTotalSpace; // 总空间, byte INT64 nFreeSpace; // 剩余空间, byte char szMountOn[DH_STORAGE_MOUNT_LEN]; // 挂载点 char szFileSystem[DH_STORAGE_FILE_SYSTEM_LEN]; // 文件系统 int nStatus; // 分区状态, 0-LV不可用, 1-LV可用 BOOL bIsSupportFs; // 设备是否支持当前文件系统, TRUE:支持, FALSE:不支持 } DH_STORAGE_PARTITION; ///@brief 扩展柜信息 typedef struct tagDH_STORAGE_TANK { DWORD dwSize; int nLevel; // 级别, 主机是第0级,其它下属级别类推 int nTankNo; // 同一级扩展柜内的扩展口编号, 从0开始 int nSlot; // 对应主柜上的板卡号, 从0开始编号 } DH_STORAGE_TANK; // 存储设备状态 #define NET_STORAGE_DEV_OFFLINE 0 // 物理硬盘脱机状态 #define NET_STORAGE_DEV_RUNNING 1 // 物理硬盘运行状态 #define NET_STORAGE_DEV_ACTIVE 2 // RAID活动 #define NET_STORAGE_DEV_SYNC 3 // RAID同步 #define NET_STORAGE_DEV_SPARE 4 // RAID热备(局部) #define NET_STORAGE_DEV_FAULTY 5 // RAID失效 #define NET_STORAGE_DEV_REBUILDING 6 // RAID重建 #define NET_STORAGE_DEV_REMOVED 7 // RAID移除 #define NET_STORAGE_DEV_WRITE_ERROR 8 // RAID写错误 #define NET_STORAGE_DEV_WANT_REPLACEMENT 9 // RAID需要被替换 #define NET_STORAGE_DEV_REPLACEMENT 10 // RAID是替代设备 #define NET_STORAGE_DEV_GLOBAL_SPARE 11 // 全局热备 #define NET_STORAGE_DEV_ERROR 12 // 错误, 部分分区可用 #define NET_STORAGE_DEV_RAIDSUB 13 // 该盘目前是单盘, 原先是块Raid子盘, 有可能在重启后自动加入Raid #define NET_STORAGE_DEV_FATAL 14 // 严重错误,全部分区坏(DVR新增错误类型) #define NET_STORAGE_DEV_SNAPSHOT_PARENT 15 // 快照母盘 #define NET_STORAGE_DEV_SNAPSHOT_CHILD 16 // 快照子盘 #define NET_STORAGE_DEV_VOLUMECLONE_PARENT 17 // 卷克隆母盘 #define NET_STORAGE_DEV_VOLUMECLONE_CHILD 18 // 卷克隆子盘 ///@brief 硬盘电源状态 typedef enum tagEM_STORAGE_DISK_POWERMODE { EM_STORAGE_DISK_POWERMODE_UNKNOWN, // UNKnown状态(不是以下状态中的值) EM_STORAGE_DISK_POWERMODE_NONE, // 未知状态 EM_STORAGE_DISK_POWERMODE_ACTIVE, // 活动状态 EM_STORAGE_DISK_POWERMODE_STANDBY, // 休眠状态 EM_STORAGE_DISK_POWERMODE_IDLE, // 空闲状态 }EM_STORAGE_DISK_POWERMODE; ///@brief 硬盘预检状态(EVS定制字段,配合磁盘预检功能使用) typedef enum tagEM_STORAGE_DISK_PREDISKCHECK { EM_STORAGE_DISK_PREDISKCHECK_UNKNOWN, // UnKnown状态 EM_STORAGE_DISK_PREDISKCHECK_GOOD, // 硬盘读速度到120以上,smart信息里有少量的错误,其他无任何错误. EM_STORAGE_DISK_PREDISKCHECK_WARN, // cmd信息里有少量错误记录,smart信息有错误记录 EM_STORAGE_DISK_PREDISKCHECK_ERROR, // cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录 EM_STORAGE_DISK_PREDISKCHECK_WILLFAIL, // 硬盘速度比较低64M以下.cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录 EM_STORAGE_DISK_PREDISKCHECK_FAIL, // 硬盘返回错误 EM_STORAGE_DISK_PREDISKCHECK_NONE, // 未知状态 EM_STORAGE_DISK_PREDISKCHECK_BECHECK, // 正在查询中状态 EM_STORAGE_DISK_PREDISKCHECK_CHECKFAIL, // 查询失败状态 }EM_STORAGE_DISK_PREDISKCHECK; ///@brief 存储设备信息 typedef struct tagDH_STORAGE_DEVICE { DWORD dwSize; char szName[DH_STORAGE_NAME_LEN]; // 名称 INT64 nTotalSpace; // 总空间, byte INT64 nFreeSpace; // 剩余空间, byte BYTE byMedia; // 介质, 0-DISK, 1-CDROM, 2-FLASH BYTE byBUS; // 总线, 0-ATA, 1-SATA, 2-USB, 3-SDIO, 4-SCSI BYTE byVolume; // 卷类型, 0-物理卷, 1-Raid卷, 2-VG虚拟卷, 3-ISCSI, 4-独立物理卷, 5-全局热备卷, 6-NAS卷(包括FTP, SAMBA, NFS) BYTE byState; // 物理硬盘状态, 取值为 NET_STORAGE_DEV_OFFLINE 和 NET_STORAGE_DEV_RUNNING 等 int nPhysicNo; // 同类设备存储接口的物理编号 int nLogicNo; // 同类设备存储接口的逻辑编号 char szParent[DH_STORAGE_NAME_LEN]; // 上级存储组名称 char szModule[DH_STORAGE_NAME_LEN]; // 设备模块 char szSerial[DH_SERIALNO_LEN]; // 设备序列号 char szFirmware[DH_VERSION_LEN]; // 固件版本 int nPartitionNum; // 分区数 DH_STORAGE_PARTITION stuPartitions[DH_MAX_STORAGE_PARTITION_NUM]; // 分区信息 DH_STORAGE_RAID stuRaid; // RAID信息, 只对RAID有效(byVolume == 1) DH_ISCSI_TARGET stuISCSI; // ISCSI信息, 只对ISCSI盘有效(byVolume == 3) BOOL abTank; // 扩展柜使能 DH_STORAGE_TANK stuTank; // 硬盘所在扩展柜信息, abTank为TRUE时有效 EM_STORAGE_DISK_POWERMODE emPowerMode; // 硬盘电源状态 EM_STORAGE_DISK_PREDISKCHECK emPreDiskCheck; // 硬盘预检状态(EVS定制字段,配合磁盘预检功能使用) int nOpState; // 设备操作状态: 0: 正常工作状态, 1: 休眠中, 2: 等待格式化, 3: 格式化进行中, // 4: 等待碎片整理, 5: 碎片整理中, 6: 等待创建RAID 7: 创建RAID中, 8: 等待删除RAID, 9: 删除RAID中, // 10: 等待文件系统修复, 11: 文件系统修复中, 12: 等待预检, 13: 正在预检 } DH_STORAGE_DEVICE; ///@brief 分割窗口OSD信息 typedef struct tagNET_SPLIT_OSD { DWORD dwSize; BOOL bEnable; // 使能 DH_COLOR_RGBA stuFrontColor; // 前景颜色 DH_COLOR_RGBA stuBackColor; // 背景颜色 DH_RECT stuFrontRect; // 前景区域 DH_RECT stuBackRect; // 背景区域 BOOL bRoll; // 是否滚动显示, 只对文本有效 BYTE byRollMode; // 滚动模式, 只对文本有效, 0-从左往右, 1-从右往左, 2-从上往下滚动, 3-从下往上滚动 BYTE byRoolSpeed; // 滚动速率, 只对文本有效, 0~4, 数值越大滚动越快 BYTE byFontSize; // 字体大小, 只对文本有效 BYTE byTextAlign; // 对齐方式, 0-靠左, 1-居中, 2-靠右 BYTE byType; // OSD类型, 0-文本, 1-图标, 2-时间, 3-星期, 4-日期, 5-日期+星期, 6-日期+时间, 7-星期+时间, 8-日期+星期+时间 BYTE Reserved[3]; // 保留字节 char szContent[MAX_PATH]; // OSD内容(已废弃,请使用szContentEx) // 若类型为图标, 内容为图标名称 // 若类型为Time,内容为”Date”(日期),”Week”(星期),”Time”(时间),”\n”(换行)的自由组合。 // 例如:不同行显示,需要将此字段填为"Date\nTime",在屏幕上就会显示 // 2018年4月23日 // 16:49:15 // 同行显示,需要将此字段填为"DateTime",在屏幕上就会显示 // 2018年4月23日16:49:15 float fPitch; // 字符间距, 0.0 ~ 5.0 char szFontType[DH_COMMON_STRING_64]; // 字体类型 char szPattern[8]; // 文本显示模式 Row:横排(默认) Column:竖排 char szContentEx[1024]; // OSD内容 } NET_SPLIT_OSD; ///@brief CLIENT_GetSplitOSD 接口输入参数(获取解码窗口输出OSD信息) typedef struct tagDH_IN_SPLIT_GET_OSD { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号 } DH_IN_SPLIT_GET_OSD; ///@brief CLIENT_GetSplitOSD 接口输出参数(获取解码窗口输出OSD信息) typedef struct tagDH_OUT_SPLIT_GET_OSD { DWORD dwSize; int nOSDNum; // OSD数量 NET_SPLIT_OSD stuOSD[DH_VIDEO_CUSTOM_OSD_NUM]; // OSD信息 } DH_OUT_SPLIT_GET_OSD; ///@brief CLIENT_SetSplitOSD 接口输入参数(设置解码窗口输出OSD信息) typedef struct tagDH_IN_SPLIT_SET_OSD { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号 int nOSDNum; // OSD数量 NET_SPLIT_OSD stuOSD[DH_VIDEO_CUSTOM_OSD_NUM]; // OSD信息 } DH_IN_SPLIT_SET_OSD; ///@brief CLIENT_SetSplitOSD 接口输出参数(设置解码窗口输出OSD信息) typedef struct tagDH_OUT_SPLIT_SET_OSD { DWORD dwSize; } DH_OUT_SPLIT_SET_OSD; ///@brief CLIENT_GetSplitOSDEx 接口输入参数(获取解码窗口输出OSD信息) typedef struct tagNET_IN_SPLIT_GET_OSD_EX { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号 } NET_IN_SPLIT_GET_OSD_EX; ///@brief CLIENT_GetSplitOSDEx 接口输出参数(获取解码窗口输出OSD信息) typedef struct tagNET_OUT_SPLIT_GET_OSD_EX { DWORD dwSize; int nOSDNum; // OSD数量 NET_SPLIT_OSD stuOSD[DH_VIDEO_CUSTOM_OSD_NUM_EX]; // OSD信息 } NET_OUT_SPLIT_GET_OSD_EX; ///@brief CLIENT_SetSplitOSDEx接口输入参数(设置解码窗口输出OSD信息) typedef struct tagNET_IN_SPLIT_SET_OSD_EX { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号 int nOSDNum; // OSD数量 NET_SPLIT_OSD stuOSD[DH_VIDEO_CUSTOM_OSD_NUM_EX]; // OSD信息 }NET_IN_SPLIT_SET_OSD_EX; ///@brief CLIENT_SetSplitOSDEx 接口输出参数(设置解码窗口输出OSD信息) typedef struct tagNET_OUT_SPLIT_SET_OSD_EX { DWORD dwSize; } NET_OUT_SPLIT_SET_OSD_EX; ///@brief 视频输出控制方式 typedef enum { EM_VIDEO_OUT_CTRL_CHANNEL, // 逻辑通道号控制方式, 对物理屏和拼接屏都有效 EM_VIDEO_OUT_CTRL_COMPOSITE_ID, // 拼接屏ID控制方式, 只对拼接屏有效 } EM_VIDEO_OUT_CTRL_TYPE; ///@brief CLIENT_SetSplitSourceEx 接口的输入参数 typedef struct tagNET_IN_SET_SPLIT_SOURCE { DWORD dwSize; EM_VIDEO_OUT_CTRL_TYPE emCtrlType; // 视频输出控制方式 int nChannel; // 视频输出逻辑通道号, emCtrlType为EM_VIDEO_OUT_CTRL_CHANNEL时有效 const char* pszCompositeID; // 拼接屏ID, emCtrlType为EM_VIDEO_OUT_CTRL_COMPOSITE_ID时有效 int nWindow; // 窗口号, -1表示当前分割模式下的所有窗口 DH_SPLIT_SOURCE* pstuSources; // 视频源信息, 当nWindow=-1时, 视频源是个数组, 且数量与窗口数一致 // 由用户申请内存,大小为sizeof(DH_SPLIT_SOURCE)*nSourceCount int nSourceCount; // 视频源数量 } NET_IN_SET_SPLIT_SOURCE; ///@brief 设置视频源的返回结果 typedef struct tagNET_SET_SPLIT_SOURCE_RESULT { DWORD dwSize; int nPushPort; // 推流模式的设备端监听端口号 } NET_SET_SPLIT_SOURCE_RESULT; ///@brief CLIENT_SetSplitSourceEx 接口的输出参数 typedef struct tagNET_OUT_SET_SPLIT_SOURCE { DWORD dwSize; NET_SET_SPLIT_SOURCE_RESULT* pstuResults; // 设置成功后的返回值, 对应NET_IN_SET_SPLIT_SOURCE中的窗口数组, 用户分配内存,大小为sizeof(NET_SET_SPLIT_SOURCE_RESULT)*nMaxResultCount, 如果不需要可以为NULL int nMaxResultCount; // pstuResults数组的大小 int nRetCount; // 返回的数量 } NET_OUT_SET_SPLIT_SOURCE; ///@brief CLIENT_SplitExchangeSource 接口输入参数 typedef struct tagNET_IN_SPLIT_EXCHANGE_SOURCE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindowID1; // 窗口号1 int nWindowID2; // 窗口号2 }NET_IN_SPLIT_EXCHANGE_SOURCE; ///@brief CLIENT_SplitExchangeSource 接口输出参数 typedef struct tagNET_OUT_SPLIT_EXCHANGE_SOURCE { DWORD dwSize; }NET_OUT_SPLIT_EXCHANGE_SOURCE; ///@brief 卷类型枚举 typedef enum tagNET_VOLUME_TYPE { VOLUME_TYPE_ALL = 0 , //所有卷 VOLUME_TYPE_PHYSICAL , //物理卷 VOLUME_TYPE_RAID , //Raid卷 VOLUME_TYPE_VOLUME_GROUP , //VG虚拟卷组 VOLUME_TYPE_ISCSI , //iSCSI卷 VOLUME_TYPE_INVIDUAL_PHY , //独立物理卷(这个物理盘,没有加入到, RAID,虚拟卷组等等组中) VOLUME_TYPE_GLOBAL_SPARE , //全局热备卷 VOLUME_TYPE_NAS , //NAS盘(包括FTP, SAMBA, NFS) VOLUME_TYPE_INVIDUAL_RAID, //独立RAID卷(指没有加入到,虚拟卷组等组中) VOLUME_TYPE_MAX , }NET_VOLUME_TYPE; #define MAX_DEVICE_VOLUME_NUMS 128 //卷类型的最大上限 ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES类型接口输入参数 typedef struct tagNET_IN_STORAGE_DEV_NAMES { DWORD dwSize; NET_VOLUME_TYPE emVolumeType; //要获取的卷类型 } NET_IN_STORAGE_DEV_NAMES; ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES类型接口输出参数 typedef struct tagNET_OUT_STORAGE_DEV_NAMES { DWORD dwSize; int nDevNamesNum; //获取到设备的存储模块名数量 char szStoregeDevNames[MAX_DEVICE_VOLUME_NUMS][DH_STORAGE_NAME_LEN]; //设备名列表 }NET_OUT_STORAGE_DEV_NAMES; ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS接口输入参数 typedef struct tagNET_IN_STORAGE_DEV_INFOS { DWORD dwSize; NET_VOLUME_TYPE emVolumeType; //要获取的卷类型 } NET_IN_STORAGE_DEV_INFOS; ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS接口输出参数 typedef struct tagNET_OUT_STORAGE_DEV_INFOS { DWORD dwSize; int nDevInfosNum; //获取到设备的存储模块信息列表 DH_STORAGE_DEVICE stuStoregeDevInfos[MAX_DEVICE_VOLUME_NUMS]; //设备信息列表,DH_STORAGE_DEVICE的dwsize需赋值 } NET_OUT_STORAGE_DEV_INFOS; ///@brief 获取车辆信息的类型 typedef enum tagNET_RECENCY_CAR_INFO { RECENCY_CAR_INFO_UNKNOW = 0 , RECENCY_CAR_INFOO_NEWEST , //最新 RECENCY_CAR_INFO_ODLEST , //最旧 RECENCY_CAR_INFO_MAX , }NET_RECENCY_CAR_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_RECENCY_JNNCTION_CAR_INFO接口输入参数 typedef struct tagNET_IN_GET_RECENCY_JUNCTION_CAR_INFO { DWORD dwSize; int nChannel; //抓拍通道号 NET_RECENCY_CAR_INFO emRecencyType; //获取车辆信息的类型,最新的还是最旧的 DWORD nIndex; //第几个车辆信息,从1开始,如果为0也表示第1个 }NET_IN_GET_RECENCY_JUNCTION_CAR_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_RECENCY_JNNCTION_CAR_INFO接口输出参数 typedef struct tagNET_OUT_GET_RECENCY_JUNCTION_CAR_INFO { DWORD dwSize; DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 }NET_OUT_GET_RECENCY_JUNCTION_CAR_INFO; #define NET_MAX_FISHEYE_WINDOW_NUM 8 // 最大鱼眼窗口数 ///@brief 窗口位置信息 typedef struct tagNET_FISHEYE_WINDOW_INFO { DWORD dwSize; DWORD dwWindowID; // 窗口ID int nFocusX; // EPtz(电子云台)的焦点横坐标 int nFocusY; // EPtz (电子云台)的焦点纵坐标 int nHorizontalAngle; // EPtz的水平角度 int nVerticalAngle; // EPtz的垂直角度 }NET_FISHEYE_WINDOW_INFO; ///@brief 对应CLIENT_QueryDevInfo接口,NET_QUERY_DEV_FISHEYE_WININFO查询鱼眼窗口信息输入参数 typedef struct tagNET_IN_FISHEYE_WININFO { DWORD dwSize; int nChannelId; // 通道号 int nWindowNum; // 待查询的窗口数 int nWindows[NET_MAX_FISHEYE_WINDOW_NUM]; // 窗口id,不可重复 }NET_IN_FISHEYE_WININFO; ///@brief 对应CLIENT_QueryDevInfo接口,NET_QUERY_DEV_FISHEYE_WININFO查询鱼眼窗口信息输出参数 typedef struct tagNET_OUT_FISHEYE_WININFO { DWORD dwSize; int nWindowNum; //的窗口数 NET_FISHEYE_WINDOW_INFO stuWindows[NET_MAX_FISHEYE_WINDOW_NUM]; // 窗口具体信息 }NET_OUT_FISHEYE_WININFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_LANES_STATE接口输入参数 typedef struct tagNET_IN_GET_LANES_STATE { DWORD dwSize; int nLaneNumber; //-1代表查询所有车道,>=0时表示查询指定车道 }NET_IN_GET_LANES_STATE; ///@brief 信号灯指示状态 typedef enum tagNET_TRAFFIC_LIGHT_STATUS { LIGHT_STATUS_UNKNOWN = 0 , //未知 LIGHT_STATUS_RED , //红灯 LIGHT_STATUS_GREEN , //绿灯 LIGHT_STATUS_YELLOW , //黄灯 }NET_TRAFFIC_LIGHT_STATUS; ///@brief 信号灯指示信息 typedef struct tatNET_TRAFFIC_LIGHT_INFO { DWORD dwSize; NET_TRAFFIC_LIGHT_STATUS emStraightLightInfo; //直行信号灯状态 NET_TRAFFIC_LIGHT_STATUS emLeftLightInfo; //左转信号灯状态 NET_TRAFFIC_LIGHT_STATUS emRightLightInfo; //右转信号灯状态 NET_TRAFFIC_LIGHT_STATUS emUTurnLightInfo; //调头信号灯状态 }NET_TRAFFIC_LIGHT_INFO; ///@brief 车道方向 typedef enum tagNET_TRAFFIC_DIRECTION { DIRECTION_UNKNOW = 0 , //未知 DIRECTION_STRAIGHT , //直行 DIRECTION_LEFT , //左转 DIRECTION_RIGHT , //右转 DIRECTION_UTURN , //调头 }NET_TRAFFIC_DIRECTION; ///@brief 车道信息 typedef struct tagNET_TRAFFIC_LANE_INFO { DWORD dwSize; UINT nLaneNumber; //车道号,0开始 UINT nSupportDirectionNum; //车道可以行使的方向数 NET_TRAFFIC_DIRECTION emTrafficDirections[MAX_LANE_DIRECTION_NUM]; //车道方向,表示此车道可以行使的所有方向 NET_TRAFFIC_JAM_STATUS emJamState; //道路拥挤状况 /*流量信息*/ UINT nLargeVehicleNum; //大型车数量 UINT nMediumVehicleNum; //中型车数量 UINT nSmallVehicleNum; //小型车数量 UINT nMotoNum; //摩托车数量 }NET_TRAFFIC_LANE_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_LANES_STATE接口输出参数 typedef struct tagNET_OUT_GET_LANES_STATE { DWORD dwSize; int nGetLaneInfoNum; //获取到的车道信息数 NET_TRAFFIC_LANE_INFO stLaneInfos[MAX_LANE_INFO_NUM]; //获取到的车道信息 NET_TRAFFIC_LIGHT_INFO stLightInfo; //信号灯指示状态 }NET_OUT_GET_LANES_STATE; ///@brief CLIENT_QueryDevInfo , NET_QUERY_SYSTEM_INFO 类型接口输入参数 typedef struct tagNET_IN_SYSTEM_INFO { DWORD dwSize; } NET_IN_SYSTEM_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_SYSTEM_INFO 类型接口输出参数 typedef struct tagNET_OUT_SYSTEM_INFO { DWORD dwSize; BOOL bHasRTC; //是否有RTC芯片(记录系统时间用)默认TRUE,表示有RTC int nRetMCUNum; // 返回的单片机个数 char szMCUVersion[MAX_MCU_NUM][DH_MAX_VERSION_LEN]; // 单片机软件版本号 }NET_OUT_SYSTEM_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_REG_DEVICE_NET_INFO 类型接口输入参数 typedef struct tagNET_IN_REGDEV_NET_INFO { DWORD dwSize; char szDevSerial[DH_DEV_SERIALNO_LEN]; // 主动注册时上报的设备序列号 }NET_IN_REGDEV_NET_INFO; ///@brief 主动注册连接使用的网络类型 typedef enum tagNET_CELLUAR_NET_TYPE { EM_CELLUAR_NET_UNKNOW = -1 , //未知 EM_CELLUAR_NET_PRIVATE_3G_4G = 0 , //专有3G/4G网络,(如公安内网) EM_CELLUAR_NET_COMMERCIAL_3G_4G = 1 , //商用的3G/4G网络,(如移动、电信等) EM_CELLUAR_NET_MAX , }NET_CELLUAR_NET_TYPE; ///@brief CLIENT_QueryDevInfo , NET_QUERY_REG_DEVICE_NET_INFO 类型接口输出参数 typedef struct tagNET_OUT_REGDEV_NET_INFO { DWORD dwSize; NET_CELLUAR_NET_TYPE emCelluarNetType; //主动注册连接使用的网络类型 }NET_OUT_REGDEV_NET_INFO; ///@brief 获取视频通道属性命令的子类型 typedef enum tagNET_VIDEO_CHANNEL_TYPE { NET_VIDEO_CHANNEL_TYPE_ALL, // 全部 NET_VIDEO_CHANNEL_TYPE_INPUT, // 输入 NET_VIDEO_CHANNEL_TYPE_OUTPUT, // 输出 } NET_VIDEO_CHANNEL_TYPE; ///@brief CLIENT_QueryDevInfo , NET_QUERY_VIDEOCHANNELSINFO 命令输入参数 typedef struct tagNET_IN_GET_VIDEOCHANNELSINFO { DWORD dwSize; NET_VIDEO_CHANNEL_TYPE emType; // 需要获取的通道类型 } NET_IN_GET_VIDEOCHANNELSINFO; ///@brief 输入通道信息 typedef struct tagNET_VIDEOCHANNELS_INPUT { int nThermographyCount; // 热成像通道个数 int nThermography[64]; // 热成像通道的通道号 int nMultiPreviewCount; // 多画面预览通道个数 int nMultiPreview[4]; // 多画面预览通道号 int nPIPCount; // 画中画通道个数 int nPIP[4]; // 画中画通道号 int nCompressPlayCount; // 二次压缩回放通道个数 int nCompressPlay[4]; // 二次压缩回放通道号 int nSDCount; // 球机通道个数 int nSD[64]; // 球机通道号 int nPTZCount; // 支持云台程序的通道数量 short nPTZ[64]; // 支持云台程序的通道号 int nFuseRadarCount; // 支持融合雷达流,可见光叠加雷达流的通道数量 int nFuseRadar[64]; // 支持融合雷达流,可见光叠加雷达流的通道号 int nPureRadarCount; // 支持纯雷达流,无可见光的通道数量 int nPureRadar[64]; // 支持纯雷达流,无可见光的通道号 BOOL bIsPTZValid; // nPTZ是否有效 char reserved[4092]; } NET_VIDEOCHANNELS_INPUT; ///@brief 输入通道扩展信息 typedef struct tagNET_VIDEOCHANNELS_INPUT_EX { int nSDCount; // 球机通道个数 unsigned short nSD[1024]; // 支持云台程序的通道数量(扩展) int nPTZCount; // 支持云台程序的通道数量 unsigned short nPTZ[1024]; // 支持云台程序的通道号(扩展) BOOL bIsPTZValid; // nPTZ是否有效 char reserved[1020]; // 预留字段 }NET_VIDEOCHANNELS_INPUT_EX; ///@brief 输出通道信息 typedef struct tagNET_VIDEOCHANNELS_OUTPUT { int nVGACount; // VGA输出个数 int nVGA[128]; // VGA输出 int nTVCount; // TV输出个数 int nTV[128]; // TV输出 char reserved[512]; } NET_VIDEOCHANNELS_OUTPUT; ///@brief CLIENT_QueryDevInfo , NET_QUERY_VIDEOCHANNELSINFO 命令输出参数 typedef struct tagNET_OUT_GET_VIDEOCHANNELSINFO { DWORD dwSize; NET_VIDEOCHANNELS_INPUT stInputChannels; // 输入通道信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/INPUT时有效 NET_VIDEOCHANNELS_OUTPUT stOutputChannels; // 输出通道信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/OUTPUT时有效 NET_VIDEOCHANNELS_INPUT_EX stInputChannelsEx; // 输入通道扩展信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/INPUT时有效 } NET_OUT_GET_VIDEOCHANNELSINFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_WORKGROUP_NAMES 命令输入参数 typedef struct tagNET_IN_WORKGROUP_NAMES { DWORD dwSize; } NET_IN_WORKGROUP_NAMES; // 工作目录组名最大长度 #define WORKGROUP_NAME_LEN 32 ///@brief CLIENT_QueryDevInfo , NET_QUERY_WORKGROUP_NAMES 命令输出参数 typedef struct tagNET_OUT_WORKGROUP_NAMES { DWORD dwSize; int nCount; // 工作组个数 char szName[64][WORKGROUP_NAME_LEN]; // 每个工作组的名字 } NET_OUT_WORKGROUP_NAMES; ///@brief CLIENT_QueryDevInfo , NET_QUERY_WORKGROUP_INFO 命令输入参数 typedef struct tagNET_IN_WORKGROUP_INFO { DWORD dwSize; char szName[WORKGROUP_NAME_LEN]; // 需要获取信息的工作组 } NET_IN_WORKGROUP_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_WORKGROUP_INFO 命令输出参数 typedef struct tagNET_OUT_WORKGROUP_INFO { DWORD dwSize; int nState; // 状态:0 无意义,1 正常,2 损坏,3 错误 int nTotalSpace; // 总空间 单位:MB -1表示获取失败 int nFreeSpace; // 剩余空间 单位:MB -1表示获取失败 } NET_OUT_WORKGROUP_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输入参数 typedef struct tagNET_IN_WLAN_ACCESSPOINT { DWORD dwSize; char szSSID[DH_MAX_SSID_LEN]; // 需要获取信息的无线网络名称,为空时搜索所有网络 char szName[MAX_COMMON_STRING_32]; // 网卡名称, 为空时, 默认为eth2 } NET_IN_WLAN_ACCESSPOINT; ///@brief 接入点信息 typedef struct tagNET_WLAN_ACCESSPOINT_INFO { char szSSID[DH_MAX_SSID_LEN]; // 无线网络名称 int nStrength; // 信号强度 范围0-100 int nAuthMode; // 认证模式0:OPEN;1:SHARED;2:WPA;3:WPA-PSK;4:WPA2;5:WPA2-PSK; // 6:WPA-NONE(用在adhoc网络模式), // 7-11是混合模式,选择其中任何一种都可以进行连接 // 7:WPA-PSK | WPA2-PSK; 8:WPA | WPA2; 9:WPA | WPA-PSK; // 10:WPA2 | WPA2-PSK; 11:WPA | WPA-PSK |WPA2 |WPA2-PSK //12: UnKnown int nEncrAlgr; // 0:NONE, 1:WEP, 2:TKIP, 3:AES(CCMP), 4:TKIP+AES( mix Mode), 5:UnKnown char reserved[1016]; } NET_WLAN_ACCESSPOINT_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输出参数 typedef struct tagNET_OUT_WLAN_ACCESSPOINT { DWORD dwSize; int nCount; // 无线网络接入点个数 NET_WLAN_ACCESSPOINT_INFO stuInfo[128]; // 接入点信息 } NET_OUT_WLAN_ACCESSPOINT; ///@brief CLIENT_QueryDevInfo , NET_QUERY_TRAFFICRADAR_VERSION 命令输入参数 typedef struct tagNET_IN_TRAFFICRADAR_VERSION { DWORD dwSize; int nChannel; // 串口号 } NET_IN_TRAFFICRADAR_VERSION; ///@brief CLIENT_QueryDevInfo , NET_QUERY_TRAFFICRADAR_VERSION 命令输出参数 typedef struct tagNET_OUT_TRAFFICRADAR_VERSION { DWORD dwSize; char szVersion[DH_MAX_VERSION_LEN]; // 版本号 } NET_OUT_TRAFFICRADAR_VERSION; typedef NET_OUT_GET_LANES_STATE NET_CB_LANES_STATE; ///@brief 接口 CLIENT_AttachLanesState 回调函数 typedef void (CALLBACK *fNotifyLanesState)(LLONG lLanesStateHandle, NET_CB_LANES_STATE* pLanesStateInfo, LDWORD dwUser, void *reserved); ///@brief 接口 CLIENT_AttachLanesState 的输入参数 typedef struct tagNET_IN_ATTACH_LANES_STATE { DWORD dwSize; // 此结构体大小 int nChannelID; // 通道号 int nLaneNumber; // -1代表订阅所有车道,>=0时表示订阅指定车道 fNotifyLanesState cbNotifyLanesState; // 回调函数 LDWORD dwUser; // 用户自定义参数 } NET_IN_ATTACH_LANES_STATE; ///@brief 接口 CLIENT_AttachLanesState 的输出参数 typedef struct tagNET_OUT_ATTACH_LANES_STATE { DWORD dwSize; // 此结构体大小 } NET_OUT_ATTACH_LANES_STATE; ///@brief CLIENT_MatrixSwitch 输入参数 typedef struct tagNET_IN_MATRIX_SWITCH { DWORD dwSize; DH_SPLIT_MODE emSplitMode; // 分割模式 int* pnOutputChannels; // 输出通道, 可同时指定多个输出通道一起切换, 内容一致 // 由用户申请内存,大小为sizeof(int)*nOutputChannelCount int nOutputChannelCount; // 输出通道数 int* pnInputChannels; // 输入通道, 每个分割窗口一个对应一个输入通道 // 由用户申请内存,大小为sizeof(int)*nInputChannelCount int nInputChannelCount; // 输入通道数 } NET_IN_MATRIX_SWITCH; ///@brief CLIENT_MatrixSwitch 输出参数 typedef struct tagNET_OUT_MATRIX_SWITCH { DWORD dwSize; } NET_OUT_MATRIX_SWITCH; ///@brief CLIENT_SplitSetMultiSource 接口的输入参数 typedef struct tagNET_IN_SPLIT_SET_MULTI_SOURCE { DWORD dwSize; EM_VIDEO_OUT_CTRL_TYPE emCtrlType; // 视频输出控制方式 int nChannel; // 视频输出逻辑通道号, emCtrlType为EM_VIDEO_OUT_CTRL_CHANNEL时有效 const char* pszCompositeID; // 拼接屏ID, emCtrlType为EM_VIDEO_OUT_CTRL_COMPOSITE_ID时有效 BOOL bSplitModeEnable; // 是否改变分割模式 DH_SPLIT_MODE emSplitMode; // 分割模式, bSplitModeEnable=TRUE时有效 int nGroupID; // 分割分组号, bSplitModeEnable=TRUE时有效 int* pnWindows; // 窗口号数组,由用户申请内存,大小为sizeof(int)*nWindowCount int nWindowCount; // 窗口数量 DH_SPLIT_SOURCE* pstuSources; // 视频源信息, 分别对应每个窗口, 数量同窗口数,由用户申请内存,大小为sizeof(DH_SPLIT_SOURCE)*nWindowCount } NET_IN_SPLIT_SET_MULTI_SOURCE; ///@brief CLIENT_SplitSetMultiSource 接口的输出参数 typedef struct tagNET_OUT_SPLIT_SET_MULTI_SOURCE { DWORD dwSize; } NET_OUT_SPLIT_SET_MULTI_SOURCE; ///@brief 视频分割操作类型 typedef enum tagNET_SPLIT_OPERATE_TYPE { NET_SPLIT_OPERATE_SET_BACKGROUND, // 设置背景图片, 对应 NET_IN_SPLIT_SET_BACKGROUND 和 NET_OUT_SPLIT_SET_BACKBROUND NET_SPLIT_OPERATE_GET_BACKGROUND, // 获取背景图片, 对应 NET_IN_SPLIT_GET_BACKGROUND 和 NET_OUT_SPLIT_GET_BACKGROUND NET_SPLIT_OPERATE_SET_PREPULLSRC, // 设置预拉流源, 对应 NET_IN_SPLIT_SET_PREPULLSRC 和 NET_OUT_SPLIT_SET_PREPULLSRC NET_SPLIT_OPERATE_SET_HIGHLIGHT, // 设置源边框高亮使能开关, 对应 NET_IN_SPLIT_SET_HIGHLIGHT 和 NET_OUT_SPLIT_SET_HIGHLIGHT NET_SPLIT_OPERATE_SET_ZORDER, // 调整窗口Z序, 对应 NET_IN_SPLIT_SET_ZORDER 和 NET_OUT_SPLIT_SET_ZORDER NET_SPLIT_OPERATE_SET_TOUR, // 窗口轮巡控制, 对应 NET_IN_SPLIT_SET_TOUR 和 NET_OUT_SPLIT_SET_TOUR NET_SPLIT_OPERATE_GET_TOUR_STATUS, // 获取窗口轮巡状态, 对应 NET_IN_SPLIT_GET_TOUR_STATUS 和 NET_OUT_SPLIT_GET_TOUR_STATUS NET_SPLIT_OPERATE_GET_SCENE, // 获取屏内窗口信息, 对应 NET_IN_SPLIT_GET_SCENE 和 NET_OUT_SPLIT_GET_SCENE NET_SPLIT_OPERATE_OPEN_WINDOWS, // 批量开窗, 对应 NET_IN_SPLIT_OPEN_WINDOWS 和 NET_OUT_SPLIT_OPEN_WINDOWS NET_SPLIT_OPERATE_SET_WORK_MODE, // 设置工作模式, 对应 NET_IN_SPLIT_SET_WORK_MODE 和 NET_OUT_SPLIT_SET_WORK_MODE NET_SPLIT_OPERATE_GET_PLAYER, // 获取播放器实例,对应 NET_IN_SPLIT_GET_PLAYER 和 NET_OUT_SPLIT_GET_PLAYER NET_WM_OPERATE_SET_WORK_MODE, // 设置窗口工作模式,对应 NET_IN_WM_SET_WORK_MODE 和 NET_OUT_WM_SET_WORK_MODE NET_WM_OPERATE_GET_WORK_MODE, // 获取窗口工作模式,对应 NET_IN_WM_GET_WORK_MODE 和 NET_OUT_WM_GET_WORK_MODE NET_SPLIT_OPERATE_CLOSE_WINDOWS, // 批量关窗, 对应 NET_IN_SPLIT_CLOSE_WINDOWS 和 NET_OUT_SPLIT_CLOSE_WINDOWS NET_WM_OPERATE_SET_FISH_EYE_PARAM, // 设置输出屏的鱼眼矫正规则 , 对应NET_IN_WM_SET_FISH_EYE_PARAM 和 NET_OUT_WM_SET_FISH_EYE_PARAM NET_WM_OPERATE_SET_CORRIDOR_MODE, // 设置窗口走廊模式,对应NET_IN_WM_SET_CORRIDOR_MODE和NET_OUT_WM_SET_CORRIDOR_MODE NET_WM_OPERATE_GET_CORRIDOR_MODE, // 获取窗口走廊模式,对应NET_IN_WM_GET_CORRIDOR_MODE和NET_OUT_WM_GET_CORRIDOR_MODE NET_WM_OPERATE_SET_VOLUME_COLUMN, // 设置显示音量柱使能模式,对应NET_IN_WM_SET_VOLUME_COLUMN和NET_OUT_WM_SET_VOLUME_COLUMN NET_WM_OPERATE_GET_VOLUME_COLUMN, // 获取显示音量柱使能模式,对应NET_IN_WM_GET_VOLUME_COLUMN和NET_OUT_WM_GET_VOLUME_COLUMN NET_WM_OPERATE_SET_BACKGROUND, // 设置窗口背景图片,对应NET_IN_WM_SET_BACKGROUND和NET_OUT_WM_SET_BACKGROUND NET_WM_OPERATE_GET_BACKGROUND, // 获取窗口背景图片,对应NET_IN_WM_GET_BACKGROUND和NET_OUT_WM_GET_BACKGROUND NET_WM_OPERATE_SET_ROTATE_MODE, // 设置图像画面旋转模式,对应NET_IN_WM_SET_ROTATE_MODE和NET_OUT_WM_SET_ROTATE_MODE NET_WM_OPERATE_SET_MEETING_MODE, // 设置视频源显示区域的模式,对应NET_IN_WM_SET_MEETING_MODE和NET_OUT_WM_SET_MEETING_MODE NET_WM_OPERATE_SET_LOCK_POSITION, // 设置锁定窗口当前位置,对应NET_IN_WM_SET_LOCK_POSITION和NET_OUT_WM_SET_LOCK_POSITION NET_WM_OPERATE_SET_COLLECTION_CTRL_ID, // 修改预案控制ID,对应NET_IN_WM_SET_COLLECTION_CTRL_ID和NET_OUT_WM_SET_COLLECTION_CTRL_ID NET_SPLIT_OPERATES_SET_SOURCE_ATTRIBUTE, // 设置信号源属性,对应NET_IN_SPLIT_SET_SOURCE_ATTRIBUTE和NET_OUT_SPLIT_SET_SOURCE_ATTRIBUTE NET_SPLIT_OPERATES_SET_DOCK_CONTROL, // 设置窗口粘附状态,对应NET_IN_SPLIT_SET_DOCK_CONTROL和NET_OUT_SPLIT_SET_DOCK_CONTROL NET_WM_OPERATE_SET_MODE, // 设置窗口分割模式,对应NET_IN_WM_SET_MODE和NET_OUT_WM_SET_MODE } NET_SPLIT_OPERATE_TYPE; ///@brief 设置源边框高亮使能开关输入参数 typedef struct tagNET_IN_SPLIT_SET_HIGHLIGHT { DWORD dwSize; int nChannel; // 视频输出通道 int nWindow; // 窗口号 BOOL bHighLightEn; // 边框高亮使能,TRUE-表示高亮 DH_COLOR_RGBA stuColor; // 边框颜色 int nBlinkTimes; // 边框闪烁次数 int nBlinkInterval; // 闪烁间隔时间,单位ms }NET_IN_SPLIT_SET_HIGHLIGHT; ///@brief 设置源边框高亮使能开关输出参数 typedef struct tagNET_OUT_SPLIT_SET_HIGHLIGHT { DWORD dwSize; }NET_OUT_SPLIT_SET_HIGHLIGHT; ///@brief 设置预拉流源输入参数 typedef struct tagNET_IN_SPLIT_SET_PREPULLSRC { DWORD dwSize; int nChannel; // 视频输出通道 int nWindow; // 窗口号 int nSrcCount; // 预拉流源数量 DH_SPLIT_SOURCE* pSources; // 预拉流源信息,由用户申请内存,大小为sizeof(DH_SPLIT_SOURCE)*nSrcCount } NET_IN_SPLIT_SET_PREPULLSRC; ///@brief 设置预拉流源的返回结果 typedef struct tagNET_SPLIT_SET_PREPULLSRC_RESULT { DWORD dwSize; BOOL bResult; // 设置结果, TRUE-成功, FALSE-失败 DWORD dwErrorCode; // 失败错误码 } NET_SPLIT_SET_PREPULLSRC_RESULT; ///@brief 设置预拉流源输出参数 typedef struct tagNET_OUT_SPLIT_SET_PREPULLSRC { DWORD dwSize; int nResultCount; // 结果数量, 与预拉流源数量相同 NET_SPLIT_SET_PREPULLSRC_RESULT* pResults; // 结果 } NET_OUT_SPLIT_SET_PREPULLSRC; ///@brief 设置视频输出背景图输入参数 typedef struct tagNET_IN_SPLIT_SET_BACKGROUND { DWORD dwSize; int nChannel; // 视频输出通道号 BOOL bEnable; // 使能 const char* pszFileName; // 背景图名称 } NET_IN_SPLIT_SET_BACKGROUND; ///@brief 设置视频输出背景图输出参数 typedef struct tagNET_OUT_SPLIT_SET_BACKGROUND { DWORD dwSize; } NET_OUT_SPLIT_SET_BACKGROUND; ///@brief 获取视频输出背景图输入参数 typedef struct tagNET_IN_SPLIT_GET_BACKGROUND { DWORD dwSize; int nChannel; // 视频输出通道号 } NET_IN_SPLIT_GET_BACKGROUND; ///@brief 获取视频输出背景图输出参数 typedef struct tagNET_OUT_SPLIT_GET_BACKGROUND { DWORD dwSize; BOOL bEnable; // 使能 char szFileName[DH_COMMON_STRING_256]; // 背景图名称 } NET_OUT_SPLIT_GET_BACKGROUND; ///@brief 设置窗口背景图输入参数 typedef struct tagNET_IN_WM_SET_BACKGROUND { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 char *pszCompositeID; // 融合屏ID int nWindowID; // 窗口号 BOOL bEnable; // 是否叠加底图 char szFileName[DH_COMMON_STRING_128]; // 背景图片名称 } NET_IN_WM_SET_BACKGROUND; ///@brief 设置窗口背景图输出参数 typedef struct tagNET_OUT_WM_SET_BACKGROUND { DWORD dwSize; } NET_OUT_WM_SET_BACKGROUND; ///@brief 获取窗口背景图输入参数 typedef struct tagNET_IN_WM_GET_BACKGROUND { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 char *pszCompositeID; // 融合屏ID int nWindowID; // 窗口号 } NET_IN_WM_GET_BACKGROUND; ///@brief 获取窗口背景图输出参数 typedef struct tagNET_OUT_WM_GET_BACKGROUND { DWORD dwSize; BOOL bEnable; // 是否叠加底图 char szFileName[DH_COMMON_STRING_128]; // 背景图名称 } NET_OUT_WM_GET_BACKGROUND; ///@brief 窗口Z次序 typedef enum tagNET_WINDOW_ZORDER { NET_WINDOW_ZORDER_TOP, // 顶层 NET_WINDOW_ZORDER_BOTTOM, // 底层 NET_WINDOW_ZORDER_UP, // 往上一层 NET_WINDOW_ZORDER_DOWN, // 往下一层 } NET_WINDOW_ZORDER; ///@brief 窗口层叠次序 typedef struct tagDH_WND_ZORDER { DWORD dwSize; unsigned int nWindowID; // 窗口序号 unsigned int nZOrder; // Z次序 } DH_WND_ZORDER; ///@brief 设置窗口Z序输入参数 typedef struct tagNET_IN_SPLIT_SET_ZORDER { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 NET_WINDOW_ZORDER emZOrder; // 调整的Z序 } NET_IN_SPLIT_SET_ZORDER; ///@brief 设置窗口Z序输出参数, 调整一个窗口的Z序会影响所有窗口, 返回调整后所有窗口的Z序 typedef struct tagNET_OUT_SPLIT_SET_ZORDER { DWORD dwSize; DH_WND_ZORDER* pZOders; // 窗口次序数组, 用户分配内存,大小为sizeof(DH_WND_ZORDER)*nMaxWndCount int nMaxWndCount; // 窗口次序数组大小 int nWndCount; // 返回的窗口数量 } NET_OUT_SPLIT_SET_ZORDER; ///@brief 窗口轮巡动作 typedef enum tagEM_NET_WINDOW_TOUR_ACTION { EM_NET_WND_TOUR_ACTION_START, // 开始 EM_NET_WND_TOUR_ACTION_STOP, // 停止 } EM_NET_WINDOW_TOUR_ACTION; ///@brief 窗口轮巡控制输入参数, 对应NET_SPLIT_OPERATE_SET_TOUR typedef struct tagNET_IN_SPLIT_SET_TOUR { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 EM_NET_WINDOW_TOUR_ACTION emAction; // 轮巡动作 } NET_IN_SPLIT_SET_TOUR; ///@brief 窗口轮巡控制输出参数, 对应NET_SPLIT_OPERATE_SET_TOUR typedef struct tagNET_OUT_SPLIT_SET_TOUR { DWORD dwSize; } NET_OUT_SPLIT_SET_TOUR; ///@brief 获取窗口轮巡状态输入参数, 对应NET_SPLIT_OPERATE_GET_TOUR_STATUS typedef struct tagNET_IN_SPLIT_GET_TOUR_STATUS { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号, -1表示所有窗口 } NET_IN_SPLIT_GET_TOUR_STATUS; ///@brief 轮巡状态 typedef enum tagNET_TOUR_STATUS { NET_TOUR_UNKNOWN, // 未知 NET_TOUR_START, // 轮巡中 NET_TOUR_STOP, // 轮巡停止 }NET_TOUR_STATUS; ///@brief 窗口轮巡状态信息 typedef struct tagNET_WINDOW_TOUR_STATUS_INFO { DWORD dwSize; int nWindow; // 窗口号 NET_TOUR_STATUS emStatus; // 状态 } NET_WINDOW_TOUR_STATUS_INFO; ///@brief 获取窗口轮巡状态输出参数, 对应NET_SPLIT_OPERATE_GET_TOUR_STATUS typedef struct tagNET_OUT_SPLIT_GET_TOUR_STATUS { DWORD dwSize; NET_WINDOW_TOUR_STATUS_INFO* pstuStatus; // 状态信息指针, 用户分配内存. 查询窗口号为-1时表示多个窗口的信息数组. int nMaxStatusCount; // 状态信息最大数量, 用户输入 int nRetStatusCount; // 状态信息实际数量, 查询得到 } NET_OUT_SPLIT_GET_TOUR_STATUS; ///@brief 批量开窗输入参数, 对应NET_SPLIT_OPERATE_OPEN_WINDOWS typedef struct tagNET_IN_SPLIT_OPEN_WINDOWS { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏id int nWindowNum; // 窗口数量 NET_RECT* pstuWindowRects; // 窗口区域数组,由用户申请内存,大小为sizeof(NET_RECT)*nWindowNum BOOL bDirectable; // 满足直通条件 } NET_IN_SPLIT_OPEN_WINDOWS; ///@brief 窗口信息 typedef struct tagNET_SPLIT_WINDOW_INFO { DWORD dwSize; int nWindowID; // 窗口号 int nZOrder; // Z次序 char szControlID[DH_DEV_ID_LEN]; // 控制编号 } NET_SPLIT_WINDOW_INFO; ///@brief 批量开窗输出参数, 对应NET_SPLIT_OPERATE_OPEN_WINDOWS typedef struct tagNET_OUT_SPLIT_OPEN_WINDOWS { DWORD dwSize; NET_SPLIT_WINDOW_INFO* pstuWindows; // 窗口信息, 用户分配内存,大小为sizeof(NET_SPLIT_WINDOW_INFO)*nMaxWindowCount int nMaxWindowCount; // 窗口信息最大数量, 用户输入 int nRetWindowCount; // 开窗数量 } NET_OUT_SPLIT_OPEN_WINDOWS; ///@brief 画面分割工作模式 typedef enum tagNET_SPLIT_WORK_MODE { NET_SPLIT_WORK_MODE_UNKNOWN, // 未知 NET_SPLIT_WORK_MODE_LOCAL, // 本地普通模式 NET_SPLIT_WORK_MODE_REPLAY, // 回放模式 }NET_SPLIT_WORK_MODE; ///@brief 设置工作模式输入参数, 对应 NET_SPLIT_OPERATE_SET_WORK_MODE typedef struct tagNET_IN_SPLIT_SET_WORK_MODE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID NET_SPLIT_WORK_MODE emMode; // 工作模式 }NET_IN_SPLIT_SET_WORK_MODE; ///@brief 设置工作模式输出参数, 对应 NET_SPLIT_OPERATE_SET_WORK_MODE typedef struct tagNET_OUT_SPLIT_SET_WORK_MODE { DWORD dwSize; }NET_OUT_SPLIT_SET_WORK_MODE; ///@brief 播放器类型 typedef enum tagNET_SPLIT_PLAYER_TYPE { NET_SPLIT_PLAYER_TYPE_UNKNOWN, // 未知 NET_SPLIT_PLAYER_TYPE_FILE_LIST, // 文件列表播放器 NET_SPLIT_PLAYER_TYPE_FILE, // 文件播放器 }NET_SPLIT_PLAYER_TYPE; ///@brief 获取播放器实例输入参数, 对应 NET_SPLIT_OPERATE_GET_PLAYER typedef struct tagNET_IN_SPLIT_GET_PLAYER { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID NET_SPLIT_PLAYER_TYPE emType; // 播放器类型 int nWindow; // 播放器所在的窗口号 }NET_IN_SPLIT_GET_PLAYER; ///@brief 获取播放器实例输出参数, 对应 NET_SPLIT_OPERATE_GET_PLAYER typedef struct tagNET_OUT_SPLIT_GET_PLAYER { DWORD dwSize; LLONG lPlayerID; // 播放器实例ID }NET_OUT_SPLIT_GET_PLAYER; ///@brief 窗口工作模式 typedef enum tagNET_WM_WORK_MODE { NET_WM_WORK_MODE_UNKNOWN, // 未知 NET_WM_WORK_MODE_DISPLAY, // 预览模式 NET_WM_WORK_MODE_REPLAY, // 回放模式 }NET_WM_WORK_MODE; ///@brief 设置窗口工作模式输入参数, 对应 NET_WM_OPERATE_SET_WORK_MODE typedef struct tagNET_IN_WM_SET_WORK_MODE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 NET_WM_WORK_MODE emMode; // 窗口工作模式 }NET_IN_WM_SET_WORK_MODE; ///@brief 设置窗口工作模式输出参数, 对应 NET_WM_OPERATE_SET_WORK_MODE typedef struct tagNET_OUT_WM_SET_WORK_MODE { DWORD dwSize; }NET_OUT_WM_SET_WORK_MODE; ///@brief 获取窗口工作模式输入参数, 对应 NET_WM_OPERATE_GET_WORK_MODE typedef struct tagNET_IN_WM_GET_WORK_MODE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 }NET_IN_WM_GET_WORK_MODE; ///@brief 获取窗口工作模式输出参数, 对应 NET_WM_OPERATE_GET_WORK_MODE typedef struct tagNET_OUT_WM_GET_WORK_MODE { DWORD dwSize; NET_WM_WORK_MODE emMode; // 窗口工作模式 }NET_OUT_WM_GET_WORK_MODE; ///@brief 设置窗口走廊模式输入参数,对应NET_WM_OPERATE_SET_CORRIDOR_MODE typedef struct tagNET_IN_WM_SET_CORRIDOR_MODE { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 BOOL bIsCorridor; // 窗口走廊模式(TRUE:打开 FALSE:关闭) } NET_IN_WM_SET_CORRIDOR_MODE; ///@brief 设置窗口走廊模式输出参数,对应NET_WM_OPERATE_SET_CORRIDOR_MODE typedef struct tagNET_OUT_WM_SET_CORRIDOR_MODE { DWORD dwSize; // 用户使用时赋值为结构体大小 } NET_OUT_WM_SET_CORRIDOR_MODE; ///@brief 获取窗口走廊模式输入参数,对应NET_WM_OPERATE_GET_CORRIDOR_MODE typedef struct tagNET_IN_WM_GET_CORRIDOR_MODE { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindow; // 窗口号 } NET_IN_WM_GET_CORRIDOR_MODE; ///@brief 获取窗口走廊模式输出参数,对应NET_WM_OPERATE_GET_CORRIDOR_MODE typedef struct tagNET_OUT_WM_GET_CORRIDOR_MODE { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bIsCorridor; // 窗口走廊模式(TRUE:打开 FALSE:关闭) } NET_OUT_WM_GET_CORRIDOR_MODE; ///@brief 设置显示音量柱使能模式输入参数,对应NET_WM_OPERATE_SET_VOLUME_COLUMN typedef struct tagNET_IN_WM_SET_VOLUME_COLUMN { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID BOOL bIsEnable; // 是否显示音量柱(TRUE:显示 FALSE:关闭) } NET_IN_WM_SET_VOLUME_COLUMN; ///@brief 设置显示音量柱使能模式输出参数,对应NET_WM_OPERATE_SET_VOLUME_COLUMN typedef struct tagNET_OUT_WM_SET_VOLUME_COLUMN { DWORD dwSize; // 用户使用时赋值为结构体大小 } NET_OUT_WM_SET_VOLUME_COLUMN; ///@brief 获取显示音量柱使能模式输人参数,对应NET_WM_OPERATE_GET_VOLUME_COLUMN typedef struct tagNET_IN_WM_GET_VOLUME_COLUMN { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID } NET_IN_WM_GET_VOLUME_COLUMN; ///@brief 获取显示音量柱使能模式输出参数,对应NET_WM_OPERATE_GET_VOLUME_COLUMN typedef struct tagNET_OUT_WM_GET_VOLUME_COLUMN { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bIsEnable; // 是否显示音量柱(TRUE:显示 FALSE:关闭) } NET_OUT_WM_GET_VOLUME_COLUMN; ///@brief 批量关窗输入参数, 对应NET_SPLIT_OPERATE_CLOSE_WINDOWS typedef struct tagNET_IN_SPLIT_CLOSE_WINDOWS { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int* pnWindows; // 窗口号数组指针,由用户申请内存,大小为sizeof(int)*nWindowCount int nWindowCount; // 窗口数量 } NET_IN_SPLIT_CLOSE_WINDOWS; ///@brief 关窗操作结果 typedef struct tagNET_SPLIT_CLOSE_WINDOW_RESULT { BOOL bResult; // 结果 char reserved[256]; // 保留字节 } NET_SPLIT_CLOSE_WINDOW_RESULT ; ///@brief 批量关窗输出参数, 对应NET_SPLIT_OPERATE_CLOSE_WINDOWS typedef struct tagNET_OUT_SPLIT_CLOSE_WINDOWS { DWORD dwSize; NET_SPLIT_CLOSE_WINDOW_RESULT* pstuResults; // 结果数组, 用户分配内存,大小为sizeof(NET_SPLIT_CLOSE_WINDOW_RESULT)*nMaxResultCount. 如果不需要返回结果, 可以为NULL int nMaxResultCount; // 结果数组最大数量, 用户填写. int nRetResultCount; // 返回的结果数量 } NET_OUT_SPLIT_CLOSE_WINDOWS; ///@brief 输出屏鱼眼矫正模式 typedef enum tagNET_WM_FISHEYE_CALIBRATE_MODE { NET_WM_FISHEYE_CALIBRATE_MODE_UNKOWN , // 未知模式 NET_WM_FISHEYE_CALIBRATE_MODE_CLOSE , // 关闭鱼眼算法 NET_WM_FISHEYE_CALIBRATE_MODE_ORIGINAL, // 原始模式(正方形) 带缩放比例 NET_WM_FISHEYE_CALIBRATE_MODE_PANORAMA, // 1P NET_WM_FISHEYE_CALIBRATE_MODE_PAN_PLUS_ONE, // 1P+1 NET_WM_FISHEYE_CALIBRATE_MODE_DOUBLE_PANORAMA, // 2P NET_WM_FISHEYE_CALIBRATE_MODE_ORI_DOUBLE_PAN, // 1+2p NET_WM_FISHEYE_CALIBRATE_MODE_ORI_PLUS_THREEE, // 1+3 NET_WM_FISHEYE_CALIBRATE_MODE_PAN_PLUS_THREEE, // 1p+3 NET_WM_FISHEYE_CALIBRATE_MODE_ORI_PLUS_TWO, // 1+2 NET_WM_FISHEYE_CALIBRATE_MODE_ORI_PLUS_FOUR, // 1+4 NET_WM_FISHEYE_CALIBRATE_MODE_PAN_PLUS_FOUR, // 1p+4 NET_WM_FISHEYE_CALIBRATE_MODE_PAN_PLUS_SIX, // 1p+6 NET_WM_FISHEYE_CALIBRATE_MODE_ORI_PLUS_EIGHT, // 1+8 NET_WM_FISHEYE_CALIBRATE_MODE_PAN_PLUS_EIGHT, // 1P+8 }NET_WM_FISHEYE_CALIBRATE_MODE; ///@brief 鱼眼矫正窗口区域参数 typedef struct tagNET_WM_FISH_EYE_REGION_PARAM { int nCoordinateX; // 窗口中心对应到原始圆的横坐标 int nCoordinateY; // 窗口中心对应到原始圆的横坐标纵坐标 int nAngleH; // 以X、Y为中心,校正区域范围的水平角度 int nAngleV; // 以X、Y为中心,校正区域范围的垂直角度 int nAvailable; // 表示是否可用 BYTE Reserved[124]; // 保留字节 }NET_WM_FISH_EYE_REGION_PARAM; #define MAX_FISH_EYE_REGION_NUM 9 ///@brief 模式初始化各画面信息,适用于模式切换恢复到上一次的状态 typedef struct tagNET_WM_SET_FISHEYE_INIT_PARAM { BOOL bUseRegion; // 为TRUE时,使用以下成员进行初始化,为FALSE时以下成员无效 int nCircular; // 环形偏移(鱼眼显示模式中带原始图时有意义。如1+3、1+8等模式的1画面) int nPanorama; // 全景偏移(鱼眼显示模式带全景时有意义,如1P、2P等模式) int nFishEyeRegionNum; // 鱼眼矫正窗口区域参数个数(数组个数等于实际的矫正模式.如1+3,则有4个元素) NET_WM_FISH_EYE_REGION_PARAM stFishEyeRegions[MAX_FISH_EYE_REGION_NUM]; // 鱼眼矫正窗口区域参数信息 BYTE Reserved[1024]; // 保留字节 }NET_WM_SET_FISHEYE_INIT_PARAM; ///@brief 电子云台缩放移动参数 typedef struct tagNET_WM_SET_FISHEYE_EPTZ_PARAM { int nOptWayType; // 操作类型(表示鱼眼云台控制时的arg1,表示是移动还是放大) int nOptWinNum; // 小窗口号(当前正在操作的小窗口号) int nOptWayData; // 操作数据(表示鱼眼云台控制时的数据大小。和OptWayType配合使用) BYTE Reserved[512]; // 保留字节 }NET_WM_SET_FISHEYE_EPTZ_PARAM; ///@brief 设置输出屏的鱼眼矫正规则输入参数, 对应NET_IN_WM_SET_FISH_EYE_PARAM typedef struct tagNET_IN_WM_SET_FISH_EYE_PARAM { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindowID; // 对应输出屏的窗口号 NET_FISHEYE_MOUNT_MODE emMount; // 鱼眼安装模式 NET_WM_FISHEYE_CALIBRATE_MODE emCalibrate; // 鱼眼矫正模式 NET_WM_SET_FISHEYE_INIT_PARAM stInitParam; // 模式初始化各画面信息 NET_WM_SET_FISHEYE_EPTZ_PARAM stEPtzParam; // 电子云台缩放移动参数 }NET_IN_WM_SET_FISH_EYE_PARAM; ///@brief 设置输出屏的鱼眼矫正规则输出参数, 对应NET_OUT_WM_SET_FISH_EYE_PARAM typedef struct tagNET_OUT_WM_SET_FISH_EYE_PARAM { DWORD dwSize; }NET_OUT_WM_SET_FISH_EYE_PARAM; ///@brief 图像旋转方式 typedef enum tagEM_WM_ROTATE_TYPE { EM_WM_ROTATE_TYPE_NO_ROTATE, // 不旋转 EM_WM_ROTATE_TYPE_90_ROTATE, // 旋转90° EM_WM_ROTATE_TYPE_180_ROTATE, // 旋转180° EM_WM_ROTATE_TYPE_270_ROTATE, // 旋转270° }EM_WM_ROTATE_TYPE; ///@brief 设置图像旋转模式输入参数 typedef struct tagNET_IN_WM_SET_ROTATE_MODE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID int nWindowID; // 窗口号 EM_WM_ROTATE_TYPE emRotateType; // 图像旋转方式 } NET_IN_WM_SET_ROTATE_MODE; ///@brief 设置图像旋转模式输出参数 typedef struct tagNET_OUT_WM_SET_ROTATE_MODE { DWORD dwSize; } NET_OUT_WM_SET_ROTATE_MODE; ///@brief 信号源属性 typedef struct tagNET_SOURCE_ATTRIBUTE_INFO { unsigned char ucBrightness; // 亮度,范围0~255 unsigned char ucContrast; // 对比度,范围0~255 unsigned char ucSaturation; // 色彩饱和度,范围0~255 unsigned char ucEQ; // 视频高频信号的补偿调节,范围0~10 BYTE byReserver1[4]; // 保留字节,用于字节对齐 int nMargin[4]; // 边距,每一项分别表示信号源左上右下四个边的边距,每项-50~50 BYTE byReserver[512]; // 保留字节 }NET_SOURCE_ATTRIBUTE_INFO; ///@brief 设置信号源属性 输入参数 typedef struct tagNET_IN_SPLIT_SET_SOURCE_ATTRIBUTE { DWORD dwSize; // 结构体大小 char szCompositeID[64]; // 拼接屏ID int nChannel; // 通道号 int nWindow; // 窗口号 NET_SOURCE_ATTRIBUTE_INFO stuAttribute; // 信号源属性 }NET_IN_SPLIT_SET_SOURCE_ATTRIBUTE; ///@brief 设置信号源属性 输出参数 typedef struct tagNET_OUT_SPLIT_SET_SOURCE_ATTRIBUTE { DWORD dwSize; // 结构体大小 }NET_OUT_SPLIT_SET_SOURCE_ATTRIBUTE; ///@brief 设置窗口粘附状态 输入参数 typedef struct tagNET_IN_SPLIT_SET_DOCK_CONTROL { DWORD dwSize; // 结构体大小 char szCompositeID[64]; // 拼接屏ID int nChannel; // 通道号 int nWindow; // 窗口号 BOOL bDock; // 是否开启窗口粘附效果 }NET_IN_SPLIT_SET_DOCK_CONTROL; ///@brief 设置窗口粘附状态 输出参数 typedef struct tagNET_OUT_SPLIT_SET_DOCK_CONTROL { DWORD dwSize; // 结构体大小 }NET_OUT_SPLIT_SET_DOCK_CONTROL; ///@brief 设置视频源显示区域的模式 输入参数 typedef struct tagNET_IN_WM_SET_MEETING_MODE { DWORD dwSize; // 结构体大小 char szComposite[64]; // 拼接屏号 int nChannel; // 输出通道号或融合屏虚拟通道号, szComposite为空时有效 int nWindow; // 窗口号 BOOL bEnable; // TRUE:会议室模式; FALSE:标准模式 }NET_IN_WM_SET_MEETING_MODE; ///@brief 设置视频源显示区域的模式 输出参数 typedef struct tagNET_OUT_WM_SET_MEETING_MODE { DWORD dwSize; // 结构体大小 }NET_OUT_WM_SET_MEETING_MODE; ///@brief 设置锁定窗口当前位置 输入参数 typedef struct tagNET_IN_WM_SET_LOCK_POSITION { DWORD dwSize; // 结构体大小 char szComposite[64]; // 拼接屏号 int nChannel; // 输出通道号或融合屏虚拟通道号, szComposite为空时有效 int nWindow; // 窗口ID,-1代表所有窗口 BOOL bLock; // 是否锁定 }NET_IN_WM_SET_LOCK_POSITION; ///@brief 设置锁定窗口当前位置 输出参数 typedef struct tagNET_OUT_WM_SET_LOCK_POSITION { DWORD dwSize; // 结构体大小 }NET_OUT_WM_SET_LOCK_POSITION; ///@brief 修改预案控制ID 输入参数 typedef struct tagNET_IN_WM_SET_COLLECTION_CTRL_ID { DWORD dwSize; // 结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号, szComposite为空时有效 char szComposite[64]; // 拼接屏号 char szName[128]; // 预案名称 char szControlID[8]; // 预案新的控制ID(数值范围:1-255) }NET_IN_WM_SET_COLLECTION_CTRL_ID; ///@brief 修改预案控制ID 输出参数 typedef struct tagNET_OUT_WM_SET_COLLECTION_CTRL_ID { DWORD dwSize; // 结构体大小 }NET_OUT_WM_SET_COLLECTION_CTRL_ID ; ///@brief 设置窗口分割模式 输入参数 typedef struct tagNET_IN_WM_SET_MODE { DWORD dwSize; // 结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindow; // 窗口号 DH_SPLIT_MODE emSplitMode; // 分割模式 }NET_IN_WM_SET_MODE ; ///@brief 分割后的窗口信息 typedef struct tagNET_SPLITED_WINDOW_INFO { NET_RECT stuRect; // 窗口区域,8192坐标系[0-8191] int nWindow; // 窗口号,这个窗口是拆分后的新窗口和原来的窗口号是不同的 int nZOrder; // 窗口Z序 char szControlID[32]; // 窗口控制ID BYTE byReserver[512]; // 保留字节 }NET_SPLITED_WINDOW_INFO; ///@brief 设置窗口分割模式 输出参数 typedef struct tagNET_OUT_WM_SET_MODE { DWORD dwSize; // 结构体大小 UINT nSplitedWindowNum; // 分割后的窗口个数 NET_SPLITED_WINDOW_INFO stuSplitedWindow[144]; // 分割后的窗口信息 }NET_OUT_WM_SET_MODE; ////////////////////////////// 系统状态 //////////////////////////////////////// ///@brief CPU信息 typedef struct tagDH_CPU_INFO { DWORD dwSize; int nUsage; // CPU利用率 } DH_CPU_INFO; ///@brief CPU状态 typedef struct tagDH_CPU_STATUS { DWORD dwSize; BOOL bEnable; // 查询是否成功 int nCount; // CPU数量 DH_CPU_INFO stuCPUs[DH_MAX_CPU_NUM]; // CPU信息 } DH_CPU_STATUS; ///@brief 内存信息 typedef struct tagDH_MEMORY_INFO { DWORD dwSize; DWORD dwTotal; // 总内存, M DWORD dwFree; // 剩余内存, M } DH_MEMORY_INFO; ///@brief 内存状态 typedef struct tagDH_MEMORY_STATUS { DWORD dwSize; BOOL bEnable; // 查询是否成功 DH_MEMORY_INFO stuMemory; // 内存信息 } DH_MEMORY_STATUS; ///@brief 风扇信息 typedef struct tagDH_FAN_INFO { DWORD dwSize; char szName[DH_DEVICE_NAME_LEN]; // 名称 DWORD nSpeed; // 速度 } DH_FAN_INFO; ///@brief 风扇状态 typedef struct tagDH_FAN_STATUS { DWORD dwSize; BOOL bEnable; // 查询是否成功 int nCount; // 风扇数量 DH_FAN_INFO stuFans[DH_MAX_FAN_NUM]; // 风扇状态 } DH_FAN_STATUS; ///@brief 电源电流状态类型 typedef enum __EM_CURRENT_STATE_TYPE { EM_CURRENT_STATE_UNKNOWN = 0, EM_CURRENT_STATE_OVER_CURRENT, // 电流过载 EM_CURRENT_STATE_NORMAL, // 电流正常 EM_CURRENT_STATE_UNDER_CURRENT, // 电源欠流 }EM_CURRENT_STATE_TYPE; ///@brief 电源电压状态类型 typedef enum tagEM_VOLTAGE_STATE_TYPE { EM_VOLTAGE_STATE_UNKNOWN, // 未知 EM_VOLTAGE_STATE_OVER, // 过压 EM_VOLTAGE_STATE_NORMAL, // 正常 EM_VOLTAGE_STATE_UNDER, // 欠压 } EM_VOLTAGE_STATE_TYPE; ///@brief 电源信息 typedef struct tagDH_POWER_INFO { DWORD dwSize; BOOL bPowerOn; // 电源状态, 0-关闭, 1-打开, 2-打开但有故障 EM_CURRENT_STATE_TYPE emCurrentState; // 电源电流状态 EM_VOLTAGE_STATE_TYPE emVoltageState; // 电源电压状态 } DH_POWER_INFO; ///@brief 电池在位状态 typedef enum __EM_BATTERY_EXIST_STATE { EM_BATTERY_EXIST_STATE_UNKNOWN = 0, EM_BATTERY_EXIST_STATE_EXIST, // 电池在位 EM_BATTERY_EXIST_STATE_MISSING, // 电池丢失 }EM_BATTERY_EXIST_STATE; ///@brief 电池电量状态 typedef enum __EM_BATTERY_STATE { EM_BATTERY_STATE_UNKNOWN = 0, EM_BATTERY_STATE_NORMAL, // 电量正常 EM_BATTERY_STATE_LOW, // 电量低 }EM_BATTERY_STATE; ///@brief 电池温度状态 typedef enum tagEM_BATTERY_TEMPER_STATE { EM_BATTERY_TEMPER_STATE_UNKNOWN, // 未知 EM_BATTERY_TEMPER_STATE_LOW_TEMPER, // 低温 EM_BATTERY_TEMPER_STATE_NORMAL_TEMPER, // 常温 EM_BATTERY_TEMPER_STATE_HIGH_TEMPER, // 高温 EM_BATTERY_TEMPER_STATE_OVER_TEMPER, // 超温 EM_BATTERY_TEMPER_STATE_ABNORMAL_TEMPER, // 异常 }EM_BATTERY_TEMPER_STATE; ///@brief 电池信息, CLIENT_QueryDevState接口的 DH_DEVSTATE_POWER_STATE 命令参数 typedef struct tagDH_BATTERY_INFO { DWORD dwSize; int nPercent; // 电池容量百分比 BOOL bCharging; // 是否正在充电 EM_BATTERY_EXIST_STATE emExistState; // 电池在位状态 EM_BATTERY_STATE emState; // 电池电量状态 float fVoltage; // 电池电压 EM_BATTERY_TEMPER_STATE emTemperState; // 电池温度状态 } DH_BATTERY_INFO; ///@brief 电源状态 typedef struct tagDH_POWER_STATUS { DWORD dwSize; BOOL bEnable; // 查询是否成功 int nCount; // 电源数量 DH_POWER_INFO stuPowers[DH_MAX_POWER_NUM]; // 电源状态 int nBatteryNum; // 电池数量 DH_BATTERY_INFO stuBatteries[DH_MAX_BATTERY_NUM]; // 电池状态 } DH_POWER_STATUS; ///@brief 温度信息 typedef struct tagDH_TEMPERATURE_INFO { DWORD dwSize; char szName[DH_DEVICE_NAME_LEN]; // 传感器名称 float fTemperature; // 温度 } DH_TEMPERATURE_INFO; ///@brief 温度状态 typedef struct tagDH_TEMPERATURE_STATUS { DWORD dwSize; BOOL bEnable; // 查询是否成功 int nCount; // 温度数量 DH_TEMPERATURE_INFO stuTemps[DH_MAX_TEMPERATURE_NUM]; // 温度信息 } DH_TEMPERATURE_STATUS; ///@brief 系统状态 typedef struct tagDH_SYSTEM_STATUS { DWORD dwSize; DH_CPU_STATUS* pstuCPU; // CPU状态 DH_MEMORY_STATUS* pstuMemory; // 内存状态 DH_FAN_STATUS* pstuFan; // 风扇状态 DH_POWER_STATUS* pstuPower; // 电源状态 DH_TEMPERATURE_STATUS* pstuTemp; // 温度状态 } DH_SYSTEM_STATUS; ///@brief 对应CLIENT_QueryDevState()接口的 DH_DEVSTATE_ALL_ALARM_CHANNELS_STATE命令参数 ///@brief 获取报警通道状态 typedef enum tagNET_ALARM_CHANNEL_TYPE { NET_ALARM_CHANNEL_TYPE_ALL, // 所有通道(包含以下所有) NET_ALARM_CHANNEL_TYPE_ALARMIN, // 报警输入通道 NET_ALARM_CHANNEL_TYPE_ALARMOUT, // 报警输出通道 NET_ALARM_CHANNEL_TYPE_ALARMBELL, // 警号通道 NET_ALARM_CHANNEL_TYPE_EXALARMIN, // 扩展模块报警输入通道 NET_ALARM_CHANNEL_TYPE_EXALARMOUT, // 扩展模块报警输出通道 }NET_ALARM_CHANNEL_TYPE; ///@brief 查询报警通道状态 typedef struct tagNET_CLIENT_ALARM_CHANNELS_STATE { DWORD dwSize; NET_ALARM_CHANNEL_TYPE emType; // 查询报警通道的类型 int nAlarmInCount; // 报警输入个数,由用户指定 int nAlarmInRetCount; // 报警输入返回个数 BOOL* pbAlarmInState; // 报警输入状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输入,FALSE为无输入 // 由用户申请内存,大小sizeof(BOOL)*nAlarmInCount int nAlarmOutCount; // 报警输出个数,由用户指定 int nAlarmOutRetCount; // 报警输出个数 BOOL* pbAlarmOutState; // 报警输出状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为输出 // 由用户申请内存,大小sizeof(BOOL)*nAlarmOutCount int nAlarmBellCount; // 警号个数,由用户指定 int nAlarmBellRetCount; // 警号返回个数 BOOL* pbAlarmBellState; // 警号状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出 // 由用户申请内存,大小sizeof(BOOL)*nAlarmBellCount int nExAlarmInCount; // 扩展模块报警输入个数,由用户指定 int nExAlarmInRetCount; // 扩展模块报警输入返回个数 BOOL* pbExAlarmInState; // 扩展模块报警输入状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出 // 由用户申请内存,大小sizeof(BOOL)*nExAlarmInCount int* pnExAlarmInDestionation; // 扩展模块报警输入有效通道的位置,由用户申请内存,大小sizeof(int)*nExAlarmInCount int nExAlarmOutCount; // 扩展模块报警输出个数,由用户指定 int nExAlarmOutRetCount; // 扩展模块报警输出个数 BOOL* pbExAlarmOutState; // 扩展模块报警输出状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出 // 由用户申请内存,大小为sizeof(BOOL)*nExAlarmOutCount int* pnExAlarmOutDestionation; // 扩展模块报警输出有效通道的位置,由用户申请内存,大小为sizeof(int)*nExAlarmOutCount }NET_CLIENT_ALARM_CHANNELS_STATE; ///@brief 串口上连接的报警键盘数 typedef struct tagNET_ALARMKEYBOARD_COUNT { DWORD dwSize; int nAlarmKeyboardCount; // 连接着的报警键盘数目 }NET_ALARMKEYBOARD_COUNT; ///@brief 设备串口连接的设备类型 typedef enum tagEM_COM_PORT_DEVICE_TYPE { EM_COM_PORT_DEVICE_TYPE_UNKNOWN, // 未知的 EM_COM_PORT_DEVICE_TYPE_PTZ, // ptz EM_COM_PORT_DEVICE_TYPE_GPS, // GPS EM_COM_PORT_DEVICE_TYPE_ALARMKEYBOARD, // 报警键盘 EM_COM_PORT_DEVICE_TYPE_EXALARMBOX, // 扩展报警盒子 }EM_COM_PORT_DEVICE_TYPE; ///@brief 获取设备COM端口连接的设备通道信息(入参) typedef struct tagNET_IN_GET_COM_PORT_DEVICE_CHANNEL_INFO { DWORD dwSize; EM_COM_PORT_DEVICE_TYPE emDeviceType; // 设备类型 }NET_IN_GET_COM_PORT_DEVICE_CHANNEL_INFO; ///@brief 获取设备COM端口连接的设备通道信息(出参) typedef struct tagNET_OUT_GET_COM_PORT_DEVICE_CHANNEL_INFO { DWORD dwSize; int nDeviceCount; // 设备数目(出参,包括不在线和在线的) int nMaxOnlineDeviceCount; // 在线的设备的最大个数(入参) int nRetOnlineDeviceCount; // 设备返回的当前在线的设备数量(出参) int* pOnlineChannel; // 当前在线的设备的通道索引数组(入参,由用户申请释放内存) }NET_OUT_GET_COM_PORT_DEVICE_CHANNEL_INFO; ///@brief 获取设备COM端口连接的设备通道信息,pInParam与pInParamOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetComPortDeviceChannelInfo(LLONG lLoginID,const NET_IN_GET_COM_PORT_DEVICE_CHANNEL_INFO* pInParam,NET_OUT_GET_COM_PORT_DEVICE_CHANNEL_INFO* pOutParam,int nWaitTime); ////////////////////////////// 大屏控制 //////////////////////////////////////// ///@brief CLIENT_OpenSplitWindow接口输入参数(开窗) typedef struct tagDH_IN_SPLIT_OPEN_WINDOW { DWORD dwSize; int nChannel; // 通道号(屏号) DH_RECT stuRect; // 窗口位置, 0~8191 BOOL bDirectable; // 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域 } DH_IN_SPLIT_OPEN_WINDOW; ///@brief CLIENT_OpenSplitWindow接口输出参数(开窗) typedef struct tagDH_OUT_SPLIT_OPEN_WINDOW { DWORD dwSize; unsigned int nWindowID; // 窗口序号 unsigned int nZOrder; // 窗口次序 } DH_OUT_SPLIT_OPEN_WINDOW; ///@brief CLIENT_CloseSplitWindow接口输入参数(关窗) typedef struct tagDH_IN_SPLIT_CLOSE_WINDOW { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 UINT nWindowID; // 窗口序号 const char* pszCompositeID; // 融合屏ID } DH_IN_SPLIT_CLOSE_WINDOW; ///@brief CLIENT_CloseSplitWindow接口输出参数(关窗) typedef struct tagDH_OUT_SPLIT_CLOSE_WINDOW { DWORD dwSize; } DH_OUT_SPLIT_CLOSE_WINDOW; ///@brief CLIENT_SetSplitWindowRect输入参数(设置窗口位置) typedef struct tagDH_IN_SPLIT_SET_RECT { DWORD dwSize; int nChannel; // 通道号(屏号) UINT nWindowID; // 窗口序号 DH_RECT stuRect; // 窗口位置, 0~8191 BOOL bDirectable; // 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域 } DH_IN_SPLIT_SET_RECT; ///@brief CLIENT_SetSplitWindowRect接口输出参数(设置窗口位置) typedef struct tagDH_OUT_SPLIT_SET_RECT { DWORD dwSize; } DH_OUT_SPLIT_SET_RECT; ///@brief CLIENT_GetSplitWindowRect接口输入参数(获取窗口位置) typedef struct tagDH_IN_SPLIT_GET_RECT { DWORD dwSize; int nChannel; // 通道号(屏号) UINT nWindowID; // 窗口序号 } DH_IN_SPLIT_GET_RECT; ///@brief CLIENT_GetSplitWindowRect接口输出参数(获取窗口位置) typedef struct tagDH_OUT_SPLIT_GET_RECT { DWORD dwSize; DH_RECT stuRect; // 窗口位置, 0~8191 } DH_OUT_SPLIT_GET_RECT; ///@brief CLIENT_SetSplitWindowLevels接口输入参数(设置窗口次序) typedef struct tagDH_IN_SPLIT_SET_TOP_WINDOW { DWORD dwSize; int nChannel; // 通道号(屏号) int nWindowID; // 窗口序号 } DH_IN_SPLIT_SET_TOP_WINDOW; ///@brief CLIENT_SetSplitWindowLevels接口输出参数(设置窗口次序) typedef struct tagDH_OUT_SPLIT_SET_TOP_WINDOW { DWORD dwSize; DH_WND_ZORDER* pZOders; // 窗口次序数组,由用户申请内存,大小为sizeof(DH_WND_ZORDER)*nMaxWndCount int nMaxWndCount; // 窗口次序数组大小 int nWndCount; // 返回的窗口数量 } DH_OUT_SPLIT_SET_TOP_WINDOW; ///@brief CLIENT_SetDisplayMode接口输入参数(电视墙显示模式设置) typedef struct tagDH_IN_WM_SET_DISPLAY_MODE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszBlockID; // 区块ID, NULL/""-所有区块 int nTVID; // 显示单元序号, -1表示区块中所有显示单元 UINT nDisplayMode; // 显示模式, 0-标准, 1-高亮, 2-节能 } DH_IN_WM_SET_DISPLAY_MODE; ///@brief CLIENT_SetDisplayMode接口输出参数(电视墙显示模式设置) typedef struct tagDH_OUT_WM_SET_DISPLAY_MODE { DWORD dwSize; } DH_OUT_WM_SET_DISPLAY_MODE; ///@brief 区块中所有显示单元的显示模式 typedef struct tagDH_BLOCK_DISPLAY_MODE { DWORD dwSize; int* pTVModes; // TV显示模式数组 int nMaxTVCount; // TV显示模式数组大小 int nRetTVCount; // 实际TV数量 } DH_BLOCK_DISPLAY_MODE; ///@brief CLIENT_GetDisplayMode接口的输入参数(获取电视墙显示模式) typedef struct tagDH_IN_WM_GET_DISPLAY_MODE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszBlockID; // 区块ID, NULL/""-所有区块 int nTVID; // 显示单元序号, -1表示区块中所有显示单元 } DH_IN_WM_GET_DISPLAY_MODE; ///@brief CLIENT_GetDisplayMode接口的输出参数(获取电视墙显示模式) typedef struct tagDH_OUT_WM_GET_DISPLAY_MODE { DWORD dwSize; DH_BLOCK_DISPLAY_MODE* pBlockModes; // 区块显示模式数组,由用户申请内存,大小为sizeof(DH_BLOCK_DISPLAY_MODE)*nMaxBlockCount int nMaxBlockCount; // 区块显示模式数组大小 int nRetBlockCount; // 实际区块数量 } DH_OUT_WM_GET_DISPLAY_MODE; ///@brief CLIENT_PowerControl接口输入参数(电视墙电源控制) typedef struct tagDH_IN_WM_POWER_CTRL { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszBlockID; // 区块ID, NULL/""-所有区块 int nTVID; // 显示单元序号, -1表示区块中所有显示单元 BOOL bPowerOn; // 是否打开电源 } DH_IN_WM_POWER_CTRL; ///@brief CLIENT_PowerControl接口输出参数(电视墙电源控制) typedef struct tagDH_OUT_WM_POWER_CTRL { DWORD dwSize; } DH_OUT_WM_POWER_CTRL; ///@brief CLIENT_LoadMonitorWallCollection接口输入参数(载入电视墙预案) typedef struct tagDH_IN_WM_LOAD_COLLECTION { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszName; // 预案名称 } DH_IN_WM_LOAD_COLLECTION; ///@brief CLIENT_LoadMonitorWallCollection接口输出参数(载入电视墙预案) typedef struct tagDH_OUT_WM_LOAD_COLLECTION { DWORD dwSize; } DH_OUT_WM_LOAD_COLLECTION; ///@brief 预案类型 typedef enum tagEM_SAVE_COLLECTION_TYPE { EM_SAVE_COLLECTION_UNKNOWN, // 未知 EM_SAVE_COLLECTION_VIDEO, // 视频预案 EM_SAVE_COLLECTION_ADDITIONAL, // 附加预案 }EM_SAVE_COLLECTION_TYPE; ///@brief CLIENT_SaveMonitorWallCollection接口输入参数(保存电视墙预案) typedef struct tagDH_IN_WM_SAVE_COLLECTION { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszName; // 预案名称 const char* pszControlID; // 控制id BYTE bReserverd[4]; // 保留字节,用于字节对齐 EM_SAVE_COLLECTION_TYPE emType; // 预案类型 } DH_IN_WM_SAVE_COLLECTION; ///@brief CLIENT_SaveMonitorWallCollection接口输出参数(保存电视墙预案) typedef struct tagDH_OUT_WM_SAVE_COLLECTION { DWORD dwSize; } DH_OUT_WM_SAVE_COLLECTION; ///@brief CLIENT_RenameMonitorWallCollection接口输入参数(预案重命名) typedef struct tagDH_IN_WM_RENAME_COLLECTION { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszOldName; // 原名称 const char* pszNewName; // 新名称 } DH_IN_WM_RENAME_COLLECTION; ///@brief CLIENT_RenameMonitorWallCollection接口输出参数(预案重命名) typedef struct tagDH_OUT_WM_RENAME_COLLECTION { DWORD dwSize; } DH_OUT_WM_RENAME_COLLECTION; ///@brief 设备详细信息 typedef struct tagNET_MONITOR_WALL_DEVICE_INFO { char szName[64]; // 机器名称 char szPassword[64]; // 密码 char szUserName[64]; // 用户名 UINT nPort; // 端口 char byReserverd[256]; // 保留字节 }NET_MONITOR_WALL_DEVICE_INFO; ///@brief 区块窗口信息 typedef struct tagDH_WINDOW_COLLECTION { DWORD dwSize; int nWindowID; // 窗口ID BOOL bWndEnable; // 窗口是否有效 DH_RECT stuRect; // 窗口区域, 自由分割模式下有效 BOOL bDirectable; // 坐标是否满足直通条件 int nZOrder; // 窗口Z次序 BOOL bSrcEnable; // 显示源是否有效 char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID int nVideoChannel; // 视频通道号 int nVideoStream; // 视频码流类型 int nAudioChannel; // 音频通道 int nAudioStream; // 音频码流类型 int nUniqueChannel; // 设备内统一编号的唯一通道号 NET_MONITOR_WALL_DEVICE_INFO stuDeviceInfo; // 设备详细信息 int nInterval; // 轮巡时间间隔,单位秒 (窗口轮巡有效,否则忽略) } DH_WINDOW_COLLECTION; ///@brief 拼接区底图信息 typedef struct tagNET_SCREEEN_BACKGROUD { BOOL bEnable; // 底图是否开启 char szName[130]; // 底图名称,底图是已经上传的文件,不带路径名称 BYTE byReserved[130]; // 保留字节用 } NET_SCREEEN_BACKGROUD; ///@brief 区块收藏 typedef struct tagDH_BLOCK_COLLECTION { DWORD dwSize; DH_SPLIT_MODE emSplitMode; // 分割模式 DH_WINDOW_COLLECTION stuWnds[DH_MAX_SPLIT_WINDOW]; // 窗口信息数组 int nWndsCount; // 窗口数量 char szName[DH_DEVICE_NAME_LEN]; // 收藏夹名称 int nScreen; // 输出通道号, 包括拼接屏 char szCompositeID[DH_DEV_ID_LEN_EX]; // 拼接屏ID DH_WINDOW_COLLECTION* pstuWndsEx; // 窗口信息数组指针, 由用户分配内存. 当stuWnds数组大小不够用时可以使用 int nMaxWndsCountEx; // 最大窗口数量, 用户填写. pstuWndsEx数组的元素个数 int nRetWndsCountEx; // 返回窗口数量 int nSplitOsdCount; // OSD的个数 NET_SPLIT_OSD stuSplitOsd[20]; // 拼接区OSD叠加信息, NET_SCREEEN_BACKGROUD stuScreenBackground; // 拼接区底图信息,目前仅预案获取时使用 } DH_BLOCK_COLLECTION; ///@brief 电视墙输出模式信息 typedef struct tagNET_MONITOR_WALL_OUT_MODE_INFO { int nWidth; // 水平分辨率 int nHeight; // 垂直分辨率 BYTE byReserved[256]; // 保留字节 }NET_MONITOR_WALL_OUT_MODE_INFO; ///@brief 电视墙显示单元 typedef struct tagDH_MONITORWALL_OUTPUT { DWORD dwSize; char szDeviceID[DH_DEV_ID_LEN]; // 设备ID, 本机时为"" int nChannel; // 通道号 char szName[DH_DEV_NAME_LEN]; // 屏幕名称 BOOL bIsVirtual; // 是否是虚拟屏(虚拟屏表示在本设备上不存在的屏)TRUE:虚拟屏 FALSE:非虚拟屏 char szAddress[40]; // 归属设备地址IP NET_MONITOR_WALL_OUT_MODE_INFO stuOutMode; // 输出模式信息 } DH_MONITORWALL_OUTPUT; ///@brief 电视墙显示区块 typedef struct tagDH_MONITORWALL_BLOCK { DWORD dwSize; char szName[DH_DEV_NAME_LEN]; // 区块名称 char szCompositeID[DH_DEV_ID_LEN]; // 拼接屏ID char szControlID[DH_DEV_ID_LEN]; // 控制ID int nSingleOutputWidth; // 单个显示单元所占的网格列数 int nSingleOutputHeight; // 单个显示单元所占的网格行数 DH_RECT stuRect; // 区域坐标 DH_TSECT stuPowerSchedule[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 开机时间表, 第一维各元素表示周日~周六和节假日 DH_MONITORWALL_OUTPUT* pstuOutputs; // 显示单元数组, 用户分配内存 int nMaxOutputCount; // 显示单元数组大小, 用户填写 int nRetOutputCount; // 返回的显示单元数量 char szBlockType[DH_COMMON_STRING_32]; // 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型的区块填写为"LCD",如不存在该字段,默认采用LCD int nOutputDelay; // 输出延迟,单位:毫秒 } DH_MONITORWALL_BLOCK; ///@brief 电视墙配置 typedef struct tagDH_MONITORWALL { DWORD dwSize; char szName[DH_DEV_NAME_LEN]; // 名称 int nGridLine; // 网格行数 int nGridColume; // 网格列数 DH_MONITORWALL_BLOCK* pstuBlocks; // 显示区块数组, 用户分配内存 int nMaxBlockCount; // 显示区块数组大小, 用户填写 int nRetBlockCount; // 返回的显示区块数量 BOOL bDisable; // 是否禁用, 0-该电视墙有效, 1-该电视墙无效 char szDesc[DH_COMMON_STRING_256]; // 电视墙描述信息 } DH_MONITORWALL; ///@brief 电视墙预案 typedef struct tagDH_MONITORWALL_COLLECTION { DWORD dwSize; char szName[DH_DEVICE_NAME_LEN]; // 电视墙预案名称 DH_BLOCK_COLLECTION stuBlocks[DH_MAX_BLOCK_NUM]; // 区块数组 int nBlocksCount; // 区块数量 char szControlID[DH_DEV_ID_LEN_EX]; // 控制ID DH_MONITORWALL stuMonitorWall; // 电视墙配置 EM_SAVE_COLLECTION_TYPE emType; // 预案类型 BYTE byReserved[4]; // 保留字节用,于字节对齐 } DH_MONITORWALL_COLLECTION; ///@brief CLIENT_GetMonitorWallCollections接口输入参数(获取电视墙预案信息) typedef struct tagDH_IN_WM_GET_COLLECTIONS { DWORD dwSize; int nMonitorWallID; // 电视墙ID } DH_IN_WM_GET_COLLECTIONS; ///@brief CLIENT_GetMonitorWallCollections接口输出参数(获取电视墙预案信息) typedef struct tagDH_OUT_WM_GET_COLLECTIONS { DWORD dwSize; DH_MONITORWALL_COLLECTION* pCollections; // 电视墙预案数组 int nMaxCollectionsCount; // 电视墙预案数组大小 int nCollectionsCount; // 电视墙预案数量 } DH_OUT_WM_GET_COLLECTIONS; ///@brief CLIENT_GetSplitWindowsInfo接口输入参数 typedef struct tagDH_IN_SPLIT_GET_WINDOWS { DWORD dwSize; int nChannel; // 通道号 } DH_IN_SPLIT_GET_WINDOWS; ///@brief CLIENT_GetSplitWindowsInfo接口输出参数 typedef struct tagDH_OUT_SPLIT_GET_WINDOWS { DWORD dwSize; DH_BLOCK_COLLECTION stuWindows; // 窗口信息 } DH_OUT_SPLIT_GET_WINDOWS; ///@brief CLIENT_LoadSplitCollection接口输入参数(载入收藏) typedef struct tagDH_IN_SPLIT_LOAD_COLLECTION { DWORD dwSize; int nChannel; // 输出通道号 const char* pszName; // 收藏夹名称 } DH_IN_SPLIT_LOAD_COLLECTION; ///@brief CLIENT_LoadSplitCollection接口输出参数(载入收藏) typedef struct tagDH_OUT_SPLIT_LOAD_COLLECTION { DWORD dwSize; } DH_OUT_SPLIT_LOAD_COLLECTION; ///@brief CLIENT_SaveSplitCollection接口输入参数(保存收藏) typedef struct tagDH_IN_SPLIT_SAVE_COLLECTION { DWORD dwSize; int nChannel; // 输出通道号 const char* pszName; // 收藏夹名称 } DH_IN_SPLIT_SAVE_COLLECTION; ///@brief CLIENT_SaveSplitCollection接口输出参数(保存收藏) typedef struct tagDH_OUT_SPLIT_SAVE_COLLECTION { DWORD dwSize; } DH_OUT_SPLIT_SAVE_COLLECTION; ///@brief CLIENT_RenameSplitCollection接口输入参数(收藏重命名) typedef struct tagDH_IN_SPLIT_RENAME_COLLECTION { DWORD dwSize; int nChannel; // 输出通道号 const char* pszOldName; // 原名称 const char* pszNewName; // 新名称 } DH_IN_SPLIT_RENAME_COLLECTION; ///@brief CLIENT_RenameSplitCollection接口输出参数(收藏重命名) typedef struct tagDH_OUT_SPLIT_RENAME_COLLECTION { DWORD dwSize; } DH_OUT_SPLIT_RENAME_COLLECTION; ///@brief CLIENT_GetSplitCollections接口输入参数(获取收藏夹信息) typedef struct tagDH_IN_SPLIT_GET_COLLECTIONS { DWORD dwSize; int nChannel; // 输出通道号 } DH_IN_SPLIT_GET_COLLECTIONS; ///@brief CLIENT_GetSplitCollections接口输出参数(获取收藏夹信息) typedef struct tagDH_OUT_SPLIT_GET_COLLECTIONS { DWORD dwSize; DH_BLOCK_COLLECTION* pCollections; // 收藏夹数组,由用户申请内存,大小为sizeof(DH_BLOCK_COLLECTION)*nMaxCollectionsCount int nMaxCollectionsCount; // 收藏夹数组大小 int nCollectionsCount; // 返回的收藏夹数量 } DH_OUT_SPLIT_GET_COLLECTIONS; ///@brief CLIENT_DeleteSplitCollection接口的输入参数(删除收藏夹) typedef struct tagDH_IN_SPLIT_DELETE_COLLECTION { DWORD dwSize; int nChannel; // 输出通道号 const char** ppszNames; // 收藏夹名称数组 int nNameCount; // 收藏夹名称数组大小 } DH_IN_SPLIT_DELETE_COLLECTION; ///@brief CLIENT_DeleteSplitCollection接口的输出参数(删除收藏夹) typedef struct tagDH_OUT_SPLIT_DELETE_COLLECTION { DWORD dwSize; } DH_OUT_SPLIT_DELETE_COLLECTION; ///@brief 融合屏通道信息 typedef struct tagDH_COMPOSITE_CHANNEL { DWORD dwSize; char szMonitorWallName[DH_DEVICE_NAME_LEN]; // 电视墙名称 char szCompositeID[DH_DEV_ID_LEN_EX]; // 融合屏ID int nVirtualChannel; // 虚拟通道号 } DH_COMPOSITE_CHANNEL; ///@brief 轮巡使能配置 typedef struct tagDHDEV_TOUR_ENABLE { DWORD dwSize; BOOL bEnable; // 轮巡使能 BOOL bStart; // 是否正在轮巡(只读). 轮巡使能打开但没有配置轮巡输入源时, bStart=FALSE } DHDEV_TOUR_ENABLE_CFG; ///@brief CLIENT_SetDecodePolicy接口输入参数(设置解码策略) typedef struct tagDH_IN_SET_DEC_POLICY { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号, -1表示通道内所有窗口 int nPolicyLevel; // 解码策略等级, 共5档(-2, -1, 0, 1, 2), 值越大越流畅但延迟越大 // -2表示实时性最好, 2表示流畅性最好, 0默认 } DH_IN_SET_DEC_POLICY; ///@brief CLIENT_SetDecodePolicy接口输出参数(设置解码策略) typedef struct tagDH_OUT_SET_DEC_POLICY { DWORD dwSize; } DH_OUT_SET_DEC_POLICY; ///@brief CLIENT_GetDecodePolicy接口输入参数(获取解码策略) typedef struct tagDH_IN_GET_DEC_POLICY { DWORD dwSize; int nChannel; // 通道号 int nWindow; // 窗口号, -1表示通道内所有窗口 } DH_IN_GET_DEC_POLICY; ///@brief CLIENT_GetDecodePolicy接口输出参数(获取解码策略) typedef struct tagDH_OUT_GET_DEC_POLICY { DWORD dwSize; int nPolicyLevel; // 解码策略等级, 共5档(-2, -1, 0, 1, 2), 值越大越流畅但延迟越大 // -2表示实时性最好, 2表示流畅性最好, 0默认 } DH_OUT_GET_DEC_POLICY; ///@brief 音频输出模式 typedef enum { DH_AUDIO_AUTO, // 自动切换音频输出, 只有一个音频窗口 DH_AUDIO_DISABLE, // 禁止所有音频输出 DH_AUDIO_FORCE, // 强制输出用户指定的某个窗口的音频, 只有一个音频窗口 DH_AUDIO_ENABLE_ONE, // 开启指定窗口音频, 可以有多路音频输出 DH_AUDIO_DISABLE_ONE, // 关闭指定窗口音频, 可以有多路音频输出 DH_AUDIO_MULTI, // 多路音频输出, 查询时可用, 设置时该值无效 } DH_AUDIO_OUTPUT_MODE; ///@brief CLIENT_SetSplitAudioOuput接口输入参数(设置音频输出模式) typedef struct tagDH_IN_SET_AUDIO_OUTPUT { DWORD dwSize; int nChannel; // 通道号 DH_AUDIO_OUTPUT_MODE emMode; // 音频输出模式 int nWindow; // 输出窗口号, emMode为DH_AUDIO_FORCE/DH_AUDIO_ENABLE_ONE/DH_AUDIO_DISABLE_ONE时有效, 指定输出音频的窗口号 } DH_IN_SET_AUDIO_OUTPUT; ///@brief CLIENT_SetSplitAudioOuput接口输出参数(设置音频输出模式) typedef struct tagDH_OUT_SET_AUDIO_OUTPUT { DWORD dwSize; } DH_OUT_SET_AUDIO_OUTPUT; ///@brief CLIENT_GetSplitAudioOuput接口输入参数(获取音频输出模式) typedef struct tagDH_IN_GET_AUDIO_OUTPUT { DWORD dwSize; int nChannel; // 通道号 } DH_IN_GET_AUDIO_OUTPUT; ///@brief CLIENT_GetSplitAudioOuput接口输出参数(获取音频输出模式) typedef struct tagDH_OUT_GET_AUDIO_OUTPUT { DWORD dwSize; DH_AUDIO_OUTPUT_MODE emMode; // 音频输出模式 int nWindow; // 输出窗口号, emMode为DH_AUDIO_FORCE时有效 int* pMultiWindows; // 输出窗口号列表, emMode为DH_AUDIO_MULTI时有效, 用户分配内存,大小为sizeof(int)*nMaxMultiWindowCount int nMaxMultiWindowCount; // 输出窗口号列表最大数量, 用户填写 int nRetMultiWindowCount; // 输出窗口号数量, emMode为DH_AUDIO_MULTI时有效 } DH_OUT_GET_AUDIO_OUTPUT; ///@brief CLIENT_GetEncodePlan 接口输入参数(获取刻录光盘时使用的编码参数) typedef struct tagDH_IN_GET_ENCODE_PLAN { DWORD dwSize; unsigned int nChannel; // 指定要获取的编码通道号 unsigned int nExpectTime; // 业务预期时长 整型,单位:分钟 unsigned int nCapacity; // 可用的设备容量,整型,单位:M }DH_IN_GET_ENCODE_PLAN; ///@brief CLIENT_GetEncodePlan 接口输出参数(获取刻录光盘时使用的编码参数) typedef struct tagDH_OUT_GET_ENCODE_PLAN { DWORD dwSize; int nResolutionType; // emResolutionTypes成员个数 CAPTURE_SIZE emResolutionTypes[DH_MAX_CAPTURE_SIZE_NUM];// 视频分辨率范围 CAPTURE_SIZE emResolution; // 推荐视频分辨率 unsigned int nBitRate; // 视频固定码流值 }DH_OUT_GET_ENCODE_PLAN; ///@brief CLIENT_GetEncodePlanByResolution 接口输入参数(根据指定的光盘容量和分辨率码率计算业务时长) typedef struct tagNET_IN_GET_ENCODEPLANE_BY_RESOLUTION { DWORD dwSize; unsigned int nChannel; // 指定要获取的编码通道号 CAPTURE_SIZE emResolution; // 视频分辨率 unsigned int nBitRate; // 视频码流值 unsigned int nCapacity; // 可用的设备容量 } NET_IN_GET_ENCODEPLANE_BY_RESOLUTION; ///@brief CLIENT_GetEncodePlanByResolution 接口输出参数(根据指定的光盘容量和分辨率码率计算业务时长) typedef struct tagNET_OUT_GET_ENCODEPLANE_BY_RESOLUTION { DWORD dwSize; unsigned int nExpectTime; // 业务预期时长 } NET_OUT_GET_ENCODEPLANE_BY_RESOLUTION; ///@brief 组织目录逻辑对象 typedef struct tagDH_ORGANIZATION_NODE_LOGIC_OBJECT { DWORD dwSize; char szName[DH_NODE_NAME_LEN]; // 名称 char szType[DH_DEV_TYPE_LEN]; // 类型 char szDevID[DH_DEV_ID_LEN_EX]; // 设备ID char szControlID[DH_DEV_ID_LEN_EX]; // 控制ID, 只读 int nChannel; // 通道号 } DH_ORGANIZATION_NODE_LOGIC_OBJECT; ///@brief 组织目录 typedef struct tagDH_ORGANIZATION_NODE_DIRECTORY { DWORD dwSize; char szName[DH_NODE_NAME_LEN]; // 名称 char szControlID[DH_DEV_ID_LEN_EX]; // 控制ID } DH_ORGANIZATION_NODE_DIRECTORY; ///@brief 组织目录节点信息 typedef struct tagDH_ORGANIZATION_NODE { DWORD dwSize; int nNodeType; // 节点类型, 0-逻辑对象, 1-目录 DH_ORGANIZATION_NODE_LOGIC_OBJECT stuLogicObject; // 逻辑对象, nNodeType==0时有效 DH_ORGANIZATION_NODE_DIRECTORY stuDirectory; // 目录, nNodeType==1时有效 } DH_ORGANIZATION_NODE; ///@brief 增加节点参数 typedef struct tagDH_ORGANIZATION_ADD_NODE_PARAM { DWORD dwSize; int nPosition; // 插入位置, -1-开始, -2-末尾, 0~n DH_ORGANIZATION_NODE stuNode; // 节点信息 } DH_ORGANIZATION_ADD_NODE_PARAM; ///@brief CLIENT_OrganizationAddNodes接口的输入参数(增加节点) typedef struct tagDH_IN_ORGANIZATION_ADD_NODES { DWORD dwSize; char* pszPath; // 路径 DH_ORGANIZATION_ADD_NODE_PARAM* pstuNodes; // 节点信息数组指针,由用户申请内存,大小为sizeof(DH_ORGANIZATION_ADD_NODE_PARAM)*nNodeCount int nNodeCount; // 节点数量 } DH_IN_ORGANIZATION_ADD_NODES; ///@brief 增加节点的结果 typedef struct tagDH_ORGANIZATION_ADD_NODE_RESULT { DWORD dwSize; BOOL bResult; // 结果 char szPath[MAX_PATH]; // 路径, 成功返回node路径,失败返回添加node时的路径 } DH_ORGANIZATION_ADD_NODE_RESULT; ///@brief CLIENT_OrganizationAddNodes接口的输出参数(增加节点) typedef struct tagDH_OUT_ORGANIZATION_ADD_NODES { DWORD dwSize; DH_ORGANIZATION_ADD_NODE_RESULT* pstuResults; // 结果数组指针 int nMaxResultCount; // 结果数组大小 int nRetResultCount; // 返回的结果数量 } DH_OUT_ORGANIZATION_ADD_NODES; ///@brief 节点路径 typedef struct tagDH_ORGANIZATION_NODE_PATH { DWORD dwSize; char szPath[MAX_PATH]; // 路径 } DH_ORGANIZATION_NODE_PATH; ///@brief CLIENT_OrganizationDeleteNodes接口的输入参数(删除节点) typedef struct tagDH_IN_ORGANIZATION_DELETE_NODES { DWORD dwSize; DH_ORGANIZATION_NODE_PATH* pstuPath; // 节点路径数组,由用户申请内存,大小为sizeof(DH_ORGANIZATION_NODE_PATH)*nPathCount int nPathCount; // 节点数量 } DH_IN_ORGANIZATION_DELETE_NODES; ///@brief CLIENT_OrganizationDeleteNodes接口的输出参数(删除节点) typedef struct tagDH_OUT_ORGANIZATION_DELETE_NODES { DWORD dwSize; } DH_OUT_ORGANIZATION_DELETE_NODES; ///@brief CLIENT_OrganizationGetNodes接口的输入参数(获取节点信息) typedef struct tagDH_IN_ORGANIZATION_GET_NODES { DWORD dwSize; char* pszPath; // 路径 int nLevel; // 级别, 0-本级, 1-下一级 } DH_IN_ORGANIZATION_GET_NODES; ///@brief CLIENT_OrganizationGetNodes接口的输出参数(获取节点信息) typedef struct tagDH_OUT_ORGANIZATION_GET_NODES { DWORD dwSize; DH_ORGANIZATION_NODE* pstuNodes; // 节点数组, 用户分配内存,大小为sizeof(DH_ORGANIZATION_NODE)*nMaxNodeCount int nMaxNodeCount; // 节点数组大小 int nRetNodeCount; // 返回的节点数量 } DH_OUT_ORGANIZATION_GET_NODES; ///@brief CLIENT_OrganizationSetNode接口的输入参数(设置节点) typedef struct tagDH_IN_ORGANIZATION_SET_NODE { DWORD dwSize; char* pszPath; // 路径 DH_ORGANIZATION_NODE stuNode; // 节点信息 } DH_IN_ORGANIZATION_SET_NODE; ///@brief CLIENT_OrganizationSetNode接口的输出参数(设置节点) typedef struct tagDH_OUT_ORGANIZATION_SET_NODE { DWORD dwSize; } DH_OUT_ORGANIZATION_SET_NODE; ///@brief 指码流传输的服务类型 typedef enum tagEM_STREAM_TRANSMISSION_SERVICE_TYPE { EM_STREAM_TRANSMISSION_SERVICE_TYPE_UNKNOWN, // 未知 EM_STREAM_TRANSMISSION_SERVICE_TYPE_TCP, // TCP EM_STREAM_TRANSMISSION_SERVICE_TYPE_UDP, // UDP EM_STREAM_TRANSMISSION_SERVICE_TYPE_MCAST, // MCAST EM_STREAM_TRANSMISSION_SERVICE_TYPE_AUTO, // AUTO } EM_STREAM_TRANSMISSION_SERVICE_TYPE; ///@brief 视频输入通道信息 typedef struct tagDH_VIDEO_INPUTS { DWORD dwSize; char szChnName[DH_DEVICE_NAME_LEN]; // 通道名称 BOOL bEnable; // 使能 char szControlID[DH_DEV_ID_LEN_EX]; // 控制ID char szMainStreamUrl[MAX_PATH]; // 主码流url地址 char szExtraStreamUrl[MAX_PATH]; // 辅码流url地址 int nOptionalMainUrlCount; // 备用主码流地址数量 char szOptionalMainUrls[DH_MAX_OPTIONAL_URL_NUM][MAX_PATH]; // 备用主码流地址列表 int nOptionalExtraUrlCount; // 备用辅码流地址数量 char szOptionalExtraUrls[DH_MAX_OPTIONAL_URL_NUM][MAX_PATH]; // 备用辅码流地址列表 char szCaption[32]; // 通道备注 EM_STREAM_TRANSMISSION_SERVICE_TYPE emServiceType; // 指码流传输的服务类型 NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt; // 码流加密方式 } DH_VIDEO_INPUTS; ///@brief 远程设备信息扩展 typedef struct tagNET_REMOTE_DEVICE_EX { char szPwdEx2[128]; // 密码 BOOL bUsePwdEx2; // 是否使用szPwdEx2密码 char szIpEx[64]; // IP BOOL bUseIpEx; // 是否使用szIpEx IP char szReserved[952]; // 保留字节 }NET_REMOTE_DEVICE_EX; ///@brief 远程设备信息 typedef struct tagDH_REMOTE_DEVICE { DWORD dwSize; BOOL bEnable; // 使能 char szIp[DH_MAX_IPADDR_LEN]; // IP char szUser[DH_USER_NAME_LENGTH]; // 用户名,建议使用szUserEx char szPwd[DH_USER_PSW_LENGTH]; // 密码,建议使用szPwdEx int nPort; // 端口 int nDefinition; // 清晰度, 0-标清, 1-高清 DH_DEVICE_PROTOCOL emProtocol; // 协议类型 char szDevName[DH_DEVICE_NAME_LEN]; // 设备名称 int nVideoInputChannels; // 视频输入通道数 int nAudioInputChannels; // 音频输入通道数 char szDevClass[DH_DEV_TYPE_LEN]; // 设备类型, 如IPC, DVR, NVR等 char szDevType[DH_DEV_TYPE_LEN]; // 设备具体型号, 如IPC-HF3300 int nHttpPort; // Http端口 int nMaxVideoInputCount; // 视频输入通道最大数 int nRetVideoInputCount; // 返回实际通道个数 DH_VIDEO_INPUTS* pstuVideoInputs; // 视频输入通道信息,由用户申请内存,大小为sizeof(DH_VIDEO_INPUTS)*nMaxVideoInputCount char szMachineAddress[DH_MAX_CARD_INFO_LEN]; // 设备部署地 char szSerialNo[DH_SERIALNO_LEN]; // 设备序列号 int nRtspPort; // Rtsp端口 /*以下用于新平台扩展*/ char szUserEx[DH_USER_NAME_LEN_EX]; // 用户名 char szPwdEx[DH_USER_PSW_LEN_EX]; // 密码,szPwdEx只支持31位密码长度,当密码需要大于等于32位时,使用pstuRemoteDevEx里的szPwdEx2 char szVendorAbbr[DH_COMMON_STRING_32]; // 厂商缩写 char szSoftwareVersion[DH_COMMON_STRING_64]; // 设备软件版本 NET_TIME stuActivationTime; // 启动时间 char szMac[20]; // MAC地址 int nHttpsPort; // HttpsPort BYTE byReserved[4]; // 保留字段 NET_REMOTE_DEVICE_EX* pstuRemoteDevEx; // 用于DH_REMOTE_DEVICE新增字段扩展,由用户申请内存,大小为sizeof(NET_REMOTE_DEVICE_EX) } DH_REMOTE_DEVICE; ///@brief 通道类型 typedef enum tagNET_LOGIC_CHANNEL_TYPE { LOGIC_CHN_UNKNOWN, // 未知 LOGIC_CHN_LOCAL, // 本地通道 LOGIC_CHN_REMOTE, // 远程通道 LOGIC_CHN_COMPOSE, // 合成通道, 对于庭审设备包含画中画通道和混音通道 LOGIC_CHN_MATRIX, // 模拟矩阵通道 LOGIC_CHN_CASCADE, // 级联通道 } NET_LOGIC_CHN_TYPE; ///@brief 视频码流 typedef enum tagEM_VIDEO_STREAM { EM_VIDEO_STREAM_UNKNOWN, // 未知 EM_VIDEO_STREAM_MAIN, // 主码流 EM_VIDEO_STREAM_EXTRA1, // 辅码流1 EM_VIDEO_STREAM_EXTRA2, // 辅码流2 EM_VIDEO_STREAM_EXTRA3, // 辅码流3 EM_VIDEO_STREAM_AUTO, // 自动选择合适码流 EM_VIDEO_STREAM_PREVIEW, // 预览裸数据码流 EM_VIDEO_STREAM_NO_VIDEO_JUST_AUDIO, // 无视频码流(纯音频流) } EM_VIDEO_STREAM; ///@brief 可用的显示源信息 typedef struct tagDH_MATRIX_CAMERA_INFO { DWORD dwSize; char szName[DH_DEV_ID_LEN_EX]; // 名称 char szDevID[DH_DEV_ID_LEN_EX]; // 设备ID char szControlID[DH_DEV_ID_LEN_EX]; // 控制ID int nChannelID; // 通道号, DeviceID设备内唯一 int nUniqueChannel; // 设备内统一编号的唯一通道号 BOOL bRemoteDevice; // 是否远程设备 DH_REMOTE_DEVICE stuRemoteDevice; // 远程设备信息 NET_STREAM_TYPE emStreamType; // 视频码流类型 NET_LOGIC_CHN_TYPE emChannelType; // 通道类型 BOOL bEnable; // 仅在使用DeviceID添加/删除设备时的使能,通过DeviceInfo操作不要使用 EM_VIDEO_STREAM emVideoStream; // 视频码流 } DH_MATRIX_CAMERA_INFO; ///@brief CLIENT_MatrixGetCameras接口的输入参数 typedef struct tagDH_IN_MATRIX_GET_CAMERAS { DWORD dwSize; } DH_IN_MATRIX_GET_CAMERAS; ///@brief CLIENT_MatrixGetCameras接口的输出参数 typedef struct tagDH_OUT_MATRIX_GET_CAMERAS { DWORD dwSize; DH_MATRIX_CAMERA_INFO* pstuCameras; // 显示源信息数组, 用户分配内存,大小为sizeof(DH_MATRIX_CAMERA_INFO)*nMaxCameraCount int nMaxCameraCount; // 显示源数组大小 int nRetCameraCount; // 返回的显示源数量 } DH_OUT_MATRIX_GET_CAMERAS; ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_REMOTE_DEVICE_INFO 查询远程设备信息输入参数 typedef struct tagNET_IN_GET_DEVICE_INFO { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_IN_GET_DEVICE_INFO) char szDevice[DH_DEV_ID_LEN_EX]; // 设备ID /* 设备属性,当 szDevice 字段为空时,以下字段生效 */ char szAttributeIP[DH_COMMON_STRING_32]; // 设备地址 int nAttributePort; // 设备端口 char szAttributeUsername[DH_COMMON_STRING_128]; // 用户名 char szAttributePassword[DH_COMMON_STRING_128]; // 密码 char szAttributeManufacturer[DH_COMMON_STRING_128]; // 厂商协议 }NET_IN_GET_DEVICE_INFO; ///@brief CLIENT_QueryDevInfo , NET_QUERY_DEV_REMOTE_DEVICE_INFO 查询远程设备信息输出参数 typedef struct tagNET_OUT_GET_DEVICE_INFO { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_GET_DEVICE_INFO) DH_REMOTE_DEVICE stuInfo; // 设备信息,该结构体内部成员 dwSize 需用户赋值 }NET_OUT_GET_DEVICE_INFO; ///@brief CLIENT_MatrixSetCameras接口的输入参数 typedef struct tagDH_IN_MATRIX_SET_CAMERAS { DWORD dwSize; DH_MATRIX_CAMERA_INFO* pstuCameras; // 显示源信息数组, 用户分配内存,大小为sizeof(DH_MATRIX_CAMERA_INFO)*nCameraCount int nCameraCount; // 显示源数组大小 } DH_IN_MATRIX_SET_CAMERAS; ///@brief CLIENT_MatrixSetCameras接口的输出参数 typedef struct tagDH_OUT_MATRIX_SET_CAMERAS { DWORD dwSize; } DH_OUT_MATRIX_SET_CAMERAS; ///@brief 窗口显示源信息 typedef struct tagDH_SPLIT_WND_SOURCE { DWORD dwSize; BOOL bEnable; // 显示源是否有效 char szDeviceID[DH_DEV_ID_LEN]; // 设备ID char szControlID[DH_DEV_ID_LEN]; // 控制ID int nVideoChannel; // 视频通道号 int nVideoStream; // 视频码流类型 int nAudioChannel; // 音频通道 int nAudioStream; // 音频码流类型 int nUniqueChannel; // 设备内统一编号的唯一通道号, 只读 BOOL bRemoteDevice; // 是否远程设备 DH_REMOTE_DEVICE stuRemoteDevice; // 远程设备信息 NET_RECT stuSRect; // 视频源区域,若区域为(0,0,0,0)表示数据无效,设备使用默认值(0,0,8192,8192) int nInterval; // 轮巡时间间隔,单位:秒 } DH_SPLIT_WND_SOURCE; ///@brief 分割窗口信息 typedef struct tagDH_SPLIT_WINDOW { DWORD dwSize; BOOL bEnable; // 窗口是否有视频源 int nWindowID; // 窗口ID char szControlID[DH_DEV_ID_LEN]; // 控制ID DH_RECT stuRect; // 窗口区域, 自由分割模式下有效 BOOL bDirectable; // 坐标是否满足直通条件 int nZOrder; // 窗口Z次序 DH_SPLIT_WND_SOURCE stuSource; // 显示信息 UINT nOSDNum; // OSD个数 NET_SPLIT_OSD stuOSD[DH_VIDEO_CUSTOM_OSD_NUM_EX]; // OSD信息 BOOL bLock; // 窗口是否被锁定位置 BOOL bDock; // 窗口是否具有粘附效果 BOOL bMeetingMode; // 窗口是否为会议模式状态 BOOL bAudioEnable; // 窗口是否开启音频使能 BOOL bTourEnable; // 窗口是否开启轮询 } DH_SPLIT_WINDOW; ///@brief 拼接屏场景 typedef struct tagDH_SPLIT_SCENE { DWORD dwSize; char szCompositeID[DH_DEV_ID_LEN]; // 拼接屏ID char szControlID[DH_DEV_ID_LEN]; // 控制ID DH_SPLIT_MODE emSplitMode; // 分割模式 DH_SPLIT_WINDOW* pstuWnds; // 窗口信息数组, 用户分配内存,大小为sizeof(DH_SPLIT_WINDOW)*nMaxWndCount int nMaxWndCount; // 窗口信息数组大小, 用户填写 int nRetWndCount; // 返回的窗口数量 } DH_SPLIT_SCENE; ///@brief 电视墙场景 typedef struct tagDH_MONITORWALL_SCENE { DWORD dwSize; char szName[DH_DEV_NAME_LEN]; // 当前预案名称 char szControlID[DH_DEV_ID_LEN]; // 控制ID DH_MONITORWALL stuMonitorWall; // 电视墙配置 DH_SPLIT_SCENE* pstuSplitScene; // 拼接屏场景信息数组, 用户分配内存,大小为sizeof(DH_SPLIT_SCENE)*nMaxSplitSceneCount int nMaxSplitSceneCount; // 拼接屏场景数组大小, 用户填写 int nRetSplitSceneCount; // 返回的拼接屏场景数量 } DH_MONITORWALL_SCENE; ///@brief CLIENT_MonitorWallGetScene接口输入参数(获取电视墙场景) typedef struct tagDH_IN_MONITORWALL_GET_SCENE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 } DH_IN_MONITORWALL_GET_SCENE; ///@brief CLIENT_MonitorWallGetScene接口输出参数(获取电视墙场景) typedef struct tagDH_OUT_MONITORWALL_GET_SCENE { DWORD dwSize; char szName[DH_DEV_NAME_LEN]; // 当前预案名称, 可以为空 DH_MONITORWALL_SCENE stuScene; // 电视墙场景 } DH_OUT_MONITORWALL_GET_SCENE; ///@brief CLIENT_MonitorWallSetScene接口输入参数(设置电视墙场景) typedef struct tagDH_IN_MONITORWALL_SET_SCENE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 DH_MONITORWALL_SCENE stuScene; // 电视墙场景 } DH_IN_MONITORWALL_SET_SCENE; ///@brief CLIENT_MonitorWallSetScene接口输出参数(设置电视墙场景) typedef struct tagDH_OUT_MONITORWALL_SET_SCENE { DWORD dwSize; } DH_OUT_MONITORWALL_SET_SCENE; ///@brief CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输入参数(获取协议栈统计数据) typedef struct tagNET_IN_NETAPP_NET_DATA_STAT { DWORD dwSize; char szEthName[DH_MAX_ETH_NAME]; //网卡名 }NET_IN_NETAPP_NET_DATA_STAT; ///@brief 接收相关统计数据,意义与ifconfig同 typedef struct tagNET_NETAPP_RECEIVE_STAT { DWORD dwSize; DWORD dwPackets; DWORD dwBytes; DWORD dwErrors; DWORD dwDroped; DWORD dwOverruns; DWORD dwFrame; DWORD dwSpeed; // 下行流量速度 }NET_NETAPP_RECEIVE_STAT; ///@brief 传输相关统计数据,意义与ifconfig同 typedef struct tagNET_NETAPP_TRANSMIT_STAT { DWORD dwSize; DWORD dwPackets; DWORD dwBytes; DWORD dwErrors; DWORD dwDroped; DWORD dwOverruns; DWORD dwCarrier; DWORD dwCollisions; DWORD dwTxQueue; DWORD dwSpeed; // 上行流量速度 }NET_NETAPP_TRANSMIT_STAT; ///@brief CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输出参数(获取协议栈统计数据) typedef struct tagNET_OUT_NETAPP_NET_DATA_STAT { DWORD dwSize; NET_NETAPP_RECEIVE_STAT stuReceiveStat; // 接收相关统计数据,意义与ifconfig同 NET_NETAPP_TRANSMIT_STAT stuTransmitStat; // 传输相关统计数据,意义与ifconfig同 int nSpeed; // 网卡速度,单位Mbps }NET_OUT_NETAPP_NET_DATA_STAT; ///@brief CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输入参数(获取物理链路状态) typedef struct tagNET_IN_NETAPP_LINK_STATUS { DWORD dwSize; char szEthName[DH_MAX_ETH_NAME]; //网卡名 }NET_IN_NETAPP_LINK_STATUS; ///@brief CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输出参数(获取物理链路状态) typedef struct tagNET_OUT_NETAPP_LINK_STATUS { DWORD dwSize; BOOL bWorking; // 是否正在工作 BOOL bIPConflict; // IP是否冲突 }NET_OUT_NETAPP_LINK_STATUS; // 输入信号类型 #define DH_VIDEO_SIGNAL_CVBS 0x0001 #define DH_VIDEO_SIGNAL_SDI 0x0002 #define DH_VIDEO_SIGNAL_VGA 0x0004 #define DH_VIDEO_SIGNAL_DVI 0x0008 #define DH_VIDEO_SIGNAL_HDMI 0x0010 #define DH_VIDEO_SIGNAL_YPBPR 0x0020 #define DH_VIDEO_SIGNAL_SFP 0x0040 #define DH_VIDEO_SIGNAL_HDCVI 0x0080 #define DH_VIDEO_SIGNAL_DUAL_LINK 0x0100 ///@brief 视频输入能力集 typedef struct tagDH_VIDEO_IN_CAPS { DWORD dwSize; DWORD dwSignalType; // 输入信号类型 BOOL bAutoFocusPeak; // 是否支持聚焦峰值计算 BOOL bElectricFocus; // 是否支持电动调焦 BOOL bSyncFocus; // 是否支持同步对焦 BOOL bSetColor; // 是否支持视频颜色设置 BOOL bGain; // 是否支持增益控制 BOOL bPhase; // 是否支持相位控制 int nSubChannel; // 视频子通道(采集器)个数 DH_RECT stuRect[MAX_SUBCHANNEL_NUM]; // 每个sensor画面在整个拼接画面中的位置 } DH_VIDEO_IN_CAPS; ///@brief CLIENT_GetVideoInCaps接口输入参数 typedef struct tagDH_IN_GET_VIDEO_IN_CAPS { DWORD dwSize; int nChannel; // 视频输入通道号 } DH_IN_GET_VIDEO_IN_CAPS; ///@brief CLIENT_GetVideoInCaps接口输出参数 typedef struct tagDH_OUT_GET_VIDEO_IN_CAPS { DWORD dwSize; DH_VIDEO_IN_CAPS stuCaps; // 能力 } DH_OUT_GET_VIDEO_IN_CAPS; ///@brief 视频输出模式 typedef struct tagDH_VIDEO_OUT_MODE { DWORD dwSize; int nWidth; // 水平分辨率 int nHeight; // 垂直分辨率 int nBPP; // 颜色深度 int nFormat; // 输出信号模式, 0-Auto, 1-TV, 2-VGA, 3-DVI int nRefreshRate; // 刷新频率 int nPhysicalPort; // 物理输出口, VGA, TV, DVI各自独立编号, 各自从0开始 int nScanFormat; // 扫描模式, 0-逐行, 1-隔行 } DH_VIDEO_OUT_MODE; ///@brief CLIENT_EnumVideoOutModes接口输入参数 typedef struct tagDH_IN_ENUM_VIDEO_OUT_MODES { DWORD dwSize; int nChannel; } DH_IN_ENUM_VIDEO_OUT_MODES; ///@brief CLIENT_EnumVideoOutModes接口输出参数 typedef struct tagDH_OUT_ENUM_VIDEO_OUT_MODES { DWORD dwSize; DH_VIDEO_OUT_MODE* pstuModes; // 模式数组, 用户分配内存,大小为sizeof(DH_VIDEO_OUT_MODE)*nMaxModeCount int nMaxModeCount; // 模式数组大小, 用户填写 int nRetModeCount; // 返回的模式数量 } DH_OUT_ENUM_VIDEO_OUT_MODES; ///@brief 电视墙屏幕能力类型 typedef enum tagDH_OUTPUT_ATTRIBUTE_TYPE { DH_OUTPUT_ATTRIBUTE_VIDEO, DH_OUTPUT_ATTRIBUTE_YPBPR, DH_OUTPUT_ATTRIBUTE_VGA, DH_OUTPUT_ATTRIBUTE_DVI, DH_OUTPUT_ATTRIBUTE_MENU, } DH_OUTPUT_ATTRIBUTE_TYPE; // 电视墙显示单元屏幕调节能力集(DH_OUTPUT_ATTRIBUTE_CAPS) Video能力 #define DH_ATTR_VIDEO_BRIGHTNESS 0X00000001 #define DH_ATTR_VIDEO_CONTRAST 0X00000002 #define DH_ATTR_VIDEO_SATURATION 0X00000004 #define DH_ATTR_VIDEO_SHAPENESS 0X00000008 #define DH_ATTR_VIDEO_DENOISE 0X00000010 // 电视墙显示单元屏幕调节能力集(DH_OUTPUT_ATTRIBUTE_CAPS) YPbPr能力 #define DH_ATTR_YPBPR_BRIGHTNESS 0X00000001 #define DH_ATTR_YPBPR_CONTRAST 0X00000002 #define DH_ATTR_YPBPR_SATURATION 0X00000004 #define DH_ATTR_YPBPR_SHAPENESS 0X00000008 #define DH_ATTR_YPBPR_DENOISE 0X00000010 // 电视墙显示单元屏幕调节能力集(DH_OUTPUT_ATTRIBUTE_CAPS) VGA能力 #define DH_ATTR_VGA_BRIGHTNESS 0X00000001 #define DH_ATTR_VGA_CONTRAST 0X00000002 #define DH_ATTR_VGA_HORPOSITION 0X00000004 #define DH_ATTR_VGA_VERPOSITION 0X00000008 #define DH_ATTR_VGA_CLOCK 0X00000010 // 电视墙显示单元屏幕调节能力集(DH_OUTPUT_ATTRIBUTE_CAPS) DVI能力 #define DH_ATTR_DVI_BRIGHTNESS 0X00000001 #define DH_ATTR_DVI_CONTRAST 0X00000002 #define DH_ATTR_DVI_HORPOSITION 0X00000004 #define DH_ATTR_DVI_VERPOSITION 0X00000008 #define DH_ATTR_DVI_CLOCK 0X00000010 // 电视墙显示单元屏幕调节能力集(DH_OUTPUT_ATTRIBUTE_CAPS) Menu能力 #define DH_ATTR_MENU_MENU 0X00000001 #define DH_ATTR_MENU_UP 0X00000002 #define DH_ATTR_MENU_DOWN 0X00000004 #define DH_ATTR_MENU_LEFT 0X00000008 #define DH_ATTR_MENU_RIGHT 0X00000010 #define DH_ATTR_MENU_FACTORYMENU 0X00000020 ///@brief 电视墙显示单元屏幕调节能力集 typedef struct tagDH_OUTPUT_ATTRIBUTE_CAPS { DWORD dwSize; BOOL abVideo; // Video能力是否有效 DWORD dwVideo; // Video能力, 按位表示, 具体见DH_ATTR_VIDEO_BRIGHTNESS等 BOOL abYPbPr; // YPbPr能力是否有效 DWORD dwYPbPr; // YPbPr能力, 按位表示, 具体见DH_ATTR_VGA_BRIGHTNESS等 BOOL abVGA; // VGA能力是否有效 DWORD dwVGA; // VGA能力, 按位表示, 具体见DH_ATTR_VGA_BRIGHTNESS等 BOOL abDVI; // DVI能力是否有效 DWORD dwDVI; // DVI能力, 按位表示, 具体见DH_ATTR_DVI_BRIGHTNESS BOOL abMenu; // Menu能力是否有效 DWORD dwMemu; // Menu能力, 按位表示, 具体见DH_ATTR_MENU_MENU等 } DH_OUTPUT_ATTRIBUTE_CAPS; ///@brief CLIENT_MonitorWallGetAttributeCaps 接口输入参数 typedef struct tagDH_IN_MONITORWALL_GET_ARRT_CAPS { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID int nOutputID; // 显示单元序号 } DH_IN_MONITORWALL_GET_ARRT_CAPS; ///@brief CLIENT_MonitorWallGetAttributeCaps 接口输出参数 typedef struct tagDH_OUT_MONITORWALL_GET_ARRT_CAPS { DWORD dwSize; DH_OUTPUT_ATTRIBUTE_CAPS stuCaps; // 属性能力集 } DH_OUT_MONITORWALL_GET_ARRT_CAPS; ///@brief CLIENT_MonitorWallAutoAdjust 接口输入参数 typedef struct tagDH_IN_MONITORWALL_AUTO_ADJUST { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID int* pOutputs; // 显示单元序号数组指针, 数组元素是显示单元ID, 用户申请内存,大小为sizeof(int)*nOutputCount int nOutputCount; // 显示单元数量, pOutputs元素数量 } DH_IN_MONITORWALL_AUTO_ADJUST; ///@brief CLIENT_MonitorWallAutoAdjust 接口输出参数 typedef struct tagDH_OUT_MONITORWALL_AUTO_ADJUST { DWORD dwSize; } DH_OUT_MONITORWALL_AUTO_ADJUST; ///@brief 显示单元属性键值对 typedef struct tagDH_ATTR_PAIR { DWORD dwKey; // 属性键 // 类型为DH_OUTPUT_ATTRIBUTE_VIDEO时, 使用宏DH_ATTR_VIDEO_BRIGHTNESS等 // 类型为DH_OUTPUT_ATTRIBUTE_YPBPR时, 使用宏DH_ATTR_YPBPR_BRIGHTNESS等 // 其他的类型以此类推 int nValue; // 属性值, 0-减少 1-增加, 2-不变 } DH_ATTR_PAIR; ///@brief CLIENT_MonitorWallSetAttribute 接口输入参数 typedef struct tagDH_IN_MONITORWALL_SET_ATTR { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID int nOutputID; // 显示单元序号 DH_OUTPUT_ATTRIBUTE_TYPE emAttrType; // 属性类型, 类型不同时, 对应的属性(stuAttrs)也不同 DH_ATTR_PAIR stuAttrs[DH_MAX_ATTR_NUM]; // 属性值 } DH_IN_MONITORWALL_SET_ATTR; ///@brief CLIENT_MonitorWallSetAttribute 接口输出参数 typedef struct tagDH_OUT_MONITORWALL_SET_ATTR { DWORD dwSize; } DH_OUT_MONITORWALL_SET_ATTR; ///@brief CLIENT_MonitorWallSetBackLight 接口输入参数 typedef struct tagDH_IN_MONITORWALL_SET_BACK_LIGHT { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID int nOutputID; // 显示单元序号 int nMode; // 背光模式, 0-循环设置背光模式,1-非循环模式 } DH_IN_MONITORWALL_SET_BACK_LIGHT; ///@brief CLIENT_MonitorWallSetBackLight 接口输出参数 typedef struct tagDH_OUT_MONITORWALL_SET_BACK_LIGHT { DWORD dwSize; } DH_OUT_MONITORWALL_SET_BACK_LIGHT; ///@brief CLIENT_MonitorWallGetPowerSchedule 接口输入参数 typedef struct tagNET_IN_WM_GET_POWER_SCHEDULE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID } NET_IN_MW_GET_POWER_SCHEDULE; ///@brief CLIENT_MonitorWallGetPowerSchedule 接口输出参数 typedef struct tagNET_OUT_MW_GET_POWER_SCHEDULE { DWORD dwSize; DH_TSECT stuPowerSchedule[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 开机时间表, 第一维各元素表示周日~周六和节假日 } NET_OUT_MW_GET_POWER_SCHEDULE; ///@brief CLIENT_MonitorWallSetPowerSchedule 接口输入参数 typedef struct tagNET_IN_MW_SET_POWER_SCHEDULE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID, NULL表示所有屏 DH_TSECT stuPowerSchedule[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 开机时间表, 第一维各元素表示周日~周六和节假日 } NET_IN_MW_SET_POWER_SCHEDULE; ///@brief CLIENT_MonitorWallSetPowerSchedule 接口输出参数 typedef struct tagNET_OUT_MW_SET_POWER_SCHEDULE { DWORD dwSize; } NET_OUT_MW_SET_POWER_SCHEDULE; ///@brief CLIENT_MonitorWallGetScrnCtrlParam 接口输入参数 typedef struct tagNET_IN_MW_GET_SCRN_CTRL_PARAM { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID } NET_IN_MW_GET_SCRN_CTRL_PARAM; #define DH_MAX_SCREEN_PORT_NUM 16 // 最大屏幕输入端口数 #define DH_MAX_COMPSITE_SCREEN_NUM 256 // 最大拼接屏数量 ///@brief 屏幕输入端口信息 typedef struct tagNET_SCREEN_PORT_INFO { DWORD dwSize; char szType[DH_COMMON_STRING_16]; // 端口类型, "DVI", "VGA", "HDMI"等, 允许存在相同类型的多个端口 char szAddress[DH_COMMON_STRING_16]; // 端口地址 char szDeviceID[DH_DEV_ID_LEN_EX]; // 绑定的视频输出设备号 int nOutputChannel; // 视频输出通道号 } NET_SCREEN_PORT_INFO; ///@brief 屏幕输入端口信息 typedef struct tagNET_SCREEN_PORT_GROUP { DWORD dwSize; int nPortNum; // 端口数 NET_SCREEN_PORT_INFO stuPorts[DH_MAX_SCREEN_PORT_NUM]; // 端口信息 } NET_SCREEN_PORT_GROUP; ///@brief 电视墙屏幕控制参数 typedef struct tagNET_WM_SCRN_CTRL_PARAM { DWORD dwSize; int nCommPort; // 串口号 DH_COMM_PROP stuCommProp; // 串口属性 char szProtocol[DH_COMMON_STRING_32]; // 串口协议 int nResolutionNum; // 分辨率数量 CAPTURE_SIZE emResolutions[DH_MAX_CAPTURE_SIZE_NUM]; // 视频分辨率列表 int nScreenCodeNum; // 屏幕编码数 char szScreenCode[DH_MAX_COMPSITE_SCREEN_NUM][DH_COMMON_STRING_16]; // 屏幕编码, 串口命令寻址用, 该编码由用户配置, 可以相同 int nScreenPortsNum; // 屏幕输入端口信息数量 NET_SCREEN_PORT_GROUP stuScreenPorts[DH_MAX_COMPSITE_SCREEN_NUM]; // 屏幕输入端口信息 } NET_WM_SCRN_CTRL_PARAM; ///@brief CLIENT_MonitorWallGetScrnCtrlParam 接口输入参数 typedef struct tagNET_OUT_MW_GET_SCRN_CTRL_PARAM { DWORD dwSize; NET_WM_SCRN_CTRL_PARAM stuScrnCtrlParam; // 屏幕控制参数 } NET_OUT_MW_GET_SCRN_CTRL_PARAM; ///@brief CLIENT_MonitorWallSetScrnCtrlParam 接口输入参数 typedef struct tagNET_IN_MW_SET_SCRN_CTRL_PARAM { DWORD dwSize; int nMonitorWallID; // 电视墙序号 const char* pszCompositeID; // 拼接屏ID NET_WM_SCRN_CTRL_PARAM stuScrnCtrlParam; // 屏幕控制参数 } NET_IN_MW_SET_SCRN_CTRL_PARAM; ///@brief CLIENT_MonitorWallSetScrnCtrlParam 接口输出参数 typedef struct tagNET_OUT_MW_SET_SCRN_CTRL_PARAM { DWORD dwSize; } NET_OUT_MW_SET_SCRN_CTRL_PARAM; ///@brief CLIENT_MonitorWallGetBackgroudColor 接口输入参数 typedef struct tagNET_IN_MW_GET_BACKGROUDND_COLOR { DWORD dwSize; int nMonitorWallID; // 电视墙序号 } NET_IN_MW_GET_BACKGROUDND_COLOR; ///@brief CLIENT_MonitorWallGetBackgroudColor 接口输出参数 typedef struct tagNET_OUT_MW_GET_BACKGROUDND_COLOR { DWORD dwSize; DH_COLOR_RGBA stuScreenColor; // 屏幕背景色 DH_COLOR_RGBA stuWindowColor; // 窗口背景色 } NET_OUT_MW_GET_BACKGROUDND_COLOR; ///@brief CLIENT_MonitorWallSetBackgroudColor 接口输入参数 typedef struct tagNET_IN_MW_SET_BACKGROUD_COLOR { DWORD dwSize; int nMonitorWallID; // 电视墙序号 DH_COLOR_RGBA stuScreenColor; // 屏幕背景色 DH_COLOR_RGBA stuWindowColor; // 窗口背景色 } NET_IN_MW_SET_BACKGROUD_COLOR; ///@brief CLIENT_MonitorWallSetBackgroudColor 接口输出参数 typedef struct tagNET_OUT_MW_SET_BACKGROUD_COLOR { DWORD dwSize; } NET_OUT_MW_SET_BACKGROUD_COLOR; ///@brief 信号源类型 typedef enum tagEM_SIGNAL_TYPE { EM_SIGNAL_TYPE_UNKNOWN, // 未知类型 EM_SIGNAL_TYPE_VIDEO, // "Video" EM_SIGNAL_TYPE_VGA, // "VGA" EM_SIGNAL_TYPE_YPBPR, // "YPbPr" EM_SIGNAL_TYPE_HDMI, // "HDMI" EM_SIGNAL_TYPE_DVI, // "DVI" EM_SIGNAL_TYPE_SDI, // "SDI" EM_SIGNAL_TYPE_CVBS, // "CVBS" }EM_SIGNAL_TYPE; ///@brief CLIENT_MonitorWallSwitchDisplaySignal 接口输入参数 typedef struct tagNET_IN_MW_SWITCH_DISPLAY_SIGNAL { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_INT_SWITCH_DISPLAYSIGNAL) int nMonitorWallID; // 电视墙序号 char* pszCompositeID; // 显示单元组ID int nOutputID; // 显示单元索引号, -1表示区块中的所有显示单元 EM_SIGNAL_TYPE emSignalType; // 信号源类型 int nIndex; // 输入信号端子序号, 从0开始, 有多个相同信号源端子时, 用于指明哪个端子 }NET_IN_MW_SWITCH_DISPLAY_SIGNAL; ///@brief CLIENT_MonitorWallSwitchDisplaySignal 接口输出参数 typedef struct tagNET_OUT_MW_SWITCH_DISPLAY_SIGNAL { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_SWICH_DISPLAYSIGNAL) }NET_OUT_MW_SWITCH_DISPLAY_SIGNAL; ////////////////////////////////////////////////////////////////////// ///@brief CLIENT_OperateMonitorWall接口参数 ////////////////////////////////////////////////////////////////////// ///@brief 电视墙操作类型 typedef enum tagNET_MONITORWALL_OPERATE_TYPE { NET_MONITORWALL_OPERATE_ADD, // 添加电视墙, 对应 NET_IN_MONITORWALL_ADD 和 NET_OUT_MONITORWALL_ADD NET_MONITORWALL_OPERATE_CTRL_TOUR, // 预案轮巡控制, 对应 NET_IN_CTRL_COLLECTIONTOUR 和 NET_OUT_CTRL_COLLECTIONTOUR NET_MONITORWALL_OPERATE_GET_STATUS, // 获取矩阵当前状态, 对应 NET_IN_MONITORWALL_GET_STATUS 和 NET_OUT_MONITORWALL_GET_STATUS NET_MONITORWALL_OPERATE_SET_COLL_SCHD, // 设置预案时间表, 对应 NET_IN_MONITORWALL_SET_COLL_SCHD 和 NET_OUT_MONITORWALL_SET_COLL_SCHD NET_MONITORWALL_OPERATE_GET_COLL_SCHD, // 获取预案时间表, 对应 NET_IN_MONITORWALL_GET_COLL_SCHD 和 NET_OUT_MONITORWALL_GET_COLL_SCHD NET_MONITORWALL_OPERATE_REMOVE, // 删除电视墙, 对应 NET_IN_MONITORWALL_REMOVE 和 NET_OUT_MONITORWALL_REMOVE NET_MONITORWALL_OPERATE_SET_ENABLE, // 设置使能, 对应 NET_IN_MONITORWALL_SET_ENABLE 和 NET_OUT_MONITORWALL_SET_ENABLE NET_MONITORWALL_OPERATE_GET_ENABLE, // 获取使能, 对应 NET_IN_MONITORWALL_GET_ENABLE 和 NET_OUT_MONITORWALL_GET_ENABLE NET_MONITORWALL_OPERATE_NAME_EXIST, // 电视墙是否存在, 对应 NET_IN_MONITORWALL_NAME_EXIST 和 NET_OUT_MONITORWALL_NAME_EXIST NET_MONITORWALL_OPERATE_RENAME, // 修改电视墙名称, 对应 NET_IN_MONITORWALL_RENAME 和 NET_OUT_MONITORWALL_RENAME NET_MONITORWALL_OPERATE_UPDATE_SOURCE_URL, // 更新已上墙的视频源URL, 对应 NET_IN_MONITORWALL_UPDATE_SOURCE_URL 和 NET_OUT_MONITORWALL_UPDATE_SOURCE_URL NET_MONITORWALL_OPERATE_GET_LOCK_STATUS,// 获取电视墙锁定状态, 对应 NET_IN_MONITORWALL_GET_LOCK_STATUS 和 NET_OUT_MONITORWALL_GET_LOCK_STATUS NET_MONITORWALL_OPERATE_LOCK, // 锁定电视墙(自由开窗的窗口不能再移动,防止用户误操作), 对应 NET_IN_MONITORWALL_LOCK 和 NET_OUT_MONITORWALL_LOCK NET_MONITORWALL_OPERATE_SET_VSYNC, // 电视墙Vsync校准, 对应NET_IN_MONITORWALL_SET_VSYNC 和 NET_OUT_MONITORWALL_SET_VSYNC } NET_MONITORWALL_OPERATE_TYPE; ///@brief 添加电视墙输入参数 typedef struct tagNET_IN_MONITORWALL_ADD { DWORD dwSize; DH_MONITORWALL stuMonitorWall; // 电视墙信息 } NET_IN_MONITORWALL_ADD; ///@brief 添加电视墙输出参数 typedef struct tagNET_OUT_MONITORWALL_ADD { DWORD dwSize; unsigned int nMonitorWallID; // 电视墙ID } NET_OUT_MONITORWALL_ADD; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_CTRL_TOUR typedef struct tagNET_IN_CTRL_COLLECTIONTOUR { DWORD dwSize; int nChannel; // 通道号 int nAction; // 轮巡动作, 0:结束, 1:开始 } NET_IN_CTRL_COLLECTIONTOUR; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_CTRL_TOUR typedef struct tagNET_OUT_CTRL_COLLECTIONTOUR { DWORD dwSize; } NET_OUT_CTRL_COLLECTIONTOUR; ///@brief 矩阵运行状态 typedef enum tagNET_MATRIX_STATUS { MATRIX_STATUS_UNKNOWN, // 未知 MATRIX_STATUS_TOUR, // 预案轮巡 MATRIX_STATUS_NORMAL, // 普通预览 } NET_MATRIX_STATUS; #define DH_MAX_COLLECTION_NUM 64 // 最大预案数 ///@brief 矩阵状态信息 typedef struct tagNET_MONITORWALL_STATUS_INFO { DWORD dwSize; int nInterval; // 轮巡时间间隔 int nCollectionNum; // 预案轮巡数 char szCollections[DH_MAX_COLLECTION_NUM][DH_DEVICE_NAME_LEN]; // 预案轮巡组内容 char szName[DH_DEVICE_NAME_LEN]; // 当前显示的预案名称 } NET_MONITORWALL_STATUS_INFO; ///@brief // CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_GET_STATUS typedef struct tagNET_IN_MONITORWALL_GET_STATUS { DWORD dwSize; int nChannel; // 通道号 } NET_IN_MONITORWALL_GET_STATUS; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_GET_STATUS typedef struct tagNET_OUT_MONITORWALL_GET_STATUS { DWORD dwSize; NET_MATRIX_STATUS emMatrixStatus; // 运行状态 NET_MONITORWALL_STATUS_INFO stuStatusInfo; // 状态信息 } NET_OUT_MONITORWALL_GET_STATUS; ///@brief 电视墙预案时间表 typedef struct tagMONITORWALL_COLLECTION_SCHEDULE { DWORD dwSize; char szName[DH_DEVICE_NAME_LEN]; // 预案名称 DH_TSECT stuSchedule[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 时间表, 第一维各元素表示周日~周六和节假日 } MONITORWALL_COLLECTION_SCHEDULE; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_SET_COLL_SCHD typedef struct tagNET_IN_MONITORWALL_SET_COLL_SCHD { DWORD dwSize; int nCollectionNum; // 预案数 MONITORWALL_COLLECTION_SCHEDULE stuCollShedule[DH_MAX_COLLECTION_NUM]; // 预案时间表 int nMonitorWallID; // 电视墙ID } NET_IN_MONITORWALL_SET_COLL_SCHD; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_SET_COLL_SCHD typedef struct tagNET_OUT_MONITORWALL_SET_COLL_SCHD { DWORD dwSize; } NET_OUT_MONITORWALL_SET_COLL_SCHD; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_GET_COLL_SCHD typedef struct tagNET_IN_MONITORWALL_GET_COLL_SCHD { DWORD dwSize; BOOL bAllCollections; // TRUE-查询所有预案, 不需要指定预案名称. FALSE-查询名称所对应的预案 int nCollectionNum; // 预案数, bAllCollections为FALSE时有效 char szCollections[DH_MAX_COLLECTION_NUM][DH_DEVICE_NAME_LEN]; // 预案名称 int nMonitorWallID; // 电视墙ID } NET_IN_MONITORWALL_GET_COLL_SCHD; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_GET_COLL_SCHD typedef struct tagNET_OUT_MONITORWALL_GET_COLL_SCHD { DWORD dwSize; int nCollectionNum; // 预案数 MONITORWALL_COLLECTION_SCHEDULE stuCollShedule[DH_MAX_COLLECTION_NUM]; // 预案时间表 } NET_OUT_MONITORWALL_GET_COLL_SCHD; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_REMOVE typedef struct tagNET_IN_MONITORWALL_REMOVE { DWORD dwSize; int nMonitorWallNum; // 要删除的电视墙数量 char szNames[DH_MAX_MONITORWALL_NUM][DH_COMMON_STRING_128]; // 电视墙名称 } NET_IN_MONITORWALL_REMOVE; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_REMOVE typedef struct tagNET_OUT_MONITORWALL_REMOVE { DWORD dwSize; } NET_OUT_MONITORWALL_REMOVE; ///@brief 电视墙使能信息 typedef struct tagNET_MONITORWALL_ENABLE_INFO { DWORD dwSize; BOOL bEanble; // 使能 char szName[DH_COMMON_STRING_128]; // 电视墙名称 } NET_MONITORWALL_ENABLE_INFO; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_SET_ENABLE typedef struct tagNET_IN_MONITORWALL_SET_ENABLE { DWORD dwSize; int nMonitorWallNum; // 要设置的电视墙数量 NET_MONITORWALL_ENABLE_INFO stuEnable[DH_MAX_MONITORWALL_NUM]; // 电视墙使能 } NET_IN_MONITORWALL_SET_ENABLE; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_SET_ENABLE typedef struct tagNET_OUT_MONITORWALL_SET_ENABLE { DWORD dwSize; } NET_OUT_MONITORWALL_SET_ENABLE; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_GET_ENABLE typedef struct tagNET_IN_MONITORWALL_GET_ENABLE { DWORD dwSize; int nMonitorWallNum; // 要查询的电视墙数量, -1表示查询所有电视墙 char szNames[DH_MAX_MONITORWALL_NUM][DH_COMMON_STRING_128]; // 电视墙名称, nMonitorWallNum>0时有效 } NET_IN_MONITORWALL_GET_ENABLE; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_SET_ENABLE typedef struct tagNET_OUT_MONITORWALL_GET_ENABLE { DWORD dwSize; int nMonitorWallNum; // 电视墙数量 NET_MONITORWALL_ENABLE_INFO stuEnable[DH_MAX_MONITORWALL_NUM]; // 电视墙使能 } NET_OUT_MONITORWALL_GET_ENABLE; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_NAME_EXIST typedef struct tagNET_IN_MONITORWALL_NAME_EXIST { DWORD dwSize; const char* pszName; // 电视墙名称 } NET_IN_MONITORWALL_NAME_EXIST; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_NAME_EXIST typedef struct tagNET_OUT_MONITORWALL_NAME_EXIST { DWORD dwSize; BOOL bExist; // 电视墙是否已存在 } NET_OUT_MONITORWALL_NAME_EXIST; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_RENAME修改电视墙名称 typedef struct tagNET_IN_MONITORWALL_RENAME { DWORD dwSize; unsigned int unMonitorWallID; // 电视墙ID char szNewName[MAX_MONITORWALL_NAME_LEN]; // 新的电视墙名称 } NET_IN_MONITORWALL_RENAME; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_RENAME修改电视墙名称 typedef struct tagNET_OUT_MONITORWALL_RENAME { DWORD dwSize; } NET_OUT_MONITORWALL_RENAME; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_GET_LOCK_STATUS获取电视墙锁定状态 typedef struct tagNET_IN_MONITORWALL_GET_LOCK_STATUS { DWORD dwSize; int nChannel; // 通道 } NET_IN_MONITORWALL_GET_LOCK_STATUS; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_GET_LOCK_STATUS获取电视墙锁定状态 typedef struct tagNET_OUT_MONITORWALL_GET_LOCK_STATUS { DWORD dwSize; BOOL bLock; // 是否锁定,true:锁定;false:解除锁定 } NET_OUT_MONITORWALL_GET_LOCK_STATUS; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_LOCK锁定电视墙 typedef struct tagNET_IN_MONITORWALL_LOCK { DWORD dwSize; int nChannel; // 通道 BOOL bLock; // 是否锁定,true:锁定;false:解除锁定 BYTE byReserved[4]; // 保留字节 } NET_IN_MONITORWALL_LOCK; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_LOCK锁定电视墙 typedef struct tagNET_OUT_MONITORWALL_LOCK { DWORD dwSize; } NET_OUT_MONITORWALL_LOCK; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_SET_VSYNC 电视墙Vsync校准 typedef struct tagNET_IN_MONITORWALL_SET_VSYNC { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szCompositeID[64]; // 拼接屏ID }NET_IN_MONITORWALL_SET_VSYNC; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_SET_VSYNC 电视墙Vsync校准 typedef struct tagNET_OUT_MONITORWALL_SET_VSYNC { DWORD dwSize; // 结构体大小 }NET_OUT_MONITORWALL_SET_VSYNC; ///@brief 需要更新的URL信息 typedef struct tagNET_UPDATE_URL_INFO { char szOldURL[512]; // 已上墙的视频源URL char szNewURL[512]; // 需更新的视频源URL BYTE bReserved[1024]; // 保留字节 } NET_UPDATE_URL_INFO; ///@brief CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_UPDATE_SOURCE_URL 更新已上墙的视频源URL typedef struct tagNET_IN_MONITORWALL_UPDATE_SOURCE_URL { DWORD dwSize; // 结构体大小 UINT nUpdateURLNum; // 需要更新的URL信息个数, 最大支持256个 NET_UPDATE_URL_INFO *pstuUpdateURL; // 需要更新的URL信息, 资源由用户申请和释放,申请大小nUpdateURLNum*sizeof(NET_UPDATE_URL_INFO) } NET_IN_MONITORWALL_UPDATE_SOURCE_URL; ///@brief CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_UPDATE_SOURCE_URL 更新已上墙的视频源URL typedef struct tagNET_OUT_MONITORWALL_UPDATE_SOURCE_URL { DWORD dwSize; // 结构体大小 } NET_OUT_MONITORWALL_UPDATE_SOURCE_URL; /************************************************************************/ /* U盘抓包 */ /************************************************************************/ ///@brief 过滤协议类型 typedef enum tagEM_SNIFFER_FILTER_PROTOCOL { EM_SNIFFER_FILTER_PROTOCOL_UNKNOWN, // 未知 EM_SNIFFER_FILTER_PROTOCOL_TCP, // TCP EM_SNIFFER_FILTER_PROTOCOL_UDP, // UDP }EM_SNIFFER_FILTER_PROTOCOL; ///@brief 抓包过滤元素 typedef struct tagNET_SNIFFER_FILTER_ELEMENT { char szSrcIP[64]; // 源地址 char szDstIP[64]; // 目的地址 int nSrcPort; // 源端口 int nDstPort; // 目的端口 EM_SNIFFER_FILTER_PROTOCOL emProtocol; // 协议类型 BYTE byReserved[60]; // 保留字段 }NET_SNIFFER_FILTER_ELEMENT; ///@brief 抓包过滤规则 typedef struct tagNET_SNIFFER_FILTER { int nMaxElemet; // 有效的stElemetsge个数 NET_SNIFFER_FILTER_ELEMENT stuElemets[8]; // 过滤五元组的数组 int nFilterType; // 0: 取上述全部五元组的或集作为过滤条件; 1: 取上述五元组或非作为过滤条件。 BYTE byReserved[256]; // 保留字段 }NET_SNIFFER_FILTER; ///@brief CLIENT_StartSniffer 接口输入参数 typedef struct tagDH_IN_START_SNIFFER { DWORD dwSize; const char* pszNetInterface; // 网卡名称 const char* pszPath; // 抓包存储文件名, 空表示保存到默认路径 int nSaveType; // 文件类型, 0-Wireshark/Tcpdump 1-Remotecap 流式远程抓包,即通过 CLIENT_AttachSniffer const char* pszFilter; // 过滤条件, 如"host 172.9.88.200 and port 8080 and tcp" int nCaptureTime; // 抓包超时时间,单位:秒, 0 则默认不超时. unsigned int nCurrentFileSize; // 指定此次抓包的最大大小, 单位kb BOOL bFilterEx; // 高优先级规则使能,若为真,则不采用pszFilter里的过滤规则 NET_SNIFFER_FILTER stuFilterEx; // 高优先级的过滤规则 } DH_IN_START_SNIFFER; ///@brief CLIENT_StartSniffer 接口输出参数 typedef struct tagDH_OUT_START_SNIFFER { DWORD dwSize; } DH_OUT_START_SNIFFER; ///@brief 抓包信息 typedef struct tagDH_SNIFFER_INFO { DWORD dwSize; DWORD nSnifferID; // 抓包ID, 无抓包ID为0 char szPath[256]; // 抓包存储文件名。若当前网卡无正在进行的抓包任务,则为空 char szPathEx[10][256]; // 默认路径及start路径传入下的抓包文件。按时间从新到旧排序。 int nRetPathEx; // 实际返回的szPathEx有效个数 UINT nFileSize[10]; // szPathEx元素对应文件大小, 单位字节 } DH_SNIFFER_INFO; ///@brief CLIENT_GetSnifferInfo 接口输入参数 typedef struct tagDH_IN_GET_SNIFFER_INFO { DWORD dwSize; const char* pszNetInterface; } DH_IN_GET_SNIFFER_INFO; ///@brief CLIENT_GetSnifferInfo 接口输入参数 typedef struct tagDH_OUT_GET_SNIFFER_INFO { DWORD dwSize; DH_SNIFFER_INFO* pstuSniffers; // 抓包信息数组, 用户分配内存 int nMaxSnifferCount; // 抓包信息数组大小, 用户填写 int nRetSnifferCount; // 返回的抓包信息数量 } DH_OUT_GET_SNIFFER_INFO; ///@brief 调试日志回调函数 typedef void (CALLBACK *fAttachSniffer)(LLONG lAttchHandle, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief CLIENT_AttachSniffer 接口入参 typedef struct tagNET_IN_ATTACH_SNIFFER { DWORD dwSize; fAttachSniffer cbSniffer; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_SNIFFER; ///@brief CLIENT_AttachSniffer 接口出参 typedef struct tagNET_OUT_ATTACH_SNIFFER { DWORD dwSize; }NET_OUT_ATTACH_SNIFFER; ///@brief CLIENT_GetSnifferCaps 接口入参 typedef struct tagNET_IN_GET_SNIFFER_CAP { DWORD dwSize; }NET_IN_GET_SNIFFER_CAP; ///@brief CLIENT_GetSnifferCaps 接口出参 typedef struct tagNET_OUT_GET_SNIFFER_CAP { DWORD dwSize; BOOL bRemoteCap; // 是否支持远程流式抓包 }NET_OUT_GET_SNIFFER_CAP; /************************************************************************/ /* 文件管理 */ /************************************************************************/ ///@brief 格式化分区信息 typedef struct tagDH_FORMAT_PATITION { DWORD dwSize; const char* pszStorageName; // 存储设备名称 const char* pszPatitionName; // 分区名 const char* pszFileSystem; // 文件系统格式 } DH_FORMAT_PATITION; ///@brief CLIENT_CreateRemoteFile 接口输入参数 typedef struct tagDH_IN_CREATE_REMOTE_FILE { DWORD dwSize; const char* pszPath; // 文件名 BOOL bDirectory; // 是否文件夹 } DH_IN_CREATE_REMOTE_FILE; ///@brief CLIENT_CreateRemoteFile 接口输出参数 typedef struct tagDH_OUT_CREATE_REMOTE_FILE { DWORD dwSize; } DH_OUT_CREATE_REMOTE_FILE; ///@brief CLIENT_RemoveRemoteFiles 接口输入参数 typedef struct tagDH_IN_REMOVE_REMOTE_FILES { DWORD dwSize; const char** pszPath; // 文件路径数组指针 int nFileCount; // 文件路径数量 } DH_IN_REMOVE_REMOTE_FILES; ///@brief CLIENT_RemoveRemoteFiles 接口输出参数 typedef struct tagDH_OUT_REMOVE_REMOTE_FILES { DWORD dwSize; } DH_OUT_REMOVE_REMOTE_FILES; ///@brief CLIENT_RenameRemoteFile 接口输入参数 typedef struct tagDH_IN_RENAME_REMOTE_FILE { DWORD dwSize; const char* pszOldPath; // 旧文件名 const char* pszNewPath; // 新文件名 } DH_IN_RENAME_REMOTE_FILE; ///@brief CLIENT_RenameRemoteFile 接口输出参数 typedef struct tagDH_OUT_RENAME_REMOTE_FILE { DWORD dwSize; } DH_OUT_RENAME_REMOTE_FILE; ///@brief 文件/目录信息 typedef struct tagDH_REMOTE_FILE_INFO { DWORD dwSize; BOOL bDirectory; // 是否文件夹 char szPath[MAX_PATH]; // 路径 NET_TIME stuCreateTime; // 创建时间 NET_TIME stuModifyTime; // 修改时间 INT64 nFileSize; // 文件大小 char szFileType[DH_FILE_TYPE_LEN]; // 文件类型 } DH_REMOTE_FILE_INFO; ///@brief 获取文件的条件 typedef enum tagDH_REMOTE_FILE_COND { DH_REMOTE_FILE_COND_NONE, // 无条件 DH_REMOTE_FILE_COND_VOICE, // 语音联动的文件,*无法*按路径获取,*只能*获取获取文件名称 } DH_REMOTE_FILE_COND; ///@brief CLIENT_ListRemoteFile 接口输入参数 typedef struct tagDH_IN_LIST_REMOTE_FILE { DWORD dwSize; const char* pszPath; // 路径 当emCondition为DH_REMOTE_FILE_COND_VOICE时,这个字段无效 BOOL bFileNameOnly; // 只获取文件名称, 不返回文件夹信息, 文件信息中只有文件名有效 当emCondition为DH_REMOTE_FILE_COND_VOICE时,这个字段无效 DH_REMOTE_FILE_COND emCondition; // 指定获取文件的条件 } DH_IN_LIST_REMOTE_FILE; ///@brief CLIENT_ListRemoteFile 接口输出参数 typedef struct tagDH_OUT_LIST_REMOTE_FILE { DWORD dwSize; DH_REMOTE_FILE_INFO* pstuFiles; // 文件信息数组, 用户分配内存,大小为sizeof(DH_REMOTE_FILE_INFO)*nMaxFileCount int nMaxFileCount; // 文件信息数组大小, 用户填写 int nRetFileCount; // 返回的文件数量 } DH_OUT_LIST_REMOTE_FILE; ///@brief 设置文件属性—属性名称 typedef enum tagNET_SET_FILEATTR_ACTION { EM_SET_FILEATTR_ACTION_UNKNOWN = 0, // 未知 EM_SET_FILEATTR_ACTION_MARK, // 文件加锁 } NET_SET_FILEATTR_ACTION; ///@brief CLIENT_SetFileAttribute 接口输入参数 typedef struct tagDH_IN_SET_FILEATTRIBUTE { DWORD dwSize; unsigned int nDriveNo; // 磁盘号 unsigned int nPartition; // 分区号 unsigned int nCluster; // 簇号 NET_SET_FILEATTR_ACTION emAction; // 每种属性对应一种key,设置值由value决定 // 设置key:Mark 文件加锁,对应value,延长加锁时间(单位:天) char szValue[DH_COMMON_STRING_64]; // 属性值 } DH_IN_SET_FILEATTRIBUTE; ///@brief CLIENT_SetFileAttribute 接口输出参数 typedef struct tagDH_OUT_SET_FILEATTRIBUTE { DWORD dwSize; } DH_OUT_SET_FILEATTRIBUTE; ///@brief 手动弹出存储设备 typedef struct tagDH_EJECT_STORAGE_DEVICE { DWORD dwSize; const char* pszStorageName; // 存储设备名称 } DH_EJECT_STORAGE_DEVICE; ///@brief 手动装载存储设备 typedef struct tagDH_LOAD_STORAGE_DEVICE { DWORD dwSize; const char* pszStorageName; // 存储设备名称 } DH_LOAD_STORAGE_DEVICE; ///@brief CLIENT_UploadRemoteFile 接口输入参数(上传文件到设备) typedef struct tagDH_IN_UPLOAD_REMOTE_FILE { DWORD dwSize; const char* pszFileSrc; // 源文件路径 const char* pszFileDst; // 目标文件名称 const char* pszFolderDst; // 目标文件夹路径:可为NULL, NULL时设备使用默认路径 unsigned int nPacketLen; // 文件分包大小(字节): 0表示不分包 unsigned int nTimeOut; // 文件上传超时时间,填0时默认10s,字段CLIENT_StartUploadRemoteFile接口有效 } DH_IN_UPLOAD_REMOTE_FILE; ///@brief CLIENT_UploadRemoteFile 接口输出参数(上传文件到设备) typedef struct tagDH_OUT_UPLOAD_REMOTE_FILE { DWORD dwSize; } DH_OUT_UPLOAD_REMOTE_FILE; ///@brief CLIENT_DownloadRemoteFile 接口输入参数(文件下载) typedef struct tagDH_IN_DOWNLOAD_REMOTE_FILE { DWORD dwSize; const char* pszFileName; // 需要下载的文件名 const char* pszFileDst; // 存放文件路径 } DH_IN_DOWNLOAD_REMOTE_FILE; ///@brief CLIENT_DownloadRemoteFile 接口输出参数(文件下载) typedef struct tagDH_OUT_DOWNLOAD_REMOTE_FILE { DWORD dwSize; DWORD dwMaxFileBufLen; // 文件缓存区pstFileBuf的大小, 由用户指定 char *pstFileBuf; // 文件缓存区, 由用户申请和释放 DWORD dwRetFileBufLen; // 缓存区中返回的实际文件数据大小 BYTE byReserved[4]; // 字节对齐 } DH_OUT_DOWNLOAD_REMOTE_FILE; ///@brief CLIENT_DownloadPieceFile 接口输入参数(文件下载) typedef struct tagNET_IN_DOWNLOAD_PIECE_FILE { DWORD dwSize; char szFileName[MAX_PATH]; // 需要下载的文件名,支持全路径 UINT nOffSet; // 下载偏移,单位字节 // 如果文件总长度为50KB,每次请求下载数据量为32KB,那么第一次请求时,nOffSet为0,第二次请求nOffSet为32KB UINT nNeedLength; // 请求下载数据量,单位字节,建议为32KB,最大不超过4MB } NET_IN_DOWNLOAD_PIECE_FILE; ///@brief CLIENT_DownloadPieceFile 接口输出参数(文件下载) typedef struct tagNET_OUT_DOWNLOAD_PIECE_FILE { DWORD dwSize; UINT nFileLength; // 文件总长度 UINT nPacketLength; // 本次返回的数据长度,单位字节,建议为32KB,最大不超过4MB char* szBuffer; // 本次请求的文件数据,由用户申请内存,大小为nBufferLen UINT nBufferLen; // 本次请求的文件数据长度,单位字节 } NET_OUT_DOWNLOAD_PIECE_FILE; ///@brief CLIENT_GetMediaFileInfo 接口输入参数 typedef struct tagNET_IN_GET_NEDIA_FILE_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 char szFilePath[640]; // 文件路径 } NET_IN_GET_NEDIA_FILE_INFO; ///@brief 媒体文件信息 typedef struct tagNET_MEDIA_FILE_INFO { UINT nDuration; // 文件持续时间( 单位秒) BYTE byReserved[2044]; // 保留字节 } NET_MEDIA_FILE_INFO; ///@brief CLIENT_GetMediaFileInfo 接口输出参数 typedef struct tagNET_OUT_GET_NEDIA_FILE_INFO { DWORD dwSize; // 结构体大小 NET_MEDIA_FILE_INFO stuMediaFileInfo; // 媒体文件信息 } NET_OUT_GET_NEDIA_FILE_INFO; ///@brief CLIENT_StartListMediaFileInfo 接口输入参数 typedef struct tagNET_IN_START_LIST_FILE_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 char szFilePath[600]; // 获取路径 } NET_IN_START_LIST_FILE_INFO; ///@brief CLIENT_StartListMediaFileInfo 接口输出参数 typedef struct tagNET_OUT_START_LIST_FILE_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_START_LIST_FILE_INFO; ///@brief CLIENT_DoListMediaFileInfo 接口输入参数 typedef struct tagNET_IN_DO_LIST_FILE_INFO { DWORD dwSize; // 结构体大小 UINT nCount; // 本次查询的数量 } NET_IN_DO_LIST_FILE_INFO; ///@brief 文件元素类型 typedef enum tagEM_LIST_ELEMENT_TYPE { EM_LIST_ELEMENT_TYPE_UNKNOWN, // 未知 EM_LIST_ELEMENT_TYPE_FILE, // 文件 EM_LIST_ELEMENT_TYPE_DIRECTORY, // 目录 } EM_LIST_ELEMENT_TYPE; ///@brief 文件信息 typedef struct tagNET_FILE_ELEMENT_INFO { NET_TIME stuCreateTime; // 创建时间 NET_TIME stuModifyTime; // 修改时间 TP_U64 nFileSize; // 文件大小, 单位:字节 char szPath[600]; // 绝对路径 char szFileType[32]; // 文件类型 BYTE byReserved[2048]; // 保留字节 } NET_FILE_ELEMENT_INFO; ///@brief 目录信息 typedef struct tagNET_DIRECTORY_ELEMENT_INFO { NET_TIME stuCreateTime; // 创建时间 char szPath[600]; // 绝对路径 BYTE byReserved[2048]; // 保留字节 } NET_DIRECTORY_ELEMENT_INFO; ///@brief 文件元素信息 typedef struct tagNET_LIST_ELEMENT_INFO { NET_FILE_ELEMENT_INFO stuFileInfo; // 文件信息, emElementType 为 EM_LIST_ELEMENT_TYPE_FILE 时有效 NET_DIRECTORY_ELEMENT_INFO stuDirectoryInfo; // 目录信息, emElementType 为 EM_LIST_ELEMENT_TYPE_DIRECTORY 时有效 EM_LIST_ELEMENT_TYPE emElementType; // 文件元素类型 BYTE byReserved[2044]; // 保留字节 } NET_LIST_ELEMENT_INFO; ///@brief CLIENT_DoListMediaFileInfo 接口输出参数 typedef struct tagNET_OUT_DO_LIST_FILE_INFO { DWORD dwSize; // 结构体大小 UINT nMaxListElementNum; // 文件元素信息最大个数 UINT nRetListElementNum; // 文件元素信息实际返回个数 NET_LIST_ELEMENT_INFO *pstListElementInfo; // 文件元素信息, 内存由用户申请和释放, 申请大小sizeof(NET_LIST_ELEMENT_INFO)*nMaxListElementNum } NET_OUT_DO_LIST_FILE_INFO; ///@brief 文件当前状态 typedef enum tagEM_STATE_MODE { EM_STATE_MODE_UNKNOWN, // 未知 EM_STATE_MODE_PREPARING, // 等待上传下载 EM_STATE_MODE_LOADING, // 上传下载中 EM_STATE_MODE_SUCCEEDED, // 上传下载完成 EM_STATE_MODE_FAILED, // 上传下载失败 EM_STATE_MODE_CANCELLED, // 上传下载取消 }EM_STATE_MODE; ///@brief CLIENT_NotifyFileUploadProgress 接口输入参数 typedef struct tagNET_IN_NOTIFY_FILE_UPLOAD_PROGRESS_INFO { DWORD dwSize; // 结构体大小 /*文件上传进度为平台从设备下载文件的下载进度*/ UINT nProgress; // 文件上传进度,取值范围0~100 /*以下文件名与文件唯一标识可通过文件查询接口CLIENT_FindFileEx, emType=DH_FILE_QUERY_MOBILE_ENFORCE查询得到*/ char szFileName[256]; // 已废弃,请使用szFilePath char szUniqueID[128]; // 文件唯一标识 char szFilePath[256]; // 文件路径 EM_STATE_MODE emState; // 文件当前状态 UINT nErrorCode; // 当emState为EM_STATE_MODE_FAILED时有效,0xff-未知错误(255),0x01-文件不存在(1),0x02-文件重复上传(2) char szReserved[1784]; // 保留字节 } NET_IN_NOTIFY_FILE_UPLOAD_PROGRESS_INFO; ///@brief CLIENT_NotifyFileUploadProgress 接口输出参数 typedef struct tagNET_OUT_NOTIFY_FILE_UPLOAD_PROGRESS_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_NOTIFY_FILE_UPLOAD_PROGRESS_INFO; ///@brief 文件信息 typedef struct tagNET_REMOVE_MEDIA_FILE_INFO { char szFileName[128]; // 文件名,为空字符串表示按通道进行删除录像和图片文件 UINT nPicId; // 图片的唯一标识,为空表示按通道进行删除录像和图片文件 int nChannelsNum; // 通道号个数 int nChannels[256]; // 通道号列表,最多256个通道;支持数组为空,空表示不以通道作为删除条件;-1代表删除全通道 char szReserved[128]; // 保留字节 }NET_REMOVE_MEDIA_FILE_INFO; ///@brief CLIENT_RemoveMediaFilesInfo 接口输入参数 typedef struct tagNET_IN_REMOVE_MEDIA_FILES_INFO { DWORD dwSize; // 结构体大小 int nFileInfoNum; // 文件信息实际个数 NET_REMOVE_MEDIA_FILE_INFO stuFileInfo[256]; // 文件信息 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 }NET_IN_REMOVE_MEDIA_FILES_INFO; ///@brief 正在存储的录像,无法删除 typedef struct tagNET_BEING_STORED_VIDEO { char szVideoFileName[128]; // 录像文件名 char szReserved[128]; // 保留字节 }NET_BEING_STORED_VIDEO; ///@brief CLIENT_RemoveMediaFilesInfo 接口输出参数 typedef struct tagNET_OUT_REMOVE_MEDIA_FILES_INFO { DWORD dwSize; // 结构体大小 int nBeingStoredVideoNum; // 正在存储的录像个数 NET_BEING_STORED_VIDEO stuBeingStoredVideo[128]; // 正在存储的录像,无法删除 }NET_OUT_REMOVE_MEDIA_FILES_INFO; /************************************************************************/ /* 级联设备 */ /************************************************************************/ ///@brief 级联设备搜索条件 typedef struct tagDH_IN_SEARCH_CONDITON { DWORD dwSize; const char* pMachineName; // 设备名称或编号 const char* pMachineAddr; // 设备部署地点(如:滨江区.江南大道.伟业路口) const char* pSerialNo; // 设备序列号 const char* pChannelName; // 视频输入通道名 } DH_MATRIX_SEARCH_CONDITON; ///@brief CLIENT_MatrixSearch 接口输入参数(搜索级联设备) typedef struct tagDH_IN_MATIRX_SEARCH { DWORD dwSize; const char* pSerialNo; // 搜索设备序列号,"Local"-本设备,"Root"-根设备,其它设备以设备的序列号表示 DH_MATRIX_SEARCH_CONDITON stuCondition; // 搜索条件, 可以为单一条件或组合 } DH_IN_MATRIX_SEARCH; ///@brief CLIENT_MatrixSearch 接口输出参数(搜索级联设备) typedef struct tagDH_OUT_MATRIX_SEARCH { DWORD dwSize; DH_REMOTE_DEVICE* pstuRemoteDevices; // 设备列表, 用户分配内存,大小为sizeof(DH_REMOTE_DEVICE)*nMaxDeviceCount int nMaxDeviceCount; // 设备列表最大值, 用户填写 int nRetDeviceCount; // 实际返回设备个数 } DH_OUT_MATRIX_SEARCH; ///@brief CLIENT_GetMatrixTree 接口输入参数 typedef struct tagDH_IN_GET_MATRIX_TREE { DWORD dwSize; const char* pSerialNo; // 搜索设备序列号,"Local"-本设备,"Root"-根设备,其它设备以设备的序列号表示 int nLevel; // 获得几级设备信息,0-整个设备树,1-本级设备,2-本级设备+本设备级联下一级设备, // 3-本级设备+本设备级联下一级设备+下一级设备的下一级设备 } DH_IN_GET_MATRIX_TREE; ///@brief 级联设备信息 typedef struct tagDH_CASCADE_DEVICE_INFO { DWORD dwSize; int nLevel; // 当前设备所属级数 char szPath[MAX_PATH]; // 设备所属路径,格式:name1.name2.name3... DH_REMOTE_DEVICE stuDeviceInfo; // 设备详细信息 } DH_CASCADE_DEVICE_INFO; ///@brief CLIENT_GetMatrixTree 接口输出参数 typedef struct tagDH_OUT_GET_MATRIX_TREE { DWORD dwSize; DH_CASCADE_DEVICE_INFO* pstuRemoteDevices; // 级联设备信息 int nMaxDeviceCount; // 级联设备信息最大值 int nRetDeviceCount; // 返回的实际设备个数 } DH_OUT_GET_MATRIX_TREE; ///@brief CLIENT_GetSuperiorMatrixList 接口输入参数 typedef struct tagDH_IN_GET_SUPERIOR_MATRIX_LIST { DWORD dwSize; } DH_IN_GET_SUPERIOR_MATRIX_LIST; ///@brief CLIENT_GetSuperiorMatrixList 接口输出参数 typedef struct tagDH_OUT_GET_SUPERIOR_MATRIX_LIST { DWORD dwSize; DH_REMOTE_DEVICE* pstuRemoteDevices; // 设备列表, 用户分配内存 int nMaxDeviceCount; // 设备列表最大值, 用户填写 int nRetDeviceCount; // 实际返回设备个数 } DH_OUT_GET_SUPERIOR_MATRIX_LIST; ////////////////////////////////录像备份恢复////////////////////////////////////// ///@brief 最后传递成功的数据包类型 typedef enum tagENUM_RECORDBACKUP_FILE_PROGRESS_TYPE { ENUM_RECORDBACKUP_FILE_PROGRESS_UNKNOWN, // 未知 ENUM_RECORDBACKUP_FILE_PROGRESS_HEADER_PACKAGE, // 文件头包 ENUM_RECORDBACKUP_FILE_PROGRESS_INDEX_PACKAGE, // 索引包 ENUM_RECORDBACKUP_FILE_PROGRESS_STREAM_PACKET, // 码流包 ENUM_RECORDBACKUP_FILE_PROGRESS_EMPTY_PACKET, // 文件尾空包 }ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE; ///@brief 录像备份进度 typedef struct tagNET_RECORD_BACKUP_PROGRESS { char szFilePath[256]; // 当前备份文件名 ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE emType; // 最后传递成功的数据包类型 int nPosition; // 最后传递成功的数据包位置 UINT nPercent; // 任务进度百分比,0-100 int nRemainingTime; // 任务预计剩余时长,单位秒。-1 – 未知; 0 – 完成; char szReserved[512]; // 保留字节 } NET_RECORD_BACKUP_PROGRESS; ///@brief 失败的原因 typedef enum tagEM_RECORD_BACKUP_FAIL_REASON { EM_RECORD_BACKUP_FAIL_REASON_UNKNOW, // 未知 EM_RECORD_BACKUP_FAIL_REASON_LOGIN_FAIL, // 登入失败 EM_RECORD_BACKUP_FAIL_REASON_NO_FILES, // 没有查询到录像 EM_RECORD_BACKUP_FAIL_REASON_DOWNLOAD_NET_ERROR, // 下载过程中网络断开 EM_RECORD_BACKUP_FAIL_REASON_UNKNOW_ERROR, // 未知错误 EM_RECORD_BACKUP_FAIL_REASON_USER_NAME_NOT_VALID, // 用户名无效 EM_RECORD_BACKUP_FAIL_REASON_PASSWORD_NOT_VALID, // 密码错误 EM_RECORD_BACKUP_FAIL_REASON_PEER_HAS_BEEN_BLOCKED, // 地址被屏蔽 EM_RECORD_BACKUP_FAIL_REASON_PEER_IN_BLOCK_LIST, // 地址在禁止访问名单内 EM_RECORD_BACKUP_FAIL_REASON_TOO_MANY_CONNECTIONS, // 超出最大连接数 EM_RECORD_BACKUP_FAIL_REASON_ACCOUNT_HAS_BEEN_BLOCKED, // 账号被锁定 EM_RECORD_BACKUP_FAIL_REASON_LOGIN_CONNECT_FAILED, // 登入时网络连接失败 EM_RECORD_BACKUP_FAIL_REASON_USER_OR_PWD_NOT_VALID, // 登入用户名或者密码错误 EM_RECORD_BACKUP_FAIL_REASON_LOGIN_CONNECT_TIMEOUT, // 登入超时 } EM_RECORD_BACKUP_FAIL_REASON; ///@brief 录像备份恢复任务信息 typedef struct tagDH_RECORD_BACKUP_RESTORE_TASK { DWORD dwSize; unsigned int nTaskID; // 任务ID char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID int nChannelID; // 通道号 NET_TIME stuStartTime; // 录像开始时间 NET_TIME stuEndTime; // 录像结束时间 int nState; // 当前备份状态, 0-等待, 1-进行中, 2-完成, 3-失败, 4-暂停 NET_RECORD_BACKUP_PROGRESS stuProgress; // 当前备份进度 EM_RECORD_BACKUP_FAIL_REASON emFailReason; // 失败的原因, 当nState字段为3的情况下有效; NET_TIME stuTaskStartTime; // 任务开始时间, nState为"进行中"、"已完成"、"失败"的情况下该时间点有效; NET_TIME stuTaskEndTime; // 任务结束时间, nState为"已完成"、"失败"的情况下该时间点有效; int nRemoteChannel; // 备份源通道 } DH_REC_BAK_RST_TASK; ///@brief CLIENT_AddRecordBackupRestoreTask接口输入参数 typedef struct tagDH_IN_ADD_RECORD_BACKUP_RESTORE_TASK { DWORD dwSize; const char* pszDeviceID; // 设备ID int* pnChannels; // 通道数组 int nChannelCount; // 通道数组大小,由用户申请内存,大小为sizeof(int)*nChannelCount NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 char szUrl[256]; // RTSP URL } DH_IN_ADD_REC_BAK_RST_TASK; ///@brief 远程录像备份录像类型 typedef enum tagENUM_RECORDBACKUP_FILE_TYPE { ENUM_RECORDBACKUP_FILE_COMMON, // 普通录像 ENUM_RECORDBACKUP_FILE_ALARM, // 报警录像 ENUM_RECORDBACKUP_FILE_MOTIONDETECT, // 动检录像 }ENUM_RECORDBACKUP_FILE_TYPE; ///@brief 远程录像备份 typedef struct tagNET_RECORDBACKUP_REMOTE_TASK { UINT nChannelCount; // 通道有效个数 UINT nChannels[512]; // 通道号数组 UINT nRemoteChannels[512]; // 远程通道号数组 char szDeviceIP[64]; // IP地址 UINT nPort; // 端口 char szUserName[64]; // 用户名 char szPassword[64]; // 密码 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 ENUM_RECORDBACKUP_FILE_TYPE emFileType; // 录像类型 NET_STREAM_TYPE emStreamType; // 视频码流 BYTE byReserved[512]; // 保留字段 }NET_RECORDBACKUP_REMOTE_TASK; ///@brief 任务ID信息 typedef struct tagNET_RECORDBACKUP_TASKID_INFO { UINT nTaskIDs[512]; // 通道任务ID UINT nTaskIDCount; // 通道任务ID有效个数 BYTE byReserved[1024];// 保留字段 }NET_RECORDBACKUP_TASKID_INFO; ///@brief CLIENT_AddRecordBackupRestoreRemoteTask 接口入参 typedef struct tagNET_IN_ADD_RECORDBACKUP_REMOTE_TASK { DWORD dwSize; int nTaskCount; // 任务有效个数, 最大支持16个 NET_RECORDBACKUP_REMOTE_TASK *pstuTask; // 任务信息, 由用户申请内存, 大小为 sizeof(NET_RECORDBACKUP_REMOTE_TASK)*nTaskCount }DH_IN_ADD_REC_BAK_RST_REMOTE_TASK; ///@brief CLIENT_AddRecordBackupRestoreRemoteTask 接口出参 typedef struct tagNET_OUT_ADD_RECORDBACKUP_REMOTE_TASK { DWORD dwSize; NET_RECORDBACKUP_TASKID_INFO *pstuID; // 任务ID信息, 由用户申请内存, 大小为 sizeof(NET_RECORDBACKUP_TASKID_INFO)*nTaskCount }DH_OUT_ADD_REC_BAK_RST_REMOTE_TASK; ///@brief CLIENT_RemoveRecordBackupRestoreTask接口输入参数 typedef struct tagDH_IN_REMOVE_RECORD_BACKUP_RESTORE_TASK { DWORD dwSize; unsigned int* pnTaskIDs; // 任务ID数组,由用户申请内存,大小为sizeof(int)*nTaskCount int nTaskCount; // 任务数量 } DH_IN_REMOVE_REC_BAK_RST_TASK; ///@brief CLIENT_QueryRecordBackupRestoreTask接口输入参数 typedef struct tagDH_IN_QUERY_RECORD_BACKUP_RESTORE_TASK { DWORD dwSize; } DH_IN_QUERY_REC_BAK_RST_TASK; ///@brief CLIENT_QueryRecordBackupRestoreTask接口输出参数 typedef struct tagDH_OUT_QUERY_RECORD_BACKUP_RESTORE_TASK { DWORD dwSize; DH_REC_BAK_RST_TASK* pTasks; // 任务数组,由用户申请内存,大小为sizeof(DH_REC_BAK_RST_TASK)*nMaxCount int nMaxCount; // 数组大小 int nReturnCount; // 返回的任务数量 } DH_OUT_QUERY_REC_BAK_RST_TASK; ///@brief 根据条件查询备份任务的查询方式 typedef enum tagEM_RECORD_BACKUP_FIND_TYPE { EM_RECORD_BACKUP_FIND_TYPE_UNKNOWN, // 未知 EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID, // 按照任务号查询 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME, // 按照通道和录制时间段查询 EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID, // 按照主动注册的设备ID查 } EM_RECORD_BACKUP_FIND_TYPE; ///@brief CLIENT_FindRecordBackupRestoreTaskInfos接口输入参数 typedef struct tagNET_IN_FIND_REC_BAK_RST_TASK { DWORD dwSize; EM_RECORD_BACKUP_FIND_TYPE emFindType; // 根据条件查询备份任务的查询方式 DWORD dwTaskID; // 任务ID,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID 时有效,否则无效 int nLocalChannelID; // 设备端本地通道号,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效 NET_TIME stuStartTime; // 备份录像的开始时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,为EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID时可选,否则无效 NET_TIME stuEndTime; // 备份录像的结束时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,为EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID时可选,否则无效 char szDeviceID[128]; // 主动注册的设备ID, emFindType为EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID时必选有效,否则无效 } NET_IN_FIND_REC_BAK_RST_TASK; ///@brief CLIENT_FindRecordBackupRestoreTaskInfos接口输出参数 typedef struct tagNET_OUT_FIND_REC_BAK_RST_TASK { DWORD dwSize; DH_REC_BAK_RST_TASK* pTasks; // 任务数组,由用户申请内存,大小为sizeof(DH_REC_BAK_RST_TASK)*nMaxCount int nMaxCount; // 数组大小 int nRetCount; // 返回的任务数量 } NET_OUT_FIND_REC_BAK_RST_TASK; ///@brief 视频源信息 typedef struct tagDH_LOGIC_DEVICE_ADD_CAMERA_PARAM { DWORD dwSize; const char* pszDeviceID; // 设备ID int nChannel; // 通道号 } DH_LOGIC_DEVICE_ADD_CAMERA_PARAM; ///@brief 添加视频源结果 typedef struct tagDH_LOGIC_DEVICE_ADD_CAMERA_RESULT { DWORD dwSize; char szDeviceID[DH_DEV_ID_LEN]; // 设备ID int nChannel; // 通道号 int nUniqueChannel; // 统一编号 int nFailedCode; // 失败码, 0-成功,1-Unique地址空间用完 2-已经添加 } DH_LOGIC_DEVICE_ADD_CAMERA_RESULT; ///@brief CLIENT_MatrixAddCameras 接口输入参数 typedef struct tagDH_IN_ADD_LOGIC_DEVICE_CAMERA { DWORD dwSize; DH_LOGIC_DEVICE_ADD_CAMERA_PARAM* pCameras; // 视频源信息数组,由用户申请内存,大小为sizeof(DH_LOGIC_DEVICE_ADD_CAMERA_PARAM)*nCameraCount int nCameraCount; // 视频源信息数量 } DH_IN_ADD_LOGIC_DEVICE_CAMERA; ///@brief CLIENT_MatrixAddCameras 接口输出参数 typedef struct tagDH_OUT_ADD_LOGIC_DEVICE_CAMERA { DWORD dwSize; DH_LOGIC_DEVICE_ADD_CAMERA_RESULT* pResults; // 添加视频源结果数组, 用户分配内存,大小为sizeof(DH_LOGIC_DEVICE_ADD_CAMERA_RESULT)*nMaxResultCount int nMaxResultCount; // 结果数组大小, 用户填写 int nRetResultCount; // 实际结果数量 } DH_OUT_ADD_LOGIC_DEVICE_CAMERA; ///@brief 视频源信息 typedef struct tagDH_LOGIC_BYDEVICE_ADD_CAMERA_PARAM { DWORD dwSize; int nUniqueChannel; // 统一编号 int nChannel; // 通道号 } DH_LOGIC_BYDEVICE_ADD_CAMERA_PARAM; ///@brief 添加视频源结果信息 typedef struct tagDH_LOGIC_BYDEVICE_ADD_CAMERA_RESULT { DWORD dwSize; int nUniqueChannel; // 统一编号 int nFailedCode; // 失败码, 0-成功,1-通道不支持设置 } DH_LOGIC_BYDEVICE_ADD_CAMERA_RESULT; ///@brief CLIENT_MatrixAddCamerasByDevice 接口输入参数 typedef struct tagDH_IN_ADD_LOGIC_BYDEVICE_CAMERA { DWORD dwSize; char pszDeviceID[DH_DEV_ID_LEN]; // 设备ID DH_REMOTE_DEVICE stuRemoteDevice; // 远程设备信息 int nCameraCount; // 视频源信息数量 DH_LOGIC_BYDEVICE_ADD_CAMERA_PARAM* pCameras; // 视频源信息数组,用户分配内存,大小为sizeof(DH_LOGIC_BYDEVICE_ADD_CAMERA_PARAM)*nCameraCount }DH_IN_ADD_LOGIC_BYDEVICE_CAMERA; ///@brief CLIENT_MatrixAddCamerasByDevice 接口输出参数 typedef struct tagDH_OUT_ADD_LOGIC_BYDEVICE_CAMERA { DWORD dwSize; char szDeviceID[DH_DEV_ID_LEN]; // 设备ID int nMaxResultCount; // 结果数组大小, 用户填写 int nRetResultCount; // 实际结果数量 DH_LOGIC_BYDEVICE_ADD_CAMERA_RESULT* pResults; // 添加视频源结果数组,用户分配内存,大小为sizeof(DH_LOGIC_BYDEVICE_ADD_CAMERA_RESULT)*nMaxResultCount }DH_OUT_ADD_LOGIC_BYDEVICE_CAMERA; ///@brief 输入通道类型 typedef enum tagEM_CAMERA_CHANNEL_TYPE { EM_CAMERA_CHANNEL_TYPE_UNKNOWN, // 未知 EM_CAMERA_CHANNEL_TYPE_LOCAL, // 本地通道(即物理通道) EM_CAMERA_CHANNEL_TYPE_REMOTE, // 远程通道 EM_CAMERA_CHANNEL_TYPE_RESERVED32, // 保留32通道数(兼容二代设备协议) EM_CAMERA_CHANNEL_TYPE_OUTPUT, // 输出通道 EM_CAMERA_CHANNEL_TYPE_MATRIX, // 模拟矩阵通道 EM_CAMERA_CHANNEL_TYPE_COMPOSE, // 合成通道 EM_CAMERA_CHANNEL_TYPE_CASCADE, // 光纤级联通道 } EM_CAMERA_CHANNEL_TYPE; ///@brief 视频源信息 typedef struct tagNET_CAMERA_INFO { int nUniqueChannel; // 统一编号, -1表示设备自动分配通道号 unsigned int nChannel; // 通道号 char szControlID[128]; // 控制编号, 键盘用户用,用编号定位通道,提高操作效率 BOOL bEnable; // 设备是否启用, 固定true char szName[128]; // 名称 char szDeviceID[128]; // 逻辑通道所属设备ID EM_CAMERA_CHANNEL_TYPE emChannelType; // 输入通道类型 EM_VIDEO_STREAM emVideoStream; // 视频码流 BYTE reserved[128]; // 保留字节 } NET_CAMERA_INFO; ///@brief 设备组信息 typedef struct tagNET_CAMERA_GROUP_INFO { char szDeviceID[DH_DEV_ID_LEN]; // 设备ID int nCameraCount; // 视频源信息数量 NET_CAMERA_INFO *pCameras; // 视频源信息数组,用户分配内存,大小为sizeof(NET_CAMERA_INFO)*nCameraCount DH_REMOTE_DEVICE stuRemoteDevice; // 远程设备信息, szDeviceID 没有值时有效 BYTE reserved[1024]; // 保留字节 } NET_CAMERA_GROUP_INFO; ///@brief CLIENT_MatrixAddCamerasByGroup (批量添加视频源) 接口输入参数 typedef struct tagNET_IN_ADD_LOGIC_BYGROUP_CAMERA { DWORD dwSize; int nCameraGroup; // 设备组个数 NET_CAMERA_GROUP_INFO *pstCameraGroupInfo; // 设备组信息 } NET_IN_ADD_LOGIC_BYGROUP_CAMERA; ///@brief 添加视频源组返回的视频源添加结果信息 typedef struct tagNET_ADD_BYGROUP_RESULT_CAMERA { unsigned int nUniqueChannel; // 统一编号 unsigned int nFailedCode; // 失败码, 0-成功,1-通道不支持设置 BYTE reserved[128]; // 保留字节 } NET_ADD_BYGROUP_RESULT_CAMERA; ///@brief 添加视频源组返回结果信息 typedef struct tagNET_ADD_BYGROUP_RESULT { char szDeviceID[DH_DEV_ID_LEN]; // 设备ID int nResultCam; // 视频源结果个数,与NET_CAMERA_GROUP_INFO 中的nCameraCount 一致 NET_ADD_BYGROUP_RESULT_CAMERA *pstResultCamera; // 返回的视频源结果信息 // 由用户分配内存,大小为sizoef(NET_ADD_BYGROUP_RESULT_CAMERA)*nRetResultCamera BYTE reserved[1024]; // 保留字节 } NET_ADD_BYGROUP_RESULT; ///@brief CLIENT_MatrixAddCamerasByGroup (批量添加视频源) 接口输出参数 typedef struct tagNET_OUT_ADD_LOGIC_BYGROUP_CAMERA { DWORD dwSize; int nGroupCount; // 返回的group结果个数,与NET_IN_ADD_LOGIC_BYGROUP_CAMERA 中的nCameraGroup一致 NET_ADD_BYGROUP_RESULT *pstAddByGroupResult; // 添加视频源组返回的结果数组 // 由用户分配内存, 大小为sizeof(NET_ADD_BYGROUP_RESULT)*nGroupCount } NET_OUT_ADD_LOGIC_BYGROUP_CAMERA; ///@brief CLIENT_MatrixGetCameraAllByGroup 接口输入参数 typedef struct tagNET_IN_GET_CAMERA_ALL_BY_GROUP { DWORD dwSize; // 结构体大小 EM_CAMERA_CHANNEL_TYPE emChannelType; // 输入通道类型 } NET_IN_GET_CAMERA_ALL_BY_GROUP; ///@brief CLIENT_MatrixGetCameraAllByGroup 接口输出参数 typedef struct tagNET_OUT_GET_CAMERA_ALL_BY_GROUP { DWORD dwSize; // 结构体大小 int nMaxCameraGroup; // 设备组最大个数, 最多为1024 int nCameraGroup; // 设备实际组个数 NET_CAMERA_GROUP_INFO *pstCameraGroupInfo; // 设备组信息 } NET_OUT_GET_CAMERA_ALL_BY_GROUP; ///@brief 设备组视频通道信息 typedef struct tagNET_DELETE_CAMERA_GROUP_INFO { char szDeviceID[DH_DEV_ID_LEN]; // 设备ID, 如果"uniqueChannels"数组大小为1,元素值为-1,则"DeviceID"必填,否则不需要填。 int nUniqueChannelNum; // unique通道号数量, 最多为1024 int szUniqueChannels[1024]; // unique通道号, 指向的数组大小为1,元素值为-1则表示删除设备下的所有通道 } NET_DELETE_CAMERA_GROUP_INFO; ///@brief CLIENT_MatrixDeleteCameraByGroup 接口输入参数 typedef struct tagNET_IN_DELETE_CAMERA_BY_GROUP { DWORD dwSize; // 结构体大小 int nCameraGroup; // 设备组实际个数 NET_DELETE_CAMERA_GROUP_INFO *pstCameraGroupInfo; // 设备组视频通道信息 } NET_IN_DELETE_CAMERA_BY_GROUP; ///@brief CLIENT_MatrixDeleteCameraByGroup 接口输出参数 typedef struct tagNET_OUT_DELETE_CAMERA_BY_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_CAMERA_BY_GROUP; ///@brief 获取设备接入通道状态类型 typedef enum tagEM_GET_VIDEO_INPUT_TYPE { EM_GET_VIDEO_INPUT_TYPE_UNKNOWN, // 未知 EM_GET_VIDEO_INPUT_TYPE_BANDWIDTH, // 设备带宽,对应 NET_VIDEO_INPUT_BANDWIDTH_INFO } EM_GET_VIDEO_INPUT_TYPE; ///@brief CLIENT_GetVideoInputInfo 接口输入参数 typedef struct tagNET_IN_GET_VIDEO_INPUT_INFO { DWORD dwSize; // 结构体大小 EM_GET_VIDEO_INPUT_TYPE emType; // 获取的状态信息类型 } NET_IN_GET_VIDEO_INPUT_INFO; ///@brief 视频通道接入带宽 typedef struct tagNET_VIDEO_INPUT_BANDWIDTH_INFO { double dbBandWidthLimit; // 总带宽,单位:Mbps double dbBandWidthLeft; // 带宽剩余,单位:Mbps BYTE byReserved[256]; // 保留字节 } NET_VIDEO_INPUT_BANDWIDTH_INFO; ///@brief CLIENT_GetVideoInputInfo 接口输出参数 typedef struct tagNET_OUT_GET_VIDEO_INPUT_INFO { DWORD dwSize; // 结构体大小 void* pInfo; // 获取到的信息,需要调用者分配内存,对应的指针类型参考EM_GET_VIDEO_INPUT_TYPE枚举中的说明 } NET_OUT_GET_VIDEO_INPUT_INFO; /************************************************************************/ /* 数据库记录操作 */ /************************************************************************/ #define MAX_ORDER_NUMBER 6 // 排序规则的最大数量 ///@brief 排序类型 typedef enum tagEM_RECORD_ORDER_TYPE { EM_RECORD_ORDER_TYPE_UNKNOWN, // 未知 EM_RECORD_ORDER_TYPE_ASCENT, // 升序 EM_RECORD_ORDER_TYPE_DESCENT // 降序 }EM_RECORD_ORDER_TYPE; ///@brief 权限列表 typedef struct tagNET_AUTHORITY_TYPE { DWORD dwSize; EM_NET_AUTHORITY_TYPE emAuthorityType; //权限类型 BOOL bAuthorityEnable; //权限使能 }NET_AUTHORITY_TYPE; ///@brief 交通禁止/允许名单记录信息 typedef struct tagNET_TRAFFIC_LIST_RECORD { DWORD dwSize; int nRecordNo; // 之前查询到的记录号 char szMasterOfCar[DH_MAX_NAME_LEN]; // 车主姓名 char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号码 EM_NET_PLATE_TYPE emPlateType; // 车牌类型 EM_NET_PLATE_COLOR_TYPE emPlateColor; // 车牌颜色 EM_NET_VEHICLE_TYPE emVehicleType; // 车辆类型 EM_NET_VEHICLE_COLOR_TYPE emVehicleColor; // 车身颜色 NET_TIME stBeginTime; // 开始时间 NET_TIME stCancelTime; // 撤销时间 int nAuthrityNum; // 权限个数 NET_AUTHORITY_TYPE stAuthrityTypes[DH_MAX_AUTHORITY_LIST_NUM];// 权限列表 , 允许名单仅有 EM_NET_TRAFFIC_CAR_CONTROL_TYPE emControlType; // 布控类型 ,禁止名单仅有 UINT nControlledRouteID; // 布控路线ID }NET_TRAFFIC_LIST_RECORD; ///@brief 交通禁止/允许名单账户记录查询条件 typedef struct { DWORD dwSize; char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号 char szPlateNumberVague[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号码模糊查询 int nQueryResultBegin; // 第一个条返回结果在查询结果中的偏移量 BOOL bRapidQuery; // 是否快速查询, TRUE:为快速,快速查询时不等待所有增、删、改操作完成。默认为非快速查询 }FIND_RECORD_TRAFFICREDLIST_CONDITION; ///@brief 嫌疑车辆上报事件, 对应事件类型 DH_ALARM_TRAFFIC_SUSPICIOUSCAR typedef struct tagALARM_TRAFFIC_SUSPICIOUSCAR_INFO { DWORD dwSize; int nAction; // 事件动作, -1:未知,0:Start, 1:Stop, 2:Pulse DH_MSG_OBJECT stuVehicle; // 车身信息 NET_TRAFFIC_LIST_RECORD stuCarInfo; // 车辆的禁止名单信息 EVENT_COMM_INFO stCommInfo; // 公共信息 }ALARM_TRAFFIC_SUSPICIOUSCAR_INFO; ///@brief 刻录案件记录查询条件 typedef struct { DWORD dwSize; NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 }FIND_RECORD_BURN_CASE_CONDITION; ///@brief 门禁卡记录查询条件 typedef struct tagFIND_RECORD_ACCESSCTLCARD_CONDITION { DWORD dwSize; char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 char szUserID[DH_MAX_USERID_LEN]; // 用户ID BOOL bIsValid; // 是否有效, TRUE:有效,FALSE:无效 BOOL abCardNo; // 卡号查询条件是否有效,针对成员 szCardNo BOOL abUserID; // 用户ID查询条件是否有效,针对成员 szUserID BOOL abIsValid; // IsValid查询条件是否有效,针对成员 bIsValid }FIND_RECORD_ACCESSCTLCARD_CONDITION; ///@brief 门禁密码记录查询条件 typedef struct tagFIND_RECORD_ACCESSCTLPWD_CONDITION { DWORD dwSize; char szUserID[DH_MAX_USERID_LEN]; // 用户ID }FIND_RECORD_ACCESSCTLPWD_CONDITION; ///@brief 门禁出入记录排序字段 typedef enum tagEM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD { EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_UNKNOWN = 0, // 未知 EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_RECNO, // 记录集编号 EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_CREATETIME, // 创建时间 }EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD; ///@brief 门禁出入记录排序规则详情 typedef struct tagFIND_RECORD_ACCESSCTLCARDREC_ORDER { EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD emField; // 排序字段 EM_RECORD_ORDER_TYPE emOrderType; // 排序类型 char byReverse[64]; // 保留字节 }FIND_RECORD_ACCESSCTLCARDREC_ORDER; ///@brief 门禁出入记录查询条件 typedef struct tagFIND_RECORD_ACCESSCTLCARDREC_CONDITION { DWORD dwSize; char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 }FIND_RECORD_ACCESSCTLCARDREC_CONDITION; ///@brief 门禁出入记录查询条件 typedef struct tagFIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX { DWORD dwSize; BOOL bCardNoEnable; // 启用卡号查询 char szCardNo[DH_MAX_CARDNO_LEN]; // 卡号 BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 int nOrderNum; // 规则数 FIND_RECORD_ACCESSCTLCARDREC_ORDER stuOrders[MAX_ORDER_NUMBER]; // 规则数组 BOOL bRealUTCTimeEnable; // 启动RealUTC时间查询, bRealUTCTimeEnable为TRUE时bTimeEnable无效 NET_TIME stuStartRealUTCTime; // 真实UTC起始时间 NET_TIME stuEndRealUTCTime; // 真实UTC结束时间 }FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX; ///@brief 监测量记录查询条件 typedef struct tagFIND_RECORD_SENSORRECORD_CONDITION { DWORD dwSize; NET_TIME stStartTime; // 采集时间段查询的开始时间,必填 NET_TIME stEndTime; // 采集时间段查询的结束时间,必填 UINT uDeviceID; // 采集设备ID号,uint_32类型。高8位表示仪表类型,低24位表示仪表组内序号。仪表类型如下:0-电力; 1-模拟传感器。选填,0xffff表示数据无效 BOOL bDeviceIDEnable; // 启用采集设备ID查询 BOOL bStatusEnable; // 启用数据状态查询 BYTE byStatus; // 数据状态0:正常,1:异常,选填。0xff表示无状态 BYTE byReserved[3]; // 保留字节 } FIND_RECORD_SENSORRECORD_CONDITION; ///@brief 假日记录集查询条件 typedef struct tagFIND_RECORD_ACCESSCTLHOLIDAY_CONDITION { DWORD dwSize; char szHolidayNo[DH_COMMON_STRING_32]; // 假期编号 }FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION; ///@brief 电子车牌查询条件 typedef struct tagFIND_RECORD_ELECTRONICSTAG_CONDITION { DWORD dwSize; NET_TIME stStartTime; // 根据过车时间段查询的开始时间, 必填 NET_TIME stEndTime; // 根据过车时间段查询的结束时间, 必填 BOOL abDevId; // 读写器序号查询条件是否有效 UINT unDevID; // 根据读写器设备序号查询,从0开始, 可选 BOOL abMatchPic; // 图片匹配查询条件是否有效 BOOL bMatch; // 根据是否匹配了图片查询, 可选 BOOL abPlateNumber; // 车牌查询条件是否有效 char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 根据车牌查询, 可选 } FIND_RECORD_ELECTRONICSTAG_CONDITION; ///@brief 公租信息查询 typedef struct tagFIND_RECORD_RESIDENT_CONDTION { DWORD dwSize; char szICNum[DH_MAX_IC_LEN]; // 证件号 }FIND_RECORD_RESIDENT_CONDTION; ///@brief 交通流量记录查询条件 typedef struct tagFIND_RECORD_TRAFFICFLOW_CONDITION { DWORD dwSize; BOOL abChannelId; // 通道号查询条件是否有效 int nChannelId; // 通道号 BOOL abLane; // 车道号查询条件是否有效 int nLane; // 车道号 BOOL bStartTime; // 开始时间查询条件是否有效 NET_TIME stStartTime; // 开始时间 BOOL bEndTime; // 结束时间查询条件是否有效 NET_TIME stEndTime; // 结束时间 BOOL bStatisticsTime; // 查询是否为统计时间,bStartTime及bEndTime均为TRUE }FIND_RECORD_TRAFFICFLOW_CONDITION; #define DH_MAX_CALLTYPE_LIST_NUM 16 // 呼叫类型查询条件列表最大个数 #define DH_MAX_ENDSTATE_LIST_NUM 16 // 最终状态查询条件列表最大个数 ///@brief 通话记录查询条件 typedef struct tagFIND_RECORD_VIDEO_TALK_LOG_CONDITION { DWORD dwSize; BOOL bCallTypeEnable; // 呼叫类型查询条件是否有效 int nCallTypeListNum; // 对应 emCallTypeList 中有效枚举个数 EM_VIDEO_TALK_LOG_CALLTYPE emCallTypeList[DH_MAX_CALLTYPE_LIST_NUM]; // 呼叫类型使能列表 BOOL bEndStateEnable; // 最终状态查询条件是否有效 int nEndStateListNum; // 对应 emEndStateList 中有效枚举个数 EM_VIDEO_TALK_LOG_ENDSTATE emEndStateList[DH_MAX_ENDSTATE_LIST_NUM]; // 最终状态使能列表 BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // 起始时间 NET_TIME stEndTime; // 结束时间 }FIND_RECORD_VIDEO_TALK_LOG_CONDITION; ///@brief 状态记录查询条件 typedef struct tagFIND_RECORD_REGISTER_USER_STATE_CONDITION { DWORD dwSize; BOOL bUserIDEnable; // 用户ID查询条件是否有效 char szUserID[DH_MAX_USERID_LEN]; // 用户ID BOOL bOnlineEnable; // 是否在线查询条件是否有效 int nOnline; // 是否在线 BOOL bVideoTalkingEnable; // 语音对讲状态查询条件是否有效 EM_REGISTER_USER_STATE emVideoTalking; // 语音对讲状态 }FIND_RECORD_REGISTER_USER_STATE_CONDITION; ///@brief 联系人记录查询条件 typedef struct tagFIND_RECORD_VIDEO_TALK_CONTACT_CONDITION { DWORD dwSize; BOOL bVTShortNumberEnable; // 可视对讲短号查询条件是否有效 char szVTShortNumber[DH_COMMON_STRING_32]; // 可视对讲短号 BOOL bVTLongNumberEnable; // 可视对讲长号查询条件是否有效 char szVTLongNumber[DH_COMMON_STRING_64]; // 可视对讲长号 }FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION; ///@brief 医院人员信息表查询条件 typedef struct tagFIND_RECORD_HOSPITAL_USER_CONDITION { DWORD dwSize; char szID[32]; // 人员ID }FIND_RECORD_HOSPITAL_USER_CONDITION; ///@brief 医院设备信息表查询条件 typedef struct tagFIND_RECORD_HOSPITAL_DEVICE_CONDITION { DWORD dwSize; char szDeviceCode[64]; // 设备编号 }FIND_RECORD_HOSPITAL_DEVICE_CONDITION; ///@brief 下发商品记录查询条件 typedef struct tagFIND_RECORD_COMMODITY_NOTICE_CONDITION { DWORD dwSize; BOOL bIDEnable; // ID号查询条件是否有效 char szID[DH_COMMON_STRING_64]; // ID号 }FIND_RECORD_COMMODITY_NOTICE_CONDITION; ///@brief 就诊信息记录查询条件 typedef struct tagFIND_RECORD_HEALTH_CARE_NOTICE_CONDITION { DWORD dwSize; BOOL bIDEnable; // ID号查询条件是否有效 char szID[DH_COMMON_STRING_64]; // ID号 }FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION; ///@brief 交通流量记录 typedef struct tagNET_RECORD_TRAFFIC_FLOW_STATE { DWORD dwSize; int nRecordNum; // 记录编号 int nChannel; // 通道号 int nLane; // 车道号 int nVehicles; // 通过车辆总数 float fAverageSpeed; // 平均车速,单位km/h float fTimeOccupyRatio; // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例 float fSpaceOccupyRatio; // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离 float fSpaceHeadway; // 车头间距,相邻车辆之间的距离,单位米/辆 float fTimeHeadway; // 车头时距,单位秒/辆 int nLargeVehicles; // 大车交通量(9米<车长<12米),辆/单位时间 int nMediumVehicles; // 中型车交通量(6米<车长<9米),辆/单位时间 int nSmallVehicles; // 小车交通量(4米<车长<6米),辆/单位时间, float fBackOfQueue; // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离 int nPasserby; // 通过行人数 }NET_RECORD_TRAFFIC_FLOW_STATE; ///@brief CLIENT_FindRecord接口输入参数 typedef struct _NET_IN_FIND_RECORD_PARAM { DWORD dwSize; // 结构体大小 EM_NET_RECORD_TYPE emType; // 待查询记录类型 void* pQueryCondition; // 查询类型对应的查询条件 // 由用户申请内存,根据查询记录类型,找到查询条件对应的结构体,进而确定内存大小 }NET_IN_FIND_RECORD_PARAM; ///@brief CLIENT_FindRecord接口输出参数 typedef struct _NET_OUT_FIND_RECORD_PARAM { DWORD dwSize; // 结构体大小 LLONG lFindeHandle; // 查询记录句柄,唯一标识某次查询 }NET_OUT_FIND_RECORD_PARAM; ///@brief CLIENT_FindNextRecord接口输入参数 typedef struct _NET_IN_FIND_NEXT_RECORD_PARAM { DWORD dwSize; // 结构体大小 LLONG lFindeHandle; // 查询句柄 int nFileCount; // 当前想查询的记录条数 }NET_IN_FIND_NEXT_RECORD_PARAM; ///@brief CLIENT_FindNextRecord接口输出参数 typedef struct _NET_OUT_FIND_NEXT_RECORD_PARAM { DWORD dwSize; // 结构体大小 void* pRecordList; // 记录列表,用户分配内存,根据NET_IN_FIND_RECORD_PARAM中的查询类型EM_NET_RECORD_TYPE,确定对应结构体,进入确定内存大小 int nMaxRecordNum; // 最大查询列表记录数 int nRetRecordNum; // 查询到的记录条数,当查询到的条数小于想查询的条数时,查询结束 }NET_OUT_FIND_NEXT_RECORD_PARAM; ///@brief 增加记录操作 typedef struct tagNET_INSERT_RECORD_INFO { DWORD dwSize; NET_TRAFFIC_LIST_RECORD *pRecordInfo; // 记录内容信息,由用户分配内存,大小为sizeof(NET_TRAFFIC_LIST_RECORD) }NET_INSERT_RECORD_INFO; ///@brief 更新记录操作 typedef struct tagNET_UPDATE_RECORD_INFO { DWORD dwSize; NET_TRAFFIC_LIST_RECORD *pRecordInfo; // 记录内容信息,由用户分配内存,大小为sizeof(NET_TRAFFIC_LIST_RECORD) }NET_UPDATE_RECORD_INFO; ///@brief 删除记录操作 typedef struct tagNET_REMOVE_RECORD_INFO { DWORD dwSize; int nRecordNo; // 之前查询到的记录号 }NET_REMOVE_RECORD_INFO; ///@brief CLIENT_OperateTrafficList输入参数 typedef struct tagNET_IN_OPERATE_TRAFFIC_LIST_RECORD { DWORD dwSize; EM_RECORD_OPERATE_TYPE emOperateType; // 操作类型 EM_NET_RECORD_TYPE emRecordType; // 要操作的记录信息类型(仅NET_RECORD_TRAFFICREDLIST和NET_RECORD_TRAFFICBLACKLIST有效) void *pstOpreateInfo; // 由用户申请内存,参照操作类型emOperateType,得到操作类型对应的结构体,进而确定对应的内存大小 }NET_IN_OPERATE_TRAFFIC_LIST_RECORD; ///@brief 现阶段实现的操作接口中,只有返回nRecordNo的操作,stRetRecord暂时不可用 typedef struct tagNET_OUT_OPERATE_TRAFFIC_LIST_RECORD { DWORD dwSize; int nRecordNo; //记录号 }NET_OUT_OPERATE_TRAFFIC_LIST_RECORD; ///@brief 持续控制云台对应结构 typedef struct tagPTZ_Control_Continuously { PTZ_SPEED_UNIT stuSpeed; //云台运行速度 int nTimeOut; //连续移动超时时间,单位为秒 char szReserve[64]; //预留64字节 }PTZ_CONTROL_CONTINUOUSLY; ///@brief 绝对控制云台对应结构 typedef struct tagPTZ_Control_Absolutely { PTZ_SPACE_UNIT stuPosition; //云台绝对移动位置 PTZ_SPEED_UNIT stuSpeed; //云台运行速度 char szReserve[64]; //预留64字节 }PTZ_CONTROL_ABSOLUTELY; ///@brief 云台控制坐标,持续移动 typedef struct tagPTZ_LOCATION_SPACE_UNIT { int nPositionX; //云台水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示。(3600表示水平不定位) int nPositionY; //云台垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。(3600表示垂直不定位) int nZoom; //云台真实倍率变倍参数,无范围限定(超过机芯最大倍率时只变倍至机芯最大倍率),表示最小倍到最大倍的变倍位置,扩大10倍表示 char szReserve[32]; //预留32字节 }PTZ_LOCATION_SPACE_UNIT; ///@brief 云台控制坐标,速度单元 typedef struct tagPTZ_LOCATION_SPEED_UNIT { int nSpeedX; //云台水平角速度的真实值,无范围限定(超过云台最大速度时以云台最大速度移动),左为负、右为正,1000代表10°/s,扩大100倍表示 int nSpeedY; //云台垂直角速度的真实值,无范围限定(超过云台最大速度时以云台最大速度移动),上为负、下为正,1000代表10°/s,扩大100倍表示 char szReserve[32]; //预留32字节 }PTZ_LOCATION_SPEED_UNIT; ///@brief 云台连续移动,枪球球联动专用对应结构 DH_EXTPTZ_INTELLI_TRACKMOVE typedef struct tagPTZ_CONTROL_INTELLI_TRACKMOVE { DWORD dwSize; int nChannelID; // 通道号 int nFlag; // 移动标识位 //0:起始locate定位使用,speed速度无效,position的变倍值有效 //1:持续跟踪移动使用,speed速度无效,position的变倍值无效 //2:持续跟踪移动使用,speed速度有效,position的变倍值无效 PTZ_LOCATION_SPACE_UNIT stuPosition; // 云台绝对移动位置 PTZ_LOCATION_SPEED_UNIT stuSpeed; // 云台运行速度 }PTZ_CONTROL_INTELLI_TRACKMOVE; ///@brief 设置聚焦模式 DH_EXTPTZ_INTELLI_SETLENSWISDOMSTATE typedef struct tagPTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nMode; // 0: 普通场景模式(不设置时默认0) // 1: 智能跟踪场景模式 }PTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE; ///@brief 设置聚焦区域 DH_EXTPTZ_INTELLI_SETFOCUSAREA typedef struct tagPTZ_CONTROL_INTELLI_SETFOCUSAREA { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nState; // 目标跟踪时的聚焦区域有效标志位 // 1:设置聚焦区域 // 0:取消聚焦区域 NET_RECT stuRect; // 聚焦区域, 使用相对坐标0~8191 }PTZ_CONTROL_INTELLI_SETFOCUSAREA; ///@brief 辅助开关,辅助点对应结构 DH_EXTPTZ_AUXIOPEN,DH_EXTPTZ_AUXICLOSE,云台控制接口CLIENT_DHPTZControlEx2 typedef struct tagPTZ_CONTROL_AUXILIARY { DWORD dwSize; char szFunctionName[DH_COMMON_STRING_32]; // 云台辅助功能名称,通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO ), }PTZ_CONTROL_AUXILIARY; ///@brief 报警输入通道信息 typedef struct tagNET_ALARM_IN_CHANNEL { DWORD dwSize; BOOL bValid; // 是否有效, FALSE表示该报警通道没有使用 int nChannel; // 报警通道号 char szDeviceID[DH_DEV_ID_LEN]; // 设备ID, 本地报警通道: "Local", 远程设备: 使用uuid表示 char szName[DH_DEV_NAME_LEN]; // 报警通道名称 }NET_ALARM_IN_CHANNEL; ///@brief 报警通道数 typedef struct tagNET_ALARM_CHANNEL_COUNT { DWORD dwSize; int nLocalAlarmIn; // 本地报警输入通道数 int nLocalAlarmOut; // 本地报警输出通道数 int nRemoteAlarmIn; // 远程报警输入通道数 int nRemoteAlarmOut; // 远程报警输出通道数 }NET_ALARM_CHANNEL_COUNT; ///@brief 带速度转动到预置位点云台控制对应结构 typedef struct tagPTZ_Control_GotoPreset { int nPresetIndex; //预置位索引 PTZ_SPEED_UNIT stuSpeed; //云台运行速度 char szReserve[64]; //预留64字节 }PTZ_CONTROL_GOTOPRESET; ///@brief 删除预置位点云台控制对应结构 typedef struct tagPTZ_Control_RemovePreset { int nPresetIndex; //预置位索引 char szReserve[64]; //预留64字节 }PTZ_CONTROL_REMOVEPRESET; ///@brief 带速度转动到预置位点后抓图云台控制对应结构 typedef struct tagPTZ_Control_GotoPresetSnap { int nPresetIndex; //预置位索引 int nChannel; //通道号 PTZ_SPEED_UNIT stuSpeed; //云台运行速度 char szReserve[64]; //预留64字节 }PTZ_CONTROL_GOTOPRESETSNAP; ///@brief CLIENT_SetTourSource 接口输入参数(设置窗口轮巡显示源) typedef struct tagNET_IN_SET_TOUR_SOURCE { DWORD dwSize; int nChannel; // 输出通道号 int nWindow; // 窗口号 DH_SPLIT_SOURCE* pstuSrcs; // 显示源数组, 可进行窗口轮巡,由用户申请内存,大小为sizeof(DH_SPLIT_SOURCE)*nSrcCount int nSrcCount; // 显示源数量 } NET_IN_SET_TOUR_SOURCE; ///@brief CLIENT_SetTourSource 接口输出参数(设置窗口轮巡显示源) typedef struct tagNET_OUT_SET_TOUR_SOURCE { DWORD dwSize; } NET_OUT_SET_TOUR_SOURCE; ///@brief CLIENT_GetTourSource 接口输入参数 typedef struct tagNET_IN_GET_TOUR_SOURCE { DWORD dwSize; int nChannel; // 输出通道号, pszCompsiteID为NULL时有效 const char* pszCompositeID; // 拼接屏ID int nWindow; // 窗口号, -1表示所有窗口 } NET_IN_GET_TOUR_SOURCE; ///@brief 窗口轮巡显示源信息 typedef struct tagNET_SPLIT_TOUR_SOURCE { DWORD dwSize; DH_SPLIT_SOURCE* pstuSrcs; // 显示源数组, 用户分配内存,大小为sizeof(DH_SPLIT_SOURCE)*nMaxSrcCount int nMaxSrcCount; // 显示源最大数量 int nRetSrcCount; // 返回的显示源数量 } NET_SPLIT_TOUR_SOURCE; ///@brief CLIENT_GetTourSource 接口输出参数 typedef struct tagNET_OUT_GET_TOUR_SOURCE { DWORD dwSize; NET_SPLIT_TOUR_SOURCE* pstuWndSrcs; // 窗口轮巡信息数组, 用户分配内存,大小为sizeof(NET_SPLIT_TOUR_SOURCE)*nMaxWndCount int nMaxWndCount; // 窗口最大数组, 用户填写 int nRetWndCount; // 返回的窗口数量 } NET_OUT_GET_TOUR_SOURCE; ///@brief 分割轮巡状态信息 typedef struct tagNET_SPLIT_TOUR_STATUS_INFO { DWORD dwSize; int nWindow; // 窗口号 NET_TOUR_STATUS emStatus; // 状态 DH_SPLIT_WND_SOURCE stuSource; // 当前显示源信息 }NET_SPLIT_TOUR_STATUS_INFO; ///@brief 轮巡状态回调函数原形, lAttachHandle是CLIENT_AttachSplitTour的返回值 typedef void (CALLBACK *fTourStatusCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_SPLIT_TOUR_STATUS_INFO* pstStatus, void* reserved, LDWORD dwUser); ///@brief CLIENT_AttachSplitTour接口输入参数 typedef struct tagNET_IN_ATTACH_SPLIT_TOUR { DWORD dwSize; int nChannel; // 输出通道号, pszCompsiteID为NULL时有效 const char* pszCompositeID; // 拼接屏ID fTourStatusCallBack cbStatus; // 轮巡状态回调函数 LDWORD dwUser; // 轮巡状态回调参数 }NET_IN_ATTACH_SPLIT_TOUR; ///@brief CLIENT_AttachSplitTour接口输出参数 typedef struct tagNET_OUT_ATTACH_SPLIT_TOUR { DWORD dwSize; }NET_OUT_ATTACH_SPLIT_TOUR; ///@brief 窗口工作模式 typedef enum tagEM_WINDOW_WORKMODE { EM_WINDOW_DISPLAY, // 预览模式(默认) EM_WINDOW_REPLAY, // 回放模式 } EM_WINDOW_WORKMODE; ///@brief 各窗口显示源信息 typedef struct tagNET_SOURCE_INFO { int nWindowID; // 当前窗口号 int nCaremaChannel; // 当前视频源通道号 NET_TIME stuStartTime; // 开始播放的时间 EM_WINDOW_WORKMODE emWorkMode; // 窗口工作模式 BYTE bReserved[128]; // 保留字节 }NET_SOURCE_INFO; ///@brief 窗口视频源信息 typedef struct tagNET_WINDOW_SOURCE_INFO { DWORD dwSize; int nRetSrcCount; // 实际显示源个数 NET_SOURCE_INFO *pstSourceInfo; // 各窗口显示源信息 } NET_WINDOW_SOURCE_INFO; ///@brief 窗口视频源信息回调函数原形, lAttachHandle是CLIENT_AttachWindowsSource的返回值 typedef void (CALLBACK *fWindowSourceCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_WINDOW_SOURCE_INFO* pstWindowSource, void* reserved, LDWORD dwUser); ///@brief CLIENT_AttachWindowsSource接口入参 typedef struct tagNET_IN_ATTACH_WINDOW_SOURCE { DWORD dwSize; int nWindowID; // 窗口ID,-1表示整个屏幕 int nChannel; // 输出通道号, pszCompsiteID为NULL时有效 const char* pszCompositeID; // 拼接屏ID fWindowSourceCallBack cbWindowSource; // 窗口视频源回调函数 LDWORD dwUser; // 窗口视频源回调参数 } NET_IN_ATTACH_WINDOW_SOURCE; ///@brief CLIENT_AttachWindowsSource接口输出参数 typedef struct tagNET_OUT_ATTACH_WINDOW_SOURCE { DWORD dwSize; }NET_OUT_ATTACH_WINDOW_SOURCE; ///@brief CLIENT_WindowRegionEnlarge接口输入参数 typedef struct tagNET_IN_WINDOW_REGION_ENLARGE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindowID; // 窗口ID NET_RECT stuRect; // 画面放大区域,坐标系为虚拟坐标系,0~8191 } NET_IN_WINDOW_REGION_ENLARGE; ///@brief CLIENT_WindowRegionEnlarge接口输出参数 typedef struct tagNET_OUT_WINDOW_REGION_ENLARGE { DWORD dwSize; } NET_OUT_WINDOW_REGION_ENLARGE; ///@brief CLIENT_WindowEnlargeReduction接口输入参数 typedef struct tagNET_IN_WINDOW_ENLARGE_REDUCTION { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindowID; // 窗口ID } NET_IN_WINDOW_ENLARGE_REDUCTION; ///@brief CLIENT_WindowEnlargeReduction接口输出参数 typedef struct tagNET_OUT_WINDOW_ENLARGE_REDUCTION { DWORD dwSize; } NET_OUT_WINDOW_ENLARGE_REDUCTION; ///@brief 鼠标操作类型 typedef enum tagEM_MOUSE_OPREATE_TYPE { EM_MOUSE_OPREATE_LEFT_PRESS = 1, // 左键按下 EM_MOUSE_OPREATE_LEFT_RELEASE, // 左键松开 EM_MOUSE_OPREATE_RIGHT_PRESS, // 右键按下 EM_MOUSE_OPREATE_RIGHT_RELEASE, // 右键松开 EM_MOUSE_OPREATE_MOUSE_MOVE, // 鼠标移动 EM_MOUSE_OPREATE_MOUSE_SCROLL, // 鼠标滚动 } EM_MOUSE_OPREATE_TYPE; ///@brief 鼠标按钮标记 typedef enum tagEM_MOUSE_FLAG_TYPE { EM_MOUSE_FLAG_LEFT = 0, // 鼠标左边按钮 EM_MOUSE_FLAG_RIGHT, // 鼠标右边按钮 } EM_MOUSE_FLAG_TYPE; ///@brief CLIENT_SplitOnButtonAction接口输入参数 typedef struct tagNET_IN_WINDOW_ONBUTTON_ACTION { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindowID; // 窗口ID EM_MOUSE_OPREATE_TYPE emOpreateType; // 鼠标操作类型 EM_MOUSE_FLAG_TYPE emMouseFlag; // 鼠标按钮标记 int nZDelta; // 鼠标滚动速度, 大于0表示向前滚动,小于0表示向后滚动,等于0表示没有滚动操作 DH_POINT stuMousePoint; // 鼠标在窗口中的位置坐标 } NET_IN_WINDOW_ONBUTTON_ACTION; ///@brief CLIENT_SplitOnButtonAction接口输出参数 typedef struct tagNET_OUT_WINDOW_ONBUTTON_ACTION { DWORD dwSize; } NET_OUT_WINDOW_ONBUTTON_ACTION; ///@brief 窗口批注状态 typedef enum tagEM_WINDOW_ANNOTATION_STATE_TYPE { EM_ANNOTATION_STATE_TYPE_UNKNOWN, // 未知 EM_ANNOTATION_STATE_TYPE_START, // 批注开始 EM_ANNOTATION_STATE_TYPE_CONTINUE, // 批注中 EM_ANNOTATION_STATE_TYPE_END, // 批注完成 }EM_WINDOWS_ANNOTATION_STATE_TYPE; ///@brief 设置设备窗口批注,CLIENT_WindowSetAnnotation 入参 typedef struct tagNET_IN_WINIDOW_SET_ANNOTATION { DWORD dwSize; // 结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindowID; // 窗口ID NET_POINT stuAnnotationPoint; // 批注划线坐标【坐标范围:0~8191】 EM_WINDOWS_ANNOTATION_STATE_TYPE emAnnotationState; // 窗口批注状态 int nAnnotationThickness; // 批注线条粗细【范围:1-3 (1表示最细)】 NET_COLOR_RGBA stuAnnotationColor; // 批注划线颜色【各级颜色亮度范围:0~255】 }NET_IN_WINDOW_SET_ANNOTATION; ///@brief 设置窗口批注, CLIENT_WindowSetAnnotation 出参 typedef struct tagNET_OUT_WINDOW_SET_ANNOTATION { DWORD dwSize; // 结构体大小 }NET_OUT_WINDOW_SET_ANNOTATION; ///@brief 清除窗口所有批注,入参 typedef struct tagNET_IN_WINDOW_CLEAR_ANNOTATION { DWORD dwSize; // 结构体大小 int nChannel; // 输出通道号或融合屏虚拟通道号 int nWindowID; // 窗口ID BYTE byReserved[4]; // 字节对齐 }NET_IN_WINDOW_CLEAR_ANNOTATION; ///@brief 清除窗口所有批注,出参 typedef struct tagNET_OUT_WINDOW_CLEAR_ANNOTATION { DWORD dwSize; // 结构体大小 }NET_OUT_WINDOW_CLEAR_ANNOTATION; ///@brief fAttachRecordInfoCB 参数, 上报的录像文件信息 typedef struct tagNET_CB_RECORD_INFO { DWORD dwSize; int nChannel; // 通道号 char szFileName[MAX_PATH]; // 录像名称 DWORD dwType; // 录像类型, 按位定义如下: // Bit0-定时录像 // Bit1-动态检测录像 // Bit2-报警录像 // Bit3-卡号录像 DWORD dwState; // 录像状态, 0-打包, 1-删除 } NET_CB_RECORD_INFO; ///@brief 录像更新回调函数原形,lAttachHandle是CLIENT_AttachRecordInfo的返回值, 每次n条,pBuf->dwSize * n == nBufLen typedef void (CALLBACK *fAttachRecordInfoCB)(LLONG lLoginID, LLONG lAttachHandle, NET_CB_RECORD_INFO* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachRecordInfo 输入参数 typedef struct tagNET_IN_ATTACH_RECORD_INFO { DWORD dwSize; int nInterval; // 时间间隔, 设备每隔nInterval秒, 发送录像信息 int nDelay; // 上报延时, 设备在1和nDelay值间选择随机数后,延迟上报录像状态, nDelay必须小于nInterval fAttachRecordInfoCB cbAttachRecordInfo; // 录像更新回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_RECORD_INFO; ///@brief CLIENT_AttachRecordInfo 输出参数 typedef struct tagNET_OUT_ATTACH_RECORD_INFO { DWORD dwSize; } NET_OUT_ATTACH_RECORD_INFO; ///@brief 订阅云台元数据接口回调函数原型 // pBuf 现阶段主要为 DH_PTZ_LOCATION_INFO 类型 typedef void (CALLBACK *fPTZStatusProcCallBack)(LLONG lLoginID, LLONG lAttachHandle, void* pBuf, int nBufLen, LDWORD dwUser); ///@brief 订阅云台元数据接口输入参数 typedef struct tagNET_IN_PTZ_STATUS_PROC { DWORD dwSize; int nChannel; // 云台通道 fPTZStatusProcCallBack cbPTZStatusProc; // 状态回调函数 LDWORD dwUser; // 用户数据 }NET_IN_PTZ_STATUS_PROC; ///@brief 订阅云台元数据接口输输出参数 typedef struct tagNET_OUT_PTZ_STATUS_PROC { DWORD dwSize; }NET_OUT_PTZ_STATUS_PROC; ///@brief 云台可视域状态结构 typedef struct tagDH_OUT_PTZ_VIEW_RANGE_STATUS { DWORD dwSize; double dbDistance; // 可视距离, 单位:米 int nAngelH; // 水平可视角度, 0~1800, 单位:十分之一度 int nAzimuthH; // 水平方位角度, 0~3600, 单位:十分之一度 int nInclinationH; // 水平倾斜角度, -900~900, 单位:十分之一度 int nAngelV; // 垂直可视角度, 0~1800, 单位:十分之一度 int nAzimuthV; // 垂直方位角度, 0~3600, 单位:十分之一度 }DH_OUT_PTZ_VIEW_RANGE_STATUS; ///@brief 订阅云台可视域回调函数原型 typedef void (CALLBACK *fViewRangeStateCallBack)(LLONG lLoginID, LLONG lAttachHandle, DH_OUT_PTZ_VIEW_RANGE_STATUS* pBuf, int nBufLen, LDWORD dwUser); ///@brief 订阅可视域输入参数 typedef struct tagNET_IN_VIEW_RANGE_STATE { DWORD dwSize; int nChannel; // 云台通道 fViewRangeStateCallBack cbViewRange; // 状态回调函数 LDWORD dwUser; // 用户数据 }NET_IN_VIEW_RANGE_STATE; ///@brief 订阅可视域输出参数 typedef struct tagNET_OUT_VIEW_RANGE_STATE { DWORD dwSize; }NET_OUT_VIEW_RANGE_STATE; ///@brief 气象信息结构 typedef struct tagNET_WEATHER_INFO { float fWindSpeed; // 风速,单位m/s, 范围[0.0,60.0] float fTemperature; // 温度,单位摄氏度,范围[-40.0,+80.0] float fHumidity; // 后缀%,范围[0.0,100.0] unsigned int nLight; // 光照,单位W/(m*m),范围[0,2000] float fWindDirection; // 风向,单位度,范围[0,360) float fAirPressure; // 气压,单位百帕,范围[10~1100] int nRainfall; // 累计雨量,单位0.01mm BYTE byReserved[2044]; // 保留字节 }NET_WEATHER_INFO; ///@brief 订阅气象信息回调函数原型 typedef void (CALLBACK *fWeatherInfoCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_WEATHER_INFO* pBuf, int nBufLen, LDWORD dwUser); ///@brief 订阅气象信息输入参数 typedef struct tagNET_IN_WEATHER_INFO { DWORD dwSize; int nChannel; // 云台通道 fWeatherInfoCallBack cbWeatherInfo; // 回调函数 LDWORD dwUser; // 用户数据 }NET_IN_WEATHER_INFO; ///@brief 订阅气象信息输出参数 typedef struct tagNET_OUT_WEATHER_INFO { DWORD dwSize; }NET_OUT_WEATHER_INFO; ///@brief 根据物距、物体大小及占屏比设置可视域 输入参数 typedef struct tagNET_IN_SET_VIEW_RANGE_BY_OBJECT { DWORD dwSize; int nChannel; // 通道号 int nDistance; // 物体距离 (单位:厘米) int nWidth; // 物体宽度 (单位:厘米) int nScreenRatio; // 物体占屏比(单位:厘米) }NET_IN_SET_VIEW_RANGE_BY_OBJECT; ///@brief 根据物距、物体大小及占屏比设置可视域 输出参数 typedef struct tagNET_OUT_SET_VIEW_RANGE_BY_OBJECT { DWORD dwSize; }NET_OUT_SET_VIEW_RANGE_BY_OBJECT; ///@brief 根据目标GPS位置设置可视域 输入参数(CLIENT_SetViewRangeByGPS) typedef struct tagNET_IN_SET_VIEW_RANGE_BY_GPS { DWORD dwSize; int nChannel; // 通道号 double dLongitude; // 经度,[-180, 180],单位:度(°),负为西经 double dLatitude; // 纬度,[-90, 90],单位:度(°),负为南纬 }NET_IN_SET_VIEW_RANGE_BY_GPS; ///@brief 根据目标GPS位置设置可视域 输出参数(CLIENT_SetViewRangeByGPS) typedef struct tagNET_OUT_SET_VIEW_RANGE_BY_GPS { DWORD dwSize; }NET_OUT_SET_VIEW_RANGE_BY_GPS; ///@brief 设置云台可视域信息 typedef struct tagPTZ_VIEW_RANGE_INFO { int nStructSize; int nAzimuthH; // 水平方位角度, 0~3600, 单位:度 }PTZ_VIEW_RANGE_INFO; ///@brief 获取云台光学变倍信息,对应命令 DH_DEVSTATE_PTZ_ZOOM_INFO typedef struct tagDH_OUT_PTZ_ZOOM_INFO { int dwSize; int nZoomValue; // 光学变倍值 }DH_OUT_PTZ_ZOOM_INFO; ///@brief 联动状态 typedef enum tagEM_TRACKSTATUS_TYPE { EM_TRACKSTATUS_TYPE_UNKNOWN = -1, // 未知 EM_TRACKSTATUS_TYPE_FREE, // 空闲 EM_TRACKSTATUS_TYPE_TRACKING, // 正在跟踪 EM_TRACKSTATUS_TYPE_TRACKINGEND, // 跟踪结束 }EM_TRACKSTATUS_TYPE; ///@brief 获取联动(轨迹移动)状态出参 typedef struct tagPTZ_GET_TRACKMOVESTATUS_INFO { DWORD dwSize; // 结构体大小 char szControlSource[64]; // 控制源标识 EM_TRACKSTATUS_TYPE emTrackStatus; // 联动状态 }PTZ_GET_TRACKMOVESTATUS_INFO; ///@brief 通道数量信息 typedef struct tagNET_CHN_COUNT_INFO { DWORD dwSize; int nMaxTotal; // 设备总通道数(所有有效通道数之和) int nCurTotal; // 已配置的通道数 int nMaxLocal; // 最大本地通道数, 含主板和可插拔子卡通道 int nCurLocal; // 已配置本地通道数 int nMaxRemote; // 最大远程通道数 int nCurRemote; // 已配置远程通道数 } NET_CHN_COUNT_INFO; ///@brief 设备通道数量信息 typedef struct tagNET_DEV_CHN_COUNT_INFO { DWORD dwSize; NET_CHN_COUNT_INFO stuVideoIn; // 视频输入通道 NET_CHN_COUNT_INFO stuVideoOut; // 视频输出通道 } NET_DEV_CHN_COUNT_INFO; ///@brief 录像状态详细信息 typedef struct tagNET_RECORD_STATE_DETAIL { DWORD dwSize; BOOL bMainStream; // 主码流, TRUE-正在录像, FALSE-没在录像 BOOL bExtraStream1; // 辅码流1, TRUE-正在录像, FALSE-没在录像 BOOL bExtraStream2; // 辅码流2, TRUE-正在录像, FALSE-没在录像 BOOL bExtraStream3; // 辅码流3, TRUE-正在录像, FALSE-没在录像 } NET_RECORD_STATE_DETAIL; ///@brief 云台绝对聚焦对应结构 typedef struct tagPTZ_Focus_Absolutely { DWORD dwValue; //云台聚焦位置,取值范围(0~8191) DWORD dwSpeed; //云台聚焦速度,取值范围(0~7) char szReserve[64]; //预留64字节 }PTZ_FOCUS_ABSOLUTELY; ///@brief CLIENT_PlayAudioFile 接口输入参数 typedef struct tagNET_IN_PLAY_AUDIO_FILE { DWORD dwSize; const char* pszFilePath; // 文件路径 DWORD dwOutput; // 输出途径, 可以是多种输出, 按位表示, bit0-mic, bit1-speaker } NET_IN_PLAY_AUDIO_FILE; ///@brief CLIENT_PlayAudioFile 接口输出参数 typedef struct tagNET_OUT_PLAY_FILE_STREAM { DWORD dwSize; } NET_OUT_PLAY_AUDIO_FILE; ///@brief RTSP URL信息列表结构 typedef struct tagNET_DEV_RTSPURL_LIST { DWORD dwSize; int nChannelID; // 通道号(用户输入参数) int nUrlNum; // Url地址个数 char szURLList[DH_MAX_URL_NUM][DH_MAX_URL_LEN]; // Url地址列表 }NET_DEV_RTSPURL_LIST; ///@brief 云台控制-扇扫对应结构 typedef struct tagPTZ_Control_SectorScan { int nBeginAngle; //起始角度,范围:[-180,180] int nEndAngle; //结束角度,范围:[-180,180] int nSpeed; //速度,范围:[0,255] char szReserve[64]; //预留64字节 }PTZ_CONTROL_SECTORSCAN; ///@brief 控制鱼眼电子云台信息 typedef struct tagPTZ_CONTROL_SET_FISHEYE_EPTZ { DWORD dwSize; // 结构体大小 DWORD dwWindowID; // 进行EPtz控制的窗口编号 DWORD dwCommand; // 电子云台命令 DWORD dwParam1; // 命令对应参数1 DWORD dwParam2; // 命令对应参数2 DWORD dwParam3; // 命令对应参数3 DWORD dwParam4; // 命令对应参数4 }PTZ_CONTROL_SET_FISHEYE_EPTZ; ///@brief 轨道机控制信息 typedef struct tagPTZ_CONTROL_SET_TRACK_CONTROL { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_SET_TRACK_CONTROL) DWORD dwChannelID; // 通道号 DWORD dwCommand; // 电子云台命令,对应枚举NET_TRACK_CONTROL_CMD DWORD dwParam1; // 命令对应参数1 DWORD dwParam2; // 命令对应参数2 DWORD dwParam3; // 命令对应参数3 } PTZ_CONTROL_SET_TRACK_CONTROL; ///@brief ===============区域扫描,云台操作============================= ///@brief 区域扫描云台控制命令(CLIENT_DHPTZAreaScan) typedef enum tagNET_AREASCAN_EPTZ_CMD { NET_AREASCAN_EPTZ_CMD_SET, // 设置当前位置为某个区域的扫描边界(结构体输入为 PTZ_CONTROL_SET_AREA_SCAN_LIMIT,输出参数无效) NET_AREASCAN_EPTZ_CMD_DEL, // 删除某个区域扫描(结构体输入为 PTZ_CONTROL_DEL_AREA_SCAN,输出参数无效) NET_AREASCAN_EPTZ_CMD_GET, // 获取所有的区域扫描编号是否有效(结构体输入为 PTZ_CONTROL_GET_AREA_SCAN_IN,输出参数为 PTZ_CONTROL_GET_AREA_SCAN_OUT ) NET_AREASCAN_EPTZ_CMD_START, // 开始区域扫描(结构体输入为 PTZ_CONTROL_START_AREA_SCAN,输出参数无效) NET_AREASCAN_EPTZ_CMD_STOP, // 停止区域扫描(结构体输入为 PTZ_CONTROL_STOP_AREA_SCAN,输出参数无效) }NET_AREASCAN_EPTZ_CMD; ///@brief 设置当前位置为某个区域的扫描边界 typedef struct tagPTZ_CONTROL_SET_AREA_SCAN_LIMIT { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_SET_AREA_SCAN_LIMIT) int nChannelID; // 通道号,通道号从0开始 int nIndex; // 区域编号,编号从1开始 char szLimitMode[16]; // 区域边界,"Left":左边界 "Right":右边界 int nZoom; // 扫描变倍值,范围0~128,默认为0,表示当前值,1~128表示对应的变倍档位 } PTZ_CONTROL_SET_AREA_SCAN_LIMIT; ///@brief 删除某个区域扫描 typedef struct tagPTZ_CONTROL_DEL_AREA_SCAN { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_DEL_AREA_SCAN) int nChannelID; // 通道号,通道号从0开始 int nIndex; // 区域编号,编号从1开始 } PTZ_CONTROL_DEL_AREA_SCAN; ///@brief 获取所有的区域扫描编号是否有效,输入参数 typedef struct tagPTZ_CONTROL_GET_AREA_SCAN_IN { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_GET_AREA_SCAN) int nChannelID; // 通道号,通道号从0开始 int nSize; // 要获取的区域扫描个数 } PTZ_CONTROL_GET_AREA_SCAN_IN; ///@brief 区域有效信息 typedef struct tagNET_AREASCAN_STATE { BOOL bValid; // 区域是否有效 BYTE Reserved[128]; // 保留字节 }NET_AREASCAN_STATE; ///@brief 获取所有的区域扫描编号是否有效,输出参数 typedef struct tagPTZ_CONTROL_GET_AREA_SCAN_OUT { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 UINT nValidNum; // 数组 stuStateInfo 的有效个数 NET_AREASCAN_STATE stuStateInfo[DH_COMMON_STRING_32]; // 区域状态信息 }PTZ_CONTROL_GET_AREA_SCAN_OUT; ///@brief 开始区域扫描 typedef struct tagPTZ_CONTROL_START_AREA_SCAN { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_START_AREA_SCAN) int nChannelID; // 通道号,通道号从0开始 int nIndex; // 区域编号,编号从1开始 int nSpeed; // 水平扫描速度,范围1~255 int nTitleAngle; // 垂直扫描角度,从当前位置按此角度递增或者递减扫描,范围0~90度 } PTZ_CONTROL_START_AREA_SCAN; ///@brief 停止区域扫描 typedef struct tagPTZ_CONTROL_STOP_AREA_SCAN { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_STOP_AREA_SCAN) int nChannelID; // 通道号,通道号从0开始 int nIndex; // 区域编号,编号从1开始 } PTZ_CONTROL_STOP_AREA_SCAN; ///@brief ===============区域扫描,云台操作============================= ///@brief 区域聚焦模式 typedef enum tagEM_NET_FOCUS_REGION_MODE { EM_NET_FOCUS_REGION_MODE_GLOBAL, // 全局 EM_NET_FOCUS_REGION_MODE_AUTO, // 自动 EM_NET_FOCUS_REGION_MODE_INROIREGION, // ROI 指定的区域内 EM_NET_FOCUS_REGION_MODE_OUTROIREGION, // ROI 指定的区域外 }EM_NET_FOCUS_REGION_MODE; ///@brief 区域聚焦(对应枚举DH_EXTPTZ_SET_FOCUS_REGION) typedef struct tagPTZ_CONTROL_SET_FOCUS_REGION { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(PTZ_CONTROL_SET_FOCUS_REGION) EM_NET_FOCUS_REGION_MODE emMode; // 聚焦模式 NET_RECT stuRect; // 聚焦区域,使用相对坐标体系,取值均为0-8191 } PTZ_CONTROL_SET_FOCUS_REGION; ///@brief CLIENT_TransmitInfoForWeb 接口扩展参数 typedef struct tagNET_TRANSMIT_EXT_INFO { DWORD dwSize; unsigned char* pInBinBuf; // 二进制输入数据缓冲 DWORD dwInBinBufSize; // 二进制输入数据长度 int nJsonDataLen; // Json输出数据长度 int nBinDataLen; // 二进制输出数据长度 } NET_TRANSMIT_EXT_INFO; ///@brief 监听CAN总线数据 ///@brief fAttachProxyCB 参数 typedef struct tagNET_CB_CANDATA { DWORD dwSize; int nDataLength; // 普通数据长度 unsigned char* pDataContent; // 普通数据内容 }NET_CB_CANDATA; ///@brief 监听CAN总线数据回调函数原形,lAttachHandle是CLIENT_AttachCAN返回值 typedef void (CALLBACK *fAttachCANCB) (LLONG lLoginID, LLONG lAttachHandle, NET_CB_CANDATA* pBuf, LDWORD dwUser); ///@brief CLIENT_AttachCAN()输入参数 typedef struct tagNET_IN_ATTACH_CAN { DWORD dwSize; int nChannel; // 监听的CAN通道号 fAttachCANCB cbAttachCAN; // 注册视频电话状态变化回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_CAN; ///@brief CLIENT_AttachCAN()输出参数 typedef struct tagNET_OUT_ATTACH_CAN { DWORD dwSize; }NET_OUT_ATTACH_CAN; ///@brief CLIENT_SendCAN()输入参数 typedef struct tagNET_IN_SEND_CAN { DWORD dwSize; int nChannel; // CAN通道号 int nSendDataLength; // 发送数据长度 unsigned char* pSendData; // 发送数据内容 }NET_IN_SEND_CAN; ///@brief CLIENT_SendCAN()输出参数 typedef struct tagNET_OUT_SEND_CAN { DWORD dwSize; }NET_OUT_SEND_CAN; ///@brief 订阅透明串口数据回调fAttachDevCommCB 参数 typedef struct tagNET_CB_DEVCOMMDATA { DWORD dwSize; int nDataLength; // 普通数据长度 unsigned char* pDataContent; // 普通数据内容 }NET_CB_DEVCOMMDATA; ///@brief 监听透明串口数据回调函数原形,lAttachHandle是CLIENT_AttachDevComm返回值 typedef void (CALLBACK *fAttachDevCommCB) (LLONG lLoginID, LLONG lAttachHandle, NET_CB_DEVCOMMDATA* pBuf, LDWORD dwUser); ///@brief CLIENT_AttachDevComm()输入参数 typedef struct tagNET_IN_ATTACH_DEVCOMM { DWORD dwSize; int nChannel; // 监听的透明串口号 fAttachDevCommCB cbAttachDevComm; // 注册透明串口数据回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_DEVCOMM; ///@brief CLIENT_AttachDevComm()输出参数 typedef struct tagNET_OUT_ATTACH_DEVCOMM { DWORD dwSize; }NET_OUT_ATTACH_DEVCOMM; ///@brief 获取当前设备串口个数,对应CLIENT_QueryDevState()接口的 DH_DEVSTATE_GET_COMM_COUNT 命令参数 typedef struct tagNET_GET_COMM_COUNT { DWORD dwSize; int nChannelCout; // 获取到的串口数 }NET_GET_COMM_COUNT; ///@brief CLIENT_ExChangeData 接口输入结构体 typedef struct tagNET_IN_EXCHANGEDATA { DWORD dwSize; int nChannel; // 串口号 BOOL bFlag; // TRUE 为发送数据并等待回复,FALSE 只是采集数据 int nCollectTime; // 串口采集时长(单位:毫秒) int nSendDataLength; // 发送数据长度,bFlag = TRUE 有效 unsigned char* pSendData; // 发送数据内容,bFlag = TRUE 有效 }NET_IN_EXCHANGEDATA; ///@brief CLIENT_ExChangeData 接口输出结构体 typedef struct tagNET_OUT_EXCHANGEDATA { DWORD dwSize; }NET_OUT_EXCHANGEDATA; ///@brief 云台预置点 typedef struct tagNET_PTZ_PRESET { int nIndex; // 编号 char szName[PTZ_PRESET_NAME_LEN]; // 名称 int nPosition[3]; // 预置点的坐标和放大倍数 // 第一个参数是水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示 // 第二个参数是垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示 // 第三个参数是放大参数,范围[0,128],表示最小倍到最大倍的变倍位置 BOOL bSetNameEx; // 设置预置点名称时需置TRUE char szNameEx[256]; // 名称,支持256字节长度 char szReserve[52]; // 预留字节 } NET_PTZ_PRESET; ///@brief 云台预置点列表 typedef struct tagNET_PTZ_PRESET_LIST { DWORD dwSize; DWORD dwMaxPresetNum; // 预置点最大个数 DWORD dwRetPresetNum; // 返回预置点个数 NET_PTZ_PRESET *pstuPtzPorsetList; // 预置点列表(入参需要根据最大个数申请内存),内存大小为sizeof(NET_PTZ_PRESET)*dwMaxPresetNum } NET_PTZ_PRESET_LIST; ///@brief 事件类型 EVENT_IVS_TRAFFIC_RESTRICTED_PLATE (受限车牌事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_RESTRICTED_PLATE { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byReserved[984]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_RESTRICTED_PLATE; ///@brief 事件类型 EVENT_IVS_TRAFFIC_OVERSTOPLINE (压停车线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVERSTOPLINE { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 int nSpeed; // 车辆实际速度,Km/h NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byReserved[984]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bHasNonMotor; // stuNonMotor 字段是否有效 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_OVERSTOPLINE; ///@brief 事件类型EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(交通未系安全带事件事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 int nSpeed; // 车辆实际速度,Km/h NET_SAFEBELT_STATE emMainSeat; // 主驾驶座位安全带状态 NET_SAFEBELT_STATE emSlaveSeat; // 副驾驶座位安全带状态 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byReserved[728]; // 保留字节 EVENT_COMM_INFO stCommInfo; // 公共信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT; ///@brief 事件类型EVENT_IVS_TRAFFIC_DRIVER_SMOKING (驾驶员抽烟事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVER_SMOKING { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 int nSpeed; // 车辆实际速度,Km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 char szDriverID[32]; // 司机ID int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[952]; // 保留字节 }DEV_EVENT_TRAFFIC_DRIVER_SMOKING; ///@brief 事件类型EVENT_IVS_TRAFFIC_DRIVER_CALLING(驾驶员打电话事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVER_CALLING { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 int nSpeed; // 车辆实际速度,Km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 char szDriverID[32]; // 司机ID int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[952]; // 保留字节 }DEV_EVENT_TRAFFIC_DRIVER_CALLING; ///@brief 事件类型EVENT_IVS_OBJECT_DETECTION(物体特征检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OBJECT_DETECTION { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 int nObjectNum; //物体信息数 DH_MSG_OBJECT_EX *pstObjectInfo; //物体信息数据 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE byReserved2[892]; //保留字节 }DEV_EVENT_TRAFFIC_OBJECT_DETECTION; ///@brief 冗余电源异常报警 typedef struct tagALARM_POWER_ABNORMAL_INFO { DWORD dwSize; int nChannelID; // 通道号 NET_TIME stuTime; // 时间 DWORD dwAction; // 事件动作, 0:Start, 1:Stop NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_POWER_ABNORMAL_INFO; ///@brief 三态使能 typedef enum tagNET_THREE_STATE_ENABLE { EM_STATE_ENABLE_INVALID = 0, // 无效 EM_STATE_ENABLE_OFF, // 关 EM_STATE_ENABLE_ON, // 开 } NET_THREE_STATE_ENABLE; ///@brief 配置使能改变上报事件 typedef struct tagCONFIG_ENABLE_CHANGE_INFO { DWORD dwSize; int nChannelID; // 通道号, 从0开始 NET_THREE_STATE_ENABLE emMotionDetect; // 动检使能, 0:无效, 1:使能关闭, 2:使能打开 NET_THREE_STATE_ENABLE emLossDetect; // 视频丢失使能, 0:无效, 1:使能关闭, 2:使能打开 NET_THREE_STATE_ENABLE emBlindDetect; // 视频遮挡使能, 0:无效, 1:使能关闭, 2:使能打开 NET_THREE_STATE_ENABLE emAlarmLocal; // 外部报警使能, 0:无效, 1:使能关闭, 2:使能打开 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_CONFIG_ENABLE_CHANGE_INFO; ///@brief 虚点测速仪违章类型 typedef enum tagEM_ITC_HWS000_IT_TYPE { EM_ITC_HWS000_IT_TYPE_UNKNOWN, // 未知 EM_ITC_HWS000_IT_TYPE_HIGH_SPEED, // 高速 EM_ITC_HWS000_IT_TYPE_LOW_SPEED, // 低速 }EM_ITC_HWS000_IT_TYPE; ///@brief 虚点测速仪雷达状态 typedef enum tagEM_ITC_HWS000_RS_TYPE { EM_ITC_HWS000_RS_TYPE_UNKNOWN, // 未知 EM_ITC_HWS000_RS_TYPE_ONLINE, // 在线 EM_ITC_HWS000_RS_TYPE_OFFLINE, // 离线 }EM_ITC_HWS000_RS_TYPE; ///@brief 虚点测速仪闪光灯状态 typedef enum tagEM_ITC_HWS000_FS_TYPE { EM_ITC_HWS000_FS_TYPE_UNKNOWN, // 未知 EM_ITC_HWS000_FS_TYPE_ONLINE, // 在线 EM_ITC_HWS000_FS_TYPE_OFFLINE, // 离线 }EM_ITC_HWS000_FS_TYPE; ///@brief 虚点测速仪设备事件与报警 typedef struct tagALARM_ITC_HWS000 { DWORD dwSize; EM_ITC_HWS000_IT_TYPE emItType; // 违章类型 EM_ITC_HWS000_RS_TYPE emRsType; // 雷达在线状态 EM_ITC_HWS000_FS_TYPE emFsType; // 闪光灯在线状态 int nOcNum; // 超速计数值 int nLcNum; // 欠速计数值 int nAcNum; // 违章总计数值 int nFcNum; // 闪光灯闪烁次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_ITC_HWS000; ///@brief 车辆状态 +- typedef enum tagEM_CAR_COME_STATUS { EM_CAR_COME_STATUS_UNKNOWN, //未知 EM_CAR_COME_STATUS_COME_IN, //入场 EM_CAR_COME_STATUS_COME_OUT, //出场 }EM_CAR_COME_STATUS; ///@brief 手机号码上报事件 typedef struct tagALARM_TELEPHONE_CHECK_INFO { DWORD dwSize; EM_CAR_COME_STATUS emCarStatus; //车辆状态 char szTelephoneNum[32]; //手机号码 }ALARM_TELEPHONE_CHECK_INFO; #define UPDATE_VERSION_LEN 64 ///@brief 获取设备升级状态对应结构体 typedef struct tagDHDEV_UPGRADE_STATE_INFO { int nState; // 0:None-没有检测到更新, 默认状态; 1:Regular-一般升级; // 2:Emergency-强制升级; 3:Upgrading-升级中 char szOldVersion[UPDATE_VERSION_LEN]; // 旧版本 char szNewVersion[UPDATE_VERSION_LEN]; // 新版本 DWORD dwProgress; // 升级进度 int reserved[256]; // 保留字段 }DHDEV_UPGRADE_STATE_INFO; ///@brief 警戒线入侵方向 typedef enum tagNET_CROSSLINE_DIRECTION_INFO { EM_CROSSLINE_DIRECTION_UNKNOW = 0 , EM_CROSSLINE_DIRECTION_LEFT2RIGHT , //左到右 EM_CROSSLINE_DIRECTION_RIGHT2LEFT , //右到左 EM_CROSSLINE_DIRECTION_ANY , }NET_CROSSLINE_DIRECTION_INFO; ///@brief 警戒线事件(对应事件 DH_EVENT_CROSSLINE_DETECTION) typedef struct tagALARM_EVENT_CROSSLINE_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_CROSSLINE_DIRECTION_INFO emCrossDirection; // 入侵方向 int nOccurrenceCount; // 规则被触发生次数 int nLevel; // 事件级别,GB30147需求项 BOOL bIsObjectInfo; // 是否检测到物体信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nRetObjectNum; // 实际返回多个检测到的物体信息 DH_MSG_OBJECT stuObjects[MAX_TARGET_OBJECT_NUM]; // 多个检测到的物体信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_EVENT_CROSSLINE_INFO; ///@brief 移动事件(对应事件DH_ALARM_MOVEDETECTION) typedef struct tagALARM_MOVE_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nCount; // 规则被触发的次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; //保留字节 } ALARM_MOVE_DETECTION_INFO; ///@brief 徘徊事件(对应事件DH_ALARM_WANDERDETECTION) typedef struct tagALARM_WANDERDETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nCount; // 规则被触发的次数 int nLevel; // 事件级别,GB31047需求 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[958]; //保留字节 } ALARM_WANDERDETECTION_INFO; ///@brief 翻越围栏事件(对应事件DH_ALARM_CROSSFENCEDETECTION) typedef struct tagALARM_CROSSFENCEDETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_CROSSLINE_DIRECTION_INFO emCrossDirection; // 入侵方向 int nCount; // 规则被触发的次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; //保留字节 } ALARM_CROSSFENCEDETECTION_INFO; ///@brief 闯红灯事件(对应事件 ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION) typedef struct tagALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[1024]; //保留字节 } ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION_INFO; ///@brief 斗殴事件(对应事件DH_ALARM_FIGHTDETECTION) typedef struct tagNET_ALARM_FIGHTDETECTION { int nAction; // 事件动作,0:开始1:停止 int nChannelID; // 通道号从0开始 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[892]; //保留字节 }NET_ALARM_FIGHTDETECTION; #define VTO_BUILDING_LEN 8 #define VTO_UNIT_LEN 8 ///@brief VTO目标识别事件(对应事件DH_ALARM_ACCESSIDENTIFY) typedef struct tagNET_ALARM_ACCESSIDENTIFY_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szVTOBuilding[VTO_BUILDING_LEN]; // 所属幢号 char szVTOUnit[VTO_UNIT_LEN]; // 所属单元号 BYTE byReserved[1024]; // 保留字节 }NET_ALARM_ACCESSIDENTIFY_INFO; ///@brief 直连情况下,呼叫无答应事件(对应事件DH_ALARM_CALL_NO_ANSWERED) typedef struct tagNET_ALARM_CALL_NO_ANSWERED_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szCallID[MAX_CALL_ID_LEN]; // 呼叫ID int nAction; // 事件动作, 1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 BYTE byReserved[1016]; // 保留字节 } NET_ALARM_CALL_NO_ANSWERED_INFO; ///@brief 非法停车事件(对应事件DH_ALARM_PARKINGDETECTION) typedef struct tagALARM_PARKINGDETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nCount; // 规则被触发的次数 char szCustomParkNo[64]; // 车位名称 DH_POINT stuDetectRegion[20]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 BYTE byReserved[876]; // 保留字节 } ALARM_PARKINGDETECTION_INFO; ///@brief 人员聚集事件(对应事件DH_ALARM_RIOTERDETECTION) typedef struct tagALARM_RIOTERDETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nCount; // 规则被触发的次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 } ALARM_RIOTERDETECTION_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_PARKING(交通违章停车事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_PARKING_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_PARKING_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_JAM(交通拥堵事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_JAM_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_JAM_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_PEDESTRAIN(交通行人事件)对应数据块描述信息 typedef struct tagALARM_TRAFFIC_PEDESTRAIN_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_PEDESTRAIN_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_THROW(交通抛洒物品事件)对应数据块描述信息 typedef struct tagALARM_TRAFFIC_THROW_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[1024]; // 保留字节 } ALARM_TRAFFIC_THROW_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_RETROGRADE(交通逆行事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_RETROGRADE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_RETROGRADE_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_OVERSPEED(交通超速事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_OVERSPEED_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nSpeed; // 车速 int nSpeedUpperLimit; // 速度上限 int nSpeedLowerLimit; // 速度下限 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_OVERSPEED_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_UNDERSPEED(交通欠速事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_UNDERSPEED_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nSpeed; // 车速 int nSpeedUpperLimit; // 速度上限 int nSpeedLowerLimit; // 速度下限 int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } ALARM_TRAFFIC_UNDERSPEED_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_ROADALERT(道路安全预警事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_ROADALERT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_ROADALERT_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_CROSSLANE(违章变道事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_CROSSLANE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_CROSSLANE_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_OVERYELLOWLINE(压线事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_OVERYELLOWLINE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_OVERYELLOWLINE_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_ACCIDENT(交通事故事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_ACCIDENT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID unsigned int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_ACCIDENT_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_ROADBLOCK(交通路障检测事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_ROADBLOCK_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID unsigned int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_ROADBLOCK_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_ROADCONSTRUCTION(交通道路施工检测事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_ROADCONSTRUCTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID unsigned int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_ROADCONSTRUCTION_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_CARDISTANCESHORT(车间距过小报警事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_CARDISTANCESHORT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_CARDISTANCESHORT_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_VEHICLERACING(飙车事件)对应的数据块描述信息 typedef struct tagNET_ALARM_TRAFFIC_VEHICLERACING_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道号 BYTE byReserved[1020]; // 保留字节 } NET_ALARM_TRAFFIC_VEHICLERACING_INFO; ///@brief 事件类型DH_ALARM_STORAGE_OVERLOAD(配额超负荷事件)对应的数据块描述信息 typedef struct tagNET_ALARM_STORAGE_OVERLOAD_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szName[32]; // 超负荷事件类型,配额或盘组, "storageQuota"/"storageGroup" char szGroup[128][32]; // 出现超负荷事件的盘组号 int nGroupNum; // 盘组号个数 char byReserved[1020]; // 保留字节 } NET_ALARM_STORAGE_OVERLOAD_INFO; ///@brief 事件类型DH_ALARM_RETROGRADE_DETECTION(人员逆行事件)对应的数据块描述信息 typedef struct tagALARM_RETROGRADE_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nCount; // 规则被触发的次数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 } ALARM_RETROGRADE_DETECTION_INFO; ///@brief AIO报警事件(对应事件DH_ALARM_AIO_APP_CONFIG_EVENT) typedef struct tagALARM_AIO_APP_CONFIG_EVENT_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szAddress[DH_MAX_IPADDR_LEN]; // 发布平台的的ip地址 BYTE byReserved[1024]; // 保留字节 }ALARM_AIO_APP_CONFIG_EVENT_INFO; ///@brief 事件类型DH_ALARM_BOX(报警盒子报警事件)对应的数据块描述信息 typedef struct tagALARM_BOX_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nAlarmBoxIndex; // 外接多个报警盒时,表示报警盒序号。从0开始 int nAlarmIndex; // 报警盒内部的通道号,从0开始 BYTE byReserved[1024]; // 保留字节 } ALARM_BOX_INFO; ///@brief 事件类型 DH_ALARM_UNDER_VOLTAGE (低电压报警事件) 对应的数据块描述信息 typedef struct tagALARM_UNDER_VOLTAGE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[512]; // 保留字节 }ALARM_UNDER_VOLTAGE_INFO; ///@brief 事件类型 DH_ALARM_OVER_VOLTAGE (超电压报警事件) 对应的数据块描述信息 typedef struct tagALARM_OVER_VOLTAGE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[512]; // 保留字节 }ALARM_OVER_VOLTAGE_INFO; ///@brief 事件类型 DH_ALARM_TIRED_PHYSIOLOGICAL (生理疲劳事件) 对应的数据块描述信息 typedef struct tagALARM_TIRED_PHYSIOLOGICAL { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TIRED_PHYSIOLOGICAL; ///@brief 事件类型 DH_ALARM_CALLING_WHEN_DRIVING (开车打电话事件) 对应的数据块描述信息 typedef struct tagALARM_CALLING_WHEN_DRIVING { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_CALLING_WHEN_DRIVING; ///@brief 事件类型 DH_ALARM_TRAFFIC_DRIVER_SMOKING (开车抽烟事件) 对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_DRIVER_SMOKING { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TRAFFIC_DRIVER_SMOKING; ///@brief 事件类型 DH_ALARM_TRAFFIC_DRIVER_LOWER_HEAD (开车低头报警事件) 对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_DRIVER_LOWER_HEAD { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TRAFFIC_DRIVER_LOWER_HEAD; ///@brief 事件类型 DH_ALARM_TRAFFIC_DRIVER_LOOK_AROUND (开车左顾右盼报警事件) 对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_DRIVER_LOOK_AROUND { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TRAFFIC_DRIVER_LOOK_AROUND; ///@brief 事件类型 DH_ALARM_TRAFFIC_DRIVER_LEAVE_POST (开车离岗报警事件) 对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_DRIVER_LEAVE_POST { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TRAFFIC_DRIVER_LEAVE_POST; ///@brief 事件类型 DH_ALARM_TRAFFIC_DRIVER_YAWN (开车打哈欠报警事件) 对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_DRIVER_YAWN { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[512]; // 保留字节 } ALARM_TRAFFIC_DRIVER_YAWN; ///@brief 车头方向 typedef enum tagEM_VEHICLE_HEAD_DIRECTION { EM_VEHICLE_HEAD_DIRECTION_UNKNOWN, // 未知 EM_VEHICLE_HEAD_DIRECTION_LEFT, // 左 EM_VEHICLE_HEAD_DIRECTION_MIDDLE, // 中 EM_VEHICLE_HEAD_DIRECTION_RIGHT, // 右 }EM_VEHICLE_HEAD_DIRECTION; ///@brief 抓拍时车的位置 typedef enum tagEM_VEHICLE_POSITION { EM_VEHICLE_POSITION_UNKNOWN, // 未知 EM_VEHICLE_POSITION_HEAD, // 头 EM_VEHICLE_POSITION_TAIL, // 尾 }EM_VEHICLE_POSITION; ///@brief 车辆行驶方向(相对车道方向) typedef enum tagEM_VEHICLE_DRIVING_DIRECTION { EM_VEHICLE_DRIVING_DIRECTION_UNKNOWN, // 未知 EM_VEHICLE_DRIVING_DIRECTION_OBVERSE, // 正向 EM_VEHICLE_DRIVING_DIRECTION_REVERSE, // 反向 }EM_VEHICLE_DRIVING_DIRECTION; ///@brief 车辆位置报警事件(DH_ALARM_TRAFFIC_VEHICLE_POSITION) typedef struct tagALARM_TRAFFIC_VEHICLE_POSITION { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szEventName[DH_COMMON_STRING_128]; // 事件名称 unsigned int nObjectID; // 物体ID char szPlateNumber[DH_COMMON_STRING_128]; // 车牌号 int nPosition; // 识别车牌与卡口抓拍线的相对距离(0为基准,表示视频抓拍卡口位置时的车牌距离;正数表示越过抓拍线;负数表示未越过抓拍线) BYTE byOpenStrobeState; // 开闸状态,具体请见 EM_OPEN_STROBE_STATE UINT nPlateConfidence; // 车牌置信度,范围[0, 255] char szPlateColor[32]; // 车牌颜色 char szPlateType[32]; // 车牌类型 UINT nVehicleConfidence; // 车身置信度,范围[0, 255] EM_VEHICLE_HEAD_DIRECTION emVehicleHeadDirection; // 车头朝向,用于抓拍时,判断当前车头是否正对着相机 EM_VEHICLE_POSITION emVehiclePosition; // 抓拍车的位置 EM_VEHICLE_DRIVING_DIRECTION emDrivingDirection; // 车辆行驶方向(相对车道方向) BYTE byReserved[427]; // 保留字节 } ALARM_TRAFFIC_VEHICLE_POSITION; ///@brief 事件类型 DH_ALARM_MPTBASE_CONNECT (设备与底座连接状态事件) 对应的数据块描述信息 typedef struct tagALARM_MPTBASE_CONNECT { int nAction; // 事件动作, 1 表示持续性事件开始, 2 表示持续性事件结束 BYTE byReserved[512]; // 保留字节 } ALARM_MPTBASE_CONNECT; ///@brief 关机原因 typedef enum tagEM_SHUTDOWN_REASON_TYPE { EM_SHUTDOWN_REASON_UNKNOWN, // 未知 EM_SHUTDOWN_REASON_LOWERPOWER, // 低电量 EM_SHUTDOWN_REASON_LOSTPOWER, // 突然掉电 EM_SHUTDOWN_REASON_CRASH, // 系统崩溃 } EM_SHUTDOWN_REASON_TYPE; ///@brief 事件类型DH_ALARM_CGIRECORD,对应CGI触发手动录像 typedef struct tagALARM_CGIRECORD { int nAction; // 事件动作,1表示事件开始,2表示事件结束; int nChannelID; // 录像通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_TIME_EX stuStartTime; // 录像开始时间 NET_TIME_EX stuStopTime; // 录像结束时间 BYTE byReserved[512]; // 保留字节 } ALARM_CGIRECORD; ///@brief 电池温度上报事件信息,对应DH_ALARM_BATTERY_TEMPERATURE typedef struct tagALARM_BATTERY_TEMPERATURE_INFO { int nBatteryIndex; // 电池序号 NET_TIME_EX stuTime; // 事件时间 float fTemperature; // 电池的温度值,单位:°C BYTE byReserved[1024]; // 保留字节 }ALARM_BATTERY_TEMPERATURE_INFO; ///@brief 事件类型 DH_ALARM_TIRE_PRESSURE ,对应胎压事件上报 typedef struct tagALARM_TIRE_PRESSURE_INFO { int nAction; // 事件动作,1表示事件开始,2表示事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nTireIndex; // 轮胎编号,从1开始 int nAlarmType; // 报警类型,1-低压报警,2-高压报警 float fUpperLimit; // 胎压上限,单位BAR float fLowerLimit; // 胎压下限,单位BAR float fCurrentPressure; // 当前胎压,单位BAR BYTE byReserved[512]; // 保留字节 } ALARM_TIRE_PRESSURE_INFO; ///@brief 门禁禁止名单刷卡事件,对应 DH_ALARM_ACCESS_CTL_BLACKLIST typedef struct tagALARM_ACCESS_CTL_BLACKLIST { int nChannel; // 门通道号 char szAccessName[DH_COMMON_STRING_64]; // 门禁名称 char szUserID[DH_COMMON_STRING_32]; // 用户ID char szCardNo[DH_COMMON_STRING_64]; // 禁止名单卡号 char szCitizenIDNo[20]; // 证件号 NET_TIME_EX UTC; // 事件发生的时间 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) BYTE byReserved[416]; // 保留字节 }ALARM_ACCESS_CTL_BLACKLIST; ///@brief 未授权卡恶意刷卡事件, 对应 DH_ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP typedef struct tagALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP { int nChannel; // 门通道号 char szDoorName[DH_MAX_DOORNAME_LEN]; // 门禁名称 char szUserID[MAX_COMMON_STRING_16]; // 用户ID char szCardNo[DH_COMMON_STRING_64]; // 卡号 NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[476]; }ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP; ///@brief 用户锁定报警事件,对应 DH_ALARM_USERLOCK typedef struct tagALARM_USERLOCK_INFO { double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szUserName[MAX_USER_NAME_LEN]; // 用户名 char szGroup[MAX_GROUP_LEN]; // 组名 char szIllegalLoginIP[MAX_ILLEGAL_LOGIN_IP_LEN]; // 非法登录的IP NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_USERLOCK_INFO; ///@brief 下载远程文件事件,对应 DH_ALARM_DOWNLOAD_REMOTE_FILE typedef struct tagALARM_DOWNLOAD_REMOTE_FILE_INFO { double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szURL[DH_COMMON_STRING_256]; // 下载文件对应的URL地址 UINT nProgress; // 下载进度[0,100] UINT nVelocity; // 下载平均速度, 单位: Kb/s BYTE byReserved[1016]; // 保留字节 }ALARM_DOWNLOAD_REMOTE_FILE_INFO; ///@brief 冲突信息 typedef struct tagNET_CONFLICT_INFO { char szSlaveMac[DH_COMMON_STRING_32]; // 分配器MAC地址 int nSlaveID; // 分配器ID int nSlavePort; // 室内机位于分配器的端口号 BYTE byReserved[64]; // 保留字节 } NET_CONFLICT_INFO; // 冲突信息最大数量 #define MAX_COUNT_CONFLICT 16 ///@brief 事件类型 DH_ALARM_VTH_CONFLICT, 对应房间号冲突上报事件 typedef struct tagALARM_VTH_CONFLICT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nConflictNum; // 冲突数量 NET_CONFLICT_INFO stConflictInfo[MAX_COUNT_CONFLICT]; // 冲突信息 char szVTNCNum[DH_COMMON_STRING_32]; // 单元联网控制器号码/门口机号码 char szVTHNum[DH_COMMON_STRING_32]; // 房间号 BYTE byReserved[512]; // 保留字节 } ALARM_VTH_CONFLICT_INFO; ///@brief 事件类型DH_ALARM_LATEST_SHUTDOWN (设备上次关机状态事件) 对应的数据块描述信息 typedef struct tagALARM_LATEST_SHUTDOWN { EM_SHUTDOWN_REASON_TYPE emShutdownReason; // 关机原因 BYTE byReserved[512]; // 保留字节 } ALARM_LATEST_SHUTDOWN; ///@brief 文件信息 typedef struct tagNET_EMERGENCY_FILE_INFO { char szUniqueID[128]; // 原始文件创建时文件的唯一标示 char szOriginalDeviceID[128]; // 原始文件创建设备的序列号ID EM_MOBILE_ENFORCE_FORMAT emFormat; // 文件的真实类型 EM_MOBILE_ENFORCE_FILE_TYPE emFileType; // 文件后缀类型 char szFileName[260]; // 文件名称 char szFilePath[260]; // 文件路径。 NET_TIME stStartTime; // 文件开始时间 NET_TIME stEndTime; // 文件结束时间 UINT nLength; // 文件长度 NET_TIME stuStartTimeRealUTC; // UTC开始时间 NET_TIME stuEndTimeRealUTC; // UTC结束时间 BYTE byReserved[448]; // 保留字节 } NET_EMERGENCY_FILE_INFO; ///@brief 事件类型DH_ALARM_EMERGENCY_FILE_UPLOAD (MPT设备要求主动上传指定文件给平台事件) 对应的数据块描述信息 typedef struct tagALARM_EMERGENCY_FILE_UPLOAD { NET_EMERGENCY_FILE_INFO stFileInfo[50]; NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[512]; // 保留字节 } ALARM_EMERGENCY_FILE_UPLOAD; ///@brief MPT设备取消下载的文件信息 typedef struct tagNET_EMERGENCY_CANCEL_FILE_INFO { char szUniqueID[128]; // 原始文件创建时文件的唯一标示 char byReserved[512]; // 保留字节 } NET_EMERGENCY_CANCEL_FILE_INFO; ///@brief 事件类型DH_ALARM_EMERGENCY_FILE_UPLOAD_CANCEL (MPT设备要求平台取消下载事件) 对应的数据块描述信息 typedef struct tagALARM_EMERGENCY_FILE_UPLOAD_CANCEL_INFO { int nAction; // 事件动作,0表示脉冲事件 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 UINT nFileNum; // 需要取消下载的文件个数 NET_EMERGENCY_CANCEL_FILE_INFO stuFileList[50]; // 需要取消下载的文件列表 char byReserved[1024]; // 保留字节 } ALARM_EMERGENCY_FILE_UPLOAD_CANCEL_INFO; ///@brief 录像备份失败原因 typedef enum tagEM_RECORD_BACKUP_FAILURE_TYPE { EM_RECORD_BACKUP_FAILURE_UNKNOWN, // 未知 EM_RECORD_BACKUP_FAILURE_RECORD_NO_EXIST, // 备份设备录像不存在 EM_RECORD_BACKUP_FAILURE_LOGIN_FAILED, // 无法登录备份设备 EM_RECORD_BACKUP_FAILURE_DOWNLOAD_FAILED, // 下载对端返回失败 EM_RECORD_BACKUP_FAILURE_STORAGE_FAILED, // 存储异常 EM_RECORD_BACKUP_FAILURE_DISCONNETED, // 备份期间断线 }EM_RECORD_BACKUP_FAILURE_TYPE; ///@brief 事件类型 DH_ALARM_RECORD_BACKUP_FAILURE (录像备份失败事件) 对应的数据块描述信息 typedef struct tagALARM_RECORD_BACKUP_FAILURE_INFO { NET_TIME_EX stuTime; // 事件发生的时间 UINT nTaskId; // 失败任务ID char szDeviceIP[64]; // 备份设备IP UINT nPort; // 备份设备端口 UINT nChannel; // 本地通道 UINT nRemoteChannel; // 远程通道 NET_TIME stuBackupStartTime; // 备份录像起始时间 NET_TIME stuBackupEndTime; // 备份录像结束时间 ENUM_RECORDBACKUP_FILE_TYPE emFileType; // 录像类型 NET_STREAM_TYPE emStreamType; // 视频码流 EM_RECORD_BACKUP_FAILURE_TYPE emResson; // 异常原因 char reserved[256]; // 预留字段 }ALARM_RECORD_BACKUP_FAILURE_INFO; ///@brief 事件类型DH_ALARM_COAXIAL_HIGH_TEMPERATURE (超温报警事件) 对应的数据块描述信息 typedef struct tagALARM_COAXIAL_HIGH_TEMPERATURE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nAlarmChannel; // 报警输入通道号 char szName[128]; // 报警名称 float fValue; // 当前温度值,单位:摄氏度 BYTE byReserved[1024]; // 预留字段 } ALARM_COAXIAL_HIGH_TEMPERATURE_INFO; ///@brief 事件类型DH_ALARM_COAXIAL_LOW_TEMPERATURE (失温报警事件) 对应的数据块描述信息 typedef struct tagALARM_COAXIAL_LOW_TEMPERATURE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nAlarmChannel; // 报警输入通道号 char szName[128]; // 报警名称 float fValue; // 当前温度值,单位:摄氏度 BYTE byReserved[1024]; // 预留字段 } ALARM_COAXIAL_LOW_TEMPERATURE_INFO; ///@brief 事件类型DH_ALARM_CHANNEL_RECSHORTAGE (通道录像不足配置的天数事件) 对应的数据块描述信息 typedef struct tagALARM_CHANNEL_RECSHORTAGE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; int nDays; // 录像天数 DWORD dwTime; // 事件发生时间,带时区偏差的UTC时间,单位秒 char byReserved[1024]; // 预留字段 } ALARM_CHANNEL_RECSHORTAGE_INFO; ///@brief 事件类型DH_ALARM_SECURITY_INSPECTOR_OVERTIME_ON_DUTY (安检员超时在岗事件) 对应的数据块描述信息 typedef struct tagALARM_SECURITY_INSPECTOR_OVERTIME_ON_DUTY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[128]; // 安检员名称 char szReserved[1024]; // 预留字段 } ALARM_SECURITY_INSPECTOR_OVERTIME_ON_DUTY_INFO; ///@brief 事件类型DH_ALARM_SECURITY_INSPECTOR_NOT_CONFIRM_PACKAGE (安检员未确认包裹事件) 对应的数据块描述信息 typedef struct tagALARM_SECURITY_INSPECTOR_NOT_CONFIRM_PACKAGE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[128]; // 安检员名称 char szReserved[1024]; // 预留字段 } ALARM_SECURITY_INSPECTOR_NOT_CONFIRM_PACKAGE_INFO; ///@brief 事件类型DH_ALARM_SMOKING_DETECT (吸烟行为报警事件) 对应的数据块描述信息 typedef struct tagNET_ALARM_SMOKING_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT_EX stuDetectRegion[20]; // 规则检测区域 DH_MSG_OBJECT stuObject; // 检测到的物体 SCENE_IMAGE_INFO stuSceneImageInfo; // 全景广角图 char szUserName[32]; // 用户名称 UINT nPresetID; // 事件触发的预置点号,从1开始, 0表示未知 char szReserved[1020]; // 保留字节 } NET_ALARM_SMOKING_DETECT_INFO; ///@brief 事件类型 DH_ALARM_SITE_OVERTIME_ALARM (站点超时报警) 对应的数据块描述信息 typedef struct tagNET_ALARM_SITE_OVERTIME_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nDepartureID; // 出发站ID int nTerminusID; // 到达站ID NET_TIME stuStartTimeUTC; // 出发站离站时间,真正的标准UTC NET_TIME stuEndTimeUTC; // 到达站进站时间,真正的标准UTC UINT nTimeLimit; // 最大行驶时长(单位:秒) UINT nDriveTime; // 实际行驶时长(单位:秒) char szReserved[1024]; // 保留字节 }NET_ALARM_SITE_OVERTIME_ALARM_INFO; ///@brief 事件类型 DH_ALARM_SMART_SOUND_DETECT (智能声音检测事件)对应的数据块描述信息 typedef struct tagNET_ALARM_SMART_SOUND_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 UINT nACK; // 事件的确认ID int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 NET_TIME stuStartTime; // 开始时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 NET_TIME_EX stuUTC; // 事件发生的时间 double dbPTS; // 相对事件时间戳,单位毫秒 EM_AUDIO_MUTATION_ALARM_TYPE emType; // 声音类型 int nAlarmChannel; // 报警输入通道号, 从0开始, -1表示未知 char szName[32]; // 事件别名 char szReserved[1024]; // 预留字节 }NET_ALARM_SMART_SOUND_DETECT_INFO; ///@brief 事件类型 DH_ALARM_REQ_WORK_TIME_CALC (查询剩余加班额度事件)对应的数据块描述信息 typedef struct tagNET_ALARM_REQ_WORK_TIME_CALC_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szUserID[32]; // 用户编号 char szUserName[128]; // 用户姓名 int nType; // 操作类型, -1: 未知, 0: 查询剩余加班额度, 1: 申请加班时长 float fOverTime; // 加班时长, nType为1时有效 NET_TIME stuCurrentTime; // 当前时间 NET_TIME stuWorkStartTime; // 开始加班的那天;type为1时必选项 char szReserved[976]; // 预留字节 }NET_ALARM_REQ_WORK_TIME_CALC_INFO; ///@brief 事件类型 DH_ALARM_XRAY_EMERGENCY_ALARM (X光机一键报警事件)对应的数据块描述信息 typedef struct tagNET_ALARM_XRAY_EMERGENCY_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[1024]; // 预留字节 }NET_ALARM_XRAY_EMERGENCY_ALARM_INFO; /****************************** 安检类事件开始 ******************************/ ///@brief 事件类型DH_ALARM_XRAY_PIP_COMMUNICATION_ABNORMITY (X射线画中画通讯异常事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_PIP_COMMUNICATION_ABNORMITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字段 } ALARM_XRAY_PIP_COMMUNICATION_ABNORMITY_INFO; ///@brief 事件类型DH_ALARM_XRAY_ACQUISITION_SYSTEM_ABNORMITY (X光机图像采集系统通信异常事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_ACQUISITION_SYSTEM_ABNORMITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字段 } ALARM_XRAY_ACQUISITION_SYSTEM_ABNORMITY_INFO; ///@brief 事件类型DH_ALARM_XRAY_EMERGENCY_STOP (X光机紧急停止事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_EMERGENCY_STOP_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字段 } ALARM_XRAY_EMERGENCY_STOP_INFO; ///@brief 事件类型DH_ALARM_XRAY_DETECTOR_PROTECTION_OPEN (X光机接收器件防护装置打开事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_DETECTOR_PROTECTION_OPEN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字段 } ALARM_XRAY_DETECTOR_PROTECTION_OPEN_INFO; ///@brief X光机外罩打开位置 typedef enum tagEM_XRAY_SHELL_OPEN_POSITION { EM_XRAY_SHELL_OPEN_POSITION_UNKNWON = -1, // 未知 EM_XRAY_SHELL_OPEN_POSITION_INSENSITIVE, // 不区分位置 EM_XRAY_SHELL_OPEN_POSITION_A_LEFT, // A端左侧(面向A端通道时) EM_XRAY_SHELL_OPEN_POSITION_A_RIGHT, // A端右侧(面向A端通道时) EM_XRAY_SHELL_OPEN_POSITION_B_LEFT, // B端左侧(面向B端通道时) EM_XRAY_SHELL_OPEN_POSITION_B_RIGHT // B端右侧(面向B端通道时) } EM_XRAY_SHELL_OPEN_POSITION; ///@brief 事件类型DH_ALARM_XRAY_MACHINE_SHELL_OPEN (X光机外罩打开事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_MACHINE_SHELL_OPEN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 EM_XRAY_SHELL_OPEN_POSITION nPosition[32]; // 外罩打开位置 int nPositionCnt; // 外罩打开位置个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 预留字段 } ALARM_XRAY_MACHINE_SHELL_OPEN_INFO; ///@brief 事件类型DH_ALARM_XRAY_KEYBOARD_ABNORMITY (X光机操作键盘通信异常事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_KEYBOARD_ABNORMITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字段 } ALARM_XRAY_KEYBOARD_ABNORMITY_INFO; ///@brief 事件类型DH_ALARM_XRAY_TRANSMISSION_BELT_ABNORMITY (X光机图像传送带状态异常事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_TRANSMISSION_BELT_ABNORMITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 char szReserved[1024]; // 预留字段 } ALARM_XRAY_TRANSMISSION_BELT_ABNORMITY_INFO; ///@brief 事件类型DH_ALARM_POWER_GROUND_DETECTION_ABNORMAL (X光机接地异常检测事件) 对应的数据块描述信息 typedef struct tagALARM_POWER_GROUND_DETECTION_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 char szReserved[1024]; // 预留字段 } ALARM_POWER_GROUND_DETECTION_ABNORMAL_INFO; ///@brief X光机故障类型 typedef enum tagEM_XRAY_COMM_ABNORMITY_TYPE { EM_XRAY_COMM_ABNORMITY_TYPE_UNKNWON = -1, // 未知 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_SUPERVISION_FAILURE, // 射线源监管故障 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_INTERLOCK_FAILURE, // 射线源互锁故障 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_HIGH_NEGATIVE_PRESSURE, // 射线源负压过高 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_HIGH_POSITIVE_PRESSURE, // 射线源正压过高 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_HIGH_TEMPERATURE, // 射线源温度过高 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_ARC_FAULT, // 射线源电弧故障 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_OVERCURRENT, // 射线源电流过大 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_POWER_LIMIT, // 射线源功率限制 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_HIGH_VOLTAGE, // 射线源电压过高 EM_XRAY_COMM_ABNORMITY_TYPE_COMMUNICATION_ERROR1, // 单片机与射线源通信异常 EM_XRAY_COMM_ABNORMITY_TYPE_COMMUNICATION_ERROR2, // 服务器与工控板通信异常 EM_XRAY_COMM_ABNORMITY_TYPE_COMMUNICATION_ERROR3, // 服务器与探测器通信异常 EM_XRAY_COMM_ABNORMITY_TYPE_SENSOR1_A_BLOCKED, // A端节能传感器被遮挡或未对齐 EM_XRAY_COMM_ABNORMITY_TYPE_SENSOR1_B_BLOCKED, // B端节能传感器被遮挡或未对齐 EM_XRAY_COMM_ABNORMITY_TYPE_SENSOR2_A_BLOCKED, // A端过包传感器被遮挡或未对齐 EM_XRAY_COMM_ABNORMITY_TYPE_SENSOR2_B_BLOCKED, // B端过包传感器被遮挡或未对齐 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_UNDERVOLTAGE, // 射线源欠压 EM_XRAY_COMM_ABNORMITY_TYPE_SOURCE_UNDERCURRENT, // 射线源欠流 EM_XRAY_COMM_ABNORMITY_TYPE_MOTOR_OVERHEATED // 电机过热 } EM_XRAY_COMM_ABNORMITY_TYPE; ///@brief 事件类型DH_ALARM_XRAY_SOURCE_ABNORMITY (X光机X射线发生器故障事件) 对应的数据块描述信息 typedef struct tagALARM_XRAY_SOURCE_ABNORMITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 unsigned int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 EM_XRAY_COMM_ABNORMITY_TYPE nAbnormalDetail[32]; // X光机故障类型 int nAbnormalDetailCnt; // X光机故障类型个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 预留字段 } ALARM_XRAY_SOURCE_ABNORMITY_INFO; ///@brief 关联图片 typedef struct tagRELATED_IMAGE { UINT nImageType; // 图片类型 0表示包裹所有者的目标图片 1表示包裹违禁品图片 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char szReserved[128]; // 预留字节 }RELATED_IMAGE; ///@brief 身份信息 typedef struct tagIDENTITY_INFO { char szCitizenName[128]; // 法定姓名 EM_SEX_TYPE emSex; // 性别 char szCitizenIDNo[20]; // 证件号18位 UINT nAge; // 年龄 char szReserved[512]; // 预留字节 }IDENTITY_INFO; ///@brief 处理方式 typedef enum tagEM_PROCESS_MODE { EM_PROCESS_MODE_UNKNOWN = -1, // 未知 EM_PROCESS_MODE_ABANDON_ONESELF, // 自弃 EM_PROCESS_MODE_RELEASE, // 放行 EM_PROCESS_MODE_STORAGE_OF_ARTICLES, // 物品保管 EM_PROCESS_MODE_TRANSFER_TO_SECURITY, // 移交公安 EM_PROCESS_MODE_DISCRETION, // 自行处理 EM_PROCESS_MODE_FALSE_ALARM, // 误报 }EM_PROCESS_MODE; ///@brief 自定义物品类型 typedef struct tagNET_XRAY_INSIDE_ONJECT_TYPE { char szObjType[32]; // 物体类型 char byReserved[256]; // 保留字节 }NET_XRAY_INSIDE_ONJECT_TYPE; ///@brief 开包检查信息 typedef struct tagUNPACKING_CHECK_INFO { UINT nUTC; // 事件发生时间,带时区偏差的UTC时间,单位秒 UINT nUTCMS; // 事件时间毫秒数 char szPackageTag[32]; // 表示包裹标识,用来唯一标识一个包裹 RELATED_IMAGE stuRelatedImage[64]; // 关联图片 int nRelatedImageRetNum; // 关联图片数量 UINT nAlarmTime; // 报警时间,UTC时间,单位秒 IDENTITY_INFO stuIdentityInfo; // 身份信息 char szContrabandClass[16][32]; // 物品分类,已废弃 int nContrabandRetNum; // 物品个数 EM_PROCESS_MODE emProcessMode; // 处理方式 char szChecker[128]; // 检出人,即开包人员 char szAlarmLocation[256]; // 报警地点 EM_INSIDE_OBJECT_TYPE emContrabandClass[64]; // 物品分类 char szPlaceOfDeparture[256]; // 行程出发地 char szDestination[256]; // 行程目的地 NET_XRAY_INSIDE_ONJECT_TYPE stuContrabandClass[64]; // 自定义物品类型 char szReserved[256]; // 预留字节 }UNPACKING_CHECK_INFO; ///@brief 事件类型 EVENT_IVS_XRAY_UNPACKING_CHECK (X光开包检查事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_XRAY_UNPACKING_CHECK_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳(单位是毫秒) UNPACKING_CHECK_INFO stuCheckInfo; // 开包检查信息 int nEventID; // 事件ID char szReserved[1024]; // 预留字节 }DEV_EVENT_XRAY_UNPACKING_CHECK_INFO; ///@brief 目标物体信息 typedef struct tagNET_BLIND_SPOT_DETECTION_OBJECT_INFO { float fLateralDistance; // 横向距离, 单位: 米 DH_MSG_OBJECT stuObject; // 检测到的物体 char szReserved[256]; // 保留字节 } NET_BLIND_SPOT_DETECTION_OBJECT_INFO; ///@brief 事件类型EVENT_IVS_DRIVE_BLIND_SPOT (盲区检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BLIND_SPOT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID UINT nAlarmLevel; // 报警等级 int nObjectNum; // 目标物体个数 NET_BLIND_SPOT_DETECTION_OBJECT_INFO stuObjectInfo[32]; // 目标物体信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 NET_GPS_STATUS_INFO stuGPS; // GPS信息 char szReserved[768]; // 保留字节 } DEV_EVENT_BLIND_SPOT_DETECTION_INFO; /****************************** 安检类事件结束 ******************************/ ///@brief 工装建模错误码 typedef enum tagEM_WORKSUIT_ABSTRACT_ERRCODE { EM_WORKSUIT_ABSTRACT_ERRCODE_UNKNWON, // 未知 EM_WORKSUIT_ABSTRACT_ERRCODE_FAILED, // 建模失败 EM_WORKSUIT_ABSTRACT_ERRCODE_SYSERR, // 系统异常(如Licence失效、建模分析器未启动导致的失败) EM_WORKSUIT_ABSTRACT_ERRCODE_DB_ERROR, // 数据库操作失败 EM_WORKSUIT_ABSTRACT_ERRCODE_OVER_NUM, // 工装数量超过限制 EM_WORKSUIT_ABSTRACT_ERRCODE_NO_STORAGE, // 剩余存储空间大小不足 } EM_WORKSUIT_ABSTRACT_ERRCODE; ///@brief 工装建模结果信息 typedef struct tagNET_WORKSUIT_ABSTRACT_INFO { char szGroupID[64]; // 工装合规组ID UINT nProcess; // 工装建模进度,百分比 UINT nToken; // 该次工装建模的token值 UINT nSucceedCnt; // 工装图片建模成功的个数 UINT nFailedCnt; // 工装图片建模失败的个数 UINT nFailedSourceFileNamesNum; // 建模失败的全景图图片名称列表个数 UINT nFailedSourceUIDNum; // 建模失败的全景图唯一标识符列表个数 char szFailedSourceFileNames[200][64]; // 建模失败的全景图图片名称列表 char szFailedSourceUID[200][64]; // 建模失败的全景图唯一标识符列表 char szReserved1[4]; // 字节对齐 UINT nErrCodeNum; // 工装建模错误码个数 EM_WORKSUIT_ABSTRACT_ERRCODE emErrCode[200]; // 工装建模错误码 char szReserved[1024]; // 预留字段 } NET_WORKSUIT_ABSTRACT_INFO; ///@brief 事件类型DH_ALARM_WORKSUIT_FEATURE_ABSTRACT (工装特征向量建模结果上报事件)对应的数据块描述信息 typedef struct tagALARM_WORKSUIT_FEATURE_ABSTRACT_INFO { int nAction; // 事件动作,0表示脉冲事件 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 UINT nAbstractInfoNum; // 工装建模结果个数 NET_WORKSUIT_ABSTRACT_INFO stuAbstractInfo[20]; // 工装建模结果信息 char szReserved[1024]; // 预留字段 } ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO; ///@brief 事件类型DH_ALARM_RUN_DETECTION (奔跑检测事件) 对应的数据块描述信息 typedef struct tagALARM_RUN_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_TIME_EX stuTime; // 事件发生的时间 UINT UTCMS; // 事件时间毫秒数 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1020]; // 保留字节 } ALARM_RUN_DETECTION_INFO; ///@brief 事件类型DH_ALARM_NONMOTOR_ENTRYING (非机动车进入电梯) 对应的数据块描述信息 typedef struct tagALARM_NONMOTOR_ENTRYING_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID UINT nSequence; // 视频帧序号 int nObjectNum; // 目标个数 VA_OBJECT_NONMOTOR stuObjects[8]; // 非机动车目标 BYTE byReserved[1024]; // 预留字段 } ALARM_NONMOTOR_ENTRYING_INFO; ///@brief 事件类型DH_ALARM_DISTANCE_DETECTION (异常间距事件) 对应的数据块描述信息 typedef struct tagALARM_DISTANCE_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) int nChannel; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 int nPresetID; // 事件触发的预置点 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[508]; // 保留字节 } ALARM_DISTANCE_DETECTION_INFO; ///@brief 事件类型DH_ALARM_STAY_DETECTION (停留事件) 对应的数据块描述信息 typedef struct tagALARM_STAY_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) int nChannel; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 int nGroupId; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nCount; // 规则被触发生次数 int nPresetID; // 事件触发的预置点 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[508]; // 保留字节 } ALARM_STAY_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_AUTO_INSPECTION (设备自检事件) 对应的数据块描述信息 typedef struct tagALARM_AUTO_INSPECTION { double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_TIME_EX stuStartTime; // 设备开始自检时间 BOOL bCheckResult; // 设备自检结果,FALSE为失败,TRUE为成功 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_AUTO_INSPECTION; ///@brief 事件类型 typedef enum tagEM_FACE_VERIFICATION_ACCESS_SNAP_TYPE { EM_FACE_VERIFICATION_ACCESS_SNAP_TYPE_UNKNOWN, // 未知类型 EM_FACE_VERIFICATION_ACCESS_SNAP_TYPE_ENTRY, // 进门 EM_FACE_VERIFICATION_ACCESS_SNAP_TYPE_EXIT, // 出门 }EM_FACE_VERIFICATION_ACCESS_SNAP_TYPE; ///@brief 目标信息 typedef struct tagNET_PERSON_INFO { BOOL bCheckResult; // 目标比对结果,成功为TRUE,失败为FALSE char szName[MAX_NAME_LENGTH]; // 姓名,比对成功时有效 char szSnapURL[MAX_SNAP_URL_LEN]; // 目标抓图地址 BYTE byReserved[512]; // 保留字节 }NET_PERSON_INFO; ///@brief 物品信息 typedef struct tagNET_GOOD_INFO { char szCode[MAX_CODE_LEN]; // 物品编号 char szSnapURL[MAX_SNAP_URL_LEN]; // 物品抓图地址 BYTE byReserved[512]; // 保留字节 }NET_GOOD_INFO; ///@brief 操作类型 typedef enum tagEM_OPERATION_TYPE { EM_OPERATION_TYPE_UNKNOWN, // 未知操作 EM_OPERATION_TYPE_FETCH, // 取物品 EM_OPERATION_TYPE_STORE, // 存物品 EM_OPERATION_TYPE_EXCHANGE, // 换物品 EM_OPERATION_TYPE_CHECK, // 检查 }EM_OPERATION_TYPE; ///@brief 事件类型 DH_ALARM_FACE_VERIFICATION_ACCESS_SNAP(目标认证开门抓图信息事件)对应的数据块描述信息 typedef struct tagALARM_FACE_VERIFICATION_ACCESS_SNAP_INFO { double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nRecNo; // 记录编号,与AccessControl事件中的记录编号一致 EM_FACE_VERIFICATION_ACCESS_SNAP_TYPE emEventType; // 事件类型 NET_PERSON_INFO stuPersonInfo[MAX_PERSON_INFO_NUM]; // 目标信息 int nRetPersonInfoNum; // 返回的目标信息个数 NET_GOOD_INFO stuGoodInfo[MAX_GOOD_INFO_NUM]; // 物品信息 int nRetGoodInfoNum; // 返回的物品信息个数 EM_OPERATION_TYPE emOperation; // 操作类型 BYTE byReserved[1020]; // 保留字节 }ALARM_FACE_VERIFICATION_ACCESS_SNAP_INFO; ///@brief 事件类型DH_ALARM_VIDEOBLIND(视频遮挡事件)对应的数据块描述信息 typedef struct tagALARM_VIDEO_BLIND_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_TIME_EX stuStartTime; // 开始时间,nAction为2时上报此字段 NET_GPS_STATUS_INFO stuGPS; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 } ALARM_VIDEO_BLIND_INFO; ///@brief 事件类型DH_ALARM_DRIVER_NOTCONFIRM (司机未按确认按钮报警事件)对应的数据块描述信息 typedef struct tagALARM_DRIVER_NOTCONFIRM_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX stuTime; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) BYTE byReserved[512]; // 保留字节 } ALARM_DRIVER_NOTCONFIRM_INFO; ///@brief 事件类型 DH_ALARM_VIOLATE_NO_FLY_TIME (违法禁飞事件) 对应的数据块描述信息 typedef struct tagALARM_VIOLATE_NO_FLY_TIME_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX stuTime; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) BYTE byReserved[512]; // 保留字节 }ALARM_VIOLATE_NO_FLY_TIME_INFO; ///@brief 事件类型 DH_ALARM_BOX_ALARM (报警盒通道的触发报警事件)对应的数据块描述信息 typedef struct tagALARM_BOX_ALARM_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szAlarmChannelName[DH_COMMON_STRING_64]; // 报警通道名称 int nAlarmBoxIndex; // 外接多个报警盒时,表示报警盒序号,从0开始 int nAlarmIndex; // 报警盒内部的通道号,从0开始 BYTE byReserved[1016]; // 保留字节 }ALARM_BOX_ALARM_INFO; ///@brief 事件类型 DH_ALARM_SOSALERT typedef struct tagALARM_SOSALERT_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生时间 char szPlateNumber[DH_COMMON_STRING_128]; // 车牌内容 NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 BYTE byReserved[1024]; // 保留字节 }ALARM_SOSALERT_INFO; ///@brief 事件类型 DH_ALARM_GYROABNORMALATTITUDE typedef struct tagALARM_GYROABNORMALATTITUDE_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生时间 int nEventID; // 事件ID double dbGyroCurRoll; // 当前翻滚角,单位:度 double dbGyroCurPitch; // 当前俯仰角,单位:度 double dbGyroCurAccel; // 当前加速度,单位:m/s^2 BYTE byReserved[1024]; // 保留字段 }ALARM_GYROABNORMALATTITUDE_INFO; ///@brief 事件类型DH_ALARM_ALARMOUTPUT(输出通道状态改变事件)对应的数据块描述信息 typedef struct tagALARM_ALARMOUTPUT_INFO { int nAction; // 事件动作,1:Start 2:Stop NET_TIME_EX UTC; // 事件发生时间 int nChannel; // 通道号 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) }ALARM_ALARMOUTPUT_INFO; ///@brief 事件类型DH_ALARM_PSTNREPORTFAILURE(电话报警未接警事件)对应的数据块描述信息 typedef struct tagALARM_PSTNREPORTFAILURE_INFO { NET_TIME_EX UTC; //事件发生的时间 }ALARM_PSTNREPORTFAILURE_INFO; ///@brief 无线网络通讯错误类型 typedef enum tagGSMFIELD_FAULT_TYPE { GSMFIELD_FAULT_UNKNOWN, //未知 GSMFIELD_FAULT_GSMModule, //通信模块掉线 GSMFIELD_FAULT_SIMCard, //未插SIM卡 }GSMFIELD_FAULT_TYPE; ///@brief 事件类型DH_ALARM_NOGSMFIELD(通信模块掉线或者sim没插事件)对应数据块描述信息 typedef struct tagALARM_NOGSMFIELD_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生时间 GSMFIELD_FAULT_TYPE emFaultType; // 通讯错误类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_NOGSMFIELD_INFO; ///@brief 事件类型DH_ALARM_MOTION_RECORD_ALARM(动检录像报警事件)对应数据块描述信息 typedef struct tagALARM_MOTION_RECORD_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannel; // 通道 BOOL bMotionIsOpen; // 是否处于动检状态 BOOL bRecordIsOpen; // 是否处于录像状态 BYTE byReserved[512]; // 保留字节 }ALARM_MOTION_RECORD_INFO; ///@brief 事件类型DH_ALARM_FACEINFO_COLLECT (目标信息录入事件)对应的数据块描述信息 typedef struct tagALARM_FACEINFO_COLLECT_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX stuTime; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) char szUserID[DH_MAX_USERID_LEN]; // 用户ID BYTE byReserved[512]; // 保留字节 } ALARM_FACEINFO_COLLECT_INFO; ///@brief 事件类型DH_ALARM_HIGH_SPEED (车辆超速报警事件)对应的数据块描述信息 typedef struct tagALARM_HIGH_SPEED_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX stuTime; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 int nSpeedLimit; // 车连限速值km/h int nCurSpeed; // 当前车辆速度km/h int nMaxSpeed; // 最高速度Km/h NET_TIME_EX stuStartTime; // 开始时间,nAction为2时上报此字段 BYTE byReserved[472]; // 保留字节 } ALARM_HIGH_SPEED_INFO; ///@brief 采集源分辨率 typedef enum tagEM_NET_VIFORMAT_TYPE { EM_NET_VIFORMAT_TYPE_UNKNOWN = -1, // 未知 EM_NET_VIFORMAT_TYPE_NORMAL, // 表示正常分辨率 EM_NET_VIFORMAT_TYPE_UNSUPPORT, // 表示不支持的分辨率 EM_NET_VIFORMAT_TYPE_NOT_CONNECTED, // 表示未接采集源 } EM_NET_VIFORMAT_TYPE; ///@brief 事件类型DH_ALARM_VIDEO_LOSS (视频丢失事件)对应的数据块描述信息 typedef struct tagALARM_VIDEO_LOSS_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) BYTE byReserved1[4]; // 字节对齐 NET_TIME_EX stuTime; // 事件发生的时间 NET_TIME_EX stuStartTime; // 开始时间,nAction为2时上报此字段 NET_GPS_STATUS_INFO stuGPS; // GPS信息 EM_NET_VIFORMAT_TYPE emViFormat; // 采集源分辨率 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1020]; // 保留字节 } ALARM_VIDEO_LOSS_INFO; ///@brief 事件类型 DH_ALARM_SMARTHOME_GET_AUTHORIZED (室内机告知平台获取授权二维码信息)对应的数据块描述信息 typedef struct tagALARM_SMARTHOME_GET_AUTHORIZED { int nAction; // 0:脉冲 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 BOOL bIsTest; // 是否请求体验二维码; TRUE: 请求体验二维码, FALSE:请求正式二维码 char byReserved[1020]; // 预留字节 }ALARM_SMARTHOME_GET_AUTHORIZED; ///@brief 事件类型 DH_ALARM_SMARTHOME_UPDATE_SCENE (室内机告知平台需要更新智能家居场景列表)对应的数据块描述信息 typedef struct tagALARM_SMARTHOME_UPDATE_SCENE { int nAction; // 0:脉冲 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 char byReserved[1024]; // 预留字节 }ALARM_SMARTHOME_UPDATE_SCENE; ///@brief ASG 报警类型 typedef enum tagEM_ASG_ALARM_TYPE { EM_ASG_ALARM_BREAK_UNKNOWN, // 未知 EM_ASG_ALARM_BREAK_DOWN, // 故障 EM_ASG_ALARM_ANTI_DEMOLITION, // 防拆 EM_ASG_ALARM_FOLLOW, // 尾随 EM_ASG_ALARM_TIMEOUT, // 超时 EM_ASG_ALARM_STAY, // 逗留 EM_ASG_ALARM_FORCIBLY_OPEN, // 强行打开闸机 EM_ASG_ALARM_MISTAKENLY_ENTER, // 误闯 EM_ASG_ALARM_REVERSE_ENTER, // 逆闯 EM_ASG_ALARM_CLIMB, // 翻越 EM_ASG_ALARM_TWO_WAY_CONFLICT, // 双向通行冲突时报警 EM_ASG_ALARM_POWER_ON_SELF_TEST_FAILED, // 上电自检未通过报警 }EM_ASG_ALARM_TYPE; ///@brief 事件类型 DH_ALARM_ASG (ASG报警)对应的数据块描述信息 typedef struct tagALARM_ASG_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 EM_ASG_ALARM_TYPE emAlarmType; // 报警类型 char byReserved[1024]; // 预留字节 }ALARM_ASG_INFO; ///@brief 事件类型 DH_ALARM_ASGSTAY (闸机滞留报警事件) 对应的数据块描述信息 typedef struct tagALARM_ASGSTAY_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1020]; // 预留字节 } ALARM_ASGSTAY_INFO; ///@brief 事件类型 DH_ALARM_ASGFOLLOWING (闸机尾随报警事件) 对应的数据块描述信息 typedef struct tagALARM_ASGFOLLOWING_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1020]; // 预留字节 } ALARM_ASGFOLLOWING_INFO; ///@brief 事件类型 DH_ALARM_ASGCLIMBOVER (闸机翻越报警事件) 对应的数据块描述信息 typedef struct tagALARM_ASGCLIMBOVER_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1020]; // 预留字节 } ALARM_ASGCLIMBOVER_INFO; ///@brief 报警类型 typedef enum tagEM_ASGBREAKDOWN_ALARM_TYPE { EM_ASGBREAKDOWN_ALARM_TYPE_UNKNOWN, // 未知 EM_ASGBREAKDOWN_ALARM_TYPE_INFRARED, // 红外 EM_ASGBREAKDOWN_ALARM_TYPE_COMMUNICATION, // 通讯 EM_ASGBREAKDOWN_ALARM_TYPE_DOOR_WING, // 门翼 } EM_ASGBREAKDOWN_ALARM_TYPE; ///@brief 事件类型 DH_ALARM_ASGBREAKDOWN (闸机故障事件) 对应的数据块描述信息 typedef struct tagALARM_ASGBREAKDOWN_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 EM_ASGBREAKDOWN_ALARM_TYPE emAlarmType; // 报警类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1016]; // 预留字节 } ALARM_ASGBREAKDOWN_INFO; ///@brief 事件类型 DH_ALARM_PARKING_OVERLOAD (停车场过载事件) 对应的数据块描述信息 typedef struct tagALARM_PARKING_OVERLOAD_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szName[128]; // 事件名称 UINT nParkingCapacity; // 停车车位框个数 UINT nTotalParkingCount; // 总入场车辆个数 DEV_OCCUPIED_WARNING_INFO stuParkingInfo[64]; // 停车车位信息 BYTE byReserved[2048]; // 预留字节 } ALARM_PARKING_OVERLOAD_INFO; ///@brief 事件类型 DH_ALARM_LIFTCONTROL_REQUEST (梯控事件) 对应的数据块描述信息 typedef struct tagALARM_LIFTCONTROL_REQUEST_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_ACCESS_DOOROPEN_METHOD emDoorOpenMethod; // 开门方式 char szUserID[32]; // 用户ID char szSrcAddr[64]; // 事件发送方IP地址 char byReserved[1024]; // 预留字节 }ALARM_LIFTCONTROL_REQUEST_INFO; ///@brief 事件类型 DH_ALARM_REMOTE_DEVICE_GPS (远程设备GPS事件) 对应的数据块描述信息 typedef struct tagALARM_REMOTE_DEVICE_GPS_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 char byReserved[1024]; // 预留字节 }ALARM_REMOTE_DEVICE_GPS_INFO; ///@brief 过车统计设备类型 typedef enum tagEM_ENTRANCE_STAT_DEVICE_TYPE { EM_ENTRANCE_STAT_DEVICE_TYPE_UNKNOWN, // 未知 EM_ENTRANCE_STAT_DEVICE_TYPE_RADAR, // 雷达 EM_ENTRANCE_STAT_DEVICE_TYPE_STROBE, // 道闸 EM_ENTRANCE_STAT_DEVICE_TYPE_CAMERA, // 相机 }EM_ENTRANCE_STAT_DEVICE_TYPE; ///@brief 事件类型 DH_ALARM_ENTRANCE_CAR_STAT_INFO (出入口过车数量统计事件) 对应的数据块描述信息 typedef struct tagALARM_ENTRANCE_CAR_STAT_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 char szName[128]; // 事件名称 NET_TIME stuBeginTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nCarCount; // 统计时间段内累计过车数量 EM_ENTRANCE_STAT_DEVICE_TYPE emStatDeviceType; // 统计设备类型 char byReserved[1024]; // 预留字节 }ALARM_ENTRANCE_CAR_STAT_INFO; ///@brief 闸机角色 typedef enum tagEM_ASG_ROLE_TYPE { EM_ASG_ROLE_TYPE_UNKNOWN, // 未知 EM_ASG_ROLE_TYPE_MASTER, // 主机 EM_ASG_ROLE_TYPE_SLAVE, // 从机 }EM_ASG_ROLE_TYPE; ///@brief 事件类型 DH_ALARM_ASG_INTRUDED (闸机机箱防拆事件) 对应的数据块描述信息 typedef struct tagALARM_ASG_INTRUDED_INFO { int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 int nASGChannel; // 闸机通道号 EM_ASG_ROLE_TYPE emASGRole; // 闸机角色 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1024]; // 预留字节 }ALARM_ASG_INTRUDED_INFO; ///@brief 事件类型 DH_ALARM_ASG_ANTIPINCH (闸机门翼防夹事件) 对应的数据块描述信息 typedef struct tagALARM_ASG_ANTIPINCH_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 char byReserved[1024]; // 预留字节 } ALARM_ASG_ANTIPINCH_INFO; ///@brief 事件类型 DH_ALARM_IDCARDINFO_CHECK (证件信息上报,平台核验事件) 对应的数据块描述信息 typedef struct tagALARM_IDCARDINFO_CHECK_INFO { int nChannel; // 通道 int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved1[4]; // 预留字段 char szCitizenID[64]; // 证件号 char szCitizenName[64]; // 姓名 char szIssueAuthority[128]; // 发证机关 char szCitizenAddress[128]; // 证件地址 NET_TIME stuBirthDay; // 出生日期(年月日有效) NET_TIME stuBeginValidTime; // 证件有效期开始时间(年月日有效) NET_TIME stuEndValidTime; // 证件有效期结束时间(年月日有效) char szLatestAddress[128]; // 最新住址 EM_CITIZENIDCARD_EC_TYPE emMZ; EM_CITIZENIDCARD_SEX_TYPE emSex; // 性别 char byReserved[1024]; // 预留字段 }ALARM_IDCARDINFO_CHECK_INFO; ///@brief SIP客户端信息 typedef struct tagNET_SIP_REGISTER_USER_INFO { char szID[32]; // SIP客户端号码 char szIpAddr[32]; // 注册的IP地址 UINT nPort; // 注册端口 BOOL bOnline; // 用户正常注册且网络正常情况下bOnline=TRUE,否则bOnline=FALSE char szDevType[32]; // 客户端设备类型 char szVtoType[32]; // VTO具体子类型 char szUserAgent[32]; // 客户端信息标识 char szGroupNbr[32]; // 客户端群组号码 char szReserved[512]; // 预留字段 }NET_SIP_REGISTER_USER_INFO; ///@brief 事件类型 DH_ALARM_SIP_REGISTER_RESULT(注册状态事件) 对应的数据块描述信息 typedef struct tagALARM_SIP_REGISTER_RESULT_INFO { int nChannelID; // 通道 int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 BOOL bSuccess; // 注册结果 char szDate[32]; // 注册后同步客户端时间 NET_SIP_REGISTER_USER_INFO stuUserInfo; // SIP客户端信息 char szReserved[1024]; // 预留字段 }ALARM_SIP_REGISTER_RESULT_INFO; ///@brief 手势信息 typedef struct tagNET_GESTURE_INFO { char szType[32]; // 手势类型 UINT nCount; // 报警触发次数 char szReserved[256]; // 预留字段 }NET_GESTURE_INFO; ///@brief 事件类型 DH_ALARM_GESTURE_DETECTION(手势检测事件) 对应的数据块描述信息 typedef struct tagALARM_GESTURE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID NET_GESTURE_INFO stuGestureInfo; // 手势信息 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 char szReserved[1024]; // 预留字节 }ALARM_GESTURE_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_ABNORMAL_RESTART(异常重启事件) 对应的数据块描述信息 typedef struct tagALARM_ABNORMAL_RESTART_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 UINT uAlarmCode; // 异常重启错误码 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[1024]; // 预留字节 }ALARM_ABNORMAL_RESTART_INFO; ///@brief 防区状态 typedef enum tagEM_DEFENSE_STATE { EM_DEFENSE_STATE_UNKNOWN, // 未知 EM_DEFENSE_STATE_ARMING, // 布防 EM_DEFENSE_STATE_DISARMING, // 撤防 }EM_DEFENSE_STATE; ///@brief 防区状态数组,最多10个防区 typedef struct tagNET_DEFENSE_STATE { EM_DEFENSE_STATE emState; // 防区状态 int nDefenseID; // 防区ID char szReserved[256]; // 预留字节 }NET_DEFENSE_STATE; ///@brief 事件类型 DH_ALARM_DEFENSE_CHANGE (撤布防事件) 对应的数据块描述信息 typedef struct tagALARM_DEFENSE_CHANGE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nDefenseStateNum; // 防区状态个数; NET_DEFENSE_STATE stuDefenseState[10]; // 防区状态数组,最多10个防区 int nSourceFlag; // 控制布撤防事件来源的标志位(0:未知;1:遥控器控制) NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 预留字节 }ALARM_DEFENSE_CHANGE_INFO; ///@brief 录播录像上传状态 typedef enum tagNET_COURSE_RECORD_UPLOAD_PROCESS_STATUS { NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS_UNKNOW, // 上传状态未知 NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS_UPLOADING, // 上传中 NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS_COMPLETE, // 上传成功 NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS_FAILED // 上传失败 }NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS; ///@brief 录播录像文件上传失败错误码 typedef enum tagNET_COURSE_RECORD_UPLOAD_ERROR_CODE { NET_COURSE_RECORD_UPLOAD_ERROR_CODE_UNKNOW = -1, // 错误码未知 NET_COURSE_RECORD_UPLOAD_NORMAL, // 正常 NET_COURSE_RECORD_UPLOAD_FAIL_OBTAIN_PUBLIC_KEY, // 获取公钥失败 NET_COURSE_RECORD_UPLOAD_FAIL_OBTAIN_TOKEN, // 获取token失败 NET_COURSE_RECORD_UPLOAD_FAIL_OBTAIN_OSS_ADDRESS, // 获取OSS地址失败 NET_COURSE_RECORD_UPLOAD_FAIL_CONNECT_OSS_ADDRESS, // OSS地址连接失败 NET_COURSE_RECORD_UPLOAD_FAILED, // 文件上传失败 NET_COURSE_RECORD_UPLOAD_RETURN_VALUE_ERROR // 文件上传返回值错误 }NET_COURSE_RECORD_UPLOAD_ERROR_CODE; ///@brief 录像上传文件信息 typedef struct tagCOURSE_RECORD_UPLOAD_FILE_INFO { char szFilePath[256]; // 上传文件地址 TP_U64 nFileTime; // 文件总时长,单位秒 TP_U64 nFileLength; // 文件总大小,单位Kb int nIndex; // 文件编号 int nFileUploadProcess; // 文件上传进度,百分比,0~100% NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS emStatus; // 单文件上传状态 NET_COURSE_RECORD_UPLOAD_ERROR_CODE emErrorCode; // 文件上传失败错误码 char byReserved[1008]; // 预留字段 } COURSE_RECORD_UPLOAD_FILE_INFO; ///@brief 录播文件类型 typedef enum tagEM_COURSE_RECORD_UPLOAD_RECORD_TYPE { EM_COURSE_RECORD_UPLOAD_RECORD_TYPE_UNKNOWN, // 未知 EM_COURSE_RECORD_UPLOAD_RECORD_TYPE_ORDINARY_RECORDING, // 普通录播 EM_COURSE_RECORD_UPLOAD_RECORD_TYPE_INTERACTIVE_RECORDING, // 互动录播 EM_COURSE_RECORD_UPLOAD_RECORD_TYPE_DEMONSTRATION, // 演示 }EM_COURSE_RECORD_UPLOAD_RECORD_TYPE; ///@brief 录播录像上传结束事件 typedef struct tagALARM_COURSE_RECORD_UPLOAD_INFO { int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 BOOL bUploadResult; // 上传结果 int nFileNum; // 录像上传文件个数 COURSE_RECORD_UPLOAD_FILE_INFO stuFileInfo[64]; // 录像上传文件信息 UINT nId; // 上传课程ID NET_TIME stuFileStartTime; // 完整录像(未分割前)的开始时间。无论该文件被分割成几个小文件上传,同一文件分割的分文件的开始时间相同 NET_TIME stuFileEndTime; // 完整录像(未分割前)的结束时间。无论该文件被分割成几个小文件上传,同一文件分割的分文件的结束时间相同 NET_COURSE_RECORD_UPLOAD_PROCESS_STATUS emStatus; // 上传状态 UINT nFileId; // 课程录像文件id号,每一节课,都有一个课程录像文件id号 int nChannel; // 真实通道号,从0开始 char szCallID[64]; // 互动ID EM_COURSE_RECORD_UPLOAD_RECORD_TYPE emRecordType; // 录播文件类型 char byReserved[892]; // 预留字段 } ALARM_COURSE_RECORD_UPLOAD_INFO; ///@brief 获取预约信息的凭证类型 typedef enum tagEM_APPOINTMENT_PROOF_TYPE { EM_APPOINTMENT_PROOF_TYPE_UNKNOWN, // 未知 EM_APPOINTMENT_PROOF_TYPE_CITIZENID, // 证件 EM_APPOINTMENT_PROOF_TYPE_APPOINTCODE, // 预约码 }EM_APPOINTMENT_PROOF_TYPE; ///@brief 事件类型 DH_ALARM_REQUEST_APPOINTMENT_INFO (请求预约信息事件) 对应的数据块描述信息 typedef struct tagALARM_REQUEST_APPOINTMENT_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 EM_APPOINTMENT_PROOF_TYPE emProofType; // 凭证类型 char szProofInfo[64]; // 凭证信息 // emProofType 为 EM_APPOINTMENT_PROOF_TYPE_CITIZENID 时,为证件号码 // emProofType 为 EM_APPOINTMENT_PROOF_TYPE_APPOINTCODE 时,为预约码 UINT nUniqueID; // 请求唯一标识 }ALARM_REQUEST_APPOINTMENT_INFO; ///@brief 视频采集模式 typedef enum tagEM_VIDEO_COLLECT_MODE { EM_VIDEO_COLLECT_MODE_UNKNOWN, // 未知 EM_VIDEO_COLLECT_MODE_NON, // 不采集 EM_VIDEO_COLLECT_MODE_SINGLE, // 单次采集 EM_VIDEO_COLLECT_MODE_INTERVAL, // 定间隔采集 EM_VIDEO_COLLECT_MODE_CONTINUOUSLY, // 连续采集 }EM_VIDEO_COLLECT_MODE; ///@brief 事件类型 DH_ALARM_REQUEST_RECORD (请求录像信息事件) 对应的数据块描述信息 typedef struct tagALARM_REQUEST_RECORD_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 EM_VIDEO_COLLECT_MODE emCollectMode; // 视频采集模式 int nCollectInterval; // 视频采集间隔,emCollectMode 为 EM_VIDEO_COLLECT_MODE_INTERVAL 时有效 int nCollectDuration; // 视频采集时长,单位秒,emCollectMode 为 EM_VIDEO_COLLECT_MODE_INTERVAL 时有效 BYTE byReserved[1020]; // 预留字段 }ALARM_REQUEST_RECORD_INFO; ///@brief 图片采集模式 typedef enum tagEM_PICTURE_COLLECT_MODE { EM_PICTURE_COLLECT_MODE_UNKNOWN, // 未知 EM_PICTURE_COLLECT_MODE_NON, // 不采集 EM_PICTURE_COLLECT_MODE_SINGLE, // 单次采集 EM_PICTURE_COLLECT_MODE_INTERVAL, // 定间隔采集 }EM_PICTURE_COLLECT_MODE; ///@brief 事件类型 DH_ALARM_REQUEST_SNAP (请求录像信息事件) 对应的数据块描述信息 typedef struct tagALARM_REQUEST_SNAP_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 EM_PICTURE_COLLECT_MODE emCollectMode; // 图片采集模式 int nCollectInterval; // 图片采集间隔,emCollectMode 为 EM_PICTURE_COLLECT_MODE_INTERVAL 时有效 BYTE byReserved[1024]; // 预留字段 }ALARM_REQUEST_SNAP_INFO; ///@brief 云台异常前的动作类型 typedef enum tagEM_PTZ_ABNORMAL_PRE_ACTION_TYPE { EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_UNKNOWN, // 未知 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_NONE, // 无动作 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_PATROL_TRACK, // 巡迹 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_HORIZONTAL_LINE_SCANNING, // 水平线扫 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_CRUISE_GROUP, // 巡航组 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE_HORIZONTAL_ROTATION, // 水平旋转 }EM_PTZ_ABNORMAL_PRE_ACTION_TYPE; ///@brief 云台异常原因 typedef enum tagEM_PTZ_ABNORMAL_REASON_TYPE { EM_PTZ_ABNORMAL_REASON_TYPE_UNKNOWN, // 未知 EM_PTZ_ABNORMAL_REASON_TYPE_COMMUNICATION, // 通讯异常 EM_PTZ_ABNORMAL_REASON_TYPE_STOP, // 停止 EM_PTZ_ABNORMAL_REASON_TYPE_OUT_OF_STEP, // 失步 }EM_PTZ_ABNORMAL_REASON_TYPE; ///@brief 事件类型 DH_ALARM_PTZ_ABNORMAL (云台异常检测事件)对应的数据块描述信息 typedef struct tagALARM_PTZ_ABNORMAL_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 EM_PTZ_ABNORMAL_PRE_ACTION_TYPE emPtzAbnormalPreAction; // 云台异常前的动作 EM_PTZ_ABNORMAL_REASON_TYPE emPtzAbnormalReason; // 云台异常原因 BYTE byReserved[1024]; // 保留字节 }ALARM_PTZ_ABNORMAL_INFO; ///@brief 事件类型 DH_ALRAM_STORAGEFORMAT (硬盘格式化事件) typedef struct tagALARM_STORAGEFORMAT_INFO { int nAction; // 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 char szDeviceName[64]; // 硬盘名称 char szPath[256]; // 目录路径 int nResult; // 0-未知, 1-成功, 2-失败 BYTE byReserved[260]; // 保留字节 }ALARM_STORAGEFORMAT_INFO; ///@brief 信令类型 typedef enum tagEM_CMD_TO_APP_TYPE { EM_CMD_TO_APP_TYPE_UNKNOWN, // 未知 EM_CMD_TO_APP_TYPE_UPGRADECUSTOM // 自定义升级信令 } EM_CMD_TO_APP_TYPE; ///@brief 升级状态 typedef enum tagEM_APP_UPGRADE_STATE { EM_APP_UPGRADE_STATE_UNKNOWN, // 未知 EM_APP_UPGRADE_STATE_PREPARING, // 准备升级 EM_APP_UPGRADE_STATE_DOWNLOADING, // 正在下载数据 EM_APP_UPGRADE_STATE_UPGRADING, // 正在升级 EM_APP_UPGRADE_STATE_INVALID, // 升级包不正确 EM_APP_UPGRADE_STATE_FAILED, // 升级失败 EM_APP_UPGRADE_STATE_SUCCEEDED, // 升级成功 EM_APP_UPGRADE_STATE_CANCELLED, // 取消升级 EM_APP_UPGRADE_STATE_NOT_ENOUGH_MEMORY, // 内存不够 EM_APP_UPGRADE_STATE_FILE_UNMATCH, // 升级包不匹配 EM_APP_UPGRADE_STATE_OEM_NOT_COMPARE, // 升级包是OEM版不能升级程序 EM_APP_UPGRADE_STATE_UNMATCH_VERSION, // 升级包版本不匹配 EM_APP_UPGRADE_STATE_PART_UPGRADED, // 部分升级成功,导致不同芯片版本不匹配 EM_APP_UPGRADE_STATE_SETURL, // URL下载升级 } EM_APP_UPGRADE_STATE; ///@brief 事件类型 DH_ALARM_APPCMDSTATE (透传信令到Dhop的App事件) typedef struct tagALARM_APPCMDSTATE_INFO { int nAction; // 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 char szUUID[64]; // 本次请求的唯一标识UUID EM_CMD_TO_APP_TYPE emCmdType; // 信令类型 EM_APP_UPGRADE_STATE emState; // 升级状态 int nProgress; // 升级进度 BYTE byReserved[508]; // 保留字节 }ALARM_APPCMDSTATE_INFO; ///@brief 事件类型 DH_ALARM_BLUE_TOOTH_HEADSET_ALARM (蓝牙耳机"一键报警"事件) typedef struct tagALARM_BLUE_TOOTH_HEADSET_ALARM_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szName[128]; // 事件名称 char szDeviceSerialNum[32]; // 设备序列号 BYTE byReserved[256]; // 保留字节 }ALARM_BLUE_TOOTH_HEADSET_ALARM_INFO; ///@brief 太阳能蓄电池信息 typedef struct tagSOLARCELL_BATTERY_INFO { int nElectricityQuantityPercent;// 电量百分比(范围:0~100) float fVoltage; // 电压(单位:V) float fTemperature; // 温度(单位:℃) float fControllerTemper; // 控制温度(单位:℃) BYTE byReserved[256]; // 保留字节 }SOLARCELL_BATTERY_INFO; ///@brief 太阳能板信息 typedef struct tagSOLARCELL_PANEL_INFO { float fVoltage; // 电压(单位:V) float fElectricCurrent; // 电流(单位:A) float fChargingPower; // 充电功率 BYTE byReserved[252]; // 保留字节 }SOLARCELL_PANEL_INFO; ///@brief 太阳能系统历史数据信息 typedef struct tagSOLARCELL_SYSTEM_HISTORY_INFO { int nSystemTotalRunDay; // 系统运行时间(单位:天) int nBatteryOverDischargeCount; // 蓄电池总过放次数 int nBatteryTotalChargeCount; // 徐电磁总充满电次数 BYTE byReserved[252]; // 保留字节 }SOLARCELL_SYSTEM_HISTORY_INFO; ///@brief 太阳能系统故障信息 typedef enum tagEM_SOLARCELL_SYSTEM_FAULT_TYPE { EM_SOLARCELL_FAULT_UNKNOWN, // 未知 EM_SOLARCELL_FAULT_BATTERY_OVER_DISCHARGE, // 电池过放 EM_SOLARCELL_FAULT_BATTERY_PRESSURE, // 电池施压 EM_SOLARCELL_FAULT_UNDERVOLTAGE_WARNING, // 欠压警告 EM_SOLARCELL_FAULT_LOAD_SHORT_CIRCUIT, // 负载短路 EM_SOLARCELL_FAULT_EXCESSIVE_LOAD_ABNORMAL, // 负载功率过大或负载过流 EM_SOLARCELL_FAULT_CONTROLLER_TEMPERATURE_HIGH, // 控制器温度过高 EM_SOLARCELL_FAULT_HIGH_EXTERNAL_TEMPERATURE, // 外部环境温度过高 EM_SOLARCELL_FAULT_EXCESSIVE_INPUT_POWER, // 光伏输入功率过大 EM_SOLARCELL_FAULT_INPUT_SHORT_CIRCUIT, // 光伏输入端短路 EM_SOLARCELL_FAULT_INPUT_TERMINAL_OVERPRESSURE, // 光伏输入端超压 EM_SOLARCELL_FAULT_SOLAR_PLATE_COUNTERCURRENT, // 太阳板逆流 EM_SOLARCELL_FAULT_SOLAR_PLATE_OVERPRESSURE, // 太阳板工作点超压 EM_SOLARCELL_FAULT_REVERSE_CONNECTION_OF_SOLAR_PANEL, // 太阳板反接 EM_SOLARCELL_FAULT_ANTI_REVERSE_MOS_SHORT, // Anti-reverse MOS short EM_SOLARCELL_FAULT_CIRCUIT_CHARGE_MOS_SHORT_CIRCUI, // Circuit,charge MOS short circui }EM_SOLARCELL_SYSTEM_FAULT_TYPE; ///@brief 事件类型 DH_ALARM_SOLARCELL_SYSTEM_INFO(太阳能系统信息上报) typedef struct tagALARM_SOLARCELL_SYSTEM_INFO { int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) SOLARCELL_BATTERY_INFO stuBatteryInfo; // 蓄电池信息 SOLARCELL_PANEL_INFO stuSolarPanel; // 太阳能板信息 SOLARCELL_SYSTEM_HISTORY_INFO stuHistoryInfo; // 历史数据信息 EM_SOLARCELL_SYSTEM_FAULT_TYPE emSystemFault[32]; // 系统故障 int nSystemFault; // 系统故障个数 BYTE byReserved[1020]; // 保留字节 }ALARM_SOLARCELL_SYSTEM_INFO; ///@brief 事件类型 DH_ALARM_REGION_PARKING_TIMEOUT(区间车位停车超时) typedef struct tagALARM_REGION_PARKING_TIMEOUT_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME_EX stuCarInParkingLotTime;// 车辆驶入停车场时间(单位:秒) char szPlateNumber[64]; // 车牌号码 char szInParkRegionInfo[128];// 停车区间信息 BYTE byReserved[1024]; // 保留字节 }ALARM_REGION_PARKING_TIMEOUT_INFO; ///@brief 事件类型 DH_ALARM_REGION_PARKING_NO_ENTRY_RECORD(区间车位停车驶出没有驶入记录) typedef struct tagALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME_EX stuCarOutParkingSpaceTime;// 车辆驶出区域停车位时间(单位:秒) char szPlateNumber[64]; // 车牌号码 char szInParkRegionInfo[128];// 停车区间信息 BYTE byReserved[1024]; // 保留字节 }ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO; ///@brief 事件类型 DH_ALARM_OVER_LOAD(超载) typedef struct tagALARM_OVER_LOAD_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 UINT nEnteredTotal; // 进入人数 UINT nExitedTotal; // 离开人数 UINT nInsideTotal; // 滞留人数 BYTE byReserved[1024]; // 保留字节 }ALARM_OVER_LOAD_INFO; ///@brief 智能网关数据类型 typedef enum tagEM_WIRELESS_DATA_TYPE { EM_WIRELESS_DATA_TYPE_UNKNOWN, // 未知 EM_WIRELESS_DATA_TYPE_BINARY, // 二进制 EM_WIRELESS_DATA_TYPE_LOG, // 日志 }EM_WIRELESS_DATA_TYPE; ///@brief 事件类型 DH_ALARM_WIRELESS_LOG_INFO(智能网关日志或二进制数据) typedef struct tagALARM_WIRELESS_LOG_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 EM_WIRELESS_DATA_TYPE emDataType; // 数据类型 char szBinaryData[1024]; // 二进制数据(emDataType 为 EM_WIRELESS_DATA_TYPE_BINARY 有效) char szLogInfo[2048]; // 日志信息(emDataType 为 EM_WIRELESS_DATA_TYPE_LOG 有效) }ALARM_WIRELESS_LOG_INFO; ///@brief 事件类型 DH_ALARM_TIME_TO_POWEROFF (电池相机达到拉流预览时间上限关机通知事件) typedef struct tagALARM_TIME_TO_POWEROFF_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 UINT nCountdown; // 距离强制关机时间, 单位:秒 }ALARM_TIME_TO_POWEROFF_INFO; ///@brief 交通灯故障检测源 typedef enum tagEM_FAULT_DETECT_SOURCE_TYPE { EM_FAULT_DETECT_SOURCE_TYPE_UNKNOWN, // 未知 EM_FAULT_DETECT_SOURCE_TYPE_COIL, // 线圈 EM_FAULT_DETECT_SOURCE_TYPE_VIDEO, // 视频 }EM_FAULT_DETECT_SOURCE_TYPE; ///@brief 事件类型 DH_ALARM_TRAFFIC_LIGHT_FAULT_STATE(交通灯故障报警事件) typedef struct tagALARM_TRAFFIC_LIGHT_FAULT_INFO { int nAction; // 1:开始 2:停止 int nChannelID; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_FAULT_DETECT_SOURCE_TYPE emDetectSource; // 交通灯故障检测源 UINT nStraightLightMask[3]; // 直行灯故障状态,0-绿灯 1-红灯 2-黄灯,非0表示信号灯有故障 UINT nTurnLeftLightMask[3]; // 左转灯故障状态,0-绿灯 1-红灯 2-黄灯,非0表示信号灯有故障 UINT nTurnRightLightMask[3]; // 右转灯故障状态,0-绿灯 1-红灯 2-黄灯,非0表示信号灯有故障 UINT nUTurnLightMask[3]; // 掉头灯故障状态,0-绿灯 1-红灯 2-黄灯,非0表示信号灯有故障 EVENT_COMM_INFO stCommInfo; // 公共信息 BYTE byReserved[1024]; // 保留字节 }ALARM_TRAFFIC_LIGHT_FAULT_INFO; ///@brief 车载外设类型 typedef enum tagEM_VEHICLE_PERIPHERAL_TYPE { EM_VEHICLE_PERIPHERAL_TYPE_UNKNOWN, // 未知类型 EM_VEHICLE_PERIPHERAL_TYPE_CAN, // CAN }EM_VEHICLE_PERIPHERAL_TYPE; ///@brief 外设报警事件 typedef enum tagEM_VEHICLE_PERIPHERAL_ALARM { EM_VEHICLE_PERIPHERAL_ALARM_UNKNOWN, // 未知类型 EM_VEHICLE_PERIPHERAL_ISD_COLLISION_WARNING, // ISD碰撞预警 EM_VEHICLE_PERIPHERAL_ISD_TURTLE_SPEED_OVERSPEED, // ISD龟速超速 EM_VEHICLE_PERIPHERAL_ISD_SNAIL_SPEED_OVERSPEED, // ISD蜗速超速 EM_VEHICLE_PERIPHERAL_ISD_COLLISION_SQUEEZE_WARNING, // ISD碰撞挤压预警 EM_VEHICLE_PERIPHERAL_ISD_FAILURE, // ISD故障 EM_VEHICLE_PERIPHERAL_ISD_CANCELLED_INSIDE, // ISD场外解除 EM_VEHICLE_PERIPHERAL_ISD_CANCELLED_OUTSIDE // ISD场内解除 }EM_VEHICLE_PERIPHERAL_ALARM; ///@brief 事件类型 DH_ALARM_VEHICLE_PERIPHERAL 车载外设异常报警 typedef struct tagALARM_VEHICLE_PERIPHERAL_INFO { int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 EM_VEHICLE_PERIPHERAL_TYPE emPeripheralType; // 外设类型 EM_VEHICLE_PERIPHERAL_ALARM emAlarm; // 报警类型 double dbSpeed; // 速度, 单位km/h(小数点后一位) double dbDistance; // 距离, 单位m BYTE byReserved[1024]; // 保留字节 }ALARM_VEHICLE_PERIPHERAL_INFO; ///@brief 事件类型 DH_ALARM_FIRE_LANE_DETECTION (消防占道检测事件)对应的数据块描述信息 typedef struct tagALARM_FIRE_LANE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始,2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 DH_MSG_OBJECT stuObjects[32]; // 检测到的物体 UINT nObjectNum; // 检测到的物体个数 int nEventID; // 事件ID int nRuleID; // 规则编号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1020]; // 预留字段 } ALARM_FIRE_LANE_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_FIRE_LINE_DETECTION (进入消防通道检测)对应的数据块描述信息 typedef struct tagALARM_FIRE_LINE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号 DH_MSG_OBJECT stuObjects[32]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 BYTE byReserved[1020]; // 保留字节 }ALARM_FIRE_LINE_DETECTION_INFO; ///@brief 硬盘错误类型 typedef enum tagEM_DISK_ERROR_TYPE { EM_DISK_ERROR_TYPE_UNKNOWN, // 未知 EM_DISK_ERROR_TYPE_TEMPERATURE, // 温度异常 EM_DISK_ERROR_TYPE_VIBRATION, // 震动异常 EM_DISK_ERROR_TYPE_PHYSICAL_SHOCK, // 物理撞击异常 EM_DISK_ERROR_TYPE_HARD_DRIVER, // 链路异常 EM_DISK_ERROR_TYPE_HOST_RESET, // 复位异常 EM_DISK_ERROR_TYPE_OTHER, // 其他错误 }EM_DISK_ERROR_TYPE; ///@brief 存储介质类型 typedef enum tagEM_STORAGE_MEDIA_TYPE { EM_STORAGE_MEDIA_TYPE_UNKNOWN, // 未知 EM_STORAGE_MEDIA_TYPE_CDROM, // 光盘 EM_STORAGE_MEDIA_TYPE_DISK, // 硬盘 EM_STORAGE_MEDIA_TYPE_FLASH, // SD卡 EM_STORAGE_MEDIA_TYPE_FROCK, // 产线工装 }EM_STORAGE_MEDIA_TYPE; ///@brief 硬盘生产厂家 typedef enum tagEM_DISK_MANU_FACTORY { EM_DISK_MANU_FACTORY_UNKNOWN, // 其他厂家 EM_DISK_MANU_FACTORY_WD, // 西数 EM_DISK_MANU_FACTORY_SG, // 西捷 }EM_DISK_MANU_FACTORY; ///@brief 事件类型 DH_ALARM_DISK_HEALTH_FAILURE (硬盘健康异常事件)对应的数据块描述信息 typedef struct tagALARM_DISK_HEALTH_FAILURE_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szEventName[128]; // 事件名称 char szGroup[32]; // 目录所在工作组 char szDeviceName[64]; // 设备名称 EM_STORAGE_DISK_PREDISKCHECK emDiskStatus; // 硬盘状态 EM_DISK_ERROR_TYPE emDiskError; // 硬盘错误类型 NET_TIME_EX UTC; // 事件发生的时间 int nPhysicNo; // 物理编号 EM_DISK_MANU_FACTORY emDiskManuFactory; // 硬盘生产厂家 EM_STORAGE_MEDIA_TYPE emStrobeMedia; // 存储介质 char szSerialNo[32]; // 硬盘序列号 UINT nCmdErrMask; // 指令错误,原始错误码 BYTE byReserved[1020]; // 保留字节 }ALARM_DISK_HEALTH_FAILURE_INFO; ///@brief 探测物体的传感器类型 typedef enum tagEM_DETECT_SENSOR_TYPE { EM_DETECT_SENSOR_TYPE_UNKNOWN, // 未知 EM_DETECT_SENSOR_TYPE_COIL, // 线圈 EM_DETECT_SENSOR_TYPE_VIDEO, // 视频 EM_DETECT_SENSOR_TYPE_RADAR, // 雷达 EM_DETECT_SENSOR_TYPE_5G, // 5G EM_DETECT_SENSOR_TYPE_FUSION // 融合 }EM_DETECT_SENSOR_TYPE; ///@brief 事件类型 DH_ALARM_REFRIGE_SHUT_DOWN(当制冷机进入关闭倒计时时进行提示) 对应的数据块描述信息 typedef struct tagALARM_REFRIGE_SHUT_DOWN_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 UINT nLeftTime; // 制冷机关闭倒计时剩余时间,单位秒 BYTE byReserved[1020]; // 保留字节 }ALARM_REFRIGE_SHUT_DOWN_INFO; ///@brief 接入网络 typedef enum tagEM_WIRELESS_APN_TYPE { EM_WIRELESS_APN_UNKNOWN = -1, // 未知 EM_WIRELESS_APN_CUSTOMIZED, // 自定义 EM_WIRELESS_APN_CTNET, // 中国电信 EM_WIRELESS_APN_CMNET, // 中国移动 EM_WIRELESS_APN_UNINET, // 中国联通 }EM_WIRELESS_APN_TYPE; ///@brief 事件类型 DH_ALARM_AROUD_4G_PROBE_SEARCH 手机识别码 对应的数据块描述信息 typedef struct tagALARM_AROUD_4G_PROBE_SEARCH_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szIMSI[20]; // 手机卡的国际移动用户识别码 char szIMEI[20]; // 手机的移动装备国际辨识识别码 EM_WIRELESS_APN_TYPE emAPN; // 网络类型, 当前支持 中国电信、移动、联通 int nStrength; // 信号强度 NET_TIME stuTime; // 采集信息的时间 BYTE byReserved[1020]; // 保留字节 }ALARM_AROUD_4G_PROBE_SEARCH_INFO; ///@brief 车辆类型 typedef enum tagEM_VEHICLEINOUT_CAR_TYPE { EM_VEHICLEINOUT_CAR_TYPE_UNKNOWN, // 未知类型 EM_VEHICLEINOUT_CAR_TYPE_CAR, // 小型客车 EM_VEHICLEINOUT_CAR_TYPE_VAN, // 面包车 EM_VEHICLEINOUT_CAR_TYPE_TRUCK, // 货车 EM_VEHICLEINOUT_CAR_TYPE_BUS, // 公交车 EM_VEHICLEINOUT_CAR_TYPE_LORRY, // 大货车 EM_VEHICLEINOUT_CAR_TYPE_CART, // 大车 EM_VEHICLEINOUT_CAR_TYPE_NONMOTOR, // 非机动车 EM_VEHICLEINOUT_CAR_TYPE_HUMAN, // 人 EM_VEHICLEINOUT_CAR_TYPE_SPECAIL, // 特殊值 }EM_VEHICLEINOUT_CAR_TYPE; ///@brief 车辆信息 typedef struct tagNET_VEHICLE_OBJECT { UINT nObjectID; // 物体ID UINT nSpeed; // 车速,单位km/h char szObjectType[16]; // 物体类型 Vehicle NonMotor Plate EM_CATEGORY_TYPE emSubObject; // 物体类型中的子类别 UINT nLane; // 物理车道号 UINT nRoadwayNumber; // 自定义车道号 EM_DETECT_SENSOR_TYPE emSensorType; // 探测物体的传感器类型 UINT nObjectRVID; // 物体雷达和视频融合ID UINT nObjectRID; // 物体的雷达ID char szDrivingDirection[3][32]; // 行驶方向"Approach"-上行,即车辆离设备部署点越来越近; "Leave"-下行,即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和下行的两个地点,UTF-8编码 char szPlateNumber[32]; // 车牌号码 char szPlateColor[16]; // 车牌颜色 double dbLongitude; // 车辆经度 double dbLatitude; // 车辆纬度 char szCarColor[16]; // 车身颜色 EM_VEHICLEINOUT_CAR_TYPE emCarType; // 车辆类型 NET_FLOWSTAT_DIRECTION emVirtualCoilDirection; // 车辆驶入驶出虚拟线圈的状态 double dbDistanceToStop; // 距离停车线距离 double dbCarX; // 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),X轴方向(垂直于车道方向)的距离 double dbCarY; // 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),Y轴方向(平行于车道方向)的距离 double dbCarAngle; // 车辆与所有车道的中心点(中心点在设备所处位置且垂直于车道方向的直线上)的角度; UINT nObjectInVideoLane; // 物体是否在视频车道内, 0:未知, 1:物体不在视频车道内, 2:物体在视频车道内 int nDirection; // 目标物体实际行驶方向 0-未知,1-直行,2-左转,3-右转,4-掉头 float fSpeedX; // 目标横向运动速度 float fSpeedY; // 目标纵向运动速度 double dbHeadingAngle; // 航向角 NET_RECT stuCarBoundingBox; // 车身坐标,包围盒0~8191相对坐标 BYTE byReserverd[216]; // 保留字节 }NET_VEHICLE_OBJECT; ///@brief 流量状态 typedef enum tagEM_TRAFFIC_FLOW_STATUS { EM_TRAFFIC_FLOW_STATUS_UNKNOWN, // 未知 EM_TRAFFIC_FLOW_STATUS_CONGESTION, // 交通拥堵 EM_TRAFFIC_FLOW_STATUS_SMOOTH // 交通畅通 }EM_TRAFFIC_FLOW_STATUS; ///@brief 虚拟线圈占用状态 typedef enum tagEM_VIRTUAL_COIL_OCCUPANCY_STATUS { EM_VIRTUAL_COIL_OCCUPANCY_STATUS_UNKNOWN = -1, // 未知 EM_VIRTUAL_COIL_OCCUPANCY_STATUS_UNOCCUPY, // 未占用 EM_VIRTUAL_COIL_OCCUPANCY_STATUS_OCCUPY, // 占用 }EM_VIRTUAL_COIL_OCCUPANCY_STATUS; ///@brief 车道流量统计 typedef struct tagNET_TRAFFIC_FLOW_STAT { UINT nLane; // 物理车道号 UINT nRoadwayNumber; // 自定义车道号 EM_TRAFFIC_FLOW_STATUS emStatus; // 流量状态 EM_VIRTUAL_COIL_OCCUPANCY_STATUS emHeadCoil; // 车头虚拟线圈状态, 即车进线圈 EM_VIRTUAL_COIL_OCCUPANCY_STATUS emTailCoil; // 车尾虚拟线圈状态, 即车出线圈 UINT nSpeed; // 车道平均速度(单位:km/h) UINT nQueueLen; // 排队长度(单位:cm) UINT nCarsInQueue; // 排队车辆数 EM_DETECT_SENSOR_TYPE emSensorType; // 探测物体的传感器类型 double dbSpaceHeadway; // 车头间距,相邻车辆之间的距离,单位米/辆 double dbTimeHeadWay; // 车头时距,单位秒/辆 double dbSpaceOccRatio; // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离 UINT nCarVehicles; // 车道中的所有车辆的数量,即车流量 BYTE byReserverd[228]; // 保留字节 }NET_TRAFFIC_FLOW_STAT; ///@brief 事件类型 DH_ALARM_VEHICLE_INOUT (车辆出入事件)对应的数据块描述信息 typedef struct tagALARM_VEHICLE_INOUT_INFO { int nAction; // 事件动作,0表示脉冲事件 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_VEHICLE_OBJECT *pstObjets; // 物体列表 int nObjectNum; // 物体有效个数 int nStatNum; // 统计有效个数 NET_TRAFFIC_FLOW_STAT stuStats[8]; // 各个车道实时交通流量统计信息, 最大支持8车道 double dbRadarInstallAngle; // 雷达安装角度(雷达坐标系Y轴与正北方向的逆时针夹角)单位:度 (0 ~ 360) BYTE byReserverd[1016]; // 保留字节 }ALARM_VEHICLE_INOUT_INFO; ///@brief 事件类型 DH_ALARM_DISS_ASSEMBLY 设备机体拆解事件 typedef struct tagALARM_DISS_ASSEMBLY_INFO { int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 }ALARM_DISS_ASSEMBLY_INFO; ///@brief 设备状态 typedef enum tagEM_DEVICE_STATUS { EM_DEVICE_STATUS_UNKNOWN, // 未知 EM_DEVICE_STATUS_WORKING, // 工作 EM_DEVICE_STATUS_SLEEPING, // 休眠 }EM_DEVICE_STATUS; ///@brief 进入休眠方式 typedef enum tagEM_SLEEP_TRIGGER_MODE { EM_SLEEP_TRIGGER_MODE_UNKNOWN, EM_SLEEP_TRIGGER_MODE_TIMING, // 定时方式 EM_SLEEP_TRIGGER_MODE_SHORT_MESSAGE, // 短信方式 EM_SLEEP_TRIGGER_MODE_TIME_PERIOD, // 时间段方式 EM_SLEEP_TRIGGER_MODE_MOVECTRL // 运动控制模式 }EM_SLEEP_TRIGGER_MODE; ///@brief 事件类型 DH_ALARM_SLEEP_CONTROL_STATUS 球机休眠状态事件 typedef struct tagALARM_SLEEP_CONTROL_STATUS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 NET_TIME_EX UTC; // 事件发生的时间 EM_DEVICE_STATUS emStatus; // 设备状态 EM_SLEEP_TRIGGER_MODE emMode; // 进入休眠的方式 }ALARM_SLEEP_CONTROL_STATUS_INFO; ///@brief 事件类型 DH_ALARM_REMOTE_DISASSEMBLY 远端设备机体拆解事件 typedef struct tagALARM_REMOTE_DISASSEMBLY_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2结束 NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 BYTE bReserved[512]; // 保留字节 }ALARM_REMOTE_DISASSEMBLY_INFO; ///@brief 屏保状态 typedef enum tagEM_SCREENSAVER_STATUS { EM_SCREENSAVER_STATUS_UNKNOWN, // 未知状态 EM_SCREENSAVER_STATUS_OPEN, // 打开屏保 EM_SCREENSAVER_STATUS_CLOSE, // 关闭屏保 }EM_SCREENSAVER_STATUS; ///@brief 事件类型 屏保事件 typedef struct tagALARM_SCREENSAVER_INFO { int nAction; // 0:脉冲 EM_SCREENSAVER_STATUS emStatus; // 屏保状态 BOOL bClosePage; // 是否关闭页面 当EM_SCREENSAVER_STATUS是"Open"有效 BOOL bScreenOff; // 屏幕关闭 BYTE bReserved[128]; // 保留字节 }ALARM_SCREENSAVER_INFO; ///@brief 岗位人数和人员异常事件 typedef struct tagALARM_ABN_POST_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 UINT nEventID; // 事件编号,用来唯一标志一个事件 NET_TIME_EX UTC; // 事件发生的时间,单位秒 UINT UTCMS; // UTC时间对应的毫秒数 double dbPTS; // 时间戳(单位是毫秒) }ALARM_ABN_POST_DETECTION_INFO; ///@brief 屏保状态 typedef enum tagEM_VIDEO_ABNORMAL_DETECT_TYPE { EM_VIDEO_ABNORMAL_DETECT_UNKNOWN, // 未知状态 EM_VIDEO_ABNORMAL_DETECT_LOSS, // 视频丢失 EM_VIDEO_ABNORMAL_DETECT_COVER, // 视频遮挡 EM_VIDEO_ABNORMAL_DETECT_FROZEN, // 画面冻结 EM_VIDEO_ABNORMAL_DETECT_LIGHT, // 过亮 EM_VIDEO_ABNORMAL_DETECT_DARK, // 过暗 EM_VIDEO_ABNORMAL_DETECT_SCENECHANGE, // 场景变化 EM_VIDEO_ABNORMAL_DETECT_STRIATION, // 条纹检测 EM_VIDEO_ABNORMAL_DETECT_NOISE, // 噪声检测 EM_VIDEO_ABNORMAL_DETECT_UNBALANCE, // 偏色检测 EM_VIDEO_ABNORMAL_DETECT_BLUR, // 视频模糊检测 EM_VIDEO_ABNORMAL_DETECT_CONTRAST, // 对比度异常检测 EM_VIDEO_ABNORMAL_DETECT_MOTION, // 视频运动 EM_VIDEO_ABNORMAL_DETECT_FILCKERING, // 视频闪烁 EM_VIDEO_ABNORMAL_DETECT_COLOR, // 视频颜色-13 EM_VIDEO_ABNORMAL_DETECT_UNFOCUS, // 虚焦检测 EM_VIDEO_ABNORMAL_DETECT_OVEREXPOSURE, // 过曝检测 EM_VIDEO_ABNORMAL_DETECT_DRAMATICCHANGE, // 场景剧变 EM_VIDEO_ABNORMAL_DETECT_BLACKWHITE, // 黑白图像 EM_VIDEO_ABNORMAL_DETECT_SNOWNOISE, // 雪花噪声 }EM_VIDEO_ABNORMAL_DETECT_TYPE; ///@brief 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件 typedef struct tagDEV_EVENT_VIDEO_NORMAL_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 UINT nEventID; // 事件编号,用来唯一标志一个事件 NET_TIME_EX UTC; // 事件发生的时间,单位秒 double dbPTS; // 时间戳(单位是毫秒) EM_VIDEO_ABNORMAL_DETECT_TYPE emDetectType; // 视频检测类型 BYTE bReserved[260]; // 保留字节 }DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO; ///@brief 营业状态 typedef enum tagEM_BUSINESS_STATUS { EM_BUSINESS_STATUS_UNKNOWN = -1, // 未知状态 EM_BUSINESS_STATUS_NOSTART, // 营业未开始 EM_BUSINESS_STATUS_START, // 营业开始 EM_BUSINESS_STATUS_NORAML, // 正常营业 EM_BUSINESS_STATUS_AUTOCLOSE, // 自动结业 EM_BUSINESS_STATUS_ABMONALCLOSE, // 异常结业 }EM_BUSINESS_STATUS; ///@brief 互锁联动场景 typedef enum tagEM_INTERLOCK_SCENE { EM_INTERLOCK_SCENE_UNKNOWN = -1, // 未知状态 EM_INTERLOCK_SCENE_NORMAL, // 正常 EM_INTERLOCK_SCENE_ALLOPEN, // 同时打开 EM_INTERLOCK_SCENE_ALLCLOSE, // 同时关闭 }EM_INTERLOCK_SCENE; ///@brief 互锁联动AB门双开/双闭报警(对应DH_ALARM_DOUBLEDOOR) typedef struct tagALARM_DOUBLEDOOR_INFO { int nAction; // 0:脉冲 EM_INTERLOCK_SCENE emInterLockScene; // 互锁联动场景 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 char szReserved1[4]; // 字节对齐 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) NET_TIME_EX UTC; // 事件发生的时间 char szReserverd[128]; // 保留字节 }ALARM_DOUBLEDOOR_INFO; ///@brief 时间段外开门报警事件(对应DH_ALARM_OPENOUT_TIMESECTION) typedef struct tagALARM_OPENOUT_TIMESECTION_INFO { int nAction; // 0:脉冲 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szReserverd[128]; // 保留字节 }ALARM_OPENOUT_TIMESECTION_INFO; ///@brief 营业状态事件(对应DH_ALARM_SERVICESTART) typedef struct tagALARM_SERVICESTART_INFO { int nAction; // 0:脉冲 EM_BUSINESS_STATUS emBusinessStatus; // 营业状态 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 char szReserved1[4]; // 字节对齐 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szReserverd[128]; // 保留字节 }ALARM_SERVICESTART_INFO; ///@brief 探测器主电丢失事件(对应DH_ALARM_WIRELESSDEV_POWERLESS) typedef struct tagALARM_WIRELESSDEV_POWERLESS_INFO { int nAction; // 0:脉冲 1:开始 2:停止 int nIndex; // 探测器地址 NET_TIME_EX stuLoacalTime; // 事件发生的时间 char szModel[32]; // 探测器类型 char szName[32]; // 探测器名称 char szSN[32]; // 探测器序列号 char szAreaName[32]; // 探测器所属区域名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserverd[128]; // 保留字节 }ALARM_WIRELESSDEV_POWERLESS_INFO; ///@brief 室内机上报平台通知已经阅读公告事件 (对应 DH_ALARM_PUBLISHINFO_CONFIRM) typedef struct tagALARM_PUBLISHINFO_CONFIRM_INFO { int nAction; // 0:脉冲 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szDeviceIP[64]; // 上报设备的IP char szDeviceUserID[64]; // 室内机的用户ID char szReadInfoID[256][32]; // 已读公告的ID数组 int nReadInfoIDNum; // 已读公告的ID数组个数 char szReserverd[508]; // 保留字节 }ALARM_PUBLISHINFO_CONFIRM_INFO; ///@brief 功能字段描述 typedef enum tagEM_FUNCTION_TYPE { EM_FUNCTION_TYPE_UNKNOWN, // 未知 EM_FUNCTION_TYPE_WIGHT_LIGHT, // 白光 EM_FUNCTION_TYPE_SIREN, // 警报器 EM_FUNCTION_TYPE_LENS_MASK, // 镜头遮罩 EM_FUNCTION_TYPE_SUPPER_LIGHT, // 夜光灯 EM_FUNCTION_TYPE_VLOG_STATE, // Vlog状态 }EM_FUNCTION_TYPE; ///@brief App界面显示设备某些特定的状态变化事件 (对应 DH_ALARM_LEFUNCTION_STATUS_SYNC) typedef struct tagALARM_LEFUNCTION_STATUS_SYNC_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 EM_FUNCTION_TYPE emFunction; // 功能字段描述 BOOL bStatus; // 功能是否打开 true表示功能开 false表示功能关 char szReserverd[1024]; // 保留字节 }ALARM_LEFUNCTION_STATUS_SYNC_INFO; ///@brief 车道的信息 typedef struct tagTRAFFIC_QUEUE_INFO { UINT nLane; // 车道号 UINT nQueueLen; // 排队长度 UINT nQueueStartPos; // 排队起始位置,精度1m UINT nQueueVehNum; // 检测区域内车辆数 UINT nQueueVehSpeed; // 车道中实时车辆平均速度,精度1km/h UINT nOccTime; // 停止线最近一个线圈的占有时间,从开始占有算起,单位ms NET_EM_OVER_FLOW_STATE emOverflowState; // 溢出状态。例:如给当前路段设定允许排队长度阀值,实际排队长度超过阀值后就判定当前时刻该路段有溢出。 char szReserverd[252]; // 保留字节 }TRAFFIC_QUEUE_INFO; ///@brief 区域路口排队信息 typedef struct tagTRAFFIC_FLOW_QUEUE_INFO { UINT nDecStatus; // 检测器状态 0-正常 1-故障 UINT nAreaNo; // 区域号 UINT nJunNo; // 路口号 UINT nDirNo; // 方向号,北东南西分别为0/1/2/3 UINT nLaneDirType; // 进出口类型,进口道 0,出口道 1 int nQueueInfoNum; // 车道信息个数 TRAFFIC_QUEUE_INFO stuQueueInfo[32]; // 0~7车道的信息 char szReserverd[256]; // 保留字节 }TRAFFIC_FLOW_QUEUE_INFO; ///@brief 交通路口排队事件 (对应 DH_ALARM_TRAFFIC_FLOW_QUEUE) typedef struct tagALARM_TRAFFIC_FLOW_QUEUE_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 int nSequence; // 表示抓拍序号 1表示抓拍正常结束 0表示抓拍异常结束 TRAFFIC_FLOW_QUEUE_INFO stuFlowQueueInfo; // 区域路口排队信息 char szReserverd[1024]; // 保留字节 }ALARM_TRAFFIC_FLOW_QUEUE_INFO; ///@brief 区域路口过车信息 typedef struct tagTRAFFIC_FLOW_JUNTION_INFO { UINT nAreaNo; // 区域号 UINT nJunNo; // 路口号 UINT nDirNo; // 方向号,北东南西分别为0/1/2/3 UINT nLaneDirType; // 进出口类型,进口道 0,出口道 1 UINT nSecNo; // 检测断面号 UINT nLaneNo; // 车道号0~7 UINT nVehType; // 车辆类型 UINT nVehSpeed; // 车辆速度,精度1km/h UINT nOccTime; // 占有时间,单位ms char szReserverd[252]; // 保留字节 }TRAFFIC_FLOW_JUNTION_INFO; ///@brief 交通路口过车事件 (对应 DH_ALARM_TRAFFIC_FLOW_JUNTION) typedef struct tagALARM_TRAFFIC_FLOW_JUNTION_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 int nSequence; // 表示抓拍序号 1表示抓拍正常结束 0表示抓拍异常结束 TRAFFIC_FLOW_JUNTION_INFO stuFlowJunction; // 区域路口过车信息 char szReserverd[1024]; // 保留字节 }ALARM_TRAFFIC_FLOW_JUNTION_INFO; ///@brief 区域路口停车信息 typedef struct tagTRAFFIC_FLOW_VEHICLE_STOP_INFO { UINT nAreaNo; // 区域号 UINT nJunNo; // 路口号 UINT nDirNo; // 方向号,北东南西分别为0/1/2/3 UINT nLaneDirType; // 进出口类型,进口道 0,出口道 1 UINT nLaneNo; // 车道号0~7 UINT nStopPos; // 停车位置,精度1m UINT nStopTimes; // 停车次数,第几次停车 UINT nStopOccTime; // 停车占有时间,单位ms char szReserverd[256]; // 保留字节 }TRAFFIC_FLOW_VEHICLE_STOP_INFO; ///@brief 交通路口停车事件 (对应 DH_ALARM_TRAFFIC_FLOW_VEHICLE_STOP) typedef struct tagALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 int nSequence; // 表示抓拍序号 1表示抓拍正常结束 0表示抓拍异常结束 TRAFFIC_FLOW_VEHICLE_STOP_INFO stuFlowVehicleStop; // 区域路口停车信息 char szReserverd[1024]; // 保留字节 }ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO; ///@brief 交通路口车道统计事件 (对应 DH_ALARM_TRAFFIC_FLOW_STAT) typedef struct tagALARM_TRAFFIC_FLOW_STAT_INFO { int nAction; // 事件动作 0:脉冲 int nChannelID; // 通道号 char szName[128]; // 事件名称 DWORD PTS; // 时间戳(单位是毫秒) int nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 int nSequence; // 序号 int nStateNum; // 流量状态数量 NET_TRAFFIC_FLOW_STATE stuStates[8]; // 流量状态, 每个车道对应数组中一个元素 int nStopVehiclenum; // 静止车辆数,当前时刻检测范围内车速小于某个阀值的车辆数,单位:辆 int nDetectionAreaVehicleNum; // 车辆总数,当前时刻检测范围内检测到的所有车道内的车辆总数,单位:辆 char szReserverd[1024]; // 保留字节 }ALARM_TRAFFIC_FLOW_STAT_INFO; ///@brief 车道的车道统计信息 typedef struct tagTRAFFIC_FLOW_LANE_INFO { UINT nFlow; // 车道流量 UINT nAveSpeed; // 车道平均速度,1km/h精度 UINT nOccupancy; // 车道占有率 char szReserverd[252]; // 保留字节 }TRAFFIC_FLOW_LANE_INFO; ///@brief 路口车道统计信息 typedef struct tagTRAFFIC_FLOW_STAT_EX_INFO { UINT nAreaNo; // 区域号 UINT nJunNo; // 路口号 UINT nDirNo; // 方向号,北东南西分别为0/1/2/3 UINT nSecNo; // 检测断面号 TRAFFIC_FLOW_LANE_INFO stuLaneInfo[32]; // 0~7车道的车道统计信息 int nLaneInfoNum; // 车道统计信息个数 char szReserverd[252]; // 保留字节 }TRAFFIC_FLOW_STAT_EX_INFO; ///@brief 交通路口车道统计拓展事件 (对应 DH_ALARM_TRAFFIC_FLOW_STAT_EX) typedef struct tagALARM_TRAFFIC_FLOW_STAT_EX_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 int nSequence; // 表示抓拍序号 1表示抓拍正常结束 0表示抓拍异常结束 TRAFFIC_FLOW_STAT_EX_INFO stuFlowStatEx; // 路口车道统计信息 char szReserverd[1024]; // 保留字节 }ALARM_TRAFFIC_FLOW_STAT_EX_INFO; ///@brief 设备接入的显示连接状态改变对外通知事件 (对应 DH_ALARM_SCREEN_DISPLAY_ALARM) typedef struct tagALARM_SCREEN_DISPLAY_ALARM_INFO { int nAction; // 事件动作 0:脉冲 BOOL bHdmiStatus; // 连接状态变化, TRUE:发生变化,FALSE:未发生变化 NET_TIME_EX stuUTC; // 事件发生的时间 BYTE byReserved[1020]; // 保留字节 }ALARM_SCREEN_DISPLAY_ALARM_INFO; ///@brief 人和动物检测事件报警类型 typedef enum tagEM_HUMAN_ANIMAL_ALARM_TYPE { EM_HUMAN_ANIMAL_ALARM_TYPE_UNKNOWN, // 未知 EM_HUMAN_ANIMAL_ALARM_TYPE_NORMAL_TO_ABNORMAL, // 从人数正常到人数异常 EM_HUMAN_ANIMAL_ALARM_TYPE_ABNORMAL_TO_NORMAL, // 从人数异常到人数正常 }EM_HUMAN_ANIMAL_ALARM_TYPE; ///@brief 动物检测规则下的场景类型 typedef enum tagEM_DETECTION_SCENE_TYPE { EM_DETECTION_SCENE_TYPE_UNKNOWN , // 未知 EM_DETECTION_SCENE_TYPE_ANIMAL, // 兽类场景,可检测动物、人、车 EM_DETECTION_SCENE_TYPE_BIRD, // 鸟类场景,可检测鸟类,人、车 EM_DETECTION_SCENE_TYPE_PIG, // 猪类场景,可检测猪只 }EM_DETECTION_SCENE_TYPE; ///@brief 人和动物检测事件(对应 DH_ALARM_HUMAN_ANIMAL_COEXISTENCE) typedef struct tagALARM_HUMAN_ANIMAL_COEXISTENCE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nUTCMS; // 事件时间毫秒数 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 规则ID, 用于标示哪个规则触发的事件 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号, 从1开始 UINT nEventID; // 事件ID int nPresetID; // 事件触发的预置点号,从1开始, 0 表示无效 EM_HUMAN_ANIMAL_ALARM_TYPE emAlarmType; // 事件报警类型 EM_DETECTION_SCENE_TYPE emDetectionSceneType; // 场景类型 char szReserved[1020]; // 保留字节 }ALARM_HUMAN_ANIMAL_COEXISTENCE_INFO; ///@brief Mini雷达报警事件(对应 DH_ALARM_MINIINDOOR_RADAR_ALARM) typedef struct tagNET_ALARM_MINIINDOOR_RADAR_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 char szClass[128]; // 事件所属大类 UINT nEventID; // 事件编号,用来唯一标志一个事件 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 double dbPTS; // 时间戳(单位是毫秒) UINT nUTCMS; // UTC时间对应的毫秒数 BOOL bBreatheAbnormal; // 呼吸异常(生命体征雷达使用) BOOL bHeartBeatAbnormal; // 心跳异常(生命体征雷达使用) BOOL bAFBStatusAbnormal; // 在离床异常(生命体征雷达使用) BOOL bFallAlarm; // 跌倒报警(室内雷达) BOOL bNumAbnormal; // 人数异常(室内雷达) char szReserved[1024]; // 保留字节 }NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO; ///@brief 内存使用率过高事件 (对应 DH_ALARM_MEMORY_OVER_LOAD) typedef struct tagNET_ALARM_MEMORY_OVER_LOAD_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0:Pulse NET_TIME_EX stuUTC; // 事件发生的时间 double dbTotal; // 总内存大小,单位字节 double dbFree; // 剩余内存大小,单位字节 UINT nUsage; // 内存使用百分比 [0-99] char szReserved[1024]; // 保留字节 }NET_ALARM_MEMORY_OVER_LOAD_INFO; ///@brief CPU使用率过高事件 (对应 DH_ALARM_CPU_OVER_LOAD) typedef struct tagNET_ALARM_CPU_OVER_LOAD_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0:Pulse NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUsage; // 内存使用百分比 [0-99] char szReserved[1024]; // 保留字节 }NET_ALARM_CPU_OVER_LOAD_INFO; ///@brief EAS防盗报警事件(对应 DH_ALARM_EAS_ANTITHEFT) typedef struct tagNET_ALARM_EAS_ANTITHEFT { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szAlarmChannelName[128]; // EAS报警通道名称 UINT nAlarmChannel; // EAS报警通道 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 保留字节 }NET_ALARM_EAS_ANTITHEFT; ///@brief EAS发射线圈故障事件(对应 DH_ALARM_EAS_TRANSMIT_COIL) typedef struct tagNET_ALARM_EAS_TRANSMIT_COIL { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szAlarmChannelName[128]; // EAS报警通道名称 UINT nAlarmChannel; // EAS报警通道 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 保留字节 }NET_ALARM_EAS_TRANSMIT_COIL; ///@brief EAS接收线圈故障事件(对应 DH_ALARM_EAS_RECEIVE_COIL) typedef struct tagNET_ALARM_EAS_RECEIVE_COIL { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szAlarmChannelName[128]; // EAS报警通道名称 UINT nAlarmChannel; // EAS报警通道 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 保留字节 }NET_ALARM_EAS_RECEIVE_COIL; ///@brief EAS标签驻留报警事件(对应 DH_ALARM_EAS_TAG_RESIDENT) typedef struct tagNET_ALARM_EAS_TAG_RESIDENT { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szAlarmChannelName[128]; // EAS报警通道名称 UINT nAlarmChannel; // EAS报警通道 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1020]; // 保留字节 }NET_ALARM_EAS_TAG_RESIDENT; ///@brief EAS天线电源故障报警事件(对应 DH_ALARM_EAS_ANTENNA_POWER_FAULT) typedef struct tagNET_ALARM_EAS_ANTENNA_POWER_FAULT { int nChannelID; // 通道号 int nAction; // 事件动作, 0: 脉冲 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 保留字节 }NET_ALARM_EAS_ANTENNA_POWER_FAULT; ///@brief 车位状态变化事件(对应 DH_ALARM_PARKING_SPACE_DETECTOR_STATE) typedef struct tagNET_ALARM_PARKING_SPACE_DETECTOR_STATE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0: 脉冲 NET_TIME_EX stuUTC; // 事件发生的时间 int nTriggerSource; // 触发方式, 0:未知, 1:手动触发, 2:超声波检测器 UINT nLane; // 车位号 char szDetectionEquipmentID[32]; // 车位物体检测设备ID char szCustomParkNo[32]; // 自定义车位号 int nParkingState; // 车位状态, 0:未知, 1:有车, 2:无车 char szReserved[1024]; // 保留字节 }NET_ALARM_PARKING_SPACE_DETECTOR_STATE_INFO; ///@brief 异常事件类型 typedef enum tagEM_EXCEPTION_TYPE { EM_EXCEPTION_KNOWN, // 未知类型 EM_EXCEPTION_NOTALLOWED_IPLOGIN, // 不被允许的IP访问设备 EM_EXCEPTION_NOTALLOWED_TIMELOGIN, // 账户在非允许时间范围内发起登录 EM_EXCEPTION_URLERROR_OVERLIMIT, // Web路径爆破行为 EM_EXCEPTION_SESSIONNUM_OVERLIMIT, // 会话连接数超限 EM_EXCEPTION_SESSIONID_ERROR_OVERLIMIT, // 会话ID爆破行为 EM_EXCEPTION_FDEXHAUSTION, // 网络连接资源被耗尽 EM_EXCEPTION_EXCEPTIONPROGRAMRUN, // 可信环境监测到异常程序运行 EM_EXCEPTION_ACCOUNTORPWDERROROVERLIMIT, // 用户名密码爆破行为 EM_EXCEPTION_ROOTKIT_DETECTION, // Rootkit检测 EM_EXCEPTION_HIDE_PROCESS_DETECTION, // 隐藏进程检测 }EM_EXCEPTION_TYPE; ///@brief 安全报警事件(对应 DH_ALARM_SAFETY_ABNORMAL) typedef struct tagNET_ALARM_SAFETY_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0: 脉冲 NET_TIME_EX stuUTC; // 事件发生的时间 EM_EXCEPTION_TYPE emExceptionType; // 异常事件类型 char szAddress[64]; // 来源IP地址 NET_TIME stuAbnormalTime; // 发生异常时间 char szUser[128]; // 发生的用户名 char szReserved[1024]; // 保留字节 }NET_ALARM_SAFETY_ABNORMAL_INFO; ///@brief 请求进入休眠模式 (对应 DH_ALARM_REQUEST_IDLE_MODE) typedef struct tagNET_ALARM_REQUEST_IDLE_MODE { int nChannelID; // 通道号 int nAction; // 事件动作, 0:Pulse char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[1024]; // 保留字节 }NET_ALARM_REQUEST_IDLE_MODE; ///@brief 强制进入休眠模式通知 (对应 DH_ALARM_FORCE_INTO_IDLE_MODE) typedef struct tagNET_ALARM_FORCE_INTO_IDLE_MODE { int nChannelID; // 通道号 int nAction; // 事件动作, 0:Pulse char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[1024]; // 保留字节 }NET_ALARM_FORCE_INTO_IDLE_MODE; ///@brief 金融远程审批事件 (对应 DH_ALARM_REMOTE_APPROVAL) typedef struct tagNET_ALARM_REMOTE_APPROVAL_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 int nApprovalNo; // 审批单号 int nType; // 操作类型, 0-存箱, 1-取箱 int nCabinIndex; // 存取的舱位下标索引, 该字段目前作废, 不使用 char szAccessorID[64]; // 存取人ID char szAccessorName[64]; // 存取人名称 char szReviewerID[64]; // 复核人ID char szReviewerName[64]; // 复核人名称 int nCabinListNum; // 设备返回的存取的舱位下标数组中元素的个数, 最大值为32, 配合nCabinList[32]一起使用 int nCabinList[32]; // 存取的舱位下标数组 char szReserved[888]; // 保留字节 }NET_ALARM_REMOTE_APPROVAL_INFO; ///@brief 动态密码锁发起初始化通知事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_FOR_INIT) typedef struct tagNET_ALARM_DYNAMIC_PWDLOCK_FOR_INIT_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szID[32]; // 密码锁ID char szReserved[1024]; // 保留字节 }NET_ALARM_DYNAMIC_PWDLOCK_FOR_INIT_INFO; ///@brief 密码锁上报随机码事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_UPLOAD_RANDOMCODE) typedef struct tagNET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szID[32]; // 密码锁ID char szRandCode[512]; // 锁设备开锁请求随机数 char szOpenKeyVer[64]; // 开锁密钥版本 char szReserved[1024]; // 保留字节 }NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO; ///@brief 密码锁发起开锁流程通知事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_FOR_OPEN) typedef struct tagNET_ALARM_DYNAMIC_PWDLOCK_FOR_OPEN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szID[32]; // 密码锁ID char szReserved[1024]; // 保留字节 }NET_ALARM_DYNAMIC_PWDLOCK_FOR_OPEN_INFO; ///@brief 密码锁闭锁事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_CLOSE) typedef struct tagNET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szID[32]; // 密码锁ID char szCloseCode[512]; // 闭锁码 char szReserved[576]; // 保留字节 }NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO; ///@brief 操作类型 typedef enum tagEM_SYNCUSER_TYPE { EM_SYNCUSER_TYPE_UNKNOWN = -1, // 未知 EM_SYNCUSER_TYPE_ADD, // 新增 EM_SYNCUSER_TYPE_UPDATE, // 更新 EM_SYNCUSER_TYPE_REMOVE, // 删除 }EM_SYNCUSER_TYPE; ///@brief 主备机之间用户信息改变通知事件 (对应 DH_ALARM_SYNCUSER_INFO) typedef struct tagNET_ALARM_SYNCUSER_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szUserID[32]; // 用户ID EM_SYNCUSER_TYPE emType; // 操作类型 char szReserved[1020]; // 保留字节 }NET_ALARM_SYNCUSER_INFO; ///@brief 异常登录事件 (对应 DH_ALARM_ABNORMALLOGIN) typedef struct tagNET_ALARM_ABNORMALLOGIN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 char szReserved[1024]; // 保留字节 }NET_ALARM_ABNORMALLOGIN_INFO; ///@brief PTZ信息事件 (对应 DH_ALARM_INTELLITRACK_EVENT) typedef struct tagNET_ALARM_INTELLITRACK_EVENT_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,单位秒 UINT nUTCMS; // UTC时间对应的毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 UINT nTrackStatus; // 跟踪状态 0 - 空闲 1 - 跟踪开始 2 - 跟踪结束 NET_PTZSPACE_UNNORMALIZED stuAbsPosition; // 云台方向与放大倍数(扩大100倍表示) // 第一个元素为水平角度,0-36000; // 第二个元素为垂直角度,(-18000)-(18000); // 第三个元素为显示放大倍数,0-MaxZoom*100 char szObjectType[32]; // 物体类型,"Boat" char szReserved[1024]; // 保留字节 }NET_ALARM_INTELLITRACK_EVENT_INFO; ///@brief 煤气罐检测事件(对应 DH_ALARM_GAS_TANK_DETECTION) typedef struct tagNET_ALARM_GAS_TANK_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[128]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐,无实际意义 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID DH_MSG_OBJECT_EX2 stuObject; // 检测目标的物体信息 DH_MSG_OBJECT_EX2 stuObjects[100]; // 检测目标的物体信息数组 int nObjectNum; // 检测到的物体个数(配合stuObjects使用) int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 int nCount; // 规则被触发生次数 EM_EVENT_LEVEL emEventLevel; // 事件级别 UINT nPresetID; // 事件触发的预置点号,从1开始,没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szReserved[1024]; // 保留字节 }NET_ALARM_GAS_TANK_DETECTION_INFO; ///@brief 录像丢帧报警事件(对应 DH_ALARM_LOSS_FRAME_ALARM) typedef struct tagNET_ALARM_LOSS_FRAME_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szGroup[32]; // 盘组类型,ReadWrite:读写组;Redundant:冗余组 char szReserved[1024]; // 保留字节 }NET_ALARM_LOSS_FRAME_ALARM_INFO; ///@brief 智能模块温度异常事件(对应 DH_ALARM_INTELLI_MODULE_HIGH_TEMP) typedef struct tagNET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szChip[16]; // 由模块类型和芯片ID组成,模块芯片ID即槽位号 int nCPUTemperature; // CPU当前温度 int nGPUTemperature; // GPU当前温度 char szReserved[1024]; // 保留字节 }NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO; ///@brief 智能模块断线事件(对应 DH_ALARM_INTELLI_MODULE_OFFLINE) typedef struct tagNET_ALARM_INTELLI_MODULE_OFFLINE_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szChip[16]; // 由模块类型和芯片ID组成,模块芯片ID即槽位号 char szReserved[1024]; // 保留字节 }NET_ALARM_INTELLI_MODULE_OFFLINE_INFO; ///@brief SSD健康故障错误类型 typedef enum tagEM_SSD_ERROR_TYPE { EM_SSD_ERROR_TYPE_UNKNOWN, EM_SSD_ERROR_TYPE_SSD_REMAIN_LIFE_FAILURE, // SSD剩余寿命异常 }EM_SSD_ERROR_TYPE; ///@brief SSD健康故障事件(对应 DH_ALARM_SSD_HEALTH_FAILURE) typedef struct tagNET_ALARM_SSD_HEALTH_FAILURE_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szName[128]; // 事件名称 char szDevice[64]; // 设备名称 EM_SSD_ERROR_TYPE emError; // 错误类型 char szReserved[1024]; // 保留字节 }NET_ALARM_SSD_HEALTH_FAILURE_INFO; ///@brief 野保相机报警上报事件 (对应 DH_ALARM_YE_BAO_ALARM) typedef struct tagALARM_YE_BAO_ALARM_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 int nEventID; // 事件ID NET_TIME_EX stuRealUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szDeviceID[64]; // 设备ID int nFileType; // 上传文件类型, 0: 未知, 1: 图片(一个URL), 2: 视频(两个URL,视频和缩略图) char szFileUrl[2][256]; // 上传文件的URL,图片一个URL,视频两个URL(视频和缩略图) NET_TIME_EX stuAlarmTime; // 图片上报时间,标准UTC时间 UINT nSignalStrength; // 信号强度,百分比,取值[0,100] UINT nPower; // 剩余电量,百分比,取值[0,100] UINT nSDTotal; // SD卡总空间,单位MB UINT nSDFree; // SD卡剩余空间,单位MB double dbTemperature; // 温度,单位摄氏度 double dbLongitude; // 经度 double dbLatitude; // 纬度 char szReserved[1024]; // 保留字节 }ALARM_YE_BAO_ALARM_INFO; ///@brief 拾音器工作状态 typedef enum tagEM_AI_PICKUP_WORK_STATE { EM_AI_PICKUP_WORK_STATE_UNKNOWN, // 未知 EM_AI_PICKUP_WORK_STATE_WORKING, // 工作中 EM_AI_PICKUP_WORK_STATE_OFFLINE, // 离线 EM_AI_PICKUP_WORK_STATE_ERROR, // 拾音器内部异常 }EM_AI_PICKUP_WORK_STATE; ///@brief 拾音器工作状态报警事件 (对应 DH_ALARM_AI_PICKUP_WORK_STATE) typedef struct tagALARM_AI_PICKUP_WORK_STATE_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 int nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 EM_AI_PICKUP_WORK_STATE emState; // 拾音器工作状态 char szReserved[1020]; // 保留字节 }ALARM_AI_PICKUP_WORK_STATE_INFO; ///@brief 智能方案大类变更报警事件 (对应 DH_ALARM_INTELLI_TYPE_CHANGE) typedef struct tagALARM_INTELLI_TYPE_CHANGE_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 int nTypeListAfterChangeCount; // 智能大类变更后使能的大类列表个数 int nTypeListBeforeChangeCount; // 智能大类变更前使能的大类列表个数 EM_SCENE_CLASS_TYPE emTypeListAfterChange[16]; // 智能大类变更后使能的大类列表 EM_SCENE_CLASS_TYPE emTypeListBeforeChange[16]; // 智能大类变更前使能的大类列表 NET_TIME_EX stuUTC; // 事件发生的时间 NET_TIME_EX stuLocaleTime; // 设备本地时间(计算了时区和夏令时) char szReserved[1024]; // 保留字节 }ALARM_INTELLI_TYPE_CHANGE_INFO; ///@brief 物体进入还是离开 typedef enum tagEM_CAR_PASSING_MOVE_STATE { EM_CAR_PASSING_MOVE_STATE_UNKNOWN, // 未知 EM_CAR_PASSING_MOVE_STATE_ENTER, // 进入 EM_CAR_PASSING_MOVE_STATE_LEAVE, // 离开 }EM_CAR_PASSING_MOVE_STATE; ///@brief 车辆进出信息 typedef struct tagNET_CAR_PASSING_INFO { UINT nCarId; // 车辆物体ID UINT nLane; // 车道号 char szPlateNumber[32]; // 车牌号码 char szPlateColor[32]; // 车牌颜色 int nSpeed; // 车速,单位:km/h,255表示无测速 UINT nCarSize; // 大小车类型, 0大车 1小车 EM_CAR_PASSING_MOVE_STATE emMoveState; // 物体进入还是离开 NET_TIME_EX stuTime; // 车辆进出时间,设备本地时间 UINT nRoadwayNumber; // 自定义车道号 UINT nCoilID; // 线圈编号,范围:0-65535 double dbCarX; // 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),X轴方向(垂直于车道方向)的距离 double dbCarY; // 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),Y轴方向(平行于车道方向)的距离 double dbCarAngle; // 车辆与所有车道的中心点(中心点在设备所处位置且垂直于车道方向的直线上)的角度 char szReserved[128]; // 保留字节 }NET_CAR_PASSING_INFO; ///@brief 车辆进出虚拟线圈状态事件 (对应 DH_ALARM_TRAFFIC_CAR_PASSING) typedef struct tagALARM_TRAFFIC_CAR_PASSING_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 int nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间,设备本地时间 UINT nUTCMS; // 事件发生时间,表示毫秒 UINT nTimeZone; // 时区索引,参见时区列表DH_TIME_ZONE_TYPE UINT nFrameSequence; // 视频分析帧序号 int nCarPassingCount; // 车辆进出个数 NET_CAR_PASSING_INFO stuCarPassing[16]; // 车辆进出信息 char szReserved[1024]; // 保留字节 }ALARM_TRAFFIC_CAR_PASSING_INFO; ///@brief 黑臭等级 typedef enum tagEM_SMELLY_LEVEL { EM_SMELLY_LEVEL_UNKNOWN, // 未知 EM_SMELLY_LEVEL_NORMAL, // 正常 EM_SMELLY_LEVEL_LIGHT, // 轻度污染 EM_SMELLY_LEVEL_HEAVY, // 重度污染 }EM_SMELLY_LEVEL; ///@brief 水质检测上报数据信息 typedef struct tagNET_WATER_DETECTION_UPLOAD_INFO { float fPH; // PH值 范围(1-14) float fNTU; // 浊度值 范围(0-500NTU) float fNH3_N; // 氨氮值 范围(0-50mg/l) float fTN; // 总氮值 范围(0-50mg/l) float fSD; // 透明度值 范围(0-30 m) float fCOD; // 化学需氧量 范围(0-100mg/l) float fNN; // 亚硝酸盐氮 范围(0-500mg/l) float fDO; // 溶解氧 范围(0-10 mg/l) float fChl_a; // 叶绿素a 范围(0-300 ug/l) float fTP; // 总磷 范围0-5mg/L float fCODMn; // 高锰酸盐指数范围(0-100mg/l) float fSS; // 悬浮物 范围(0-1000mg/l) float fBOD_5; // 五日生化需氧量 范围(0-50mg/l) float fNO3_N; // 硝酸盐 范围(0-500mg/l) float fTSI; // 富营养状况指数 范围无 EM_SMELLY_LEVEL emSmellyLevel; // 黑臭等级 char szReserved[512]; // 预留字节 }NET_WATER_DETECTION_UPLOAD_INFO; ///@brief 事件报警类型 typedef enum tagEM_WATER_DETECTION_ALARM_TYPE { EM_WATER_DETECTION_ALARM_TYPE_UNKNOWN, // 未知 EM_WATER_DETECTION_ALARM_TYPE_QUALITY, // 水质类别 EM_WATER_DETECTION_ALARM_TYPE_PH, // PH EM_WATER_DETECTION_ALARM_TYPE_NTU, // 浊度值 EM_WATER_DETECTION_ALARM_TYPE_NH3_N, // 氨氮值 EM_WATER_DETECTION_ALARM_TYPE_TN, // 总氮值 EM_WATER_DETECTION_ALARM_TYPE_SD, // 透明度值 EM_WATER_DETECTION_ALARM_TYPE_COD, // 化学需氧量 EM_WATER_DETECTION_ALARM_TYPE_NN, // 亚硝酸盐氮 EM_WATER_DETECTION_ALARM_TYPE_DO, // 溶解氧 EM_WATER_DETECTION_ALARM_TYPE_CHL_A, // 叶绿素a EM_WATER_DETECTION_ALARM_TYPE_TP, // 总磷 EM_WATER_DETECTION_ALARM_TYPE_CODMN, // 高锰酸盐指数范围 EM_WATER_DETECTION_ALARM_TYPE_SS, // 悬浮物 EM_WATER_DETECTION_ALARM_TYPE_BOD_5, // 五日生化需氧量 EM_WATER_DETECTION_ALARM_TYPE_NO3_N, // 硝酸盐 EM_WATER_DETECTION_ALARM_TYPE_TSI, // 富营养状况指数 EM_WATER_DETECTION_ALARM_TYPE_SMELLY_LEVEL, // 黑臭等级 }EM_WATER_DETECTION_ALARM_TYPE; ///@brief 水质检测上报事件 对应 DH_ALARM_WATER_QUALITY_DETECTION typedef struct tagALARM_WATER_QUALITY_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 NET_TIME_EX stuUTC; // 事件发生的时间 NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo; // 水质检测上报数据信息 EM_WATER_DETECTION_ALARM_TYPE emAlarmType[32]; // 事件报警类型 int nAlarmTypeNum; // 事件报警类型个数 char szReserved[1024]; // 预留字节 }ALARM_WATER_QUALITY_DETECTION_INFO; #define VTS_STATE_LONGNUMBER_LEN 24 ///@brief VTS typedef enum tagVTS_STATE { EM_VTS_STATE_UNKNOWN = 0 , EM_VTS_STATE_BUSY , // "Busy" 忙碌 EM_VTS_STATE_IDLE , // "Idle" 空闲 }VTS_STATE; ///@brief VTS状态上报 typedef struct tagALARM_VTSTATE_UPDATE_INFO { int nChannelID; // 通道号 NET_TIME stuTime; // 事件发生的时间 VTS_STATE emState; // 设备对讲状态 char szLongNum[VTS_STATE_LONGNUMBER_LEN]; // 长号 BYTE byReserved[1024]; // 保留字节 } ALARM_VTSTATE_UPDATE_INFO; ///@brief 事件类型DH_ALARM_VIDEO_TALK_PATH(对讲路径事件)对应的数据块描述信息 typedef struct tagALARM_VIDEO_TALK_PATH_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 char szSrcDevID[DH_COMMON_STRING_128]; // 呼叫源设备唯一ID(ID取值参照DevList配置) char szDstDevID[DH_COMMON_STRING_128]; // 呼叫目的设备唯一ID(ID取值参照DevList配置) BYTE byReserved[1024]; // 保留字节 } ALARM_VIDEO_TALK_PATH_INFO; ///@brief 警戒区事件(对应事件 DH_EVENT_CROSSREGION_DETECTION) typedef struct tagALARM_EVENT_CROSSREGION_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_CROSSREGION_DIRECTION_INFO emDirection; // 警戒区入侵方向 NET_CROSSREGION_ACTION_INFO emActionType; // 警戒区检测动作类型 int nOccurrenceCount; // 规则被触发生次数 int nLevel; // 事件级别,GB30147需求项 char szName[DH_COMMON_STRING_128]; // 名称 BOOL bIsObjectInfo; // 是否检测到物体信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nRetObjectNum; // 实际返回多个检测到的物体信息 DH_MSG_OBJECT stuObjects[MAX_TARGET_OBJECT_NUM]; // 多个检测到的物体信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szMac[32]; // 事件触发源的Mac地址 char szReserved[1024]; // 预留字节 }ALARM_EVENT_CROSSREGION_INFO; ///@brief 物品遗留事件(对应事件 DH_EVENT_LEFT_DETECTION) typedef struct tagALARM_EVENT_LEFT_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nOccurrenceCount; // 规则被触发生次数 int nLevel; // 事件级别,GB30147需求项 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_EVENT_LEFT_INFO; ///@brief 目标信息 typedef struct tagNET_EVENT_WHOLE_FACE_INFO { NET_EULER_ANGLE stuFaceCaptureAngle; // 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角 // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效 NET_ANGEL_RANGE stuAngelRange[3]; // 目标抓拍角度范围(角度最小值,最大值), 三个角度依次分别是Pitch抬头低头,仰俯角;yaw是左右转头,偏航角;Roll是头在平面内左偏右偏,翻滚角 BYTE byReserved[256]; // 保留字段 } NET_EVENT_WHOLE_FACE_INFO; ///@brief 目标检测事件(对应事件 DH_EVENT_FACE_DETECTION) typedef struct tagALARM_EVENT_FACE_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nFaceCount; // 目标个数 NET_EVENT_WHOLE_FACE_INFO stuFaces[10]; // 目标信息 UINT nPresetID; // 事件触发的预置点号, 从1开始 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_EVENT_FACE_INFO; ///@brief IPC报警,IPC通过DVR或NVR上报的本地报警(对应事件 DH_ALARM_IPC) typedef struct tagALARM_IPC_INFO { DWORD dwSize; int nChannelID; // 通道号 int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 char szName[MAX_ALARM_CHANNEL_NAME_LEN]; // 报警通道名称 int nAlarmChannel; // 报警输入通道号,从0开始。没有该字段表示无法区分报警通道号。 }ALARM_IPC_INFO; ///@brief NAS文件任务类型 typedef enum tagNASFILE_STATUS_TYPE { EM_NASFILE_STATUS_TYPE_UNKNOW, EM_NASFILE_STATUS_TYPE_COPY, //拷贝 EM_NASFILE_STATUS_TYPE_MOVE, //移动 }NASFILE_STATUS_TYPE; ///@brief NAS文件任务状态 typedef enum tagNASFILE_STATUS_STATE { EM_NASFILE_STATUS_STATE_UNKNOW, EM_NASFILE_STATUS_STATE_FAILED, //失败 EM_NASFILE_STATUS_STATE_SUCCESSED, //成功 }NASFILE_STATUS_STATE; ///@brief NAS文件状态事件(对应事件 DH_ALARM_NASFILE_STATUS) typedef struct tagALARM_NASFILE_STATUS_INFO { double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 NASFILE_STATUS_STATE emTaskState; // 任务状态 char szTaskID[DH_COMMON_STRING_128]; // 任务ID NASFILE_STATUS_TYPE emTaskType; // 文件任务类型 int nSrcNum; // 源文件(夹)数量 char szSrcList[MAX_NASFILE_NUM][DH_COMMON_STRING_128]; // 源文件(夹)名列表 char szDstPath[DH_COMMON_STRING_128]; // 目的路径 int nProgress; // 任务进度 BYTE byReserved[1028]; // 保留字节 } ALARM_NASFILE_STATUS_INFO; ///@brief 设备呼叫中取消呼叫事件(对应事件 DH_ALARM_TALKING_CANCELCALL) typedef struct tagALARM_TALKING_CANCELCALL_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szCallID[DH_COMMON_STRING_32]; // 呼叫ID }ALARM_TALKING_CANCELCALL_INFO; ///@brief 人群密度检测事件(对应事件 DH_ALARM_CROWD_DETECTION) typedef struct tagALARM_CROWD_DETECTION_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; EM_ALARM_TYPE emAlarmType; // 报警业务类型 char szName[MAX_CROWD_DETECTION_NAME_LEN]; // 事件名称 int nCrowdListNum; // 返回的全局拥挤人群密度列表个数 int nRegionListNum; // 返回的人数超限的报警区域ID列表个数 NET_CROWD_LIST_INFO stuCrowdList[MAX_CROWD_LIST_NUM]; // 全局拥挤人群密度列表信息 NET_REGION_LIST_INFO stuRegionList[MAX_REGION_LIST_NUM]; // 人数超限的报警区域ID列表信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[896]; // 保留扩展字节 }ALARM_CROWD_DETECTION_INFO; ///@brief VTS 对接处理状态 typedef enum tagEM_VTS_CALLING_STATE { EM_VTS_CALLING_STATE_UNKNOWN, // 未知 EM_VTS_CALLING_STATE_ANSWER, // 接听 EM_VTS_CALLING_STATE_HANGUP, // 挂断 EM_VTS_CALLING_STATE_MISSED, // 未接 }EM_VTS_CALLING_STATE; ///@brief VTS呼叫处理状态事件(对应事件 DH_ALARM_VTS_CALLING_STATE) typedef struct tagALARM_VTS_CALLING_STATE_INFO { char szName[128]; // 事件名称 int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_VTS_CALLING_STATE emCallingState; // 对接处理状态 char szDevID[32]; // 前端报警设备的设备编号 char szDevIp[64]; // 前端报警设备的ip BYTE byReserved[896]; // 预留字节 }ALARM_VTS_CALLING_STATE_INFO; ///@brief 物品探测安全结果等级 typedef enum tagEM_DETECT_SAFE_GRADE { EM_DETECT_SAFE_GRADE_UNKNOWN, // 安全等级未知 EM_DETECT_SAFE_GRADE_SAFE, // 安全等级为安全 EM_DETECT_SAFE_GRADE_DANGER, // 安全等级为危险 }EM_DETECT_SAFE_GRADE; ///@brief 探测物品结果信息 typedef struct tagITEM_INFO_ARRAY { char szName[128]; // 物品名字 UINT nConcentration; // 浓度 BYTE bReserved[892]; // 预留字节 } NET_ITEM_INFO; ///@brief 毒品炸药探测事件 (对应事件 DH_ALARM_DRUG_EXPLOSIVE_DETECTION) typedef struct tagALARM_DRUG_EXPLOSIVE_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nAction; // 事件动作 0表示脉冲事件 NET_TIME_EX UTC; // 事件发生的时间 char szUserName[128]; // 毒品探测员名字 EM_DETECT_SAFE_GRADE emDetectSafeGrade; // 探测结果安全等级 NET_ITEM_INFO stuObjectInfo[16]; // 物品数组 int nObjectNum; // 毒品事件物品个数 }ALARM_DRUG_EXPLOSIVE_DETECTION_INFO; ///@brief 是否为金属容器 typedef enum tagEM_METAL_CONTAINER { EM_METAL_CONTAINER_UNKNOWN, // 未知 EM_METAL_CONTAINER_NOMETAL, // 非金属容器 EM_METAL_CONTAINER_METAL, // 金属容器 }EM_METAL_CONTAINER_TYPE; ///@brief 液体探测事件结果信息 typedef struct tagITEM_LIQUID_INFO_ARRY { EM_METAL_CONTAINER_TYPE emMetalcontainer; // 是否是金属容器 EM_DETECT_SAFE_GRADE emItemGrade; // 物品等级 BYTE bReserved[892]; // 预留字节 } NET_LIQUID_ITEM_INFO; ///@brief 液体探测事件 (对应事件 DH_ALARM_LIQUID_DETECTION) typedef struct tagALARM_LIQUID_DETECTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 int nAction; // 事件动作 0表示脉冲事件 NET_TIME_EX UTC; // 事件发生的时间 EM_DETECT_SAFE_GRADE emDetectSafeGrade; // 探测结果安全等级 NET_LIQUID_ITEM_INFO stuLiquidObjectInfo[16]; // 液体探测时间数组 int nObjectNum; // 液体事件物品个数 }ALARM_LIQUID_DETECTION_INFO; ///@brief 计算特征向量结果 typedef enum tagEM_ABSTRACT_STATE { EM_ABSTRACT_UNKNOWN, // 未知 EM_ABSTRACT_SUCCESS, // 重建成功 EM_ABSTRACT_FALSE, // 重建失败 EM_ABSTRACT_PROCESS, // 重建过程中(仅针对GroupID) } EM_ABSTRACT_STATE; ///@brief 特征建模失败错误码 typedef enum tagEM_FEATURE_ERROR_CODE { EM_FEATURE_ERROR_SUCCESS, // 成功 EM_FEATURE_ERROR_UNKNOWN, // 未知 EM_FEATURE_ERROR_IMAGE_FORMAT_ERROR, // 图片格式问题 EM_FEATURE_ERROR_NOFACE_OR_NOTCLEAR, // 无目标或不够清晰 EM_FEATURE_ERROR_MULT_FACES, // 多个目标 EM_FEATURE_ERROR_IMAGH_DECODE_FAILED, // 图片解码失败 EM_FEATURE_ERROR_NOT_SUGGEST_STORAGE, // 不推荐入库 EM_FEATURE_ERROR_DATABASE_OPERATE_FAILED, // 数据库操作失败 EM_FEATURE_ERROR_GET_IMAGE_FAILED, // 获取图片失败 EM_FEATURE_ERROR_SYSTEM_EXCEPTION, // 系统异常(如Licence失效、建模分析器未启动导致的失败) EM_FEATURE_ERROR_UNDERSIZED_WIDTH, // 目标宽度过小 EM_FEATURE_ERROR_UNDERSIZED_INTERPUPILLARY_DISTANCE,// 目标眼瞳间距过小 EM_FEATURE_ERROR_FACE_ALIGNMENT_SCORE_LOW, // 目标脸对齐分数过低 EM_FEATURE_ERROR_OVERSIZED_FACE_PITCH_ANGLE, // 目标俯仰角过大 EM_FEATURE_ERROR_OVERSIZED_FACE_YAW_ANGLE, // 目标偏航角过大 EM_FEATURE_ERROR_OVERSIZED_FACE_ROLL_ANGLE, // 目标滚转角过大 EM_FEATURE_ERROR_FACE_QUALITY_LOW, // 目标质量分过低 EM_FEATURE_ERROR_FACE_DEFINITION_LOW, // 目标清晰度过低 EM_FEATURE_ERROR_EYE_OCCLUSION, // 目标眼部遮挡 EM_FEATURE_ERROR_FOREHEAD_OCCLUSION, // 目标额头遮挡 EM_FEATURE_ERROR_MOUTH_OCCLUSION, // 目标嘴巴遮挡 EM_FEATURE_ERROR_INCOMPLETE_FACE, // 目标不完整 EM_FEATURE_ERROR_ABNORMAL_FACE_EXPOSURE, // 目标光照过曝或者欠曝 EM_FEATURE_ERROR_FACE_SATURATION_LOW, // 目标饱和度过低 EM_FEATURE_ERROR_FACE_AREA_OVER_PROPORTION, // 目标区域在图像中占比过大 EM_FEATURE_ERROR_FACE_DETECTION_FAILED // 图像中未检出目标 }EM_FEATURE_ERROR_CODE; ///@brief 目标特征向量重建结果信息 typedef struct tagFACE_FEATURE_ABSTRACT_INFO { EM_ABSTRACT_STATE emAbstractState; // 计算特征向量结果 int nProcess; // 人员组重建进度,百分比 char szUID[DH_MAX_PERSON_ID_LEN]; // 重建完成的人员编号, IVSS支持 char szGroupId[DH_COMMON_STRING_64]; // 重建完成的人员组ID, IPC支持 UINT nSucceedCnt; // 人员组建模成功的个数,IPC支持 UINT nFailedCnt; // 人员组建模失败的个数,IPC支持 EM_FEATURE_ERROR_CODE emFeatureError; // 建模失败记录的错误原因(当FailedCnt大于0时有效);IPC支持 UINT nToken; // 该次建模的token值,建模时提供原样返回,IPC支持 BYTE byReserved[496]; // 保留扩展字节 } FACE_FEATURE_ABSTRACT_INFO; ///@brief 目标特征向量重建结果事件(对应事件DH_ALARM_FACE_FEATURE_ABSTRACT) typedef struct tagALARM_FACE_FEATURE_ABSTRACT_INFO { int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) BYTE byReserved1[4]; // 字节对齐 int nRetAbstractInfo; // 实际返回的目标特征向量重建结果个数 FACE_FEATURE_ABSTRACT_INFO stuAbstractInfo[MAX_ABSTRACT_INFO_NUM]; // 目标特征向量重建结果 BYTE byReserved[512]; // 保留扩展字节 } ALARM_FACE_FEATURE_ABSTRACT_INFO; ///@brief 录像计划改变事件(对应事件 DH_ALARM_RECORD_SCHEDULE_CHANGE) typedef struct tagALARM_RECORD_SCHEDULE_CHANGE_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szUser[DH_COMMON_STRING_128]; // 操作用户 BYTE byReserved[1024]; // 保留字节 } ALARM_RECORD_SCHEDULE_CHANGE_INFO; ///@brief NTP配置修改事件(对应事件 DH_ALARM_NTP_CHANGE) typedef struct tagALARM_NTP_CHANGE_INFO { int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 char szUser[DH_COMMON_STRING_128]; // 操作用户 BYTE byReserved[1028]; // 保留扩展字节 } ALARM_NTP_CHANGE_INFO; ///@brief Raid同步状态 typedef enum tagEM_RAID_SYNC_STATE { EM_RAID_SYNC_STATE_UNKNOWN = -1, // 未知 EM_RAID_SYNC_STATE_SELFADAPTION, // 自适应(默认值) EM_RAID_SYNC_STATE_SYNCPRIORITY, // 同步优先,I/O优先分给Raid同步 EM_RAID_SYNC_STATE_BUSINESSPRIORITY, // 业务优先,I/O优先分给硬盘写数据 EM_RAID_SYNC_STATE_EQUILIBRIUM, // 均衡 }EM_RAID_SYNC_STATE; ///@brief 硬盘Smart信息 typedef struct tagNET_HDDSMART_INFO { int nID; // 属性ID int nCurrent; // 属性值 char szName[DH_COMMON_STRING_64]; // 属性名 int nWorst; // 最大出错值 int nThreshold; // 阈值 char szRaw[DH_COMMON_STRING_32]; // 实际值,可能不仅是数字,需要字符串返回 int nPredict; // 状态,对硬盘状态的预测值,无实际意义 EM_RAID_SYNC_STATE emSync; // Raid同步状态 BYTE byReserved[512]; // 保留字节 }NET_HDDSMART_INFO; ///@brief 硬盘温度报警事件( DH_ALARM_HDD_TEMPERATUREALARM ) typedef struct tagALARM_HDD_TEMPERATUREALARM_INFO { int nAction; // 事件动作1:Start 2:Stop int nTemperature; // 硬盘当前温度值 NET_TIME_EX stuTime; // 事件发生的时间 char szHDDName[DH_COMMON_STRING_64]; // 硬盘名称 NET_HDDSMART_INFO stuHDDSmartInfo; // 硬盘Smart信息 BYTE byReserved[512]; // 保留字节 }ALARM_HDD_TEMPERATUREALARM_INFO; ///@brief 硬盘震动报警事件( DH_ALARM_HDD_SHAKEALARM ) typedef struct tagALARM_HDD_SHAKEALARM_INFO { int nAction; // 事件动作1:Start 2:Stop NET_TIME_EX stuTime; // 事件发生的时间 char szHDDName[DH_COMMON_STRING_64]; // 硬盘名称 NET_HDDSMART_INFO stuHDDSmartInfo; // 硬盘Smart信息 BYTE byReserved[512]; // 保留字节 }ALARM_HDD_SHAKEALARM_INFO; ///@brief 巡更状态 typedef enum tagEM_PATROL_STATUS { EM_PATROL_STATUS_UNKNOWN, //未知 EM_PATROL_STATUS_START, //巡更开始 EM_PATROL_STATUS_END, //巡更结束 EM_PATROL_STATUS_FAIL, //巡更失败 }EM_PATROL_STATUS; ///@brief 未巡更报警事件( DH_ALARM_PATROL_STATUS ) typedef struct tagALARM_PATROL_STATUS_INFO { NET_TIME_EX stuTime; //事件发生时间 EM_PATROL_STATUS emPatrolStatus; //巡更状态 BYTE byReserved[512]; //保留字节 }ALARM_PATROL_STATUS_INFO; ///@brief 区域防区操作方式 typedef enum tagEM_AREAARM_TRIGGERMODE { EM_AREAARM_TRIGGERMODE_UNKNOWN, // 未知 EM_AREAARM_TRIGGERMODE_KEYPAD, // 键盘 EM_AREAARM_TRIGGERMODE_REMOTECONTROL, // 遥控器 EM_AREAARM_TRIGGERMODE_USER, // 用户操作 EM_AREAARM_TRIGGERMODE_LOCAL, // 本地 EM_AREAARM_TRIGGERMODE_TIMER, // 定时器 EM_AREAARM_TRIGGERMODE_KEY, // Key类型防区 EM_AREAARM_TRIGGERMODE_REMOTE, // 远程操作(电话反控、短信反控、手机App、平台客户端等) EM_AREAARM_TRIGGERMODE_DSS, // DSS平台客户端 EM_AREAARM_TRIGGERMODE_DSSPRO, // DSSPro平台客户端 EM_AREAARM_TRIGGERMODE_DMSS, // 手机客户端 EM_AREAARM_TRIGGERMODE_PLATFORM, // Smart pss、ICC平台 }EM_AREAARM_TRIGGERMODE; ///@brief 区域防区操作用户 typedef enum tagEM_AREAARM_USER { EM_AREAARM_USER_UNKNOWN, // 未知 EM_AREAARM_USER_SUPERVISOR, EM_AREAARM_USER_MANAGER, // 管理用户 EM_AREAARM_USER_MASTER, // 主用户 EM_AREAARM_USER_USER, // 普通用户 EM_AREAARM_USER_TEMPORARY, // 临时用户 EM_AREAARM_USER_DURESS, // 胁迫用户 EM_AREAARM_USER_PATROL, // 巡逻用户 }EM_AREAARM_USER; ///@brief 布撤防状态 typedef enum tagEM_ARM_STATE { EM_ARM_STATE_UNKNOWN, // 未知 EM_ARM_STATE_TOTAL_ARMING, // Total布防 EM_ARM_STATE_PARTIAL1_ARMING, // partial1布防 EM_ARM_STATE_PARTIAL2_ARMING, // partial2布防 EM_ARM_STATE_PARTIAL1_PARTIAL2_ARMING, // partial1+2布防 EM_ARM_STATE_FORCEARMING, // 强制布防 EM_ARM_STATE_DISARMING, // 撤防 }EM_ARM_STATE; ///@brief 区域防区模式改变事件(对应事件 DH_ALARM_AREAARM_MODECHANGE) typedef struct tagALARM_AREAARM_MODECHANGE_INFO { int nAreaIndex; // 区域编号 int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 EM_AREAARM_TRIGGERMODE emTriggerMode; // 操作方式 EM_AREAARM_USER emUser; // 操作用户,仅emTriggerMode = EM_AREAARM_USER_USER时有效 UINT nID; // ID号,emTriggerMode = EM_AREAARM_TRIGGERMODE_KEYPAD // 表示键盘地址;emTriggerMode =EM_AREAARM_TRIGGERMODE_REMOTECONTROL时表示遥控器编号 EM_ARM_STATE emArmState; // 布撤防状态 BYTE byReserved[1024]; // 保留扩展字节 }ALARM_AREAARM_MODECHANGE_INFO; ///@brief 防区信息 typedef struct tagNET_ALARM_ZONE_MODE_CHANGE_STATUS { int nIndex; // 防区号,1-256 int nAreasCount; // Area号个数 int nAreas[64]; // Area号,1-64 char szMode[32]; // 修改后的防区模式 char szReserved[64]; // 保留字节 }NET_ALARM_ZONE_MODE_CHANGE_STATUS; ///@brief 事件类型DH_ALARM_ZONE_MODE_CHANGE(防区状态改变事件)对应的数据块描述信息 typedef struct tagNET_ALARM_ZONE_MODE_CHANGE_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 EM_AREAARM_TRIGGERMODE emTriggerMode; // 操作方式 char szUser[16]; // 用户名称, 仅emTriggerMode为EM_AREAARM_TRIGGERMODE_KEYPAD/EM_AREAARM_TRIGGERMODE_REMOTECONTROL时有效 UINT nID; // ID号,键盘地址、遥控器编号、定时器编号或者key类型防区号,仅TriggerMode为EM_AREAARM_TRIGGERMODE_KEYPAD/EM_AREAARM_TRIGGERMODE_REMOTECONTROL/EM_AREAARM_TRIGGERMODE_TIMER/EM_AREAARM_TRIGGERMODE_KEY时有效 UINT nUserCode; // 用户编号,仅TriggerMode为EM_AREAARM_TRIGGERMODE_KEYPAD/EM_AREAARM_TRIGGERMODE_REMOTE时有效 int nStatusCount; // 防区信息个数 NET_ALARM_ZONE_MODE_CHANGE_STATUS stuStatus[256]; // 防区信息 char szReserved[1024]; // 保留字节 } NET_ALARM_ZONE_MODE_CHANGE_INFO; ///@brief 事件类型DH_ALARM_PSTN_PERIODIC_TEST(PSTN定期测试事件)对应的数据块描述信息 typedef struct tagNET_ALARM_PSTN_PERIODIC_TEST_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannelID; // 通道号 NET_TIME_EX stuTime; // 事件发生的时间 char szReserved[1024]; // 保留字节 } NET_ALARM_PSTN_PERIODIC_TEST_INFO; ///@brief 掉线模块类型 typedef enum tagEM_LOSTMODULE_TYPE { EM_LOSTMODULE_TYPE_UNKNOWN, // 未知 EM_LOSTMODULE_TYPE_WIRED, // 有线扩展模块 EM_LOSTMODULE_TYPE_WIRELESS, // 无线配件 }EM_LOSTMODULE_TYPE; #define MAX_ZONE_NUMBER 72 //最大防区个数 #define MAX_ZONE_NUMBER_EX 256 //最大防区个数扩展 ///@brief 防区模块掉线事件(对应事件 DH_ALARM_ZONEMODULELOST) typedef struct tagALARM_ZONEMODULE_LOST_INFO { EM_LOSTMODULE_TYPE emType; // 掉线模块类型 int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 int nZones; // 属于此模块的防区个数 int arrZones[MAX_ZONE_NUMBER]; // 属于此某块的防区号 bool bOnLine; // 在线状态,false:不在线 true:在线 BYTE byReserved1[3]; // 字节对齐 BYTE byReserved[1024]; // 保留扩展字节 }ALARM_ZONEMODULE_LOST_INFO; ///@brief 防区类型 typedef enum tagEM_DEFENCE_AREA_TYPE { EM_DEFENCE_AREA_TYPE_UNKNOWN, // 未知 EM_DEFENCE_AREA_TYPE_INTIME, // 立即防区 EM_DEFENCE_AREA_TYPE_DELAY, // 延时防区 EM_DEFENCE_AREA_TYPE_DELAY2, // 延时防区2 EM_DEFENCE_AREA_TYPE_FOLLOW, // 跟随防区 EM_DEFENCE_AREA_TYPE_EXITEND, // 退出防区 EM_DEFENCE_AREA_TYPE_FULLDAY, // 24小时防区 EM_DEFENCE_AREA_TYPE_FIRE, // 火警防区 EM_DEFENCE_AREA_TYPE_PANIC, // 恐慌防区 EM_DEFENCE_AREA_TYPE_ROBBERY, // 匪警防区 EM_DEFENCE_AREA_TYPE_MEDICAL, // 医疗紧急防区 EM_DEFENCE_AREA_TYPE_KEY, // key防区 }EM_DEFENCE_AREA_TYPE; ///@brief 区域报警触发类型 typedef enum tagEM_AREAALARM_TRIGGER_TYPE { EM_AREAALARM_TRIGGER_TYPE_UNKNOWN, //未知 EM_AREAALARM_TRIGGER_TYPE_ALARM, // 通道打开 EM_AREAALARM_TRIGGER_TYPE_TAMPER, // 通道防拆 EM_AREAALARM_TRIGGER_TYPE_MASK, // 通道遮挡 EM_AREAALARM_TRIGGER_TYPE_SHORT, // 通道防短 }EM_AREAALARM_TRIGGER_TYPE; ///@brief 区域报警事件(对应事件 DH_ALARM_AREAALARM) typedef struct tagALARM_AREAALARM_INFO { int nAreaIndex; // 区域号 int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 char szName[128]; // 名称 EM_DEFENCE_AREA_TYPE emDefenceAreaType; // 防区类型 int nIndex; // 触发的通道号 EM_AREAALARM_TRIGGER_TYPE emTrigerType; // 触发类型 BYTE byReserved[1024]; // 保留扩展字节 }ALARM_AREAALARM_INFO; #define MAX_AREA_NUMBER 8 //最大area数量 #define MAX_AREA_NUMBER_EX 64 //最大area数量扩展 ///@brief 防区打开事件(对应事件 DH_ALARM_ZONEOPEN) typedef struct tagALARM_ZONEOPEN_INFO { int nAction; // 事件动作1:Start 2:Stop int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 char szName[128]; // 名称 int nAreaNum; // 区域个数 int arrAreas[MAX_AREA_NUMBER]; //区域号 int nChannelID; // 防区号 BYTE byReserved[1024]; // 保留扩展字节 }ALARM_ZONEOPEN_INFO; ///@brief 防拆事件(对应事件 DH_ALARM_SYSTEMTAMPER) typedef struct tagALARM_SYSTEMTAMPER_INFO { int nAction; // 事件动作1:Start 2:Stop int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[1024]; // 保留扩展字节 }ALARM_SYSTEMTAMPER_INFO; ///@brief 人证比对事件(对应事件 DH_ALARM_CITIZEN_PICTURE_COMPARE) typedef struct tagALARM_CITIZEN_PICTURE_COMPARE_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID NET_TIME_EX stuTime; // 事件发生的时间 BOOL bCompareResult; // 人证比对结果,相似度大于等于阈值认为比对成功,true表示成功,false表示失败 BYTE nSimilarity; // 两张图片的相似度,单位百分比,范围[1,100] BYTE nThreshold; // 检测阈值,范围[1,100] BYTE byReserved1[2]; // 字节对齐 EM_CITIZENIDCARD_SEX_TYPE emSex; // 性别 int nECType; // 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的nECType定义) char szCitizen[DH_COMMON_STRING_64]; // 居民姓名 char szAddress[DH_COMMON_STRING_256]; // 住址 char szNumber[DH_COMMON_STRING_64]; // 证件号 char szAuthority[DH_COMMON_STRING_256]; // 签发机关 NET_TIME stuBirth; // 出生日期(年月日) NET_TIME stuValidityStart; // 有效期限起始日期(年月日) BOOL bLongTimeValidFlag; // 该值为 TRUE, 截止日期 表示长期有效,此时 stuValidityEnd 值无意义 // 该值为 FALSE, 此时 截止日期 查看 stuValidityEnd 值 NET_TIME stuValidityEnd; // 有效期限结束日期(年月日) char szCardNo[DH_COMMON_STRING_32]; // IC卡号 char szCellPhone[DH_COMMON_STRING_32]; // 手机号(比对时先输入手机号) UINT nEventType; // 事件类型:0:人证比对结果 1:人证目标采集 char szUserID[32]; // 人证目标采集时人员ID(定制) UINT nFaceIndex; // 目标序号 EM_MASK_STATE_TYPE emMask; // 口罩状态 int nScore; // 目标质量评分 char szIDPhysicalNumber[20]; // 物理证件号(证件序列号) BYTE byReserved[956]; // 保留字节 } ALARM_CITIZEN_PICTURE_COMPARE_INFO; ///@brief 硬盘健康状况报警事件( DH_ALARM_HDD_HEALTHALARM ) typedef struct tagALARM_HDD_HEALTHALARM_INFO { int nAction; // 事件动作1:Start 2:Stop NET_TIME_EX stuTime; // 事件发生的时间 char szHDDName[DH_COMMON_STRING_64]; // 硬盘名称 NET_HDDSMART_INFO stuHDDSmartInfo; // 硬盘Smart信息 BYTE byReserved[512]; // 保留字节 }ALARM_HDD_HEALTHALARM_INFO; ///@brief 当前工作目录切换事件( DH_ALARM_STORAGE_WORKDIRECTORY_SWITCH ) typedef struct tagALARM_STORAGE_WORKDIRECTORY_SWITCH_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szGroup[DH_COMMON_STRING_64]; // 目录所在工作组 }ALARM_STORAGE_WORKDIRECTORY_SWITCH_INFO; ///@brief 情景状态 typedef struct tagHOMESCENE_STATE_INFO { char szName[128]; //情景名称 BOOL bOnline; //在线状态 BYTE byReserved[512]; //保留字节 }HOMESCENE_STATE_INFO; ///@brief 智能家居情景模式变化通知事件(DH_ALARM_HOMESCENE_CHANGE) typedef struct tagALARM_HOMESCENE_CHANGE_INFO { char szSceneID[32]; //情景编码 HOMESCENE_STATE_INFO stuState; //情景状态 BYTE byReserved[512]; //保留字节 }ALARM_HOMESCENE_CHANGE_INFO; ///@brief 主板动作 typedef enum tagEM_BOARDHOTPLUG_ACTION { EM_BOARDHOTPLUG_ACTION_UNKNOWN, // 未知 EM_BOARDHOTPLUG_ACTION_ADD, // 单板插入 EM_BOARDHOTPLUG_ACTION_REMOVE, // 单板拔出 }EM_BOARDHOTPLUG_ACTION; ///@brief 双控设备热插拔事件(DH_ALARM_DEVBOARDHOTPLUG) typedef struct tagALARM_DEVBOARDHOTPLUG_INFO { NET_TIME_EX stuTime; // 事件发生的时间 EM_BOARDHOTPLUG_ACTION emBoardAction; // 主板动作 int nBoardSlot; // 发生插拔的工作板卡槽序号 BYTE byReserved[512]; // 保留字节 }ALARM_DEVBOARDHOTPLUG_INFO; ///@brief 各种违章事件联动报警输出事件 (DH_ALARM_TRAFFIC_LINKAGEALARM) typedef struct tagALARM_TRAFFIC_LINKAGEALARM_INFO { NET_TIME_EX stuTime; // 事件发生的时间 char szCode[DH_COMMON_STRING_32]; // 违章联动报警事件 BYTE byReserved[1024]; // 保留字节 }ALARM_TRAFFIC_LINKAGEALARM_INFO; ///@brief 同轴开关报警事件 (DH_ALARM_COAXIAL_ALARM_LOCAL) typedef struct tagALARM_COAXIAL_ALARM_LOCAL_INFO { int nAction; // 事件动作1:Start 2:Stop NET_TIME_EX UTC; // 事件发生的时间 int nAlarmChannel; // 报警输入通道号 NET_SENSE_METHOD emSenseMethod; // 传感器类型 char szName[MAX_COMMON_STRING_64]; // 报警通道名 int nChannelID; // 视频通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1020]; // 保留字节 } ALARM_COAXIAL_ALARM_LOCAL_INFO; ///@brief NAS文件删除结果反馈事件( DH_ALARM_NAS_FILE_REMOVE_STATUS ) typedef struct tagALARM_NAS_FILE_REMOVE_STATUS_INFO { int nEventID; // 事件ID int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 NASFILE_STATUS_STATE emStatus; // 任务状态 char szID[MAX_COMMON_STRING_128]; // 任务ID UINT nProgress; // 任务进度: 0 ~ 100 BYTE byReserved[1028]; // 保留扩展字节 } ALARM_NAS_FILE_REMOVE_STATUS_INFO; ///@brief 请求设备安装APK事件( DH_ALARM_NAS_APK_INSTALL_REQUEST ) typedef struct tagALARM_NAS_APK_INSTALL_REQUEST_INFO { DWORD dwSize; char szApkPath[MAX_COMMON_STRING_128]; // 安装文件路径名 } ALARM_NAS_APK_INSTALL_REQUEST_INFO; ///@brief APK安装状态 typedef enum tagEM_NAS_APK_INSTALL_STATUS { EM_NAS_APK_INSTALL_STATUS_UNKNOWN, // 未知 EM_NAS_APK_INSTALL_STATUS_FAILED, // 失败 EM_NAS_APK_INSTALL_STATUS_SUCCEED, // 成功 EM_NAS_APK_INSTALL_STATUS_INSTALLING, // 安装中 } EM_NAS_APK_INSTALL_STATUS; ///@brief 设备安装APK状态事件( DH_ALARM_NAS_APK_INSTALL_STATUS ) typedef struct tagALARM_NAS_APK_INSTALL_STATUS_INFO { int nEventID; // 事件ID int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 EM_NAS_APK_INSTALL_STATUS emStatus; // 任务状态 char szApkPath[MAX_COMMON_STRING_128]; // 安装文件路径名 UINT nProgress; // 任务进度: 0 ~ 100 BYTE byReserved[1028]; // 保留扩展字节 } ALARM_NAS_APK_INSTALL_STATUS_INFO; ///@brief 文件压缩解压任务类型 typedef enum tagEM_FILE_COMPRESS_TYPE { EM_FILE_COMPRESS_TYPE_UNKNOWN, // 未知 EM_FILE_COMPRESS_TYPE_COMPRESS, // 压缩文件, 对应结构体pInParam = NET_IN_COMPRESS_FILE,pOutParam = NET_OUT_COMPRESS_FILE EM_FILE_COMPRESS_TYPE_DECOMPRESS, // 解压文件, 对应结构体pInParam = NET_IN_DECOMPRESS_FILE,pOutParam = NET_OUT_DECOMPRESS_FILE } EM_FILE_COMPRESS_TYPE; ///@brief 文件压缩解压任务状态 typedef enum tagEM_FILE_COMPRESS_STATUS { EM_FILE_COMPRESS_STATUS_UNKNOWN, // 未知 EM_FILE_COMPRESS_STATUS_FAILED, // 失败 EM_FILE_COMPRESS_STATUS_SUCCEED, // 成功 EM_FILE_COMPRESS_STATUS_NEED_PWD, // 需要密码 EM_FILE_COMPRESS_STATUS_WRONG_PWD, // 密码错误 EM_FILE_COMPRESS_STATUS_NO_FILE, // 无法找到文件 } EM_FILE_COMPRESS_STATUS ; ///@brief 文件压缩解压结果反馈事件( DH_ALARM_FILE_COMPRESS_STATUS ) typedef struct tagALARM_FILE_COMPRESS_STATUS_INFO { int nEventID; // 事件ID int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 char szID[MAX_COMMON_STRING_128]; // 任务ID EM_FILE_COMPRESS_TYPE emType; // 任务类型 int nSrcNum; // 源文件(夹)名数量 char szSrcList[MAX_NASFILE_NUM][MAX_COMMON_STRING_128]; // 源文件(夹)名列表 char szDstPath[MAX_COMMON_STRING_128]; // 目的路径 EM_FILE_COMPRESS_STATUS emStatus; // 任务状态 UINT nProgress; // 任务进度: 0 ~ 100 BYTE byReserved[1024]; // 保留扩展字节 } ALARM_FILE_COMPRESS_STATUS_INFO; ///@brief 陌生人报警事件信息( DH_ALARM_STRANGER_ALARM ) typedef struct tagALARM_STRANGER_ALARM_INFO { int nChannelID; // 本地报警输入通道号 int nEventID; // 事件ID int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[1024]; // 预留字节 }ALARM_STRANGER_ALARM_INFO; ///@brief 二维码上报事件信息( DH_ALARM_QR_CODE_CHECK ) typedef struct tagALARM_QR_CODE_CHECK_INFO { int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) char szQRCode[256]; // 二维码字符串 int nChannelID; // 本地报警输入通道号 BYTE byReserved[1020]; // 预留字节 }ALARM_QR_CODE_CHECK_INFO; ///@brief 门锁工作模式 typedef enum tagEM_LOCK_MODE { EM_MODE_UNKNOWN = -1, // 未知 EM_MODE_NORMAL = 0, // 正常模式 EM_MODE_CHANNEL = 1, // 通道模式(锁把手向下直接可以开门) EM_MODE_UNDISTURBED = 2, // 免扰模式(锁体会开,但无提示音) } EM_LOCK_MODE ; ///@brief 门锁模式事件信息( DH_ALARM_ACCESS_CTL_LOCK_MODE ) typedef struct tagALARM_ACCESS_CTL_LOCK_MODE_INFO { int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生时间 double dbPTS; // 时间戳(单位是毫秒) char szSN[32]; // 设备序列号 EM_LOCK_MODE emLockMode; // 门锁工作模式 BYTE byReserved[1020]; // 保留字节 }ALARM_ACCESS_CTL_LOCK_MODE_INFO; ///@brief 房间号绑定事件信息( DH_ALARM_LOCK_ROOM_NUM_BIND ) typedef struct tagALARM_LOCK_ROOM_NUM_BIND_INFO { int nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) char szSN[32]; // 设备序列号 char szName[64]; // 门锁房间号,此字段已废弃 UINT nTaskID; // 任务ID char szRoomNo[64]; // 智能锁房间号 BYTE byReserved[956]; // 预留字节 }ALARM_LOCK_ROOM_NUM_BIND_INFO; ///@brief 离岗检测事件信息(DH_ALARM_LEAVE_DETECTION) typedef struct tagALARM_LEAVE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 NET_TIME_EX UTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字节 }ALARM_LEAVE_DETECTION_INFO; ///@brief 车道信息 typedef struct tagALARM_LANE_INFO { UINT nQueueLen; // 排队长度,单位:米 UINT nLane; // 车道号:从0开始,车到从左往右数,0、1、2、3、4 UINT nUserDefinedLaneNumber; // 用户自定义车道号 BYTE byReserved[256]; // 预留字节 }ALARM_LANE_INFO; ///@brief 广州交通排队长度事件(DH_ALARM_TRAFFICGZJJ_QUEUE_LEN) typedef struct tagALARM_TRAFFICGZJJ_QUEUE_LEN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nPeriodByMs; // 上报间隔,单位:毫秒 ALARM_LANE_INFO stuAlarmLane[5]; // 车道信息 BYTE byReserved[1024];// 预留字节 } ALARM_TRAFFICGZJJ_QUEUE_LEN_INFO; ///@brief 车辆类型 typedef enum _EM_NET_CARTYPE { NET_CARTYPE_UNKNOW = 0, // 未知 NET_CARTYPE_PASSENGERCAR, // 客车 NET_CARTYPE_LARGETRUCK, // 大货车 NET_CARTYPE_MIDTRUCK, // 中货车 NET_CARTYPE_SALOONCAR, // 轿车 NET_CARTYPE_MICROBUS, // 面包车 NET_CARTYPE_MICROTRUCK, // 小货车 NET_CARTYPE_TRICYCLE, // 三轮车 NET_CARTYPE_MOTOR, // 摩托车 NET_CARTYPE_PASSERBY, // 行人 NET_CARTYPE_SUVMPV, // SUV-MPV NET_CARTYPE_MIDPASSENGERCAR, // 中客车 NET_CARTYPE_TANKCAR, // 危化品车辆(特殊车辆) NET_CARTYPE_SUV, // SUV NET_CARTYPE_MPV, // MPV NET_CARTYPE_BUS, // 公交车 NET_CARTYPE_PICKUP, // 皮卡车 NET_CARTYPE_MINICARRIAGE, // 微型车 NET_CARTYPE_OILTANKTRUCK, // 油罐车(特殊车辆) NET_CARTYPE_SLOTTANKCAR, // 槽罐车(特殊车辆) NET_CARTYPE_RESERVED1, // 保留1(特殊车辆) NET_CARTYPE_DREGSCAR, // 渣土车(特殊车辆) NET_CARTYPE_CONCRETEMIXERTRUCK, // 混凝土搅拌车(特殊车辆) NET_CARTYPE_TAXI, // 出租车(特殊车辆) NET_CARTYPE_POLICE, // 警车(特殊车辆) NET_CARTYPE_AMBULANCE, // 救护车(特殊车辆) NET_CARTYPE_GENERAL, // 普通车(特殊车辆) NET_CARTYPE_WATERINGCAR, // 洒水车(特殊车辆) NET_CARTYPE_RESERVED2, // 保留2(特殊车辆) NET_CARTYPE_FIREENGINE, // 消防车(特殊车辆) NET_CARTYPE_TRACTOR, // 拖拉机(特殊车辆) NET_CARTYPE_MACHINESHOPTRUCK, // 工程车(特殊车辆) NET_CARTYPE_POWERLOTVEHICLE, // 粉粒物料车(特殊车辆) NET_CARTYPE_SUCTIONSEWAGETRUCK, // 吸污车(特殊车辆) NET_CARTYPE_NORMALVEHICLETANKTRUCK, // 普通罐车(特殊车辆) NET_CARTYPE_TWOCYCLE, // 二轮车 } EM_NET_CARTYPE; ///@brief 线圈信息(主要是里面的车辆信息) typedef struct tagCOILS_INFO { UINT nCarId; // 车辆Id(不是车牌号,ID是设备检测到物体记录的编号) char PlateNum[64]; // 车牌号 EM_NET_CARTYPE emCarType; // 车辆类型 UINT nDirection; // 算法识别的车辆行驶方向,0-未知,1-左转,2-直行,3-右转,4-掉头 BYTE byReserved[1020];// 预留字节 } COILS_INFO; ///@brief 车道信息 typedef struct tagLANE_INFO { UINT nLane; // 物理车道号(范围0~4) int nLaneType; // 车道类型,虚线车道:0, 实线车道:1 double dbLaneOcc; // 车道空间占有率,范围[0.0~1.0] UINT nRoadwayNumber; // 自定义车道号(范围0~128) int nCurrentLaneVehicleNum; // 当前车道车的数量 int nVehicleNum; // 从上次统计结束到现在,通过车的辆数(设备0.5秒下发一次) UINT nCarId; // 保留最近有效过车的ID(不是车牌号),CarId是设备检测到物体记录的编号 double dbCarEnterTime; // 编号CarId车辆进入虚线车道的时间 double dbCarLeaveTime; // 编号CarId车辆离开实线车道的时间 UINT nCarDistance; // 编号CarId车辆行驶的距离,单位:米 int nQueueLen; // 车辆等待时的排队长度,单位:米 double dbCarSpeed; // 编号CarId车辆平均车速,单位:米/秒 int nCoilsInfoNum; // 实际返回线圈信息个数 COILS_INFO stuCoilsInfo[70][2]; // 线圈信息(主要是线圈内的车辆信息) int nRetSolidLanNum; // 实际返回虚线车道个数 int nSolidLaneNum[6]; // 虚线车道对应的实线车道自定义车道号 int nVehicleNumByTypeNum; // 实际返回车辆类型统计个数 UINT nVehicleNumByType[64]; // 类型车辆统计,数组下标对应不同车型(车型参考 EM_NET_CARTYPE),下标值对应车辆类型统计的数量 int nEndLen; // 车辆运行时,尾部车辆位置距离停车线的距离 ,单位:米 BYTE byReserved[1024]; // 预留字节 } LANE_INFO; ///@brief 交通态势事件(DH_ALARM_TRAFFIC_XINKONG) typedef struct tagALARM_TRAFFIC_XINKONG_INFO { int nChannelID; // 通道号 int nAction; // 只有一个事件动作0,表示脉冲事件 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szName[128]; // 事件名称 BYTE byReserved1[4]; // 字节对齐 int nLaneInfoNum; // 实际上报多少车道信息 LANE_INFO stuLaneInfo[6]; // 车道信息 UINT nVirtualCoilHeight; // 单个虚拟线圈的的表征的高度,默认1米,范围: [1, 20] UINT nVirtualCoilNumber; // 虚拟线圈的数量 int nRangeTime; // 统计周期内机动车从开始断面到结束断面的平均时间(单位ms) int nCurrentAllVehicleNum; // 此时刻检测框内的车辆数 int nPedestrationNum; // 此时刻行人区域内的人数 int nNonMotorNum; // 此时刻非机动车区域内非机动车数 BYTE byReserved[1000]; // 预留字节 } ALARM_TRAFFIC_XINKONG_INFO; ///@brief 外设异常类型 typedef enum tagEM_PERIPHERAL_EXCEPTION_TYPE { EM_PERIPHERAL_EXCEPTION_TYPE_UNKNOWN = 0, // 未知 EM_PERIPHERAL_EXCEPTION_TYPE_RFID_OFFLINE, // RFID离线 EM_PERIPHERAL_EXCEPTION_TYPE_RFID_OUTAGE, // RFID断电 EM_PERIPHERAL_EXCEPTION_TYPE_LIDAR_OFFLINE, // 激光雷达离线 EM_PERIPHERAL_EXCEPTION_TYPE_LIDAR_OUTAGE, // 激光雷达断电 EM_PERIPHERAL_EXCEPTION_TYPE_SCREEN_OUTAGE, // 屏幕断电 EM_PERIPHERAL_EXCEPTION_TYPE_TRUMPET_OUTAGE, // 喇叭断电 EM_PERIPHERAL_EXCEPTION_TYPE_ALARMLIGHT_OUTAGE, // 报警灯断电 } EM_PERIPHERAL_EXCEPTION_TYPE; ///@brief 异常外设列表 typedef enum tagEM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE { EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_UNKNOWN = 0, // 未知 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_RFID_OFFLINE, // RFID离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_RFID_OUTAGE, // RFID断电 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_LIDAR_OFFLINE, // 激光雷达离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_LIDAR_OUTAGE, // 激光雷达断电 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_SCREEN_OUTAGE, // 屏幕断电 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_TRUMPET_OUTAGE, // 喇叭断电 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_ALARMLIGHT_OUTAGE, // 报警灯断电 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_CAMERA_OFFLINE, // 相机离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_RCD_OFFLINE, // 空开离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_RADAR_OFFLINE, // 串口雷达离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_FLASHLAMP_OFFLINE, // 爆闪灯离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_STROBOLAMP_OFFLINE, // 频闪灯离线 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE_FLASHLAMELIF_WARNING, // 报警灯断电 } EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE; ///@brief 设备异常事件 (DH_ALARM_DEVICE_ABNORMAL) typedef struct tagALARM_DEVICE_ABNORMAL_INFO { int nIndex; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szName[128]; // 事件名称 EM_PERIPHERAL_EXCEPTION_TYPE emPeripheralType; // 外设异常类型 EM_ABNORMAL_PERIPHERAL_EXCEPTION_TYPE emAbnormalTypeList[4]; // 异常外设列表 unsigned int nAbnormalTypeListRealLen; // 异常外设列表实际有效数量 BYTE byReserved[1000]; // 预留字节 } ALARM_DEVICE_ABNORMAL_INFO; ///@brief Jablotron报警事件类型 typedef enum tagEM_JABLOTRON_ALARM_TYPE { EM_JABLOTRON_ALARM_TYPE_UNKNOWN, // 未知 EM_JABLOTRON_ALARM_TYPE_INTRUSION, // Intrusion EM_JABLOTRON_ALARM_TYPE_FIRE, // Fire EM_JABLOTRON_ALARM_TYPE_PANIC, // Panic EM_JABLOTRON_ALARM_TYPE_ARMED, // BuFang EM_JABLOTRON_ALARM_TYPE_DISARMED, // WeiBuFang EM_JABLOTRON_ALARM_TYPE_PG, // PG }EM_JABLOTRON_ALARM_TYPE; ///@brief Jablotron报警时其本身的时间值 typedef struct tagHMS_TIME { DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 }HMS_TIME; ///@brief 客户报警产品信息( DH_ALARM_JABLOTRON_ALARM ) typedef struct tagALARM_JABLOTRONALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 EM_JABLOTRON_ALARM_TYPE emAlarmType; // Jablotron报警事件类型 unsigned int nDefenceZone; // 防区号,1~15 HMS_TIME stuTime; // Jablotron报警时其本身的时间值 BYTE byReserved[1024]; // 保留字节 }ALARM_JABLOTRONALARM_INFO; ///@brief 目标识别框的颜色 typedef struct tagNET_CFG_FACE_BOX_COLOR { int nFaceID; // ID NET_COLOR_RGBA stuColor; // 颜色值 BYTE byReserved[108]; // 保留字节 }NET_CFG_FACE_BOX_COLOR; ///@brief 目标识别事件( DH_ALARM_FACE_RECOGNITION ) typedef struct tagALARM_FACE_RECOGNITION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 NET_CFG_FACE_BOX_COLOR stuFaceBoxColor; // 目标识别框的颜色 BYTE byReserved[4096]; // 保留字节 }ALARM_FACE_RECOGNITION_INFO; ///@brief 车载燃料液位事件( DH_ALARM_VEHICLE_OILLEVEL ) typedef struct tagALARM_VEHICLE_OILLEVEL_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 float fOilLevel; // 车载燃料液位,单位:% BYTE byReserved[1024]; // 保留字节 }ALARM_VEHICLE_OILLEVEL_INFO; ///@brief 车载燃料载重事件( DH_ALARM_VEHICLE_LOAD ) typedef struct tagALARM_VEHICLE_LOAD_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 UINT nADValue; // AD采样值 float fLoad; // 当前载重,单位:kg BYTE byReserved[1024]; // 保留字节 }ALARM_VEHICLE_LOAD_INFO; ///@brief 发动机故障状态 typedef enum tagEM_ENGINE_FAILURE_STATUS { EM_ENGINE_FAILURE_UNKNOWN = 0, // 未知 EM_ENGINE_FAILURE_NOTACTIVE, // "Not active" EM_ENGINE_FAILURE_ACTIVE, // "Active" EM_ENGINE_FAILURE_BLINK, // "Blink" EM_ENGINE_FAILURE_NOTAVAILABLE, // "Not Available" }EM_ENGINE_FAILURE_STATUS; ///@brief 发动机故障状态上报事件( DH_ALARM_ENGINE_FAILURE_STATUS ) typedef struct tagALARM_ENGINE_FAILURE_STATUS_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 EM_ENGINE_FAILURE_STATUS emStatus; // 发动机故障状态 NET_GPS_STATUS_INFO stuGPS; // GPS信息 BYTE byReserved[1024]; // 保留字节 }ALARM_ENGINE_FAILURE_STATUS_INFO; ///@brief 车辆状态枚举 typedef enum tagEM_VEHICLE_STATE { EM_VEHICLE_STATE_UNKNOWN = 0, EM_VEHICLE_STATE_PARK, // 停车状态 EM_VEHICLE_STATE_MOTION, // 开始运动(速度大于0km/h) EM_VEHICLE_STATE_SPORT, // 运动状态(速度大于10km/h) }EM_VEHICLE_STATE; ///@brief 车辆档位信息 typedef enum tagEM_VEHICLE_GEARS_TYPE { EM_VEHICLE_GEARS_UNKNOWN = -1, EM_VEHICLE_GEARS_P, //P档 EM_VEHICLE_GEARS_R, //R档 EM_VEHICLE_GEARS_N, //N档 EM_VEHICLE_GEARS_D, //D档 EM_VEHICLE_GEARS_S, //S档 }EM_VEHICLE_GEARS_TYPE; ///@brief 箱盖状态 typedef enum tagEM_COVER_STATUS { EM_COVER_STATUS_UNKNOWN = 0, // 未知 EM_COVER_STATUS_NOT_COVER, // 未密闭 EM_COVER_STATUS_COVER, // 密闭 }EM_COVER_STATUS; ///@brief 举升状态 typedef enum tagEM_LIFT_STATUS { EM_LIFT_STATUS_UNKNOWN = 0, // 未知 EM_LIFT_STATUS_NOT_LIFT, // 未举升 EM_LIFT_STATUS_LIFT, // 举升 }EM_LIFT_STATUS; ///@brief 载重状态 typedef enum tagEM_LOAD_STATUS { EM_LOAD_STATUS_UNKNOWN = 0, // 未知 EM_LOAD_STATUS_NOT_LOAD, // 空车 EM_LOAD_STATUS_LOAD, // 载重 }EM_LOAD_STATUS; ///@brief 车辆状态事件( DH_ALARM_VEHICLE_STATE ) typedef struct tagALARM_VEHICLE_STATE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 EM_VEHICLE_STATE emVehicleState; // 车辆状态 UINT nOilTankage; // 油箱容积,单位0.1L UINT nCurrentFuel; // 当前油箱的油量, 单位0.1L UINT nConsumptionOil; // 当前油耗,L/100公里 单位0.1L UINT nTotalUsedFuel; // 总的消耗油量,单位0.1L UINT nTotalDistance; // 总里程,单位0.1 Km int nServiceDistance; // 保养距离,单位0.1Km EM_VEHICLE_GEARS_TYPE emCurrentGear; // 当前档位 UINT nSpeed; // 当前速度,单位:0.1Km/h char szTaskID[64]; // 任务号 NET_GPS_STATUS_INFO stuGPS; // GPS信息 int nAlarmFlag; // 保养里程小于2000km时告警标示,0:无告警 1:有告警 2:无意义 EM_COVER_STATUS emCoverStatus; // 箱盖状态 EM_LIFT_STATUS emLiftStatus; // 举升状态 EM_LOAD_STATUS emLoadStatus; // 载重状态 BYTE byReserved[1008]; // 保留字节 }ALARM_VEHICLE_STATE_INFO; ///@brief IMSI检验事件( DH_ALARM_IMSI_CHECK ) typedef struct tagALARM_IMSI_CHECK_INFO { int nIndex; // SIM卡槽序号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 char szIMSI[32]; // 检测到的IMSI号 BYTE byReserved[1024]; // 保留字节 }ALARM_IMSI_CHECK_INFO; ///@brief 车辆盲区事件( DH_ALARM_BLIND_ALARM ) typedef struct tagALARM_BLIND_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPS; // GPS信息 BYTE byReserved[1024]; // 保留字节 }ALARM_BLIND_ALARM_INFO; ///@brief 车载人员维护事件( DH_ALARM_VEHICLE_MAINTAINCE ) typedef struct tagALARM_VEHICLE_MAINTAINCE_INFO { int nIndex; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 char szMaintainer[32]; // 维护人员 char szMaintainerID[32]; // 维护人员ID char szInfo[256]; // 自定义维护信息 BYTE byReserved[1024]; // 保留字节 }ALARM_VEHICLE_MAINTAINCE_INFO; ///@brief 火警事件 (DH_ALARM_FIRE_DETECTION) typedef struct tagALARM_FIRE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_FIRE_DETECTION_INFO; ///@brief 车位锁状态 typedef enum tagEM_PARKINGLOCK_STATE { EM_PARKINGLOCK_STATE_UNKNOWN = 0, // 未知 EM_PARKINGLOCK_STATE_LOCKRISE, // 车位锁升起 EM_PARKINGLOCK_STATE_LOCKDOWN, // 车位锁降下 EM_PARKINGLOCK_STATE_LOCKERROR, // 状态异常 }EM_PARKINGLOCK_STATE; ///@brief 触发源 typedef enum tagEM_TRIGGER_SOURCE { EM_TRIGGER_SOURCE_UNKNOWN = 0, // 未知 EM_TRIGGER_SOURCE_SWING_ARM, // 摆臂自动 EM_TRIGGER_SOURCE_BLUETOOTH, // 蓝牙控制 EM_TRIGGER_SOURCE_RS485, // 485通信控制 EM_TRIGGER_SOURCE_ULTRASOUND, // 超声检测 EM_TRIGGER_SOURCE_REMOTE_CONTROL, // 遥控器控制 }EM_TRIGGER_SOURCE; ///@brief 车位锁状态变化事件( DH_ALARM_PARKINGLOCK_STATE ) typedef struct tagALARM_PARKINGLOCK_STATE_INFO { int nIndex; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 UINT nLane; // 车位号 EM_PARKINGLOCK_STATE emState; // 状态 EM_TRIGGER_SOURCE emTriggerSource; // 触发源 BYTE byReserved[1024]; // 保留字节 }ALARM_PARKINGLOCK_STATE_INFO; ///@brief NAS服务器名称 typedef enum tagEM_SERVERNAME { EM_SERVERNAME_UNKNOWN, // 未知 EM_SERVERNAME_NFS, // NFS EM_SERVERNAME_FTP, // FTP EM_SERVERNAME_SAMBA, // SAMBA EM_SERVERNAME_ISCSI, // ISCSI }EM_SERVERNAME; ///@brief NAS共享服务器异常报警信息(对应 DH_ALARM_NAS_SERVER_STATE) typedef struct tagALARM_NAS_SERVER_STATE_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 EM_SERVERNAME emServerNames[4]; // NAS服务器名称 int nRetServerNamesNum; // 实际返回的NAS服务器名称个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_NAS_SERVER_STATE_INFO; ///@brief 存储池异常报警事件信息(对应 DH_ALARM_VOLUME_GROUP_FAULT) typedef struct tagALARM_VOLUME_GROUP_FAULT_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 char szName[32]; // 异常存储卷名称 char szMembers[512][32]; // 存储卷的内容 int nRetMembersNum; // 实际返回的存储卷的内容个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_VOLUME_GROUP_FAULT_INFO; ///@brief 磁盘巡检报警事件信息(对应 DH_ALARM_DISK_CHECK) typedef struct tagALARM_DISK_CHECK_INFO { int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 char szName[128]; // 报警名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 }ALARM_DISK_CHECK_INFO; ///@brief 城市机动车违停事件信息(对应 DH_ALARM_CITY_MOTORPARKING) typedef struct tagALARM_CITY_MOTORPARKING_INFO { int nChannelID; // 通道号 int nAction; // 事件动作: 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[64]; // 检测到的物体 char szPresetName[64]; // 事件触发的预置名称 UINT nPresetID; // 事件触发的预置点号 int nDetectRegionNum; // 检测区域顶点数 DH_POINT DetectRegion[20]; // 检测区域 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 UINT nParkingDuration; // 违停持续时长,单位:秒 缺省值0表示无意义 BOOL bPtzPosition; // stuPtzPosition 是否有效 PTZ_NORMALIZED_POSITION_UNIT stuPtzPosition; // 云台信息 EM_CITYMOTOR_STATUS emMotorStatus; // 车辆状态 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[2028]; // 保留字节 } ALARM_CITY_MOTORPARKING_INFO; ///////////////////////////// 刻录会话 ///////////////////////////////////////// ///@brief CLIENT_StartBurnSession 接口输入参数 typedef struct tagNET_IN_START_BURN_SESSION { DWORD dwSize; unsigned int nSessionID; // 会话ID } NET_IN_START_BURN_SESSION; ///@brief CLIENT_StartBurnSession 接口输出参数 typedef struct tagNET_OUT_START_BURN_SESSION { DWORD dwSize; } NET_OUT_START_BURN_SESSION; ///@brief 刻录模式 typedef enum tagNET_BURN_MODE { BURN_MODE_SYNC, // 同步 BURN_MODE_TURN, // 轮流 BURN_MODE_CYCLE, // 循环 } NET_BURN_MODE; ///@brief 刻录扩展模式 typedef enum tagNET_BURN_EXTMODE { BURN_EXTMODE_UNKNOWN, // 未知 BURN_EXTMODE_NORMAL = 1, // 正常刻录 BURN_EXTMODE_NODISK, // 无盘刻录 } NET_BURN_EXTMODE; ///@brief 刻录流格式 typedef enum tagNET_BURN_RECORD_PACK { BURN_PACK_DHAV, // DHAV BURN_PACK_PS, // PS BURN_PACK_ASF, // ASF BURN_PACK_MP4, // MP4 BURN_PACK_TS, // TS } NET_BURN_RECORD_PACK; ///@brief CLIENT_StartBurn 接口输入参数 typedef struct tagNET_IN_START_BURN { DWORD dwSize; DWORD dwDevMask; // 刻录设备掩码, 按位表示多个刻录设备组合 int nChannels[DH_MAX_BURN_CHANNEL_NUM]; // 刻录通道数组 int nChannelCount; // 刻录通道数 NET_BURN_MODE emMode; // 刻录模式 NET_BURN_RECORD_PACK emPack; // 刻录流格式 NET_BURN_EXTMODE emExtMode; // 刻录扩展模式 } NET_IN_START_BURN; ///@brief CLIENT_StartBurn 接口输出参数 typedef struct tagNET_OUT_START_BURN { DWORD dwSize; } NET_OUT_START_BURN; ///@brief CLIENT_BurnMarkTag 接口输入参数 typedef struct tagNET_IN_BURN_MAAK_TAG { DWORD dwSize; const char* pszDescInfo; // 标记描述信息 } NET_IN_BURN_MARK_TAG; ///@brief CLIENT_BurnMarkTag 接口输出参数 typedef struct tagNET_OUT_BURN_MAAK_TAG { DWORD dwSize; } NET_OUT_BURN_MARK_TAG; ///@brief CLIENT_BurnChangeDisk 接口输入参数 typedef struct tagNET_IN_BURN_CHANGE_DISK { DWORD dwSize; BOOL nAction; // 换盘动作, 0-开始, 1-结束 } NET_IN_BURN_CHANGE_DISK; ///@brief CLIENT_BurnChangeDisk 接口输出参数 typedef struct tagNET_OUT_BURN_CHANGE_DISK { DWORD dwSize; } NET_OUT_BURN_CHANGE_DISK; ///@brief 刻录状态 typedef enum tagNET_BURN_STATE { BURN_STATE_STOP, // 停止 BURN_STATE_STOPING, // 停止中 BURN_STATE_INIT, // 初始化 BURN_STATE_BURNING, // 刻录中 BURN_STATE_PAUSE, // 暂停 BURN_STATE_CHANGE_DISK, // 换盘中 BURN_STATE_PREPARE_EXTRA_FILE, // 附件初始化 BURN_STATE_WAIT_EXTRA_FILE, // 等待附件刻录 BURN_STATE_UPLOAD_FILE_START, // 附件刻录中 BURN_STATE_CHECKING_DISK, // 检测光盘中 BURN_STATE_DISK_READY, // 光盘准备就绪 } NET_BURN_STATE; ///@brief 刻录错误码 typedef enum tagNET_BURN_ERROR_CODE { BURN_CODE_NORMAL, // 正常 BURN_CODE_UNKNOWN_ERROR, // 未知错误 BURN_CODE_SPACE_FULL, // 刻录满 BURN_CODE_START_ERROR, // 开始刻录出错 BURN_CODE_STOP_ERROR, // 停止刻录出错 BURN_CODE_WRITE_ERROR, // 刻录出错 BURN_CODE_UNKNOWN, // 未知 } NET_BURN_ERROR_CODE; ///@brief CLIENT_BurnGetState 接口输入参数 typedef struct tagNET_IN_BURN_GET_STATE { DWORD dwSize; } NET_IN_BURN_GET_STATE; ///@brief 光驱使用状态 typedef enum tagEM_NET_BURN_DEV_USED_STATE { EM_NET_BURN_DEV_USED_STATE_UNKNOWN, //未知 EM_NET_BURN_DEV_USED_STATE_STOP, //停止 EM_NET_BURN_DEV_USED_STATE_BURNING, //刻录中 }EM_NET_BURN_DEV_USED_STATE; ///@brief 光盘状态 typedef enum tagEM_DISK_STATE { EM_DISK_STATE_UNKNOWN, // 未知 EM_DISK_STATE_EXIST, // 已放磁盘 EM_DISK_STATE_NO_EXIST, // 未放磁盘 EM_DISK_STATE_NEED_CHANGE, // 需要换盘 }EM_DISK_STATE; ///@brief 刻录设备状态 typedef struct tagNET_BURN_DEV_STATE { DWORD dwSize; int nDeviceID; // 光驱设备ID char szDevName[DH_BURNING_DEV_NAMELEN]; // 光驱设备名称 DWORD dwTotalSpace; // 光驱总容量, 单位KB DWORD dwRemainSpace; // 光驱剩余容量, 单位KB EM_NET_BURN_DEV_USED_STATE emUsedType; // 光驱使用状态 NET_BURN_ERROR_CODE emError; // 单个光驱出错状态 EM_DISK_STATE emDiskState; // 光盘状态 } NET_BURN_DEV_STATE; ///@brief CLIENT_BurnGetState 接口输出参数 typedef struct tagNET_OUT_BURN_GET_STATE { DWORD dwSize; NET_BURN_STATE emState; // 刻录状态 NET_BURN_ERROR_CODE emErrorCode; // 错误码 DWORD dwDevMask; // 刻录设备掩码, 按位表示多个刻录设备组合 int nChannels[DH_MAX_BURN_CHANNEL_NUM]; // 刻录通道数组 int nChannelCount; // 刻录通道数 NET_BURN_MODE emMode; // 刻录模式 NET_BURN_RECORD_PACK emPack; // 刻录流格式 int nFileIndex; // 当前刻录文件编号 NET_TIME stuStartTime; // 刻录开始时间 NET_BURN_DEV_STATE stuDevState[DH_MAX_BURNING_DEV_NUM]; // 刻录设备状态 int nRemainTime; // 刻录剩余时间, 单位秒, -1代表无效 NET_BURN_EXTMODE emExtMode; // 扩展模式,当为无盘刻录时,stuDevState可能无效 } NET_OUT_BURN_GET_STATE; ///@brief fAttachBurnStateCB 参数 typedef struct tagNET_CB_BURNSTATE { DWORD dwSize; const char* szState; // 消息类型 //"UploadFileStart":可以开始附件上传 //"InitBurnDevice":初始化刻录设备 //"Burning":刻录中 //"BurnExtraFileStop":刻录停止 //"BurnFilePause":刻录暂停 //"SpaceFull":刻录空间满 //"BurnFileError":刻录出错 const char* szFileName; // 当前刻录附件文件名,用于"UploadFileStart"开始附件上传消息 unsigned int dwTotalSpace; // 总容量,单位KB,用于"Burning"刻录中,显示容量或计算进度 unsigned int dwRemainSpace; // 剩余容量,单位KB,用于"Burning"刻录中 const char* szDeviceName; // 刻录设备名称,用于区分不同的刻录设备 int nRemainTime; // 刻录剩余时间, 单位秒, -1代表无效 }NET_CB_BURNSTATE; ///@brief 刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBurnState返回值, 每次1条,pBuf->dwSize == nBufLen typedef void (CALLBACK *fAttachBurnStateCB) (LLONG lLoginID, LLONG lAttachHandle, NET_CB_BURNSTATE* pBuf, int nBufLen, LDWORD dwUser); ///@brief 刻录设备回调扩展函数原形 typedef void (CALLBACK *fAttachBurnStateCBEx)(LLONG lLoginID, LLONG lAttachHandle, NET_OUT_BURN_GET_STATE* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachBurnState()输入参数 typedef struct tagNET_IN_ATTACH_STATE { DWORD dwSize; const char* szDeviceName; // 光盘名称,如"/dev/sda" fAttachBurnStateCB cbAttachState; // 刻录监听回调 LDWORD dwUser; // 用户数据 LLONG lBurnSession; // 刻录会话句柄, CLIENT_StartBurnSession的返回值. 该值为0时, szDeviceName有效, 此时按刻录设备订阅刻录状态 fAttachBurnStateCBEx cbAttachStateEx; // 扩展刻录监听回调 LDWORD dwUserEx; // 扩展刻录监听回调用户数据 }NET_IN_ATTACH_STATE; ///@brief CLIENT_AttachBurnState 输出参数 typedef struct tagNET_OUT_ATTACH_STATE { DWORD dwSize; }NET_OUT_ATTACH_STATE; ///@brief 刻录设备回调函数原形,lUploadHandle是CLIENT_StartUploadFileBurned返回值 typedef void (CALLBACK *fBurnFileCallBack) (LLONG lLoginID, LLONG lUploadHandle, int nTotalSize, int nSendSize, LDWORD dwUser); ///@brief CLIENT_StartUploadFileBurned()输入参数 typedef struct tagNET_IN_FILEBURNED_START { DWORD dwSize; const char* szMode; // 文件上传方式 // "append", 追加模式,此时刻录文件名固定为" FILE.zip ",filename被忽略 // "evidence", 证据等大附件, 要求单独刻录的光盘内 const char* szDeviceName; // 光盘名称,如“/dev/sda” const char* szFilename; // 本地文件名称 fBurnFileCallBack cbBurnPos; // 刻录进度回调 LDWORD dwUser; // 用户数据 LLONG lBurnSession; // 刻录句柄, CLIENT_StartBurnSession的返回值. 该值为0时, szDeviceName有效, 此时按刻录设备订阅刻录状态 }NET_IN_FILEBURNED_START; ///@brief CLIENT_StartUploadFileBurned 输出参数 typedef struct tagNET_OUT_FILEBURNED_START { DWORD dwSize; char szState[DH_MAX_NAME_LEN]; // "start":系统准备就绪,可以开始上传; "busy":系统忙,稍后在试。"error":系统未在刻录中,返回出错,请求失败 }NET_OUT_FILEBURNED_START; ///@brief 刻录案件信息 typedef struct tagNET_BURN_CASE_INFO { DWORD dwSize; int nChannel; // 通道号 NET_TIME stuStartTime; // 刻录起始时间 NET_TIME stuEndTime; // 刻录结束时间 int nIndex; // 序号 int nCode; // 编号 int nDiscNum; // 光盘编号 char szName[DH_COMMON_STRING_128]; // 名称 char szPlace[DH_COMMON_STRING_128]; // 办案地点 char szInvestigator[DH_MAX_CASE_PERSON_NUM][DH_COMMON_STRING_32]; // 办案人员 char szXyfs[DH_MAX_CASE_PERSON_NUM][DH_COMMON_STRING_32]; // ArgXyf char szMemo[DH_COMMON_STRING_256]; // 备注 char szVideoName[DH_COMMON_STRING_128]; // 录像名称 char szRecorder[DH_COMMON_STRING_32]; // 刻录人 } NET_BURN_CASE_INFO; ///@brief 刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBurnCase返回值 typedef void (CALLBACK *fBurnCaseCallBack) (LLONG lAttachHandle, NET_BURN_CASE_INFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief CLIENT_AttachBurnCase 接口输入参数 typedef struct tagNET_IN_ATTACH_BURN_CASE { DWORD dwSize; fBurnCaseCallBack cbBurnCase; // 案件信息回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_BURN_CASE; ///@brief CLIENT_AttachBurnCase 接口输出参数 typedef struct tagNET_OUT_ATTACH_BURN_CASE { DWORD dwSize; } NET_OUT_ATTACH_BURN_CASE; ///@brief 刻录设备总线类型 typedef enum tagEM_NET_BURN_DEV_BUS_TYPE { EM_NET_BURN_DEV_BUS_TYPE_UNKNOWN, // 未知 EM_NET_BURN_DEV_BUS_TYPE_IDE, // IDE EM_NET_BURN_DEV_BUS_TYPE_USB, // USB EM_NET_BURN_DEV_BUS_TYPE_1394, // 1394 EM_NET_BURN_DEV_BUS_TYPE_SATA, // SATA EM_NET_BURN_DEV_BUS_TYPE_ESATA, // ESATA }EM_NET_BURN_DEV_BUS_TYPE; ///@brief 刻录设备介质类型 typedef enum tagEM_NET_BURN_DEV_BK_TYPE { EM_NET_BURN_DEV_BK_TYPE_UNKNOWN, // 未知 EM_NET_BURN_DEV_BK_TYPE_DHFS, // 文件系统 EM_NET_BURN_DEV_BK_TYPE_DISK, // 移动硬盘 EM_NET_BURN_DEV_BK_TYPE_CDRW, // 光盘刻录 }EM_NET_BURN_DEV_BK_TYPE; ///@brief 刻录设备状态信息 typedef struct tagNET_BURN_DEV_STATE_INFO { char szName[DH_COMMON_STRING_256]; // 刻录设备名称 unsigned int nTotalSpace; // 光驱总容量,单位KB unsigned int nFreeSpace; // 光驱剩余容量,单位KB EM_NET_BURN_DEV_TRAY_TYPE emTrayType; // 光驱托盘状态 EM_NET_BURN_DEV_OPERATE_TYPE emOperateType; // 光驱使用状态 EM_NET_BURN_DEV_BUS_TYPE emBusType; // 刻录设备总线类型 EM_NET_BURN_DEV_BK_TYPE emBkType; // 刻录设备介质类型 } NET_BURN_DEV_STATE_INFO; ///@brief 刻录设备状态信息列表 typedef struct tagNET_BURN_DEV_STATE_INFO_LIST { unsigned int nListCount; // 列表有效刻录设备状态信息个数,与 pstuNetBurnDevStateInfo 配合使用 NET_BURN_DEV_STATE_INFO *pstuNetBurnDevStateInfo; // 刻录设备状态信息指针,与 nListCount 配合使用 }NET_BURN_DEV_STATE_INFO_LIST; ///@brief 刻录设备状态回调函数原形,lAttachHandle 是 CLIENT_AttachBurnDevState 返回值 typedef void (CALLBACK *fBurnDevStateCallBack) (LLONG lAttachHandle, const NET_BURN_DEV_STATE_INFO_LIST* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief CLIENT_AttachBurnDevState 接口输入参数 typedef struct tagNET_IN_ATTACH_BURN_DEV_STATE { DWORD dwSize; fBurnDevStateCallBack cbBurnDevState; // 刻录设备状态回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_BURN_DEV_STATE; ///@brief CLIENT_AttachBurnDevState 接口输出参数 typedef struct tagNET_OUT_ATTACH_BURN_DEV_STATE { DWORD dwSize; } NET_OUT_ATTACH_BURN_DEV_STATE; /////////////////////////////// 案件自动备份系统(刻录) /////////////////////////////////////// #define CASE_BACK_UP_CHANNEL_MAX_NUM 32 // 案件刻录通道最大数目 #define CASE_BACK_UP_FILE_TYPE_MAX_NUM 8 // 案件刻录文件类型最大数目 #define CASE_BACK_UP_INQUEST_INFO_MAX_NUM 8 // 案件刻录审讯信息最大查询数目 #define CASE_BACK_UP_DEVICE_MAX_NUM 8 // 案件刻录最大设备数目 ///@brief 案件刻录文件类型 typedef enum tagEM_CASE_BACK_UP_FILE_TYPE { EM_CASE_BACK_UP_FILE_TYPE_UNKNOWN, // 未知 EM_CASE_BACK_UP_FILE_TYPE_DAV, // DAV EM_CASE_BACK_UP_FILE_TYPE_JPG, // JPG EM_CASE_BACK_UP_FILE_TYPE_TXT, // TXT }EM_CASE_BACK_UP_FILE_TYPE; ///@brief 案件刻录备份类型 typedef enum tagEM_CASE_BACK_UP_MODE_TYPE { EM_CASE_BACK_UP_MODE_TYPE_UNKNOWN, // 未知的 EM_CASE_BACK_UP_MODE_TYPE_SYNC, // 同步刻录备份 多盘备份相同内容 EM_CASE_BACK_UP_MODE_TYPE_CYCLE, // 循环刻录备份 通过换盘来完成所有内容的备份 }EM_CASE_BACK_UP_MODE_TYPE; ///@brief 视频文件备份格式 typedef enum tagEM_CASE_BACK_UP_PACK_TYPE { EM_CASE_BACK_UP_PACK_TYPE_UNKNOWN, // 未知的 EM_CASE_BACK_UP_PACK_TYPE_DHAV, // DHAV EM_CASE_BACK_UP_PACK_TYPE_MP4, // MP4 EM_CASE_BACK_UP_PACK_TYPE_PS, // PS }EM_CASE_BACK_UP_PACK_TYPE; ///@brief 案件刻录备份查询信息 typedef struct tagNET_CASE_BACK_UP_INQUEST_INFO { char szTitle[128]; // 字段标题 char szText[128]; // 字段内容 BYTE byReserved[512]; // 保留字节 }NET_CASE_BACK_UP_INQUEST_INFO; ///@brief 案件备份刻录查询条件 typedef struct tagNET_CASE_BACK_UP_QUERY_CONDITION { int nChannelNum; // 查询通道数目 int nChannels[CASE_BACK_UP_CHANNEL_MAX_NUM]; // 查询通道数组 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nFileTypeNum; // 文件类型数目 EM_CASE_BACK_UP_FILE_TYPE emFileTypes[CASE_BACK_UP_FILE_TYPE_MAX_NUM]; // 文件类型数组 char szCaseNumber[256]; // 案件编号 int nInquestInfoNum; // 查询字段数目 NET_CASE_BACK_UP_INQUEST_INFO stuInquestInfo[CASE_BACK_UP_INQUEST_INFO_MAX_NUM]; // 查询字段数组 BYTE byReserved[1024]; // 保留字节 }NET_CASE_BACK_UP_QUERY_CONDITION; ///@brief 案件备份刻录模式信息 typedef struct tagNET_CASE_BACK_UP_MODE { EM_CASE_BACK_UP_MODE_TYPE emBackupMode; // 备份模式 int nDeviceNum; // 设备数目 char szDeviceName[CASE_BACK_UP_DEVICE_MAX_NUM][256]; // 设备数组 EM_CASE_BACK_UP_PACK_TYPE emPackType; // 备份文件类型 BOOL bExtraFile; // 是否有附件 BOOL bDataCheck; // 是否有数据校验 BYTE byReserved[1024]; // 保留字节 }NET_CASE_BACK_UP_MODE; ///@brief 开始案件备份刻录入参 typedef struct tagNET_IN_START_CASE_BACK_UP { DWORD dwSize; // 结构体大小 NET_CASE_BACK_UP_QUERY_CONDITION stuCondition; // 查询条件 NET_CASE_BACK_UP_MODE stuMode; // 备份模式 }NET_IN_START_CASE_BACK_UP; ///@brief 开始案件备份刻录失败错误码类型 typedef enum tagEM_CASE_BACK_UP_START_ERROR_CODE { EM_CASE_BACK_UP_START_ERROR_CODE_UNKNOWN, // 未知的 EM_CASE_BACK_UP_START_ERROR_CODE_NORMAL, // 正常 EM_CASE_BACK_UP_START_ERROR_CODE_BACKUPING, // 该案件正在备份中 EM_CASE_BACK_UP_START_ERROR_CODE_NO_FINDFILE, // 未发现文件 EM_CASE_BACK_UP_START_ERROR_CODE_DEVICE_BUSY, // 设备忙 EM_CASE_BACK_UP_START_ERROR_CODE_NO_SUPPORT_MEDIA_FORMAT, // 不支持的媒体格式 EM_CASE_BACK_UP_START_ERROR_CODE_DEVICE_ERROR, // 备份设备错误 EM_CASE_BACK_UP_START_ERROR_CODE_BACKUP_FILE_OVER_LIMIT, // 备份文件数量超过极限值 EM_CASE_BACK_UP_START_ERROR_CODE_OTHER_ERROR, // 其它错误 }EM_CASE_BACK_UP_START_ERROR_CODE; ///@brief 开始案件备份刻录出参 typedef struct tagNET_OUT_START_CASE_BACK_UP { DWORD dwSize; // 结构体大小 EM_CASE_BACK_UP_START_ERROR_CODE emErrorCode; // 错误码 }NET_OUT_START_CASE_BACK_UP; ///@brief 停止案件备份刻录入参 typedef struct tagNET_IN_STOP_CASE_BACK_UP { DWORD dwSize; // 结构体大小 }NET_IN_STOP_CASE_BACK_UP; ///@brief 停止案件备份刻录出参 typedef struct tagNET_OUT_STOP_CASE_BACK_UP { DWORD dwSize; // 结构体大小 }NET_OUT_STOP_CASE_BACK_UP; ///@brief 案件备份刻录状态 typedef enum tagEM_CASE_BACK_UP_STATE_TYPE { EM_CASE_BACK_UP_STATE_TYPE_UNKNOWN, // 未知的 EM_CASE_BACK_UP_STATE_TYPE_INIT, // 初始化 EM_CASE_BACK_UP_STATE_TYPE_STOP, // 停止 EM_CASE_BACK_UP_STATE_TYPE_STOPPING, // 停止中 EM_CASE_BACK_UP_STATE_TYPE_BACKUPING, // 备份中 EM_CASE_BACK_UP_STATE_TYPE_CHANGE_DISK, // 换盘中 EM_CASE_BACK_UP_STATE_TYPE_PREPARE_EXTRA_FILE, // 附件初始化 EM_CASE_BACK_UP_STATE_TYPE_WAIT_EXTRA_FILE, // 等待刻录附件 EM_CASE_BACK_UP_STATE_TYPE_UPLOAD_FILE_START, // 附件刻录中 }EM_CASE_BACK_UP_STATE_TYPE; ///@brief 案件备份刻录状态错误代码 typedef enum tagEM_CASE_BACK_UP_ERROR_CODE { EM_CASE_BACK_UP_ERROR_CODE_UNKNOWN, // 未知的 EM_CASE_BACK_UP_ERROR_CODE_NORMAL, // 正常 EM_CASE_BACK_UP_ERROR_CODE_SPACE_FULL, // 刻录满 EM_CASE_BACK_UP_ERROR_CODE_START_ERROR, // 开始刻录出错 EM_CASE_BACK_UP_ERROR_CODE_STOP_ERROR, // 停止刻录出错 EM_CASE_BACK_UP_ERROR_CODE_WRITE_ERROR, // 刻录文件出错 EM_CASE_BACK_UP_ERROR_CODE_OTHER_ERROR, // 其他错误 }EM_CASE_BACK_UP_ERROR_CODE; ///@brief 案件备份刻录状态数据 typedef struct tagNET_CASE_BACK_UP_STATE { EM_CASE_BACK_UP_STATE_TYPE emBackUpState; // 当前刻录状态 EM_CASE_BACK_UP_ERROR_CODE emErrorCode; // 错误代码 BYTE byReserved[512]; // 保留字节 }NET_CASE_BACK_UP_STATE; ///@brief 案件备份刻录文件信息 typedef struct tagNET_CASE_BACK_UP_FILE_INFO { int nFileCount; // 需要刻录的所有文件的总数量 int nCurFileIndex; // 当前正在刻录的文件的索引号 TP_U64 nFileTotalLength; // 需要刻录的总数据大小 TP_U64 nCurBackupTotalLength; // 当前已经刻录了多少数据 TP_U64 nCurBackupFileTotalLength; // 当前正在刻录的文件的大小 TP_U64 nCurBackupFileLength; // 当前正在刻录的文件已经刻录的数据大小 BYTE byReserved[512]; // 保留字节 }NET_CASE_BACK_UP_FILE_INFO; ///@brief 案件备份刻录设备信息 typedef struct tagNET_CASE_BACK_UP_DEVICE_INFO { int nDeviceID; // 设备ID char szDeviceName[256]; // 设备名称 int nTotalSpace; // 设备总的容量 单位KB int nRemainSpace; // 设备剩余容量 单位KB EM_CASE_BACK_UP_STATE_TYPE emBackUpState; // 备份状态 EM_CASE_BACK_UP_ERROR_CODE emErrorCode; // 错误代码 BYTE byReserved[512]; // 保留字节 }NET_CASE_BACK_UP_DEVICE_INFO; ///@brief 案件备份刻录状态 typedef struct tagNET_OUT_CASE_BACK_UP_STATE { DWORD dwSize; // 结构体大小 NET_CASE_BACK_UP_STATE stuBackUpState; // 备份状态信息 NET_CASE_BACK_UP_FILE_INFO stuFileInfo; // 备份文件信息 int nDeviceNum; // 设备数量 NET_CASE_BACK_UP_DEVICE_INFO stuDeviceInfo[CASE_BACK_UP_DEVICE_MAX_NUM]; // 设备信息数组 }NET_OUT_CASE_BACK_UP_STATE; ///@brief 案件备份刻录状态回调函数 typedef void (CALLBACK *fAttachCaseBackUpState)(LLONG lLoginID, LLONG lAttachHandle, const NET_OUT_CASE_BACK_UP_STATE* pBuf, int nBufLen, LDWORD dwUser); ///@brief 案件备份刻录状态attach操作入参 typedef struct tagNET_IN_ATTACH_CASE_BACK_UP_STATE { DWORD dwSize; // 结构体大小 fAttachCaseBackUpState cbAttachState; // 回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_CASE_BACK_UP_STATE; ///@brief 案件备份刻录状态attach操作出参 typedef struct tagNET_OUT_ATTACH_CASE_BACK_UP_STATE { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_CASE_BACK_UP_STATE; ///@brief 案件备份刻录状态detach操作入参 typedef struct tagNET_IN_DETACH_CASE_BACK_UP_STATE { DWORD dwSize; // 结构体大小 }NET_IN_DETACH_CASE_BACK_UP_STATE; ///@brief 案件备份刻录状态detach操作出参 typedef struct tagNET_OUT_DETACH_CASE_BACK_UP_STATE { DWORD dwSize; // 结构体大小 }NET_OUT_DETACH_CASE_BACK_UP_STATE; ///@brief 获取案件备份刻录信息入参 typedef struct tagNET_IN_GET_CASE_BACK_UP_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_CASE_BACK_UP_INFO; ///@brief 获取案件备份刻录信息出参 typedef struct tagNET_OUT_GET_CASE_BACK_UP_INFO { DWORD dwSize; // 结构体大小 NET_CASE_BACK_UP_QUERY_CONDITION stuCondition; // 备份条件 NET_CASE_BACK_UP_MODE stuMode; // 备份模式 }NET_OUT_GET_CASE_BACK_UP_INFO; ///@brief 开始案件备份刻录 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartBackUpCase(LLONG lLoginID, const NET_IN_START_CASE_BACK_UP* pstInParam, NET_OUT_START_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 停止案件备份刻录 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopBackUpCase(LLONG lLoginID, const NET_IN_STOP_CASE_BACK_UP* pstInParam, NET_OUT_STOP_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 监听案件备份刻录状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachBackUpCaseState(LLONG lLoginID, const NET_IN_ATTACH_CASE_BACK_UP_STATE* pstInParam, NET_OUT_ATTACH_CASE_BACK_UP_STATE *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 取消监听案件备份刻录状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachBackUpCaseState(LLONG lAttachHandle, const NET_IN_DETACH_CASE_BACK_UP_STATE* pstInParam, NET_OUT_DETACH_CASE_BACK_UP_STATE *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 获取案件备份刻录信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCaseBackUpInfo(LLONG lLoginID, const NET_IN_GET_CASE_BACK_UP_INFO* pstInParam, NET_OUT_GET_CASE_BACK_UP_INFO *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); /////////////////////////////// 案件自动备份系统(刻录) /////////////////////////////////////// /////////////////////////////// 组合通道 /////////////////////////////////////// #define NET_COMPOSE_CHANNEL_MAX_SPLIT_WINDOW_NUM 36 // 组合通道最大分割窗口数目 ///@brief 临时分割窗口信息 typedef struct tagNET_TEMP_SPLIT_WINDOW_INFO { int nChannel; // 叠加画面通道号 BOOL bAudio; // 是否混合音频 DH_RECT stuPosition; // 窗口坐标,采用8192坐标系 BYTE byReserved[128]; // 保留字节 }NET_TEMP_SPLIT_WINDOW_INFO; ///@brief 获取临时分割窗口信息入参 typedef struct tagNET_IN_GET_TEMP_SPLIT { DWORD dwSize; // 结构体大小 int nComposeChannel; // 组合通道号 }NET_IN_GET_TEMP_SPLIT; ///@brief 获取临时分割窗口信息出参 typedef struct tagNET_OUT_GET_TEMP_SPLIT { DWORD dwSize; // 结构体大小 DH_SPLIT_MODE emSplitMode; // 分割模式,目前只支持最大32画面分割模式 int nSplitNum; // 临时分割窗口数量,目前只支持最大32画面分割 NET_TEMP_SPLIT_WINDOW_INFO stuWindowInfo[NET_COMPOSE_CHANNEL_MAX_SPLIT_WINDOW_NUM]; // 临时分割窗口信息数组 }NET_OUT_GET_TEMP_SPLIT; ///@brief 设置临时分割窗口信息入参 typedef struct tagNET_IN_SET_TEMP_SPLIT { DWORD dwSize; // 结构体大小 int nComposeChannel; // 组合通道号 DH_SPLIT_MODE emSplitMode; // 分割模式,目前只支持最大32画面分割模式 int nSplitNum; // 临时分割窗口数量,目前只支持最大32画面分割 NET_TEMP_SPLIT_WINDOW_INFO stuWindowInfo[NET_COMPOSE_CHANNEL_MAX_SPLIT_WINDOW_NUM]; // 临时分割窗口信息数组 }NET_IN_SET_TEMP_SPLIT; ///@brief 设置临时分割窗口信息出参 typedef struct tagNET_OUT_SET_TEMP_SPLIT { DWORD dwSize; // 结构体大小 }NET_OUT_SET_TEMP_SPLIT; ///@brief 分割窗口信息 typedef struct tagNET_TEMP_SOURCE_WINDOW_INFO { int nWindowID; // 窗口编号,从0开始 int nUniqueChannel; // 窗口绑定的通道源 BYTE byReserved[128]; // 保留字节 }NET_TEMP_SOURCE_WINDOW_INFO; ///@brief 设置临时的分割窗口数据源入参 typedef struct tagNET_IN_SET_TEMP_SOURCE { DWORD dwSize; // 结构体大小 int nComposeChannel; // 组合通道号 int nWindowNum; // 窗口数量 NET_TEMP_SOURCE_WINDOW_INFO stuWindowInfo[NET_COMPOSE_CHANNEL_MAX_SPLIT_WINDOW_NUM]; // 窗口信息数组 }NET_IN_SET_TEMP_SOURCE; ///@brief 设置临时的分割窗口数据源出参 typedef struct tagNET_OUT_SET_TEMP_SOURCE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_TEMP_SOURCE; ///@brief 设置临时的分割窗口信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetTempSplit(LLONG lLoginID, const NET_IN_SET_TEMP_SPLIT* pstInParam, NET_OUT_SET_TEMP_SPLIT *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 获取临时的分割窗口信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetTempSplit(LLONG lLoginID, const NET_IN_GET_TEMP_SPLIT* pstInParam, NET_OUT_GET_TEMP_SPLIT *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 设置临时的分割窗口数据源 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetTempSource(LLONG lLoginID, const NET_IN_SET_TEMP_SOURCE* pstInParam, NET_OUT_SET_TEMP_SOURCE *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); /////////////////////////////// 组合通道 /////////////////////////////////////// /////////////////////////////// Storage /////////////////////////////////////// ///@brief 远程存储写入结果 typedef enum tagNET_STORAGE_WRITE_STATE { NS_WRITE_UNKNOWN, // 未知 NS_WRITE_OK, // 成功 NS_WRITE_DISK_IO_ERROR, // 磁盘IO错误 NS_WRITE_DISK_NOT_READY, // 磁盘未准备好 NS_WRITE_DISK_FAULT, // 磁盘故障 NS_WRITE_STREAM_NOT_EXIST, // 数据流ID不存在 NS_WRITE_MOUNT_DISK_ERROR, // 磁盘挂载错误 } NET_STORAGE_WRITE_STATE; ///@brief 远程区块信息 typedef struct tagNET_STORAGE_BLOCK { DWORD dwSize; unsigned int nID; // CQFS块ID unsigned int nStreamID; // 数据流唯一标识 unsigned int nRecycleTimestamp; // CQFS回收时间戳 unsigned int nBeginTimestamp; // 块内数据开始时间戳 unsigned int nEndTimestamp; // 块内数据结束时间戳 unsigned int nLockCount; // 锁定计数值, 0表示未锁定 char szDiskUUID[DH_COMMON_STRING_64]; // 磁盘UUID } NET_STORAGE_BLOCK; ///@brief 远程存储的信息状态 typedef struct tagNET_STORAGE_WRITE_INFO { DWORD dwSize; NET_STORAGE_WRITE_STATE emState; // 写入结果 int nBlockCount; // 块数量 NET_STORAGE_BLOCK stuBlocks[DH_MAX_NET_STRORAGE_BLOCK_NUM]; // 块信息 } NET_STORAGE_WRITE_INFO; ///@brief \fn 订阅写入远程存储的信息状态回调函数 typedef void (CALLBACK *fNetStorageAttachWriteInfoCB)(LLONG lAttachHandle, NET_STORAGE_WRITE_INFO* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_NetStorageAttachWriteInfo 接口输入参数 typedef struct tagNET_IN_STORAGE_ATTACH_WRITE_INFO { DWORD dwSize; const char* pszName; // 远程存储名称, 值从NAS配置中获取 fNetStorageAttachWriteInfoCB cbISCSIBlcok; // 回调函数 LDWORD dwUser; // 用户数据 } NET_IN_STORAGE_ATTACH_WRITE_INFO; ///@brief CLIENT_NetStorageAttachWriteInfo 接口输出参数 typedef struct tagNET_OUT_STORAGE_ATTACH_WRITE_INFO { DWORD dwSize; } NET_OUT_STORAGE_ATTACH_WRITE_INFO; ///@brief CLIENT_NetStorageGetWriteInfo 接口输入参数 typedef struct tagNET_IN_STORAGE_GET_WRITE_INFO { DWORD dwSize; const char* pszName; // 远程存储名称 } NET_IN_STORAGE_GET_WRITE_INFO; ///@brief CLIENT_NetStorageGetWriteInfo 接口输出参数 typedef struct tagNET_OUT_STORAGE_GET_WRITE_INFO { DWORD dwSize; int nBlockCount; // 块数量 NET_STORAGE_BLOCK stuBlocks[DH_MAX_NET_STRORAGE_BLOCK_NUM]; // 块信息 } NET_OUT_STORAGE_GET_WRITE_INFO; ///@brief RAID操作类型 typedef enum tagNET_RAID_OPERATE_TYPE { NET_RAID_OPERATE_ADD, // 添加RAID, 对应结构体 NET_IN_RAID_ADD 和 NET_OUT_RAID_ADD NET_RAID_OPERATE_REMOVE, // 删除RAID, 对应结构体 NET_IN_RAID_REMOVE 和 NET_OUT_RAID_REMOVE NET_RAID_OPERATE_GET_SUBDEVICE, // 获取RAID子设备信息, 对应结构体 NET_IN_RAID_GET_SUBDEVICE 和 NET_OUT_RAID_GET_SUBDEVICE NET_RAID_OPERATE_GET_SUBSMART, // 获取RAID子设备SMART信息, 对应结构体 NET_IN_RAID_GET_SUBSMART 和 NET_OUT_RAID_GET_SUBSMART NET_RAID_OPERATE_MODIFY, // 修改RAID, 对应结构体 NET_IN_RAID_MODIFY 和 NET_OUT_RAID_MODIFY } NET_RAID_OPERATE_TYPE; ///@brief RAID信息 typedef struct tagNET_RAID_INFO { DWORD dwSize; char szName[DH_COMMON_STRING_64]; // 名称, 为空时名称由设备返回 char szLevel[DH_COMMON_STRING_16]; // 等级, 例如"RAID0", "RAID5"等 int nMemberNum; // 成员数量 char szMembers[DH_MAX_MEMBER_PER_RAID][DH_COMMON_STRING_64]; // 成员信息 } NET_RAID_INFO; ///@brief 添加RAID的返回结果 typedef struct tagNET_RAID_ADD_RESULT { DWORD dwSize; BOOL bResult; DWORD dwErrorCode; // 失败错误码 char szName[DH_COMMON_STRING_64]; // 名称 } NET_RAID_ADD_RESULT; ///@brief 添加RAID输入参数 typedef struct tagNET_IN_RAID_ADD { DWORD dwSize; int nRaidNun; // RAID数量 NET_RAID_INFO stuRaids[DH_MAX_RAID_NUM]; // RAID信息 } NET_IN_RAID_ADD; ///@brief 添加RAID输出参数 typedef struct tagNET_OUT_RAID_ADD { DWORD dwSize; int nResultNum; // 结果数 NET_RAID_ADD_RESULT stuResults[DH_MAX_RAID_NUM]; // RAID操作的结果 } NET_OUT_RAID_ADD; ///@brief 删除RAID的返回结果 typedef struct tagNET_RAID_REMOVE_RESULT { DWORD dwSize; BOOL bResult; DWORD dwErrorCode; // 失败错误码 } NET_RAID_REMOVE_RESULT; ///@brief 删除RAID输入参数 typedef struct tagNET_IN_RAID_REMOVE { DWORD dwSize; int nRaidNum; // RAID数量 char szRaids[DH_MAX_RAID_NUM][DH_COMMON_STRING_64]; // RAID名称数组 } NET_IN_RAID_REMOVE; ///@brief 删除RAID输出参数 typedef struct tagNET_OUT_RAID_REMOVE { DWORD dwSize; int nResultNum; // 结果数 NET_RAID_REMOVE_RESULT stuResults[DH_MAX_RAID_NUM]; // RAID操作的结果 } NET_OUT_RAID_REMOVE; ///@brief 获取RAID子设备信息输入参数 typedef struct tagNET_IN_RAID_GET_SUBDEVICE { DWORD dwSize; const char* pszRaidName; // RAID名称 } NET_IN_RAID_GET_SUBDEVICE; ///@brief 获取RAID子设备信息输出参数 typedef struct tagNET_OUT_RAID_GET_SUBDEVICE { DWORD dwSize; int nSubDeviceNum; // 子设备数量 DH_STORAGE_DEVICE stuSubDevices[DH_MAX_MEMBER_PER_RAID]; // 子设备信息 } NET_OUT_RAID_GET_SUBDEVICE; ///@brief RAID子设备SMART信息 typedef struct tagNET_RAID_SMART_INFO { DWORD dwSize; unsigned int nID; // 属性ID char szName[DH_COMMON_STRING_64]; // 属性名 int nCurrent; // 属性值 int nWorst; // 最大出错值 int nThreshold; // 阈值 int nPredict; // 状态 char szRaw[DH_COMMON_STRING_16]; // 实际值 } NET_RAID_SMART_INFO; ///@brief 获取RAID子设备SMART信息输入参数 typedef struct tagNET_IN_RAID_GET_SUBSMART { DWORD dwSize; const char* pszSubDevName; // RAID子设备名称 } NET_IN_RAID_GET_SUBSMART; ///@brief 获取RAID子设备SMART信息输出参数 typedef struct tagNET_OUT_RAID_GET_SUBSMART { DWORD dwSize; int nSmartNum; // SMART信息数 NET_RAID_SMART_INFO stuSmartInfos[MAX_SMART_VALUE_NUM]; // SMART信息 } NET_OUT_RAID_GET_SUBSMART; ///@brief 修改RAID的返回结果 typedef struct tagNET_RAID_MODIFY_RESULT { DWORD dwSize; BOOL bResult; DWORD dwErrorCode; // 失败错误码 } NET_RAID_MODIFY_RESULT; ///@brief 修改RAID输入参数 typedef struct tagNET_IN_RAID_MODIFY { DWORD dwSize; int nRaidNun; // RAID数量 NET_RAID_INFO stuRaids[DH_MAX_RAID_NUM]; // RAID信息 } NET_IN_RAID_MODIFY; ///@brief 修改RAID输出参数 typedef struct tagNET_OUT_RAID_MODIFY { DWORD dwSize; int nResultNum; // 结果数 NET_RAID_MODIFY_RESULT stuResults[DH_MAX_RAID_NUM]; // RAID操作的结果 } NET_OUT_RAID_MODIFY; ///@brief 同步方式 typedef enum tagEM_SYNC_MODE { EM_SYNC_MODE_UNKNOWN = -1, // 未知 EM_SYNC_MODE_ADAPTIVE, // 自适应 EM_SYNC_MODE_SYNC_FIRST, // 同步优先 EM_SYNC_MODE_BUSINESS_FIRST, // 业务优先 EM_SYNC_MODE_BALANCED, // 均衡 }EM_SYNC_MODE; ///@brief 热备策略 typedef enum tagEM_HOT_SPARE_POLICY { EM_HOT_SPARE_POLICY_UNKNOWN, // 未知 EM_HOT_SPARE_POLICY_HIGH, // 高 EM_HOT_SPARE_POLICY_NORMAL, // 正常 EM_HOT_SPARE_POLICY_LOWER, // 低 }EM_HOT_SPARE_POLICY; ///@brief RAID类型 typedef enum tagEM_RAID_TYPE { EM_RAID_TYPE_UNKNOWN, // 未知 EM_RAID_TYPE_RAID5, // RAID5 EM_RAID_TYPE_RAID6, // RAID6 }EM_RAID_TYPE; ///@brief 纠删码存储(RAIDJ) typedef struct tagNET_RAIDJ_INFO { UINT nCheckDiskNum; // 校验盘个数。纠删码存储(RAIDJ)支持指定校验盘的数量 char szReserved[256]; // 保留字节 }NET_RAIDJ_INFO; ///@brief RAID2.0 typedef struct tagNET_RAID20_INFO { UINT nCheckDiskNum; // 校验盘个数 UINT nDataDiskNums; // 数据盘个数 EM_HOT_SPARE_POLICY emHotSparePolicy; // 热备策略(仅创建RAID2.0时用到) EM_RAID_TYPE emRaidType; // RAID类型(仅创建RAID2.0时用到) char szReserved[256]; // 保留字节 }NET_RAID20_INFO; ///@brief RAID配置 typedef struct tagNET_RAID_CONFIG_INFO { char szLevel[16]; // 等级, 支持的等级范围从getCaps查询 EM_SYNC_MODE emSyncMode; // 同步方式 char szAlias[24]; // RAID别名 NET_RAIDJ_INFO stuRaidJ; // 纠删码存储(RAIDJ),根据Level判断是否存在 BOOL bRaidJEnable; // 使能纠删码存储(RAIDJ) NET_RAID20_INFO stuRaid20; // RAID2.0,根据Level判断是否存在 BOOL bRaid20Enable; // 使能RAID2.0 char szReserved[256]; // 保留字节 } NET_RAID_CONFIG_INFO; ///@brief 异步添加RAID输入参数 typedef struct tagNET_IN_RAID_ADD_ASYN { DWORD dwSize; int nMemberNums; // RAID成员的个数 char szMembers[128][16]; // RAID成员 NET_RAID_CONFIG_INFO stuRaidConfig; // RAID配置 } NET_IN_RAID_ADD_ASYN; ///@brief 异步添加RAID输出参数 typedef struct tagNET_OUT_RAID_ADD_ASYN { DWORD dwSize; UINT nId; // 异步任务ID } NET_OUT_RAID_ADD_ASYN; ///@brief 异步添加RAID CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddRaidAsyn(LLONG lLoginID, const NET_IN_RAID_ADD_ASYN* pstInParam, NET_OUT_RAID_ADD_ASYN* pstOutParam, int nWaitTime); ///@brief RAID信息 typedef struct tagNET_RAID_OBJECT_INFO { char szName[16]; // RAID名称 char szAliasName[32]; // RAID别名 char szReserved[256]; // 保留字节 }NET_RAID_OBJECT_INFO; ///@brief RAID状态 typedef enum tagEM_RAID_STATE { EM_RAID_STATE_UNKNOWN = 0, // 未知 EM_RAID_STATE_CREATING_RAID, // 正在创建RAID EM_RAID_STATE_CREATE_RAID_SUCCESS, // 创建RAID 成功 EM_RAID_STATE_CREATE_RAID_FAIL, // 创建RAID 失败 }EM_RAID_STATE; ///@brief CLIENT_AttachRaidAdd的回调信息 typedef struct tagNET_CB_RAID_ADD_INFO { DWORD dwSize; // 结构体大小 UINT nId; // 异步任务ID NET_RAID_OBJECT_INFO stuRaid; // RAID信息 EM_RAID_STATE emRaidState; // RAID状态 int nPercent; // 任务执行进度,百分比 }NET_CB_RAID_ADD_INFO; ///@brief CLIENT_AttachRaidAdd的回调函数 typedef void (CALLBACK *fRaidAddCallBack)(LLONG lAttachHandle, NET_CB_RAID_ADD_INFO* pstuRaidAdd, LDWORD dwUser); ///@brief CLIENT_AttachRaidAdd 输入参数 typedef struct tagNET_IN_ATTACH_RAID_ADD { DWORD dwSize; // 此结构体大小,必须赋值 fRaidAddCallBack cbRaidAdd; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_RAID_ADD; ///@brief CLIENT_AttachRaidAdd 输出参数 typedef struct tagNET_OUT_ATTACH_RAID_ADD { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_RAID_ADD; ///@brief 订阅异步RAID CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRaidAdd(LLONG lLoginID, NET_IN_ATTACH_RAID_ADD* pstInParam, NET_OUT_ATTACH_RAID_ADD* pstOutParam , int nWaitTime); ///@brief 取消订阅异步RAID CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRaidAdd(LLONG lAttachHandle); ///@brief 文件系统类型 typedef enum tagEM_FS_TYPE { EM_FS_TYPE_UNKNWON, // 未知 EM_FS_TYPE_EXT3, EM_FS_TYPE_EXT4, EM_FS_TYPE_XFS, EM_FS_TYPE_VFAT, EM_FS_TYPE_DHFS, EM_FS_TYPE_CQFS, EM_FS_TYPE_NTFS, } EM_FS_TYPE; ///@brief 分区格式信息 typedef struct tagNET_PART_FORMAT_INFO { EM_FS_TYPE emFsType; // 文件系统类型, 若取EM_FS_TYPE_UNKNWON 表示由系统层决定 char szVolumeLabel[64]; // 卷标 BYTE byReserved[2044]; // 保留字节 } NET_PART_FORMAT_INFO; ///@brief CLIENT_DevStorageFormatPartitionAsyn 接口输入参数 typedef struct tagNET_IN_DEVSTORAGE_FORMAT_PARTITION_ASYN { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 char szPartName[32]; // 分区名称, 填"" 表示对整块硬盘分区 NET_PART_FORMAT_INFO stuPartFormatInfo; // 分区格式信息 } NET_IN_DEVSTORAGE_FORMAT_PARTITION_ASYN; ///@brief CLIENT_DevStorageFormatPartitionAsyn 接口输出参数 typedef struct tagNET_OUT_DEVSTORAGE_FORMAT_PARTITION_ASYN { DWORD dwSize; // 结构体大小 } NET_OUT_DEVSTORAGE_FORMAT_PARTITION_ASYN; ///@brief 设备异步格式化状态 typedef enum tagEM_STORAGE_FORMAT_STATE { EM_STORAGE_FORMAT_UNKNOWN, // 未知 EM_STORAGE_FORMAT_FORMATTING, // 正在格式化 EM_STORAGE_FORMAT_SUCCESS, // 格式化成功 EM_STORAGE_FORMAT_FAILED, // 格式化失败 } EM_STORAGE_FORMAT_STATE; ///@brief 格式化设备信息 typedef struct tafNET_DEVSTORAGE_INFO { char szDevName[32]; // 设备名称 char szAliasName[32]; // RAID别名,RAID有效 UINT nPhysicNo; // 硬盘物理号,从1开始,单盘有效 BYTE byReserved[2044]; // 保留字节 } NET_DEVSTORAGE_INFO; ///@brief 异步格式化设备状态回调信息 typedef struct tagNET_CB_DEVSTORAGE_FORMAT_INFO { NET_DEVSTORAGE_INFO stuDevStorageInfo; // 格式化设备信息 EM_STORAGE_FORMAT_STATE emStorageFormatState; // 设备异步格式化状态 UINT nPercent; // 格式化进度百分比 BYTE byReserved[2048]; // 保留字节 } NET_CB_DEVSTORAGE_FORMAT_INFO; ///@brief 异步格式化设备状态订阅回调函数原型, lAttachHandle 是 CLIENT_AttachDevStorageDevFormat接口的返回值 typedef int (CALLBACK *fDevStorageFormatCallBack)(LLONG lAttachHandle, NET_CB_DEVSTORAGE_FORMAT_INFO *pstDevStorageFormatInfo, LDWORD dwUser); ///@brief CLIENT_AttachDevStorageDevFormat 接口输入参数 typedef struct tagNET_IN_DEVSTORAGE_ATTACH_DEV_FORMAT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 对齐 fDevStorageFormatCallBack cbDevStorageFormatInfo; // 异步格式化设备状态订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_DEVSTORAGE_ATTACH_DEV_FORMAT; ///@brief 存储设备操作信息 typedef struct tagNET_DEVICE_OPERATE_INFO { char szName[128]; // 设备文件名 char szAliasName[32]; // 设备别名(RAID时有效) UINT nPhysicNo; // 设备物理号(单盘时有效) char szReserved[512]; // 保留字节 }NET_DEVICE_OPERATE_INFO; ///@brief 存储设备操作状态回调消息 typedef struct tagNET_CB_DEVICE_OPERATE_INFO { NET_DEVICE_OPERATE_INFO stuDevOpInfo; // 存储设备操作信息 UINT nState; // 存储设备操作状态 char szReserved[512]; // 保留字节 } NET_CB_DEVICE_OPERATE_INFO; ///@brief 存储设备操作状态消息订阅回调函数原型, lAttachHandle 是 CLIENT_AttachDevStorageOpState接口的返回值 typedef void (CALLBACK *fDevStorageOpStateCallBack)(LLONG lAttachHandle, NET_CB_DEVICE_OPERATE_INFO *pstDeviceOperateInfo, LDWORD dwUser); ///@brief CLIENT_AttachDevStorageOpState 接口输入参数 typedef struct tagNET_IN_ATTACH_DEVSTORAGE_OP_STATE { DWORD dwSize; // 结构体大小 char szReserved[4]; // 对齐 fDevStorageOpStateCallBack cbDevStorageOpStateInfo; // 存储设备操作状态消息订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_DEVSTORAGE_OP_STATE; ///@brief CLIENT_AttachDevStorageOpState 接口输出参数 typedef struct tagNET_OUT_ATTACH_DEVSTORAGE_OP_STATE { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_DEVSTORAGE_OP_STATE; ///@brief 订阅存储设备操作状态消息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDevStorageOpState(LLONG lLoginID, const NET_IN_ATTACH_DEVSTORAGE_OP_STATE* pInParam, NET_OUT_ATTACH_DEVSTORAGE_OP_STATE *pOutParam,const int nWaitTime); ///@brief 取消订阅存储设备操作状态消息, lAttachHandle 为CLIENT_AttachDevStorageOpState 接口返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDevStorageOpState(LLONG lAttachHandle); ///@brief 在线用户列表状态变化事件 typedef enum tagNET_EM_CHANGE_TYPE { NET_EM_CHANGE_TYPE_UNKOWN, // 未知 NET_EM_CHANGE_TYPE_LOGIN, // 用户登录,增加一条在线用户类表信息 NET_EM_CHANGE_TYPE_LOGOUT, // 用户登出,删除用户ID对应在线用户列表信息 NET_EM_CHANGE_TYPE_KICKOUT, // 踢出用户,删除用户ID对应在线用户列表信息 NET_EM_CHANGE_TYPE_BLOCK, // 屏蔽用户,将用户ID对应在线用户列表置灰 } NET_EM_CHANGE_TYPE; ///@brief 链接类型,在用户登录时用到 typedef enum tagNET_EM_LINK_TYPE { NET_EM_LINK_TYPE_UNKOWN, // 未知 NET_EM_LINK_TYPE_TCP, // TCP NET_EM_LINK_TYPE_UDP, // UDP NET_EM_LINK_TYPE_HTTP, // HTTP NET_EM_LINK_TYPE_HTTPS, // HTTPS NET_EM_LINK_TYPE_OTHERS, // others } NET_EM_LINK_TYPE; ///@brief CLIENT_AttachActiveUserState的回调信息 typedef struct tagNET_CB_ACTIVE_USER_STATE_INFO { DWORD dwSize; // 结构体大小 NET_EM_CHANGE_TYPE emChangeType; // 在线用户列表状态变化事件 UINT nId; // 用户ID char szName[128]; // 用户名,用户登录时用到 char szGroup[128]; // 用户组,在用户登录时用到 char szClientType[16]; // 客户端类型,在用户登录时用到 char szClientAddress[40]; // 客户端IP,在用户登录时用到 char szLoginTime[20]; // 用户登录时间,在用户登录时用到 UINT nTimeSinceLogin; // 用户登录时长,在用户登录时用到,单位分钟 char szClientMac[20]; // 用户主机Mac,在用户登录时用到 NET_EM_LINK_TYPE emLinkType; // 链接类型,在用户登录时用到 char szMemo[256]; // 用户备注信息 }NET_CB_ACTIVE_USER_STATE_INFO; ///@brief CLIENT_AttachActiveUserState的回调函数 typedef void (CALLBACK *fActiveUserStateCallBack)(LLONG lAttachHandle, NET_CB_ACTIVE_USER_STATE_INFO* pstuActiveUserState, LDWORD dwUser); ///@brief CLIENT_AttachActiveUserState 输入参数 typedef struct tagNET_IN_ATTACH_ACTIVE_USER_STATE { DWORD dwSize; // 此结构体大小,必须赋值 fActiveUserStateCallBack cbActiveUserState; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_ACTIVE_USER_STATE; ///@brief CLIENT_AttachActiveUserState 接口输出参数 typedef struct tagNET_OUT_ATTACH_ACTIVE_USER_STATE { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_ACTIVE_USER_STATE; ///@brief 订阅活动用户状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachActiveUserState(LLONG lLoginID, NET_IN_ATTACH_ACTIVE_USER_STATE* pstInParam, NET_OUT_ATTACH_ACTIVE_USER_STATE* pstOutParam , int nWaitTime); ///@brief 退订活动用户状态, lAttachHandle为CLIENT_AttachActiveUserState的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachActiveUserState(LLONG lAttachHandle); ///@brief CLIENT_GetTemporaryToken 接口入参 typedef struct tagNET_IN_GET_TEMPORARY_TOKEN { DWORD dwSize; // 结构体大小 char szclientIP[48]; // 请求token的客户端IP. 可为空("") int nkeepAliveTime; // token有效时间, 单位:秒, 范围5-90s BOOL bRemoteMode; // 获取级联模式Token int nChannelID; // 级联设备通道号,从0开始,当bRemoteMode为TRUE时有效 }NET_IN_GET_TEMPORARY_TOKEN; ///@brief 临时用户账号信息 typedef struct tagNET_TEMP_USER_INFO { char szUsername[128]; // 生成新的临时用户账号, 与Token绑定使用 char szToken[128]; // 获取临时token, 长度为64 char szReserved[1024]; // 保留字节 } NET_TEMP_USER_INFO; ///@brief CLIENT_GetTemporaryToken 接口出参 typedef struct tagNET_OUT_GET_TEMPORARY_TOKEN { DWORD dwSize; // 结构体大小 NET_TEMP_USER_INFO stuTempUserInfo; // 临时用户账号信息 }NET_OUT_GET_TEMPORARY_TOKEN; ///@brief 获取临时token CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetTemporaryToken(LLONG lLoginID, const NET_IN_GET_TEMPORARY_TOKEN* pstuInParam, NET_OUT_GET_TEMPORARY_TOKEN* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetPwdValidPeriod 接口入参 typedef struct tagNET_IN_GET_PWD_VALID_PERIOD { DWORD dwSize; // 结构体大小 char szBytes[4]; // 字节对齐 char szName[128]; // 用户名 }NET_IN_GET_PWD_VALID_PERIOD; ///@brief CLIENT_GetPwdValidPeriod 接口出参 typedef struct tagNET_OUT_GET_PWD_VALID_PERIOD { DWORD dwSize; // 结构体大小 int nRemainDays; // 密码有效剩余天数 -1-无限期,>=0-实际剩余有效天数 UINT nTotalDays; // 密码有效总天数 0-无限期,>0-总的有效天数 char szBytes[4]; // 字节对齐 }NET_OUT_GET_PWD_VALID_PERIOD; ///@brief 获取用户密码过期剩余时间 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPwdValidPeriod(LLONG lLoginID, const NET_IN_GET_PWD_VALID_PERIOD* pstuInParam, NET_OUT_GET_PWD_VALID_PERIOD* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetUserManagerCaps 接口入参 typedef struct tagNET_IN_GET_USER_MANAGER_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_USER_MANAGER_CAPS; ///@brief CLIENT_GetUserManagerCaps 接口出参 typedef struct tagNET_OUT_GET_USER_MANAGER_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportTokenLoginType; // 是否支持用户使用临时Token进行二次鉴权(Web免密跳转功能使用 }NET_OUT_GET_USER_MANAGER_CAPS; ///@brief 获取用户管理能力集 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数 ///@param[out] pstuOutParam: 接口输出参数 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetUserManagerCaps(LLONG lLoginID, NET_IN_GET_USER_MANAGER_CAPS* pstuInParam, NET_OUT_GET_USER_MANAGER_CAPS* pstuOutParam, int nWaitTime); //////////////////////////// 外部设备 ////////////////////////////////////////// ///@brief 状态名称 typedef enum tagEM_STATE_MANAGER_STATE { EM_STATE_MANAGER_STATE_UNKNOWN, // 未知 EM_STATE_MANAGER_STATE_SERIALDATAUPLOAD, // 串口外接实时数据上报,对应结构体NET_SERIALDATAUPLOAD_INFO } EM_STATE_MANAGER_STATE; ///@brief 温度状态/湿度状态 typedef enum tagEM_TEMP_HUM_STATE { EM_TEMP_HUM_STATE_UNKNOWN = -1, // 未知 EM_TEMP_HUM_STATE_NORMAL, // 正常 EM_TEMP_HUM_STATE_HIGH, // 偏高 EM_TEMP_HUM_STATE_LOW, // 偏低 } EM_TEMP_HUM_STATE; ///@brief 串口外接实时数据上报信息 typedef struct tagNET_SERIALDATAUPLOAD_INFO { EM_TEMP_HUM_STATE emTempAlarmStatus; // 温度状态 EM_TEMP_HUM_STATE emHumAlarmStatus; // 湿度状态 double dbTemperature; // 温度采集模块上报的温度值,单位℃ double dbHumidity; // 湿度采集模块上报的湿度值,单位RH,百分比 NET_TIME_EX stuTime; // UTC时间 char szReserved[252]; // 保留字节 } NET_SERIALDATAUPLOAD_INFO; ///@brief CLIENT_AttachStateManager的回调信息 typedef struct tagNET_CB_STATE_MANAGER_INFO { EM_STATE_MANAGER_STATE emCallBackStateName; // 发生变化的状态名 BYTE byReserved1[4]; // 预留字节 NET_SERIALDATAUPLOAD_INFO stuSerialDataUpLoadState; // 通过串口外接到设备的各种模块实时数据上报各种外接模块的数据信息,例如温度采集模块的温度,湿度采集模块的湿度等,对应EM_STATE_MANAGER_STATE_SERIALDATAUPLOAD BYTE byReserved[2048]; // 预留字节 }NET_CB_STATE_MANAGER_INFO; ///@brief CLIENT_AttachStateManager的回调函数 typedef void (CALLBACK *fStateManagerCallBack)(LLONG lAttachHandle, NET_CB_STATE_MANAGER_INFO* pstuStateManager, LDWORD dwUser); ///@brief CLIENT_AttachStateManager 接口输入参数 typedef struct tagNET_IN_ATTACH_STATE_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fStateManagerCallBack cbStateManager; // 回调函数 LDWORD dwUser; // 用户信息 EM_STATE_MANAGER_STATE emStateName; // 状态名称 }NET_IN_ATTACH_STATE_MANAGER; ///@brief CLIENT_AttachStateManager 接口输出参数 typedef struct tagNET_OUT_ATTACH_STATE_MANAGER { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_STATE_MANAGER; ///@brief 订阅状态变化接口 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return 订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachStateManager(LLONG lLoginID, NET_IN_ATTACH_STATE_MANAGER* pstInParam, NET_OUT_ATTACH_STATE_MANAGER* pstOutParam , int nWaitTime); ///@brief 退订状态变化接口 ///@param[in] lAttachHandle 订阅接口返回句柄 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachStateManager(LLONG lAttachHandle); ///@brief 外接设备类型 typedef enum tagNET_EXT_DEV_TYPE { EXT_DEV_UNKNOWN, // 未知 EXT_DEV_PROJECTOR, // 投影仪 EXT_DEV_SEQUENCE_POWER, // 电源序列器 } NET_EXT_DEV_TYPE; ///@brief 外接设备信息 typedef struct tagNET_EXTERNAL_DEVICE { DWORD dwSize; NET_EXT_DEV_TYPE emType; // 设备类型 char szDevID[DH_DEV_ID_LEN_EX]; // 设备ID, 唯一编号 char szDevName[DH_DEV_ID_LEN_EX]; // 设备名称 } NET_EXTERNAL_DEVICE; ///@brief 电源时序器控制参数 typedef struct tagNET_CTRL_SEQPOWER_PARAM { DWORD dwSize; const char* pszDeviceID; // 设备ID int nChannel; // 输出口或输出组序号 } NET_CTRL_SEQPOWER_PARAM; ///@brief 投影仪控制参数 typedef struct tagNET_CTRL_PROJECTOR_PARAM { DWORD dwSize; const char* pszDeviceID; // 设备ID } NET_CTRL_PROJECTOR_PARAM; ///@brief 红外按键 typedef struct tagNET_CTRL_INFRARED_KEY_PARAM { DWORD dwSize; int nChannel; // 红外控制通道号 unsigned int nKey; // 红外按键ID } NET_CTRL_INFRARED_KEY_PARAM; ///@brief 无硬盘报警 typedef struct tagALARM_NO_DISK_INFO { DWORD dwSize; NET_TIME stuTime; // 时间 DWORD dwAction; // 事件动作, 0:Start, 1:Stop NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_NO_DISK_INFO; ///@brief 防护舱状态枚举 typedef enum __EM_CAPSULE_STATE { CAPSULE_STATE_UNKNOW , //未定义 CAPSULE_STATE_NORMAL , //正常 CAPSULE_STATE_TIME_OUT , //超时 CAPSULE_STATE_EMERGENCY_CALL, //紧急呼叫 }EM_CAPSULE_STATE; ///@brief 防护舱事件 typedef struct tagALARM_PROTECTIVE_CAPSULE_INFO { DWORD dwSize; EM_CAPSULE_STATE emCapsuleState; //防护舱状态 DWORD nLock; //0:未锁,1:上锁; 仅在emCapsuleState为CAPSULE_STATE_NORMAL时有效 DWORD nInfrared; //0:闲置(无人),1:触发(有人);仅在emCapsuleState为CAPSULE_STATE_NORMAL时有效 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_PROTECTIVE_CAPSULE_INFO; ///@brief 获取鱼眼能力输入参数 typedef struct tagNET_IN_VIDEOIN_FISHEYE_CAPS { DWORD dwSize; int nChannel; //通道号 }NET_IN_VIDEOIN_FISHEYE_CAPS; ///@brief 获取鱼眼能力输出参数 typedef struct tagNET_OUT_VIDEOIN_FISHEYE_CAPS { DWORD dwSize; int nMountModeNum; // 支持的安装模式个数 NET_FISHEYE_MOUNT_MODE emMountModes[NET_MAX_FISHEYE_MOUNTMODE_NUM]; // 支持的安装模式列表 int nCalibrateModeNum; // 支持的鱼眼矫正模式个数 NET_FISHEYE_CALIBRATE_MODE emCalibrateModes[NET_MAX_FISHEYE_CALIBRATEMODE_NUM]; // 支持的鱼眼矫正模式列表 int nEPtzCmdNum; // 支持的鱼眼电子云台操作个数 NET_FISHEYE_EPTZ_CMD emEPtzCmds[NET_MAX_FISHEYE_EPTZCMD_NUM]; // 支持的鱼眼电子云台操作列表 NET_FISHEYE_TYPE emType; //鱼眼类型 }NET_OUT_VIDEOIN_FISHEYE_CAPS; ///@brief 获取电源时序器能力输入参数 typedef struct tagNET_IN_CAP_SEQPOWER { DWORD dwSize; const char* pszDeviceID; // 设备ID } NET_IN_CAP_SEQPOWER; ///@brief 获取电源时序器能力输出参数 typedef struct tagNET_OUT_CAP_SEQPOWER { DWORD dwSize; int nChannelNum; // 通道数 } NET_OUT_CAP_SEQPOWER; ///@brief 获取设备编码配置对应能力输入参数 typedef struct tagNET_IN_ENCODE_CFG_CAPS { DWORD dwSize; int nChannelId; // 通道号 int nStreamType; // 码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3;4:抓图码流 // 此参数可以不填,不论指定什么类型,设备都返回主、辅、抓图码流的能力 char* pchEncodeJson; // Encode配置,通过调用dhconfigsdk.dll中接口CLIENT_PacketData封装得到 // 对应的封装命令为 CFG_CMD_ENCODE }NET_IN_ENCODE_CFG_CAPS; ///@brief 码流配置对应能力 typedef struct tagNET_STREAM_CFG_CAPS { DWORD dwSize; int nAudioCompressionTypes[DH_MAX_AUDIO_ENCODE_TYPE]; // 支持的音频编码类型,详见DH_TALK_CODING_TYPE int nAudioCompressionTypeNum; // 音频压缩格式个数 int dwEncodeModeMask; // 视频编码模式掩码,详见"编码模式" DH_RESOLUTION_INFO stuResolutionTypes[DH_MAX_CAPTURE_SIZE_NUM];// 支持的视频分辨率 int nResolutionFPSMax[DH_MAX_CAPTURE_SIZE_NUM]; // 不同分辨率下帧率最大值,下标与nResolutionTypes对应 int nResolutionTypeNum; // 视频分辨率个数 int nMaxBitRateOptions; // 最大视频码流(kbps) int nMinBitRateOptions; // 最小视频码流(kbps) BYTE bH264ProfileRank[DH_PROFILE_HIGH]; // 支持的H.264 Profile等级,参照枚举类型 EM_H264_PROFILE_RANK; int nH264ProfileRankNum; // 支持的H.264 Profile等级个数 int nCifPFrameMaxSize; // 当分辨率为cif时最大p帧(Kbps) int nCifPFrameMinSize; // 当分辨率为cif时最小p帧(Kbps) int nFPSMax; // 视频帧率最大值,为0时,以nResolutionFPSMax为准 DH_RESOLUTION_INFO stuIndivResolutionTypes[DH_MAX_COMPRESSION_TYPES_NUM][DH_MAX_CAPTURE_SIZE_NUM];// 支持的视频分辨率 BOOL abIndivResolution; // 0: stuResolutionTypes,nResolutionTypeNum 有效 // 1: stuIndivResolutionTypes, nIndivResolutionNums 有效 int nIndivResolutionNums[DH_MAX_COMPRESSION_TYPES_NUM];// 不同编码模式分别支持的视频分辨率个数 }NET_STREAM_CFG_CAPS; ///@brief 获取设备编码配置对应能力输出参数 typedef struct tagNET_OUT_ENCODE_CFG_CAPS { DWORD dwSize; NET_STREAM_CFG_CAPS stuMainFormatCaps[DH_REC_TYPE_NUM]; // 主码流配置对应能力, 如果有多个, 第一个表示普通录像码流, 第二个表示动检录像码流, 第三个表示报警录像码流 NET_STREAM_CFG_CAPS stuExtraFormatCaps[DH_N_ENCODE_AUX]; // 辅码流配置对应能力, 如果有多个, 第一个表示辅码流1, 第二个表示辅码流2, 第三个表示辅码流3 NET_STREAM_CFG_CAPS stuSnapFormatCaps[SNAP_TYP_NUM]; // 抓图码流配置对应能力, 如果有多个, 第一个表示普通抓图, 第二个表示动检抓图, 第三个表示报警抓图 int nMainFormCaps; // 有效的主码流配置对应的能力个数 int nExtraFormCaps; // 有效的辅码流配置对应的能力个数 int nSnapFormatCaps; // 有效的抓图码流配置对应的能力个数 }NET_OUT_ENCODE_CFG_CAPS; ///@brief 获取视频检测输入能力集 typedef struct tagNET_IN_VIDEO_DETECT_CAPS { DWORD dwSize; int nChannel; //通道号 }NET_IN_VIDEO_DETECT_CAPS; ///@brief 媒体能力集类型 typedef enum tagNET_MEDIA_CAP_TYPE { NET_MEDIA_CAP_TYPE_SENSORINFO, // 镜头传感器信息 } NET_MEDIA_CAP_TYPE; ///@brief CLIENT_GetDevCaps NET_MEDIAMANAGER_CAPS 命令入参 typedef struct tagNET_IN_MEDIAMANAGER_GETCAPS { DWORD dwSize; NET_MEDIA_CAP_TYPE emType; // 需要获取的能力集类型 } NET_IN_MEDIAMANAGER_GETCAPS; ///@brief 获取设备编码配置对应能力输入参数 typedef struct tagNET_IN_SNAP_CFG_CAPS { int nChannelId; // 通道号(起始通道0) BYTE bReserved[1024]; // 保留 }NET_IN_SNAP_CFG_CAPS; #define DH_MAX_FPS_NUM 128 // 最大支持的帧率个数 #define DH_MAX_QUALITY_NUM 32 // 最大支持的画质个数 ///@brief 抓图配置能力 typedef struct tagNET_OUT_SNAP_CFG_CAPS { int nResolutionTypeNum; // 支持的视频分辨率信息 DH_RESOLUTION_INFO stuResolutionTypes[DH_MAX_CAPTURE_SIZE_NUM]; DWORD dwFramesPerSecNum; // 支持的帧率信息 int nFramesPerSecList[DH_MAX_FPS_NUM]; // -25:25秒1帧;-24:24秒1帧;…… // 0:无效;1:1秒1帧;2:1秒2帧;3:1秒3帧 // 4:1秒4帧;5:1秒5帧;17:1秒17帧;18:1秒18帧 // 19:1秒19帧;20:1秒20帧…… DWORD dwQualityMun; // 支持的画质信息 DWORD nQualityList[DH_MAX_QUALITY_NUM]; // 1-6档(6质量最高) DWORD dwMode; // 模式,按位:第一位:定时;第二位:手动。 DWORD dwFormat; // 图片格式模式,按位:第一位:bmp;第二位:jpg。 BYTE bReserved[2048]; // 保留 } NET_OUT_SNAP_CFG_CAPS; ///@brief 镜头传感器类型 typedef enum tagNET_CAMERA_SENSOR { NET_CAMERA_SENSOR_NORMAL, // 一般(可见光) NET_CAMERA_SENSOR_LEPTON, // Lepton 热成像 NET_CAMERA_SENSOR_TAU, // Tau 热成像 } NET_CAMERA_SENSOR; ///@brief 镜头传感器信息 typedef struct tagNET_CAMERA_SENSORINFO { NET_CAMERA_SENSOR emSensorType; // 传感器类型 int nChannelsCount; // 此传感器类型对应的通道个数 int nChannels[512]; // 此传感器类型对应的通道号 char reserved[512]; } NET_CAMERA_SENSORINFO; ///@brief 媒体信息——镜头传感器 typedef struct tagNET_MEDIA_SENSORINFO { BOOL bSupport; // 是否支持本能力获取,为TRUE时以下成员有效 int nSensorTypeCount; // 设备具有的镜头传感器类型个数 NET_CAMERA_SENSORINFO stuDetail[16]; // 每个传感器类型的详细信息,有效个数由 nSensorTypeCount 指明 char reserved[1024]; } NET_MEDIA_SENSORINFO; ///@brief CLIENT_GetDevCaps NET_MEDIAMANAGER_CAPS 命令出参 typedef struct tagNET_OUT_MEDIAMANAGER_GETCAPS { DWORD dwSize; NET_MEDIA_SENSORINFO stuSensorInfo; // 镜头传感器信息 } NET_OUT_MEDIAMANAGER_GETCAPS; ///@brief 视频输入能力类型 typedef enum tagNET_ENUM_VIDEOIN_CAP_TYPE { NET_VIDEOIN_CAP_TYPE_CONFLICT, // 设备视频输出能力冲突能力项,对应出参NET_OUT_VIDEOIN_CONFLICT_CAPS }NET_ENUM_VIDEOIN_CAP_TYPE; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_CAPS { DWORD dwSize; int nChannel; // 通道号 NET_ENUM_VIDEOIN_CAP_TYPE emCapType; // 设备视频输出能力类型 }NET_IN_VIDEOIN_CAPS; ///@brief 冲突类型 typedef enum tagNET_ENUM_CONFLICT_TYPE { NET_ENUM_CONFLICT_TYPE_UNKNOWN, // 未知 NET_ENUM_CONFLICT_TYPE_MAIN, // 主码流 NET_ENUM_CONFLICT_TYPE_EXTRA1, // 辅码流1 NET_ENUM_CONFLICT_TYPE_EXTRA2, // 辅码流2 NET_ENUM_CONFLICT_TYPE_TVOUT, // 模拟输出 NET_ENUM_CONFLICT_TYPE_DSP, // 智能 NET_ENUM_CONFLICT_TYPE_SMARTENC, // Smart编码(长GOP) NET_ENUM_CONFLICT_TYPE_SETGOP, // 设置GOP NET_ENUM_CONFLICT_TYPE_ROI, // 感兴趣区域 NET_ENUM_CONFLICT_TYPE_CBR, // 恒定码流编码 NET_ENUM_CONFLICT_TYPE_SVC, // SVC编码 NET_ENUM_CONFLICT_TYPE_MJPEG, // MJPEG编码 NET_ENUM_CONFLICT_TYPE_ROTATE_90, // 旋转90度 }NET_ENUM_CONFLICT_TYPE; ///@brief 冲突项 typedef struct tagNET_CONFLICT_TYPE { NET_ENUM_CONFLICT_TYPE emConflict1; // 冲突项1 NET_ENUM_CONFLICT_TYPE emConflict2; // 冲突项2 char reserved[64]; }NET_CONFLICT_TYPE; ///@brief 资源冲突结构体 typedef struct tagNET_VIDEOIN_CONFLICT_CAPS { BOOL bConflict; // 是否存在资源冲突项 int nConflictNum; // 冲突项数量 NET_CONFLICT_TYPE stuConflict[MAX_VIDEOIN_CONFLICT_NUM]; // 冲突项 }NET_VIDEOIN_CONFLICT_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_CAPS { DWORD dwSize; NET_VIDEOIN_CONFLICT_CAPS stuConflictCap; // 资源冲突结构体 }NET_OUT_VIDEOIN_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEO_MOSAIC_CAPS命令入参 typedef struct tagNET_IN_MEDIA_VIDEOMOSAIC_GETCAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 } NET_IN_MEDIA_VIDEOMOSAIC_GETCAPS; ///@brief CLIENT_GetDevCaps NET_VIDEO_MOSAIC_CAPS命令出参 typedef struct tagNET_OUT_MEDIA_VIDEOMOSAIC_GETCAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nSupportCount; // 实际支持叠加马赛克的通道数量 short snSupport[MAX_MOSAIC_CHANNEL_NUM]; // 支持叠加马赛的通道,[-1]表示全支持 int nMosaicCount; // 实际支持的马赛克颗粒数量 char szMosaic[MAX_MOSAIC_NUM]; // 支持的马赛克颗粒大小 DH_SIZE stuRectMax; // 马赛克最大区块尺寸 DH_SIZE stuRectMin; // 马赛克最小区块尺寸 } NET_OUT_MEDIA_VIDEOMOSAIC_GETCAPS; ///@brief CLIENT_GetDevCaps NET_FACE_BOARD_CAPS 命令入参 typedef struct tagNET_IN_FACEBOARD_CAPS { DWORD dwSize; // 该结构体大小 }NET_IN_FACEBOARD_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEO_IMAGECONTROL_CAPS 命令入参 typedef struct tagNET_IN_VIDEO_IMAGECONTROL_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEO_IMAGECONTROL_CAPS; ///@brief 防抖类型 typedef enum tagNET_EM_STABLE_CAPS_TYPE { EM_STABLE_UNSPPORT, // 不支持图像防抖 EM_STABLE_ELEC, // 支持电子防抖 EM_STABLE_LIGHT, // 支持光学防抖 EM_STAVLE_ELEC_AND_LIGHT, // 支持电子防抖和光学防抖 EM_STABLE_CONTROL, // 支持控件防抖 EM_STABLE_ELEC_AND_CONTROL, // 支持电子防抖和控件防抖 EM_STABLE_LIGHT_AND_CONTROL, // 支持光学防抖和控件防抖 } NET_EM_STABLE_CAPS_TYPE; ///@brief CLIENT_GetDevCaps NET_VIDEO_IMAGECONTROL_CAPS 命令出参 typedef struct tagNET_OUT_VIDEO_IMAGECONTROL_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // Mirror,Flip,Rotate90三者任一支持则true BOOL bMirror; // 是否支持画面镜像功能 BOOL bFlip; // 是否支持画面180翻转功能 BOOL bRotate90; // 支持的画面90/270度旋转 BOOL bFreeze; // 是否支持图像冻结功能 NET_EM_STABLE_CAPS_TYPE emStable; // 支持图像防抖的功能 } NET_OUT_VIDEO_IMAGECONTROL_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_EXPOSURE_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_EXPOSURE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_EXPOSURE_CAPS; #define MAX_EXPOSURE_COUNT 8 ///@brief 曝光模式 typedef enum tagNET_EM_EXPOSURE_MODE { NET_EM_EXPOSURE_AUTO, // 默认自动 NET_EM_EXPOSURE_LOWNICE, // 低噪声 NET_EM_EXPOSURE_ANTISHADOW, // 防拖影 NET_EM_EXPOSURE_MANUALRANGE = 4, // 手动区间 NET_EM_EXPOSURE_APERTUREFIRST, // 光圈优先 NET_EM_EXPOSURE_MANUALFIXATION, // 手动固定 NET_EM_EXPOSURE_GIANFIRST, // 增益优先 NET_EM_EXPOSURE_SHUTTERFIRST, // 快门优先 NET_EM_EXPOSURE_FLASHMATCH, // 闪光灯匹配模式 } NET_EM_EXPOSURE_MODE; ///@brief 防闪烁模式 typedef enum tagNET_EM_ANTIFLICKER_MODE { NET_EM_ANTIFLICKER_OUTDOOR, // 室外 NET_EM_ANTIFLICKER_50HZ, // 50Hz NET_EM_ANTIFLICKER_60HZ, // 60Hz } NET_EM_ANTIFLICKER_MODE; ///@brief 曝光速度等级能力数组,值是分母,单位秒。比如100表示1/100秒的曝光时间 ///@brief "-1"表示支持用户区间可调,如果不含该字段,表示不支持用户区间可调 typedef struct tagNET_SPEED_CAPS { int nRetManual; // 手动模式下的快门实际个数 int nManual[DH_COMMON_STRING_16]; // 手动模式下的快门列表 int nRetManual50Hz; // 防闪烁50HZ 模式下,手动模式对应的快门实际个数 int nManual50Hz[DH_COMMON_STRING_16]; // 防闪烁50HZ 模式下,手动模式对应的快门列表 int nRetManual60Hz; // 防闪烁60HZ 模式下,手动模式对应的快门实际个数 int nManual60Hz[DH_COMMON_STRING_16]; // 防闪烁60HZ 模式下,手动模式对应的快门列表 int nRetShutterPAL; // 快门优先下的P制快门实际个数 int nShutterPAL[DH_COMMON_STRING_16]; // 快门优先下的P制快门列表 int nRetShutterNTSC; // 快门优先下的N制快门实际个数 int nShutterNTSC[DH_COMMON_STRING_16]; // 快门优先下的N制快门列表 BYTE bReserved[128]; // 预留字段 } NET_SPEED_CAPS; ///@brief 慢曝光速度等级能力 typedef struct tagNET_SLOW_SPEED_CAPS { int nRetPal; int nPal[DH_COMMON_STRING_16]; int nRetNtsc; int nNtsc[DH_COMMON_STRING_16]; BYTE bReserved[128]; // 预留字段 } NET_SLOW_SPEED_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_EXPOSURE_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_EXPOSURE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持曝光设置能力 int nExposureMode; // 实际支持的曝光模式个数 NET_EM_EXPOSURE_MODE emExposureMode[MAX_EXPOSURE_COUNT]; // 支持的曝光模式 BOOL bAntiFlicker; // 是否支持防闪烁 int nAntiFlicker; // 实际支持的防闪烁功能个数 NET_EM_ANTIFLICKER_MODE emAntiFlicker[MAX_ANTIFLICKERMODE_COUNT]; // 防闪烁功能列表 int nMinCompensation; // 曝光补偿最小值 int nMaxCompensation; // 曝光补偿最大值 BOOL bGainUpperLimit; // 支持增益上限选项能力 // true:在自动,光圈优先,快门优先模式显示增益上限选项。 // false: 在自动,光圈优先,快门优先模式隐藏增益上限选项 int nMinGain; // 增益最小值 int nMaxGain; // 增益最大值 BOOL bSlowAutoExposure; // 是否支持慢曝光设置能力, 默认支持 // 如果有该字段且值为false,不下发慢曝光设置,如果没有此值或者值为true,则下发慢曝光配置 int nMinSlowAutoExposure; // 慢曝光最小值 int nMaxSlowAutoExposure; // 慢曝光最大值 BOOL bSlowShutter; // 是否支持慢快门 float fMinValueLow; // 自动曝光时间下限最小值 float fMaxValueLow; // 自动曝光时间下限最大值 float fMinValueUp; // 自动曝光时间上限最小值 float fMaxValueUp; // 自动曝光时间上线最大值 NET_SPEED_CAPS stuSpeedCaps; // 曝光速度等级能力 NET_SLOW_SPEED_CAPS stuSlowSpeedCaps; // 慢曝光速度等级能力 BOOL bIrisAuto; // 是否支持自动光圈 int nIrisMin; // 手动光圈设置最小值 int nIrisMax; // 手动光圈设置最大值 BOOL bSupportIrisRange; // 支持光圈区间可调能力 BOOL bDoubleExposure; // 是否支持ITC双快门调节 BOOL bRecoveryTime; // 是否支持自动曝光恢复 } NET_OUT_VIDEOIN_EXPOSURE_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_DENOISE_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_DENOISE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_DENOISE_CAPS; ///@brief 支持的3D降噪类型 typedef enum tagNET_EM_3DSUPPORT_TYPE { NET_EM_3DSUPPORT_UNKOWN, // 未知 NET_EM_3DSUPPORT_OFF, // 关闭 NET_EM_3DSUPPORT_AUTO, // 自动 NET_EM_3DSUPPORT_MANUAL, // 手动 } NET_EM_3DSUPPORT_TYPE; ///@brief 3D降噪支持的算法模式 typedef struct tagNET_3D_ALGORITHM_MODE { /* 采用掩码表示,bit0,bit1,bit2...分别表示降噪算法bit0、降噪算法bit1、 */ /* 降噪算法bit2,以此类推.全为0,表示都不支持降噪算法 */ DWORD dwSingleExposure; // 单快门降噪能力 DWORD dwDoubleExposureFullRate; // ITC双快门全帧率降噪能力 DWORD dwDoubleExposureHalfRate; // ITC双快门半帧率降噪能力 DWORD dsThreeExposure; // 三快门降噪能力 BYTE bReserved[128]; // 预留字段 } NET_3DALGORITHM_MODE; #define MAX_3DTYPE_COUNT 8 // 最大支持的3D降噪类型个数 #define MAX_GROUP_COUNT 2 // 降噪分组最大值 #define MAX_PROGRAM_COUNT 8 // 降噪分组每组支持的最大方案数 ///@brief 2D降噪能力 typedef struct tagNET_SUPPORT2D_CAPS { BOOL bSupport2D; // 是否支持2D降噪 int n2DLevelMin; // 2D降噪等级最小值 int n2DLevelMax; // 2D降噪等级最大值 int nMaxRAWLevel; // 持最大RAW域的2D降噪值, 0 表示不支持 BYTE bReserved[128]; // 预留字段 } NET_SUPPORT2D_CAPS; ///@brief 每组降噪分组支持的方案信息 typedef struct tagNET_DENOISEGROUP_PROGRAM { int nProgramCount; // 实际的方案个数 int nProgram[MAX_PROGRAM_COUNT]; // 支持的方案列表 } NET_DENOISEGROUP_PROGRAM; ///@brief 3D降噪能力 typedef struct tagNET_SUPPORT3D_CAPS { BOOL bSupport3D; // 是否支持3D降噪 int n3DTypeCount; // 支持的3D降噪类型个数 NET_EM_3DSUPPORT_TYPE em3DSupportType[MAX_3DTYPE_COUNT]; // 支持的3D降噪类型 int n3DLevelMin; // 3D降噪等级最小值 int n3DLevelMax; // 3D降噪等级最大值 int nAutoLevelMin; // 3D自动控制模式最小值 int nAutoLevelMax; // 3D自动控制模式最大值 NET_3DALGORITHM_MODE stuAlgorithmSDMode; // 3D降噪支持的算法模式 int nGroupCount; // 实际分组个数 NET_DENOISEGROUP_PROGRAM stuDenoiseGroup[MAX_GROUP_COUNT]; // 降噪分组,切换前后方案属于同一组或几组则不重启生效,否则重启生效,数值n对应, DenoiseMode中bit(n)对应的方案 int nDenoiseScheme; // 降噪方案, 1表示采用新方案方式设置降噪参数,0表示直接设置参数方式设置降噪参数(旧方案) BYTE bReserved[128]; // 预留字段 } NET_SUPPORT3D_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_DENOISE_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_DENOISE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持降噪设置 NET_SUPPORT2D_CAPS stu2DCaps; // 2D降噪能力 NET_SUPPORT3D_CAPS stu3DCaps; // 3D降噪能力 BOOL bSupportAlgorithm1; // 是否支持降噪算法1 int nTnfLevelRangeMin; // 时域等级最小值 int nTnfLevelRangeMax; // 时域等级最大值 int nSnfLevelRangeMin; // 空域等级最小值 int nSnfLevelRangeMax; // 空域等级最大值 int nSeniotTypeCount; // 支持的高级降噪类型个数 NET_EM_3DSUPPORT_TYPE emSeniorType[MAX_3DTYPE_COUNT]; // 支持的高级降噪类型 } NET_OUT_VIDEOIN_DENOISE_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_BACKLIGHT_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_BACKLIGHT_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_BACKLIGHT_CAPS; ///@brief 背光模式 typedef enum tagNET_EM_BACK_MODE { NET_EM_BACKLIGHT_MODE_UNKNOW, // 未知模式 NET_EM_BACKLIGHT_MODE_OFF, // 关闭 NET_EM_BACKLIGHT_MODE_BACKLIGHT, // 背光补偿 NET_EM_BACKLIGHT_MODE_WIDEDYNAMIC, // 宽动态 NET_EM_BACKLIGHT_MODE_GLAREINHIBITION, // 强光抑制 NET_EM_BACKLIGHT_MODE_SSA, // 场景自适应 } NET_EM_BACK_MODE; ///@brief 背光补偿模式 typedef enum tagNET_EM_BLACKLIGHT_MODE { NET_EM_BLACKLIGHT_UNKNOW, // 未知模式 NET_EM_BLACKLIGHT_DEFAULT, // 默认模式 NET_EM_BLACKLIGHT_REGION, // 自定义区域模式 } NET_EM_BLACKLIGHT_MODE; ///@brief 场景自适应对比度强度调节模式 typedef enum tagNET_EM_BACK_INTENSITY_MODE { NET_EM_INTENSITY_UNKNOWN, // 未知 NET_EM_INTENSITY_OFF, // 关闭 NET_EM_INTENSITY_AUTO, // 自动 NET_EM_INTENSITY_MANUAL, // 手动 } NET_EM_BACK_INTENSITY_MODE; ///@brief 支持强光抑制模式的参数设置方式 typedef enum tagNET_EM_GLAREINHIBITION_MODE { NET_EM_GLAREINHIBITION_UNKNOWN, // 未知 NET_EM_GLAREINHIBITION_DEFAULT, // 普通模式(默认值) NET_EM_GLAREINHIBITION_FPGA, // Fpga强光抑制 } NET_EM_GLAREINHIBITION_MODE; #define MAX_MODE_COUNT 8 // 模式最大支持数 ///@brief CLIENT_GetDevCaps NET_VIDEOIN_BACKLIGHT_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_BACKLIGHT_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持背光设置能力 int nBackModeCount; // 背光模式实际支持数量 NET_EM_BACK_MODE emBackMode[MAX_MODE_COUNT]; // 支持的背光模式 int nBackLightModeCount; // 背光补偿模式实际支持数 NET_EM_BLACKLIGHT_MODE emBackLightMode[MAX_MODE_COUNT]; // 支持的背光补偿模式 int nWideDynamicRange; // 是否支持宽动态, 0-不支持,1-支持数字宽动态(支持0-100档),2-支持真实宽动态(支持0-100档),3-只支持数字宽动态的开和关(支持0-1档),4-支持数字宽动态,档位是0-100(支持0-100档) 5-支持混合宽动态,即数字宽动态+真实宽动态,等级范围0~100 int nSSAIntensity; // 场景自适应对比度强度调节支持的模式数量 NET_EM_BACK_INTENSITY_MODE emIntensityMode[MAX_MODE_COUNT]; // 场景自适应对比度强度调节支持的模式 NET_EM_GLAREINHIBITION_MODE emGlareInhibition[MAX_MODE_COUNT]; // 支持强光抑制模式的参数设置方式 UINT nGlareInhibition; // 支持的强光抑制模式个数 } NET_OUT_VIDEOIN_BACKLIGHT_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_WHITEBALANCE_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_WHITEBALANCE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_WHITEBALANCE_CAPS; ///@brief 白平衡模式 typedef enum tagNET_EM_WHITEBALANCE_TYPE { NET_EM_WHITEBALANCE_UNKNOW, // 未知类型 NET_EM_WHITEBALANCE_DISABLE, // Unable NET_EM_WHITEBALANCE_AUTO, // Auto NET_EM_WHITEBALANCE_SUNNY, // Sunny晴天,6500K左右 NET_EM_WHITEBALANCE_CLOUDY, // Cloudy阴天,7500K左右 NET_EM_WHITEBALANCE_HOME, // Home家里 5000K左右 NET_EM_WHITEBALANCE_OFFICE, // Office办公 4400K左右 NET_EM_WHITEBALANCE_NIGHT, // Night夜晚 2800K左右 NET_EM_WHITEBALANCE_CUSTOM, // Custom自定义 NET_EM_WHITEBALANCE_HIGHCOLORTEMP, // HighColorTemperature高色温区间 NET_EM_WHITEBALANCE_LOWCOLORTEMP, // LowColorTemperature低色温区间 NET_EM_WHITEBALANCE_AUTOCOLORTEMP, // AutoColorTemperature自动色温区间 NET_EM_WHITEBALANCE_CUSTOMCOLORTEMP, // CustomColorTemperature自定义色温等级 NET_EM_WHITEBALANCE_INDOOR, // Indoor室内 NET_EM_WHITEBALANCE_OUTDOOR, // Outdoor室外,重点保证大面积绿草地不偏色 NET_EM_WHITEBALANCE_ATW, // ATW跟踪 NET_EM_WHITEBALANCE_MANUAL, // Manual手动 NET_EM_WHITEBALANCE_AUTOOUTDOOR, // AutoOutdoor NET_EM_WHITEBALANCE_SODIUMAUTO, // SodiumAuto钠灯自动 NET_EM_WHITEBALANCE_SODIUM, // Sodium钠灯, 2000K左右 NET_EM_WHITEBALANCE_MANUALDATUM, // ManualDatum自定义单区域白平衡 NET_EM_WHITEBALANCE_PARTWHITEBALANCE, // PartWhiteBalance自定义多区域白平衡 NET_EM_WHITEBALANCE_NATURAL, // Natural自然光, 2000K-12000K 晴天阴天+傍晚凌晨 NET_EM_WHITEBALANCE_STREETLAMP, // StreetLamp路灯, 1000K-5000K } NET_EM_WHITEBALANCE_TYPE; #define MAX_BALANCEMODES_COUNT 16 // 白平衡模式最大个数 ///@brief CLIENT_GetDevCaps NET_VIDEOIN_WHITEBALANCE_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_WHITEBALANCE_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持白平衡设置 int nWhiteBalance; // 实际支持的白平衡模式个数 NET_EM_WHITEBALANCE_TYPE emWhiteBalance[MAX_BALANCEMODES_COUNT]; // 支持的白平衡模式列表 } NET_OUT_VIDEOIN_WHITEBALANCE_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_DAYNIGHT_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_DAYNIGHT_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_DAYNIGHT_CAPS; ///@brief ICR切换类型 typedef enum tagNET_EM_ICR_TYPE { NET_EM_ICR_UNKONOW, // 未知 NET_EM_ICR_ELECTRON, // 电子 NET_EM_ICR_MECHANISM, // 机械 } NET_EM_ICR_TYPE; ///@brief 彩转黑模式 typedef enum tagNET_EM_COLORBLACK_MODE { NET_EM_COLORBLACK_UNKNOWN, // 未知 NET_EM_COLORBLACK_COLOR, // 总是彩色 NET_EM_COLORBLACK_BRIGHTNESS, // 根据亮度自动切换 NET_EM_COLORBLACK_BLACKWHITE, // 总是黑白 NET_EM_COLORBLACK_PHOTORESISTOR, // 光敏电阻 NET_EM_COLORBLACK_GAIN, // 根据增益切换 NET_EM_COLORBLACK_ALARMINPUT, // 外部报警输入 NET_EM_COLORBLACK_IO, // 外部IO输入 } NET_EM_COLORBLACK_MODE; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_DAYNIGHT_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_DAYNIGHT_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 球机机芯日夜设置能力 int nICRType; // 实际支持的ICR切换类型个数 NET_EM_ICR_TYPE emICRType[MAX_MODE_COUNT]; // ICR切换类型列表 int nColorBlackMode; // 实际支持的彩转黑模式个数 NET_EM_COLORBLACK_MODE emColorBlackMode[MAX_MODE_COUNT]; // 支持的彩转黑模式列表 int nSensitivityRangeMin; // 彩转黑灵敏度最小值 int nSensitivityRangeMax; // 彩转黑灵敏度最大值 int nDelayRangeMin; // 日夜模式切换延时最小值 int nDelayRangeMax; // 日夜模式切换延时最大值 } NET_OUT_VIDEOIN_DAYNIGHT_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_ZOOM_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_ZOOM_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_ZOOM_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_ZOOM_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_ZOOM_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持变倍设置 int nSpeedRangeMin; // 变倍速率最小值 int nSpeedRangeMax; // 变倍速率最大值 BOOL bDigitalZoomSupport; // 是否支持数字变倍 int nZoomLimitRangeMin; // 当前速率下最大变倍上限范围最小值 int nZoomLimitRangeMax; // 当前速率下最大变倍上限范围最大值 } NET_OUT_VIDEOIN_ZOOM_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_FOCUS_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_FOCUS_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_FOCUS_CAPS; ///@brief 聚焦模式 typedef enum tagNET_EM_FOCUS_MODE { NET_EM_FOCUS_OFF, // 关闭 NET_EM_FOCUS_ASSIST, // 辅助聚焦 NET_EM_FOCUS_AUTO, // 自动聚焦 NET_EM_FOCUS_SEMI_AUTO, // 半自动聚焦 NET_EM_FOCUS_MANUAL, // 手动聚焦 } NET_EM_FOCUS_MODE; ///@brief 聚焦极限选取模式 typedef enum tagNET_EM_FOCUS_LIMITSELECT_MODE { NET_EM_FOCUS_LIMITSELECT_UNKNOW, // 未知模式 NET_EM_FOCUS_LIMITSELECT_MANUAL, // 手动 NET_EM_FOCUS_LIMITSELECT_AUTO, // 自动 } NET_EM_FOCUS_LIMITSELECT_MODE; ///@brief 聚焦类型 typedef enum tagNET_EM_FOCUS_TYPE { NET_EM_FOCUS_UNKNOWN, // 未知类型 NET_EM_FOCUS_AUTOTRACE, // 自动变焦跟踪 } NET_EM_FOCUS_TYPE; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_FOCUS_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_FOCUS_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持聚焦设置 int nFcousMode; // 实际支持的聚焦模式格式 NET_EM_FOCUS_MODE emFocusMode[MAX_MODE_COUNT]; // 支持的聚焦模式列表 int nLimitMode; // 实际支持的聚焦极限选取模式个数 NET_EM_FOCUS_LIMITSELECT_MODE emLimitMode[MAX_MODE_COUNT]; // 支持的聚焦极限选取模式列表 BOOL bSupportFocusRegion; // 是否支持域聚焦 BOOL bSensitivity; // 是否支持聚焦林敏度 BOOL bIRCorrection; // 是否支持红外光聚焦修正 BOOL bFocusLimit; // 是否支持聚焦极限 int nFocusTypeCount; // 实际支持的聚焦类型个数 NET_EM_FOCUS_TYPE emFocusType[MAX_MODE_COUNT]; // 支持的聚焦类型列表 int nFocusLimitRangeCount; // 聚焦极限范围值的个数 int nFocusLimitRange[16]; // 支持聚焦极限时、聚焦极限范围值,单位毫米 // 1. 默认为[100, 1000, 2000, 3000, 5000]以兼容以前设备 // 2. 当档位中存在xxxx1时,显示时需要把1替换为0,并在最后追加字符+;例如:200001显示时为200000mm+ (通常采用较直观的单位来显示,例如:200m+) } NET_OUT_VIDEOIN_FOCUS_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_SHARPNESS_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_SHARPNESS_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_SHARPNESS_CAPS; ///@brief 锐度模式 typedef enum tagNET_EM_SHARPNESS_MODE { NET_EM_SHARPNESS_AUTO, //自动 NET_EM_SHARPNESS_MANAUL, // 手动 }NET_EM_SHARPNESS_MODE; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_SHARPNESS_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_SHARPNESS_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持锐度设置 int nSharpnessMode; // 实际支持的锐度模式个数 NET_EM_SHARPNESS_MODE emSharpnessMode[MAX_MODE_COUNT]; // 支持的锐度模式列表 int nSharpnessMin; // 锐度最小值 int nSharpnessMax; // 锐度最大值 BOOL bSupportRestrain; // 是否支持锐度抑制 int nRestrainLevelMin; // 锐度抑制等级最小值 int nRestrainLevelMax; // 锐度抑制等级最大值 } NET_OUT_VIDEOIN_SHARPNESS_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_COLOR_CAPS 命令入参 typedef struct tagNET_IN_VIDEOIN_COLOR_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 int nChannel; // 通道号 } NET_IN_VIDEOIN_COLOR_CAPS; ///@brief 图像风格能力类型 typedef enum tagNET_EM_STYLE_TYPE { NET_EM_STYLE_UNKONWON, // 未知 NET_EM_STYLE_GENTLE, // 柔和 NET_EM_STYLE_STANDARD, // 标准 NET_EM_STYLE_FLAMBOYANT, // 艳丽 } NET_EM_STYLE_TYPE; ///@brief 图像风格设置能力 typedef struct tagNET_COLOR_STYLE_CAPS { BOOL bSupport; // 是否支持图像风格设置 int nStyleType; // 实际支持的图像风格能力个数 NET_EM_STYLE_TYPE emStyleType[MAX_MODE_COUNT]; // 支持的图像风格能力列表 BYTE bReserved[128]; // 预留字段 } NET_COLOR_STYLE_CAPS; #define MAX_GRAYVALUE_COUNT 8 // 灰度值的最大个数 ///@brief 灰度范围能力 typedef struct tagNET_GRAY_SCALE_CAPS { BOOL bSupport; // 是否支持灰度范围能力 int nValueCount; // 实际支持的灰度范围组数 int nValue[MAX_GRAYVALUE_COUNT][2]; // 灰度范围的上下限值 BYTE bReserved[128]; // 预留字段 } NET_GRAY_SCALE_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_COLOR_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_COLOR_CAPS { DWORD dwSize; // 用户使用时赋值为结构体大小 BOOL bSupport; // 是否支持图像设置能力 BOOL bBrightness; // 是否支持亮度 BOOL bContrast; // 是否支持对比度 BOOL bSaturation; // 是否支持饱和度 BOOL bHue; // 是否支持色度 BOOL bGamma; // 是否支持Gamma BOOL bChromaSuppress; // 是否支持色彩抑制 NET_COLOR_STYLE_CAPS stuColorStype; // 图像风格能力 NET_GRAY_SCALE_CAPS stuGrayScale; // 灰度范围能力 } NET_OUT_VIDEOIN_COLOR_CAPS; ///@brief CLIENT_GetDevCaps 接口 NET_VIDEOIN_RAWFRAME_CAPS 命令出参 typedef struct tagNET_IN_VIDEOIN_RAWFRAME_CAPS { DWORD dwSize; }NET_IN_VIDEOIN_RAWFRAME_CAPS; ///@brief YUV数据格式能力集 typedef struct tagNET_RAWFRAMETYPE_DATA { int nListNum; // 实际返回的数据格式个数 char szList[DH_COMMON_STRING_16][DH_COMMON_STRING_8];// 支持的YUV数据格式列表 BYTE byReserved[1024]; }NET_RAWFRAMETYPE_DATA; ///@brief CLIENT_GetDevCaps 接口 NET_VIDEOIN_RAWFRAME_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_RAWFRAME_CAPS { DWORD dwSize; NET_RAWFRAMETYPE_DATA stuFrameData; }NET_OUT_VIDEOIN_RAWFRAME_CAPS; #define MAX_UNIT_COUNT 8 // 最大支持的问题单位个数 ///@brief CLIENT_GetDevCaps NET_FACE_BOARD_CAPS 命令出参 typedef struct tagNET_OUT_FACEBOARD_CAPS { DWORD dwSize; // 该结构体大小 BOOL bHasBattery; // 是否有电池 BOOL bSupportPowerVoltageDetect; // 是否支持电源电压检测 BOOL bTemperatures; // 是否支持温度传感器 BOOL bOSDTemperatureUnit; // 是否支持温度单位选择 int nRetUnitCount; // 实际支持的温度单位个数 EM_TEMPERATURE_UNIT emTempreatureUnit[MAX_UNIT_COUNT]; // OSD叠加时支持的温度单位 }NET_OUT_FACEBOARD_CAPS; ///@brief CLIENT_GetDevCaps接口 NET_COAXIAL_CONTROL_IO_CAPS 命令入参 typedef struct tagNET_IN_GET_COAXIAL_CONTROL_IO_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 } NET_IN_GET_COAXIAL_CONTROL_IO_CAPS; ///@brief CLIENT_GetDevCaps接口 NET_COAXIAL_CONTROL_IO_CAPS 命令出参 typedef struct tagNET_OUT_GET_COAXIAL_CONTROL_IO_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportControlLight; // 是否支持白光灯 BOOL bSupportControlSpeaker; // 是否支持speaker音频外放 BOOL bSupportControlFullcolorLight; // 是否支持全彩白光灯 BOOL bSupportControlSuperLight; // 是否支持超级补光 BOOL bSupportControlIntelliLight; // 是否支持智能双光全彩白光灯 BOOL bSupportControlIntelliSpeaker; // 是否支持智能音频警戒 BOOL bSupportControlWhiteBlueLight; // 是否支持卡宴白蓝灯 } NET_OUT_GET_COAXIAL_CONTROL_IO_CAPS; ///@brief CLIENT_GetDevCaps接口 NET_FACEINFO_CAPS 命令入参 typedef struct tagNET_IN_GET_FACEINFO_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_FACEINFO_CAPS; ///@brief 目标识别算法 typedef enum tagEM_RECOGNITIONALGORITHM_TYPE { EM_RECOGNITIONALGORITHM_UNKNOWN, EM_RECOGNITIONALGORITHM_DAHUA, EM_RECOGNITIONALGORITHM_SHANGTANG, EM_RECOGNITIONALGORITHM_YITU, EM_RECOGNITIONALGORITHM_HANWANG, EM_RECOGNITIONALGORITHM_FIREEYE, }EM_RECOGNITIONALGORITHM_TYPE; ///@brief CLIENT_GetDevCaps接口 NET_FACEINFO_CAPS 命令出参 typedef struct tagNET_OUT_GET_FACEINFO_CAPS { DWORD dwSize; // 结构体大小 int nRecognitionType; // 支持的目标识别类型,0:白光,1:红外 EM_RECOGNITIONALGORITHM_TYPE emRecognitionAlgorithm; // 目标识别算法 DWORD nRecognitionVersion; // 算法版本号,如1.5.2表示成0x00010502 UINT nMaxFaces; // 存储上限 int nMaxPhotoSize; // 白光照片最大尺寸,单位:KB UINT nMaxInsertRate; // 每次最大插入量 BOOL bIsSupportGetPhoto; // 是否支持获取白光照片 BOOL bIsSupportFaceEigen; // 是否支持通过图片提取特征值 BOOL bIsSupportMultiFace; // 是否支持一人多脸 BOOL bIsSupportOnlyImportFaceEigen; // 是否支持只下发特征值 }NET_OUT_GET_FACEINFO_CAPS; ///@brief 支持的动检方案信息 typedef enum tagEM_DETECT_VERSION_TYPE { EM_DETECT_VERSION_UNKNOW = 0 , EM_DETECT_VERSION_V1_0 , //第一版动检方案 EM_DETECT_VERSION_V3_0 , //第三版动检方案 }EM_DETECT_VERSION_TYPE; #define MAX_DETECT_VERSION_NUM 64 ///@brief 支持的视频遮挡检测版本信息 typedef enum tagEM_BLIND_DETECT_VERSION_TYPE { EM_BLIND_DETECT_VERSION_UNKNOW = 0 , EM_BLIND_DETECT_VERSION_FULL_SCREEN , //全屏遮挡检测 EM_BLIND_DETECT_VERSION_MULTI_WINDOW , //多窗口检测 }EM_BLIND_DETECT_VERSION_TYPE; #define MAX_BLIND_DETECT_VERSION_NUM 64 ///@brief 智能动检检测类型 typedef enum tagEM_SMART_MOTION_TYPE { EM_SMART_MOTION_UNKNOWN, // 未知 EM_SMART_MOTION_HUMAN, // 人体 EM_SMART_MOTION_VEHICLE, // 机动车 } EM_SMART_MOTION_TYPE; ///@brief 智能动检能力信息 typedef struct tagNET_SMART_MOTION_CAPS { BOOL bSupport; // 是否支持智能动检 UINT nSmartTypeNum; // 智能动检支持的检测类型个数 EM_SMART_MOTION_TYPE emSmartMotionType[8]; // 智能动检支持的检测类型 BYTE byReserved[512]; // 保留字节 } NET_SMART_MOTION_CAPS; ///@brief 获取视频检测输入能力集 typedef struct tagNET_OUT_VIDEO_DETECT_CAPS { DWORD dwSize; BOOL bSupportBlind; //是否支持黑屏检测 BOOL bSupportLoss; //是否支持视频丢失检测 BOOL bSupportMotion; //是否支持动态检测 BOOL bMotionResult; //是否能够得到每块区域的检测结果 DWORD nMotionColumns; //动态检测区域划分的列数 DWORD nMotionRows; //动态检测区域划分的行数 DWORD nMotionDetectWindow; //动检支持的视频窗口数 DWORD nBlindColumns; //视频遮挡检测区域划分的列数 DWORD nBlindRows; //视频遮挡检测区域划分的行数 DWORD nBlindDetectWindow; //视频遮挡支持的窗口数 BOOL bPositionDetect; //是否支持移动位置侦测 DWORD nDetectVersionNum; //支持的动检方案数 EM_DETECT_VERSION_TYPE emDetectVersions[MAX_DETECT_VERSION_NUM]; //支持的动检方案信息 DWORD nBlindDetectVersionNum; //支持的视频遮挡检测版本数 EM_BLIND_DETECT_VERSION_TYPE emBlindDetectVersions[MAX_BLIND_DETECT_VERSION_NUM]; //支持的视频遮挡检测版本信息 BOOL bMotionLinkPtzPreset; //动检是否支持联动云台预置点 BOOL bMotionLinkPtzTour; //动检是否支持联动云台巡航 BOOL bMotionLinkPtzPattern; //动检是否支持联动云台巡迹 BOOL bUnFocusDetect; //是否支持虚焦检测 BOOL bAlarmDetect; //是否支持动检同时检测报警并触发 BOOL bSupportMoveDetect; // 是否支持场景变更检测 NET_SMART_MOTION_CAPS stuSmartMotionCaps; // 智能动检能力信息 }NET_OUT_VIDEO_DETECT_CAPS; ///@brief 跌落事件类型 typedef struct tagALARM_FALLING_INFO { DWORD dwStructSize; // 结构体大小 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byRserved[3]; // 对齐 char szUserID[32]; // 设备跌落时登陆的用户信息用户ID char szUserName[128]; // 设备跌落时登陆的用户信息用户名 NET_GPS_STATUS_INFO stuGPS; // GPS信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_FALLING_INFO; ///@brief 订阅Bus状态回调函数原型 typedef void (CALLBACK *fBusStateCallBack)(LLONG lAttachHandle, LONG lCommand, char *pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief 刷卡类型 typedef enum tagNET_DRIVER_CHECK_TYPE { NET_DRIVER_CHECK_TYPE_UNKNOWN, // 未知 NET_DRIVER_CHECK_TYPE_SIGNIN, // 签到 NET_DRIVER_CHECK_TYPE_SIGNOUT, // 签出 } NET_DRIVER_CHECK_TYPE; ///@brief 刷卡方式 typedef enum tagNET_DRIVER_CHECK_METHOD { NET_DRIVER_CHECK_METHOD_UNKNOWN, // 未知 NET_DRIVER_CHECK_METHOD_POS, // POS机 NET_DRIVER_CHECK_METHOD_HAND, // 手动输入 } NET_DRIVER_CHECK_METHOD; ///@brief 报警事件类型DH_ALARM_BUS_DRIVER_CHECK( 司机识别卡检测事件)对应的数据描述信息 typedef struct tagALARM_BUS_DRIVER_CHECK_INFO { DWORD dwSize; char szCarNo[DH_MAX_PLATE_NUMBER_LEN]; // 车牌 char szDriverName[DH_COMMON_STRING_16]; // 司机姓名 char szDriverID[DH_MAX_PERSON_ID_LEN]; // 工号 char szOrganize[DH_COMMON_STRING_128]; // 驾驶证发证机构名称 NET_TIME_EX stUsefulLife; // 证件有效期 NET_GPS_STATUS_INFO stGPSStatusInfo; // GPS信息 NET_TIME_EX stCheckTime; // 打卡时间 NET_DRIVER_CHECK_METHOD emCheckMethod; // 打卡方式 NET_DRIVER_CHECK_TYPE emCheckType; // 打卡类型 }ALARM_BUS_DRIVER_CHECK_INFO; ///@brief 报警事件类型DH_ALARM_DEVICE_MSG_NOTIFY(设备向平台发通知的事件)对应的数据描述信息 typedef struct tagALARM_DEVICE_MSG_NOTIFY_INFO { DWORD dwSize; char szMsg[DH_COMMON_STRING_256]; // 消息内容 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 } ALARM_DEVICE_MSG_NOTIFY_INFO; ///@brief 电子围栏状态 typedef enum tagEM_ENCLOSURE_STATUS { EM_ENCLOSURE_STATUS_UNKNOWN, // 未知 EM_ENCLOSURE_STATUS_INSIDE, // 在电子围栏内 EM_ENCLOSURE_STATUS_OUTSIDE, // 不在电子围栏内 } EM_ENCLOSURE_STATUS; ///@brief 报警事件类型DH_ALARM_VEHICLE_STANDING_OVER_TIME(停车超时报警)对应的数据描述信息 typedef struct tagALARM_VEHICLE_STANDING_OVER_TIME_INFO { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX stuTime; // 第一次发生的时间 NET_TIME_EX stuUtc; // 本次事件发生的时间 DWORD dwUtc; // 本次事件发生的时间, 与stuUtc值一样,格式不同,用于事件确认接口入参 BOOL bEventConfirm; // 是否需要回复 UINT nParkingTime; // 停车时长,单位秒 char szDeviceID[32]; // 设备编码 EM_ENCLOSURE_STATUS emEnclosureStatus; // 电子围栏状态 } ALARM_VEHICLE_STANDING_OVER_TIME_INFO; ///@brief 线路方向 typedef enum tagNET_LINE_DIRECTION { NET_LINE_DIRECTION_UNKNOWN, // 未知 NET_LINE_DIRECTION_POSTIVE, // 正向 NET_LINE_DIRECTION_NEGATIVE, // 反向 NET_LINE_DIRECTION_AROUND, // 环线 NET_LINE_DIRECTION_DISPERSE, // 离散 } NET_LINE_DIRECTION; ///@brief 进站离站状态 typedef enum tagNET_BUS_STATE { NET_BUS_STATE_UNKNOWN, // 未知 NET_BUS_STATE_ILLEGAL, // 非法 NET_BUS_STATE_LEGAL, // 合法 } NET_BUS_STATE; ///@brief 报站方式 typedef enum tagNET_PORT_TYPE { NET_PORT_TYPE_UNKOWN, // 未知 NET_PORT_TYPE_MANUAL, // 手动报站 NET_PORT_TYPE_GPS, // GPS报站 } NET_PORT_TYPE; ///@brief 车载开门事件的数据类型 typedef enum tagEM_VEHICLE_DATA_TYPE { EM_VEHICLE_DOOR_OPEN_DATA_UNKNOWN = 0, EM_VEHICLE_DOOR_OPEN_DATA_REALTIME, // 实时的数据 EM_VEHICLE_DOOR_OPEN_DATA_HISTORY, // 重发的数据 }EM_VEHICLE_DATA_TYPE; ///@brief 报警事件类型DH_ALARM_BUS_IMPORT_SITE(进站事件)对应的数据描述信息 typedef struct tagALARM_BUS_IMPORT_SITE_INFO { DWORD dwSize; char szSiteID[DH_COMMON_STRING_64]; // 站点标识 DWORD dwSiteNum; // 站序 NET_LINE_DIRECTION emDirection; // 线路方向 char szLineID[DH_COMMON_STRING_64]; // 线路标识 NET_TIME_EX stuTime; // 进站离站时间 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_BUS_STATE emState; // 是否按规定时间进站 NET_PORT_TYPE emType; // 报站方式 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 DWORD dwSiteCount; // 总站点数 char szSiteName[DH_COMMON_STRING_64]; // 站点名称 char szDesignation[DH_COMMON_STRING_64]; // 线路番号 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nFromMileage; // 上一站到当前站的里程,单位:m unsigned int nTotalMileage; // 起点站到当前站的里程,单位:m unsigned int nFromCostTime; // 上一站到当前站的耗时,单位:s unsigned int nTotalCostTime; // 起点站到当前站的耗时,单位:s char szScheduleUniqueId[64]; // 调度标识 } ALARM_BUS_IMPORT_SITE_INFO; ///@brief 不同设备统计到的人数信息 typedef struct tagNET_SUBTOTAL { unsigned int nDevNum; // 设备编号, 一个车上可能有好几个设备 unsigned int nInside; // 准备上车人数 unsigned int nExited; // 准备下车人数 BYTE byRserved[256]; // 保留字节 }NET_SUBTOTAL; ///@brief 报警事件类型DH_ALARM_BUS_EXPORT_SITE(离站事件)对应的数据描述信息 typedef struct tagALARM_BUS_EXPORT_SITE_INFO { DWORD dwSize; char szSiteID[DH_COMMON_STRING_64]; // 站点标识 DWORD dwSiteNum; // 站序 NET_LINE_DIRECTION emDirection; // 线路方向 char szLineID[DH_COMMON_STRING_64]; // 线路标识 NET_TIME_EX stuTime; // 进站离站时间 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_BUS_STATE emState; // 是否按规定时间离站 NET_PORT_TYPE emType; // 报站方式 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 DWORD dwSiteCount; // 总站点数 char szSiteName[DH_COMMON_STRING_64]; // 站点名称 char szDesignation[DH_COMMON_STRING_64]; // 线路番号 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nFromMileage; // 上一站到当前站的里程,单位:m unsigned int nTotalMileage; // 起点站到当前站的里程,单位:m unsigned int nFromCostTime; // 上一站到当前站的耗时,单位:s unsigned int nTotalCostTime; // 起点站到当前站的耗时,单位:s int nCurrentPeople; // 本次关门事件统计到的净人数,只计算当前关门时统计的人数。下车人数比上车人数多则会统计为负数 unsigned int nTotalIn; // 本次关门总上车人数 unsigned int nTotalOut; // 本次关门总下车人数 unsigned int nSubtotalCount; // 统计人数的设备数量 NET_SUBTOTAL stuSubtotal[32]; // 不同设备统计到的人数信息,最多有32个设备(一辆车可能有多个设备统计人数) char szScheduleUniqueId[64]; // 调度标识 } ALARM_BUS_EXPORT_SITE_INFO; ///@brief 异常事件类型 typedef enum tagEM_ALARM_BUS_ABNORMAL_EVENT_TYPE { EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_UNKNOWN, // 未知 EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_RUNNING, // 恢复营运,"Running" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_MEAL, // 吃饭,"Meal" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_BLOCK, // 路堵,"Block" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_CALL, // 通话,"Call" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_BREAKDOWN, // 车坏,"Breakdown" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_DISCONTINUED, // 停止营运,"Discontinued" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ROBING, // 盗抢,"Robing" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_OVERLOAD, // 超载,"Overload" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_DISPUTE, // 纠纷,"Dispute" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ACCIDENT, // 事故,"Accident" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_OVERSPEED, // 超速,"OverSpeed" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_RENTAL, // 包车,"Rental" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_MAINTENANCE, // 保养,"Maintenance" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_CLOSURE, // 脱保停运,"Closure" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_PUBSECURITY, // 治安事件, "PubSecurity" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ENTER_PARK, // 进入停车场, "EnterPark" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_LEAVE_PARK, // 离开平车场, "LeavePark" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_REFUEL, // 加油, "Refuel" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_FIRE, // 火灾报警, "Fire" EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_HELP, // 乘客救助, "Help" }EM_ALARM_BUS_ABNORMAL_EVENT_TYPE; ///@brief 报警事件类型DH_ALARM_BUS_ABNORMAL(车辆异常事件)对应的数据描述信息 typedef struct tagALARM_BUS_ABNORMAL_INFO { DWORD dwSize; EM_ALARM_BUS_ABNORMAL_EVENT_TYPE emEventType; // 异常事件类型 char szCarNo[DH_MAX_PLATE_NUMBER_LEN]; // 车牌 char szLineID[DH_COMMON_STRING_64]; // 线路标识 NET_LINE_DIRECTION emLineDirection; // 线路方向 NET_TIME_EX stuTime; // 发生时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 } ALARM_BUS_ABNORMAL_INFO; ///@brief 报警事件类型DH_ALARM_ENCLOSURE_ALARM(电子围栏事件)对应的数据描述信息 typedef struct tagALARM_ENCLOSURE_ALARM_INFO { DWORD dwSize; DWORD dwAlarmType; // 报警类型, 按位分别表示, // 0:LimitSpeed, 1:DriveAllow, 2:ForbidDrive, 3:LoadGoods, 4:UploadGoods DWORD dwAlarmDetail; // 报警描述, 按位分别表示, // 0:DriveIn, 1:DriveOut, 2:Overspeed, 3:SpeedClear NET_BUS_STATE emState; // 是否按规定时间触发事件 DWORD dwDriverNo; // 司机编号 DWORD dwEnclosureID; // 围栏ID DWORD dwLimitSpeed; // 限速 DWORD dwCurrentSpeed; // 当前速度 NET_TIME_EX stuTime; // 当前时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 } ALARM_ENCLOSURE_ALARM_INFO; typedef NET_ACCESS_CTL_STATUS_TYPE NET_VEHICLE_DOOR_STATUS; ///@brief 车载开门事件, 对应事件类型 DH_VEHICLE_DOOR_OPEN typedef struct tagALARM_VEHICLE_DOOR_OPEN_INFO { DWORD dwSize; NET_VEHICLE_DOOR_STATUS emStatus; // 门状态 int nDoor; // 门序号, 1:前门,2:中门,3:后门 NET_TIME stuTime; // 事件时间, UTC制 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 }ALARM_VEHICLE_DOOR_OPEN_INFO; ///@brief 当前里程事件, 对应事件类型 DH_ALARM_BUS_CUR_MILEAGE typedef struct tagALARM_BUS_CUR_MILEAGE_INFO { DWORD dwSize; BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 NET_TIME stuTime; // 事件时间, UTC制 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuStartTime; // 当前时间段的开始时间, UTC制 NET_GPS_STATUS_INFO stuStartGPSStatusInfo; // 当前时间段的开始时间时的GPS信息, 只有经纬度、速度、方向角字段有效 unsigned int nMileage; // 当前时间段的里程数, 单位:0.1km char szDriverID[32]; // 工号 }ALARM_BUS_CUR_MILEAGE_INFO; ///@brief 附属油箱列表 typedef struct tagNET_SUB_OIL_LIST_INFO { UINT nCurOilSub; // 当前油量,单位:0.1L UINT nOilTankageSub; // 油箱容积,单位:0.1L int nOilChangeSub; // 当前时间段内油量变化,单位:0.1L 正表示加油 负表示耗油 BYTE byReserved[252]; // 保留字节 }NET_SUB_OIL_LIST_INFO; ///@brief 当前油耗情况事件, 对应事件类型 DH_ALARM_BUS_CUR_OIL typedef struct tagALARM_BUS_CUR_OIL_INFO { DWORD dwSize; BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 NET_TIME stuTime; // 事件时间, UTC制 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuStartTime; // 当前时间段的开始时间, UTC制 NET_GPS_STATUS_INFO stuStartGPSStatusInfo; // 当前时间段的开始时间时的GPS信息, 只有经纬度、速度、方向角字段有效 unsigned int nCurOil; // 当前油量, 单位: 0.1L unsigned int nOilTankage; // 油箱容积, 单位: 0.1L int nOilChange; // 当前时间段内油量变化, 单位: 0.1L, 正数表示加油, 负数表示耗油 char szCarNO[DH_MAX_PLATE_NUMBER_LEN]; // 车牌信息 NET_SUB_OIL_LIST_INFO stuSubOilList[10]; // 附属油箱列表 int nSubOilNum; // 附属油箱个数 }ALARM_BUS_CUR_OIL_INFO; ///@brief 低油量报警事件, 对应事件类型 DH_ALARM_BUS_LOW_OIL typedef struct tagALARM_BUS_LOW_OIL_INFO { DWORD dwSize; BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 NET_TIME stuTime; // 事件时间, UTC制 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 unsigned int nCurOil; // 当前油量, 单位: 0.1L unsigned int nOilLine; // 油量阈值, 单位: 0.1L unsigned int nOilTankage; // 油箱容积, 单位: 0.1L char szCarNO[DH_MAX_PLATE_NUMBER_LEN]; // 车牌信息 }ALARM_BUS_LOW_OIL_INFO; ///@brief 偷油报警事件, 对应事件类型 DH_ALARM_BUS_STEAL_OIL typedef struct tagALARM_BUS_STEAL_OIL_INFO { DWORD dwSize; BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 EM_VEHICLE_DATA_TYPE emDataType; // 事件数据的类型 NET_TIME stuTime; // 事件时间, UTC制 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 unsigned int nCurOil; // 当前油量, 单位: 0.1L unsigned int nOilTankage; // 油箱容积, 单位: 0.1L char szCarNO[DH_MAX_PLATE_NUMBER_LEN]; // 车牌信息 }ALARM_BUS_STEAL_OIL_INFO; ///@brief 线路状态 typedef enum tagEM_LINE_STATE { EM_LINE_STATE_UNKNOWN, // 未知 EM_LINE_STATE_NORMAL, // 线路正常 EM_LINE_STATE_AWAY, // 脱离线路 }EM_LINE_STATE; ///@brief 线路偏移事件, 车载需求,对应事件类型 DH_ALARM_BUS_CIRCUIT_SHIFT typedef struct tagALARM_BUS_CIRCUIT_SHIFT_INFO { BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuTime; // 事件发生时间,UTC制 EM_LINE_STATE emLineState; // 线路状态 BOOL bShiftAndPark; // 是否停车且偏移 BYTE byReserved[1016]; // 保留字节 }ALARM_BUS_CIRCUIT_SHIFT_INFO; ///@brief 线路超时事件,押运车需求,对应事件类型 DH_ALARM_BUS_ROUTE_OVERTIME typedef struct tagALARM_BUS_ROUTE_OVERTIME_INFO { BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuTime; // 事件发生时间,UTC制 BYTE byReserved[1024]; // 保留字节 }ALARM_BUS_ROUTE_OVERTIME_INFO; ///@brief 载重报警事件,渣土机需求,对应事件 DH_ALARM_BUS_VEHICLE_CARRY_ALARM typedef struct tagALARM_BUS_VEHICLE_CARRY_ALARM_INFO { int nAction; // 事件动作, 0: 重载, 1: 空载 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuTime; // 事件发生时间,UTC制 BYTE byReserved[1024]; // 保留字节 } ALARM_BUS_VEHICLE_CARRY_ALARM_INFO; ///@brief 载重报警事件,渣土机需求,对应事件 DH_ALARM_BUS_VEHICLE_PAULIN_ALARM typedef struct tagALARM_BUS_VEHICLE_PAULIN_ALARM_INFO { int nAction; // 事件动作, 0: 篷布开, 1: 篷布关 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuTime; // 事件发生时间,UTC制 BYTE byReserved[1024]; // 保留字节 } ALARM_BUS_VEHICLE_PAULIN_ALARM_INFO; ///@brief 举升报警事件,渣土机需求,对应事件 DH_ALARM_BUS_VEHICLE_LIFT_ALARM typedef struct tagALARM_BUS_VEHICLE_LIFT_ALARM_INFO { int nAction; // 事件动作, 0: 举升机举, 1: 举升机平 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息, 只有经纬度、速度、方向角字段有效 NET_TIME stuTime; // 事件发生时间,UTC制 BYTE byReserved[1024]; // 保留字节 } ALARM_BUS_VEHICLE_LIFT_ALARM_INFO; ///@brief 火灾压力传感器报警事件,对应事件 DH_ALARM_BUS_FIRE_PRESSURE_ALARM typedef struct tagALARM_BUS_FIRE_PRESSURE_ALARM_INFO { int nAction; // 事件动作, 0: 开始, 1: 停止 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 double dbFirePressureThreshold; // 火灾压力传感器阈值 double dbFirePressureValue; // 当前火灾压力传感器值 NET_TIME stuTime; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char byReserved[1024]; // 保留字节 }ALARM_BUS_FIRE_PRESSURE_ALARM_INFO; ///@brief 事件数据类型 typedef enum tagEM_EVENT_DATA_TYPE { EM_EVENT_DATA_TYPE_UNKNOWN, // 未知 EM_EVENT_DATA_TYPE_REALTIME, // 实时数据 EM_EVENT_DATA_TYPE_HISTORY, // 历史数据, 重发数据 }EM_EVENT_DATA_TYPE; ///@brief 油量增加检测事件, 对应事件 DH_ALARM_BUS_ADD_OIL typedef struct tagNET_ALARM_BUS_ADD_OIL_INFO { int nAction; // 事件动作, 0: 脉冲, 1: 开始, 2: 停止 BOOL bNeedConfirm; // 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认 unsigned int nTime; // 用来确认事件用的时间, UTC制, 单位为秒 NET_TIME stuTime; // 事件发生时间,UTC制 EM_EVENT_DATA_TYPE emDataType; // 事件数据类型 char szCarNo[12]; // 车牌 UINT nAddOilVolume; // 加油量, 单位: 0.1L NET_TIME stuStartTime; // 开始加油时间 NET_TIME stuEndTime; // 结束加油时间 char szReserved[512]; // 预留字节 }NET_ALARM_BUS_ADD_OIL_INFO; ///@brief 订阅Bus状态输入参结构 typedef struct tagNET_IN_BUS_ATTACH { DWORD dwSize; fBusStateCallBack cbBusState; // 状态回调函数 LDWORD dwUser; // 用户数据 }NET_IN_BUS_ATTACH; ///@brief 订阅Bus状态输出参结构 typedef struct tagNET_OUT_BUS_ATTACH { DWORD dwSize; }NET_OUT_BUS_ATTACH; ///@brief 扩展模块报警通道信息 typedef struct tagNET_EXALARMCHANNELS_INFO { DWORD dwSize; int nExAlarmBoxNum; // 扩展报警盒通道号 int nChannelNum; // 该通道在扩展报警盒上的通道号 char szChannelName[DH_MAX_EXALARMCHANNEL_NAME_LEN]; // 报警通道名称 } NET_EXALARMCHANNELS_INFO; ///@brief CLIENT_QueryDevState 接口输入参数 typedef struct tagNET_EXALARMCHANNELS { DWORD dwSize; int nExAlarmInCount; // 扩展模块报警输入通道个数,需用户指定查询个数 int nRetExAlarmInCount; // 扩展模块报警输入通道返回个数 NET_EXALARMCHANNELS_INFO* pstuExAlarmInInfo; // 扩展模块报警输入通道信息 // 由用户申请内存,大小为sizeof(NET_EXALARMCHANNELS_INFO)*nExAlarmInCount int nExAlarmOutCount; // 扩展模块报警输出通道个数,需用户指定查询个数 int nRetExAlarmOutCount; // 扩展模块报警输出通道返回个数 NET_EXALARMCHANNELS_INFO* pstuExAlarmOutInfo; // 扩展模块报警输出通道信息 // 由用户申请内存,大小为sizeof(NET_EXALARMCHANNELS_INFO)*nExAlarmOutCount } NET_EXALARMCHANNELS; ///@brief 激活的防区信息 typedef struct tagNET_ACTIVATEDDEFENCEAREA_INFO { DWORD dwSize; int nChannel; // 防区通道号 NET_TIME stuActivationTime; // 防区激活时间 }NET_ACTIVATEDDEFENCEAREA_INFO; ///@brief CLIENT_QueryDevState 接口输入参数 typedef struct tagNET_ACTIVATEDEFENCEAREA { DWORD dwSize; int nAlarmInCount; // 查询本地报警输入通道激活个数,需用户指定个数 int nRetAlarmInCount; // 本地报警输入通道实际激活个数 NET_ACTIVATEDDEFENCEAREA_INFO* pstuAlarmInDefenceAreaInfo; // 本地报警输入通道信息 // 由用户申请内存,大小为sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nAlarmInCount int nExAlarmInCount; // 查询扩展模块报警输入通道个数,需用户指定个数 int nRetExAlarmInCount; // 扩展模块报警输入通道实际激活个数 NET_ACTIVATEDDEFENCEAREA_INFO* pstuExAlarmInDefenceAreaInfo; // 扩展模块报警输入通道信息 // 由用户申请内存,大小为sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nExAlarmInCount }NET_ACTIVATEDDEFENCEAREA; ///@brief 门禁状态类型 typedef enum tagEM_NET_DOOR_STATUS_TYPE { EM_NET_DOOR_STATUS_UNKNOWN, EM_NET_DOOR_STATUS_OPEN, // 门打开 EM_NET_DOOR_STATUS_CLOSE, // 门关闭 EM_NET_DOOR_STATUS_BREAK, // 门异常打开 EM_NET_DOOR_STATUS_CLOSEALWAYS, // 门常闭 EM_NET_DOOR_STATUS_OPENALWAYS, // 门常开 }EM_NET_DOOR_STATUS_TYPE; ///@brief 门禁状态信息(CLIENT_QueryDevState 接口输入参数) typedef struct tagNET_DOOR_STATUS_INFO { DWORD dwSize; int nChannel; // 门禁通道号 EM_NET_DOOR_STATUS_TYPE emStateType; // 门禁状态信息 }NET_DOOR_STATUS_INFO; ///@brief CLIENT_QueryRecordCount接口输入参数 typedef struct _NET_IN_QUEYT_RECORD_COUNT_PARAM { DWORD dwSize; // 结构体大小 LLONG lFindeHandle; // 查询句柄 }NET_IN_QUEYT_RECORD_COUNT_PARAM; ///@brief CLIENT_QueryRecordCount接口输出参数 typedef struct _NET_OUT_QUEYT_RECORD_COUNT_PARAM { DWORD dwSize; // 结构体大小 int nRecordCount; // 设备返回的记录条数 }NET_OUT_QUEYT_RECORD_COUNT_PARAM; ///@brief 模拟量报警输入通道信息 typedef struct tagNET_ANALOGALARM_CHANNELS_INFO { DWORD dwSize; int nSlot; // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推 int nLevel1; // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器, 从0开始 int nLevel2; // 第二级级联地址, 表示连接在第nLevel1节点上的第nLevel2个探测器,从0开始,-1表示不存在该节点 char szName[DH_COMMON_STRING_128]; // 通道名称 char szSenseMethod[DH_COMMON_STRING_32]; // 传感器感应方式 BYTE byIsNull; // 判断该通道是否被置空,0为未空置,1为空置 }NET_ANALOGALARM_CHANNELS_INFO; ///@brief 模拟量报警输入通道映射关系(对应DH_DEVSTATE_ANALOGALARM_CHANNELS命令) typedef struct tagNET_ANALOGALARM_CHANNELS { DWORD dwSize; int nMaxAnalogAlarmChannels; // 最大通道数 int nRetAnalogAlarmChannels; // 返回的通道数 NET_ANALOGALARM_CHANNELS_INFO* pstuChannelInfo; // 通道信息,用户分配内存,大小为sizeof(NET_ANALOGALARM_CHANNELS_INFO)*nMaxAnalogAlarmChannels int nVideoChannel; // 指定视频通道号 }NET_ANALOGALARM_CHANNELS; ///@brief 传感器数据信息 typedef struct tagNET_ANALOGALARM_SENSE_INFO { DWORD dwSize; int nChannelID; // 通道号(从0开始) NET_SENSE_METHOD emSense; // 传感器类型 float fData; // 传感器数值 NET_TIME stuTime; // 采集时间 int nStatus; // 数据状态, -1:未知,0:正常,1:数据无效(超过量程), // 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4, // 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4 NET_GPS_STATUS_INFO stuGpsSatus; // GPS状态 int nUint; // 传感器数值的单位,在 emSense 为以下值时有效: // NET_SENSE_TEMP,此时可取值见 NET_TEMPERATURE_UNIT int nVideoChannel; // 视频通道号 }NET_ANALOGALARM_SENSE_INFO; ///@brief 订阅模拟量报警通道数据回调函数原型 typedef void (CALLBACK *fAnalogAlarmDataCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_ANALOGALARM_SENSE_INFO* pInfo, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachAnalogAlarmData()接口输入参数 typedef struct tagNET_IN_ANALOGALARM_DATA { DWORD dwSize; int nChannelId; // 从0开始, -1表示全部通道 fAnalogAlarmDataCallBack cbCallBack; // 数据回调函数 LDWORD dwUser; // 用户定义参数 }NET_IN_ANALOGALARM_DATA; ///@brief CLIENT_AttachAnalogAlarmData()接口输出参数 typedef struct tagNET_OUT_ANALOGALARM_DATA { DWORD dwSize; }NET_OUT_ANALOGALARM_DATA; // 订阅记录变更接口相关定义 #define DH_MAX_RECORD_INSERT_NUM 128 #define DH_MAX_RECORD_DELETE_NUM 128 #define DH_MAX_RECORD_UPDATE_NUM 128 ///@brief 订阅记录 typedef struct tagNET_RECORDUPDATER_INFO { DWORD dwSize; int nInsertNum; // 记录信息中,插入的记录个数 int nInsertNumberList[DH_MAX_RECORD_INSERT_NUM]; // 表示新增的记录索引号 int nDeleteNum; // 记录信息中,删除的记录个数 int nDeleteNumberList[DH_MAX_RECORD_DELETE_NUM]; // 表示删除的记录索引号,-1表示删除所有记录 int nUpdateNum; // 记录信息中,更新的记录个数 int nUpdateNumberList[DH_MAX_RECORD_UPDATE_NUM]; // 表示更新的记录索引号 }NET_RECORDUPDATER_INFO; ///@brief 订阅记录变更接口 typedef void (CALLBACK *fRecordUpdaterCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_RECORDUPDATER_INFO* pInfo, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachRecordUpdater()接口输入参数 typedef struct tagNET_IN_RECORDUPDATER_DATA { DWORD dwSize; EM_NET_RECORD_TYPE emType; // 记录集信息类型 fRecordUpdaterCallBack cbRecordUpdater; // 记录更新回调函数 LDWORD dwUser; // 用户定义参数 }NET_IN_RECORDUPDATER_DATA; ///@brief CLIENT_AttachRecordUpdater()接口输出参数 typedef struct tagNET_OUT_RECORDUPDATER_DATA { DWORD dwSize; }NET_OUT_RECORDUPDATER_DATA; #define MAX_SUPPORT_SENSORTYPE_NUM 128 // 最大支持传感器设备类型个数 ///@brief 获取设备支持的传感器列表 typedef struct tagNET_SENSOR_LIST { DWORD dwSize; int nSupportSensorNum; // 返回支持传感器设备类型个数 char szSensorList[MAX_SUPPORT_SENSORTYPE_NUM][DH_COMMON_STRING_64]; }NET_SENSOR_LIST; ///@brief CLIENT_QueryDevLogCount获取日志条数输入参数 typedef struct tagNET_IN_GETCOUNT_LOG_PARAM { DWORD dwSize; QUERY_DEVICE_LOG_PARAM stuQueryCondition; // 查询记录数条件 } NET_IN_GETCOUNT_LOG_PARAM; ///@brief CLIENT_QueryDevLogCount获取日志条数输出参数 typedef struct tagNET_OUT_GETCOUNT_LOG_PARAM { DWORD dwSize; int nLogCount; // 日志数(设备返回) } NET_OUT_GETCOUNT_LOG_PARAM; ///@brief SDK日志回调 typedef int (CALLBACK *fSDKLogCallBack)(const char* szLogBuffer, unsigned int nLogSize, LDWORD dwUser); ///@brief SDK全局日志打印信息 typedef struct tagLogSetPrintInfo { DWORD dwSize; BOOL bSetFilePath; // 是否重设日志路径 char szLogFilePath[MAX_LOG_PATH_LEN]; // 日志路径(默认"./sdk_log/sdk_log.log") BOOL bSetFileSize; // 是否重设日志文件大小 unsigned int nFileSize; // 每个日志文件的大小(默认大小10240), 单位:KB BOOL bSetFileNum; // 是否重设日志文件个数 unsigned int nFileNum; // 绕接日志文件个数(默认大小10) BOOL bSetPrintStrategy; // 是否重设日志打印输出策略 unsigned int nPrintStrategy; // 日志输出策略, 0:输出到文件(默认); 1:输出到窗口 BYTE byReserved[4]; // 字节对齐 fSDKLogCallBack cbSDKLogCallBack; // 日志回调,需要将sdk日志回调出来时设置,默认为NULL LDWORD dwUser; // 用户数据 }LOG_SET_PRINT_INFO; ////////////////////////////////////////////////////////////////////// ///@brief Low Rate Wireless Personal Area Network 低速无线私域网 begin ////////////////////////////////////////////////////////////////////// ///@brief 无线设备类型 typedef enum tagNET_WIRELESS_DEVICE_TYPE { NET_WIRELESS_DEVICE_TYPE_UNKNOWN = 0, NET_WIRELESS_DEVICE_TYPE_KEYBOARD, // 无线键盘 NET_WIRELESS_DEVICE_TYPE_DEFENCE, // 无线防区 NET_WIRELESS_DEVICE_TYPE_REMOTECONTROL, // 无线遥控 NET_WIRELESS_DEVICE_TYPE_MAGNETOMER, // 无线门磁 NET_WIRELESS_DEVICE_TYPE_ALARMBELL, // 无线警号 NET_WIRELESS_DEVICE_TYPE_SWITCHER, // 无线插座 NET_WIRELESS_DEVICE_TYPE_SMARTLOCK, // 无线智能锁 NET_WIRELESS_DEVICE_TYPE_REPEATER, // 无线中继器 } NET_WIRELESS_DEVICE_TYPE; ///@brief 无线设备工作模式 typedef enum tagEM_WIRELESS_DEVICE_MODE { EM_WIRELESS_DEVICE_MODE_UNKNOWN = 0, // 模式未识别 EM_WIRELESS_DEVICE_MODE_NORMAL, // Normal 普通模式 EM_WIRELESS_DEVICE_MODE_POLLING, // Polling 巡检模式 只有Type为RemoteControl时才能处于巡检模式 } EM_WIRELESS_DEVICE_MODE; ///@brief 传感器方式 typedef enum tagEM_CODEID_SENSE_METHOD_TYPE { EM_CODEID_SENSE_METHOD_TYPE_UNKOWN, // 未知的 EM_CODEID_SENSE_METHOD_TYPE_DOOR_MAGNETISM, // 门磁 EM_CODEID_SENSE_METHOD_TYPE_GAS_SENSOR, // 燃气传感 EM_CODEID_SENSE_METHOD_TYPE_CURTAIN_SENSOR, // 幕帘传感器 EM_CODEID_SENSE_METHOD_TYPE_MOBILE_SENSOR, // 移动传感器 EM_CODEID_SENSE_METHOD_TYPE_PASSIVEINFRA, // 被动红外传感器 EM_CODEID_SENSE_METHOD_TYPE_URGENCY_BUTTON, // 紧急按钮 EM_CODEID_SENSE_METHOD_TYPE_SMOKING_SENSOR, // 烟雾传感器 EM_CODEID_SENSE_METHOD_TYPE_DOUBLEMETHOD, // 双鉴传感器(红外+微波) EM_CODEID_SENSE_METHOD_TYPE_WATER_SENSOR, // 水浸传感器 EM_CODEID_SENSE_METHOD_TYPE_THREEMETHOD, // 三技术 }EM_CODEID_SENSE_METHOD_TYPE; #define DH_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN 32 // 无线设备序列号最大长度 ///@brief 对码信息 typedef struct tagNET_CODEID_INFO { DWORD dwSize; TP_U64 nWirelessId; // 无线ID号 NET_WIRELESS_DEVICE_TYPE emType; // 无线设备类型 char szName[DH_USER_NAME_LENGTH]; // 用户名 BOOL bEnable; // 是否启用了此设备 char szCustomName[DH_COMMON_STRING_64]; // 自定义名称 int nChannel; // 无线防区的alarm通道号,Alarm配置的下标,只有Type为Defence时此字段才有效。 EM_WIRELESS_DEVICE_MODE emMode; // 无线设备工作模式 EM_CODEID_SENSE_METHOD_TYPE emSenseMethod; // 传感器方式 char szSerialNumber[DH_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN]; // 无线设备序列号 UINT nTaskID; // 任务ID char szRoomNo[64]; // 智能锁房间号 DWORD nMaxFingerprints; // 信息数量:为0时表示不支持信息 DWORD nMaxCards; // 卡片数量:为0时表示不支持卡片 DWORD nMaxPwd; // 密码数量:为0时表示不支持密码 char szRandSalt[128]; // 智能门锁复杂盐值 }NET_CODEID_INFO; ///@brief 对码错误类型 typedef enum tagNET_CODEID_ERROR_TYPE { NET_CODEID_ERROR_TYPE_RIGHT = 0, // 对码正确 NET_CODEID_ERROR_TYPE_ALREADYEXIST, // 已经存在 NET_CODEID_ERROR_TYPE_OTHER, // 其他错误 } NET_CODEID_ERROR_TYPE; ///@brief 订阅无线对码信息回调函数原形,lAttachHandle是CLIENT_AttachLowRateWPAN返回值 typedef void (CALLBACK *fAttachLowRateWPANCB) (LLONG lLoginID, LLONG lAttachHandle, NET_CODEID_INFO* stuBuf, NET_CODEID_ERROR_TYPE emError, LDWORD dwUser); ///@brief CLIENT_AttachLowRateWPAN()输入参数 typedef struct tagNET_IN_ATTACH_LOWRATEWPAN { DWORD dwSize; fAttachLowRateWPANCB cbAttachLowRateWPANCB; // 对码数据回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_LOWRATEWPAN; ///@brief CLIENT_AttachLowRateWPAN()输出参数 typedef struct tagNET_OUT_ATTACH_LOWRATEWPAN { DWORD dwSize; }NET_OUT_ATTACH_LOWRATEWPAN; ///@brief 删除指定无线设备 ///@brief CLIENT_ControlDevice 接口的 DH_CTRL_LOWRATEWPAN_REMOVE命令参数 typedef struct tagNET_CTRL_LOWRATEWPAN_REMOVE { DWORD dwSize; TP_U64 nWirelessId; // 无线设备ID char szSerialNumber[DH_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN]; // 无线设备序列号 无线对码后续采用序列号的方式 }NET_CTRL_LOWRATEWPAN_REMOVE; ///@brief 删除全部无线设备 ///@brief CLIENT_ControlDevice接口的 DH_CTRL_LOWRATEWPAN_REMOVEALL命令参数 typedef struct tagNET_CTRL_LOWRATEWPAN_REMOVEALL { DWORD dwSize; }NET_CTRL_LOWRATEWPAN_REMOVEALL; ///@brief 修改无线设备信息 ///@brief CLIENT_ControlDevice接口的 DH_CTRL_LOWRATEWPAN_MODIFY 命令参数 typedef struct tagNET_CTRL_LOWRATEWPAN_MODIFY { DWORD dwSize; NET_CODEID_INFO stuCodeIDInfo; // 根据CodeIDInfo中的CodeID,修改其User和Enable信息,其他不能修改 }NET_CTRL_LOWRATEWPAN_MODIFY; ///@brief 设置探测器的工作模式 ///@brief CLIENT_ControlDevice接口的 DH_CTRL_LOWRATEWPAN_SETWORKMODE命令参数 typedef struct tagNET_IN_CTRL_LOWRATEWPAN_SETWORKMODE { DWORD dwSize; int nMode; //设置模式 0 :省电模式, 1 :常工作模式 }NET_IN_CTRL_LOWRATEWPAN_SETWORKMODE; ///@brief 过车状态 typedef enum tagEM_CARPASS_STATUS { EM_CARPASS_STATUS_UNKNOWN, // 未知状态 EM_CARPASS_STATUS_CARPASS, // 过车状态 EM_CARPASS_STATUS_NORMAL, // 无车状态 }EM_CARPASS_STATUS; ///@brief 设置停车信息,对应DH_CTRL_SET_PARK_INFO命令参数 typedef struct tagNET_CTRL_SET_PARK_INFO { DWORD dwSize; char szPlateNumber[MAX_PLATE_NUMBER_LEN]; // 车牌号码 unsigned int nParkTime; // 停车时长,单位:分钟 char szMasterofCar[MAX_MASTER_OF_CAR_LEN]; // 车主姓名 char szUserType[MAX_USER_TYPE_LEN]; // 用户类型,非通用,用于出入口抓拍一体机 // monthlyCardUser表示月卡用户,yearlyCardUser表示年卡用户,longTimeUser表示长期用户/VIP,casualUser表示临时用户/Visitor unsigned int nRemainDay; // 到期天数 char szParkCharge[MAX_PARK_CHARGE_LEN]; // 停车费 unsigned int nRemainSpace; // 停车库余位数 unsigned int nPassEnable; // 0:不允许车辆通过 1:允许车辆通过 NET_TIME stuInTime; // 车辆入场时间 NET_TIME stuOutTime; // 车辆出场时间 EM_CARPASS_STATUS emCarStatus; // 过车状态 char szCustom[MAX_CUSTOM_LEN]; // 自定义显示字段,默认空 char szSubUserType[MAX_SUB_USER_TYPE_LEN]; // 用户类型(szUserType字段)的子类型 char szRemarks[MAX_REMARKS_LEN]; // 备注信息 char szResource[MAX_RESOURCE_LEN]; // 资源文件(视频或图片)视频支持:mp4格式; 图片支持:BMP/jpg/JPG/jpeg/JPEG/png/PNG格式 UINT nParkTimeout; // 停车超时时间,单位分钟。为0表示未超时,不为0表示超时时间。 }NET_CTRL_SET_PARK_INFO; ///@brief 清除当前时间段内人数统计信息, 重新从0开始计算 ///@brief CLIENT_ControlDevice接口的 DH_CTRL_CLEAR_SECTION_STAT命令参数 typedef struct tagNET_CTRL_CLEAR_SECTION_STAT_INFO { DWORD dwSize; int nChannel; // 视频通道号 } NET_CTRL_CLEAR_SECTION_STAT_INFO; ///@brief 获取对码成功的总条数 typedef struct tagNET_GET_CODEID_COUNT { DWORD dwSize; int nCodeIDCount; // 对码成功的总条数 }NET_GET_CODEID_COUNT; ///@brief 获取对码信息 typedef struct tagNET_GET_CODEID_LIST { DWORD dwSize; int nStartIndex; // 开始的索引号,开始第一次查询可设为0 int nQueryNum; // 本次获取的对码条数,此值小于等于能力集中nMaxPageSize字段的值 int nRetCodeIDNum; // 实际返回的对码条数 NET_CODEID_INFO* pstuCodeIDInfo; // 获取对码的内容,内存由用户分配,不能小于nQueryNum*sizeof(NET_CODEID_INFO) }NET_GET_CODEID_LIST; ///@brief 无线设备信号强度信息 typedef struct tagNET_DEVSIGNAL_INFO { DWORD dwSize; // 此结构体大小 char szSN[32]; // 设备序列号 UINT nSignal; // 无线信号强度百分比 }NET_DEVWIRELESSSIGNAL_INFO; ///@brief 获取无线设备信号强度 typedef struct tagNET_GET_DEVSIGNAL_LIST { DWORD dwSize; int nStartIndex; // 开始的索引号,开始第一次查询可设为0 int nQueryNum; // 本次查询的设备状态条数,此值小于等于CFG_CAP_CMD_LOWRATEWPAN能力集中nMaxPageSize字段的值 int nRetDevSignalNum; // 实际返回的设备状态条数 NET_DEVWIRELESSSIGNAL_INFO* pstuDevSignalInfo; // 获取对码的内容,内存由用户分配,不能小于nQueryNum*sizeof(NET_DEVWIRELESSSIGNAL_INFO) }NET_GET_DEVWIRELESSSIGNAL_LIST; ///@brief 增加对码信息 typedef struct tagNET_CTRL_LOWRATEWPAN_ADD { DWORD dwSize; NET_CODEID_INFO stuCodeIDInfo; // 对码数据 }NET_CTRL_LOWRATEWPAN_ADD; ///@brief 无线设备在线状态 typedef enum tagEM_WIRELESS_DEVICE_ONLINE_STATE { EM_WIRELESS_DEVICE_STATE_UNKNOWN = 0, // 未知 EM_WIRELESS_DEVICE_STATE_OUTLINE, // 离线 EM_WIRELESS_DEVICE_STATE_ONLINE, // 在线 } EM_WIRELESS_DEVICE_ONLINE_STATE; ///@brief 无线设备电量状态 typedef enum tagEM_WIRELESS_DEVICE_POWER_STATE { EM_WIRELESS_DEVICE_POWER_UNKNOWN = 0, // 电量未知 EM_WIRELESS_DEVICE_POWER_NORMAL, // 电量正常 EM_WIRELESS_DEVICE_POWER_LOW, // 低电量 } EM_WIRELESS_DEVICE_POWER_STATE; ///@brief 无线设备状态信息 typedef struct tagNET_WIRELESS_DEVICE_INFO { char szSerialNumber[DH_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN]; // 设备序列号 EM_WIRELESS_DEVICE_ONLINE_STATE emOnlineState; // 在线状态 EM_WIRELESS_DEVICE_POWER_STATE emPowerState; // 电量状态 BYTE byReserved[128]; // 保留字段 }NET_WIRELESS_DEVICE_INFO; ///@brief 获取无线设备状态 typedef struct tagNET_GET_WIRELESS_DEVICE_STATE { DWORD dwSize; int nStartIndex; // 开始的索引号,开始第一次查询可设为0, 由用户设置 int nQueryNum; // 本次获取的设备状态条数, 此值小于等于能力集中nMaxPageSize字段的值, 用户设置 int nRetQueryNum; // 获取到的实际返回的设备状态条数, 小于等于nQueryNum NET_WIRELESS_DEVICE_INFO *pstuDeviceInfo; // 获取设备状态的内容, 内存有用户分配, 不能小于nQueryNum*sizeof(NET_WIRELESS_DEVICE_INFO) }NET_GET_WIRELESS_DEVICE_STATE; ///@brief 冗余电源状态 typedef enum tagEM_REDUNDANCE_POWER_STATE { EM_REDUNDANCE_POWER_STATE_UNKNOWN = 0, // 状态未知 EM_REDUNDANCE_POWER_STATE_ON, // 打开 EM_REDUNDANCE_POWER_STATE_OFF, // 关闭 EM_REDUNDANCE_POWER_STATE_ON_FAULT, // 故障 } EM_REDUNDANCE_POWER_STATE; #define MAX_REDUNDANCE_POWER_NUM 16 // 最大冗余电源个数 ///@brief 获取冗余电源信息 typedef struct tagNET_GET_REDUNDANCE_POWER_INFO { DWORD dwSize; // 结构体大小 int nPowerNum; // 电源数量 EM_REDUNDANCE_POWER_STATE emPowerState[MAX_REDUNDANCE_POWER_NUM]; // 电源状态信息数组 }NET_GET_REDUNDANCE_POWER_INFO; ///@brief 配件防拆状态 typedef enum tagNET_EM_ACCESSORY_TAMPER_STATE { NET_EM_ACCESSORY_TAMPER_UNKNOWN, // 未知 NET_EM_ACCESSORY_TAMPER_ON, // 开 NET_EM_ACCESSORY_TAMPER_OFF, // 关 }NET_EM_ACCESSORY_TAMPER_STATE; ///@brief 门磁开门状态 typedef enum tagNET_EM_DOOR_STATE { NET_EM_DOOR_STATE_UNKNOWN, // 未知 NET_EM_DOOR_STATE_ON, // 开 NET_EM_DOOR_STATE_OFF, // 关 }NET_EM_DOOR_STATE; ///@brief 在线状态 typedef enum tagNET_EM_ONLINE_STATE { NET_EM_ONLINE_STATE_UNKNOWN, // 未知 NET_EM_ONLINE_STATE_OFFLINE, // 离线 NET_EM_ONLINE_STATE_ONLINE, // 在线 }NET_EM_ONLINE_STATE; ///@brief 告警状态 typedef enum tagNET_EM_ALARM_STATE { NET_EM_ALARM_STATE_UNKNOWN = -1, // 未知 NET_EM_ALARM_STATE_NORMAL, // 正常 NET_EM_ALARM_STATE_ALARM, // 告警 }NET_EM_ALARM_STATE; ///@brief 返回的状态信息 typedef struct tagNET_STATUS_INFO { char szSN[MAX_COMMON_STRING_32]; // 配件序列号 UINT nPercent; // 电池电量百分比,0~100 float fVolt; // 电池电量,单位:伏 UINT nIntensity; // 无线信号强度等级,0~5 UINT nSignal; // 无线信号强度,单位dbm,0~120 NET_EM_ACCESSORY_TAMPER_STATE emAccessoryTamperState; // 配件防拆状态 NET_EM_DOOR_STATE emDoorState; // 门磁开门状态 char szName[MAX_COMMON_STRING_32]; // 配件名称 NET_EM_ONLINE_STATE emOnlineState; // 在线状态 NET_EM_ALARM_STATE emAlarmState; // 告警状态,仅对门磁、水浸等状态量报警有效;对红外灯脉冲报警无效 char szVersion[MAX_COMMON_STRING_16];// 配件版本 }NET_STATUS_INFO; ///@brief 获取配件状态 typedef struct tagNET_GET_ACCESSORY_STATUS { DWORD dwSize; // 结构体大小 int nSNNum; // 配件序列号数组个数(当个数为0时,返回主机下所有配件状态) char szSN[56][MAX_COMMON_STRING_32]; // 配件序列号数组,一维数组 int nStatusNum; // 返回的状态信息数组个数 NET_STATUS_INFO stStatusInfo[56]; // 返回的状态信息数组 }NET_GET_ACCESSORY_STATUS; ///@brief 巡航预置点信息 typedef struct tagNET_PTZ_PRESET_POINT { int nIndexNum; // 索引编号,从0开始 int nDwellTime; // 停留时间,单位:秒 int nRotationalSpeed; // 转速等级【范围:1~10】 BYTE byReserved[44]; // 保留字节 }NET_PTZ_PRESET_POINT_INFO; ///@brief 云台巡航信息 typedef struct tagNET_PTZ_TOURS_INFO { int nCruiseNum; // 巡航编号,从1开始 char szName[64]; // 巡航名称 NET_PTZ_PRESET_POINT_INFO stuPresetPoint[64]; // 预置点信息 int nPresetPointNum; // 预置点个数 BYTE byReserved[256]; // 保留字节 }NET_PTZ_TOURS_INFO; ///@brief 获取巡航列表信息(DH_DEVSTATE_GET_PTZ_TOURS) typedef struct tagNET_GET_PTZ_TOURS_INFO { DWORD dwSize; // 结构体大小 int nMaxToursNum; // 最大申请巡航组个数 NET_PTZ_TOURS_INFO *pstuToursInfo; // 巡航组信息 int nRetToursNum; // 实际返回巡航组个数 }NET_GET_PTZ_TOURS_INFO; ///@brief 探测器状态类型 typedef enum tagEM_DETECTOR_STATUS_TYPE { EM_DETECTOR_STATUS_UNKNOWN = -1, // 未知 EM_DETECTOR_STATUS_ALLFUNCT_ENABLE, // 启用所有功能 EM_DETECTOR_STATUS_ANTITAMPER_DISABLE, // 禁用防拆功能 EM_DETECTOR_STATUS_ALLFUNCT_DISABLE, // 禁用所有功能 }EM_DETECTOR_STATUS_TYPE; ///@brief 设备布撤防时音量 typedef enum tagEM_ACCESSORY_VOLUME { EM_ACCESSORY_VOLUME_UNKNOWN, // 未知 EM_ACCESSORY_VOLUME_LOW, // 低音量 EM_ACCESSORY_VOLUME_MEDIUM, // 中音量 EM_ACCESSORY_VOLUME_HIGH, // 高音量 }EM_ACCESSORY_VOLUME; ///@brief 外接电源状态 typedef enum tagEM_EXPOWER_STATE { EM_EXPOWER_DISCONNECT = 0, // 未连接 EM_EXPOWER_CONNECT = 1, // 连接 EM_EXPOWER_UNKNOWN = 2, // 未知 }EM_EXPOWER_STATE; ///@brief 是否启用中继转发 typedef enum tagEM_RELAY_TYPE { EM_RELAY_UNKNOWN = -1, // 未知 EM_RELAY_CLOSED, // 关闭 EM_RELAY_MANUAL, // 手动 EM_RELAY_AUTO, // 自动 }EM_RELAY_TYPE; ///@brief 中继状态 typedef struct tagNET_WPAN_RELAY_INFO { EM_RELAY_TYPE emEnable; // 是否启用中继转发 int nRelayIndex; // 使用中继地址 BYTE byReserved[32]; // 预留字段 }NET_WPAN_RELAY_INFO; ///@brief 灵敏度 typedef enum tagEM_ACCESSORY_SENSITIVITY { EM_ACCESSORY_SENSITIVITY_UNKNOWN, // 未知 EM_ACCESSORY_SENSITIVITY_LOW, // 低灵敏度 EM_ACCESSORY_SENSITIVITY_MEDIUM, // 中灵敏度 EM_ACCESSORY_SENSITIVITY_HIGH, // 高灵敏度 }EM_ACCESSORY_SENSITIVITY; ///@brief 功率调节类型 typedef enum tagEM_POWER_REGULATION_TYPE { EM_POWER_REGULATION_UNKNOWN = -1, // 未知 EM_POWER_REGULATION_AUTO, // 自动 EM_POWER_REGULATION_LOW, // 低 EM_POWER_REGULATION_MEDIUM, // 中 EM_POWER_REGULATION_HIGH, // 高 }EM_POWER_REGULATION_TYPE; ///@brief 布防模式 typedef enum tagEM_ARMING_TYPE { EM_ARMING_UNKNOWN = -1, // 未知 EM_ARMING_ATHOME, // 在家布防 EM_ARMING_OUT, // 外出布防 }EM_ARMING_TYPE; ///@brief 布防信息 typedef struct tagNET_WPAN_ARMING_INFO { EM_ARMING_TYPE emType; // 布防模式 BOOL bEnable; // 布防开关:布防时候是否使能该探测器 BOOL bDelayEnable; // 延时使能:布防时候是否使用进入退出延时 BYTE byReserved[32]; // 预留字段 }NET_WPAN_ARMING_INFO; ///@brief 心跳信息 typedef struct tagNET_WPAN_HEARTBEAT_INFO { UINT nInterval; // 心跳间隔,单位:秒 UINT nOfflineTimes; // 离线次数 BYTE byReserved[32]; // 预留字段 }NET_WPAN_HEARTBEAT_INFO; ///@brief 在线状态 typedef enum tagEM_ONLINE_STATUS { EM_ONLINE_UNKNOWN, // 未知 EM_ONLINE_OFF, // 离线 EM_ONLINE_ON, // 在线 }EM_ONLINE_STATUS; ///@brief 报警类型 typedef enum tagEM_ACCESSORY_ALARM_TYPE { EM_ACCESSORY_ALARM_UNKNOWN = -1, // 未知 EM_ACCESSORY_ALARM_INTRUSION, // 入侵 EM_ACCESSORY_ALARM_FIRE, // 火警 EM_ACCESSORY_ALARM_MEDICAL, // 医疗 EM_ACCESSORY_ALARM_PANIC, // 紧急 EM_ACCESSORY_ALARM_GAS, // 燃气 EM_ACCESSORY_ALARM_HOLDUP, // 双按钮紧急按钮报警类型 }EM_ACCESSORY_ALARM_TYPE; ///@brief 输入类型 typedef enum tagEM_ACCESSORY_INPUT_TYPE { EM_ACCESSORY_INPUT_UNKNOWN = -1, // 未知 EM_ACCESSORY_INPUT_TAMPER, // 防拆 EM_ACCESSORY_INPUT_SENSOR, // 报警输入 }EM_ACCESSORY_INPUT_TYPE; ///@brief led灯亮度 typedef enum tagEM_LED_BRIGHTNESS_LEVEL { EM_LED_BRIGHTNESS_UNKNOWN = -1, // 未知 EM_LED_BRIGHTNESS_CLOSED, // 关闭 EM_LED_BRIGHTNESS_LOW, // 亮度最低 EM_LED_BRIGHTNESS_MEDIUM, // 亮度适中 EM_LED_BRIGHTNESS_HIGH, // 亮度最高 }EM_LED_BRIGHTNESS_LEVEL; ///@brief 操作模式 typedef enum tagEM_OPERATION_MODE { EM_OPERATION_UNKNOWN = -1, // 未知 EM_OPERATION_PANIC, // 紧急操作 EM_OPERATION_CONTROL, // 控制操作 EM_OPERATION_MUTE_FIRE_ALARM, // 静音火灾报警操作 }EM_OPERATION_MODE; ///@brief 防误按模式 typedef enum tagEM_ANTI_MISPRESS_TYPE { EM_ANTI_MISPRESS_UNKNOWN, // 未知 EM_ANTI_MISPRESS_OFF, // 按下0.1s生效 EM_ANTI_MISPRESS_LONG, // 长按3s有效 EM_ANTI_MISPRESS_DOUBLE, // 间断1s内连续按2次 }EM_ANTI_MISPRESS_TYPE; ///@brief 按钮报警类型 typedef enum tagEM_BUTTON_ALARM_TYPE { EM_BUTTON_ALARM_UNKNOWN = -1, // 未知 EM_BUTTON_ALARM_FIRE, // 火警 EM_BUTTON_ALARM_EMERGENCY, // 紧急报警 EM_BUTTON_ALARM_MEDICAL, // 医疗报警 }EM_BUTTON_ALARM_TYPE; ///@brief 配件能力集 typedef struct tagNET_WPAN_ACCESSORY_CAPS_INFO { BOOL bSupportAlarmTone; // 是否支持报警声音设置 BOOL bSupportCardReader; // 是否支持读卡器 BOOL bSupportChime; // 是否支持门铃模式 BOOL bSupportOverTemperatureAlarm; // 是否支持超温报警 BOOL bSupportExternalWifi; // 是否支持外部wifi设置 BOOL bSupportWifiInfo; // 是否支持wifi信息设置 BYTE byreserve[32]; // 预留字段 }NET_WPAN_ACCESSORY_CAPS_INFO; ///@brief 按钮信息 typedef struct tagNET_WPAN_ACCESSORY_BUTTON_INFO { BOOL bEnable; // 按键使能 EM_BUTTON_ALARM_TYPE emType; // 报警类型 UINT nSirenLinkageNum; // 警号联动个数 int nSirenLinkage[64]; // 警号联动 BYTE byReserved[32]; // 预留字段 }NET_WPAN_ACCESSORY_BUTTON_INFO; ///@brief 登录失败的锁定信息 typedef struct tagNET_WPAN_ACCESSORY_LOCK_INFO { BOOL bLockLoginEnable; // 登录锁定使能 UINT nLoginFailLockTime; // 登录失败锁定时间,单位:秒 BYTE byLockLoginTimes; // 登录失败可尝试次数 BYTE byReserved[31]; // 预留字段 }NET_WPAN_ACCESSORY_LOCK_INFO; ///@brief 读卡器配置 typedef struct tagNET_WPAN_CARD_READER_INFO { BOOL bEnable; // 读卡器使能 BYTE byEncryption; // 发卡时是否加密卡片,1:加密(软加密);2:不加密 BYTE byReserved[31]; // 预留字段 }NET_WPAN_CARD_READER_INFO; ///@brief 图片信息 typedef struct tagNET_WPAN_ACCESSORY_IMAGE_INFO { CAPTURE_SIZE emResolution; // 分辨率 int nSnapshotNumber; // 抓图数量 int nSnapshotTimes; // 抓图次数 BYTE byReserved[32]; // 预留字段 }NET_WPAN_ACCESSORY_IMAGE_INFO; ///@brief 外部wifi优先级 typedef enum tagEM_EXTERNAL_WIFI_PRIORITY { EM_EXTERNAL_WIFI_UNKNOWN, // 未知 EM_EXTERNAL_WIFI_FIRST, // 首选外部wifi EM_EXTERNAL_WIFI_ALTERNATIVE, // 备选外部wifi EM_EXTERNAL_WIFI_USEONLY, // 仅使用外部wifi }EM_EXTERNAL_WIFI_PRIORITY; ///@brief 外部wifi信息 typedef struct tagNET_WPAN_EXTERNAL_WIFI_INFO { BOOL bEnable; // 外部wifi使能 EM_EXTERNAL_WIFI_PRIORITY emPriority; // 外部wifi优先级 BYTE byReserved[32]; // 预留字段 }NET_WPAN_EXTERNAL_WIFI_INFO; ///@brief wifi信息 typedef struct tagNET_WPAN_WIFI_INFO { BOOL bSyncEnable; // Wi-Fi参数信息同步使能 char szSSID[MAX_COMMON_STRING_128]; // wifi名称 char szPassword[MAX_COMMON_STRING_64]; // wifi密码 BYTE byReserved[32]; // 预留字段 }NET_WPAN_WIFI_INFO; ///@brief 超温报警 typedef struct tagNET_WPAN_OVER_TEMPERATURE_ALARM_INFO { BOOL bEnable; // 超温报警使能开关 double dbLowerLimit; // 超温报警下限温度值 double dbUpperLimit; // 超温报警上限温度值 BYTE byReserved[32]; // 预留字段 }NET_WPAN_OVER_TEMPERATURE_ALARM_INFO; ///@brief 返回的配件信息 typedef struct tagNET_WPAN_ACCESSORY_INFO { DWORD dwSize; // 结构体大小 BOOL bRecordEnable; // 录像使能,必须同时有RecordChannels BOOL bExternalAlarmEnable; // 外部告警使能 BOOL bArmingWithoutPassword; // 无密码布防使能 BYTE byAlarmLedIndication; // 报警Led灯指示,0:关闭;1:打开 BYTE byExPowerCheck; // 控制检测外接电源状态的开关,0:关闭;1:打开 BYTE byTamper; // 配件防拆状态,0:关;1:开 BYTE by24HDefenceStatus; // 24H防区状态,0:关;1:开 BYTE byAlarmStatus; // 告警状态,0:正常;1:报警 BYTE byExternalAlarmStatus; // 外部告警状态,0:正常;1:报警 BYTE byLedIndication; // Led灯指示,0:关;1:开 BYTE byBeepIndication; // 布撤防以及进入退出延时是否有BEEP声音,0:无;1:有 BYTE bySosStatus; // 紧急按钮状态,0:关;1:开 BYTE byViaTrace; // 配件上报方式,0:直连;1:中继上报 BYTE bySensorType; // 传感器类型,0:常闭;1:常开 BYTE byLockState; // 锁定状态,1:非锁定;2:锁定 BYTE bySensorFailure; // 传感器故障状态,0:正常;1:故障 BYTE bySignalStrengthTest; // 信号强度测试,0:关;1:开 BYTE bySensitivityTest; // 灵敏度测试,0:关;1:开 BYTE byVolumeTest; // 音量测试,0:关;1:开 BYTE bySnapshotTest; // 抓图测试,0:关;1:开 BYTE byWifiTest; // wifi测试,0:关;1:开 BYTE byBlockState; // 传感器屏蔽状态, 1:关闭屏蔽;2:开启屏蔽 UINT nShortAddr; // 配件短地址,从1开始 UINT nPercent; // 电池电量百分比:0~100 UINT nSignalLevel; // 无线信号强度等级 UINT nEntryDelay; // 进入延时,单位:秒 UINT nExitDelay; // 退出延时,单位:秒 UINT nAlarmDuring; // 报警持续时间,单位:秒 int nTriggerAlarmInterval; // 触发报警间隔时间,单位:秒 EM_DETECTOR_STATUS_TYPE emState; // 探测器状态 EM_ACCESSORY_VOLUME emBeepVolume; // 设备布防时音量 EM_ACCESSORY_SENSITIVITY emSensentivity; // 灵敏度 EM_POWER_REGULATION_TYPE emPowerRegulation; // 功率调节 EM_ONLINE_STATUS emOnline; // 在线状态 EM_ACCESSORY_ALARM_TYPE emAlarmType; // 报警类型 EM_ACCESSORY_INPUT_TYPE emInputType; // 输入类型 EM_LED_BRIGHTNESS_LEVEL emLedBrightnessLevel; // LED亮度 EM_OPERATION_MODE emOperationMode; // 操作模式 EM_ANTI_MISPRESS_TYPE emAntiMispress; // 防误按模式 EM_EXPOWER_STATE emExPowerState; // 外部电源状态,若未开启检测外接电源状态则为未知 EM_ACCESSORY_VOLUME emVolume; // 设备报警音量 float fAmbientTemperature; // 环境温度,单位:摄氏度 char szSN[MAX_COMMON_STRING_32]; // 配件序列号 char szName[MAX_COMMON_STRING_64]; // 配件名称 char szVersion[MAX_COMMON_STRING_64]; // 配件版本 char szModel[MAX_COMMON_STRING_64]; // 配件型号 char szAlarmTone[MAX_COMMON_STRING_128]; // 报警提示音 NET_WPAN_RELAY_INFO stuRelayTran; // 中继状态 NET_SENSE_METHOD emType; // 传感器感应方式 NET_WPAN_HEARTBEAT_INFO stuHeartbeat; // 心跳信息 NET_WPAN_ACCESSORY_CAPS_INFO stuCaps; // 配件能力集 NET_WPAN_ACCESSORY_LOCK_INFO stuLockInfo; // 登录失败的锁定信息 NET_WPAN_CARD_READER_INFO stuCardReader; // 读卡器配置 NET_WPAN_ACCESSORY_IMAGE_INFO stuImageInfo; // 图片信息 NET_WPAN_EXTERNAL_WIFI_INFO stuExternalWifi; // 外部wifi信息 NET_WPAN_WIFI_INFO stuWifiInfo; // Wi-Fi信息 NET_WPAN_OVER_TEMPERATURE_ALARM_INFO stuOverTemperatureAlarm; // 超温报警 UINT nAreaNumberCnt; // 所属区域个数 int nAreaNumber[64]; // 所属区域编号,整形数组从1开始 UINT nControlAreaNumCnt; // 控制区域个数 int nControlAreaNum[64]; // 控制区域编号:所属区域编号,从1开始;-1:全局,0:关闭 UINT nRecordChannelsNum; // 录像通道号个数 int nRecordChannels[256]; // 录像通道号列表,一维数组,每个成员表示对应的通道需要执行录像,通道号从0开始 UINT nSirenLinkageNum; // 警号联动个数 int nSirenLinkage[256]; // 警号联动 UINT nArmingInfoNum; // 布防信息个数 NET_WPAN_ARMING_INFO stuArmingInfo[4]; // 布防信息,最大4组 UINT nButtonNum; // 按键个数 NET_WPAN_ACCESSORY_BUTTON_INFO stuButton[16]; // 按键信息 }NET_WPAN_ACCESSORY_INFO; ///@brief 获取配件信息(对应DH_DEVSTATE_GET_ACCESSORY_INFO) typedef struct tagNET_GET_ACCESSORY_INFO { DWORD dwSize; // 结构体大小 UINT nSNNum; // 配件序列号数组个数(当个数为0时,返回主机下所有配件状态) char szSN[56][MAX_COMMON_STRING_32]; // 配件序列号数组 UINT nMaxInfoNum; // 申请的配件个数 NET_WPAN_ACCESSORY_INFO* pstuInfo; // 配件信息指针,由调用者分配内存,分配的大小为 nMaxAccessoryInfo*sizeof(NET_WPAN_ACCESSORY_INFO) UINT nInfoNum; // 返回的配件数 }NET_GET_ACCESSORY_INFO; ///@brief UPnP状态类型 typedef enum tagEM_UPNP_STATUS_TYPE { EM_UPNP_STATUS_UNKNOWN, // 状态未知 EM_UPNP_STATUS_SUCCESS, // 获取成功 EM_UPNP_STATUS_ERROR, // 获取失败 }EM_UPNP_STATUS_TYPE; ///@brief 端口映射状态类型 typedef enum tagEM_PORTMAP_STATUS_TYPE { EM_PORTMAP_STATUS_UNKNOWN, // 状态未知 EM_PORTMAP_STATUS_SUCCESS, // 映射成功 EM_PORTMAP_STATUS_FAILED, // 映射失败 }EM_PORTMAP_STATUS_TYPE; ///@brief 获取UPnP映射状态(对应DH_DEVSTATE_GET_UPNP_STATUS) typedef struct tagNET_GET_UPNPSTATUS_INFO { DWORD dwSize; // 结构体大小 BOOL bWorking; // 是否正在工作 EM_UPNP_STATUS_TYPE emStatus; // 状态 char szInnerAddress[MAX_COMMON_STRING_64]; // 内部IP char szOuterAddress[MAX_COMMON_STRING_64]; // 外部IP UINT nMaxPortMapStatus; // 申请的端口映射状态个数 UINT nReturnNum; // 实际返回的端口映射状态个数 EM_PORTMAP_STATUS_TYPE *pemPortMapStatus; // 端口映射状态信息指针,由调用者分配内存,分配的大小为 nMaxPortMapStatus*sizeof(EM_PORTMAP_STATUS_TYPE) }NET_GET_UPNPSTATUS_INFO; ///@brief 测试邮件, CLIENT_ControlDeviceEx 入参 对应 DH_CTRL_TEST_MAIL typedef struct tagNET_IN_TEST_MAIL { DWORD dwSize; }NET_IN_TEST_MAIL; ///@brief 测试邮件, CLIENT_ControlDeviceEx 出参 对应 DH_CTRL_TEST_MAIL typedef struct tagNET_OUT_TEST_MAIL { DWORD dwSize; }NET_OUT_TEST_MAIL; ///@brief 设置配件信息入参(对应DH_CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM) typedef struct tagNET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM { DWORD dwSize; NET_WPAN_ACCESSORY_INFO stuInfo; // 配件信息 }NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM; ///@brief 控制智能开关, CLIENT_ControlDeviceEx 入参 对应 DH_CTRL_CONTROL_SMART_SWITCH typedef struct tagNET_IN_CONTROL_SMART_SWITCH { DWORD dwSize; char szSerialNumber[DH_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN]; // 设备序列号 BOOL bEnable; // TRUE - 开, FALSE - 关 int nDelayTime; // 延时时间, 等于0时,表示立即打开或关闭. unit: min }NET_IN_CONTROL_SMART_SWITCH; ///@brief 控制智能开关, CLIENT_ControlDeviceEx 出参 对应 DH_CTRL_CONTROL_SMART_SWITCH typedef struct tagNET_OUT_CONTROL_SMART_SWITCH { DWORD dwSize; }NET_OUT_CONTROL_SMART_SWITCH; ///@brief 同轴IO控制类型 typedef enum tagEM_COAXIAL_CONTROL_IO_TYPE { EM_COAXIAL_CONTROL_IO_TYPE_UNKNOWN, // 未知 EM_COAXIAL_CONTROL_IO_TYPE_LIGHT, // 白光灯 EM_COAXIAL_CONTROL_IO_TYPE_SPEAKER, // speak音频 } EM_COAXIAL_CONTROL_IO_TYPE; ///@brief 同轴IO控制开关 typedef enum tagEM_COAXIAL_CONTROL_IO_SWITCH { EM_COAXIAL_CONTROL_IO_SWITCH_UNKNOWN, // 未知 EM_COAXIAL_CONTROL_IO_SWITCH_OPEN, // 开 EM_COAXIAL_CONTROL_IO_SWITCH_CLOSE, // 关 } EM_COAXIAL_CONTROL_IO_SWITCH; ///@brief 同轴IO触发方式 typedef enum tagEM_COAXIAL_CONTROL_IO_TRIGGER_MODE { EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_UNKNOWN, // 未知 EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_LINKAGE_TRIGGER, // 联动触发 EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_MANUAL_TRIGGER, // 手动触发 } EM_COAXIAL_CONTROL_IO_TRIGGER_MODE; ///@brief 白光灯模式 typedef enum tagEM_COAXIAL_CONTROL_IO_LIGHT_MODE { EM_COAXIAL_CONTROL_IO_LIGHT_MODE_UNKNOWN, // 未知 EM_COAXIAL_CONTROL_IO_LIGHT_MODE_BRIGHT, // 常亮 EM_COAXIAL_CONTROL_IO_LIGHT_MODE_TWINKLE, // 闪烁 } EM_COAXIAL_CONTROL_IO_LIGHT_MODE; ///@brief 同轴IO信息结构体 typedef struct tagNET_COAXIAL_CONTROL_IO_INFO { EM_COAXIAL_CONTROL_IO_TYPE emType; // 同轴IO控制类型 EM_COAXIAL_CONTROL_IO_SWITCH emSwicth; // 同轴IO控制开关 EM_COAXIAL_CONTROL_IO_TRIGGER_MODE emMode; // 同轴IO触发方式 EM_COAXIAL_CONTROL_IO_LIGHT_MODE emLightMode; // 白光灯模式 BYTE byReserved[124]; // 保留字节 } NET_COAXIAL_CONTROL_IO_INFO; // 同轴IO信息最大个数 #define MAX_COAXIAL_CONTROL_IO_COUNT 8 ///@brief 发送同轴IO控制命令, CLIENT_ControlDeviceEx 入参 对应 DH_CTRL_COAXIAL_CONTROL_IO typedef struct tagNET_IN_CONTROL_COAXIAL_CONTROL_IO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nInfoCount; // 同轴IO信息个数 NET_COAXIAL_CONTROL_IO_INFO stInfo[MAX_COAXIAL_CONTROL_IO_COUNT]; // 同轴IO信息 } NET_IN_CONTROL_COAXIAL_CONTROL_IO; ///@brief 发送同轴IO控制命令, CLIENT_ControlDeviceEx 出参 对应 DH_CTRL_COAXIAL_CONTROL_IO typedef struct tagNET_OUT_CONTROL_COAXIAL_CONTROL_IO { DWORD dwSize; // 结构体大小 } NET_OUT_CONTROL_COAXIAL_CONTROL_IO; ////////////////////////////////////////////////////////////////////// ///@brief Low Rate Wireless Personal Area Network 低速无线私域网 end ////////////////////////////////////////////////////////////////////// ///@brief 模拟量通道数据查询(对应 DH_DEVSTATE_ANALOGALARM_DATA 命令) typedef struct tagNET_GET_ANALOGALARM_DATA { DWORD dwSize; int nChannelID; // 待查询的模拟量通道号(从0开始) NET_ANALOGALARM_SENSE_INFO stuInfo; // 获得的模拟量通道数据 }NET_GET_ANALOGALARM_DATA; ///@brief 监测控制和数据采集设备的设备类型 typedef enum tagEM_NET_SCADA_DEV_TYPE { EM_NET_SCADA_DEV_TYPE_UNKNOWN = 0, // 未知 EM_NET_SCADA_DEV_TYPE_ALL, // 所有类型设备 EM_NET_SCADA_DEV_TYPE_UPS, // UPS } EM_NET_SCADA_DEV_TYPE; ///@brief 监测控制和数据采集设备的点位表路径信息输入参数, 查询条件 typedef struct tagNET_IN_SCADA_POINT_LIST_INFO { DWORD dwSize; char szDevType[DH_COMMON_STRING_64]; // 设备类型 }NET_IN_SCADA_POINT_LIST_INFO; #define MAX_SCADA_POINT_LIST_INDEX 8 // 最大SCADADev配置下标个数, 即最大通道 ///@brief 点位表路径信息 typedef struct tagNET_SCADA_POINT_LIST { DWORD dwSize; int nIndexValidNum; // 有效的配置下标个数 int nIndex[MAX_SCADA_POINT_LIST_INDEX];// SCADADev配置下标值, 从0开始 char szPath[DH_COMMON_STRING_256];// 点表的完整路径 }NET_SCADA_POINT_LIST; #define MAX_SCADA_POINT_LIST_INFO_NUM 256 // 最大点位表路径个数 #define MAX_SCADA_POINT_LIST_ALARM_INFO_NUM 256 // 最大点位表报警个数 ///@brief 监测控制和数据采集设备的点位表路径信息输出参数, 查询结果 typedef struct tagNET_OUT_SCADA_POINT_LIST_INFO { DWORD dwSize; int nList; // 有效点位表路径信息个数 NET_SCADA_POINT_LIST stuList[MAX_SCADA_POINT_LIST_INFO_NUM];// 点位表路径信息 }NET_OUT_SCADA_POINT_LIST_INFO; ///@brief 监测控制和数据采集设备的点位表信息, (对应 DH_DEVSTATE_SCADA_POINT_LIST 命令) typedef struct tagNET_SCADA_POINT_LIST_INFO { DWORD dwSize; NET_IN_SCADA_POINT_LIST_INFO stuIn; // 查询条件 NET_OUT_SCADA_POINT_LIST_INFO stuOut; // 查询结果 }NET_SCADA_POINT_LIST_INFO; ///@brief 点位类型 typedef enum tagEM_NET_SCADA_POINT_TYPE { EM_NET_SCADA_POINT_TYPE_UNKNOWN = 0, // 未知 EM_NET_SCADA_POINT_TYPE_ALL, // 所有类型 EM_NET_SCADA_POINT_TYPE_YC, // 遥测 模拟量输入 EM_NET_SCADA_POINT_TYPE_YX, // 遥信 开关量输入 EM_NET_SCADA_POINT_TYPE_YT, // 遥调 模拟量输出 EM_NET_SCADA_POINT_TYPE_YK, // 遥控 开关量输出 } EM_NET_SCADA_POINT_TYPE; ///@brief SCADA监测点位查询条件 typedef struct tagNET_IN_SCADA_INFO { DWORD dwSize; EM_NET_SCADA_POINT_TYPE emPointType; // 待查询的点位类型 }NET_IN_SCADA_INFO; #define MAX_SCADA_YX_NUM 128 // 最大遥信个数 #define MAX_SCADA_YC_NUM 128 // 最大遥测个数 #define MAX_SCADA_POINT_INFO_NUM 8 // 最大点表个数 ///@brief 点表信息 typedef struct tagNET_SCADA_POINT_INFO { DWORD dwSize; char szDevName[DH_COMMON_STRING_64];// 设备名称 int nYX; // 有效遥信个数 unsigned int anYX[MAX_SCADA_YX_NUM]; // 遥信信息 int nYC; // 有效遥测个数 float afYC[MAX_SCADA_YC_NUM]; // 遥测信息 }NET_SCADA_POINT_INFO; ///@brief SCADA监测点位查询结果 typedef struct tagNET_OUT_SCADA_INFO { DWORD dwSize; int nPointInfoNum; // 有效点表个数 NET_SCADA_POINT_INFO stuPointInfo[MAX_SCADA_POINT_INFO_NUM];// 点表信息 }NET_OUT_SCADA_INFO; ///@brief 监测控制和数据采集设备的监测点位信息(对应 DH_DEVSTATE_SCADA_INFO 命令) typedef struct tagNET_SCADA_INFO { DWORD dwSize; NET_IN_SCADA_INFO stuIn; // 查询条件 NET_OUT_SCADA_INFO stuOut; // 查询结果 }NET_SCADA_INFO; ///@brief SCADA能力名称 typedef enum tagEM_NET_SCADA_CAPS_TYPE { EM_NET_SCADA_CAPS_TYPE_UNKNOWN, EM_NET_SCADA_CAPS_TYPE_ALL, // 所有类型 EM_NET_SCADA_CAPS_TYPE_DEV, // DevInfo } EM_NET_SCADA_CAPS_TYPE; ///@brief 监测控制和数据采集设备能力信息查询条件 typedef struct tagNET_IN_SCADA_CAPS { DWORD dwSize; EM_NET_SCADA_CAPS_TYPE emType; // 查询类型 } NET_IN_SCADA_CAPS; #define MAX_NET_SCADA_CAPS_TYPE (16) #define MAX_NET_SCADA_CAPS_NAME (16) ///@brief 监测控制和数据采集设备类型能力信息 typedef struct tagNET_OUT_SCADA_CAPS_ITEM { DWORD dwSize; char szDevType[DH_COMMON_STRING_32]; // 设备类型 int nValidName; // 有效设备名称个数 char szDevName[MAX_NET_SCADA_CAPS_NAME][DH_COMMON_STRING_32];// 设备名称, 唯一标示设备 } NET_OUT_SCADA_CAPS_ITEM; ///@brief 监测控制和数据采集设备能力信息查询结果 typedef struct tagNET_OUT_SCADA_CAPS { DWORD dwSize; int nValidType; // 有效设备类型个数 NET_OUT_SCADA_CAPS_ITEM stuItems[MAX_NET_SCADA_CAPS_TYPE]; // 最多16个类型 } NET_OUT_SCADA_CAPS; ///@brief 监测控制和数据采集设备能力信息(对应 DH_DEVSTATE_SCADA_CAPS 命令) typedef struct tagNET_SCADA_CAPS { DWORD dwSize; NET_IN_SCADA_CAPS stuIn; // 查询条件 NET_OUT_SCADA_CAPS stuOut; // 查询结果 } NET_SCADA_CAPS; ///@brief 点位信息(通过设备、传感器点位获取) typedef struct tagNET_SCADA_POINT_BY_ID_INFO { DWORD dwSize; EM_NET_SCADA_POINT_TYPE emType; // 点位类型 char szID[DH_COMMON_STRING_64]; // 监测点位ID int nMeasuredVal; // 点位类型为YX时有效 float fMeasureVal; // 点位类型为YC时有效 int nSetupVal; // 点位类型为YK时有效 float fSetupVal; // 点位类型为YT时有效 int nStatus; // 数据状态, -1:未知, 0:正常, 1:1级告警, 2:2级告警, 3:3级告警, 4:4级告警, 5:操作事件, 6:无效数据 NET_TIME stuTime; // 记录时间 char szPointName[32]; // 点位名称 }NET_SCADA_POINT_BY_ID_INFO; #define MAX_SCADA_ID_OF_SENSOR_NUM 128 // 最大检测点位ID个数 ///@brief 通过设备、获取监测点位信息(对应 NET_SCADA_INFO_BY_ID) typedef struct tagNET_SCADA_INFO_BY_ID { DWORD dwSize; char szSensorID[DH_COMMON_STRING_64];// 输入参数, 探测器ID int nIDs; // 输入参数, 有效点位ID个数 char szIDs[MAX_SCADA_ID_OF_SENSOR_NUM][DH_COMMON_STRING_64];// 输入参数, 点位ID BOOL bIsHandle; // 输入参数,返回数据是否经过处理(无效数据过滤等):"false":未处理,"true":处理 int nMaxCount; // 输入参数, pstuInfo对应数组个数 int nRetCount; // 输出参数, pstInfo实际返回有效个数, 可能大于用户分配个数nMaxCount NET_SCADA_POINT_BY_ID_INFO* pstuInfo; // 输入输出参数, 用户分配缓存,大小为sizeof(NET_SCADA_POINT_BY_ID_INFO)*nMaxCount }NET_SCADA_INFO_BY_ID; ///@brief 监测设备信息 typedef struct tagNET_SCADA_DEVICE_ID_INFO { char szDeviceID[DH_COMMON_STRING_64];// 设备id char szDevName[DH_COMMON_STRING_64]; // 设备名称, 和CFG_SCADA_DEV_INFO配置中的szDevName一致 char szDevCode[64]; // 设备类型码 int nSlot; // 虚拟槽位号,该字段的值对应AlarmSlotBond配置的数组下标,通常0表示模拟量通道,1表示开关量通道,大于1表示485或者232或者网络通道,具体见AlarmSlotBond配置 int nLevel; // 动环配置的探测器地址,一个通道接多个探测器,通过地址区分不同探测器 BYTE reserve[952]; }NET_SCADA_DEVICE_ID_INFO; ///@brief 获取当前主机所接入的外部设备ID typedef struct tagNET_SCADA_DEVICE_LIST { DWORD dwSize; int nMax; // 用户分配的结构体个数 int nRet; // 设备实际返回的有效结构体个数 NET_SCADA_DEVICE_ID_INFO* pstuDeviceIDInfo; // 监测设备信息,用户分配内存,大小为sizeof(NET_SCADA_DEVICE_ID_INFO)*nMax }NET_SCADA_DEVICE_LIST; ///@brief 监测点位信息 typedef struct tagNET_SCADA_NOTIFY_POINT_INFO { DWORD dwSize; char szDevName[DH_COMMON_STRING_64]; // 设备名称,与getInfo获取的名称一致 EM_NET_SCADA_POINT_TYPE emPointType; // 点位类型 char szPointName[DH_COMMON_STRING_64]; // 点位名,与点位表的取值一致 float fValue; // Type为YC时为浮点数 int nValue; // Type为YX时为整数 char szFSUID[DH_COMMON_STRING_64]; // 现场监控单元ID(Field Unit), 即设备本身 char szID[DH_COMMON_STRING_64]; // 点位ID char szSensorID[DH_COMMON_STRING_64]; // 探测器ID NET_TIME_EX stuCollectTime; // 采集时间 } NET_SCADA_NOTIFY_POINT_INFO; ///@brief 监测点位信息列表 typedef struct tagNET_SCADA_NOTIFY_POINT_INFO_LIST { DWORD dwSize; int nList; // 监测点位信息个数 NET_SCADA_NOTIFY_POINT_INFO stuList[MAX_SCADA_POINT_LIST_INFO_NUM]; // 监测点位信息 } NET_SCADA_NOTIFY_POINT_INFO_LIST; ///@brief 订阅监测点位信息回调函数原型 typedef void (CALLBACK *fSCADAAttachInfoCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_SCADA_NOTIFY_POINT_INFO_LIST *pInfo, int nBufLen, LDWORD dwUser); ///@brief CLIENT_SCADAAttachInfo()接口输入参数 typedef struct tagNET_IN_SCADA_ATTACH_INFO { DWORD dwSize; fSCADAAttachInfoCallBack cbCallBack; // 数据回调函数 EM_NET_SCADA_POINT_TYPE emPointType; // 点位类型 LDWORD dwUser; // 用户定义参数 } NET_IN_SCADA_ATTACH_INFO; ///@brief CLIENT_SCADAAttachInfo()接口输出参数 typedef struct tagNET_OUT_SCADA_ATTACH_INFO { DWORD dwSize; } NET_OUT_SCADA_ATTACH_INFO; ////////////////////////////////////////////////////////////////////// #define MAX_SCADA_ID_NUM 1024 // 监测点位id的最大个数 ///@brief 点位阈值信息 typedef struct tagNET_SCADA_ID_THRESHOLD_INFO { DWORD dwSize; EM_NET_SCADA_POINT_TYPE emPointType; // 点位类型 char szID[DH_COMMON_STRING_32]; // 点位ID float fThreshold; // 告警门限 float fAbsoluteValue; // 绝对阈值 float fRelativeValue; // 相对阈值 int nStatus; // 数据状态, -1:未知, 0:正常, 1:1级告警, 2:2级告警, 3:3级告警, 4:4级告警, 5:操作事件, 6:无效数据 }NET_SCADA_ID_THRESHOLD_INFO; ///@brief CLIENT_SCADAGetThreshold输入参数 typedef struct tagNET_IN_SCADA_GET_THRESHOLD { DWORD dwSize; char szDeviceID[DH_COMMON_STRING_64]; // 外接设备id int nIDs; // 有效监测点位个数 char szIDs[MAX_SCADA_ID_NUM][DH_COMMON_STRING_32]; // 待获取的监测点位ID }NET_IN_SCADA_GET_THRESHOLD; ///@brief CLIENT_SCADAGetThreshold输出参数 typedef struct tagNET_OUT_SCADA_GET_THRESHOLD { DWORD dwSize; int nMax; // 用户分配的点位阈值信息个数 int nRet; // 实际返回的点位阈值信息 NET_SCADA_ID_THRESHOLD_INFO* pstuThresholdInfo; // 点位阈值信息, 用户分配内存,大小为sizeof(NET_SCADA_ID_THRESHOLD_INFO)*nMax }NET_OUT_SCADA_GET_THRESHOLD; ////////////////////////////////////////////////////////////////////// ///@brief CLIENT_SCADASetThreshold输入参数 typedef struct tagNET_IN_SCADA_SET_THRESHOLD { DWORD dwSize; char szDeviceID[DH_COMMON_STRING_64];// 外接设备id int nMax; // 用户分配的点位阈值信息个数 NET_SCADA_ID_THRESHOLD_INFO* pstuThresholdInfo; // 点位阈值信息, 用户分配内存,大小为sizeof(NET_SCADA_ID_THRESHOLD_INFO)*nMax }NET_IN_SCADA_SET_THRESHOLD; ///@brief CLIENT_SCADASetThreshold输出参数 typedef struct tagNET_OUT_SCADA_SET_THRESHOLD { DWORD dwSize; int nSuccess; // 有效的存放设置阈值成功的id个数 char szSuccessID[MAX_SCADA_ID_NUM][DH_COMMON_STRING_32]; // 设置阈值成功的id,用户分配内存 int nFail; // 用户分配的存放设置阈值失败的id个数 char szFailID[MAX_SCADA_ID_NUM][DH_COMMON_STRING_32]; // 设置阈值失败的id, 用户分配内存 }NET_OUT_SCADA_SET_THRESHOLD; ////////////////////////////////////////////////////////////////////// ///@brief CLIENT_StartFindSCADA输入参数 typedef struct tagNET_IN_SCADA_START_FIND { DWORD dwSize; NET_TIME stuStartTime; // 开始时间, 必填 BOOL bEndTime; // 是否限制结束时间, TRUE: 必填stuEndTime, FLASE: 不限制结束时间 NET_TIME stuEndTime; // 结束时间 char szDeviceID[DH_COMMON_STRING_64];// DeviceID, 必填 char szID[DH_COMMON_STRING_32]; // 监测点位ID, 必填 int nIDsNum; // 监测点ID数组长度 char szIDs[32][DH_COMMON_STRING_32]; // 监控点ID号数组,SDT离网供电扩展字段 }NET_IN_SCADA_START_FIND; ///@brief CLIENT_StartFindSCADA输出参数 typedef struct tagNET_OUT_SCADA_START_FIND { DWORD dwSize; DWORD dwTotalCount; // 符合查询条件的总数 }NET_OUT_SCADA_START_FIND; ///@brief CLIENT_DoFindSCADA输入参数 typedef struct tagNET_IN_SCADA_DO_FIND { DWORD dwSize; int nStartNo; // 起始序号 int nCount; // 本次欲获得结果的个数 }NET_IN_SCADA_DO_FIND; ///@brief CLIENT_DoFindSCADA输出参数 typedef struct tagNET_OUT_SCADA_DO_FIND { DWORD dwSize; int nRetNum; // 本次查询到的个数 NET_SCADA_POINT_BY_ID_INFO* pstuInfo; // 查询结果, 用户分配内存,大小为sizeof(NET_SCADA_POINT_BY_ID_INFO)*nMaxNum int nMaxNum; // 用户分配内存的个数 }NET_OUT_SCADA_DO_FIND; ///@brief 监测点位报警信息 typedef struct tagNET_SCADA_NOTIFY_POINT_ALARM_INFO { DWORD dwSize; char szDevID[DH_COMMON_STRING_16]; // 设备ID char szPointID[DH_COMMON_STRING_128]; // 点位ID BOOL bAlarmFlag; // 报警标志 NET_TIME stuAlarmTime; // 报警时间 int nAlarmLevel; // 报警级别(0~6) int nSerialNo; // 报警编号,同一个告警的开始和结束的编号是相同的。 char szAlarmDesc[DH_COMMON_STRING_128]; // 报警描述 char szSignalName[64]; // 点位名称 } NET_SCADA_NOTIFY_POINT_ALARM_INFO; ///@brief 监测点位报警信息 typedef struct tagNET_SCADA_NOTIFY_POINT_ALARM_INFO_EX { float fEventValue; // 产生告警时,关联点位的遥测值 char szResvered[1020]; // 保留字节 } NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX; ///@brief 监测点位报警信息列表 typedef struct tagNET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST { DWORD dwSize; int nList; // 监测点位报警信息个数 NET_SCADA_NOTIFY_POINT_ALARM_INFO stuList[MAX_SCADA_POINT_LIST_ALARM_INFO_NUM]; // 监测点位报警信息 NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX stuListEx[256]; // 监测点位报警信息 } NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST; ///@brief 定义监测点报警信息回调函数原型 typedef void (CALLBACK *fSCADAAlarmAttachInfoCallBack)(LLONG lAttachHandle, NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST *pInfo, int nBufLen, LDWORD dwUser); ///@brief CLIENT_SCADAAlarmAttachInfo()接口输入参数 typedef struct tagNET_IN_SCADA_ALARM_ATTACH_INFO { DWORD dwSize; fSCADAAlarmAttachInfoCallBack cbCallBack; // 数据回调函数 LDWORD dwUser; // 用户定义参数 } NET_IN_SCADA_ALARM_ATTACH_INFO; ///@brief CLIENT_SCADAAlarmAttachInfo()接口输出参数 typedef struct tagNET_OUT_SCADA_ALARM_ATTACH_INFO { DWORD dwSize; } NET_OUT_SCADA_ALARM_ATTACH_INFO; ///@brief 监控点值设置参数 typedef struct tagNET_SCADA_POINT_SET_INFO { DWORD dwSize; EM_NET_SCADA_POINT_TYPE emType; // 监控点位类型,取YK、YT两种类型 char szPointID[DH_COMMON_STRING_64]; // 监控点位ID int nSetupVal; // 点位类型为YK时有效 float fSetupVal; // 点位类型为YT时有效 } NET_SCADA_POINT_SET_INFO; ///@brief 监控点值设置参数列表,CLIENT_SetSCADAInfo()接口输入参数 typedef struct tagNET_IN_SCADA_POINT_SET_INFO_LIST { DWORD dwSize; char szDevID[DH_COMMON_STRING_32]; // 设备ID int nPointNum; // 监控点个数 NET_SCADA_POINT_SET_INFO stuList[MAX_SCADA_ID_OF_SENSOR_NUM]; // 监控点列表信息 } NET_IN_SCADA_POINT_SET_INFO_LIST; ///@brief 设置监控点值返回的结果列表,CLIENT_SetSCADAInfo()接口输出参数 typedef struct tagNET_OUT_SCADA_POINT_SET_INFO_LIST { DWORD dwSize; int nSuccess; // 有效的控制或调节成功的ID个数 char szSuccessID[MAX_SCADA_ID_OF_SENSOR_NUM][DH_COMMON_STRING_32]; // 控制或调节成功的ID的列表 int nFail; // 有效的控制或调节失败的ID个数 char szFailID[MAX_SCADA_ID_OF_SENSOR_NUM][DH_COMMON_STRING_32]; // 控制或调节失败的ID的列表 } NET_OUT_SCADA_POINT_SET_INFO_LIST; ///@brief 获取当前子系统启用状态(对应DH_DEVSTATE_GET_ALARM_SUBSYSTEM_ACTIVATESTATUS命令) typedef struct tagNET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES { DWORD dwSize; int nChannelId; // 子系统号 BOOL bActive; // 子系统启用状态, TRUE 表示启用,FALSE表示不启用 }NET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES; ///@brief 报警子系统激活设置参数(对应DH_CTRL_ALARM_SUBSYSTEM_ACTIVE_SET命令) typedef struct tagNET_CTRL_ALARM_SUBSYSTEM_SETACTIVE { DWORD dwSize; int nChannelId; // 子系统号 BOOL bActive; // 子系统启用状态,TRUE 表示启用,FALSE表示不启用 }NET_CTRL_ALARM_SUBSYSTEM_SETACTIVE; ///@brief 禁止开闸参数(对应 DH_CTRL_FORBID_OPEN_STROBE) typedef struct tagNET_CTRL_FORBID_OPEN_STROBE { DWORD dwSize; int nChannelID; // 通道号 int nTime; // 禁止开闸的持续时间,单位:s,即在此操作之后的对应时间内不允许设备开闸 }NET_CTRL_FORBID_OPEN_STROBE; #define MAX_PLATENUMBER_LEN 64 // 最大车牌号码长度 ///@brief 开闸类型 typedef enum tagEM_OPEN_STROBE_TYPE { EM_OPEN_STROBE_TYPE_UNKNOWN, // 未知 EM_OPEN_STROBE_TYPE_NORMAL, // 正常开闸(默认) EM_OPEN_STROBE_TYPE_TEST, // 测试手动开闸(用于施工前期) EM_OPEN_STROBE_TYPE_MANUAL, // 手动开闸 }EM_OPEN_STROBE_TYPE; ///@brief 开启道闸参数(对应DH_CTRL_OPEN_STROBE命令) typedef struct tagNET_CTRL_OPEN_STROBE { DWORD dwSize; int nChannelId; // 通道号, nChannelId为-1时表示未使用通道号, 表示单通道设备 char szPlateNumber[MAX_PLATENUMBER_LEN]; // 车牌号码 EM_OPEN_STROBE_TYPE emOpenType; // 开闸类型 int nLocation; // 开闸车道号 }NET_CTRL_OPEN_STROBE; ///@brief 异步开启道闸回调函数 // nError = 0 表示查询成功; // nError = 1 表示内存申请失败; // nError = 2 表示超时, 即超时时间内设备未返回信息 // nError = 3 表示设备返回数据校验不通过; // nError = 4 发送查询请求失败 typedef void (CALLBACK *fOpenStrobeCallBack)(LLONG lLoginID, NET_CTRL_OPEN_STROBE stuOpenStrobe, int nError, LDWORD dwUser); ///@brief 异步开启道闸参数(对应DH_CTRL_OPEN_STROBE命令) typedef struct tagNET_CTRL_OPEN_STROBE_ASYN { DWORD dwSize; NET_CTRL_OPEN_STROBE stuOpenStrobe; // 开启道闸参数 fOpenStrobeCallBack cbCallBack; // 数据回调函数 LDWORD dwUser; // 用户定义参数 int nWaitTime; // 超时时间 } NET_CTRL_OPEN_STROBE_ASYN; ///@brief 关闭道闸参数(对应DH_CTRL_CLOSE_STROBE命令) typedef struct tagNET_CTRL_CLOSE_STROBE { DWORD dwSize; int nChannelId; // 通道号 int nLocation; // 关闸车道号 }NET_CTRL_CLOSE_STROBE; ///@brief 强制产生违章参数(对应DH_CTRL_FORCE_BREAKING命令) typedef struct tagNET_CTRL_FORCE_BREAKING { DWORD dwSize; int nChannelId; // 通道号 int nLaneMask; // 车道掩码位 DWORD dwBreakingType; // 违章类型, 详见dhnetsdk.h中"智能分析事件类型" BOOL bLastRecognized; // 是否抓拍最近识别到的物体 }NET_CTRL_FORCE_BREAKING; ///@brief 回放拒绝接听参数(对应DH_CTRL_TALKING_REFUSE命令) typedef struct tagNET_CTRL_TALKING_REFUSE { DWORD dwSize; int nChannelID; // 对讲通道号 }NET_CTRL_TALKING_REFUSE; ///@brief 远程对讲控制类型 typedef enum tagEM_REMOTETALK_CTRL_STATE { EM_REMOTETALK_CTRL_STATE_UNKNOWN = 0, // 未定义类型 EM_REMOTETALK_CTRL_STATE_INVITE, // 设备向平台发起对讲 }EM_REMOTETALK_CTRL_STATE; ///@brief 远程对讲控制参数 typedef struct tagNET_CTRL_REMOTETALK_PARAM { DWORD dwSize; // 本结构体大小 EM_REMOTETALK_CTRL_STATE emAction; // 远程对讲控制的操作类型 }NET_CTRL_REMOTETALK_PARAM; ///@brief 车位预定状态 typedef enum tagEM_NET_ORDER_STATE { EM_NET_ORDER_STATE_UNKNOWN, EM_NET_ORDER_STATE_FREE, // 空闲Free EM_NET_ORDER_STATE_ORDERED, // 预定Ordered }EM_NET_ORDER_STATE; ///@brief 车位预定状态信息 typedef struct tagNET_ORDER_STATE_INFO { DWORD dwSize; unsigned int nLane; // 车位号 EM_NET_ORDER_STATE emOrderState; // 预定情况 }NET_ORDER_STATE_INFO; ///@brief 设置车位预定状态参数(对应DH_CTRL_SET_ORDER_STATE命令) typedef struct tagNET_CTRL_SET_ORDER_STATE { DWORD dwSize; NET_ORDER_STATE_INFO* pOrderStateInfo; // 车位预定信息,用户分配空间,大小为sizeof(NET_ORDER_STATE_INFO)*nStateCount unsigned int nStateCount; // 有效预定个数 }NET_CTRL_SET_ORDER_STATE; ///@brief 停车场出入口控制器LED滚动屏幕字幕滚动速度 typedef enum tagNET_ECK_LED_SPEED_TYPE { NET_ECK_LED_SPEED_UNKNOWN = 0, NET_ECK_LED_SPEED_LOW, // 慢 NET_ECK_LED_SPEED_NORMAL, // 正常 NET_ECK_LED_SPEED_HIGH, // 快 }NET_ECK_LED_SPEED_TYPE; ///@brief 停车场出入口控制器LED设置 参数DH_CTRL_ECK_LED_SET typedef struct tagNET_CTRL_ECK_LED_SET_PARAM { DWORD dwSize; NET_ECK_LED_SPEED_TYPE emLEDSpeed; // 字幕滚动速度 int nCount; // 有效显示次数, 范围0-255, 0表示永久 char szCustomData[DH_COMMON_STRING_512];// LED滚动屏初始自定义字符, 0-256字节 }NET_CTRL_ECK_LED_SET_PARAM; ///@brief 屏幕文本类型 typedef enum tagEM_SCREEN_TEXT_TYPE { EM_SCREEN_TEXT_TYPE_UNKNOWN = -1, // 未知 EM_SCREEN_TEXT_TYPE_ORDINARY, // 普通 EM_SCREEN_TEXT_TYPE_LOCAL_TIME, // 本地时间 EM_SCREEN_TEXT_TYPE_QR_CODE, // 二维码 EM_SCREEN_TEXT_TYPE_RESOURCE, // 资源文件 }EM_SCREEN_TEXT_TYPE; ///@brief 屏幕文本颜色 typedef enum tagEM_SCREEN_TEXT_COLOR { EM_SCREEN_TEXT_COLOR_UNKNOWN = -1, // 未知 EM_SCREEN_TEXT_COLOR_GREEN, // 绿色 EM_SCREEN_TEXT_COLOR_RED, // 红色 EM_SCREEN_TEXT_COLOR_YELLOW, // 黄色 EM_SCREEN_TEXT_COLOR_WHITE, // 白色 }EM_SCREEN_TEXT_COLOR; ///@brief 屏幕文本滚动模式 typedef enum tagEM_SCREEN_TEXT_ROLL_MODE { EM_SCREEN_TEXT_ROLL_MODE_UNKNOWN = -1, // 未知 EM_SCREEN_TEXT_ROLL_MODE_NO, // 不滚动 EM_SCREEN_TEXT_ROLL_MODE_LEFT_RIGHT, // 滚动 (横屏左右滚动,竖屏上下滚动) EM_SCREEN_TEXT_ROLL_MODE_UP_DOWN, // 翻页(横屏上下翻页, 竖屏左右翻页) EM_SCREEN_TEXT_ROLL_MODE_CUT_OUT, // 截取(超出部分直接截断显示) }EM_SCREEN_TEXT_ROLL_MODE; ///@brief 播报文本类型 typedef enum tagEM_BROADCAST_TEXT_TYPE { EM_BROADCAST_TEXT_TYPE_UNKNOWN = -1, // 未知 EM_BROADCAST_TEXT_TYPE_ORDINARY, // 普通 EM_BROADCAST_TEXT_TYPE_PLATE_NUMBER, // 车牌号 EM_BROADCAST_TEXT_TYPE_TIME, // 时间 EM_BROADCAST_TEXT_TYPE_NUMBER_STRING, // 数字字符串 }EM_BROADCAST_TEXT_TYPE; ///@brief 屏幕信息 typedef struct tagNET_SCREEN_SHOW_INFO { UINT nScreenNo; // 屏幕编号 char szText[256]; // 显示文本(文本类型为EM_SCREEN_TEXT_TYPE_LOCAL_TIME时的时间格式, // %Y 年 // %M 月 // %D 日 // %H 时(24小时机制) // %h 时(12小时) // %m 分 // %S 秒 // %W 星期 // %T 显示上午或下午 // %X 表示显示普通文本内容 EM_SCREEN_TEXT_TYPE emTextType; // 文本类型 EM_SCREEN_TEXT_COLOR emTextColor; // 文本颜色 EM_SCREEN_TEXT_ROLL_MODE emTextRollMode; // 文本滚动模式 UINT nRollSpeed; // 文本滚动速度由慢到快分为1~5 int nDisplayEffect; // 显示效果, 当emTextRollMode为EM_SCREEN_TEXT_ROLL_MODE_NO/EM_SCREEN_TEXT_ROLL_MODE_LEFT_RIGHT时, 取值为0:左移, 1:右移, 2、上移, 3、下移; // 当emTextRollMode为EM_SCREEN_TEXT_ROLL_MODE_UP_DOWN时, 取值为0:上翻, 1:下翻; // 当emTextRollMode为EM_SCREEN_TEXT_ROLL_MODE_CUT_OUT时, 取值为0:左对齐, 1:居中, 2:右对齐 BYTE byReserved[248]; // 保留字节 }NET_SCREEN_SHOW_INFO; ///@brief 播报信息 typedef struct tagNET_BROADCAST_INFO { char szText[256]; // 语音文本 EM_BROADCAST_TEXT_TYPE emTextType; // 文本类型 BYTE byReserved[252]; // 保留字节 }NET_BROADCAST_INFO; ///@brief 设置停车控制信息(点阵屏和语音播报的控制) CLIENT_ControlDeviceEx入参(对应 DH_CTRL_SET_PARK_CONTROL_INFO ) typedef struct tagNET_IN_SET_PARK_CONTROL_INFO { DWORD dwSize; // 结构体大小 int nScreenShowInfoNum; // 屏幕信息个数 NET_SCREEN_SHOW_INFO stuScreenShowInfo[16]; // 屏幕信息 BYTE byReserved[4]; // 字节补齐 int nBroadcastInfoNum; // 播报信息个数 NET_BROADCAST_INFO stuBroadcastInfo[16]; // 播报信息 }NET_IN_SET_PARK_CONTROL_INFO; ///@brief 设置停车控制信息(点阵屏和语音播报的控制) CLIENT_ControlDeviceEx出参(对应 DH_CTRL_SET_PARK_CONTROL_INFO) typedef struct tagNET_OUT_SET_PARK_CONTROL_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PARK_CONTROL_INFO; ///@brief 修改图片广告文件的停留时间CLIENT_ControlDeviceEx入参(对应 DH_CTRL_CHANGE_SUSTAIN ) typedef struct tagNET_IN_CTRL_CHANGE_SUSTAIN { DWORD dwSize; // 结构体大小 int nSustain; // 每张图片的停留时间 }NET_IN_CTRL_CHANGE_SUSTAIN; ///@brief 修改图片广告文件的停留时间 CLIENT_ControlDeviceEx出参(对应 DH_CTRL_CHANGE_SUSTAIN) typedef struct tagNET_OUT_CTRL_CHANGE_SUSTAIN { DWORD dwSize; // 结构体大小 }NET_OUT_CTRL_CHANGE_SUSTAIN; ///@brief 灯光类型 typedef enum tagEM_DEVVIDEOINPUT_LIGHT_TYPE { EM_DEVVIDEOINPUT_LIGHTN_TYPE_UNKNOWN, // 未知 EM_DEVVIDEOINPUT_LIGHTN_TYPE_WHITELIGHT, // 白光灯 }EM_DEVVIDEOINPUT_LIGHT_TYPE; ///@brief 操作类型 typedef enum tagEM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE { EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE_UNKNOWN, // 未知 EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE_ON, // 长亮 EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE_OFF, // 关闭 EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE_FLICK, // 闪烁 }EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE; ///@brief 控制灯光CLIENT_ControlDeviceEx入参(对应 DH_CTRL_DEVVIDEOINPUT_LIGHT ) typedef struct tagNET_IN_CTRL_DEVVIDEOINPUT_LIGHT { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 EM_DEVVIDEOINPUT_LIGHT_TYPE emLightType; // 灯光类型 EM_DEVVIDEOINPUT_LIGHT_OPERATION_TYPE emOperateType; // 操作类型 }NET_IN_CTRL_DEVVIDEOINPUT_LIGHT; ///@brief 控制灯光 CLIENT_ControlDeviceEx出参(对应 DH_CTRL_DEVVIDEOINPUT_LIGHT) typedef struct tagNET_OUT_CTRL_DEVVIDEOINPUT_LIGHT { DWORD dwSize; // 结构体大小 }NET_OUT_CTRL_DEVVIDEOINPUT_LIGHT; ///@brief 远程实时视频源 typedef struct tagNET_SNAP_TASK_REMOTE_STREAM { char szIP[64]; // 设备IP地址或域名 UINT nPort; // 端口号 char szUserName[64]; // 用户名 char szPassword[64]; // 密码 char szProtocol[32]; // 视频流协议. 目前支持协议类型: "Private", "RTSP", "Onvif", "HIKVISION" char szUrl[256]; // URL地址, Protocol为"RTSP"时有效 char szReserved[540]; // 保留字节 } NET_SNAP_TASK_REMOTE_STREAM; ///@brief 抓图格式参数 typedef struct tagNET_SNAP_TASK_SNAP_PARAM { UINT nWidth; // 抓图宽度 UINT nHeight; // 抓图高度 UINT nFormat; // 抓图格式, 0 : jpg, 1 : png char szReserved[244]; // 保留字节 } NET_SNAP_TASK_SNAP_PARAM; ///@brief 任务列表 typedef struct tagNET_SNAP_TASK_INFO_LIST { char szCameraID[64]; // 相机ID, 由客户端指定, 用于标示视频源信息 NET_SNAP_TASK_REMOTE_STREAM stuRemoteStream; // 远程实时视频源 NET_SNAP_TASK_SNAP_PARAM stuSnapParam; // 抓图格式参数 } NET_SNAP_TASK_INFO_LIST; ///@brief 下发抓图任务 CLIENT_ControlDeviceEx入参(对应 DH_CTRL_SNAP_TASK_ADD ) typedef struct tagNET_IN_CTRL_SNAP_TASK_ADD { DWORD dwSize; // 结构体大小 int nTaskNum; // 任务个数 NET_SNAP_TASK_INFO_LIST *pstuInfoList; // 任务列表, 由用户申请内存, 大小为sizeof(NET_SNAP_TASK_INFO_LIST)*nTaskNum }NET_IN_CTRL_SNAP_TASK_ADD; ///@brief 下发抓图任务 CLIENT_ControlDeviceEx出参(对应 DH_CTRL_SNAP_TASK_ADD) typedef struct tagNET_OUT_CTRL_SNAP_TASK_ADD { DWORD dwSize; // 结构体大小 UINT nTaskId; // 任务ID号 }NET_OUT_CTRL_SNAP_TASK_ADD; #define NET_MAX_ECK_PANEL_NUM 12 // 显示内容的最大数量 ///@brief 显示内容的类型 typedef enum tagEM_NET_ECK_PANEL_TYPE { EM_NET_ECK_PANEL_TYPE_INTCHAR, // 整数、字母、空格 EM_NET_ECK_PANEL_TYPE_IMAGE, // 图形 EM_NET_ECK_PANEL_TYPE_ARROWS, // 箭头 }EM_NET_ECK_PANEL_TYPE; ///@brief 是否加粗 typedef enum tagEM_NET_ECK_PANEL_ISBOLD { EM_NET_ECK_PANEL_ISBOLD_FALSE, // 不加粗 EM_NET_ECK_PANEL_ISBOLD_TRUE, // 加粗 }EM_NET_ECK_PANEL_ISBOLD; ///@brief 显示颜色 typedef enum tagEM_NET_ECK_PANEL_COLOR { EM_NET_ECK_PANEL_COLOR_UNKNOWN, // 未知 EM_NET_ECK_PANEL_COLOR_RED, // 红色 EM_NET_ECK_PANEL_COLOR_GREEN, // 绿色 EM_NET_ECK_PANEL_COLOR_YELLOW, // 黄色 }EM_NET_ECK_PANEL_COLOR; ///@brief 箭头指向,箭头专用 typedef enum tagEM_NET_ECK_PANEL_DIRECTION { EM_NET_ECK_PANEL_DIRECTION_UNKNOWN, // 未知 EM_NET_ECK_PANEL_DIRECTION_LEFT, // 左 EM_NET_ECK_PANEL_DIRECTION_UP, // 上 EM_NET_ECK_PANEL_DIRECTION_RIGHT, // 右 }EM_NET_ECK_PANEL_DIRECTION; ///@brief 图标 typedef enum tagEM_NET_ECK_PANEL_ICON { EM_NET_ECK_PANEL_ICON_UNKNOWN, // 未知 EM_NET_ECK_PANEL_ICON_CLOSE, // 禁止 EM_NET_ECK_PANEL_ICON_CLOSECUSTOM, // 禁止 }EM_NET_ECK_PANEL_ICON; ///@brief 显示内容 typedef struct tagNET_ECK_PANEL_CONTENT { EM_NET_ECK_PANEL_TYPE emType; // 显示内容的类型,必选 EM_NET_ECK_PANEL_ISBOLD emBold; // 是否加粗,必选 EM_NET_ECK_PANEL_COLOR emColor; // 显示颜色,必选 EM_NET_ECK_PANEL_DIRECTION emDirection; // 箭头指向,箭头专用,可选,Type为2时有效 EM_NET_ECK_PANEL_ICON emIcon; // 图标,图标专用,可选,Type为1时有效 WORD nText; // 文本,当前只支持一个字符,限Unicode编码,字符限为:数字、字母、空格(不支持汉字),可选,Type为0时有效 BYTE byReserved[1022]; // 保留字节 }NET_ECK_PANEL_CONTENT; ///@brief 设置诱导屏显示内容(DH_CTRL_ECK_GUIDINGPANEL_CONTENT) typedef struct tagNET_CTRL_ECK_GUIDINGPANEL_CONTENT { DWORD dwSize; // 结构体大小 int nPanelNum; // 显示内容数量 NET_ECK_PANEL_CONTENT stuContentInfo[NET_MAX_ECK_PANEL_NUM];// 显示内容 }NET_CTRL_ECK_GUIDINGPANEL_CONTENT; ///@brief 智能停车系统出入口机IC卡用户类型 typedef enum tagNET_ECK_IC_CARD_USER_TYPE { NET_ECK_IC_CARD_USER_UNKNOWN, NET_ECK_IC_CARD_USER_ALL, // 全部类型 NET_ECK_IC_CARD_USER_TEMP, // 临时用户 NET_ECK_IC_CARD_USER_LONG, // 长期用户 NET_ECK_IC_CARD_USER_ADMIN, // 管理员 NET_ECK_IC_CARD_USER_BLACK_LIST, // 禁止名单 }NET_ECK_IC_CARD_USER_TYPE; ///@brief 智能停车系统出入口机异常过车记录类型 typedef enum tagNET_ECK_CAR_PASS_FLAG { NET_ECK_CAR_PASS_FLAG_NORMAL = 0, // 正常 NET_ECK_CAR_PASS_FLAG_ABNORMAL = 1, // 异常 NET_ECK_CAR_PASS_FLAG_ALL, // 全部 } NET_ECK_CAR_PASS_FLAG; ///@brief 智能停车系统出入口机IC卡信息 typedef struct tagNET_ECK_IC_CARD { DWORD dwSize; DWORD dwCard; // 卡号 NET_ECK_IC_CARD_USER_TYPE emUserType; // 用户类型 }NET_ECK_IC_CARD; #define NET_MAX_ECK_IC_CARD_IMPORT_NUM 50 // 智能停车系统出入口机最大可导入IC卡的数目 ///@brief 智能停车系统出入口机IC卡信息导入 参数DH_CTRL_ECK_IC_CARD_IMPORT typedef struct tagNET_CTRL_ECK_IC_CARD_IMPORT_PARAM { DWORD dwSize; int nCardNum; // IC卡数量 NET_ECK_IC_CARD stuCardInfo[NET_MAX_ECK_IC_CARD_IMPORT_NUM];// IC卡信息 }NET_CTRL_ECK_IC_CARD_IMPORT_PARAM; ///@brief 智能停车系统出入口机IC卡信息同步指令 参数 DH_CTRL_ECK_SYNC_IC_CARD typedef struct tagNET_CTRL_ECK_SYNC_IC_CARD_PARAM { DWORD dwSize; int nCount; // 客户端IC卡信息的数量 }NET_CTRL_ECK_SYNC_IC_CARD_PARAM; #define ECK_SCREEN_NUM_MAX (8) // 智能停车系统出入口机最大屏数量 ///@brief 智能停车系统出入口机设置车位信息 参数 DH_CTRL_ECK_SET_PARK_INFO typedef struct tagNET_CTRL_ECK_SET_PARK_INFO_PARAM { DWORD dwSize; int nScreenNum; // 屏数量, 不超过 ECK_SCREEN_NUM_MAX int nScreenIndex[ECK_SCREEN_NUM_MAX]; // 屏号, 每个元素表示屏序号 int nFreeParkNum[ECK_SCREEN_NUM_MAX]; // 对应屏管理下的空余车位数 // 长度和下标与nScreenIndex一致,每个元素表示对应屏号下的空余车位 }NET_CTRL_ECK_SET_PARK_INFO_PARAM; ///@brief 信息采集(对应DH_CTRL_CAPTURE_FINGER_PRINT命令) typedef struct tagNET_CTRL_CAPTURE_FINGER_PRINT { DWORD dwSize; int nChannelID; // 门禁序号(从0开始) char szReaderID[DH_COMMON_STRING_32]; // 读卡器ID char szUserID[12]; // 用户ID(智能楼宇需求,可选) }NET_CTRL_CAPTURE_FINGER_PRINT; ///@brief 门禁控制密码类型 typedef enum tagEM_ACCESS_PASSWORD_TYPE { EM_ACCESS_PASSWORD_OPENDOOR=1, // 开门密码 EM_ACCESS_PASSWORD_ALARM, // 防劫持报警密码 }EM_ACCESS_PASSWORD_TYPE; ///@brief 门禁控制-重置密码(对应CLIENT_ControlDevice接口的 DH_CTRL_ACCESS_RESET_PASSWORD 命令) typedef struct tagNET_CTRL_ACCESS_RESET_PASSWORD { DWORD dwSize; // 结构体大小 int nChannelID; // 门禁序号(从0开始) EM_ACCESS_PASSWORD_TYPE emType; // 密码类型 char szUserID[MAX_COMMON_STRING_32]; // 用户ID char szNewPassword[MAX_COMMON_STRING_32]; // 新密码 }NET_CTRL_ACCESS_RESET_PASSWORD; ///@brief 呼叫电梯命令 typedef enum tagEM_CALLLIFT_CMD { EM_CALLLIFT_CMD_UNKNOWN =-1, // 未知 EM_CALLLIFT_CMD_ANY_FLOOR = 0, // 呼叫电梯到某个楼层,并开放其它任何楼层数 EM_CALLLIFT_CMD_DEST_FLOOR, // 呼叫电梯到某个楼层,用户进去后只能按目标楼层 EM_CALLLIFT_CMD_CARD_UP, // 呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯上行 EM_CALLLIFT_CMD_AUTO_FLOOR, // 呼叫电梯到某个楼层,用户进去不用按钮,电梯会自动运行到目标楼层 EM_CALLLIFT_CMD_CARD_DOWN, // 呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯下行 }EM_CALLLIFT_CMD; ///@brief 呼叫电梯方式 typedef enum tagEM_CALLLIFT_ACTION { EM_CALLLIFT_ACTION_UNKNOWN =-1, // 未知 EM_CALLLIFT_ACTION_USER_UNLOCK_CALL = 0, // 用户通过对讲分机打开单元门锁,同时呼叫电梯到单元门处 EM_CALLLIFT_ACTION_USER_DIRECT_CALL, // 用户呼叫电梯到用户所在楼层 EM_CALLLIFT_ACTION_USER_REDIRECT_CALL, // 用户呼叫电梯经由某层到某层 EM_CALLLIFT_ACTION_DIRECT_UNLOCK_CALL, // 单元门开锁,同时呼叫电梯到单元门处 }EM_CALLLIFT_ACTION; ///@brief 门禁控制-呼梯(对应CLIENT_ControlDevice接口的 DH_CTRL_ACCESS_CALL_LIFT 命令) typedef struct tagNET_CTRL_ACCESS_CALL_LIFT { DWORD dwSize; int nChannelID; // 通道号 char szSrcFloor[MAX_COMMON_STRING_16]; // 起始地址(楼层+房间号) char szDestFloor[MAX_COMMON_STRING_16]; // 目标地址(楼层+房间号) EM_CALLLIFT_CMD emCallLiftCmd; // 呼叫电梯命令 EM_CALLLIFT_ACTION emCallLiftAction; // 呼叫电梯的方式 char szUserID[16]; // 用户ID int nCallLiftCount; // 呼叫电梯个数 int nCallLiftNo[16]; // 呼叫电梯号 EM_LIFT_CALLER_TYPE emLiftCaller; // 呼梯类型 }NET_CTRL_ACCESS_CALL_LIFT; ///@brief 调节灯光亮度(对应CLIENT_ControlDevice接口的 DH_CTRL_ADJUST_BRIGHT 命令) typedef struct tagNET_CTRL_ADJUST_BRIGHT { DWORD dwSize; // 结构体大小 int nLevel; // 改变的亮度值 } NET_CTRL_ADJUST_BRIGHT; ///@brief 清除日志(支持二次认证和鉴权, 对应CLIENT_ControlDevice接口的 DH_CTRL_CLEARLOG_EX 命令) typedef struct tagNET_CTRL_CLEARLOG_EX { DWORD dwSize; // 结构体大小 } NET_CTRL_CLEARLOG_EX; ///@brief 挂断视频电话(对应 DH_CTRL_VTP_DISCONNECT 命令) typedef struct tagNET_CTRL_VTP_DISCONNECT { DWORD dwSize; const char* szTargetID; // 待转发的设备ID, 为NULL表示不转发 EM_NET_VTP_CALL_TYPE emCallType; // 呼叫类型 char szCallID[DH_COMMON_STRING_128]; // 对讲唯一标识 }NET_CTRL_VTP_DISCONNECT; ///@brief 对讲客户端响应 typedef enum tagNET_EM_VTP_ACK { NET_EM_VTP_OK, // 客户端接收事件,马上呼叫 NET_EM_VTP_BUSY, // 客户端忙,不呼叫 }NET_EM_VTP_ACK; ///@brief 呼叫转发响应 typedef struct tagNET_CTRL_VTP_DIVERTACK { DWORD dwSize; EM_NET_VTP_CALL_TYPE emCallType; // 待查询的呼叫类型 const char* szCallID; // 呼叫惟一标识符 NET_EM_VTP_ACK emAck; // 客户端接受后的响应动作 }NET_CTRL_VTP_DIVERTACK; ///@brief 远程多媒体文件操作方式 typedef enum tagNET_EM_SPEAK_FILE_ACTION { NET_EM_SPEAK_FILE_ACTION_UPDATE = 0, // 更新原有文件 NET_EM_SPEAK_FILE_ACTION_ADD, // 新增文件 NET_EM_SPEAK_FILE_ACTION_DEL, // 删除文件 }NET_EM_SPEAK_FILE_ACTION; ///@brief 远程多媒体文件投放操作信息 typedef struct tagNET_SPEAK_FILE_INFO { DWORD dwSize; char szFilePath[MAX_PATH]; // 文件路径, 即预先用CFG_CMD_NASEX配置好的地址 NET_EM_SPEAK_FILE_ACTION emAction; // 操作类型, 即对szFilePath指定的文件的操作 BOOL bSave; // 设备本地是否更新保存该文件 }NET_SPEAK_FILE_INFO; #define MAX_SPEAK_FILE_NUM 32 // 远程投放的多媒体文件最大个数 ///@brief 远程投放多媒体文件更新 typedef struct tagNET_CTRL_UPDATE_FILES { DWORD dwSize; DWORD dwFileNum; // 有效的文件个数 NET_SPEAK_FILE_INFO stuFileInfo[MAX_SPEAK_FILE_NUM];// 多媒体文件信息 }NET_CTRL_UPDATE_FILES; ///@brief 音频编码压缩格式 typedef enum tagEM_SPEAK_AUDIO_TYPE { EM_SPEAK_AUDIO_TYPE_UNKNOWN = 0, // 未知 EM_SPEAK_AUDIO_TYPE_PCM, // PCM EM_SPEAK_AUDIO_TYPE_ADPCM, // ADPCM EM_SPEAK_AUDIO_TYPE_G711A, // G711A EM_SPEAK_AUDIO_TYPE_G711Mu, // G711Mu EM_SPEAK_AUDIO_TYPE_G726, // G726 EM_SPEAK_AUDIO_TYPE_G729, // G729 EM_SPEAK_AUDIO_TYPE_MPEG2, // MPEG2 EM_SPEAK_AUDIO_TYPE_AMR, // AMR EM_SPEAK_AUDIO_TYPE_AAC, // AAC }EM_SPEAK_AUDIO_TYPE; ///@brief 音频格式 typedef struct tagNET_SPEAK_AUDIO_FORMAT { EM_SPEAK_AUDIO_TYPE emFormat; // 音频编码格式 BYTE byReserved[1020]; // 预留 }NET_SPEAK_AUDIO_FORMAT; ///@brief 音频文件路径 typedef struct tagNET_SPEAK_AUDIO_PLAY_PATH { char szPath[256]; // 文件路径 BOOL bSupportUpload; // 是否支持上传 int nMaxFileUploadNum; // 支持最大上传个数 int nMaxUploadFileSize; // 最大上传文件大小,单位:字节 BYTE byReserved[756]; // 预留 }NET_SPEAK_AUDIO_PLAY_PATH; ///@brief 音频文件路径和能力集 typedef struct tagNET_SPEAK_CAPS { NET_SPEAK_AUDIO_FORMAT stuAudioFormats[32]; // 音频格式 int nAudioFormatNum; // 音频格式个数 int nAudioPlayPathNum; // 音频文件路径个数 NET_SPEAK_AUDIO_PLAY_PATH stuAudioPlayPaths[8]; // 音频文件路径 BYTE byReserved[1024]; // 预留 }NET_SPEAK_CAPS; ///@brief CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS 入参 typedef struct tagNET_IN_REMOTE_SPEAK_CAPS { DWORD dwSize; // 结构体大小 int nChannelNum; // 通道数 int nChannels[128]; // 通道列表 }NET_IN_REMOTE_SPEAK_CAPS; ///@brief CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS 出参 typedef struct tagNET_OUT_REMOTE_SPEAK_CAPS { DWORD dwSize; // 结构体大小 int nRetCapNum; // 实际返回的能力集个数 NET_SPEAK_CAPS* pstuCaps; // 能力集 void* pReserved; // 字节对齐 int nMaxCapNum; // 用户分配的最大能力集数组个数 }NET_OUT_REMOTE_SPEAK_CAPS; ///@brief Wifi 能力集 typedef enum tagEM_WIFI_CAPS_TYPE { EM_CAPS_TYPE_UNKNOWN, // Unknown EM_CAPS_TYPE_CLIENT, // Client EM_CAPS_TYPE_AP, // Ap EM_CAPS_TYPE_WPS, // Wps } EM_WIFI_CAPS_TYPE; ///@brief CLIENT_GetDevCaps NET_WLAN_CAPS 入参 typedef struct tagNET_IN_WLAN_CAPS_INFO { DWORD dwSize; // 结构体大小 } NET_IN_WLAN_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_WLAN_CAPS 出参 typedef struct tagNET_OUT_WLAN_CAPS_INFO { DWORD dwSize; // 结构体大小 BOOL bIgnoreNetCardToConn; // 连接热点是否不关心网卡下发配置,TRUE:不关心 FALSE:关心。 即是否支持CLIENT_SetWlanConfigInfo 接口 EM_WIFI_CAPS_TYPE emWifiCaps[8]; // Wifi功能 int nRetWifiCapsNum; // 设备返回Wifi能力个数 } NET_OUT_WLAN_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_LOG_ONLINE_BACKUP_CAPS 入参 typedef struct tagNET_IN_LOG_ONLINE_BACKUP_CAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_LOG_ONLINE_BACKUP_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_LOG_ONLINE_BACKUP_CAPS 出参 typedef struct tagNET_OUT_LOG_ONLINE_BACKUP_CAPS_INFO { DWORD dwSize; // 结构体大小 BOOL bSupportLogOnlineBackUp; // 是否支持日志在线备份 }NET_OUT_LOG_ONLINE_BACKUP_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_RECEIPT_EVENT_CAPS 入参 typedef struct tagNET_IN_RECEIPT_EVENT_CAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_RECEIPT_EVENT_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_RECEIPT_EVENT_CAPS 出参 typedef struct tagNET_OUT_RECEIPT_EVENT_CAPS_INFO { DWORD dwSize; // 结构体大小 BOOL bSupportReceiptEx; // 是否支持附带说明信息的事件回执能力 // TRUE 表示设备支持 CLIENT_ReceiptEvent 接口调用 }NET_OUT_RECEIPT_EVENT_CAPS_INFO; ///@brief WLAN加密方式 typedef enum tagEM_WLAN_ENCRYPTION_TYPE { EM_ENCRYPTION_TYPE_UNKNOWN, // 未知 EM_ENCRYPTION_TYPE_AUTO, // Auto } EM_WLAN_ENCRYPTION_TYPE; ///@brief 设置WLAN配置信息, CLIENT_SetWlanConfigInfo 入参 typedef struct tagNET_IN_WLAN_CONFIG_INFO { DWORD dwSize; // 结构体大小 char szBSSID[18]; // 设置MAC地址 BYTE byReserved[2]; // 字节对齐 char szSSID[32]; // 网络名称 int nChannel; // 通道 int nKeyID; // 对应WEP密码数组第一维下标,设备端会根据下标取数组值 EM_WLAN_ENCRYPTION_TYPE emEncryption; // 加密方式 char szKeys[4][128]; // WEP密码数组 // 如使用ASCII类型的密码,64位加密使用5个字母数字字符,128为加密使用13个字母数字字符(0-9,a-z,A-Z) // 如果使用16进制的密码,64位加密使用10个字母数字字符,128为加密使用26个字母数字字符(0-9,A-F) } NET_IN_WLAN_CONFIG_INFO; ///@brief 设置WLAN配置信息, CLIENT_SetWlanConfigInfo 出参 typedef struct tagNET_OUT_WLAN_CONFIG_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_WLAN_CONFIG_INFO; ///@brief 雨刷来回刷一次,雨刷模式配置为手动模式时有效(对应命令 DH_CTRL_RAINBRUSH_MOVEONCE) typedef struct tagNET_CTRL_RAINBRUSH_MOVEONCE { DWORD dwSize; int nChannel; // 表示雨刷的索引 }NET_CTRL_RAINBRUSH_MOVEONCE; ///@brief 雨刷来回循环刷,雨刷模式配置为手动模式时有效(对应命令 DH_CTRL_RAINBRUSH_MOVECONTINUOUSLY) typedef struct tagNET_CTRL_RAINBRUSH_MOVECONTINUOUSLY { DWORD dwSize; int nChannel; // 表示雨刷的索引 unsigned int nInterval; // 雨刷间隔 }NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY; ///@brief 雨刷停止刷,雨刷模式配置为手动模式时有效(对应命令 DH_CTRL_RAINBRUSH_STOPMOVE) typedef struct tagNET_CTRL_RAINBRUSH_STOPMOVE { DWORD dwSize; int nChannel; // 表示雨刷的索引 }NET_CTRL_RAINBRUSH_STOPMOVE; ///@brief 报警事件确认(对应 DH_CTRL_ALARM_ACK 命令) typedef struct tagNET_CTRL_ALARM_ACK { DWORD dwSize; int nEventID; // 事件编号,用来唯一标志一个事件 }NET_CTRL_ALARM_ACK; ///@brief 对讲请求回复类型 typedef enum tagNET_EM_VTP_INVITEACK_TYPE { NET_EM_VTP_INVITEACK_TYPE_UNKNOWN = 0, // 未知 NET_EM_VTP_INVITEACK_TYPE_BUSY // 忙类型 }NET_EM_VTP_INVITEACK_TYPE; ///@brief 对讲请求回复 typedef struct tagNET_CTRL_VTP_INVITEACK { DWORD dwSize; int nChnId; // 通道号,用于标识对讲单元 NET_EM_VTP_INVITEACK_TYPE emAck; // 客户端收到Invite事件后,将自身状态通知到设备端 }NET_CTRL_VTP_INVITEACK; ///@brief 呼叫类型 typedef enum tagEM_VIDEOTALK_ACTION { EM_VIDEOTALK_ACTION_INVITE, // 呼叫 EM_VIDEOTALK_ACTION_HANGUP, // 挂断 EM_VIDEOTALK_ACTION_ANSWER, // 接听 EM_VIDEOTALK_ACTION_REFUSE, // 拒接 }EM_VIDEOTALK_ACTION; ///@brief CLIENT_RemoteTalkControl 入参 typedef struct tagNET_IN_REMOTE_TALK_CONTROL { DWORD dwSize; int nChnId; // 通道号,用于标识对讲单元 EM_VIDEOTALK_ACTION emAction; // 动作 char byReserved[4]; // 用于字节对齐 char szCallID[32]; // 呼叫ID }NET_IN_REMOTE_TALK_CONTROL; ///@brief CLIENT_RemoteTalkControl 出参 typedef struct tagNET_OUT_REMOTE_TALK_CONTROL { DWORD dwSize; }NET_OUT_REMOTE_TALK_CONTROL; ///@brief 远程对讲控制 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlRemoteTalk(LLONG lLoginID, const NET_IN_REMOTE_TALK_CONTROL* pstInParam, NET_OUT_REMOTE_TALK_CONTROL* pstOutParam, int nWaitTime); ///@brief CLIENT_GetVideoTalkPeerDeviceState 入参 typedef struct tagNET_IN_GET_VIDEO_TALK_PEER_DEVICE_STATE { DWORD dwSize; int nChnId; // 通道号,用于标识对讲单元 char szCallID[32]; // 设备标识符,为NULL时(即空串"")获取的是所有设备的在线状态 }NET_IN_GET_VIDEO_TALK_PEER_DEVICE_STATE; ///@brief 在线状态 typedef enum tagEM_VIDEOTALK_STATE { EM_VIDEOTALK_STATE_UNKNOWN, // 未知 EM_VIDEOTALK_STATE_ONLINE, // 在线 EM_VIDEOTALK_STATE_OFFLINE, // 离线 }EM_VIDEOTALK_STATE; ///@brief 设备在线状态 typedef struct tagNET_VIDEO_TALK_PEER_DEVICE_STATE { EM_VIDEOTALK_STATE emState; // 在线状态 char szID[32]; // 设备标识符 char szIpAddr[32]; // 注册的IP地址 UINT nPort; // 注册端口 char szReserved[128]; // 保留字节 }NET_VIDEO_TALK_PEER_DEVICE_STATE; ///@brief CLIENT_GetVideoTalkPeerDeviceState 出参 typedef struct tagNET_OUT_GET_VIDEO_TALK_PEER_DEVICE_STATE { DWORD dwSize; int nDeviceStateNodeNum; // 设备在线状态的个数 NET_VIDEO_TALK_PEER_DEVICE_STATE stuDeviceStateNode[200]; // 设备在线状态 }NET_OUT_GET_VIDEO_TALK_PEER_DEVICE_STATE; ///@brief 获取对讲状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoTalkPeerDeviceState(LLONG lLoginID, const NET_IN_GET_VIDEO_TALK_PEER_DEVICE_STATE* pstInParam, NET_OUT_GET_VIDEO_TALK_PEER_DEVICE_STATE* pstOutParam, int nWaitTime); ///@brief 预览类型 typedef enum tagEM_MONITOR_TYPE { EM_MONITOR_TYPE_UNKNOWN = -1, // 未知 EM_MONITOR_TYPE_VTO, // 预览门口机 EM_MONITOR_TYPE_IPC, // 预览IPC }EM_MONITOR_TYPE; ///@brief CLIENT_StartVTHMonitor 入参 typedef struct tagNET_IN_START_VTH_MONITOR { DWORD dwSize; UINT nIndex; // VTO或者IPC配置列表中的索引号。 EM_MONITOR_TYPE emType; // 预览类型 char byReserved[4]; // 用于字节对齐 }NET_IN_START_VTH_MONITOR; ///@brief CLIENT_StartVTHMonitor 出参 typedef struct tagNET_OUT_START_VTH_MONITOR { DWORD dwSize; }NET_OUT_START_VTH_MONITOR; ///@brief 开启监控 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartVTHMonitor(LLONG lLoginID, const NET_IN_START_VTH_MONITOR* pstInParam, NET_OUT_START_VTH_MONITOR* pstOutParam, int nWaitTime); ///@brief CLIENT_StopVTHMonitor 入参 typedef struct tagNET_IN_STOP_VTH_MONITOR { DWORD dwSize; UINT nIndex; // VTO或者IPC配置列表中的索引号。 EM_MONITOR_TYPE emType; // 预览类型 char byReserved[4]; // 用于字节对齐 }NET_IN_STOP_VTH_MONITOR; ///@brief CLIENT_StopVTHMonitor 出参 typedef struct tagNET_OUT_STOP_VTH_MONITOR { DWORD dwSize; }NET_OUT_STOP_VTH_MONITOR; ///@brief 停止监控 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopVTHMonitor(LLONG lLoginID, const NET_IN_STOP_VTH_MONITOR* pstInParam, NET_OUT_STOP_VTH_MONITOR* pstOutParam, int nWaitTime); ///@brief CLIENT_StartRemoteSpeakPlay 接口输入参数 typedef struct tagNET_IN_START_REMOTE_SPEAK_PLAY { DWORD dwSize; // 结构体大小 UINT nChannel; // 本地通道号 char szPath[256]; // 音频文件路径 }NET_IN_START_REMOTE_SPEAK_PLAY; ///@brief 开始放音状态 typedef enum tagEM_REMOTE_SPEAK_PLAY_STATE { EM_REMOTE_SPEAK_PLAY_STATE_UNKNOWN, // 未知 EM_REMOTE_SPEAK_PLAY_STATE_OK, // 表示操作成功 EM_REMOTE_SPEAK_PLAY_STATE_BUSY, // 表示操作正在进行 EM_REMOTE_SPEAK_PLAY_STATE_ERROR, // 表示其它错误 EM_REMOTE_SPEAK_PLAY_STATE_FTP_NOT_VALID, // 表示Ftp地址不在NAS中 } EM_REMOTE_SPEAK_PLAY_STATE; ///@brief CLIENT_StartRemoteSpeakPlay 接口输出参数 typedef struct tagNET_OUT_START_REMOTE_SPEAK_PLAY { DWORD dwSize; // 结构体大小 EM_REMOTE_SPEAK_PLAY_STATE emStatus; // 开始放音状态 }NET_OUT_START_REMOTE_SPEAK_PLAY; ///@brief 开始放音接口 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartRemoteSpeakPlay(LLONG lLoginID, const NET_IN_START_REMOTE_SPEAK_PLAY *pstuInParam, NET_OUT_START_REMOTE_SPEAK_PLAY *pstuOutParam, int nWaitTime); ////////////////////////////系统任务订阅////////////////////////////////////////// ///@brief 分区状态 typedef struct __NET_PARTITION_STATE { DWORD dwSize; int nStatus; // 分区状态,0-正常,1-错误 double dbTotalSize; // 分区总容量,字节为单位 double dbRemainSize; // 剩余容量,字节为单位 }NET_PARTITION_STATE; ///@brief 硬盘状态 typedef struct __NET_HDD_STATE { DWORD dwSize; int nState; // 硬盘状态,0-正常,1-错误,2-硬盘满 double dbTotalSize; // 硬盘总容量,字节为单位 NET_PARTITION_STATE stuPartitions[DH_MAX_STORAGE_PARTITION_NUM]; // 分区状态 int nPartitionNum; // 分区数 }NET_HDD_STATE; ///@brief 通道状态 typedef struct __NET_CHANNLE_STATE { DWORD dwSize; BYTE byRecState; // 录像状态,1-录像,0-关闭 BYTE byVideoInState; // 视频输入状态,0-无视频,1-有视频接入,2-视频遮挡,3-IPC未连接上 BYTE byReserved[2]; // 字节对齐 }NET_CHANNLE_STATE; ///@brief PAD/DVR连接状态 typedef enum tagNET_PAD_CONNECT_STATE { NET_PAD_CONNECT_STATE_UNKNOWN, // 未知 NET_PAD_CONNECT_STATE_UNCONNECTED, // 未连接 NET_PAD_CONNECT_STATE_CONNECTED, // 连接 } NET_PAD_CONNECT_STATE; ///@brief Home键状态 typedef enum tagNET_HOME_STATE { NET_HOME_STATE_UNKNOWN, // 未知 NET_HOME_STATE_UNPRESSED, // 未按下 NET_HOME_STATE_PRESSED, // 按下 } NET_HOME_STATE; ///@brief 紧急报警状态 typedef enum tagEM_EMERGENCYSTATUS_TYPE { EM_EMERGENCYSTATUS_UNKNOWN = -1, // 未知 EM_EMERGENCYSTATUS_CLOSE, // 关闭 EM_EMERGENCYSTATUS_OPEN, // 开启 }EM_EMERGENCYSTATUS_TYPE; ///@brief 设备锁状态 typedef enum tagEM_TAMPERALTERSTATUS_TYPE { EM_TAMPERALTERSTATUS_UNKNOWN = -1, // 未知 EM_TAMPERALTERSTATUS_CLOSE, // 关闭 EM_TAMPERALTERSTATUS_OPEN, // 开启 }EM_TAMPERALTERSTATUS_TYPE; ///@brief GPS 模块信号强度 typedef enum tagEM_GPS_SIGNAL_STRENGTH_TYPE { EM_GPS_SIGNAL_STRENGTH_UNKNWON = -1, // 未知 EM_GPS_SIGNAL_STRENGTH_WEAK, // 弱 EM_GPS_SIGNAL_STRENGTH_MIDDLE, // 中 EM_GPS_SIGNAL_STRENGTH_STRONG, // 强 } EM_GPS_SIGNAL_STRENGTH_TYPE; ///@brief 事件数据类型 typedef enum tagEM_SELFCHECK_DATA_TYPE { EM_SELFCHECK_DATA_TYPE_UNKNOWN, // 未知 EM_SELFCHECK_DATA_TYPE_REALTIME, // 实时数据 EM_SELFCHECK_DATA_TYPE_HISTORY, // 历史数据 重发数据 }EM_SELFCHECK_DATA_TYPE; ///@brief 设备自检信息 typedef struct __NET_SELFCHECK_INFO { DWORD dwSize; int nAlarmIn; // 报警输入通道数 int nAlarmOut; // 报警输出通道数 NET_TIME stuTime; // 上报时间 char szPlateNo[DH_MAX_PLATE_NUMBER_LEN]; // 车牌 char szICCID[DH_MAX_SIM_LEN]; // SIM卡号,建议使用szICCIDExInfo字段 BYTE byOrientation; // 定位状态,0-未定位,1-定位 BYTE byACCState; // ACC 状态,0-关闭,1-打开 BYTE byConstantElecState; // 常电状态,0-正常连接,1-断开,2-欠压,3-高压 BYTE byAntennaState; // 通信信号状态,0-正常,1-未知故障,2-未接,3-短路 /* 外部设备状态 */ BYTE byReportStation; // 报站器状态,0-未接,1-正常,2-异常 BYTE byControlScreen; // 调度屏状态,0-未接,1-正常,2-异常 BYTE byPOS; // POS机状态,0-未接,1-正常,2-异常 BYTE byCoinBox; // 投币箱状态,0-未接,1-正常,2-异常 /* 能力集 */ BOOL bTimerSnap; // 定时抓图,TRUE-支持,FALSE-不支持 BOOL bElectronEnclosure; // 电子围栏,TRUE-支持,FALSE-不支持 BOOL bTeleUpgrade; // 远程升级,TRUE-支持,FALSE-不支持 NET_HDD_STATE stuHddStates[DH_MAX_DISKNUM]; // 硬盘状态 int nHddNum; // 硬盘个数 NET_CHANNLE_STATE* pChannleState; // 通道状态,是一个数组, // CLIENT_AttachMission接口,NET_MISSION_TYPE_SELFCHECK类型,回调函数,内存由SDK申请,SDK释放 // CLIENT_GetSelfCheckInfo接口,出参,内存由用户申请,用户释放,大小为sizeof(NET_CHANNLE_STATE)*nChannelMax int nChannleNum; // 实际上报的通道个数 int nChannelMax; // CLIENT_GetSelfCheckInfo接口,pChannleState内存的最大NET_CHANNLE_STATE个数 NET_PAD_CONNECT_STATE emConnState; // PAD/DVR连接状态 NET_HOME_STATE emHomeState; // Home键状态 char szICCIDExInfo[DH_COMMON_STRING_256]; // SIM卡号扩展信息,用于字段扩展使用 BYTE by3GState; // 3G/4G状态, 0-未连接,1-连接,2-模块未找到 BYTE byWifiState; // Wifi状态, 0-未连接,1-连接,2-模块未找到 BYTE byGpsState; // Gps状态, 0-未连接,1-连接,2-模块未找到 BYTE byBlackBoxState; // BlackBox状态, 0-未接,1-正常 int nCpuUsage; // CPU使用百分比, 单位% int nTemperature; // 设备内部温度, 摄氏度 char szVendor[32]; // 生产厂商 char szFirmwareVersion[128]; // 设备程序版本,是一个字符数组 char szSecurityBaseLineVersion[8]; // 安全基线版本 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS状态信息 char szNetworkOperName[32]; // 4G运营商网络信息,需要向sim卡提供方获取 EM_EMERGENCYSTATUS_TYPE emEmergencyStatus; // 紧急报警状态 EM_TAMPERALTERSTATUS_TYPE emTamperAletStatus; // 设备锁状态 char szImei[16]; // 国际移动设备辨识码15位数字标识 UINT nGSMsignalStrength; // 3G信号强度0 - 31 UINT nMcc; // 移动信号所属国家码 UINT nMnc; // 移动网络号码,用于识别移动客户所属的移动网络,2~3位数字组成 UINT nLAC; // 位置区码 (移动通信系统中),是为寻呼而设置的一个区域,覆盖一片地理区域,初期一般按行政区域划分(一个县或一个区),现在很灵活了,按寻呼量划分 UINT nCi; // 小区识别码,三种主要的基于位置服务(LBS)技术之一。小区识别码通过识别网络中哪一个小区传输用户呼叫并将该信息翻译成纬度和经度来确定用户位置 int nAlarmInStatusNum; // IO报警输入状态个数 int nAlarmInStatus[32]; // IO报警输入状态列表一维数组,每个成员表示对应的通道报警输入状态(0=Off; 1 =On) int nAlarmOutStatusNum; // IO报警输出状态个数 int nAlarmOutStatus[32]; // IO报警输出状态列表一维数组,每个成员表示对应的通道报警输出状态(0=Off; 1 =On) char szMasterSvrAddr[128]; // 主服务器地址,IPv4格式为点分十进制,IPv6格式为x:x:x:x:x:x:x:x,其中x是16位的十六进制值 char szSlaveSvrAddr[128]; // 从服务器地址,IPv4格式为点分十进制,IPv6格式为x:x:x:x:x:x:x:x,其中x是16位的十六进制值 char szSerialNo[48]; // 设备序列号 EM_GPS_SIGNAL_STRENGTH_TYPE emSignalStrength; // GPS 模块信号强度 EM_SELFCHECK_DATA_TYPE emDataType; // 事件数据类型 }NET_SELFCHECK_INFO; ///@brief 回调函数 typedef void (CALLBACK *fMissionInfoCallBack)(LLONG lAttachHandle, DWORD dwType, void* pMissionInfo, void* pReserved, LDWORD dwUserData); ///@brief 任务类型 typedef enum EM_MISSION_TYPE { NET_MISSION_TYPE_UNKOWN, // 未知 NET_MISSION_TYPE_SELFCHECK, // 设备自检,对应结构体 NET_SELFCHECK_INFO }EM_MISSION_TYPE; ///@brief CLIENT_AttachMission接口输入参数 typedef struct __NET_IN_ATTACH_MISSION_PARAM { DWORD dwSize; EM_MISSION_TYPE emMissionType; // 任务类型 fMissionInfoCallBack cbMissionInfofunc; // 任务信息回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_MISSION_PARAM; ///@brief CLIENT_DetachMission接口输出参数 typedef struct NET_OUT_ATTACH_MISSION_PARAM { DWORD dwSize; LLONG lAttachHandle; // 订阅句柄 }NET_OUT_ATTACH_MISSION_PARAM; #define MAX_EVENT_TO_CONFIRM_NUM 8 // 最大待确认的事件的个数 ///@brief 待确认的事件的信息 typedef struct tagNET_EVENT_INFO_TO_CONFIRM { DWORD dwSize; DWORD dwEventType; // 事件类型, 对应CLIENT_AttachBusState接口的事件类型 NET_TIME stuTime; // 事件时间, UTC制 LONG lTime; // 事件时间, UTC制, 单位秒 }NET_EVENT_INFO_TO_CONFIRM; ///@brief 车辆紧急报警确认 输入参数 typedef struct tagNET_IN_BUS_CONFIRM_EVENT { DWORD dwSize; int nEvent; // 待确认事件的有效数目 NET_EVENT_INFO_TO_CONFIRM stuEventInfo[MAX_EVENT_TO_CONFIRM_NUM];// 待确认事件的信息 }NET_IN_BUS_CONFIRM_EVENT; ///@brief 车辆紧急报警确认 输出参数 typedef struct tagNET_OUT_BUS_CONFIRM_EVENT { DWORD dwSize; }NET_OUT_BUS_CONFIRM_EVENT; ///@brief CLIENT_SetDevicePosition设置设备地址信息输入参数 typedef struct tagNET_IN_SET_DEVICE_POSITION { DWORD dwSize; // 本结构体大小, 初始化时必须填写 char szPosition[DH_COMMON_STRING_512]; // 地址信息 }NET_IN_SET_DEVICE_POSITION; ///@brief CLIENT_SetDevicePosition设置设备地址信息输出参数 typedef struct tagNET_OUT_SET_DEVICE_POSITION { DWORD dwSize; // 本结构体大小, 初始化时必须填写 }NET_OUT_SET_DEVICE_POSITION; ///@brief CLIENT_GetDevicePosition获取设备地址信息输入参数 typedef struct tagNET_IN_GET_DEVICE_POSITION { DWORD dwSize; // 本结构体大小, 初始化时必须填写 }NET_IN_GET_DEVICE_POSITION; ///@brief CLIENT_GetDevicePosition获取设备地址信息输出参数 typedef struct tagNET_OUT_GET_DEVICE_POSITION { DWORD dwSize; // 本结构体大小, 初始化时必须填写 char szPosition[DH_COMMON_STRING_512]; // 地址信息 }NET_OUT_GET_DEVICE_POSITION; ///@brief CLIENT_SnapPictureByEvent输入参数 typedef struct tagNET_IN_SNAP_BY_EVENT { DWORD dwSize; // 本结构体大小, 初始化时必须填写 int nChannel; // 视频通道号, 从0开始 DWORD dwEventID; // 参考CLIENT_RealLoadPicEx的事件类型 char szSerial[128]; // 抓图序列号 }NET_IN_SNAP_BY_EVENT; ///@brief CLIENT_SnapPictureByEvent输出参数 typedef struct tagNET_OUT_SNAP_BY_EVENT { DWORD dwSize; // 本结构体大小, 初始化时必须填写 }NET_OUT_SNAP_BY_EVENT; ///@brief CLIENT_StartQueryLog 输入参数 typedef struct tagNET_IN_START_QUERYLOG { DWORD dwSize; DH_LOG_QUERY_TYPE emLogType; // 查询日志类型 NET_TIME stuStartTime; // 查询日志的开始时间 NET_TIME stuEndTime; // 查询日志的结束时间 BOOL bLogTypeExFlag; // 对emLogType进行扩展分类查询方式;TRUE 表明使用szLogTypeEx参数,FALSE使用emLogType int nLogTypeExNum; // szLogTypeEx数组真实长度,最大64个 char szLogTypeEx[64][128]; // 报警主机日志类型扩展透传数组,如果需要查询的类型超过64个,则分组多次查询 EM_RESULT_ORDER_TYPE emResultOrder; // 查询结果排序方式 BOOL bSendByUTCTime; // 是否使用UTC时间 NET_TIME stuStartTimeRealUTC; // UTC查询开始时间 NET_TIME stuEndTimeRealUTC; // UTC查询结束时间 } NET_IN_START_QUERYLOG; ///@brief CLIENT_StartQueryLog 输出参数 typedef struct tagNET_OUT_START_QUERYLOG { DWORD dwSize; }NET_OUT_START_QUERYLOG; ///@brief 日志详细信息 typedef struct tagNET_LOG_MESSAGE { DWORD dwSize; char szLogMessage[DH_COMMON_STRING_1024]; // 日志内容 } NET_LOG_MESSAGE; ///@brief 日志信息 typedef struct tagNET_LOG_INFO { DWORD dwSize; NET_TIME stuTime; // 时间 char szUserName[DH_COMMON_STRING_32];// 操作者 char szLogType[DH_COMMON_STRING_128];// 类型 NET_LOG_MESSAGE stuLogMsg; // 日志信息 NET_TIME stuTimeRealUTC; // 记录UTC时间 } NET_LOG_INFO; ///@brief CLIENT_QueryNextLog 输入参数 typedef struct tagNET_IN_QUERYNEXTLOG { DWORD dwSize; int nGetCount; // 需要查询的日志条数 }NET_IN_QUERYNEXTLOG; ///@brief CLIENT_QueryNextLog 输出参数 typedef struct tagNET_OUT_QUERYNEXTLOG { DWORD dwSize; int nMaxCount; // 用户指定分配结构体个数,需大于等于NET_IN_GETNEXTLOG的nGetCount NET_LOG_INFO* pstuLogInfo; // 返回日志信息,缓存大小由用户指定,大小为nMaxCount*sizeof(NET_LOG_INFO) int nRetCount; // 实际返回日志条数 }NET_OUT_QUERYNEXTLOG; ///@brief 异步注册设备回调函数原形(当nError返回11时,保留字段reserved为int类型参数且用于调用CLIENT_StartLoginEx登陆时的端口号) // 当登入失败时: nError 的错误码对应的说明参考 CLIENT_Login 中的 error说明 typedef void (CALLBACK *fHaveLogin)(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, BOOL bOnline, NET_DEVICEINFO_Ex stuDeviceInfo, int nError, LDWORD dwUser, void *reserved); ///@brief CLIENT_StartLoginEx 输入参数 typedef struct tagNET_IN_STARTLOGINEX { DWORD dwSize; const char* szIp; // 设备ip DWORD dwPort; // 登陆端口 const char* szName; // 用户名 const char* szPwd; // 密码 fHaveLogin cbLogin; // 登陆结果回调 LDWORD dwUser; // 回调用户参数 }NET_IN_STARTLOGINEX; ///@brief CLIENT_StartLoginEx 输出参数 typedef struct tagNET_OUT_STARTLOGINEX { DWORD dwSize; }NET_OUT_STARTLOGINEX; ///@brief 设备支持的协议类型 typedef enum tagEM_DEV_PROTOCOL_TYPE { EM_DEV_PROTOCOL_UNKNOWN, // 未知 EM_DEV_PROTOCOL_V2, // 私有二代 EM_DEV_PROTOCOL_V3, // 私有三代 EM_DEV_PROTOCOL_ONVIF, // onvif EM_DEV_PROTOCOL_GENERAL, // general EM_DEV_PROTOCOL_GB28181, // 国标GB28181 EM_DEV_PROTOCOL_EHOME, // ehome 协议 EM_DEV_PROTOCOL_HIKVISION, // HK私有协议 EM_DEV_PROTOCOL_BSCP, // LX接入协议 EM_DEV_PROTOCOL_PRIVATE, // 私有 EM_DEV_PROTOCOL_RTSP, // RTSP EM_DEV_PROTOCOL_HBGK, // HBGK EM_DEV_PROTOCOL_LUAN, // LUAN } EM_DEV_PROTOCOL_TYPE; ///@brief 视频拼接操作类型 typedef enum tagNET_VIDEOJOIN_OPERATE_TYPE { NET_VIDEOJOIN_GET_STATUS, // 获取拼接状态, 对应 NET_IN_VIDEOJOIN_GET_STATUS 和 NET_OUT_VIDEOJOIN_GET_STATUS NET_VIDEOJOIN_GET_CALIBRATE_POINTS, // 获取表定点, 对应 tagNET_IN_VIDEOJOIN_GET_CALIBRATE_POINTS 和 tagNET_OUT_VIDEOJOIN_GET_CALIBRATE_POINTS NET_VIDEOJOIN_CALIBRATE, // 标定, 对应 NET_IN_VIDEOJOIN_CALIBRATE 和 NET_OUT_VIDEOJOIN_CALIBRATE }NET_VIDEOJOIN_OPERATE_TYPE; ///@brief 视频拼接状态 typedef enum tagNET_VIDEOJOIN_STATUS { NET_VIDEOJOIN_STATUS_UNKNOWN, // 未知 NET_VIDEOJOIN_STATUS_NOTSTART, // 未开始 NET_VIDEOJOIN_STATUS_DOING, // 进行中 NET_VIDEOJOIN_STATUS_FINISH, // 完成 }NET_VIDEOJOIN_STATUS; ///@brief 视频拼接标定模式 typedef enum tagNET_VIDEOJOIN_MODE { NET_VIDEOJOIN_MODE_UNKNOWN, // 未知 NET_VIDEOJOIN_MODE_AUTO, // 自动 NET_VIDEOJOIN_MODE_MANUAL, // 手动 }NET_VIDEOJOIN_MODE; ///@brief CLIENT_OperateVideoJoin 输入参数, 对应NET_VIDEOJOIN_GET_STATUS typedef struct tagNET_IN_VIDEOJOIN_GET_STATUS { DWORD dwSize; }NET_IN_VIDEOJOIN_GET_STATUS; ///@brief CLIENT_OperateVideoJoin 输出参数, 对应NET_VIDEOJOIN_GET_STATUS typedef struct tagNET_OUT_VIDEOJOIN_GET_STATUS { DWORD dwSize; NET_VIDEOJOIN_STATUS emStatus; // 拼接状态 }NET_OUT_VIDEOJOIN_GET_STATUS; ///@brief 相机标定点对, 表示一对坐标点 typedef struct tagNET_POINT_PAIR { DH_POINT stuPoints[POINT_NUM_IN_PAIR]; // 相机标定点 }NET_POINT_PAIR; ///@brief 视频拼接标定点组, 每一组表示两个通道和多个标定点对 typedef struct tagNET_VIDEOJOIN_POINT_GROUP { DWORD dwSize; int nPointPairNum; // 标定点数量 NET_POINT_PAIR stuPointPairs[MAX_POINT_PAIR_NUM]; // 标定点 int nChannels[CHANNEL_NUM_IN_POINT_GROUP]; // 视频通道号, 通过数据下标来对应,下标0通道对应NET_POINT_PAIR中下标0的点 }NET_VIDEOJOIN_POINT_GROUP; ///@brief CLIENT_OperateVideoJoin 输入参数, 对应NET_VIDEOJOIN_GET_CALIBRATE_POINTS typedef struct tagNET_IN_VIDEOJOIN_GET_CALIBRATE_POINTS { DWORD dwSize; }NET_IN_VIDEOJOIN_GET_CALIBRATE_POINTS; ///@brief CLIENT_OperateVideoJoin 输出参数, 对应NET_VIDEOJOIN_GET_CALIBRATE_POINTS typedef struct tagNET_OUT_VIDEOJOIN_GET_CALIBRATE_POINTS { DWORD dwSize; NET_VIDEOJOIN_MODE emMode; // 标定模式 int nPointGroupNum; // 标定点组数量 NET_VIDEOJOIN_POINT_GROUP stuPointGroups[MAX_POINT_GROUP_NUM]; // 标定点组, 手动模式下有效 }NET_OUT_VIDEOJOIN_GET_CALIBRATE_POINTS; ///@brief CLIENT_OperateVideoJoin 输入参数, 对应NET_VIDEOJOIN_CALIBRATE typedef struct tagNET_IN_VIDEOJOIN_CALIBRATE { DWORD dwSize; NET_VIDEOJOIN_MODE emMode; // 标定模式 int nPointGroupNum; // 标定点组数量 NET_VIDEOJOIN_POINT_GROUP stuPointGroups[MAX_POINT_GROUP_NUM]; // 标定点组, 手动模式有效 }NET_IN_VIDEOJOIN_CALIBRATE; ///@brief CLIENT_OperateVideoJoin 输出参数, 对应NET_VIDEOJOIN_CALIBRATE typedef struct tagNET_OUT_VIDEOJOIN_CALIBRATE { DWORD dwSize; }NET_OUT_VIDEOJOIN_CALIBRATE; ///@brief 获取屏内窗口信息输入参数, 对应NET_SPLIT_OPERATE_GET_SCENE typedef struct tagNET_IN_SPLIT_GET_SCENE { DWORD dwSize; int nChannel; // 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效 const char* pszCompositeID; // 融合屏ID }NET_IN_SPLIT_GET_SCENE; ///@brief 获取屏内窗口信息输出参数, 对应NET_SPLIT_OPERATE_GET_SCENE typedef struct tagNET_OUT_SPLIT_GET_SCENE { DWORD dwSize; DH_SPLIT_SCENE stuScene; // 窗口信息 }NET_OUT_SPLIT_GET_SCENE; ///@brief 电视墙轮巡状态 typedef enum tagEM_NET_WM_TOUR_STATUS { EM_NET_WM_TOUR_STATUS_UNKNOWN, // 未知 EM_NET_WM_TOUR_STATUS_START, // 轮巡中 EM_NET_WM_TOUR_STATUS_STOP, // 轮巡停止 } EM_NET_WM_TOUR_STATUS; ///@brief 电视墙预案轮巡状态信息 typedef struct tagNET_WM_TOUR_STATUS_INFO { DWORD dwSize; EM_NET_WM_TOUR_STATUS emStatus; // 轮巡状态 DH_MONITORWALL_SCENE stuScene; // 预案信息 } NET_WM_TOUR_STATUS_INFO; ///@brief 电视墙预案轮巡状态回调函数原形, lAttachHandle是CLIENT_MonitorWallAttachTour的返回值 typedef void (CALLBACK *fMonitorWallTourStatusCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_WM_TOUR_STATUS_INFO* pstStatus, void* reserved, LDWORD dwUser); ///@brief CLIENT_MonitorWallAttachTour 接口输入参数 typedef struct tagNET_IN_WM_ATTACH_TOUR { DWORD dwSize; int nMonitorWallID; // 电视墙ID fMonitorWallTourStatusCallBack cbStatus; // 轮巡状态回调函数 LDWORD dwUser; // 轮巡状态回调参数 } NET_IN_WM_ATTACH_TOUR; ///@brief CLIENT_MonitorWallAttachTour 接口输出参数 typedef struct tagNET_OUT_WM_ATTACH_TOUR { DWORD dwSize; } NET_OUT_WM_ATTACH_TOUR; ///@brief CLIENT_SnapManagerConfirmUpload 接口输入参数 typedef struct tagNET_IN_SNAP_MANAGER_CONFIRM_UPLOAD { DWORD dwSize; char szFilePath[DH_COMMON_STRING_256]; // 文件路径,用于唯一标识是哪一个图片 BOOL bResult; // 图片是否上传完成 }NET_IN_SNAP_MANAGER_CONFIRM_UPLOAD; ///@brief CLIENT_SnapManagerConfirmUpload 接口输出参数 typedef struct tagNET_OUT_SNAP_MANAGER_CONFIRM_UPLOAD { DWORD dwSize; }NET_OUT_SNAP_MANAGER_CONFIRM_UPLOAD; ///@brief CLIENT_SnapManagerGetCaps 接口输入参数 typedef struct tagNET_IN_SNAP_MANAGER_GET_CAPS { DWORD dwSize; }NET_IN_SNAP_MANAGER_GET_CAPS; ///@brief 手动抓图能力 typedef struct tagNET_MANUAL_SNAPSHOT { BOOL bDeviceSnapshot; // 是否使用设备端抓图 true-设备端抓图,false-控件抓图, 无此能力使用控件抓图 char szReserved[128]; // 预留字节 }NET_MANUAL_SNAPSHOT; ///@brief 离线重传能力 typedef struct tagNET_TRANSFER_OFFLINE { BOOL bEnable; // 是否支持离线重传 true: 支持 false: 不支持 UINT nMaxOfflines; // 支持的最大离线传输的客户端个数 char szReserved[128]; // 预留字节 }NET_TRANSFER_OFFLINE; ///@brief 支持的加密算法 typedef enum tagEM_ALGORITHM_LIST { EM_ALGORITHM_LIST_UNKNOWN, // 未知 EM_ALGORITHM_LIST_AES256_OFB, // "AES256-OFB" EM_ALGORITHM_LIST_SM1_OFB, // "SM1-OFB" EM_ALGORITHM_LIST_SM4_OFB, // "SM4-OFB" }EM_ALGORITHM_LIST; ///@brief 图片加密上报 typedef struct tagNET_SUPPORT_ENCRYPT_NOTIFY { BOOL bEnable; // 是否支持图片加密上报 true: 支持 false: 不支持 int nAlgorithmListNum; // 支持的加密算法个数 EM_ALGORITHM_LIST emAlgorithmList[8]; // 支持的加密算法 char szReserved[128]; // 预留字节 }NET_SUPPORT_ENCRYPT_NOTIFY; ///@brief 抓图能力集 typedef struct tagNET_SNAP_MANAGER_CAPS_INFO { BOOL bSupportSnapSchedule; // 是否支持抓图计划 true支持,false不支持。默认false BOOL bSupportFtpPathMode; // 是否支持订阅图片时的PathMode同步异步模式 true-支持同步和异步模式,false或者无此字段-仅支持异步模式 BOOL bSupportFtpUpNoplate; // FTP手动上传是否支持无牌车过滤功能 true:支持 false:不支持 BOOL bSupportPicLocalURL; // 是否支持上报图片URL地址 true:支持 false:不支持 NET_MANUAL_SNAPSHOT stuManualSnapshot; // 手动抓图能力 NET_TRANSFER_OFFLINE stuTransferOffline; // 离线重传能力 NET_SUPPORT_ENCRYPT_NOTIFY stuSupportEncryptNotify; // 图片加密上报 char szReserved[128]; // 预留字节 }NET_SNAP_MANAGER_CAPS_INFO; ///@brief CLIENT_SnapManagerGetCaps 接口输出参数 typedef struct tagNET_OUT_SNAP_MANAGER_GET_CAPS { DWORD dwSize; NET_SNAP_MANAGER_CAPS_INFO stuCaps; // 抓图能力集 }NET_OUT_SNAP_MANAGER_GET_CAPS; ///@brief CLIENT_SnapManagerStoragePicture 接口输入参数 typedef struct tagNET_IN_SNAP_MANAGER_STORAGE_PICTURE { DWORD dwSize; int nChannel; // 通道号 -1 代码所有通道 BOOL bStorageWholePic; // 保存大图到存储设备 true 开启 false 关闭 }NET_IN_SNAP_MANAGER_STORAGE_PICTURE; ///@brief CLIENT_SnapManagerStoragePicture 接口输出参数 typedef struct tagNET_OUT_SNAP_MANAGER_STORAGE_PICTURE { DWORD dwSize; }NET_OUT_SNAP_MANAGER_STORAGE_PICTURE; ///@brief 视频电话状态信息 typedef struct tagNET_VTP_CALL_STATE_INFO { DWORD dwSize; char szNumber[DH_COMMON_STRING_128]; // 呼叫号码 char szCallID[DH_COMMON_STRING_128]; // 对讲唯一标识 EM_NET_VTP_CALL_STATE_TYPE emCallState; // 呼叫状态 }NET_VTP_CALL_STATE_INFO; ///@brief 订阅视频电话状态信息回调函数原型 typedef void (CALLBACK *fVTPCallStateCallBack)(LLONG lAttachHandle, NET_VTP_CALL_STATE_INFO *pInfo, int nBufLen, LDWORD dwUser); ///@brief 订阅视频电话状态信息 输入参数 typedef struct tagNET_IN_VTP_CALL_STATE_ATTACH { DWORD dwSize; EM_NET_VTP_CALL_TYPE emCallType; // 待查询的呼叫类型 fVTPCallStateCallBack cbCallState; // 状态回调函数 LDWORD dwUser; // 用户参数 const char* szTargetID; // 待转发的设备ID, 为NULL表示不转发 }NET_IN_VTP_CALL_STATE_ATTACH; ///@brief 订阅视频电话状态信息 输出参数 typedef struct tagNET_OUT_VTP_CALL_STATE_ATTACH { DWORD dwSize; }NET_OUT_VTP_CALL_STATE_ATTACH; ////////////////////////////////////////////////////////////////////// ///@brief 公交业务相关接口参数 ////////////////////////////////////////////////////////////////////// ///@brief 检查公交线路CLIENT_CheckBusLine()输入参数 typedef struct tagNET_IN_CHECK_BUS_LINE { DWORD dwSize; char szLineID[DH_COMMON_STRING_32]; // 线路标示 char szDesignation[DH_COMMON_STRING_32]; // 线路番号 NET_LINE_DIRECTION emDirection; // 线路方向 int nSiteCount; // 线路总站数 char szDirectionName[DH_COMMON_STRING_32]; // 线路方向名称 char szVersion[DH_COMMON_STRING_32]; // 线路版本号 }NET_IN_CHECK_BUS_LINE; ///@brief 公交线路是否需要更新状态类型 typedef enum tagNET_BUS_LINE_UPDATE_TYPE { NET_BUS_LINE_UPDATE_UNKNOWN = 0, NET_BUS_LINE_UPDATE_UPDATED, // 需要更新 NET_BUS_LINE_UPDATE_NOT_UPDATED, // 不需要更新 }NET_BUS_LINE_UPDATE_TYPE; ///@brief 检查公交线路CLIENT_CheckBusLine()输出参数 typedef struct tagNET_OUT_CHECK_BUS_LINE { DWORD dwSize; char szDeviceID[DH_COMMON_STRING_32]; // 设备ID char szLineID[DH_COMMON_STRING_32]; // 线路标示 NET_BUS_LINE_UPDATE_TYPE emUpdate; // 是否需要更新状态指示 }NET_OUT_CHECK_BUS_LINE; #define MAX_SITE_GPS_POINT_NUM 64 // 描述一个公交站点最大GPS点个数 ///@brief 公交站点区域形状类型 typedef enum tagNET_SITE_AREA_TYPE { NET_SITE_AREA_ENCLOSURE = 0, // 围栏型 NET_SITE_AREA_CIRCLE, // 圆形 }NET_SITE_AREA_TYPE; ///@brief 对应线路的拐点信息 typedef struct tagNET_FLEXION_INFO { int nLimitDistance; // 判断线路偏移的限制距离,单位:米 int nPointArrayNum; // 拐点的个数(用户设置的个数) GPS_POINT stuPoint[MAX_SITE_GPS_POINT_NUM]; // 拐点信息 GPS_POINT *pStuPoint; // 拐点信息(超过64个拐点可以选择指针方式获取,最大支持512) int nPointNum; // 下发拐点信息个数,内存由客户申请 int nLimitDuration; // 判断线路偏移超出限制距离的持续时间 单位秒 BYTE byReserved[1008]; // 预留字节 }NET_FLEXION_INFO; ///@brief 公交站点信息 typedef struct tagNET_BUS_SITE_INFO { DWORD dwSize; char szLineID[DH_COMMON_STRING_32]; // 线路标示 int nSiteCount; // 线路总站数 NET_LINE_DIRECTION emDirection; // 线路方向,不能填成NET_LINE_DIRECTION_UNKNOWN int nStopSequence; // 站点序号 char szSiteID[DH_COMMON_STRING_32]; // 站点ID char szSiteName[DH_COMMON_STRING_32]; // 站点名称 NET_SITE_AREA_TYPE emAreaType; // 站点区域类型 int nGPSPointNum; // 有效GPS点数 GPS_POINT stuPoint[MAX_SITE_GPS_POINT_NUM]; // 站点GPS信息 int nRadius; // 站点半径, 单位: 米, 仅圆形站点有效 int nSpeedLimit; // 站点限速, 单位: km/H int nDriveTime; // 上已站到本站时间, 单位:分钟 int nTicketPrice; // 翻牌票价 DH_TSECT stuPowerSchedule[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 开机时间表, 第一维各元素表示周日~周六和节假日 char szDesignation[DH_COMMON_STRING_64]; // 线路番号 char szDirectionName[DH_COMMON_STRING_64]; // 线路方向名称 char szVersion[DH_COMMON_STRING_32]; BOOL bUseExName; // 是否使用扩展站点名称 char szSiteNameEx[DH_COMMON_STRING_128]; // 站点名称扩展, 长度变大 NET_FLEXION_INFO stuInflexionInfos; // 对应线路的拐点信息 DH_TSECT stuPowerScheduleEx[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM_EX]; // 准行时间段,扩展。每天的前6个时段在TimeSchedule设置,第6个时段开始在TimeScheduleEx设置。 }NET_BUS_SITE_INFO; #define MAX_BUS_STOP_NUM 32 // 一条公交线路最大站点数目 ///@brief 下发公交线路CLIENT_DispatchBusLineInfo()接口输入参数 typedef struct tagNET_IN_DISPATCH_BUS_LINE_INFO { DWORD dwSize; int nBusStopNum; // 公交线路站点个数 NET_BUS_SITE_INFO stuStopInfo[MAX_BUS_STOP_NUM]; // 公交线路信息 }NET_IN_DISPATCH_BUS_LINE_INFO; ///@brief 下发公交线路CLIENT_DispatchBusLineInfo()接口输出参数 typedef struct tagNET_OUT_DISPATCH_BUS_LINE_INFO { DWORD dwSize; }NET_OUT_DISPATCH_BUS_LINE_INFO; ///@brief 下发公交线路CLIENT_DispatchBusLineInfoEx()接口输入参数 typedef struct tagNET_IN_DISPATCH_BUS_LINE_INFO_EX { DWORD dwSize; int nBusStopNum; // 公交线路站点个数 NET_BUS_SITE_INFO *pstuStopInfo; // 公交线路信息,由用户申请内存,大小为sizeof(NET_BUS_SITE_INFO)*nBusStopNum }NET_IN_DISPATCH_BUS_LINE_INFO_EX; ///@brief 下发公交线路CLIENT_DispatchBusLineInfoEx()接口输出参数 typedef struct tagNET_OUT_DISPATCH_BUS_LINE_INFO_EX { DWORD dwSize; }NET_OUT_DISPATCH_BUS_LINE_INFO_EX; ///@brief 服务器地址参数 typedef struct tagNET_BUS_HTTPS_ADDRESS_INFO { char szIPAddress[64]; int nPort; BYTE byReserved[956]; }NET_BUS_HTTPS_ADDRESS_INFO; ///@brief 下发https服务器地址,供设备以https方式上报公交线路、报站信息 CLIENT_DispatchBusHttpsServers 接口输入参数 typedef struct tagNET_IN_DISPATCH_BUS_HTTPS_SERVERS_INFO { DWORD dwSize; int nAddressNum; // 服务器地址个数 NET_BUS_HTTPS_ADDRESS_INFO stuAddress[4]; // 服务器地址参数 char szToken[128]; // https校验字段(目前32字符) }NET_IN_DISPATCH_BUS_HTTPS_SERVERS_INFO; ///@brief 下发https服务器地址,供设备以https方式上报公交线路、报站信息 CLIENT_DispatchBusHttpsServers 接口输出参数 typedef struct tagNET_OUT_DISPATCH_BUS_HTTPS_SERVERS_INFO { DWORD dwSize; }NET_OUT_DISPATCH_BUS_HTTPS_SERVERS_INFO; ///@brief 车辆运营调度CLIENT_BusSchedule()接口输入参数 typedef struct tagNET_IN_BUS_SCHEDULE_INFO { DWORD dwSize; char szLineID[DH_COMMON_STRING_64]; // 运营线路标识 NET_LINE_DIRECTION emDirection; // 运营线路方向 NET_TIME_EX stuStartTime; // 发车时间 }NET_IN_BUS_SCHEDULE_INFO; ///@brief 车辆运营调度CLIENT_BusSchedule()接口输出参数 typedef struct tagNET_OUT_BUS_SCHEDULE_INFO { DWORD dwSize; }NET_OUT_BUS_SCHEDULE_INFO; ///@brief 车辆排班计划信息 typedef struct tagNET_BUS_WORK_PLAN { DWORD dwSize; char szID[DH_COMMON_STRING_32]; // 排班记录唯一标示, 最多16个字符 NET_TIME_EX stuTime; // 发车时间 char szDriverName[DH_COMMON_STRING_64]; // 司机名字 char szStartSite[DH_COMMON_STRING_64]; // 始发站名字 char szEndSite[DH_COMMON_STRING_64]; // 终点站名字 BOOL bRunning; // 运营状态, TRUE:运营, FALSE:停运 }NET_BUS_WORK_PLAN; ///@brief 下发车辆排班计划CLIENT_DispatchWorkPlan接口输入参数 typedef struct tagNET_IN_BUS_DISPATCH_WORK_PLAN { DWORD dwSize; NET_BUS_WORK_PLAN stuWorkPlan; // 车辆排班计划信息 }NET_IN_BUS_DISPATCH_WORK_PLAN; ///@brief 下发车辆排班计划CLIENT_DispatchWorkPlan接口输出参数 typedef struct tagNET_OUT_BUS_DISPATCH_WORK_PLAN { DWORD dwSize; }NET_OUT_BUS_DISPATCH_WORK_PLAN; ///@brief 事件信息 typedef struct tagNET_DISPLAY_EVENT_INFO { int nChannel; // 通道号 char szPlateNumber[32]; // 车牌号 NET_TIME stuEventTime; // 事件时间 BYTE byReserved[452]; // 保留字节 }NET_DISPLAY_EVENT_INFO; ///@brief 下发显示信息 CLIENT_DispatchDisplayInfo 接口输入参数 typedef struct tagNET_IN_DISPATCH_DISPLAY_INFO { DWORD dwSize; char szText[256]; // 显示的文字信息 char szURL[256]; // 显示的图片地址 NET_DISPLAY_EVENT_INFO stuEventInfo; // 显示的事件信息 }NET_IN_DISPATCH_DISPLAY_INFO; ///@brief 下发显示信息 CLIENT_DispatchDisplayInfo 接口输出参数 typedef struct tagNET_OUT_DISPATCH_DISPLAY_INFO { DWORD dwSize; }NET_OUT_DISPATCH_DISPLAY_INFO; ///@brief 热成像色彩 typedef enum tagNET_THERMO_COLORIZATION { NET_THERMO_COLORIZATION_UNKNOWN, // 未知 NET_THERMO_COLORIZATION_WHITE_HOT, // 白热 NET_THERMO_COLORIZATION_BLACK_HOT, // 黑热 NET_THERMO_COLORIZATION_IRONBOW2, // 铁虹2 NET_THERMO_COLORIZATION_ICEFIRE, // 冰火 NET_THERMO_COLORIZATION_FUSION, // 融合 NET_THERMO_COLORIZATION_RAINBOW, // 彩虹 NET_THERMO_COLORIZATION_GLOBOW, // NET_THERMO_COLORIZATION_IRONBOW1, // 铁虹1 NET_THERMO_COLORIZATION_SEPIA, // 深褐 NET_THERMO_COLORIZATION_COLOR1, // 彩色1 NET_THERMO_COLORIZATION_COLOR2, // 彩色2 NET_THERMO_COLORIZATION_RAIN, // 雨天 NET_THERMO_COLORIZATION_RED_HOT, // 红热 NET_THERMO_COLORIZATION_GREEN_HOT, // 绿热 NET_THERMO_COLORIZATION_SPRING, // 春天 NET_THERMO_COLORIZATION_SUMMER, // 夏天 NET_THERMO_COLORIZATION_WINTER, // 冬天 NET_THERMO_COLORIZATION_AUTUMN, // 秋天 NET_THERMO_COLORIZATION_ALARM, // 伪彩 } NET_THERMO_COLORIZATION; ///@brief 热成像感兴趣区域模式 typedef enum tagNET_THERMO_ROI { NET_THERMO_ROI_UNKNOWN, // 未知 NET_THERMO_ROI_FULL_SCREEN, // 全屏 NET_THERMO_ROI_SKY, // 顶部 NET_THERMO_ROI_GROUND, // 中部 NET_THERMO_ROI_HORIZONTAL, // 底部 NET_THERMO_ROI_CENTER_75, // 中心点 75% NET_THERMO_ROI_CENTER_50, // 中心点 50% NET_THERMO_ROI_CENTER_25, // 中心点 25% NET_THERMO_ROI_CUSTOM, // 自定义 } NET_THERMO_ROI; ///@brief 热成像模式 typedef enum tagNET_THERMO_MODE { NET_THERMO_MODE_UNKNOWN, // 未知 NET_THERMO_MODE_DEFAULT, // 默认 NET_THERMO_MODE_INDOOR, // 室内 NET_THERMO_MODE_OUTDOOR, // 室外 } NET_THERMO_MODE; ///@brief 热成像优化区域 typedef struct tagNET_THERMO_GRAPHY_OPT_REGION { BOOL bOptimizedRegion; // 是否开启优化区域 int nOptimizedROIType; // 优化区域类型,见NET_THERMO_ROI int nCustomRegion; // 自定义区域个数 NET_RECT stCustomRegions[64]; // 自定义区域,仅在 nOptimizedROIType 为 NET_THERMO_ROI_CUSTOM 时有效 char Reserved[256]; } NET_THERMO_GRAPHY_OPTREGION; ///@brief 热成像信息 typedef struct tagNET_THERMO_GRAPHY_INFO { int nBrightness; // 亮度 int nSharpness; // 锐度 int nEZoom; // 倍数 int nThermographyGamma; // 伽马值 int nColorization; // 色彩,见NET_THERMO_COLORIZATION int nSmartOptimizer; // 优化指数 NET_THERMO_GRAPHY_OPTREGION stOptRegion; // 优化区域 int nAgc; // 自动增益控制 int nAgcMaxGain; // 最大自动增益 int nAgcPlateau; // 增益均衡 char reserved[244]; } NET_THERMO_GRAPHY_INFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_PRESET 命令入参 typedef struct tagNET_IN_THERMO_GET_PRESETINFO { DWORD dwSize; int nChannel; // 通道号 NET_THERMO_MODE emMode; // 模式 } NET_IN_THERMO_GET_PRESETINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_PRESET 命令出参 typedef struct tagNET_OUT_THERMO_GET_PRESETINFO { DWORD dwSize; NET_THERMO_GRAPHY_INFO stInfo; // 热成像信息 } NET_OUT_THERMO_GET_PRESETINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO 命令入参 typedef struct tagNET_IN_THERMO_GET_EXTSYSINFO { DWORD dwSize; int nChannel; // 通道号 } NET_IN_THERMO_GET_EXTSYSINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_LINKCHANNELS 命令入参 typedef struct tagNET_IN_GET_LINKCHANNELS { DWORD dwSize; int nChannel; // 通道号,查询该视频通道号是否有关联的视频通道 } NET_IN_GET_LINKCHANNELS; #define NET_LINKCHANNEL_MAX 512 // 最大关联的视频通道个数 #define NET_LINKGROUP_MAX 64 // 最大关联的视频通道组个数 ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_LINKCHANNELS 命令出参 typedef struct tagNET_OUT_GET_LINKCHANNELS { DWORD dwSize; int nLinkedCnt; // 关联的视频通道号个数 int nLinked[NET_LINKCHANNEL_MAX]; // 关联的视频通道号,包括请求通道号在内 } NET_OUT_GET_LINKCHANNELS; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_ALLLINKCHANNELS 命令入参 typedef struct tagNET_IN_GET_ALLLINKCHANNELS { DWORD dwSize; } NET_IN_GET_ALLLINKCHANNELS; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_ALLLINKCHANNELS 命令出参 typedef struct tagNET_OUT_GET_ALLLINKCHANNELS { DWORD dwSize; int nGroupCnt; // 关联的视频通道组个数 int nLinkedCnt[NET_LINKGROUP_MAX]; // 每组关联的视频通道号个数 int nLinked[NET_LINKGROUP_MAX][NET_LINKCHANNEL_MAX]; // 关联的视频通道号,包括请求通道号在内 // 第一维表示通道组,第二维表示通道号 // 例如,nLinked[1][2] 表示第二个通道组的第三个关联通道 } NET_OUT_GET_ALLLINKCHANNELS; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_CAMERA_STATE 命令入参 typedef struct tagNET_IN_GET_CAMERA_STATEINFO { DWORD dwSize; BOOL bGetAllFlag; // 是否查询所有摄像机状态,若该成员为 TRUE,则 nChannels 成员无需设置 int nValidNum; // 该成员,bGetAllFlag 为 FALSE时有效,表示 nChannels 成员有效个数 int nChannels[DH_MAX_CAMERA_CHANNEL_NUM]; // 该成员,bGetAllFlag 为 FALSE时有效,将需要查询的通道号依次填入 } NET_IN_GET_CAMERA_STATEINFO; ///@brief 连接状态 typedef enum tagEM_CAMERA_STATE_TYPE { EM_CAMERA_STATE_TYPE_UNKNOWN, // 未知 EM_CAMERA_STATE_TYPE_CONNECTING, // 正在连接 EM_CAMERA_STATE_TYPE_CONNECTED, // 已连接 EM_CAMERA_STATE_TYPE_UNCONNECT, // 未连接 EM_CAMERA_STATE_TYPE_EMPTY, // 通道未配置,无信息 EM_CAMERA_STATE_TYPE_DISABLE, // 通道有配置,但被禁用 }EM_CAMERA_STATE_TYPE; ///@brief 摄像机通道信息 typedef struct tagNET_CAMERA_STATE_INFO { int nChannel; // 摄像机通道号, -1表示通道号无效 EM_CAMERA_STATE_TYPE emConnectionState; // 连接状态 BOOL bCapsState; // 当前通道是否从前端获取到能力(可以用于表示模拟通道是否在线) BOOL bIsCapsStateValid; // bCapsState是否有效 char szReserved[1016]; // 保留字节 }NET_CAMERA_STATE_INFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_CAMERA_STATE 命令出参 typedef struct tagNET_OUT_GET_CAMERA_STATEINFO { DWORD dwSize; int nValidNum; // 查询到的摄像机通道状态有效个数,由sdk返回 int nMaxNum; // pCameraStateInfo 数组最大个数,由用户填写 NET_CAMERA_STATE_INFO* pCameraStateInfo; // 摄像机通道信息数组,由用户分配,大小为sizeof(NET_CAMERA_STATE_INFO)*nMaxNum } NET_OUT_GET_CAMERA_STATEINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_REMOTE_CHANNEL_AUDIO_ENCODE 命令入参 typedef struct tagNET_IN_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO { DWORD dwSize; int nChannel; // 通道号 填-1可以获取设备自身音频对讲能力, 0-n代表对于通道音频对讲能力 int nStreamType; // 码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3;4:对讲流 } NET_IN_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_REMOTE_CHANNEL_AUDIO_ENCODE 命令出参 typedef struct tagNET_OUT_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO { DWORD dwSize; int nValidNum; // 有效音频编码个数 DHDEV_TALKDECODE_INFO stuListAudioEncode[MAX_AUDIO_ENCODE_NUM]; // 音频编码列表 } NET_OUT_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_COMM_PORT_INFO 命令入参 typedef struct tagNET_IN_GET_COMM_PORT_INFO { DWORD dwSize; } NET_IN_GET_COMM_PORT_INFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_COMM_PORT_INFO 命令出参 ///@brief 串口类型 typedef enum tagEM_COMM_PORT_TYPE_INFO { EM_COMM_PORT_TYPE_UNKNOW = 0 , EM_COMM_PORT_TYPE_RS232 , EM_COMM_PORT_TYPE_RS485 , EM_COMM_PORT_TYPE_RS422 , EM_COMM_PORT_TYPE_RS485_422 , }EM_COMM_PORT_TYPE_INFO; ///@brief 串口信息 typedef struct tagNET_COMM_PORT_INFO { EM_COMM_PORT_TYPE_INFO emCommPortType; //串口类型 int nCommPortNum; //串口数量 BYTE bReserved[1024]; //保留字节 }NET_COMM_PORT_INFO; #define MAX_COMM_PORT_NUM 8 ///@brief 获取设备串口信息 typedef struct tagNET_OUT_GET_COMM_PORT_INFO { DWORD dwSize; int nPortInfosNum; //串口信息数 NET_COMM_PORT_INFO stCommPortInfos[MAX_COMM_PORT_NUM]; //串口信息 } NET_OUT_GET_COMM_PORT_INFO; ///@brief 外部系统信息 typedef struct tagNET_THERMO_SYSINFO { char szSerialNumber[64]; // 序列号 char szSoftwareVersion[64]; // 软件版本 char szFirmwareVersion[64]; // 固件版本 char szLibVersion[64]; // 库版本 char reserved[256]; } NET_THERMO_SYSINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO 命令出参 typedef struct tagNET_OUT_THERMO_GET_EXTSYSINFO { DWORD dwSize; NET_THERMO_SYSINFO stInfo; // 外部系统信息 } NET_OUT_THERMO_GET_EXTSYSINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION 命令入参 typedef struct tagNET_IN_THERMO_GET_OPTREGION { DWORD dwSize; int nChannel; // 通道号 } NET_IN_THERMO_GET_OPTREGION; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION 命令出参 typedef struct tagNET_OUT_THERMO_GET_OPTREGION { DWORD dwSize; NET_THERMO_GRAPHY_OPTREGION stInfo; // 优化区域信息 } NET_OUT_THERMO_GET_OPTREGION; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_VIDEOOUTPUTCHANNELS 命令入参 typedef struct tagNET_IN_GET_VIDEOOUTPUTCHANNELS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_IN_GET_VIDEOOUTPUTCHANNELS) } NET_IN_GET_VIDEOOUTPUTCHANNELS; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_VIDEOOUTPUTCHANNELS 命令出参 typedef struct tagNET_OUT_GET_VIDEOOUTPUTCHANNELS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_GET_VIDEOOUTPUTCHANNELS) int nMaxLocal; // 最大本地输出通道总数,含主板和可插拔子卡通道 } NET_OUT_GET_VIDEOOUTPUTCHANNELS; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_VIDEOINFO 命令入参 typedef struct tagNET_IN_GET_VIDEOINFO { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_IN_GET_VIDEOINFO) } NET_IN_GET_VIDEOINFO; ///@brief 解码通道状态 typedef enum tagNET_VIDEOCHANNEL_STATE { NET_VIDEOCHANNEL_STATE_UNKNOWN, // 未知状态 NET_VIDEOCHANNEL_STATE_IDLE, // 空闲 NET_VIDEOCHANNEL_STATE_PLAY, // 播放 NET_VIDEOCHANNEL_STATE_MONITOR, // 预览 NET_VIDEOCHANNEL_STATE_TOUR, // 轮询 } NET_VIDEOCHANNEL_STATE; ///@brief 解码通道信息 typedef struct tagNET_VIDEOCHANNELINFO { BOOL bEnable; // 通道使能状态, 状态为true时,GB28181协议会将这个通道上报服务器 NET_VIDEOCHANNEL_STATE emVideoChannelState; // 解码通道状态 int nNetflow; // 网络流量(单位:kbps) int nBitrate; // 码率(单位:kbps) int nFrame; // 帧率 CAPTURE_SIZE emResolution; // 分辨率 BYTE byReserved[512]; // 预留字节 } NET_VIDEOCHANNELINFO; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_GET_VIDEOINFO 命令出参 typedef struct tagNET_OUT_GET_VIDEOINFO { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_GET_VIDEOINFO) int nVideoInfoNum; // 用户需要获取的解码通道信息个数,从0开始获取,用户指定 NET_VIDEOCHANNELINFO* pNetVideoChannelInfo; // 解码通道信息列表,用户申请空间,用户申请列表个数和nVideoInfoNum一致,申请内存大小为sizeof(NET_VIDEOCHANNELINFO)*nVideoInfoNum int nRetVideoInfoNum; // 返回实际获取到的解码通道信息个数,SDK返回 } NET_OUT_GET_VIDEOINFO; ///@brief CLIENT_ControlDeviceEx 接口 NET_CTRL_DEV_THERMO_GRAPHY_ENSHUTTER 命令入参 typedef struct tagNET_IN_THERMO_EN_SHUTTER { DWORD dwSize; int nChannel; // 通道号 BOOL bEnable; // 开关shutter,TRUE 开,FALSE 关 } NET_IN_THERMO_EN_SHUTTER; ///@brief CLIENT_ControlDeviceEx 接口 NET_CTRL_DEV_THERMO_GRAPHY_ENSHUTTER 命令出参 typedef struct tagNET_OUT_THERMO_EN_SHUTTER { DWORD dwSize; } NET_OUT_THERMO_EN_SHUTTER; ///@brief CLIENT_ControlDeviceEx 接口 DH_CTRL_THERMO_DO_FFC 命令入参 typedef struct tagNET_IN_THERMO_DO_FFC { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_IN_THERMO_DO_FFC) int nChannel; // 通道号(双目热成像相机填写热成像通道1); } NET_IN_THERMO_DO_FFC; ///@brief CLIENT_ControlDeviceEx 接口 DH_CTRL_THERMO_DO_FFC 命令出参 typedef struct tagNET_OUT_THERMO_DO_FFC { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_THERMO_DO_FFC) } NET_OUT_THERMO_DO_FFC; ///@brief CLIENT_ControlDeviceEx 接口 DH_CTRL_THERMO_FIX_FOCUS 命令入参(此方法只有在双目相机中才有效) typedef struct tagNET_IN_THERMO_FIX_FOCUS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_IN_THERMO_FIX_FOCUS) int anLinkVideoChannel[2]; // 定焦关联通道([0]为可见光通道号0,[1]为热成像通道号1) double dSpeed; // 聚焦速度,归一化到0~1(热成像通道有效) } NET_IN_THERMO_FIX_FOCUS; ///@brief CLIENT_ControlDeviceEx 接口 DH_CTRL_THERMO_FIX_FOCUS 命令出参(此方法只有在双目相机中才有效) typedef struct tagNET_OUT_THERMO_FIX_FOCUS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_THERMO_FIX_FOCUS) } NET_OUT_THERMO_FIX_FOCUS; ///@brief CLIENT_GetDevCaps 接口 NET_THERMO_GRAPHY_CAPS 命令入参 typedef struct tagNET_IN_THERMO_GETCAPS { DWORD dwSize; int nChannel; // 通道号 } NET_IN_THERMO_GETCAPS; ///@brief CLIENT_GetDevCaps 接口 NET_THERMO_GRAPHY_CAPS 命令出参 typedef struct tagNET_OUT_THERMO_GETCAPS { DWORD dwSize; DWORD dwModes; // 支持的预置模式掩码 DWORD dwColorization; // 预置着色模式掩码 颜色依次如下,按位表示 // "White Hot" // "Black Hot" // "Fusion" // "Rainbow" // "Globow" // "Ironbow1" // "Ironbow2" // "Sepia" // "Color1" // "Color2" // "Icefire" // "Rain" // "Red Hot" // "Green Hot" // "Spring" // "Summer" // "Winter" // "Autumn" // "Alarm" DWORD dwROIModes; // 预置感兴趣区域模式掩码 RANGE stBrightness; // 亮度相关能力 RANGE stSharpness; // 锐度相关能力 RANGE stEZoom; // 倍数相关能力 RANGE stThermographyGamma; // 伽马相关能力 RANGE stSmartOptimizer; // 优化参数相关能力 NET_FFCPERIOD_RANGE stFFCPeriod; // 平场聚焦校准相关能力 } NET_OUT_THERMO_GETCAPS; ///@brief CLIENT_GetDevCaps 接口 NET_RADIOMETRY_CAPS 命令入参 typedef struct tagNET_IN_RADIOMETRY_GETCAPS { DWORD dwSize; int nChannel; // 通道号 } NET_IN_RADIOMETRY_GETCAPS; ///@brief 测温模式的类型 typedef enum tagNET_RADIOMETRY_METERTYPE { NET_RADIOMETRY_METERTYPE_UNKNOWN, NET_RADIOMETRY_METERTYPE_SPOT, // 点 NET_RADIOMETRY_METERTYPE_LINE, // 线 NET_RADIOMETRY_METERTYPE_AREA, // 区域 } NET_RADIOMETRY_METERTYPE; ///@brief 点,线,区域总个数能力 typedef struct tagNET_RADIOMETRY_TOTALNUM { DWORD dwMaxNum; // 最多支持个数 DWORD dwMaxSpots; // 最多点的个数 DWORD dwMaxLines; // 最多划线的条数 DWORD dwMaxAreas; // 最多区域的个数 char reserved[32]; } NET_RADIOMETRY_TOTALNUM; ///@brief CLIENT_GetDevCaps 接口 NET_RADIOMETRY_CAPS 命令出参 typedef struct tagNET_OUT_RADIOMETRY_GETCAPS { DWORD dwSize; NET_RADIOMETRY_TOTALNUM stTotalNum; // 点,线,区域总个数能力 DWORD dwMaxPresets; // 最多测温预置点的个数 DWORD dwMeterType; // 测温模式的类型掩码,见NET_RADIOMETRY_METERTYPE RANGE stObjectEmissivity; // 辐射系数相关能力 RANGE stObjectDistance; // 距离相关能力 RANGE stReflectedTemperature; // 反射温度相关能力 RANGE stRelativeHumidity; // 相对湿度相关能力 RANGE stAtmosphericTemperature; // 大气温度相关能力 int nStatisticsMinPeriod; // 测温点统计功能最小存储数据间隔 单位为秒 float fIsothermMaxTemp; // 色标条最高的温度值 float fIsothermMinTemp; // 色标条最低的温度值 } NET_OUT_RADIOMETRY_GETCAPS; ///@brief 测温信息 typedef struct tagNET_RADIOMETRYINFO { int nMeterType; // 返回测温类型,见NET_RADIOMETRY_METERTYPE int nTemperUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT float fTemperAver; // 点的温度或者平均温度 点的时候 只返回此字段 float fTemperMax; // 最高的温度 float fTemperMin; // 最低的温度 float fTemperMid; // 中间温度值 float fTemperStd; // 标准方差值 char reserved[64]; } NET_RADIOMETRYINFO; ///@brief 获取测温项温度的条件 typedef struct tagNET_RADIOMETRY_CONDITION { int nPresetId; // 预置点编号 int nRuleId; // 规则编号 int nMeterType; // 测温项类别,见NET_RADIOMETRY_METERTYPE char szName[64]; // 测温项的名称,从测温配置规则名字中选取 int nChannel; // 通道号 char reserved[256]; } NET_RADIOMETRY_CONDITION; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令入参 typedef struct tagNET_IN_RADIOMETRY_GETPOINTTEMPER { DWORD dwSize; int nChannel; // 通道号 DH_POINT stCoordinate; // 测温点的坐标,坐标值 0~8191 } NET_IN_RADIOMETRY_GETPOINTTEMPER; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令出参 typedef struct tagNET_OUT_RADIOMETRY_GETPOINTTEMPER { DWORD dwSize; NET_RADIOMETRYINFO stPointTempInfo; // 获取测温点的参数值 } NET_OUT_RADIOMETRY_GETPOINTTEMPER; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令入参 typedef struct tagNET_IN_RADIOMETRY_GETTEMPER { DWORD dwSize; NET_RADIOMETRY_CONDITION stCondition; // 获取测温项温度的条件 } NET_IN_RADIOMETRY_GETTEMPER; ///@brief CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令出参 typedef struct tagNET_OUT_RADIOMETRY_GETTEMPER { DWORD dwSize; NET_RADIOMETRYINFO stTempInfo; // 获取测温参数值 } NET_OUT_RADIOMETRY_GETTEMPER; ///@brief CLIENT_ControlDeviceEx 接口 NET_CTRL_DEV_RADIOMETRY_SETOSDMARK 命令入参 typedef struct tagNET_IN_RADIOMETRY_SETOSDMARK { DWORD dwSize; NET_RADIOMETRY_CONDITION stCondition; // 需要设置 osd 的测温项的匹配条件 } NET_IN_RADIOMETRY_SETOSDMARK; ///@brief CLIENT_ControlDeviceEx 接口 NET_CTRL_DEV_RADIOMETRY_SETOSDMARK 命令出参 typedef struct tagNET_OUT_RADIOMETRY_SETOSDMARK { DWORD dwSize; } NET_OUT_RADIOMETRY_SETOSDMARK; ///@brief 热成像查询保存周期 typedef enum tagEM_RADIOMETRY_PERIOD { EM_RADIOMETRY_PERIOD_UNKNOWN, // 未知 EM_RADIOMETRY_PERIOD_5 = 5, // 5分钟记录表,默认 EM_RADIOMETRY_PERIOD_10 = 10, // 10分钟记录表 EM_RADIOMETRY_PERIOD_15 = 15, // 15分钟记录表 EM_RADIOMETRY_PERIOD_30 = 30, // 30分钟记录表 }EM_RADIOMETRY_PERIOD; ///@brief CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令入参 typedef struct tagNET_IN_RADIOMETRY_STARTFIND { DWORD dwSize; NET_TIME stStartTime; // 查询开始时间 NET_TIME stEndTime; // 查询结束时间 int nMeterType; // 查询类别,见枚举NET_RADIOMETRY_METERTYPE int nChannel; // 通道号 EM_RADIOMETRY_PERIOD emPeriod; // 所查询表的保存周期 } NET_IN_RADIOMETRY_STARTFIND; ///@brief CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令出参 typedef struct tagNET_OUT_RADIOMETRY_STARTFIND { DWORD dwSize; int nFinderHanle; // 取到的查询句柄 int nTotalCount; // 符合此次查询条件的结果总条数 } NET_OUT_RADIOMETRY_STARTFIND; #define NET_RADIOMETRY_DOFIND_MAX 32 ///@brief CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令入参 typedef struct tagNET_IN_RADIOMETRY_DOFIND { DWORD dwSize; int nFinderHanle; // 查询句柄 int nBeginNumber; // 本次查询开始的索引号 int nCount; // 本次查询条数,最大为NET_IN_RADIOMETRY_DOFIND_MAX } NET_IN_RADIOMETRY_DOFIND; ///@brief 返回查询结果 typedef struct tagNET_RADIOMETRY_QUERY { NET_TIME stTime; // 记录时间 int nPresetId; // 预置点编号 int nRuleId; // 规则编号 char szName[64]; // 查询项名称 DH_POINT stCoordinate; // 查询测温点坐标(推荐 stCoordinates) int nChannel; // 通道号 NET_RADIOMETRYINFO stTemperInfo; // 测温信息,目前nTemperMid, nTemperStd 成员无效 DH_POINT stCoordinates[8]; // 查询测温点坐标 int nCoordinateNum; // 查询温度点坐标返回的个数 char reserved[220]; } NET_RADIOMETRY_QUERY; ///@brief CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令出参 typedef struct tagNET_OUT_RADIOMETRY_DOFIND { DWORD dwSize; int nFound; // 实际查询到的点数 NET_RADIOMETRY_QUERY stInfo[NET_RADIOMETRY_DOFIND_MAX]; // 温度统计信息 } NET_OUT_RADIOMETRY_DOFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令入参 typedef struct tagNET_IN_RADIOMETRY_STOPFIND { DWORD dwSize; int nFinderHanle; // 查询句柄 } NET_IN_RADIOMETRY_STOPFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令出参 typedef struct tagNET_OUT_RADIOMETRY_STOPFIND { DWORD dwSize; } NET_OUT_RADIOMETRY_STOPFIND; ///@brief 热成像测温点报警结果值类型 typedef enum tagNET_RADIOMETRY_RESULT { NET_RADIOMETRY_RESULT_UNKNOWN, NET_RADIOMETRY_RESULT_VAL, // 具体值 NET_RADIOMETRY_RESULT_MAX, // 最大 NET_RADIOMETRY_RESULT_MIN, // 最小 NET_RADIOMETRY_RESULT_AVR, // 平均 NET_RADIOMETRY_RESULT_STD, // 标准 NET_RADIOMETRY_RESULT_MID, // 中间 NET_RADIOMETRY_RESULT_ISO, // ISO NET_RADIOMETRY_RESULT_DIFF, // 温差 NET_RADIOMETRY_RESULT_SLOPE, // 斜率 } NET_RADIOMETRY_RESULT; ///@brief 热成像测温点报警条件 typedef enum tagNET_RADIOMETRY_ALARMCONTION { NET_RADIOMETRY_ALARMCONTION_UNKNOWN, NET_RADIOMETRY_ALARMCONTION_BELOW, // 小于 NET_RADIOMETRY_ALARMCONTION_MATCH, // 等于 NET_RADIOMETRY_ALARMCONTION_ABOVE, // 大于 } NET_RADIOMETRY_ALARMCONTION; ///@brief 热成像测温点温度异常报警 typedef struct tagALARM_HEATIMG_TEMPER_INFO { char szName[64]; // 温度异常点名称 从测温规则配置项中选择 int nAlarmId; // 报警项编号 int nResult; // 报警结果值 fTemperatureValue 的类型,见枚举 NET_RADIOMETRY_RESULT int nAlarmContion; // 报警条件,见枚举 NET_RADIOMETRY_ALARMCONTION float fTemperatureValue; // 报警温度值 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT DH_POINT stCoordinate; // 报警点的坐标 相对坐标体系,取值均为0~8191 int nPresetID; // 预置点 int nChannel; // 通道号 int nAction; // 0:开始 1:停止 -1:无意义 DH_POLY_POINTS stuAlarmCoordinates; // 报警坐标, 其类型可以是点,线或多边形。替换stCoordinate字段 double dTemperatureMaxValue; // 报警最高的温度值 double dTemperatureMinValue; // 报警最低的温度值 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[140]; } ALARM_HEATIMG_TEMPER_INFO; ///@brief 热成像着火点报警 typedef struct tagALARM_FIREWARNING_INFO { int nPresetId; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 int nState; // 0 - 开始,1 - 结束,-1:无意义 DH_RECT stBoundingBox; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 int nTemperatureUnit; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 float fTemperature; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 unsigned int nDistance; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 GPS_POINT stGpsPoint; // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 int nChannel; // 对应视频通道号 BOOL bIsLeaveFireDetect; // 是否属于离岗火点检测(TRUE:是 FALSE:不是) char reserved[248]; } ALARM_FIREWARNING_INFO; ///@brief 云台控制坐标单元 typedef struct tagPTZ_POSITION_UNIT { int nPositionX; // 云台水平方向角度,范围[0,3599],表示0度到359.9度,度数扩大10倍表示 int nPositionY; // 云台垂直方向角度,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示 int nZoom; // 云台光圈放大倍率,范围[0,127],表示最小倍到最大倍的变倍位置 char szReserve[32]; // 预留32字节 }PTZ_POSITION_UNIT; ///@brief 着火点的GPS坐标 typedef struct tagNET_FIRING_GPS_INFO { DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 DWORD dwLatidude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 double dbAltitude; // 高度, 单位为米 char szReserve[32]; // 预留32字节 } NET_FIRING_GPS_INFO; ///@brief 报警框所属位置 typedef enum tagEM_FIRE_TYPE { EM_FIRE_TYPE_UNKNOWN = -1, // 位置未知 EM_FIRE_TYPE_DETECT_AREA, // 报警框所属检测区 EM_FIRE_TYPE_NO_DETECT_AREA, // 报警框所属非检测区 EM_FIRE_TYPE_DETECT_AREA_ALL, // 检测区和检测区同时存在 }EM_FIRE_TYPE; ///@brief 热成像火情事件信息 typedef struct tagNET_FIREWARNING_INFO { int nPresetId; // 预置点编号 从测温规则配置CFG_RADIOMETRY_RULE_INFO中选择 NET_RECT stuBoundingBox; // 着火点矩形框 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT float fTemperature; // 最高点温度值 同帧检测和差分检测提供 UINT nDistance; // 着火点距离,单位米 0表示无效 GPS_POINT stuGpsPoint; // 着火点经纬度 PTZ_POSITION_UNIT stuPTZPosition; // 云台运行信息 float fAltitude; // 高度(单位:米) UINT nThermoHFOV; // Uint32 热成像横向视角 UINT nThermoVFOV; // Uint32 热成像纵向视角 UINT nFSID; // Uint32 火情编号ID NET_FIRING_GPS_INFO stuFiringGPS; // 着火点的GPS坐标 EM_FIRE_TYPE emFireType; // 报警框所属位置 BYTE reserved[144]; }NET_FIREWARNING_INFO; ///@brief 热成像火情事件信息上报事件 typedef struct tagALARM_FIREWARNING_INFO_DETAIL { int nChannel; // 对应视频通道号 int nWarningInfoCount; // 报警信息个数 NET_FIREWARNING_INFO stuFireWarningInfo[MAX_FIREWARNING_INFO_NUM]; // 具体报警信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[256]; }ALARM_FIREWARNING_INFO_DETAIL; ///@brief 热成像温度预警事件 typedef struct tagALARM_FACE_OVERHEATING_INFO { int nRelativeId; // 目标图片ID,与 NET_FACE_INFO->nRelativeID相同 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT float fTemperature; // 温度值 int nChannelID; // 视频通道 BYTE reserved[124]; }ALARM_FACE_OVERHEATING_INFO; ///@brief 探测器状态 typedef enum tagEM_SENSOR_ABNORMAL_STATUS { NET_SENSOR_ABNORMAL_STATUS_UNKNOWN, NET_SENSOR_ABNORMAL_STATUS_SHORT, // 短路 NET_SENSOR_ABNORMAL_STATUS_BREAK, // 断路 NET_SENSOR_ABNORMAL_STATUS_INTRIDED, // 被拆开 NET_SENSOR_ABNORMAL_STATUS_MASK, // 防遮挡 NET_SENSOR_ABNORMAL_STATUS_NORMAL, // 正常 NET_SENSOR_ABNORMAL_STATUS_OFFLINE, // 离线 NET_SENSOR_ABNORMAL_STATUS_ALARM, // 报警 NET_SENSOR_ABNORMAL_STATUS_FAULT, // 故障 } EM_SENSOR_ABNORMAL_STATUS; ///@brief 事件类型(DH_ALARM_SENSOR_ABNORMAL) 探测器状态异常报警 typedef struct tagALARM_SENSOR_ABNORMAL_INFO { int nAction; // 0:开始 1:停止 int nChannelID; // 视频通道号 NET_TIME_EX stuTime; // 事件发生的时间 EM_SENSOR_ABNORMAL_STATUS emStatus; // 探测器状态 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[124]; // 预留字段 }ALARM_SENSOR_ABNORMAL_INFO; ///@brief 热图元数据信息 typedef struct tagNET_RADIOMETRY_METADATA { int nHeight; // 高 int nWidth; // 宽 int nChannel; // 通道 NET_TIME stTime; // 获取数据时间 int nLength; // 数据大小 char szSensorType[64]; // 机芯类型 int nUnzipParamR; // 解压缩参数R int nUnzipParamB; // 解压缩参数B int nUnzipParamF; // 解压缩参数F int nUnzipParamO; // 解压缩参数O char Reserved[256]; } NET_RADIOMETRY_METADATA; ///@brief 热图数据 typedef struct tagNET_RADIOMETRY_DATA { NET_RADIOMETRY_METADATA stMetaData; // 元数据 BYTE* pbDataBuf; // 热图数据缓冲区(压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压) DWORD dwBufSize; // 热图数据缓冲区大小 char reserved[512]; } NET_RADIOMETRY_DATA; ///@brief 温度分布数据状态回调函数 ///@param[out] LLONG lAttachHandle [OUT] 订阅句柄, CLIENT_RadiometryAttach 的返回值 ///@param[out] NET_RADIOMETRY_DATA* pBuf [OUT] 热图数据信息 ///@param[out] int nBufLen [OUT] 状态信息长度 ///@param[out] LDWORD dwUser 用户数据 ///@return 无 typedef void (CALLBACK *fRadiometryAttachCB)(LLONG lAttachHandle, NET_RADIOMETRY_DATA* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_RadiometryAttach 入参 typedef struct tagNET_IN_RADIOMETRY_ATTACH { DWORD dwSize; int nChannel; // 视频通道号 -1 表示全部 fRadiometryAttachCB cbNotify; // 状态回调函数指针 LDWORD dwUser; // 用户数据 } NET_IN_RADIOMETRY_ATTACH; ///@brief CLIENT_RadiometryAttach 出参 typedef struct tagNET_OUT_RADIOMETRY_ATTACH { DWORD dwSize; } NET_OUT_RADIOMETRY_ATTACH; ///@brief 订阅温度分布数据(热图),pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RadiometryAttach(LLONG lLoginID, const NET_IN_RADIOMETRY_ATTACH* pInParam, NET_OUT_RADIOMETRY_ATTACH* pOutParam, int nWaitTime); ///@brief 取消订阅温度分布数据,lAttachHandle是 CLIENT_RadiometryAttach 的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryDetach(LLONG lAttachHandle); ///@brief CLIENT_RadiometryFetch 入参 typedef struct tagNET_IN_RADIOMETRY_FETCH { DWORD dwSize; int nChannel; // 通道号, 通道号要与订阅时一致, -1除外 } NET_IN_RADIOMETRY_FETCH; ///@brief CLIENT_RadiometryFetch 出参 typedef struct tagNET_OUT_RADIOMETRY_FETCH { DWORD dwSize; int nStatus; // 0: 未知, 1: 空闲, 2: 获取热图中 } NET_OUT_RADIOMETRY_FETCH; ///@brief 通知开始获取热图数据,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryFetch(LLONG lLoginID, const NET_IN_RADIOMETRY_FETCH* pInParam, NET_OUT_RADIOMETRY_FETCH* pOutParam, int nWaitTime); ///@brief CLIENT_GetHeatMapsDirectly 入参 typedef struct tagNET_IN_GET_HEATMAPS_INFO { DWORD dwSize; int nChannel; // 通道号 } NET_IN_GET_HEATMAPS_INFO; ///@brief CLIENT_GetHeatMapsDirectly 出参 typedef struct tagNET_OUT_GET_HEATMAPS_INFO { DWORD dwSize; NET_RADIOMETRY_METADATA stMetaData; // 元数据 DWORD dwMaxDataBufLen; // 热图数据缓存区 pbDataBuf 的大小, 由用户指定 BYTE *pbDataBuf; // 热图数据缓冲区(压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压),需要用户分配空间 DWORD dwRetDataBufLen; // 缓存区中返回的实际文件数据大小 BYTE byReserved[4]; // 字节对齐 } NET_OUT_GET_HEATMAPS_INFO; ///@brief 获取热图数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetHeatMapsDirectly(LLONG lLoginID, const NET_IN_GET_HEATMAPS_INFO* pInParam, NET_OUT_GET_HEATMAPS_INFO* pOutParam, int nWaitTime); ///@brief 热图数据解压与转换接口 ///@param[in]pRadiometryData [IN] 热图数据, 由 fRadiometryAttachCB 获得 ///@param[out]pGrayImg [IN, OUT] 解压后的数据,是一张灰度图, // 传空指针表示不需要此数据 // 用户需保证传入的缓冲区足够大(不小于 图像像素数*sizeof(unsigned short)) // 每个像素对应一个 unsigned short 型数据,表示图像某个像素的热成像灰度(范围 0 ~ 16383), // 低地址对应画面左上角,高地址对应画面右下角 ///@param[out] pTempForPixels [IN, OUT] 每个像素的温度数据 // 不能传空指针,否则,返回失败 // 用户需保证传入的缓冲区足够大(不小于 图像像素数*sizeof(float)) // 每个像素对应一个 float 型数据,表示该像素位置的摄氏温度 // 低地址对应画面左上角,高地址对应画面右下角 ///@return TRUE 成功,FALSE 失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryDataParse(const NET_RADIOMETRY_DATA* pRadiometryData, unsigned short* pGrayImg, float* pTempForPixels); ///@brief CLIENT_GetRadiometryYImage 入参 typedef struct tagNET_IN_RADIOMETRY_Y_IMAGE { DWORD dwSize; int nChannel; // 通道号 }NET_IN_RADIOMETRY_Y_IMAGE; ///@brief CLIENT_GetRadiometryYImage 出参 typedef struct tagNET_OUT_RADIOMETRY_Y_IMAGE { DWORD dwSize; UINT nWidth; // 图像宽 double PTS; // 时间戳(单位是毫秒) UINT nHeight; // 图像高 char* pbDataBuf; // Y数据缓冲区(用户申请内存,大小为Buflen) int nBufLen; // pbDataBuf最大长度 int nBufRet; // 实际返回的长度 }NET_OUT_RADIOMETRY_Y_IMAGE; ///@brief 获取热成像设备的当前Y数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRadiometryYImage(LLONG lLoginID, const NET_IN_RADIOMETRY_Y_IMAGE* pInParam, NET_OUT_RADIOMETRY_Y_IMAGE* pOutParam,int nWaitTime); ///@brief CLIENT_GetRadiometryCurrentHotColdSpotInfo 入参 typedef struct tagNET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO { DWORD dwSize; int nChannel; // 通道号:只有热成像通道有效 } NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO; ///@brief 冷(最低的温度)、热(最高的温度)点信息 typedef struct tagNET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO { NET_POINT stuHotPoint; // 热点坐标,范围:【0~8191】 NET_POINT stuColdPoint; // 冷点坐标,范围:【0~8191】 float fHotSpotValue; // 热点温度值(最高的温度) float fColdSpotValue; // 冷点温度值(最低的温度) int nTemperatrueUnit; // 温度单位,0:摄氏度 1:华氏度 BYTE byReserved[256]; // 保留字节 } NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO; ///@brief CLIENT_GetRadiometryCurrentHotColdSpotInfo 出参 typedef struct tagNET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO { DWORD dwSize; NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO stuCurrentHotColdSpotInfo; // 热成像当前冷(最低的温度)、热(最高的温度)点信息 } NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO; ///@brief 获取热成像当前冷(最低的温度)、热(最高的温度)点信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryGetCurrentHotColdSpotInfo(LLONG lLoginID, const NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO* pInParam, NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO* pOutParam, int nWaitTime); #define MAX_RADIOMETRY_TEMPER_NUM 32 // 最大温度统计信息个数 #define MAX_COORDINATE_NUM 8 // 最大坐标点个数 ///@brief 测温查询类型 typedef enum tagEM_RADIOMETRY_QUERY_TYPE { EM_RADIOMETRY_QUERY_TYPE_UNKNOWN, // 未知 EM_RADIOMETRY_QUERY_TYPE_SPOT, // 点 EM_RADIOMETRY_QUERY_TYPE_AREA, // 区域 EM_RADIOMETRY_QUERY_TYPE_LINE, // 线 } EM_RADIOMETRY_QUERY_TYPE; ///@brief 温度信息 typedef struct tagNET_QUERY_TEMPER_INFO { float fTemperAve; // 平均温度 float fTemperMax; // 最高的温度 float fTemperMin; // 最低的温度 BYTE byReserved[128]; // 保留字节 } NET_QUERY_TEMPER_INFO; ///@brief 测温查询结果信息 typedef struct tagNET_RADIOMETRY_QUERY_INFO { NET_TIME stuTime; // 记录时间 int nPresetId; // 预置点编号 int nRuleId; // 规则编号 EM_RADIOMETRY_QUERY_TYPE emQueryType; // 查询类型 char szName[MAX_COMMON_STRING_64]; // 查询项名称 NET_POINT stuCoordinate[MAX_COORDINATE_NUM]; // 查询测温点坐标 int nChannel; // 通道号 NET_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位 NET_QUERY_TEMPER_INFO stuQueryTemperInfo; // 温度信息 BYTE byReserved[256]; // 保留字节 } NET_RADIOMETRY_QUERY_INFO; ///@brief 测温温度数据 typedef struct tagNET_RADIOMETRY_TEMPER_DATA { int nRadiometryTemperNum; // 测温温度信息个数 NET_RADIOMETRY_QUERY_INFO stuRadiometryTemperInfo[MAX_RADIOMETRY_TEMPER_NUM]; // 测温温度信息 BYTE byReserved[512]; // 保留字节 } NET_RADIOMETRY_TEMPER_DATA; ////////////////////////////////////////////////////////////////////// ///@brief 测温温度数据状态回调函数 ///@param[out] LLONG lAttachTemperHandle [OUT] 订阅句柄, CLIENT_RadiometryAttachTemper 的返回值 ///@param[out] NET_RADIOMETRY_TEMPER_DATA* pBuf [OUT] 测温温度数据 ///@param[out] int nBufLen [OUT] 状态信息长度 ///@param[in] LDWORD dwUser 用户数据 ///@return 无 /////////////////////////////////////////////////////////////////////// typedef void (CALLBACK *fRadiometryAttachTemperCB)(LLONG lAttachTemperHandle, NET_RADIOMETRY_TEMPER_DATA* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_RadiometryAttachTemper 入参 typedef struct tagNET_IN_RADIOMETRY_ATTACH_TEMPER { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 fRadiometryAttachTemperCB cbNotify; // 状态回调函数指针 LDWORD dwUser; // 用户数据 } NET_IN_RADIOMETRY_ATTACH_TEMPER; ///@brief CLIENT_RadiometryAttachTemper 出参 typedef struct tagNET_OUT_RADIOMETRY_ATTACH_TEMPER { DWORD dwSize; } NET_OUT_RADIOMETRY_ATTACH_TEMPER; ///@brief 订阅测温温度数据,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RadiometryAttachTemper(LLONG lLoginID, const NET_IN_RADIOMETRY_ATTACH_TEMPER* pInParam, NET_OUT_RADIOMETRY_ATTACH_TEMPER* pOutParam, int nWaitTime); ///@brief 取消订阅测温温度数据,lAttachTemperHandle是 CLIENT_RadiometryAttachTemper 的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryDetachTemper(LLONG lAttachTemperHandle); ///@brief CLIENT_RadiometryGetRandomRegionTemper 入参 typedef struct tagNET_IN_RADIOMETRY_RANDOM_REGION_TEMPER { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nPointNum; // 有效坐标个数 NET_POINT stuPolygon[8]; // 测温区域的坐标, 8192坐标系 } NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER; ///@brief 随机测温区域的温度信息 typedef struct tagNET_RADIOMETRY_REGION_TEMP_INFO { EM_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位 int nTemperAver; // 获取测温区域平均温度的参数值,精度为0.01,扩大100倍 int nTemperMax; // 获取测温区域最高的温度的参数值,精度为0.01,扩大100倍 int nTemperMin; // 获取测温区域最低的温度的参数值,精度为0.01,扩大100倍 NET_POINT stuTemperMaxPoint; // 随机区域内最高的温度的点的坐标,8192坐标系 NET_POINT stuTemperMinPoint; // 随机区域内最低的温度的点的坐标,8192坐标系 BYTE byReserved[256]; // 保留字节 } NET_RADIOMETRY_REGION_TEMP_INFO; ///@brief CLIENT_RadiometryGetRandomRegionTemper 出参 typedef struct tagNET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER { DWORD dwSize; // 结构体大小 NET_RADIOMETRY_REGION_TEMP_INFO stuRegionTempInfo; // 随机测温区域的温度信息 } NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER; ///@brief 获取测温区域的参数值, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadiometryGetRandomRegionTemper(LLONG lLoginID, const NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER* pInParam, NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER* pOutParam, int nWaitTime); ///@brief CLIENT_IntelliVideoFusionConvertPointIr2Vis 入参 typedef struct tagNET_IN_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS { DWORD dwSize; // 结构体大小 NET_UINT_POINT stuIrInPoint; // 输入参数,热成像通道下的点坐标,8192坐标系 } NET_IN_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS; ///@brief CLIENT_IntelliVideoFusionConvertPointIr2Vis 出参 typedef struct tagNET_OUT_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS { DWORD dwSize; // 结构体大小 NET_UINT_POINT stuVisOutPoint; // 返回参数,转换后的可见光通道下的点坐标,8192坐标系,[0,0]无效的点坐标 } NET_OUT_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS; ///@brief 热成像通道坐标转换为可见光通道坐标 CLIENT_NET_API BOOL CALL_METHOD CLIENT_IntelliVideoFusionConvertPointIr2Vis(LLONG lLoginID, const NET_IN_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS* pInParam, NET_OUT_INTELLIVIDEOFUSION_CONVERT_IR_TO_VIS* pOutParam, int nWaitTime); ///@brief CLIENT_IntelliVideoFusionConvertPointVis2Ir 入参 typedef struct tagNET_IN_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR { DWORD dwSize; // 结构体大小 NET_UINT_POINT stuVisInPoint; // 输入参数,可见光画面中的点坐标,8192坐标系 } NET_IN_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR; ///@brief CLIENT_IntelliVideoFusionConvertPointVis2Ir 出参 typedef struct tagNET_OUT_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR { DWORD dwSize; // 结构体大小 NET_UINT_POINT stuIrOutPoint; // 返回参数,转换后的热成像画面中的点坐标,8192坐标系,[0,0]无效的点坐标 } NET_OUT_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR; ///@brief 可见光通道坐标转换为热成像通道坐标 CLIENT_NET_API BOOL CALL_METHOD CLIENT_IntelliVideoFusionConvertPointVis2Ir(LLONG lLoginID, const NET_IN_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR* pInParam, NET_OUT_INTELLIVIDEOFUSION_CONVERT_VIS_TO_IR* pOutParam, int nWaitTime); ////////////////////////////////////////////////////////////////////// ///@brief 查询流量信息 ////////////////////////////////////////////////////////////////////// ///@brief 获取流量信息(入参) typedef struct tagNET_IN_SIM_CARD_FLUX_INFO { DWORD dwSize; // 结构体大小 int nCardIndex; // sim编号 从0开始 }NET_IN_SIM_CARD_FLUX_INFO; #define NET_FLUX_RECORD_MAX_NUM 7 // 流量信息记录最大值 ///@brief 流量记录结构体 typedef struct tagNET_SIM_CARD_FLUX_RECORD { NET_TIME stuDate; // 日期 UINT nDaySendFlux; // 当日上行流量 Uint32单位:0.1kb UINT nDayRecvFlux; // 当日下行流量 Uint32单位:0.1kb BYTE byReserved[512]; // 保留字节 }NET_SIM_CARD_FLUX_RECORD; ///@brief 获取的流量信息(出参) typedef struct tagNET_OUT_SIM_CARD_FLUX_INFO { DWORD dwSize; // 结构体大小 UINT nTotalFlux; // 总的流量=上行流量+下行流量 Uint32单位:0.1kb UINT nSendFlux; // 上行流量 Uint32单位:0.1kb UINT nRecvFlux; // 下行流量 Uint32单位:0.1kb NET_TIME stuTime; // 总流量写入时间 int nRecordNum; // 记录数量 这个值不应该大于 NET_RECORD_MAX_NUM NET_SIM_CARD_FLUX_RECORD stuRecord[NET_FLUX_RECORD_MAX_NUM]; // 最近七天的流量记录 UINT nLastMonthTotalFlux; // 上个月总流量 Uint32单位:0.1kb }NET_OUT_SIM_CARD_FLUX_INFO; ///@brief 获取SIM卡流量信息,pNetDataIn与pNetDataOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSimCardFlux(LLONG lLoginID,const NET_IN_SIM_CARD_FLUX_INFO* pNetDataIn,NET_OUT_SIM_CARD_FLUX_INFO* pNetDataOut,int nWaitTime = 1000); ///@brief 设置防护舱门禁工作模式,pNetDataIn与pNetDataOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDoorWorkMode(LLONG lLoginID,const NET_IN_CTRL_ACCESS_SET_DOOR_WORK_MODE* pNetDataIn,NET_OUT_CTRL_ACCESS_SET_DOOR_WORK_MODE* pNetDataOut,int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 防护舱LED控制,pInParam与pOutParam由用户申请内存,根据emType对应的结构体,进而确定申请内存大小 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlCabinLED(LLONG lLoginID, EM_CABIN_LED_CONTROL_TYPE emType,const void *pInParam, void* pOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); #define NET_SELECT_UPDATE_LOCK_MAX_NUM 32 // 升级锁时最多同时指定的个数 ///@brief 远程升级智能锁通道信息(入参) typedef struct tagNET_IN_SELECT_UPDATE_LOCK_INFO { DWORD dwSize; int nChannelNum; // 需要选择的智能锁的个数 int nChannel[NET_SELECT_UPDATE_LOCK_MAX_NUM]; // 智能锁的通道号 }NET_IN_SELECT_UPDATE_LOCK_INFO; ///@brief 远程升级智能锁通道信息(出参) typedef struct tagNET_OUT_SELECT_UPDATE_LOCK_INFO { DWORD dwSize; }NET_OUT_SELECT_UPDATE_LOCK_INFO; ///@brief 根据锁的通道号选择远程智能锁,pNetDataIn与pNetDataOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SelectLockToUpdate(LLONG lLoginID,const NET_IN_SELECT_UPDATE_LOCK_INFO* pNetDataIn,NET_OUT_SELECT_UPDATE_LOCK_INFO* pNetDataOut,int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 子权限类型 typedef enum tagEM_AUTHORITY_SUB_TYPE { EM_AUTHORITY_SUB_TYPE_UNKNOWN, // Unknown EM_AUTHORITY_SUB_TYPE_SHUT_DOWN, // 关闭设备 EM_AUTHORITY_SUB_TYPE_MONITOR, // 实时预览所有通道 EM_AUTHORITY_SUB_TYPE_MONITOR_FOR_CHANNEL, // 实时预览通道 EM_AUTHORITY_SUB_TYPE_REPLAY, // 回放所有通道 EM_AUTHORITY_SUB_TYPE_REPLAY_FOR_CHANNEL, // 回放通道 EM_AUTHORITY_SUB_TYPE_BACKUP, // 录像文件备份 EM_AUTHORITY_SUB_TYPE_MHARDISK, // 硬盘管理 EM_AUTHORITY_SUB_TYPE_MPTZ, // 云台的X、Y、Z的电机控制,此权限受产品定义的HasPtz控制,如HasPtz为false,此权限无效 EM_AUTHORITY_SUB_TYPE_ACCOUNT, // 用户帐号 EM_AUTHORITY_SUB_TYPE_QUERY_LOG, // 日志查询 EM_AUTHORITY_SUB_TYPE_DEL_LOG, // 删除日志 EM_AUTHORITY_SUB_TYPE_SYS_UPDATE, // 升级系统 EM_AUTHORITY_SUB_TYPE_AUTO_MAINTAIN, // 自动维护 EM_AUTHORITY_SUB_TYPE_GENERAL_CONF, // 普通设置 EM_AUTHORITY_SUB_TYPE_ENCODE_CONF, // 编码设置 EM_AUTHORITY_SUB_TYPE_RECORD, // 录像模式手动、自动设置(RecordMode配置) EM_AUTHORITY_SUB_TYPE_RECORD_CONF, // 录像参数时间、文件格式等设置(Record配置) EM_AUTHORITY_SUB_TYPE_COM_CONF, // 串口设置 EM_AUTHORITY_SUB_TYPE_NET_CONF, // 网络设置 EM_AUTHORITY_SUB_TYPE_ALARM, // 报警输出IO配置 EM_AUTHORITY_SUB_TYPE_ALARM_CONF, // 报警设置 EM_AUTHORITY_SUB_TYPE_VIDEO_CONFIG, // 视频动检遮挡丢失 EM_AUTHORITY_SUB_TYPE_PTZ_CONFIG, // 云台设置 EM_AUTHORITY_SUB_TYPE_OUTPUT_CONFIG, // 视频输出配置 EM_AUTHORITY_SUB_TYPE_VIDEO_INPUT_CONFIG, // 视频输入配置 EM_AUTHORITY_SUB_TYPE_DEFAULT_CONFIG, // 恢复默认 EM_AUTHORITY_SUB_TYPE_BK_CONFIG, // 存储新增,导入导出配置 EM_AUTHORITY_SUB_TYPE_INTELLI_CONFIG, // 智能配置 EM_AUTHORITY_SUB_TYPE_REMOTE_DEVICE, // 添加删除远程设备 EM_AUTHORITY_SUB_TYPE_ATM_POS, // 卡口叠加 EM_AUTHORITY_SUB_TYPE_OFFLINE_LOGINED_USER, // 踢除用户 EM_AUTHORITY_SUB_TYPE_AUDIO_AUTH, // 存储使用,语音投放 EM_AUTHORITY_SUB_TYPE_SPOT_SET, // 存储使用,视频矩阵 EM_AUTHORITY_SUB_TYPE_TVSET, // 存储使用,TV边距调节 EM_AUTHORITY_SUB_TYPE_IPSAN, // IPSAN管理 EM_AUTHORITY_SUB_TYPE_CONFIG, // 存储使用,含义较模糊,不建议使用 EM_AUTHORITY_SUB_TYPE_ARMING, // 布防 EM_AUTHORITY_SUB_TYPE_DISARM, // 撤防 EM_AUTHORITY_SUB_TYPE_BYPASS, // 旁路(所有通道) EM_AUTHORITY_SUB_TYPE_BYPASS_PARTIAL, // 旁路(部分通道) EM_AUTHORITY_SUB_TYPE_ALARM_BELL, // 警号输出 EM_AUTHORITY_SUB_TYPE_ALARM_CONFIRM_PARTIAL, // 消警(部分通道) EM_AUTHORITY_SUB_TYPE_DEFENCE_CONFIG_PARTIAL, // 防区配置(部分通道) EM_AUTHORITY_SUB_TYPE_ALARM_OUT_PARITAL, // 报警输出(部分通道) EM_AUTHORITY_SUB_TYPE_TALK, // 语音对讲 EM_AUTHORITY_SUB_TYPE_WIRELESS_CONFIG, // 无线网配置 EM_AUTHORITY_SUB_TYPE_MOBILE_CONFIG, // 移动业务配置 EM_AUTHORITY_SUB_TYPE_AUDIO_DETECT_CONFIG, // 音频检测配置 EM_AUTHORITY_SUB_TYPE_NET_PREVIEW_FOR_CHANNEL, // 预览通道 EM_AUTHORITY_SUB_TYPE_REBOOT, // 设备重启 EM_AUTHORITY_SUB_TYPE_SYS_LENS, // 网络机芯没有云台,但需要控制变倍、聚焦、光圈等功能,增加此权限项 EM_AUTHORITY_SUB_TYPE_RAIN_BRUSH_CONFIG, // 雨刷配置 EM_AUTHORITY_SUB_TYPE_LIGHTING_CONFIG, // 灯光配置 EM_AUTHORITY_SUB_TYPE_ACCESS_CONTROL, // 门禁控制(所有通道) EM_AUTHORITY_SUB_TYPE_ACCESS_CONTROL_PARTIAL, // 门禁控制(部分通道) EM_AUTHORITY_SUB_TYPE_DECODE_TOUR, // 解码轮巡 EM_AUTHORITY_SUB_TYPE_VIDEO_OUT, // 视频输出 EM_AUTHORITY_SUB_TYPE_PTZ_FOR_CHANNEL, // 云台控制通道 EM_AUTHORITY_SUB_TYPE_MODIFY_LANGUANGE, // 修改语言 EM_AUTHORITY_SUB_TYPE_MODIFY_VIDEO, // 修改视频制式 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_CONTROL, // 导播控制 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_SCHEDULE, // 查询课程表 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_MODIFY_SCHEDULE, // 修改课程表 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_INTELL_PARAM, // 录播智能参数 EM_AUTHORITY_SUB_TYPE_CAMERA_PERIPHERAL, // 摄像头外设,包含雨刷、风扇、加热器等 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_DOWNLOAD_MEDIA_FILE, // 下载课程录像文件 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_MODIFY_MEDIA_FILE, // 修改课程录像文件 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_DELETE_MEDIA_FILE, // 删除课程录像文件 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_BACKUP_TO_USB, // 备份课程录像文件到设备端的USB上,与Backup不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_BACKUP_TO_FTP, // 备份课程录像文件到FTP服务器,与Backup不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_EXPORT_ACCONUT, // 导出用户信息,与Account不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_QUERY_ACCOUNT, // 查询账户,与Account不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_MODIFY_ACCOUNT, // 修改账户,与Account不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_RESET_PASSWORD, // 密码重置,与Account不能同时生效。 EM_AUTHORITY_SUB_TYPE_COURSE_RECORD_AUTHORITY, // 权限管理,与Account不能同时生效。 }EM_AUTHORITY_SUB_TYPE; ///@brief 主权限类型 typedef enum tagEM_AUTHORITY_MAIN_TYPE { EM_AUTHORITY_MAIN_TYPE_UNKNOWN, // Unknown EM_AUTHORITY_MAIN_TYPE_AUTH_USER_MAG, // 用户管理 EM_AUTHORITY_MAIN_TYPE_AUTH_SYS_CFG, // 系统设置 EM_AUTHORITY_MAIN_TYPE_AUTH_OFFLINE_USER, // 屏蔽用户 EM_AUTHORITY_MAIN_TYPE_AUTH_DF_UD, // 默认&升级 EM_AUTHORITY_MAIN_TYPE_AUTH_PTZ_CTR, // 云台控制 EM_AUTHORITY_MAIN_TYPE_AUTH_SYS_INFO, // 系统信息 EM_AUTHORITY_MAIN_TYPE_AUTH_MANU_CTR, // 手动控制 EM_AUTHORITY_MAIN_TYPE_AUTH_BACKUP, // 文件备份 EM_AUTHORITY_MAIN_TYPE_AUTH_COLOR_SET, // 图像颜色 EM_AUTHORITY_MAIN_TYPE_AUTH_STORE_CFG, // 存储管理 EM_AUTHORITY_MAIN_TYPE_AUTH_EVENT_CFG, // 事件设置 EM_AUTHORITY_MAIN_TYPE_AUTH_NET_CFG, // 网络设置 EM_AUTHORITY_MAIN_TYPE_AUTH_RMT_DEVICE, // 摄像头相关 EM_AUTHORITY_MAIN_TYPE_AUTH_DEL_LOG, // 删除日志 EM_AUTHORITY_MAIN_TYPE_AUTH_SHUTDOWN, // 关闭设备 }EM_AUTHORITY_MAIN_TYPE; #define NET_AUTHORITY_CLASS_MAX_NUM 256 // 用户权限类型最大值 ///@brief 权限类型信息 typedef struct tagNET_AUTH_CLASSIFY_INFO { EM_AUTHORITY_MAIN_TYPE emMainAuthority; // 主权限类型 EM_AUTHORITY_SUB_TYPE emSubAuthority; // 子权限类型 int nChannel; // 通道号 // emSubAuthority为EM_AUTHORITY_SUB_TYPE_MONITOR_FOR_CHANNEL,EM_AUTHORITY_SUB_TYPE_REPLAY_FOR_CHANNEL, // EM_AUTHORITY_SUB_TYPE_NET_PREVIEW_FOR_CHANNEL,EM_AUTHORITY_SUB_TYPE_PTZ_FOR_CHANNEL 时此字段有效 // BYTE byReserved[128]; // 保留字节 }NET_AUTH_CLASSIFY_INFO; ///@brief 获取权限类型信息(入参) typedef struct tagNET_IN_GET_AUTHORITY_INFO_LIST { DWORD dwSize; }NET_IN_GET_AUTHORITY_INFO_LIST; ///@brief 获取权限类型信息(出参) typedef struct tagNET_OUT_GET_AUTHORITY_INFO_LIST { DWORD dwSize; int nRetAuthInfoCount; // 返回的权限类型信息个数 NET_AUTH_CLASSIFY_INFO stuAuthInfo[NET_AUTHORITY_CLASS_MAX_NUM];// 返回的权限类型信息数据 }NET_OUT_GET_AUTHORITY_INFO_LIST; ///@brief 获取权限类型信息列表,pNetDataIn与pNetDataOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAuthClassifyList(LLONG lLoginID,const NET_IN_GET_AUTHORITY_INFO_LIST* pNetDataIn,NET_OUT_GET_AUTHORITY_INFO_LIST* pNetDataOut,int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ////////////////////////////////////////////////////////////////////// ///@brief 能力信息 ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ///@brief 查询类型 typedef enum { ABILITY_DYNAMIC_CONNECT = 1, // 查询动态多连接能力,对应入参类型为BOOL ABILITY_WATERMARK_CFG = 17, // 水印配置能力,对应结构体为DH_WATERMAKE_EN ABILITY_WIRELESS_CFG = 18, // wireless配置能力,对应结构体为DH_WIRELESS_EN ABILITY_DEVALL_INFO = 26, // 设备的能力列表,对应结构体为DH_DEV_ENABLE_INFO ABILITY_CARD_QUERY = 0x0100, // 卡号查询能力,对应结构体为DH_CARD_QUERY_EN ABILITY_MULTIPLAY = 0x0101, // 多画面预览能力,对应结构体为DH_MULTIPLAY_EN ABILITY_QUICK_QUERY_CFG = 0x0102, // 快速查询配置能力,对应结构体为DH_QUICK_QUERY_CFG_EN ABILITY_INFRARED = 0x0121, // 无线报警能力,对应结构体为DH_WIRELESS_ALARM_INFO ABILITY_TRIGGER_MODE = 0x0131, // 报警输出触发方式能力,对应入参类型为int ABILITY_DISK_SUBAREA = 0x0141, // 网络硬盘分区能力,对应结构体为DH_DISK_SUBAREA_EN ABILITY_DSP_CFG = 0x0151, // 查询DSP能力,对应结构体为DH_DSP_CFG ABILITY_STREAM_MEDIA = 0x0161, // 查询SIP,RTSP能力,对应结构体为DH_STREAM_MEDIA_EN ABILITY_INTELLI_TRACKER = 0x0171, // 查询智能跟踪能力,对应结构体为DH_INTELLI_TRACKER_EN ABILITY_DOWNLOAD_BY_ALLSPEED = 0x0181,// 查询全速回放不抽帧能力,对应结构体为NET_DOWNLOAD_BY_ALLSPEED_EN } DH_SYS_ABILITY; ////////////////////////////////////////////////////////////////////// ///@brief 设备支持功能列表 typedef enum { EN_FTP = 0, // FTP 按位,1:传送录像文件 2:传送抓图文件 EN_SMTP, // SMTP 按位,1:报警传送文本邮件 2:报警传送图片 3:支持健康邮件功能 EN_NTP, // NTP 按位:1:调整系统时间 EN_AUTO_MAINTAIN, // 自动维护 按位:1:重启 2:关闭 3:删除文件 EN_VIDEO_COVER, // 区域遮挡 按位:1:多区域遮挡 EN_AUTO_REGISTER, // 主动注册 按位:1:注册后sdk主动登陆 EN_DHCP, // DHCP 按位:1:DHCP EN_UPNP, // UPNP 按位:1:UPNP EN_COMM_SNIFFER, // 串口抓包 按位:1:CommATM EN_NET_SNIFFER, // 网络抓包 按位: 1:NetSniffer EN_BURN, // 刻录功能 按位:1:查询刻录状态 EN_VIDEO_MATRIX, // 视频矩阵 按位:1:是否支持视频矩阵 2:是否支持SPOT视频矩阵 3:是否支持HDMI视频矩阵 EN_AUDIO_DETECT, // 音频检测 按位:1:是否支持音频检测 EN_STORAGE_STATION, // 存储位置 按位:1:Ftp服务器(Ips) 2:SMB 3:NFS 4:ISCSI 16:DISK 17:U盘 EN_IPSSEARCH, // IPS存储查询 按位:1:IPS存储查询 EN_SNAP, // 抓图 按位:1:分辨率2:帧率3:抓图方式4:抓图文件格式5:图画质量 6:是否支持并发 EN_DEFAULTNIC, // 支持默认网卡查询 按位 1:支持 EN_SHOWQUALITY, // CBR模式下显示画质配置项 按位 1:支持 EN_CONFIG_IMEXPORT, // 配置导入导出功能能力 按位 1:支持 EN_LOG, // 是否支持分页方式的日志查询 按位 1:支持 EN_SCHEDULE, // 录像设置的一些能力 按位 1:冗余 2:预录 3:录像时间段 EN_NETWORK_TYPE, // 网络类型按位表示 1:以态网 2:无线局域 3:CDMA/GPRS 4:CDMA/GPRS多网卡配置 EN_MARK_IMPORTANTRECORD, // 标识重要录像 按位:1:设置重要录像标识 EN_ACFCONTROL, // 活动帧率控制 按位:1:支持活动帧率控制, 2:支持定时报警类型活动帧率控制(不支持动检),该能力与ACF能力互斥 EN_MULTIASSIOPTION, // 多路辅码流 按位:1:支持三路辅码流, 2:支持辅码流编码压缩格式独立设置 EN_DAVINCIMODULE, // 组件化模块 按位:1,时间表分开处理 2:标准I帧间隔设置 EN_GPS, // GPS功能 按位:1:Gps定位功能,2:GPS重传,3:支持多客户多GPS重传及确认,即支持UUID EN_MULTIETHERNET, // 支持多网卡查询 按位 1:支持 EN_LOGIN_ATTRIBUTE, // Login属性 按位:1:支持Login属性查询 EN_RECORD_GENERAL, // 录像相关 按位:1,普通录像;2:报警录像;3:动态检测录像;4:本地存储;5:远程存储;6:冗余存储;7:本地紧急存储;8:支持区分主辅码流的远程存储 EN_JSON_CONFIG, // Json格式配置:按位:1支持Json格式, 2: 使用F6的NAS配置, 3: 使用F6的Raid配置, 4:使用F6的MotionDetect配置, 5:完整支持三代配置(V3),通过F6命令访问 EN_HIDE_FUNCTION, // 屏蔽功能:按位:1,屏蔽PTZ云台功能, 2: 屏蔽3G的保活时段功能 EN_DISK_DAMAGE, // 硬盘坏道信息支持能力: 按位:1,硬盘坏道信息查询支持能力 EN_PLAYBACK_SPEED_CTRL, // 支持回放网传速度控制:按位:1,支持回放加速 EN_HOLIDAYSCHEDULE, // 支持假期时间段配置:按位:1,支持假期时间段配置 EN_FETCH_MONEY_TIMEOUT, // ATM取钱超时 EN_BACKUP_VIDEO_FORMAT, // 备份支持的格式,按位:1:DAV, 2:ASF EN_QUERY_DISK_TYPE, // 支持硬盘类型查询 EN_CONFIG_DISPLAY_OUTPUT, // 支持设备显示输出(VGA等)配置,按位: 1:画面分割轮巡配置 EN_SUBBITRATE_RECORD_CTRL, // 支持扩展码流录像控制设置, 按位:1-辅码流录像控制设置 EN_IPV6, // 支持IPV6设置, 按位:1-IPV6配置 EN_SNMP, // SNMP(简单网络管理协议) EN_QUERY_URL, // 支持获取设备URL地址, 按位: 1-查询配置URL地址 EN_ISCSI, // ISCSI(Internet小型计算机系统接口配置) EN_RAID, // 支持Raid功能 EN_HARDDISK_INFO, // 支持磁盘信息F5查询 EN_PICINPIC, // 支持画中画功能 按位:1,画中画设置; 2,画中画预览、录像存储、查询、下载;3,支持画中画编码配置,同时支持画中画通道查询 EN_PLAYBACK_SPEED_CTRL_SUPPORT, // 同 EN_PLAYBACK_SPEED_CTRL ,只为了兼容协议 EN_LF_XDEV, // 支持24、32、64路LF-X系列,标注这类设备特殊的编码能力计算方式 EN_DSP_ENCODE_CAP, // F5 DSP编码能力查询 EN_MULTICAST, // 组播能力查询 EM_NET_LIMIT, // 网络限制能力查询,按位,1-网络发送码流大小限制,2-支持用户操作数据加密,4-支持配置数据加密,8-支持配置数据加密扩展, 16-支持导入导出加密 EM_COM422, // 串口422 EM_PROTOCAL_FRAMEWORK, // 是否支持三代协议框架(需要实现listMethod(),listService()),通过F6命令访问 EM_WRITE_DISK_OSD, // 刻录OSD叠加, 按位, 1-刻录OSD叠加配置 EM_DYNAMIC_MULTI_CONNECT, // 动态多连接, 按位, 1-请求视频数据应答 EM_CLOUDSERVICE, // 云服务,按位,1-支持私有云服务 EM_RECORD_INFO, // 录像信息上报, 按位, 1-录像信息主动上报, 2-支持录像帧数查询 EN_DYNAMIC_REG, // 主动注册能力,按位,1-支持动态主动注册, 2-主动注册动态多链接支持SDK发起IP,port填0的请求 EM_MULTI_PLAYBACK, // 多通道预览回放,按为,1-支持多通道预览回放 EN_ENCODE_CHN, // 编码通道, 按位, 1-支持纯音频通道, 2-预览支持音视频分开获取 EN_SEARCH_RECORD, // 录像查询, 按位, 1-支持异步查询录像, 2-支持三代协议查询录像 EN_UPDATE_MD5, // 支持升级文件传输完成后做MD5验证,1-支持MD5验证2-支持三代升级 EN_PROTOCOL3ToF6, // 三代切F6,按位,1-Log日志功能2.DeleteFile 恢复默认配置支持使用configManager.deleteFile协议 EN_COMPOSECHANNEL, // 组合通道, 1-远程预览 EN_PLAYBACK, // 回放能力,按位 1-录像二次分析回放 }EM_DEVICE_FUNC_LIST; ///@brief 设备的能力列表 typedef struct { DWORD IsFucEnable[512]; // 功能列表能力集,下标对应上述的枚举值,按位表示子功能 } DH_DEV_ENABLE_INFO; ////////////////////////////////////////////////////////////////////// ///@brief 卡号查询能力结构体 typedef struct { char IsCardQueryEnable; char iRev[3]; } DH_CARD_QUERY_EN; ////////////////////////////////////////////////////////////////////// ///@brief wireless能力结构体 typedef struct { char IsWirelessEnable; char iRev[3]; } DH_WIRELESS_EN; ////////////////////////////////////////////////////////////////////// ///@brief 图象水印能力结构体 typedef struct { char isSupportWM; // 1 支持;0 不支持 char supportWhat; // 0:文字水印;1:图片水印;2:同时支持文字水印和图片水印 char reserved[2]; } DH_WATERMAKE_EN; ////////////////////////////////////////////////////////////////////// ///@brief 多画面预览能力结构体 typedef struct { int nEnable; // 1 支持;0 不支持 DWORD dwMultiPlayMask; // 多画面预览掩码 char reserved[4]; // 保留 } DH_MULTIPLAY_EN; ////////////////////////////////////////////////////////////////////// ///@brief 无线报警能力结构体 typedef struct { BOOL bSupport; // 是否支持 int nAlarmInCount; // 输入个数 int nAlarmOutCount; // 输出个数 int nRemoteAddrCount; // 遥控器个数 BYTE reserved[32]; } DH_WIRELESS_ALARM_INFO; ////////////////////////////////////////////////////////////////////// ///@brief 网络硬盘分区能力结构体 typedef struct { BOOL bSupported; // 是否支持网络硬盘分区 int nSupportNum; // 支持分区的数目 BYTE bReserved[32]; // 保留字节 } DH_DISK_SUBAREA_EN; ///@brief DSP能力查询,当DSP能力算法标识为2时使用。 typedef struct { BYTE bMainFrame[32]; // 以分辨率枚举值(CAPTURE_SIZE)为索引,主码流分辨率对应支持的最大帧率,如果不支持此分辨率,则值为0. BYTE bExtraFrame_1[32]; // 辅码流1,使用同bMainFrame BYTE bReserved[128]; // 预留给辅码流2和3. } DH_DSP_CFG_ITEM; ///@brief 查询DSP能力 typedef struct { int nItemNum; // DH_DSP_CFG_ITEM的有效个数,等于通道数 DH_DSP_CFG_ITEM stuDspCfgItem[32]; // 主码流的信息 BYTE bReserved[128]; // 保留 } DH_DSP_CFG; ////////////////////////////////////////////////////////////////////// ///@brief 快速查询配置能力结构体 typedef struct { char IsQuickQueryEnable; // 1是设备支持配置命令快速返回,请设置配置时间足够长以保证窄带下配置的正常读取。建议设置60S char iRev[3]; } DH_QUICK_QUERY_CFG_EN; ///@brief 查询SIP,RTSP能力 typedef struct { int nStreamType; // 0,无 1,SIP 2,RTSP BYTE bReserved[16]; // 保留 } DH_STREAM_MEDIA_EN; ///@brief 智能球跟踪能力查询 typedef struct { char IsIntelliTrackerEnable; // 大于0表示具有智能球跟踪能力 BYTE bReserved[3]; }DH_INTELLI_TRACKER_EN; ///@brief 查询全速回放不抽帧能力 typedef struct tagNET_DOWNLOAD_BY_ALLSPEED_EN { int nDownloadByAllSpeed; // 0 未知,设备无该字段,按不支持处理 // 1 不支持全速回放不抽帧 // 2 支持全速回放不抽帧 BYTE bReserved[16]; }NET_DOWNLOAD_BY_ALLSPEED_EN; #define NET_MAX_COMPOSITE_CHANNEL 256 // 组合融合屏的通道最大数量 ///@brief 获取融合能力集的输入参数, 对应NET_COMPOSITE_CAPS typedef struct tagNET_IN_COMPOSITE_CAPS { DWORD dwSize; int nChannelCount; // 需要融合的窗口数量 int nChannels[NET_MAX_COMPOSITE_CHANNEL]; // 需要融合的窗口号列表 int nLayoutX; // 水平方向窗口数量 int nLayoutY; // 垂直方向窗口数量 } NET_IN_COMPOSITE_CAPS; ///@brief 获取融合能力集的输出参数, 对应NET_COMPOSITE_CAPS typedef struct tagNET_OUT_COMPOSITE_CAPS { DWORD dwSize; int nSplitModeCount; // 支持的分割模式数量 DH_SPLIT_MODE emSplitModes[DH_MAX_SPLIT_MODE_NUM]; // 支持的分割模式列表 int nMaxFreeWindow; // 最大开窗数 } NET_OUT_COMPOSITE_CAPS; #define MAX_REGISTER_ID_LEN (256) #define MAX_APP_ID_LEN (256) #define MAX_URL_LEN (1024) #define MAX_IOS_CERTIFICATE_LEN (1024 * 14) #define MAX_IOS_SECRET_KEY_LEN (512) #define MAX_MOBILE_CHANNEL_NUM (256) ///@brief 平台类型 typedef enum tagEM_MOBILE_SERVER_TYPE { EM_MOBILE_SERVER_TYPE_UNKNOWN, // 未知 EM_MOBILE_SERVER_TYPE_APPLE, // Apple EM_MOBILE_SERVER_TYPE_ANDROID, // Android EM_MOBILE_SERVER_TYPE_SDKCLOUD, // DAHUA_CLOUD } EM_MOBILE_SERVER_TYPE; ///@brief 推送服务器配置 typedef struct tagNET_PUSH_SERVER_INFO { char szAddress[MAX_URL_LEN]; // 地址 int nPort; // 端口 } NET_PUSH_SERVER_INFO; ///@brief 事件子类型 typedef enum tagEM_EVENT_SUB_CODE { EM_EVENT_SUB_CODE_UNKNOWN = -1, // 未知 EM_EVENT_SUB_CODE_LOSS, // Loss EM_EVENT_SUB_CODE_COVER, // Cover EM_EVENT_SUB_CODE_FROZEN, // Frozen EM_EVENT_SUB_CODE_LIGHT, // Light EM_EVENT_SUB_CODE_DARK, // Dark EM_EVENT_SUB_CODE_SCENECHANGE, // SceneChange } EM_EVENT_SUB_CODE; ///@brief 订阅类型 typedef struct tagNET_SUBSCRIBE_INFO { int nCode; // 事件码 EM_EVENT_SUB_CODE emSubCode; // 事件子类型, EM_EVENT_SUB_CODE_UNKNOWN为无效 // 仅对VideoAbnormalDetection,AlarmLocal等包含多种类型的报警事件有效 int nChnNum; // 订阅的通道数量, 若无通道概念则为0 int nIndexs[MAX_MOBILE_CHANNEL_NUM]; // 通道号集合 char szNumber[DH_COMMON_STRING_16]; // 订阅"CallNoAnswered "事件时有效 // 无应答号码(设备呼叫这些号码,无应答时,将向手机推送消息) // CFG_CMD_MOBILE_PUSH_NOFITY_CFG时有效 char szSound[DH_COMMON_STRING_64]; // 手机端收到此事件时播放需播放的声音文件 char szIndexsExt[DH_COMMON_STRING_32][DH_COMMON_STRING_16]; //通道号集合扩展 } NET_SUBSCRIBE_INFO; ///@brief 推送网关类型 typedef enum tagEM_PUSH_GATEWAY_TYPE { EM_PUSH_GATEWAY_TYPE_UNKNOWN, // 未知 EM_PUSH_GATEWAY_TYPE_APPLE_PUSH, // 苹果推送网关, ApplePush EM_PUSH_GATEWAY_TYPE_ANDROID_SDKPUSH, // 安卓推送网关, AndroidDahuaPush EM_PUSH_GATEWAY_TYPE_ANDROID_JPUSH, // 安卓极光推送网关, AndroidJPush EM_PUSH_GATEWAY_TYPE_ANDROID_GCM, // 安卓GCM网关, AndroidGCM } EM_PUSH_GATEWAY_TYPE; ///@brief 手机push notification配置, 使用RegisterID订阅 typedef struct tagNET_MOBILE_PUSH_NOTIFY { DWORD dwSize; char szRegisterID[MAX_REGISTER_ID_LEN]; // 手机向Appple/ Android服务器注册返回的,每次不同 EM_MOBILE_SERVER_TYPE emServerType; // 平台类型 int nPeriodOfValidity; // 有效时间,单位为秒 char szAuthServerAddr[MAX_URL_LEN]; // Android验证服务器地址 int nAuthServerPort; // Android验证服务器端口 char szPushServerAddr[MAX_URL_LEN]; // 推送服务器地址(代理,末选服务器,供兼容) // 按官方服务器要求,选用最新的加密算法再转发给官方服务器 int nPushServerPort; // 推送服务器端口 NET_PUSH_SERVER_INFO stuPushServerMain; // 推送服务器配置, 官方。首选服务器,如果推送失败,再尝试重定向或代理服务器 NET_PUSH_SERVER_INFO stuPushRedirectServer; // 推送服务器配置 char szDevName[DH_COMMON_STRING_64]; // 设备别名,手机端设置显示 char szDevID[DH_COMMON_STRING_64]; // 设备标识,手机端设置使用 char szUser[DH_COMMON_STRING_64]; // 登陆用户名 char szPassword[DH_COMMON_STRING_64]; // 密码 char szCertificate[MAX_IOS_CERTIFICATE_LEN]; // ios证书信息,base64之后的字符串,需要采用TLS加密时有效 char szSecretKey[MAX_IOS_SECRET_KEY_LEN]; // ios密钥,base64之后字符串 int nSubScribeMax; // 最大订阅类型个数, 表示pstuSubscribes的对象数量 int nSubScribeNum; // 实际的订阅类型个数, 获取配置有效 NET_SUBSCRIBE_INFO *pstuSubscribes; // 订阅类型,由用户申请内存,大小为sizeof(NET_SUBSCRIBE_INFO)*nSubScribeMax BYTE byReserved[4]; // 保留字节,用于字节对齐 BOOL bUserEx; // 登陆用户名的扩展是否有效 char szUserEx[256]; // 登陆用户名的扩展 } NET_MOBILE_PUSH_NOTIFY; ///@brief 删除手机订阅推送信息入参, CLIENT_DelMobilePushNotify typedef struct tagNET_MOBILE_PUSH_NOTIFY_DEL { DWORD dwSize; char szRegisterID[MAX_REGISTER_ID_LEN]; // 手机向Appple/ Android服务器注册返回的,每次不同 } NET_MOBILE_PUSH_NOTIFY_DEL; ///@brief 手机push notification配置, 使用RegisterID+AppID订阅 typedef struct tagNET_MOBILE_PUSH_NOTIFY_CFG { DWORD dwSize; char szRegisterID[MAX_REGISTER_ID_LEN]; // 手机向Appple/ Android服务器注册返回的,每次不同 char szAppID[MAX_APP_ID_LEN]; // 手机每开一个客户端,会产生一个 EM_MOBILE_SERVER_TYPE emServerType; // 平台类型 EM_PUSH_GATEWAY_TYPE emPushGatewayType; // 推送网关类型, emServerType为EM_MOBILE_SERVER_TYPE_SDKCLOUD时有效 int nPeriodOfValidity; // 有效时间,单位为秒 char szAuthServerAddr[MAX_URL_LEN]; // Android验证服务器地址 int nAuthServerPort; // Android验证服务器端口 char szPushServerAddr[MAX_URL_LEN]; // 推送服务器地址 // 按官方服务器要求,选用最新的加密算法再转发给官方服务器 int nPushServerPort; // 推送服务器端口 char szDevName[DH_COMMON_STRING_64]; // 设备别名,手机端设置显示 char szDevID[DH_COMMON_STRING_64]; // 设备标识,手机端设置使用 char szUser[DH_COMMON_STRING_64]; // 登陆用户名 char szPassword[DH_COMMON_STRING_64]; // 密码 char szCertificate[MAX_IOS_CERTIFICATE_LEN]; // ios证书信息,base64之后的字符串,需要采用TLS加密时有效 char szSecretKey[MAX_IOS_SECRET_KEY_LEN]; // ios密钥,base64之后字符串 int nSubScribeMax; // 最大订阅类型个数, 表示pstuSubscribes的对象数量 int nSubScribeNum; // 实际的订阅类型个数, 获取配置有效 NET_SUBSCRIBE_INFO *pstuSubscribes; // 订阅类型,由用户申请内存,大小为sizeof(NET_SUBSCRIBE_INFO)*nSubScribeMax NET_PUSH_SERVER_INFO stuPushServerMain; // 推送服务器配置, 官方。首选服务器,如果推送失败,再尝试重定向或代理服务器 NET_PUSH_SERVER_INFO stuPushRedirectServer; // 推送服务器配置 BYTE byReserved[4]; // 保留字节,用于字节对齐 BOOL bUserEx; // 登陆用户名的扩展是否有效 char szUserEx[256]; // 登陆用户名的扩展 } NET_MOBILE_PUSH_NOTIFY_CFG; ///@brief 订阅类型 typedef struct tagNET_SUBSCRIBE_INFO_EX { char szCode[MAX_COMMON_STRING_64]; // 事件码 char szSubCode[MAX_COMMON_STRING_64]; // 事件子类型 // 仅对VideoAbnormalDetection,AlarmLocal等包含多种类型的报警事件有效 int nChnNum; // 订阅的通道数量, 若无通道概念则为0 int nIndexs[MAX_MOBILE_CHANNEL_NUM]; // 通道号集合 char szNumber[DH_COMMON_STRING_16]; // 订阅"CallNoAnswered "事件时有效 // 无应答号码(设备呼叫这些号码,无应答时,将向手机推送消息) // CFG_CMD_MOBILE_PUSH_NOFITY_CFG时有效 char szSound[DH_COMMON_STRING_64]; // 手机端收到此事件时播放需播放的声音文件 char szIndexsExt[DH_COMMON_STRING_32][DH_COMMON_STRING_16]; //通道号集合扩展 void* pstuCustomFilter; // 过滤器, 由szCode的类型决定,其他未支持类型则填NULL // 当szCode为"FaceComparision"时,类型为:NET_CUSTOM_TILTER_OF_FACE_COMPARISION(目前只支持这种) BYTE byReserved[504]; // 保留字节 } NET_SUBSCRIBE_INFO_EX; ///@brief 手机push notification 通用信息 typedef struct tagNET_MOBILE_PUSH_NOTIFICATION_GENERAL_INFO { char szRegisterID[MAX_REGISTER_ID_LEN]; // 手机向Appple/ Android服务器注册返回的,每次不同 char szAppID[MAX_APP_ID_LEN]; // 手机每开一个客户端,会产生一个 EM_MOBILE_SERVER_TYPE emServerType; // 平台类型 EM_PUSH_GATEWAY_TYPE emPushGatewayType; // 推送网关类型, emServerType为EM_MOBILE_SERVER_TYPE_SDKCLOUD时有效 int nPeriodOfValidity; // 有效时间,单位为秒 char szAuthServerAddr[MAX_URL_LEN]; // Android验证服务器地址 int nAuthServerPort; // Android验证服务器端口 // 按官方服务器要求,选用最新的加密算法再转发给官方服务器 char szDevName[DH_COMMON_STRING_64]; // 设备别名,手机端设置显示 char szDevID[DH_COMMON_STRING_64]; // 设备标识,手机端设置使用 char szUser[DH_COMMON_STRING_256]; // 登陆用户名 char szCertificate[MAX_IOS_CERTIFICATE_LEN]; // ios证书信息,base64之后的字符串,需要采用TLS加密时有效 char szSecretKey[MAX_IOS_SECRET_KEY_LEN]; // ios密钥,base64之后字符串 char szBindingUserName[DH_COMMON_STRING_64]; // APP配置所绑定的用户名(当删除该用户时候,需要同时把该条配置删除,实现不再推送到APP) int nSubScribeMax; // 最大订阅类型个数, 表示pstuSubscribes的对象数量 int nSubScribeNum; // 实际的订阅类型个数, 获取配置有效 NET_SUBSCRIBE_INFO_EX *pstuSubscribes; // 订阅类型,由用户申请内存,大小为sizeof(NET_SUBSCRIBE_INFO)*nSubScribeMax NET_PUSH_SERVER_INFO stuPushServerMain; // 推送服务器配置, 官方。首选服务器,如果推送失败,再尝试重定向或代理服务器 DH_TSECT stuAllEventPushTime[DH_N_WEEKS][DH_N_TSECT];// 设备推送时间段,为一个7*6的二维数组,7个元素对应每周7天(第一个为星期日),每天内最多6个单独时间段。 // 每个时间段的第一个数字1代表该时间段使能,0为非使能状态。 BYTE byReserved[1024]; // 保留字节 } NET_MOBILE_PUSH_NOTIFICATION_GENERAL_INFO; ///@brief 删除手机订阅推送信息入参, CLIENT_DelMobilePushNotify typedef struct tagNET_MOBILE_PUSH_NOTIFY_CFG_DEL { DWORD dwSize; char szRegisterID[MAX_REGISTER_ID_LEN]; // 手机向Appple/ Android服务器注册返回的,每次不同 char szAppID[MAX_APP_ID_LEN]; // 手机每开一个客户端,会产生一个 } NET_MOBILE_PUSH_NOTIFY_CFG_DEL; ///@brief 手机登陆时过滤可选方式,按照类型进行|或操作。 typedef enum tagEM_OPTTYPE_MOBILE_TYPE { OPTTYPE_MOBILE_DEVICE_ATTR =0x00000001, // 设备属性 OPTTYPE_MOBILE_DEVICE_SN =0x00000002, // 设备序列号 OPTTYPE_MOBILE_DISK_INFO =0x00000004, // 硬盘信息 OPTTYPE_MOBILE_DIGITAL_NUM =0x00000008, // 数字通道个数 OPTTYPE_MOBILE_ALARM_IO =0x00000010, // 报警输入输出 OPTTYPE_MOBILE_DEVICE_ABILITY =0x00000020, // 能力集 OPTTYPE_MOBILE_STATE_SOFTWARE =0x00001000, // 查询软件版本信息APP优化 }EM_OPTTYPE_MOBILE_TYPE; ///@brief SDK设置内部优化方案 typedef enum tagEmOptimizeType { EM_OPT_TYPE_DEFAULT = 0, // 默认不优化 EM_OPT_TYPE_MOBILE_V1 = 1, // 和选项 EM_OPT_TYPE_MOBILE_OPTION冲突,两者只能使用一个,不支持异步登陆优化 // 手机使用优化,开启后,默认过滤设备属性和硬盘信息. EM_OPT_TYPE_P2P_NETPARAM_V1 = 2, // P2P网络参数设置,pParam 为 NET_PARAM* EM_OPT_TYPE_MOBILE_OPTION = 3, // 和选项 EM_OPT_TYPE_MOBILE_V1冲突,两者只能使用一个,支持异步登陆优化 // 手机优化选项, 参数int, 按位从低到高, 传入的值参考枚举类型 EM_OPTTYPE_MOBILE_TYPE }EM_OPTIMIZE_TYPE; ///@brief CLIENT_FileStreamMotionMatch输入参数 typedef struct tagNET_IN_MOTIONMATCH_PARAM { DWORD dwSize; // 结构体大小 , dwSize 需赋值为 sizeof(NET_IN_MOTIONMATCH_PARAM) BOOL bFileName; // 文件名是否作为有效的查询条件,若文件名有效,则不用填充文件信息(stRecordInfo) char szFileName[MAX_PATH]; // 文件名 NET_RECORDFILE_INFO stuRecordInfo; // 文件信息 int nRegionNum; // 规则检测区域顶点数 DH_POINT stuRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域, 横坐标0~21, 纵坐标0~17 } NET_IN_MOTIONMATCH_PARAM; ///@brief 时间段 typedef struct tagNET_TIME_BEGIN_END { NET_TIME stuBegin; // 开始 NET_TIME stuEnd; // 结束 } NET_TIME_BEGIN_END; #define NET_SMART_SEARTCH_TIME_SECTION_MAX (128) ///@brief CLIENT_FileStreamMotionMatch输出参数 typedef struct tagNET_OUT_MOTIONMATCH_PARAM { DWORD dwSize; // 结构体大小 , dwSize 需赋值为 sizeof(NET_OUT_MOTIONMATCH_PARAM) int nTimeNum; // 查询到的时间段数目 NET_TIME_BEGIN_END stuTime[NET_SMART_SEARTCH_TIME_SECTION_MAX]; // 时间段 } NET_OUT_MOTIONMATCH_PARAM; ///@brief CLIENT_SnapPictureToFile接口输入参数 typedef struct tagNET_IN_SNAP_PIC_TO_FILE_PARAM { DWORD dwSize; SNAP_PARAMS stuParam; // 抓图参数, 其中mode字段仅一次性抓图, 不支持定时或持续抓图; 除了车载DVR, 其他设备仅支持每秒一张的抓图频率 char szFilePath[MAX_PATH]; // 写入文件的地址 }NET_IN_SNAP_PIC_TO_FILE_PARAM; ///@brief CLIENT_SnapPictureToFile接口输出参数 typedef struct tagNET_OUT_SNAP_PIC_TO_FILE_PARAM { DWORD dwSize; char* szPicBuf; // 图片内容,用户分配内存,大小为dwPicBufLen DWORD dwPicBufLen; // 图片内容内存大小, 单位:字节 DWORD dwPicBufRetLen; // 返回的图片大小, 单位:字节 }NET_OUT_SNAP_PIC_TO_FILE_PARAM; ///@brief 报警事件类型DH_ALARM_BUS_SHARP_TURN(车辆急转事件)对应的数据描述信息 typedef struct tagALARM_BUS_SHARP_TURN_INFO { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX stuTime; // 事件发生时间 BYTE byReserved[4]; // 字节对齐 } ALARM_BUS_SHARP_TURN_INFO; ///@brief 报警事件类型DH_ALARM_BUS_SCRAM(车辆急停事件)对应的数据描述信息 typedef struct tagALARM_BUS_SCRAM_INFO { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 } ALARM_BUS_SCRAM_INFO; ///@brief 报警事件类型DH_ALARM_BUS_SHARP_ACCELERATE(车辆急加速事件)对应的数据描述信息 typedef struct tagALARM_BUS_SHARP_ACCELERATE_INFO { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[4]; // 字节对齐 } ALARM_BUS_SHARP_ACCELERATE_INFO; ///@brief 报警事件类型DH_ALARM_BUS_SHARP_DECELERATE(车辆急减速事件)对应的数据描述信息 typedef struct tagALARM_BUS_SHARP_DECELERATE_INFO { DWORD dwSize; NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX stuTime; // 事件发生的时间 BYTE byReserved[4]; // 字节对齐 } ALARM_BUS_SHARP_DECELERATE_INFO; ///@brief 门禁卡数据操作类型 typedef enum tagNET_ACCESS_ACTION_TYPE { NET_ACCESS_ACTION_TYPE_UNKNOWN = 0, // 未知 NET_ACCESS_ACTION_TYPE_INSERT = 1, // 插入 NET_ACCESS_ACTION_TYPE_UPDATE = 2, // 更新 NET_ACCESS_ACTION_TYPE_REMOVE = 3, // 删除 }NET_ACCESS_ACTION_TYPE; ///@brief 门禁卡操作数据错误码 typedef enum tagNET_ACCESS_ERRORCODE { NET_ACCESS_ERRORCODE_UNKNOWN = 0, // 未知错误 NET_ACCESS_ERRORCODE_NOTSUPPORT = 1, // 不支持该数据类型 NET_ACCESS_ERRORCODE_FULLDATA = 2, // 数据类型已存满 NET_ACCESS_ERRORCODE_NOTSUPPORTISSUED = 3, // 不支持下发操作 }NET_ACCESS_ERRORCODE; ///@brief 门禁卡数据操作事件 typedef struct tagALARM_ACCESS_CARD_OPERATE_INFO { DWORD dwSize; NET_ACCESS_ACTION_TYPE emActionType; // 门禁卡数据操作类型 char szCardNo[DH_MAX_CARDINFO_LEN]; // 门禁卡卡号 NET_THREE_STATUS_BOOL emResult; // 操作结果,-1为未知,0为失败,1为成功, int nChannelID; // 门通道号(或者门锁,门和门锁一一对应), 从0开始 char szCredentialHolder[16]; // 身份拥有者 NET_ACCESS_METHOD emType; // 用户类型 char szSerialNum[32]; // 序列号 int nIndex; // 某开门方式下的索引号 int nTaskID; // 任务ID NET_ACCESS_ERRORCODE emErrorde; // 操作错误码 (只有当操作结果emResult=0时才有效) }ALARM_ACCESS_CARD_OPERATE_INFO; ///@brief 报警事件类型DH_EVENT_TAKENAWAYDETECTION(物品搬移事件)对应的数据描述信息 typedef struct tagALARM_TAKENAWAY_DETECTION_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nOccurrenceCount; // 规则被触发生次数 int nLevel; // 事件级别,GB30147需求项, 0 提示1 普通2 警告 short nPreserID; // 事件触发的预置点号,从1开始(没有表示未知) char szPresetName[64]; // 事件触发的预置名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } ALARM_TAKENAWAY_DETECTION_INFO; ///@brief 报警事件类型 DH_EVENT_VIDEOABNORMALDETECTION (视频异常事件)对应的数据描述信息 typedef struct tagALARM_VIDEOABNORMAL_DETECTION_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nType; // 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化 // 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测 // 11-视频运动, 12-视频闪烁, 13-视频颜色, 14-虚焦检测, 15-过曝检测, 16-场景剧变 int nValue; // 检测值,值越高表示视频质量越差, GB30147定义 int nOccurrenceCount; // 规则被触发生次数 } ALARM_VIDEOABNORMAL_DETECTION_INFO; ///@brief 报警事件类型DH_EVENT_LOCALALARM(外部报警事件)对应的数据描述信息 typedef struct tagALARM_LOCAL_ALARM_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nSenseType; // 传感器类型 int nDefenceAreaType; // 防区类型, 详见EM_NET_DEFENCE_AREA_TYPE } ALARM_LOCAL_ALARM_INFO; ///@brief 动检触发类型 typedef enum tagEM_MOTION_DETECT_TYPE { EM_MOTION_DETECT_UNKNOWN, // 未知 EM_MOTION_DETECT_HUMAN, // 人 EM_MOTION_DETECT_VEHICLE, // 车 EM_MOTION_DETECT_HUMAN_AND_VEHICLE, // 人和车 } EM_MOTION_DETECT_TYPE; ///@brief 动检区域信息 typedef struct tagNET_MOTIONDETECT_REGION_INFO { UINT nRegionID; // 区域ID char szRegionName[64]; // 区域名称 BYTE bReserved[508]; // 保留字节 } NET_MOTIONDETECT_REGION_INFO; ///@brief 报警事件类型DH_EVENT_MOTIONDETECT(视频移动侦测事件)对应的数据描述信息 typedef struct tagALARM_MOTIONDETECT_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; UINT nRegionNum; // 动检区域个数 NET_MOTIONDETECT_REGION_INFO stuRegion[32]; // 动检区域信息 BOOL bSmartMotionEnable; // 智能动检是否使能 UINT nDetectTypeNum; // 动检触发类型个数 EM_MOTION_DETECT_TYPE emDetectType[32]; // 动检触发类型, 当nRegionNum大于0时,和stuRegion数组一一对应, // 若nRegionNum为0,触发区域未知,不与窗口绑定,默认第一个元素表示触发类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 } ALARM_MOTIONDETECT_INFO; ///@brief 智能动检(人)对象信息 typedef struct tagNET_SMARTDETECT_HUMAN_OBJECT { UINT nHumanID; // 人动检ID NET_RECT stuRect; // 人的位置 BYTE bReserved[508]; // 保留字节 } NET_SMARTDETECT_HUMAN_OBJECT; ///@brief 报警事件类型DH_ALARM_SMARTMOTION_HUMAN(智能视频移动侦测事件(人))对应的数据描述信息 typedef struct tagALARM_SMARTMOTION_HUMAN_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_MOTIONDETECT_REGION_INFO stuSmartRegion[32]; // 智能动检区域信息 UINT nSmartRegionNum; // 智能动检区域个数 UINT nHumanObjectNum; // 智能动检(人)对象个数 NET_SMARTDETECT_HUMAN_OBJECT stuHumanObject[64]; // 智能动检(人)对象信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1024]; // 保留字节 } ALARM_SMARTMOTION_HUMAN_INFO; ///@brief 智能动检(车)对象信息 typedef struct tagNET_SMARTDETECT_VEHICLE_OBJECT { UINT nVehicleID; // 车动检ID NET_RECT stuRect; // 车的位置 BYTE bReserved[508]; // 保留字节 } NET_SMARTDETECT_VEHICLE_OBJECT; ///@brief 报警事件类型DH_ALARM_SMARTMOTION_VEHICLE(智能视频移动侦测事件(车))对应的数据描述信息 typedef struct tagALARM_SMARTMOTION_VEHICLE_INFO { int nChannelID; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) int nEventID; // 事件ID int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_MOTIONDETECT_REGION_INFO stuSmartRegion[32]; // 智能动检区域信息 UINT nSmartRegionNum; // 智能动检区域个数 UINT nVehicleObjectNum; // 智能动检(车)对象个数 NET_SMARTDETECT_VEHICLE_OBJECT stuVehicleObject[64]; // 智能动检(车)对象信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1024]; // 保留字节 } ALARM_SMARTMOTION_VEHICLE_INFO; ///@brief 报警事件类型DH_ALARM_POLICE_CHECK(警员签入签出事件)对应的数据描述信息 typedef struct tagALARM_POLICE_CHECK_INFO { DWORD dwSize; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nEventAction; // 事件动作 char szId[32]; // 签到人ID号 char szName[32]; // 签到人姓名,UTF8 int nSignType; // 类型, 详情查看NET_DRIVER_CHECK_TYPE NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szComment[1024]; // 备注信息 } ALARM_POLICE_CHECK_INFO; ///@brief 报警事件类型DH_ALARM_NEW_FILE(new file事件)对应的数据描述信息 typedef struct tagALARM_NEW_FILE_INFO { DWORD dwSize; int nChannel; // 抓图通道号 int nEventID; // 事件ID DWORD dwEvent; // 事件类型 int FileSize; // 文件大小,单位是字节 int nIndex; // 事件源通道 DWORD dwStorPoint; // 存储点 char szFileName[DH_COMMON_STRING_128]; // 文件名 }ALARM_NEW_FILE_INFO; ///@brief 云台诊断状态类型 typedef enum tagEM_PTZ_STATUS_TYPE { EM_PTZ_STATUS_UNKNOW, // 未知状态,返回状态值错误 EM_PTZ_STATUS_NORMAL, // 正常 EM_PTZ_STATUS_PANOC_FAILED, // 水平光耦异常 EM_PTZ_STATUS_TILEOC_FAILED, // 垂直光耦异常 EM_PTZ_STATUS_OC_FAILED // 全部光耦都异常 } EM_PTZ_STATUS_TYPE; ///@brief 云台状态诊断事件信息(对应DH_ALARM_PTZ_DIAGNOSES) typedef struct tagALARM_PTZ_DIAGNOSES_INFO { int nChannel; // 视频通道号(球机所在的通道号) NET_TIME_EX UTC; // 事件产生时间 EM_PTZ_STATUS_TYPE emPtzStat; // 云台诊断状态 BYTE Reserved[512]; // 保留字节 } ALARM_PTZ_DIAGNOSES_INFO; ///@brief 爆闪灯(闪光灯)报警事件类型 DH_ALARM_FLASH_LIGHT_FAULT typedef struct tagALARM_FLASH_LIGHT_FAULT_INFO { double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventAction; // 事件动作, 1-表示事件开始, 2-表示事件结束; int nLightNum; // 闪光灯个数 int nDevID[MAX_FLASH_LIGHT_NUM]; // 故障的闪光灯设备ID int nLane; // 车道号 BYTE bReserved[512]; // 保留字节 }ALARM_FLASH_LIGHT_FAULT_INFO; ///@brief 频闪灯报警事件类型 DH_ALARM_STROBOSCOPIC_LIGTHT_FAULT typedef struct tagALARM_STROBOSCOPIC_LIGTHT_FAULT_INFO { double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventAction; // 事件动作, 1-表示事件开始, 2-表示事件结束; int nLightNum; // 频闪灯个数 int nDevID[MAX_STROBOSCOPIC_LIGHT_NUM]; // 故障的频闪灯设备ID int nLane; // 车道号 BYTE bReserved[512]; // 保留字节 }ALARM_STROBOSCOPIC_LIGTHT_FAULT_INFO; ///@brief 人数越上限类型 typedef enum tagEM_UPPER_LIMIT_TYPE { EM_UPPER_LIMIT_TYPE_UNKNOWN, // 未知 EM_UPPER_LIMIT_TYPE_ENTER_OVER, // 进入越上限 EM_UPPER_LIMIT_TYPE_EXIT_OVER, // 出来越上限 EM_UPPER_LIMIT_TYPE_INSIDE_OVER, // 内部越上限 EM_UPPER_LIMIT_TYPE_PASS_OVER, // 经过越上限 } EM_UPPER_LIMIT_TYPE; ///@brief 事件类型 DH_ALARM_HUMAM_NUMBER_STATISTIC (人数量/客流量统计事件NumberStat对应的数据描述信息) typedef struct tagALARM_NUMBER_STATISTIC_INFO { double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventAction; // 事件动作,0-事件持续, 1-表示事件开始, 2-表示事件结束; int nNumber; // 区域内物体的个数 int nEnteredNumber; // 进入区域或者出入口内的物体个数 int nExitedNumber; // 出来区域或者出入口内的物体个数 EM_UPPER_LIMIT_TYPE emUpperLimitType; // 人数越上限类型(EnterOver, ExitOver, InsideOver) int nChannelID; // 通道号 int nPassedNumber; // 经过区域物体的个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[504]; // 预留 }ALARM_HUMAN_NUMBER_STATISTIC_INFO; ///@brief 事件类型 DH_ALARM_VIDEOUNFOCUS(视频虚焦报警事件) typedef struct tagALARM_VIDEOUNFOCUS_INFO { int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannel; // 通道号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[60]; // 预留字节 }ALARM_VIDEOUNFOCUS_INFO; ///@brief 防区布防撤防状态类型 typedef enum tagEM_DEFENCEMODE { EM_DEFENCEMODE_UNKNOWN, // "unknown" 未知 EM_DEFENCEMODE_ARMING, // "Arming" 布防 EM_DEFENCEMODE_DISARMING, // "Disarming" 撤防 }EM_DEFENCEMODE; ///@brief 触发方式 typedef enum tagEM_ARMMODECHANGE_TRIGGERMODE { EM_ARMMODECHANGE_TRIGGERMODE_UNKNOWN, //未知 EM_ARMMODECHANGE_TRIGGERMODE_NET, //网络用户 EM_ARMMODECHANGE_TRIGGERMODE_KEYBOARD, //键盘 EM_ARMMODECHANGE_TRIGGERMODE_REMOTECONTROL, //遥控器 }EM_ARMMODECHANGE_TRIGGERMODE; ///@brief 防区类型 typedef enum tagEM_ARMMODECHANGE_DEFENCEAREATYPE { EM_ARMMODECHANGE_DEFENCEAREATYPE_UNKNOWN, //未知 EM_ARMMODECHANGE_DEFENCEAREATYPE_INTIME, //及时 EM_ARMMODECHANGE_DEFENCEAREATYPE_DELAY, //延时 EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAY, //全天 EM_ARMMODECHANGE_DEFENCEAREATYPE_FOLLOW, //跟随 EM_ARMMODECHANGE_DEFENCEAREATYPE_MEDICAL, //医疗 EM_ARMMODECHANGE_DEFENCEAREATYPE_PANIC, //恐慌 EM_ARMMODECHANGE_DEFENCEAREATYPE_FIRE, //火警 EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAYSOUND, //全天有声 EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAYSILENT, //全天无声 EM_ARMMODECHANGE_DEFENCEAREATYPE_ENTRANCE1, //出入防区1 EM_ARMMODECHANGE_DEFENCEAREATYPE_ENTRANCE2, //出入防区2 EM_ARMMODECHANGE_DEFENCEAREATYPE_INSIDE, //内部防区 EM_ARMMODECHANGE_DEFENCEAREATYPE_OUTSIDE, //外部防区 EM_ARMMODECHANGE_DEFENCEAREATYPE_PEOPLEDETECT, //人员检测 }EM_ARMMODECHANGE_DEFENCEAREATYPE; ///@brief 事件类型 DH_ALARM_DEFENCE_ARMMODECHANGE (防区布撤防状态改变事件) typedef struct tagALARM_DEFENCE_ARMMODECHANGE_INFO { EM_DEFENCEMODE emDefenceStatus; //布撤防状态 int nDefenceID; //防区号 NET_TIME_EX stuTime; //时间 EM_ARMMODECHANGE_TRIGGERMODE emTriggerMode; //触发方式 EM_ARMMODECHANGE_DEFENCEAREATYPE emDefenceAreaType; //防区类型 int nID; //遥控器编号或键盘地址 int nAlarmSubSystem; //子系统号 char szName[64]; //防区名称 char szNetClientAddr[64]; //用户IP或网络地址 BYTE reserved[368]; //预留 }ALARM_DEFENCE_ARMMODECHANGE_INFO; ///@brief 工作状态 typedef enum tagEM_SUBSYSTEMMODE { EM_SUBSYSTEMMODE_UNKNOWN, // "unknown" 未知 EM_SUBSYSTEMMODE_ACTIVE, // "active" 激活 EM_SUBSYSTEMMODE_INACTIVE, // "inactive" 未激活 EM_SUBSYSTEMMODE_UNDISTRIBUTED, // "undistributed" 未分配 EM_SUBSYSTEMMODE_ALLARMING, // "AllArming" 全部布防 EM_SUBSYSTEMMODE_ALLDISARMING, // "AllDisarming" 全部撤防 EM_SUBSYSTEMMODE_PARTARMING, // "PartArming" 部分布防 }EM_SUBSYSTEMMODE; ///@brief 触发方式 typedef enum tagEM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE { EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_UNKNOWN, //未知 EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_NET, //网络用户 EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_KEYBOARD, //键盘 EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_REMOTECONTROL, //遥控器 }EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE; ///@brief 事件类型 DH_ALARM_SUBSYSTEM_ARMMODECHANGE (子系统布撤防状态改变事件) typedef struct tagALARM_SUBSYSTEM_ARMMODECHANGE_INFO { EM_SUBSYSTEMMODE emSubsystemMode; //布撤防状态 (只支持AllArming,AllDisarming,PartArming三种状态) NET_TIME_EX UTC; //事件发生的时间 char szSubSystemname[64]; //子系统名称 int nSubSystemID; //子系统编号 EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE emTriggerMode; //触发方式 int nID; //键盘或遥控器地址 char szNetClientAddr[64]; //网络用户IP地址或网络地址 BYTE reserved[440]; //预留 }ALARM_SUBSYSTEM_ARMMODECHANGE_INFO; ///@brief 红外线检测信息事件 (对应 DH_ALARM_RFID_INFO) typedef struct tagALARM_RFID_INFO { int nAction; // 0:开始 1:停止 int nIndex; // 通道号 NET_TIME_EX stuEventTime; // 事件发生的时间 int nValidCount; // RFID 编号数组有效个数 char szRfid[10][12]; // RFID 编号数组 }ALARM_RFID_INFO; ///@brief 烟雾检测报警事件 (DH_ALARM_SMOKE_DETECTION) typedef struct tagALARM_SMOKE_DETECTION_INFO { int nAction; // 0:开始 1:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nChannel; // 通道号 int nEventID; // 事件ID int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位:度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的垂直视场角,单位:度,实际角度乘以100 DH_MSG_OBJECT stuObject; // 检测到的物体 PTZ_SPACE_UNIT stuPtzPosition; // 云台的坐标和放大倍数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char reserved[1024]; // 预留字段 }ALARM_SMOKE_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_PHONECALL_DETECT (打电话检测事件) typedef struct tagALARM_PHONECALL_DETECT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 BYTE reserved1[4]; // 预留字段 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nChannel; // 通道号 int nEventID; // 事件ID int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[128]; // 预留字段 } ALARM_PHONECALL_DETECT_INFO; ///@brief 事件数据类型 typedef enum tagNET_EM_EVENT_DATA_TYPE { NET_EN_EVENT_DATA_TYPE_UNKNOWN, // 未知 NET_EN_EVENT_DATA_TYPE_REAL, // 实时数据 NET_EN_EVENT_DATA_TYPE_ALARM, // 报警数据 }NET_EM_EVENT_DATA_TYPE; ///@brief 事件类型 DH_ALARM_FLOATINGOBJECT_DETECTION (漂浮物检测事件) typedef struct tagALARM_FLOATINGOBJECT_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE reserved1[4]; // 预留字段 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nChannel; // 通道号 int nEventID; // 事件ID int nPresetID; // 事件触发的预置点ID char szPresetName[64]; // 事件触发的预置名称 BOOL bExistFloatingObject; // 是否存在漂浮物 NET_EM_EVENT_DATA_TYPE emEventType; // 事件数据类型 float fCurrentRatio; // 漂浮物当前占比(相对于检测区域)单位:%, 取值范围[0, 100] float fAlarmThreshold; // 报警阈值。漂浮物相对于检测区域的占比, 取值范围[0, 100] NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 BYTE byReserved[1020]; // 预留字段 } ALARM_FLOATINGOBJECT_DETECTION_INFO; ///@brief 水位状态 typedef enum tagNET_EM_WATER_LEVEL_STATUS { NET_EM_WATER_LEVEL_STATUS_UNKNOWN, // 未知 NET_EM_WATER_LEVEL_STATUS_NORMAL, // 水位正常 NET_EM_WATER_LEVEL_STATUS_HIGH, // 水位高于上限阈值 NET_EM_WATER_LEVEL_STATUS_LOW, // 水位低于上限阈值 NET_EM_WATER_LEVEL_STATUS4, // 水位状态由正常到高于阈值 NET_EM_WATER_LEVEL_STATUS5, // 水位状态由高于上限阈值到正常 NET_EM_WATER_LEVEL_STATUS6, // 水位状态由正常到低于下限阈值 NET_EM_WATER_LEVEL_STATUS7, // 水位状态由低于下限阈值到正常 }NET_EM_WATER_LEVEL_STATUS; ///@brief 水位尺颜色 typedef enum tagNET_EM_WATER_RULER_COLOR { NET_EM_WATER_RULER_COLOR_UNKNOW, // 无法识别 NET_EM_WATER_RULER_COLOR_BLUE, // 蓝色 NET_EM_WATER_RULER_COLOR_RED, // 红色 }NET_EM_WATER_RULER_COLOR; ///@brief 水位尺 typedef struct tagNET_WATER_RULER { NET_EM_WATER_RULER_COLOR emRulerColor; // 水位尺颜色 char szRulerNum[128]; // 水位尺编号 float fWaterLevel; // 水位值(对于有拼接的情况,该值为标定的基准值加上当前刻度值,单位:米) BYTE byReserved[512]; // 保留字节 }NET_WATER_RULER; ///@brief 事件类型 DH_ALARM_WATER_LEVEL_DETECTION (水位检测事件) typedef struct tagALARM_WATER_LEVEL_DETECTION_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE reserved1[4]; // 预留字段 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nChannel; // 通道号 int nEventID; // 事件ID int nPresetID; // 预置点ID char szPresetName[64]; // 预置点名称 char szObjectUUID[48]; // 智能物体全局唯一物体标识 NET_EM_EVENT_DATA_TYPE emEventType; // 事件数据类型 NET_EM_WATER_LEVEL_STATUS emStatus; // 水位状态 NET_WATER_RULER stuWaterRuler; // 水位尺 BOOL bManual; // 主动查询水位功能,用于区分是否为手动触发的上报事件 BYTE byReserved[1020]; // 预留字段 } ALARM_WATER_LEVEL_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_LOW_SPEED typedef struct tagALARM_LOW_SPEED_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannel; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID BYTE byReserved[256]; // 预留字节 } ALARM_LOW_SPEED_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_VEHICLEINOUT typedef struct tagALARM_TRAFFIC_VEHICLEINOUT_INFO { int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nChannel; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 车道 UINT nRoadwayNumber; // 自定义车道 int nVehicleInOut; // 车道状态 0 表示离开车道 1 表示进入车道 BYTE byReserved[1024]; // 预留字节 } ALARM_TRAFFIC_VEHICLEINOUT_INFO; ///@brief 事件类型DH_ALARM_TRAFFIC_JUNCTION typedef struct tagALARM_TAFFIC_JUNCTION_INFO { int nAction; // 事件动作 int nChannelID; // 通道号 char szName[128]; // 事件名称 BYTE byMainSeatBelt; // 主驾驶座,系安全带状态,1-系安全带,2-未系安全带 BYTE bySlaveSeatBelt; // 副驾驶座,系安全带状态,1-系安全带,2-未系安全带 BYTE byVehicleDirection; // 当前被抓拍到的车辆是车头还是车尾,具体请见 EM_VEHICLE_DIRECTION BYTE byOpenStrobeState; // 开闸状态,具体请见 EM_OPEN_STROBE_STATE BYTE byReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 int nLane; // 对应车道号 DWORD dwBreakingRule; // 违反规则掩码,第一位:闯红灯; // 第二位:不按规定车道行驶; // 第三位:逆行; 第四位:违章掉头; // 第五位:交通堵塞; 第六位:交通异常空闲 // 第七位:压线行驶; 否则默认为:交通路口事件 NET_TIME_EX RedLightUTC; // 红灯开始UTC时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车辆实际速度Km/h BYTE byDirection; // 路口方向,1-表示正向,2-表示反向 BYTE byLightState; // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯 BYTE byReserved2; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DH_MSG_OBJECT stuVehicle; // 车身信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 char szRecordFile[DH_COMMON_STRING_128]; // 报警对应的原始录像文件信息 EVENT_JUNCTION_CUSTOM_INFO stuCustomInfo; // 自定义信息 BYTE byPlateTextSource; // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别 BYTE byReserved3[3]; // 保留字节,留待扩展. NET_GPS_INFO stuGPSInfo; // GPS信息 BYTE byNoneMotorInfo; // 0-无非机动车人员信息信息,1-有非机动车人员信息信息 /* 此字段为1时下面11个字段生效 */ BYTE byBag; // 是否背包, 0-未知 1-不背包 2-背包 BYTE byUmbrella; // 是否打伞, 0-未知 1-不打伞 2-打伞 BYTE byCarrierBag; // 手提包状态,0-未知 1-没有 2-有 BYTE byHat; // 是否戴帽子, 0-未知 1-不戴帽子 2-戴帽子 BYTE byHelmet; // 头盔状态,0-未知 1-没有 2-有 BYTE bySex; // 性别,0-未知 1-男性 2-女性 BYTE byAge; // 年龄 NET_COLOR_RGBA stuUpperBodyColor; // 上身颜色 NET_COLOR_RGBA stuLowerBodyColor; // 下身颜色 BYTE byUpClothes; // 上身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙 BYTE byDownClothes; // 下身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BYTE byReserved4[22]; // 保留字节,留待扩展 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频,3RSU DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DWORD dwRetCardNumber; // 卡片个数 EVENT_CARD_INFO stuCardInfo[DH_EVENT_MAX_CARD_NUM]; // 卡片信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 EM_TRACK_CAR_STATUS emTrackCarStatus; // 车辆跟踪状态 char szSerialNo[128]; // 和客户端请求的抓图序列号对应 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[852]; // 保留字节,留待扩展 } ALARM_TAFFIC_JUNCTION_INFO; ///@brief 事件类型DH_ALARM_DOOR_CONTROL(报警输出联动开门事件)对应的数据块描述信息 typedef struct tagALARM_DOOR_CONTROL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_OPEN_DOOR_METHOD emOpenDoorMethod; // 开门方式 EM_OPEN_DOOR_STATE emOpenDoorState; // 开门结果 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同; // 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他; // 中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001 BYTE byReserved[1024]; // 预留字节 } ALARM_DOOR_CONTROL_INFO; ///@brief 状态 typedef enum tagNET_EM_ARM_STATUS { EM_ARM_STATUS_UNKNOWN, // 未知 EM_ARM_STATUS_DELAY, // 延时 EM_ARM_STATUS_ARMING, // 布防 EM_ARM_STATUS_DISARMING, // 撤防 }NET_EM_ARM_STATUS; ///@brief 事件类型DH_ALARM_ARMSTATE(防区状态事件)对应的数据块描述信息 typedef struct tagALARM_ARMSTATE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_EM_ARM_STATUS emStatus; // 状态 }ALARM_ARMSTATE_INFO; ///@brief 事件类型 DH_ALARM_LAW_ENFORCEMENT_INFO(实时上报执法终端设备信息事件)对应的数据块描述信息 typedef struct tagALARM_LAW_ENFORCEMENT_INFO { int nAction; // 0:脉冲 1:开始 2:停止 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szUserID[32]; // 设备跌落时登陆的用户信息用户ID char szUserName[128]; // 设备跌落时登陆的用户信息用户名 BYTE byRserved[4]; // 字节对齐 } ALARM_LAW_ENFORCEMENT_INFO; ///@brief 事件类型DH_ALARM_CONGESTION_DETECTION(道路场景车辆拥堵报警事件)对应的数据块描述信息 typedef struct tagALARM_CONGESTION_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置名称 UINT nAlarmMask; // 报警业务掩码, 不同掩码位表示不同报警类型:bit0位表示是否有拥堵报警;bit1位表示是否有排队报警; UINT nVehicleQuantity; // 拥堵车辆数量 UINT nQueueLength; // 车辆排队长度 int nDetectRegionNum; // stuDetectRegion中有效坐标点个数 DH_POINT stuDetectRegion[32]; // 发生报警的区域坐标 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字节 }ALARM_CONGESTION_DETECTION_INFO; ///@brief 车位类型 typedef enum tagEM_SPACE_TYPE { EM_SPACE_TYPE_UNKNOWN = -1, // 未知 EM_SPACE_TYPE_CAR, // 小车位 EM_SPACE_TYPE_BIG_CAR, // 大车位 EM_SPACE_TYPE_HAZARDOUS_CHEMICALS, // 危化品车位 EM_SPACE_TYPE_TRUCK, // 货车车位 EM_SPACE_TYPE_SMALL_TRUCK, // 小客车车位 EM_SPACE_TYPE_BUS, // 大客车车位 }EM_SPACE_TYPE; ///@brief 区域模式统计信息 typedef struct tagNET_AREA_MODE_INFO { char szName[32]; // 区域名称 UINT nCount; // 该区域的总车位个数 EM_SPACE_TYPE emSpaceType; // 车位类型 int nRemainCnt; // 区域剩余可用车位个数 BYTE byReserved[252]; // 保留字节 }NET_AREA_MODE_INFO; ///@brief 事件类型DH_ALARM_VEHICLELIMIT_DETECTION(停车场场景下停车车辆上限报警)对应的数据块描述信息 typedef struct tagALARM_VEHICLELIMIT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置名称 UINT nVehicleQuantity; // 车辆数量 int nDetectRegionNum; // stuDetectRegion中有效坐标点个数 DH_POINT stuDetectRegion[32]; // 发生报警的区域坐标 int nAreaModeInfoNum; // 设备返回的区域模式统计信息(规则数组)的个数,最大值是20 NET_AREA_MODE_INFO stuAreaModeInfo[20]; // 区域模式统计信息(规则数组) NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字节 }ALARM_VEHICLELIMIT_DETECTION_INFO; ///@brief GPS信息 typedef struct tagLAMP_GPS_INFO { DWORD dwLatitude; // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 DWORD dwLongitude; // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 int nNumOfSatellite; // 卫星个数 BYTE byReserved[4]; // 预留字节 } LAMP_GPS_INFO; ///@brief 设备网络离线异常情况 typedef enum tagEM_IS_OFF_LINE { EM_IS_OFF_LINE_UNKNOWN = -1, // 未知 EM_IS_OFF_LINE_NORMAL, // 正常 EM_IS_OFF_LINE_EXCEPTION, // 异常 } EM_IS_OFF_LINE; ///@brief 设备电压异常情况 typedef enum tagEM_IS_VOLTAGE_FAULT { EM_IS_VOLTAGE_FAULT_UNKNOWN = -1, // 未知 EM_IS_VOLTAGE_FAULT_NORMAL, // 正常 EM_IS_VOLTAGE_FAULT_EXCEPTION, // 异常 } EM_IS_VOLTAGE_FAULT; ///@brief 设备电流异常情况 typedef enum tagEM_IS_CURRENT_FAULT { EM_IS_CURRENT_FAULT_UNKNOWN = -1, // 未知 EM_IS_CURRENT_FAULT_NORMAL, // 正常 EM_IS_CURRENT_FAULT_EXCEPTION, // 异常 } EM_IS_CURRENT_FAULT; ///@brief 补光灯是否点亮 typedef enum tagEM_BRIGHT_STATE { EM_BRIGHT_STATE_UNKNOWN = -1, // 未知 EM_BRIGHT_STATE_OFF, // 未点亮 EM_BRIGHT_STATE_ON, // 点亮 } EM_BRIGHT_STATE; ///@brief 补光灯工作模式 typedef enum tagEM_LAMP_STATUS_WORK_MODE { EM_LAMP_STATUS_WORK_MODE_UNKNOWN, // 未知 EM_LAMP_STATUS_WORK_MODE_DHRS_STROBOSCOPIC_LAMP, // RS485频闪灯 EM_LAMP_STATUS_WORK_MODE_DHRS_STEADY_LAMP, // RS485常亮灯 EM_LAMP_STATUS_WORK_MODE_DHRS_FLASH_LAMP, // RS485爆闪灯 } EM_LAMP_STATUS_WORK_MODE; ///@brief 频闪模式 typedef enum tagEM_STROBOSCOPIC_MODE { EM_STROBOSCOPIC_MODE_UNKNOWN = -1, // 未知 EM_STROBOSCOPIC_MODE_ACTIVE, // 主动 EM_STROBOSCOPIC_MODE_PASSIVE, // 被动 } EM_STROBOSCOPIC_MODE; ///@brief 频闪灯参数 typedef struct tagSTROBOSCOPIC_LAMP_PARAM { EM_STROBOSCOPIC_MODE emStroboscopicMode; // 频闪模式 UINT nStayTime; // 频闪持续时间, 单位s, 范围[0,2^32) UINT nFrequency; // 频闪频率, 单位Hz UINT nBrightLevel; // 亮度等级, 1~20 UINT nPulseWidth; // 频闪脉宽, 单位ms, 范围(0,4] BYTE byReserved[36]; // 预留字段 } STROBOSCOPIC_LAMP_PARAM; ///@brief 频闪模式 typedef enum tagEM_TRIGGER_MODE { EM_TRIGGER_MODE_UNKNOWN = -1, // 未知 EM_TRIGGER_MODE_EDGE, // 边沿 EM_TRIGGER_MODE_PWM, // 脉宽 } EM_TRIGGER_MODE; ///@brief 爆闪灯参数 typedef struct tagFLASH_LAMP_PARAM { EM_TRIGGER_MODE emTriggerMode; // 触发方式 UINT nTriggerCount; // 触发计数, 范围[0,2^32) UINT nFlashCount; // 爆闪次数, 范围[0,2^32) UINT nPulseWidth; // 爆闪脉宽, 单位ms, 范围(0~4]ms UINT nPulseWidthDetectThreshold; // 脉宽检测阈值1~4等级 UINT nErrorDetectThreshold; // 误检阀值, 3~8等级 BYTE byReserved[32]; // 预留字段 } FLASH_LAMP_PARAM ; ///@brief 常亮灯参数 typedef struct tagSTEADY_LAMP_PARAM { UINT nBrightLevel; // 亮度等级, 1~20等级 BYTE byReserved[60]; // 预留字段 } STEADY_LAMP_PARAM; ///@brief 补光灯状态信息 typedef struct tagLAMP_STATUS_INFO { UINT nPort; // 表示所连接相机的串口端口号 UINT nAddress; // DHRS补光灯外设地址, 范围0~15 char szSoftwareVersion[128]; // 软件版本 char szDeviceID[32]; // 设备ID LAMP_GPS_INFO stuGPS; // GPS信息 EM_IS_OFF_LINE emIsOffline; // 设备离线异常情况 EM_IS_VOLTAGE_FAULT emIsVoltageFault; // 设备电压异常情况 EM_IS_CURRENT_FAULT emIsCurrentFault; // 设备电流异常情况 EM_BRIGHT_STATE emBrightState; // 补光灯是否点亮 UINT nPower; // 表示设备的功率,以毫瓦为单位 0~65536999 UINT nTemperature; // 表示设备温度,以百分之一度为精度,如1001表示10.01°, 0~25599 UINT nPhotoSensitivity; // 表示设备光敏度,无单位0~4095 UINT nAmbientBrightnessThreshold; // 环境亮度阈值1-6等级 EM_LAMP_STATUS_WORK_MODE emWorkMode; // 补光灯工作模式 STROBOSCOPIC_LAMP_PARAM stuStroboscopicLampParam; // 频闪灯参数 FLASH_LAMP_PARAM stuFlashLampParam; // 爆闪灯参数 STEADY_LAMP_PARAM stuSteadyLampParam; // 常亮灯参数 BYTE byReserved[64]; // 预留字段 } LAMP_STATUS_INFO; ///@brief 交通相机通过串口与补光灯连接获取补光灯的状态信息 typedef struct tagALARM_TRAFFIC_LAMP_WORK_STATE_INFO { NET_TIME_EX UTC; // 对应的UTC秒数 UINT nUTCMS; // 对应的UTC毫秒数 int nChannelID; // 通道号 int nLampStatusNum; // 补光灯状态信息数量 LAMP_STATUS_INFO stuLampStatus[8]; // 补光灯状态信息 BYTE byReserved[256]; // 预留字节 } ALARM_TRAFFIC_LAMP_WORK_STATE_INFO; ///@brief 事件类型 DH_ALARM_TRAFFIC_PARKING_TIMEOUT(停车时长超限事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_PARKING_TIMEOUT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 NET_TIME_EX UTC; // 事件发生的时间 NET_TIME stuInParkTime; // 进场时间 NET_TIME stuOutParkTime; // 出场时间 UINT nParkingTime; // 停车时长,单位秒 BYTE byReserved[1024]; // 预留字节 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 }ALARM_TRAFFIC_PARKING_TIMEOUT_INFO; ///@brief 事件类型 DH_ALARM_TICKET_INFO_REPORT (车票信息上报事件)对应的数据块描述信息 typedef struct tagALARM_TICKET_INFO_REPORT { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nOpenFlag; // 开门标示,0开门,其他不开门 BYTE byReserved[4]; // 预留字段 char szPassengerName[256]; // 姓名 char szCitizenID[32]; // 证件号 NET_TIME stuDriveTime; // 发车时间 char szDestination[256]; // 目的站 char szScheduleID[64]; // 班次 }ALARM_TICKET_INFO_REPORT; ///@brief 口罩检测结果类型 typedef enum tagEM_MASK_DETECT_RESULT_TYPE { EM_MASK_DETECT_TYPE_UNKNOWN, // 未知 EM_MASK_DETECT_TYPE_NO_MASK, // 未戴口罩 EM_MASK_DETECT_TYPE_WEAR_MASK, // 戴口罩 }EM_MASK_DETECT_RESULT_TYPE; ///@brief 区域内人员体温信息 typedef struct tagNET_MAN_TEMP_INFO { UINT nObjectID; // 物体ID NET_RECT stRect; // 坐标信息, 8192坐标系 double dbHighTemp; // 最高的温度 UINT nTempUnit; // 温度单位(0摄氏度 1华氏度 2开尔文) BOOL bIsOverTemp; // 是否温度异常 BOOL bIsUnderTemp; // 是否温度异常 UINT nOffset; // 小图特征值在二进制数据块中的偏移 UINT nLength; // 小图特征值长度, 单位:字节 EM_MASK_DETECT_RESULT_TYPE emMaskDetectResult; // 口罩检测结果 NET_RECT stThermalRect; // 坐标信息(坐标系:8192) UINT nAge; // 年龄 EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[32]; // 预留字段 } NET_MAN_TEMP_INFO; ///@brief 事件类型 ALARM_ANATOMY_TEMP_DETECT_INFO(人体温智能检测事件)对应的数据块描述信息 typedef struct tagALARM_ANATOMY_TEMP_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知 NET_MAN_TEMP_INFO stManTempInfo; // 区域内人员体温信息 UINT nSequence; // 帧序号 UINT nEventRelevanceID; // 事件关联ID BOOL bIsFaceRecognition; // 是否做过后智能的目标识别 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1020]; // 预留字节 } ALARM_ANATOMY_TEMP_DETECT_INFO; ///@brief 事件类型 ALARM_REGULATOR_ABNORMAL_INFO(标准黑体源异常报警事件)对应的数据块描述信息 typedef struct tagALARM_REGULATOR_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID char szTypes[MAX_COMMON_STRING_32]; // 异常类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字节 } ALARM_REGULATOR_ABNORMAL_INFO; ///@brief 事件触发源信息(APP信息) typedef struct tagNET_DHOP_APP_INFO { char szAppName[128]; // App名称 char szAppVersion[64]; // App版本 BYTE byReserved[1024]; // 预留字节 }NET_DHOP_APP_INFO; ///@brief 事件类型 DH_ALARM_DHOP_CUSTOM 及 DH_ALARM_DHOP_CUSTOM_ONCE (DHOP自定义报警事件)对应的数据块描述信息 typedef struct tagALARM_DHOP_CUSTOM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSourceIndex; // 触发源ID BYTE byReserved1[4]; // 预留,字节对齐 NET_DHOP_APP_INFO stuAppInfo; // 事件触发源信息(APP信息) char szCustomData[4096]; // 自定义数据 double PTS; // 时间戳(单位是毫秒) BYTE byReserved[2040]; // 预留字节 } ALARM_DHOP_CUSTOM_INFO; ///@brief 红绿灯触发源 typedef enum tagEM_TRFAFFIC_LIGHT_SOURCE { EM_TRFAFFIC_LIGHT_SOURCE_UNKNOWN = 0, // 未知 EM_TRFAFFIC_LIGHT_SOURCE_SIGNAL, // 信号检测器 EM_TRFAFFIC_LIGHT_SOURCE_DSP, // DSP(算法检测) EM_TRFAFFIC_LIGHT_SOURCE_NET_SIGNAL, // 网络信号检测器 }EM_TRFAFFIC_LIGHT_SOURCE; ///@brief 交通灯类型 typedef enum tagEM_TRFAFFIC_LIGHT_TYPE { EM_TRFAFFIC_LIGHT_TYPE_UNKNOWN = 0, // 未知 EM_TRFAFFIC_LIGHT_TYPE_RED, // 红灯 EM_TRFAFFIC_LIGHT_TYPE_YELLOW, // 黄灯 EM_TRFAFFIC_LIGHT_TYPE_GREEN, // 绿灯 }EM_TRFAFFIC_LIGHT_TYPE; ///@brief 交通灯的持续时间,时间单位毫秒 typedef struct tagNET_LIGHTPERIODS_INFO { EM_TRFAFFIC_LIGHT_TYPE emType; // 交通灯类型 int nStraight; // 直行灯持续时间 int nTurnLeft; // 左转灯持续时间 int nTurnRight; // 右转灯持续时间 int nUTurn; // 掉头灯持续时间 BYTE byReserved[60]; // 预留 }NET_LIGHTPERIODS_INFO; ///@brief 信号灯指示灯状态 typedef struct tatNET_TRAFFIC_LIGHT_STATE { NET_TRAFFIC_LIGHT_STATUS emStraightLightInfo; // 直行信号灯状态 NET_TRAFFIC_LIGHT_STATUS emTurnLeftLightInfo; // 左转信号灯状态 NET_TRAFFIC_LIGHT_STATUS emTurnRightLightInfo; // 右转信号灯状态 NET_TRAFFIC_LIGHT_STATUS emUTurnLightInfo; // 调头信号灯状态 BYTE byReserved[64]; // 预留 }NET_TRAFFIC_LIGHT_STATE; ///@brief 事件类型 DH_ALARM_TRAFFIC_LIGHT_STATE (交通灯事件)对应的数据块描述信息 typedef struct tagALARM_TRAFFIC_LIGHT_STATE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSource; // 视频分析的数据源地址 int nFrameSequence; // 帧序号 EM_TRFAFFIC_LIGHT_SOURCE emLightSource; // 红绿灯触发源 int nLightPeriodsNum; // stuLightPeriods元素个数 NET_LIGHTPERIODS_INFO stuLightPeriods[4]; // 每个元素表示一种灯亮的持续时间,时间单位毫秒 NET_TRAFFIC_LIGHT_STATE stuLightStates[8]; // 交通灯状态,数组下标为车道号,实际只用到了第一个元素 int nLightStateNum; // stuLightStates元素个数 BYTE byReserved[1020]; // 预留字段 }ALARM_TRAFFIC_LIGHT_STATE_INFO; ///@brief 刷卡机业务类型 typedef enum tagEM_SWIPCARD_DEVICE_BUSINESS_TYPE { EM_SWIPCARD_DEVICE_BUSINESS_TYPE_UNKNOWN = 0, // 未知 EM_SWIPCARD_DEVICE_BUSINESS_TYPE_FINGER_PRINT, // 前车门信息刷卡器 EM_SWIPCARD_DEVICE_BUSINESS_TYPE_CLEARCAR, // 后车门清车刷卡器 }EM_SWIPCARD_DEVICE_BUSINESS_TYPE; ///@brief 刷卡机状态 typedef enum tagEM_SWIPCARD_DEVICE_STATUS { EM_SWIPCARD_DEVICE_STATUS_UNKNOWN = 0, // 未知 EM_SWIPCARD_DEVICE_STATUS_NORMAL, // 正常 EM_SWIPCARD_DEVICE_STATUS_FAILURE, // 故障 }EM_SWIPCARD_DEVICE_STATUS; ///@brief 刷卡设备信息 typedef struct tagNET_SWIPCARD_DEVICE_INFO { EM_SWIPCARD_DEVICE_BUSINESS_TYPE emBusinessType; // 刷卡机业务类型 EM_SWIPCARD_DEVICE_STATUS emStatus; // 刷卡机状态 BYTE byReserved[1016]; // 预留 }NET_SWIPCARD_DEVICE_INFO; ///@brief 事件类型 DH_ALARM_SWIPCARD_STATUS (刷卡机状态报警)对应的数据块描述信息 typedef struct tagALARM_SWIPCARD_STATUS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_TIME stuCurrentTime; // 本地时间 NET_SWIPCARD_DEVICE_INFO stuDevices[5]; // 车上刷卡设备信息 int nDeviceNum; // 刷卡设备个数 BYTE byReserved[2044]; // 预留字节 } ALARM_SWIPCARD_STATUS_INFO; ///@brief 音频通道状态 typedef enum tagEM_AUDIOHOST_CHNL_STATE { EM_AUDIOHOST_CHNL_STATE_UNKNOWN = 0, // 未知 EM_AUDIOHOST_CHNL_STATE_NORMAL, // 正常 EM_AUDIOHOST_CHNL_STATE_MUTE, // 静音 EM_AUDIOHOST_CHNL_STATE_FAULT, // 故障 }EM_AUDIOHOST_CHNL_STATE; ///@brief 事件类型 DH_ALARM_AUDIOHOST_STATE (音频主机状态报警)对应的数据块描述信息 typedef struct tagALARM_AUDIOHOST_STATE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始,2:停止 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAudioChannel; // 音频通道 EM_AUDIOHOST_CHNL_STATE emState; // 音频通道状态 BYTE byReserved[2048]; // 预留字节 } ALARM_AUDIOHOST_STATE_INFO; ///@brief 活动状态检测具体类型 typedef enum TagEM_PATIENTDETECTION_TYPE { EM_PATIENTDETECTION_TYPE_UNKNOWN, // 未知类型 EM_PATIENTDETECTION_TYPE_CROSS_REGION, // 警戒区域报警 EM_PATIENTDETECTION_TYPE_LIGHT_OFF, // 病房电灯被熄灭 EM_PATIENTDETECTION_TYPE_STOP_DETECTION, // 撤防 EM_PATIENTDETECTION_TYPE_START_DETECTION, // 开始布防 EM_PATIENTDETECTION_TYPE_ESCAPE, // 逃跑 EM_PATIENTDETECTION_TYPE_ESCAPE_RELEASE, // 解除逃离报警 }EM_PATIENTDETECTION_TYPE; ///@brief 活动状态检测报警事件 (DH_ALARM_PATIENTDETECTION) typedef struct tagALARM_PATIENTDETECTION_INFO { BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束 NET_TIME stuTime; // 事件发生时间 EM_PATIENTDETECTION_TYPE emDetectionType; // 当前事件具体类型 BYTE byReserved[256]; // 预留字段 }ALARM_PATIENTDETECTION_INFO; ///@brief 雷达监测超速报警事件 (DH_ALARM_RADAR_HIGH_SPEED) typedef struct tagALARM_RADAR_HIGH_SPEED_INFO { NET_TIME_EX stuTime; // 事件发生时间 float fSpeed; // 速度(单位:km/h) char szPlateNumber[16]; // 车牌 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) BYTE byReserved[958]; // 预留字段 }ALARM_RADAR_HIGH_SPEED_INFO; ///@brief 设备各功能是否正常 typedef enum TagEM_POLLING_ALARM_DEV_STATE { EM_POLLING_ALARM_DEV_STATE_UNKNOWN = -1, // 未知 EM_POLLING_ALARM_DEV_STATE_ABNORMAL, // 不正常 EM_POLLING_ALARM_DEV_STATE_NORMAL, // 正常 EM_POLLING_ALARM_DEV_STATE_NOT_INSPECTED, // 未巡检 }EM_POLLING_ALARM_DEV_STATE; ///@brief 设备状态 typedef struct tagNET_POLLING_ALARM_DEV_STATE { EM_POLLING_ALARM_DEV_STATE emSupplyLight; // 补光灯 EM_POLLING_ALARM_DEV_STATE emKeyboard; // 按键 EM_POLLING_ALARM_DEV_STATE emCard; // 刷卡 EM_POLLING_ALARM_DEV_STATE emScreen; // 屏幕 EM_POLLING_ALARM_DEV_STATE emVoice; // 声音 EM_POLLING_ALARM_DEV_STATE emCamera; // 镜头 char szReserved[128]; // 预留字段 }NET_POLLING_ALARM_DEV_STATE; ///@brief 设备巡检报警事件 (DH_ALARM_POLLING_ALARM) typedef struct tagALARM_POLLING_ALARM_INFO { NET_TIME_EX stuTime; // 事件发生时间 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) char szPollingID[64]; // 巡检标识 char szSN[64]; // 设备编号 NET_POLLING_ALARM_DEV_STATE stuDeviceState; // 设备状态 BYTE byReserved[694]; // 预留字段 }ALARM_POLLING_ALARM_INFO; ///@brief 贴条事件(对应事件 DH_ALARM_PASTE_DETECTION) typedef struct tagALARM_PASTE_DETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_MSG_OBJECT stuObject; // 检测到的物体 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DH_MSG_HANDLE_EX stuEventHandler; // 联动信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved[1023]; // 保留字节,留待扩展. }ALARM_PASTE_DETECTION_INFO; ///@brief 热成像规则间温差异常报警 (DH_ALARM_BETWEENRULE_TEMP_DIFF) typedef struct tagALARM_BETWEENRULE_DIFFTEMPER_INFO { int nAction; // 0:开始 1:停止 int nOsdId; // 温差OSD配置中的OSD编号 int nChannelID; // 视频通道号 NET_RADIOMETRY_ALARMCONTION emAlarmContion; // 报警条件 0:小于 1:等于 2:大于 int nRuleId1; // 测温规则1,参考配置CFG_RADIOMETRY_RULE_INFO int nRuleId2; // 测温规则2,参考配置CFG_RADIOMETRY_RULE_INFO float fDiffValue; // 规则间温差值 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT UINT nPresetID; // 预置点 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[128]; // 预留字段 }ALARM_BETWEENRULE_DIFFTEMPER_INFO; ///@brief 热成像热点异常报警事件(对应 DH_ALARM_HOTSPOT_WARNING) typedef struct tagALARM_HOTSPOT_WARNING_INFO { int nAction; // 0:开始 1:停止 int nChannelID; // 视频通道号 DH_POINT stuCoordinate; // 热点的坐标,坐标值 0~8191 float fHotSpotValue; // 热点温度值 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_HOTSPOT_WARNING_INFO; ///@brief 热成像冷点异常报警事件(对应 DH_ALARM_COLDSPOT_WARNING) typedef struct tagALARM_COLDSPOT_WARNING_INFO { int nAction; // 0:开始 1:停止 int nChannelID; // 视频通道号 DH_POINT stuCoordinate; // 冷点的坐标,坐标值 0~8191 float fColdSpotValue; // 冷点温度值 int nTemperatureUnit; // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 }ALARM_COLDSPOT_WARNING_INFO; ///@brief 水流量计信息 (对应 DH_ALARM_FLOW_METER) typedef struct tagALARM_FLOW_METER_INFO { DWORD dwSize; float fInstantRate; // 瞬时流速 m/s float fInstantFlow; // 瞬时流量 m^3/h float fTotalFlow; // 总流量 m^3 float fCurDayFlow; // 当天流量 m^3 UINT unCurDayWorkingTime; // 当天降尘作业时间,单位: 分 UINT unTotalWorktingTime; // 累计降尘作业时间,单位: 分 NET_GPS_STATUS_INFO stuGPS; // GPS信息 float fCurTemp; // 设备当前温度值,单位: 摄氏度 } ALARM_FLOW_METER_INFO; ///@brief 录像丢帧类型 typedef enum tagEM_BUF_DROP_FRAME_TYPE { EM_BUF_DROP_FRAME_UNKOWN = 0, // 丢帧类型为 未知录像 EM_BUF_DROP_FRAME_DEVBUF, // 丢帧类型为 主码流录像 EM_BUF_DROP_FRAME_EXTBUF, // 丢帧类型为 辅码流录像 EM_BUF_DROP_FRAME_NETBUF, // 丢帧类型为 主码流网络录像 EM_BUF_DROP_FRAME_EXTRA1NETBUF // 丢帧类型为 辅码流1网络录像 }EM_BUF_DROP_FRAME_TYPE; ///@brief 录像缓冲区丢帧事件(对应 DH_ALARM_BUF_DROP_FRAME) typedef struct tagALARM_BUF_DROP_FRAME_INFO { int nAction; // 0:开始 1:停止 EM_BUF_DROP_FRAME_TYPE emDropFrameType; // 录像丢帧类型 BYTE reserved[1024]; // 预留字段 }ALARM_BUF_DROP_FRAME_INFO; ///@brief 主备切换事件 集群切换报警 (对应 DH_ALARM_DCSSWITCH) typedef struct tagALARM_DCSSWITCH_INFO { int nAction; // 0:开始 1:停止 char strMasterIP[32]; // 被替换的主用机IP char strSlaveIP[32]; // 执行替换的备用机IP NET_TIME_EX stuStartTime; // 替换的开始时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[1024]; // 预留字段 }ALARM_DCSSWITCH_INFO; ///@brief 双控设备主板与备板之间版本信息不一致异常事件 (对应 DH_ALARM_DOUBLE_DEV_VERSION_ABNORMAL) typedef struct tagALARM_DOUBLE_DEV_VERSION_ABNORMAL_INFO { int nAction; // 0:开始 1:停止 char strMasterVer[64]; // 主板的版本信息(仅nAction 为0时 该值有效) char strSlaveVer[64]; // 备板的版本信息(仅nAction 为0时 该值有效) NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE reserved[1024]; // 预留字段 }ALARM_DOUBLE_DEV_VERSION_ABNORMAL_INFO; ///@brief 雷达连接状态 typedef enum tagEM_RADAR_CONNECT_STATE { EM_RADAR_CONNECT_STATE_UNKNOWN, // 未知 EM_RADAR_CONNECT_STATE_NORMAL, // 正常 EM_RADAR_CONNECT_STATE_EXCEPTION, // 异常 }EM_RADAR_CONNECT_STATE; ///@brief 雷达连接状态事件 (对应 DH_ALARM_RADAR_CONNECT_STATE) typedef struct tagALARM_RADAR_CONNECT_STATE_INFO { EM_RADAR_CONNECT_STATE emRadarConnectState; // 雷达连接状态 BYTE reserved[1024]; // 预留字段 }ALARM_RADAR_CONNECT_STATE_INFO; ///@brief 高空抛物物体动作 typedef enum tagEM_HIGHTOSS_ACTION_TYPE { EM_HIGHTOSS_ACTION_UNKNOWN, // 未知 EM_HIGHTOSS_ACTION_APPEAR, // 第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体 EM_HIGHTOSS_ACTION_MOVE, // 正在运动,物体被正常跟踪 EM_HIGHTOSS_ACTION_STAY, // 物体停止运动,这个物体不会出现在下一帧物体列表中,物体开始移动后再恢复在列表中 EM_HIGHTOSS_ACTION_REMOVE, // 物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重新出现是有可能再次被使用 EM_HIGHTOSS_ACTION_DISAPPEAR, // 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现 EM_HIGHTOSS_ACTION_SPLIT, // 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离 EM_HIGHTOSS_ACTION_MERGE, // 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体 EM_HIGHTOSS_ACTION_RENAME, // 如果算法无法确定分离动作中某个物体是原先同一个物体,应该先创建一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID } EM_HIGHTOSS_ACTION_TYPE; ///@brief 目标出现起始点相关信息 typedef struct tagNET_EVENT_STARTPOINT { NET_POINT stuBelongBox[4]; // 起始点所属区域包围盒,四边形,8192坐标系 char szBoxInfo[64]; // 起始点所属区域的描述信息 NET_POINT stuPoint; // 起始点位置 BYTE byReserved[260]; // 预留字节 }NET_EVENT_STARTPOINT; ///@brief 高空抛物物体信息 typedef struct tagNET_HIGHTOSS_OBJECT_INFO { UINT nObjectID; // 物体ID EM_HIGHTOSS_ACTION_TYPE emObjAction; // 物体动作类型 NET_RECT stuBoundingBox; // 包围盒 UINT nConfidence; // 置信度 EM_ANALYSE_OBJECT_TYPE emObjectType; // 物体类型 DH_POINT stuCenter; // 物体型心 NET_EVENT_IMAGE_OFFSET_INFO stuImageInfo; // 抓拍小图 NET_EVENT_STARTPOINT stuStartPoint; // 目标出现起始点 BYTE byReserved[1172]; // 预留字节 } NET_HIGHTOSS_OBJECT_INFO; ///@brief 事件类型 DH_ALARM_HIGH_TOSS_DETECT (高空抛物检测事件)对应的数据块描述信息 typedef struct tagALARM_HIGH_TOSS_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved1[4]; // 对齐 int nEventID; // 事件ID UINT nObjNum; // 物体个数 NET_HIGHTOSS_OBJECT_INFO stuObjInfos[50]; // 物体信息 BYTE byReserved[1024]; // 预留字段 }ALARM_HIGH_TOSS_DETECT_INFO; ///@brief 硬盘健康异常原因 typedef enum tagEM_HARD_DISK_ABNORMAL_REASON { EM_HARD_DISK_ABNORMAL_REASON_UNKNOWN, // 未知 EM_HARD_DISK_ABNORMAL_REASON_TEMPERATURE_HIGH, // 硬盘温度过高 EM_HARD_DISK_ABNORMAL_REASON_HARD_DRIVE_ABNORMAL, // 硬盘链路异常 EM_HARD_DISK_ABNORMAL_REASON_ABOUT_TO_ERROR, // 硬盘即将错误 } EM_HARD_DISK_ABNORMAL_REASON; ///@brief 硬盘设备信息 typedef struct tagHARD_DISK_DEVICE_INFO { char szName[32]; // 硬盘名称 EM_HARD_DISK_ABNORMAL_REASON emHardDiskAbnormalReason; // 硬盘健康异常原因 BYTE byReserved[252]; // 预留字段 } HARD_DISK_DEVICE_INFO; ///@brief 事件类型 DH_ALARM_STORAGE_HEALTH_ABNORMAL (硬盘健康报警事件)对应的数据块描述信息 typedef struct tagALARM_STORAGE_HEALTH_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved1[4]; // 对齐 UINT nEventID; // 事件ID int nDeviceNum; // 硬盘数量 HARD_DISK_DEVICE_INFO stuDeviceInfo[16]; // 硬盘设备信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字段 } ALARM_STORAGE_HEALTH_ABNORMAL_INFO; ///@brief 事件类型 DH_ALARM_CLEAR_CAR (清车报警事件)对应的数据块描述信息 typedef struct tagALARM_CLEAR_CAR_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲事件 NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[1020]; // 预留字段 }ALARM_CLEAR_CAR_INFO; ///@brief 录像加锁方式 typedef enum tagEM_MARKFILE_MODE { EM_MARK_FILE_BY_TIME_MODE, // 通过时间方式对录像加锁 EM_MARK_FILE_BY_NAME_MODE, // 通过文件名方式对录像加锁 }EM_MARKFILE_MODE; ///@brief 文件名产生的方式 typedef enum tagEM_MARKFILE_NAMEMADE_TYPE { EM_MARKFILE_NAMEMADE_DEFAULT, // 默认方式:需要用户传递录像文件名参数szFilename EM_MARKFILE_NAMEMADE_JOINT, // 拼接文件名方式:用户传递磁盘号(nDriveNo)、起始簇号(nStartCluster),不需要传递录像文件名 }EM_MARKFILE_NAMEMADE_TYPE; ///@brief CLIENT_SetMarkFile输入参数 typedef struct tagNET_IN_SET_MARK_FILE { DWORD dwSize; // EM_MARKFILE_MODE emLockMode; // 录像加锁方式, EM_MARKFILE_NAMEMADE_TYPE emFileNameMadeType; // 文件名产生的方式 int nChannelID; // 通道号 char szFilename[MAX_PATH]; // 文件名 unsigned int nFramenum; // 文件总帧数 unsigned int nSize; // 文件长度 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 unsigned int nDriveNo; // 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像) unsigned int nStartCluster; // 起始簇号 BYTE byRecordFileType; // 录象文件类型 0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片, 5: 智能录像 BYTE byImportantRecID; // 0:普通录像 1:重要录像 BYTE byHint; // 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 ) BYTE byRecType; // 0-主码流录像 1-辅码流1录像 2-辅码流2录像 3-辅码流3录像 UINT nLockTime; // 锁定时长,以加锁时间为起点,单位为小时 } NET_IN_SET_MARK_FILE; ///@brief CLIENT_SetMarkFile输出参数 typedef struct tagNET_OUT_SET_MARK_FILE { DWORD dwSize; } NET_OUT_SET_MARK_FILE; ///@brief CLIENT_SetMarkFileByTime输入参数 typedef struct tagNET_IN_SET_MARK_FILE_BY_TIME { DWORD dwSize; int nChannel; //需要锁定的通道号,从0开始,元素为-1时,表示全通道。 NET_TIME_EX stuStartTime; //开始时间 NET_TIME_EX stuEndTime; //结束时间 BOOL bFlag; //标记动作 true : 标记, false : 清除 BOOL bLockTimeFlag; //nLockTime字段标志位, 为 TRUE 时使用nLockTime UINT nLockTime; //锁定时长,以加锁时间为起点 ,单位为小时 } NET_IN_SET_MARK_FILE_BY_TIME; ///@brief CLIENT_SetMarkFileByTime输出参数 typedef struct tagNET_OUT_SET_MARK_FILE_BY_TIME { DWORD dwSize; } NET_OUT_SET_MARK_FILE_BY_TIME; ///@brief CLIENT_GetMarkInfo输入参数 typedef struct tagNET_IN_GET_MARK_INFO { DWORD dwSize; } NET_IN_GET_MARK_INFO; ///@brief CLIENT_GetMarkInfo输出参数 typedef struct tagNET_OUT_GET_MARK_INFO { DWORD dwSize; int nTotalSpace; //总容量(单位M) int nMarkSpace; //录像被锁定的容量 单位M } NET_OUT_GET_MARK_INFO; ///@brief 消除反潜报警入参 typedef struct tagNET_IN_CLEAR_REPEAT_ENTER { char szCardNO[DH_MAX_CARDINFO_LEN]; // 用户卡号 BYTE bReserved[1024]; }NET_IN_CLEAR_REPEAT_ENTER; ///@brief 消除反潜报警出参 typedef struct tagNET_OUT_CLEAR_REPEAT_ENTER { BYTE bReserved[1024]; }NET_OUT_CLEAR_REPEAT_ENTER; ///@brief 报警事件类型DH_ALARM_RECORD_LOSS(录像丢失事件)对应的数据描述信息 typedef struct tagALARM_RECORD_LOSS_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作, 0:Pulse, 1:Start, 2:Stop char szIP[DH_MAX_IPADDR_LEN_EX]; // 发生丢录像的设备IP int nPort; // 发生丢录像的设备端口 BYTE byReserved[1024]; // 预留 } ALARM_RECORD_LOSS_INFO; ///@brief 报警事件类型DH_ALARM_VIDEO_FRAME_LOSS(视频丢帧事件)对应的数据描述信息 typedef struct tagALARM_VIDEO_FRAME_LOSS_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作, 0:Pulse, 1:Start, 2:Stop char szIP[DH_MAX_IPADDR_LEN_EX]; // 发生丢帧的设备IP int nPort; // 发生丢帧的设备端口 BYTE byReserved[1024]; // 预留 } ALARM_VIDEO_FRAME_LOSS_INFO; ///@brief 报警事件类型DH_ALARM_RECORD_VOLUME_FAILURE(磁盘卷异常)对应的数据描述信息 typedef struct tagALARM_RECORD_VOLUME_FAILURE_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作, 0:Pulse, 1:Start, 2:Stop BYTE byReserved[1024]; // 预留 } ALARM_RECORD_VOLUME_FAILURE_INFO; ///@brief 事件类型 DH_EVENT_SNAP_UPLOAD(图上传完成事件)对应的数据描述信息 typedef struct tagEVENT_SNAP_UPLOAD_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作, 0:Pulse, 1:Start, 2:Stop BOOL bSnapResult; // 图片是否上传成功 char szFilePath[MAX_PATH]; // 上传的本地图片名称 BYTE byReserved[1024]; // 预留 }EVENT_SNAP_UPLOAD_INFO; ///@brief 报警事件类型DH_ALARM_UPLOADPIC_FAILCOUNT(上传中盟失败数据个数)对应的数据描述信息 typedef struct tagALARM_UPLOADPIC_FAILCOUNT_INFO { int nFailCount; // 上传失败个数 BYTE byReserved[1024]; // 预留 } ALARM_UPLOADPIC_FAILCOUNT_INFO; ///@brief 报警事件类型 DH_ALARM_HUMAN_INSIDE(舱内有人事件) 对应的数据描述信息 typedef struct tagALARM_HUMAN_INSIDE_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,-1表示未知事件,0表示持续性事件开始,1表示持续性事件结束 int nHumanNumber; // 舱内人数 NET_TIME stuUtcTime; // 事件发生的时间 BYTE byReserved[1000]; // 预留 } ALARM_HUMAN_INSIDE_INFO; ///@brief 报警事件类型 DH_ALARM_HUMAN_TUMBLE_INSIDE(舱内有人摔倒事件) 对应的数据描述信息 typedef struct tagALARM_HUMAN_TUMBLE_INSIDE_INFO { int nChannelID; // 通道号 int nEventAction; // 事件动作,-1表示未知事件,0表示持续性事件开始,1表示持续性事件结束 NET_TIME stuUtcTime; // 事件发生的时间 BYTE byReserved[1000]; // 预留 } ALARM_HUMAN_TUMBLE_INSIDE_INFO; ///@brief 报警事件类型 DH_ALARM_DISABLE_LOCKIN(闭锁进门按钮触发事件) 对应的数据描述信息 typedef struct tagALARM_DISABLE_LOCKIN_INFO { int nChannelID; // 通道号 NET_TIME stuUtcTime; // 事件发生的时间 BYTE byReserved[1000]; // 预留 } ALARM_DISABLE_LOCKIN_INFO; ///@brief 报警事件类型 DH_ALARM_DISABLE_LOCKOUT(闭锁出门按钮触发事件) 对应的数据描述信息 typedef struct tagALARM_DISABLE_LOCKOUT_INFO { int nChannelID; // 通道号 NET_TIME stuUtcTime; // 事件发生的时间 BYTE byReserved[1000]; // 预留 } ALARM_DISABLE_LOCKOUT_INFO; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///@brief CLIENT_GetOperatorName 输入参数 typedef struct tagNET_IN_GET_OPERATOR_NAME { BYTE byReserved[1024]; // 预留 } NET_IN_GET_OPERATOR_NAME; ///@brief CLIENT_GetOperatorName 输出参数 typedef struct tagNET_OUT_GET_OPERATOR_NAME { char szOpearatorName[DH_COMMON_STRING_64]; //操作员用户名 BYTE byReserved[1024]; // 预留 } NET_OUT_GET_OPERATOR_NAME; ///@brief CLIENT_GetSelfCheckInfo 输入参数 typedef struct tagNET_IN_GET_SELTCHECK_INFO { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为 sizeof (NET_IN_GET_SELTCHECK_INFO) } NET_IN_GET_SELTCHECK_INFO; ///@brief 事件类型EVENT_IVS_PTZ_PRESET(云台转动到预置点事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ALARM_PTZ_PRESET_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ char szPresetName[PTZ_PRESET_NAME_LEN]; // 预置点名称 PTZ_SPEED_UNIT stuPos; // 预置点的坐标和放大倍数 int nPresetID; // 预置点ID BYTE bReserved[1024]; // 保留字节 } DEV_EVENT_ALARM_PTZ_PRESET_INFO; ///@brief 事件类型EVENT_IVS_RFID_INFO(红外线检测信息事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ALARM_RFID_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nAction; // 0:开始 1:停止 int nValidCount; // RFID 编号数组有效个数 char szRfid[10][12]; // RFID 编号数组 BYTE bReserved[1024]; // 保留字节 } DEV_EVENT_ALARM_RFID_INFO; ///@brief 称重系统车辆信息 typedef struct tagNET_CAR_WEIGTH_INFO { unsigned int nAxleNum; // 车轴数 unsigned int nMaxAxleDistance; // 最大轴距, 单位是毫米 unsigned int nAxleWeightInfo[MAX_AXLE_NUM]; // 每根车轴的重量, 单位Kg, 第一个元素表示第一个车轴重, 依次类推 unsigned int nAxleDistanceInfo[MAX_AXLE_NUM-1]; // 轴与轴的间隔, 单位毫米, 第一个元素表示一二轴间距, 第二个元素表示二三轴间距, 依次类推 unsigned int nOverWeight; // 超重信息, 单位千克 unsigned int nTotalWeight; // 总重信息, 单位千克 unsigned int nAxisType; // 平板称重器提供的轴型信息 UINT nSpeed; // 称重卡口测量上报的速度, 单位km/h BYTE byReserved[500]; // 保留字节 }NET_CAR_WEIGHT_INFO; ///@brief 事件类型 EVENT_IVS_QSYTRAFFICCARWEIGHT (交通卡口称重事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_QSYTRAFFICCARWEIGHT_INFO { NET_CAR_WEIGHT_INFO stCarWeightInfo; // 称重系统车辆信息 DEV_EVENT_TRAFFICJUNCTION_INFO stJunctionInfo; // 交通卡口信息 }DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO; ///@brief 前后车牌信息 typedef struct tagNET_PLATE_INFO { char szFrontPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 前车牌号码 EM_NET_PLATE_COLOR_TYPE emFrontPlateColor; //前车牌颜色 char szBackPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 后车牌号码 EM_NET_PLATE_COLOR_TYPE emBackPlateColor; // 后车牌颜色 BYTE bReserved[1024]; // 保留字节 } NET_PLATE_INFO; ///@brief 记录两张卡口图片的抓拍时间 typedef struct tagNET_SNAP_TIME_INFO { NET_TIME_EX stFrontGateSnapTime; // 前卡口图片抓拍时间(精确到毫秒) NET_TIME_EX stBackGateSnapTime; // 后卡口图片抓拍时间(精确到毫秒) BYTE bReserved[128]; // 保留字节 }NET_SNAP_TIME_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_COMPAREPLATE(卡口车牌合成事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_COMPAREPLARE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频帧序号 int nSpeed; // 车辆实际速度(单位: km/h) int nLane; // 对应的车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 NET_PLATE_INFO stuPlateInfo; // 前后车牌信息 EVENT_COMM_INFO stCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_SNAP_TIME_INFO stSnapTimeInfo; // 记录两张卡口图片的抓拍时间 BYTE bReserved[820]; // 保留信息 } DEV_EVENT_TRAFFIC_COMPAREPLATE_INFO; ///@brief 打靶像机事件 typedef struct tagDEV_EVENT_SHOOTING_SCORE_RECOGNITION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; DH_POINT stuDetectRegion; // 规则检测区域 int nValidBulletHolesNum; // 检测到的有效弹孔个数 NET_BULLET_HOLES_INFO stuBulletHolesInfo[DH_MAX_BULLET_HOLES]; // 检测到的弹孔 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_SHOOTING_SCORE_RECOGNITION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TRANSFINITE(违章超限抓图上报事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_TRANSFINITE_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szPlateNumber[16]; // 车牌 char szTime[20]; // 违章时间 double dbLong; // 长,单位米 double dbWidth; // 宽,单位米 double dbHeight; // 高, 单位米 char szViolationCode[16]; // 违章代码 char szDescribe[132]; // 违章描述 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[4096]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFIC_TRANSFINITE_INFO; ///@brief 车辆抓拍图片信息 typedef struct tagDEV_EVENT_TRAFFIC_FCC_IMAGE { DWORD dwOffSet; // 图片文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwLength; // 图片大小, 单位:字节 WORD wWidth; // 图片宽度, 单位:像素 WORD wHeight; // 图片高度, 单位:像素 }DEV_EVENT_TRAFFIC_FCC_IMAGE; ///@brief 车辆抓图信息 typedef struct tagDEV_EVENT_TRAFFIC_FCC_OBJECT { DEV_EVENT_TRAFFIC_FCC_IMAGE stuImage; // 车辆抓拍图片信息 }DEV_EVENT_TRAFFIC_FCC_OBJECT; ///@brief 事件类型EVENT_IVS_TRAFFIC_FCC_INFO typedef struct tagDEV_EVENT_TRAFFIC_FCC_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 DWORD nTriggerID; // 触发类型: 1表示提枪, 2表示挂枪 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ DWORD dwNum; // 加油枪号 DWORD dwLitre; // 加油升数,单位 0.01升 EM_REFUEL_TYPE emType; // 加油类型: 取值范围("90#","93#","10#","-20#") DWORD dwMoney; // 加油金额,单位 0.01元 char szPlateNumber[DH_COMMON_STRING_16]; // 车牌号 char szTime[DH_COMMON_STRING_32]; // 事件发生时间: "2016-05-23 10:31:17" DEV_EVENT_TRAFFIC_FCC_OBJECT stuObject; // 车辆抓图信息 BYTE bReserved[1024]; // 保留字节,留待扩展 }DEV_EVENT_TRAFFIC_FCC_INFO; ///@brief 综合状态 typedef enum tagEM_PARKINGSPACE_STATUS { EM_PARKINGSPACE_STATUS_UNKNOWN, EM_PARKINGSPACE_STATUS_BUSY, // 占用 EM_PARKINGSPACE_STATUS_FREE, // 空闲 EM_PARKINGSPACE_STATUS_OVERLINE, // 压线 }EM_PARKINGSPACE_STATUS; ///@brief 车位抠图信息 typedef struct tagNET_FEATUREPIC_AREA { int nRetCount; // 实际返回坐标个数 DH_POINT stuFeaturePicArea[10]; // 车位信息抠图坐标 BYTE bReserved[256]; // 保留字节 }NET_FEATUREPIC_AREA; ///@brief 事件类型EVENT_IVS_TRAFFIC_ANALYSE_PRESNAP(车牌预处理抓片图片事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频帧序号 int nLane; // 对应的车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EM_PARKINGSPACE_STATUS emParkingSpaceStatus; // 设备管理的所有车位的综合状态 EVENT_COMM_INFO stCommInfo; // 公共信息 EM_PARKINGSPACE_STATUS emCurParkingSpaceStatus; // 对应当前车位号的车位状态 NET_FEATUREPIC_AREA stuParkingInfo; // 车位抠图信息坐标,现有支持4个顶点,绝对坐标,值域由图片的分辨率决定 DH_RESOLUTION_INFO stuResolution; // 图片分辨率 BYTE bReserved[716]; // 保留信息 }DEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO; ///@brief 事件类型EVENT_IVS_NEAR_DISTANCE_DETECTION(近距离接触事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_NEAR_DISTANCE_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nAction; // 0:脉冲 1:开始 2:停止 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BYTE bReserved[2048]; // 保留字节 } DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO; ///@brief 堆积物点阵图信息 typedef struct tagNET_FLOATINGOBJECT_MASK_INFO { UINT nColNum; // 点阵列数 UINT nOffset; // 偏移 UINT nLength; // 长度 BYTE byReserved[508]; // 预留字段 } NET_FLOATINGOBJECT_MASK_INFO; ///@brief 漂浮物检测场景 typedef enum tagEM_FLOATINGOBJECT_DETECTION_SENCE_TYPE { EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_UNKNOWN, // 未知 EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_NOMAL, // 普通漂浮物检测 EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_BUBBLE, // 泡沫检测 }EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE; ////@brief 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_FLOATINGOBJECT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 int nImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 UINT nOccurrenceCount; // 事件触发累计次数 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 BOOL bExistFloatingObject; // 是否存在漂浮物 NET_EM_EVENT_DATA_TYPE emEventType; // 事件数据类型 float fCurrentRatio; // 漂浮物当前占比(相对于检测区域)单位:%, 取值范围[0, 100] float fAlarmThreshold; // 报警阈值。漂浮物相对于检测区域的占比, 取值范围[0, 100] NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 NET_FLOATINGOBJECT_MASK_INFO stuObjectMaskInfo; // 堆积物点阵图信息 EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE emDetectSenceType; // 区分是普通漂浮物场景还是泡沫检测场景 BYTE byReserved[3432]; // 保留字节,留待扩展. } DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_WATER_LEVEL_DETECTION(水位检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WATER_LEVEL_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[MAX_EVENT_NAME]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 预置点名称 char szObjectUUID[48]; // 智能物体全局唯一物体标识 NET_EM_EVENT_DATA_TYPE emEventType; // 事件数据类型 NET_EM_WATER_LEVEL_STATUS emStatus; // 水位状态 NET_WATER_RULER stuWaterRuler; // 水位尺 NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 BOOL bManual; // 主动查询水位功能,用于区分是否为手动触发的上报事件 BYTE byReserved[1020]; // 保留字节 }DEV_EVENT_WATER_LEVEL_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SHIP_DETECTION (船舶检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_SHIP_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 int nImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 NET_CROSSREGION_DIRECTION_INFO emDirection; // 表示入侵方向 NET_CROSSREGION_ACTION_INFO emActionType; // 表示检测动作类型 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 UINT nOccurrenceCount; // 事件触发累计次数 int nTrackLineNum; // 物体运动轨迹顶点数 NET_POINT stuTrackLine[DH_MAX_TRACK_LINE_NUM];// 物体运动轨迹 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 int nTrackNum; // 轨迹数(与检测到的物体个数对应) DH_POLY_POINTS stuTrackInfo[HDBJ_MAX_OBJECTS_NUM]; // 轨迹信息(与检测到的物体对应) EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 BOOL bExistShip; // 是否存在船舶 BYTE bReserved[4096]; // 保留字节,留待扩展. } DEV_EVENT_SHIP_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_HOLD_UMBRELLA (违规撑伞检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_HOLD_UMBRELLA_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒 缺省值0表示无意义 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[4088 - POINTERSIZE]; // 保留字节,留待扩展. } DEV_EVENT_HOLD_UMBRELLA_INFO; ///@brief 事件类型 EVENT_IVS_GARBAGE_EXPOSURE (垃圾暴露检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_GARBAGE_EXPOSURE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒 缺省值0表示无意义 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[3016]; // 保留字节,留待扩展. } DEV_EVENT_GARBAGE_EXPOSURE_INFO; ///@brief 事件类型 EVENT_IVS_DUSTBIN_OVER_FLOW (垃圾桶满溢检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_DUSTBIN_OVER_FLOW_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒 缺省值0表示无意义 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 UINT nRuleId; // 规则编号 char szRuleName[128]; // 规则名称 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[2884]; // 保留字节,留待扩展. } DEV_EVENT_DUSTBIN_OVER_FLOW_INFO; ///@brief 事件类型EVENT_IVS_TRASH_WITHOUT_COVER_DETECTION (垃圾桶未盖盖子检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 规则ID, 用于标示哪个规则触发的事件 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号, 从1开始 int nPresetID; // 事件触发的预置点号,从1开始, 0 表示无效 char szReserved1[4]; // 字节对齐 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_DOOR_FRONT_DIRTY (门前脏乱检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_DOOR_FRONT_DIRTY_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[64]; // 事件触发的预置名称 char szShopAddress[256]; // 商铺地址名称 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 char szSourceID[32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[4088 - POINTERSIZE]; // 保留字节,留待扩展. } DEV_EVENT_DOOR_FRONT_DIRTY_INFO; ///@brief 事件类型 EVENT_IVS_STREET_SUNCURE 沿街晾晒事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_STREET_SUNCURE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_COMMON_STRING_128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[DH_COMMON_STRING_64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 char szSourceID[DH_COMMON_STRING_32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szShopAddress[64]; // 商铺地址 BYTE bReserved[4028]; // 保留字节,留待扩展 }DEV_EVENT_STREET_SUNCURE_INFO; ///@brief 事件类型 EVENT_IVS_OUTDOOR_ADVERTISEMENT 户外广告事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_COMMON_STRING_128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[DH_COMMON_STRING_64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 char szSourceID[DH_COMMON_STRING_32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szShopAddress[64]; // 商铺地址 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[4024 - POINTERSIZE]; // 保留字节,留待扩展 }DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO; ///@brief 事件类型 EVENT_IVS_HUDDLE_MATERIAL 乱放物料检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_HUDDLE_MATERIAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_COMMON_STRING_128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 int nObjectNum; // 检测到的物体个数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 char szPresetName[DH_COMMON_STRING_64]; // 事件触发的预置名称 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 char szSourceID[DH_COMMON_STRING_32]; // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE bReserved[4092]; // 保留字节,留待扩展 }DEV_EVENT_HUDDLE_MATERIAL_INFO; ///@brief 事件类型 EVENT_IVS_FIRE_LINE_DETECTION 进入消防通道检测 对应的数据块描述信息 typedef struct tagDEV_EVENT_FIRE_LINE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nSequence; // 帧序号 UINT nRuleID; // 规则编号 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[32]; // 检测到的物体 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_FIRE_LINE_DETECTION_INFO; ///@brief 违法占用公交车道信息 typedef struct tagNET_OCCUPY_BYS_LANE_CUSTOM_INFO { NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 BYTE byReserved[256]; // 保留信息 }NET_OCCUPY_BYS_LANE_CUSTOM_INFO; ///@brief 违法占用公交车道图片类型 typedef enum tagEM_OCCUPY_BYS_LANE_IMAGE_TYPE { EM_OCCUPY_BYS_LANE_IMAGE_TYPE_UNKNOWN = -1, // 未知 EM_OCCUPY_BYS_LANE_IMAGE_TYPE_SYNTHESIS, // 合成 EM_OCCUPY_BYS_LANE_IMAGE_TYPE_ORIGINAL, // 原图 }EM_OCCUPY_BYS_LANE_IMAGE_TYPE; ///@brief 违法占用公交车道图片数据 typedef struct tagNET_OCCUPY_BYS_LANE_IMAGE_INFO { UINT nOffset; // 二进制在图片中的偏移 UINT nLength; // 图片大小,单位:字节 EM_OCCUPY_BYS_LANE_IMAGE_TYPE emImageType; // 图片类型 BYTE byReserved[124]; // 保留字节 }NET_OCCUPY_BYS_LANE_IMAGE_INFO; ///@brief 事件类型 EVENT_IVS_OCCUPY_BUS_LANE 违法占用公交车道 对应的数据块描述信息 typedef struct tagDEV_EVENT_OCCUPY_BYS_LANE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 NET_OCCUPY_BYS_LANE_CUSTOM_INFO stuCustomInfo; // 信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 NET_OCCUPY_BYS_LANE_IMAGE_INFO stImageInfo[8]; // 抓拍图片信息 int nImageInfoNum; // 抓图信息个数 NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_OCCUPY_BUS_LANE_INFO; ///@brief 事件类型 EVENT_IVS_DISTRESS_DETECTION 求救检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_DISTRESS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nSequence; // 帧序号 UINT nRuleID; // 规则编号 DH_MSG_OBJECT stuObject; // 检测到的物体 NET_POINT stuDetectRegion[20]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 UINT nPresetID; // 事件触发的预置点名称 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_DISTRESS_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT (交通副驾驶未系安全带事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 int nSpeed; // 车辆实际速度,Km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON EVENT_COMM_INFO stCommInfo; // 公共信息 }DEV_EVENT_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT; ///@brief 包裹物体信息 typedef struct tagNET_PACK_OBJECT { UINT nObjectID; // 物体ID EM_ANALYSE_OBJECT_TYPE emType; // 物体类型 NET_RECT stuBoundingBox; // 包围盒 NET_POINT stuCenter; // 物体型心(不是包围盒中心)二维空间点类型 BYTE bReserved[1024]; // 保留字节 }NET_PACKAGE_OBJECT; ///@brief 事件类型 EVENT_IVS_PACKBROKEN_DETECTION 包裹破损检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_PACKBROKEN_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT DetectRegion[20]; // 规则检测区域 int nObjectNum; // 检测到的物体个数 NET_PACKAGE_OBJECT stuObjects[128]; // 检测到的物体信息 int nPresetID; // 事件触发的预置点号 从1开始 }DEV_EVENT_PACKBROKEN_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_PACKLAND_DETECTION 包裹着地检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_PACKLAND_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT DetectRegion[20]; // 规则检测区域 int nObjectNum; // 检测到的物体个数 NET_PACKAGE_OBJECT stuObjects[128]; // 检测到的物体信息 int nPresetID; // 事件触发的预置点号 从1开始 }DEV_EVENT_PACKLAND_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_PACKOPEN_DETECTION 开箱验示检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_PACKOPEN_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT DetectRegion[20]; // 规则检测区域 int nObjectNum; // 检测到的物体个数 NET_PACKAGE_OBJECT stuObjects[128]; // 检测到的物体信息 int nPresetID; // 事件触发的预置点号 从1开始 }DEV_EVENT_PACKOPEN_DETECTION_INFO; ///@brief 违章类型 typedef struct tagNET_VIOLATION_TYPE { BOOL bIsNotStoppingBeforeStopLine; // 停止线前未停车 TRUE:未停车 FALSE:停车 BOOL bIsNoParkingInWaitingArea; // 等候区未停车 TRUE:未停车 FALSE:停车 BYTE byReserved[24]; // 保留 }NET_VIOLATION_TYPE; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURN_RIGHT_NO_STOP 右转不停再起步事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_TURN_RIGHT_NO_STOP_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 int nSpeed; // 车速,单位km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 NET_VIOLATION_TYPE stuViolationType; // 违章类型 NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 NET_TIME stuStartTime; // 转弯开始时间 NET_TIME stuStopTime; // 转弯停止时间 int nMaximumSpeed; // 转弯过程最大车速 km/时 int nAverageSpeed; // 转弯过程平均车速km/时 BYTE byReserved[680]; // 保留字节 }DEV_EVENT_TRAFFIC_TURN_RIGHT_NO_STOP_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_CROSSING_GUARDRAIL 跨越护栏事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_CROSSING_GUARDRAIL_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 BYTE byReserved1[2]; int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nSource; // 视频分析的数据源地址 int nSpeed; // 车速,单位km/h DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BYTE byReserved[712]; // 保留字节 }DEV_EVENT_TRAFFIC_CROSSING_GUARDRAIL_INFO; ///@brief 事件类型 EVENT_IVS_SCALPER_ALARM(黄牛高频报警)对应的数据块描述信息 typedef struct tagDEV_EVENT_SCALPER_ALARM_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; int nEventID; // 事件ID UINT nSequence; // 帧序号 UINT nRuleID; // 规则编号 NET_TIME_EX UTC; // 事件发生的时间 BOOL bIsGlobalScene; // 是否上传大图 true表示第一个图片为全景大图,信息由ImageInfo来表示 NET_FACE_IMAGE_INFO stuImageInfo; // 标识大图信息IsGlobalScene为true时有效 DH_MSG_OBJECT stuObject; // 物体信息 FACERECOGNITION_PERSON_INFOEX stuPerson; // 注册库目标信息 UINT nSimilarity; // 相似度 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_FACE_DATA stuFaceData; // 目标数据 UINT nAppearTimes; // 出现次数 char szUID[32]; // 数据库的唯一标识符 char szFeatureVersion[32]; // 特征值算法版本 BYTE byReserved[1024]; // 字节对齐 }DEV_EVENT_SCALPER_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_VEHICLE_PERIPHERAL_ALARM(车载外设异常报警)对应的数据块描述信息 typedef struct tagDEV_EVENT_VEHICLE_PERIPHERAL_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 EM_VEHICLE_PERIPHERAL_TYPE emPeripheralType; // 外设类型 EM_VEHICLE_PERIPHERAL_ALARM emAlarm; // 报警类型 double dbSpeed; // 速度, 单位km/h(小数点后一位) double dbDistance; // 距离, 单位m char szVideoPath[256]; // VideoPath路径 char byReserved[768]; // 保留字节 }DEV_EVENT_VEHICLE_PERIPHERAL_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_EMERGENCY 对应的数据块描述信息 typedef struct tagDEV_EVENT_EMERGENCY_INFO { int nAction; // 0:脉冲 UINT nID; // 用于标识不同的紧急事件 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szIMEI[16]; // 国际移动设备辨识码15位数字标识 UINT nDistance; // 距离上次上报的GPS移动距离, 单位0.1Km char szPlateNumber[64]; // 车牌号码 char szReplyNumber[16]; // 应答号码 int nImageInfoNum; // 图片信息个数 SCENE_IMAGE_INFO_EX stuImageInfo[16]; // 图片信息 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 }DEV_EVENT_EMERGENCY_INFO; ///@brief 统计模式 typedef enum tagEM_STATISTICS_MODE { EM_STATISTICS_MODE_UNKNOWN, // 未知 EM_STATISTICS_MODE_AREA, // 区域 EM_STATISTICS_MODE_SPACE, // 车位 }EM_STATISTICS_MODE; ///@brief 车位模式统计信息 typedef struct tagNET_SPACE_MODE_INFO { char szParkNo[32]; // 车位编号 EM_SPACE_TYPE emSpaceType; // 车位类型 BOOL bUsed; // 该车位是否有车 BYTE byReserved[256]; // 保留字节 }NET_SPACE_MODE_INFO; ///@brief 更新类型 typedef enum tagEM_UPDATE_TYPE { EM_UPDATE_TYPE_UNKNOWN = -1, // 未知 EM_UPDATE_TYPE_DELETE, // 删除区域或车位 EM_UPDATE_TYPE_MODIFY, // 修改区域或车位 EM_UPDATE_TYPE_ADD, // 增加区域或车位 }EM_UPDATE_TYPE; ///@brief 区域或车位更新信息 typedef struct tagNET_UPDATE_INFO { EM_UPDATE_TYPE emType; // 更新类型 char szName[32]; // 更新的区域或车位名称 EM_SPACE_TYPE emBeforeUpdateType; // 更新前的车位类型 EM_SPACE_TYPE emAfterUpdateType; // 更新后的车位类型 char szResvered[256]; // 保留字节 } NET_UPDATE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKING_STATISTICS 对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO { int nAction; // 0:脉冲 int nChannel; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID NET_AREA_MODE_INFO stuAreaModeInfo[5]; // 区域模式统计信息 区域;emStatisticsMode为 EM_STATISTICS_MODE_AREA 时有效 int nAreaModeInfoNum; // 区域模式统计信息个数 NET_SPACE_MODE_INFO stuSpaceModeInfo[99]; // 车位模式统计信息,每个元素表示一个车位;emStatisticsMode为 EM_STATISTICS_MODE_SPACE 时有效 int nSpaceModeInfoNum; // 车位模式统计信息个数 EM_STATISTICS_MODE emStatisticsMode; // 统计模式 NET_UPDATE_INFO stuUpdateInfo[99]; // 区域或车位更新信息 int nUpdateInfoNum; // 区域或车位更新信息个数 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1008]; // 保留字节 }DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO; ///@brief 事件类型 EVENT_IVS_HEAT_IMAGING_TEMPER对应的数据描述信息 typedef struct tagDEV_EVENT_HEAT_IMAGING_TEMPER_INFO { char szName[64]; // 温度异常点名称 从测温规则配置项中选择 int nAlarmId; // 报警项编号 NET_RADIOMETRY_RESULT emResult; // 报警结果值 fTemperatureValue 的类型 NET_RADIOMETRY_ALARMCONTION emAlarmContion; // 报警条件 float fTemperatureValue; // 报警温度值 NET_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位(当前配置的温度单位) DH_POINT stCoordinate; // 报警点的坐标 相对坐标体系,取值均为0~8191 UINT nPresetID; // 预置点 UINT nChannel; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 DH_POLY_POINTS stuAlarmCoordinates; // 报警坐标, 其类型可以是点,线或多边形。替换stCoordinate字段 BOOL bUseNameEx; // szNameEx 是否有效,为TRUE时,使用szNameEx字段 char reserved1[4]; // 字节对齐 char szNameEx[128]; // 温度异常点名称扩展 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 float fThreshold; // 报警阈值温度/温度斜率 int nSlopePeriod; // 温度斜率周期 float fSlopeMutation; // 温度斜率突变值 char reserved[872]; } DEV_EVENT_HEAT_IMAGING_TEMPER_INFO; ///@brief 事件类型 EVENT_IVS_ROAD_OBSTACLE_DETECTION 对应的数据描述信息 typedef struct tagDEV_EVENT_ROAD_OBSTACLE_DETECTION_INFO { int nAction; // 1:开始 2:停止 int nChannel; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 UINT nRuleID; // 规则编号 BYTE byReserved[1020]; // 保留字节 }DEV_EVENT_ROAD_OBSTACLE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_BRIGANDAGE_CAR (盗抢车辆事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_BRIGANDAGE_CAR_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型: 0车检器,1雷达,2视频 int nMark; // 抓拍帧标记 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 抓拍序号 0/1 : 1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 int nSpeed; // 车速(单位km/h) DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE byReserved[1004]; // 保留字节 }DEV_EVENT_TRAFFIC_BRIGANDAGE_CAR_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_COUNTERFEIT_PLATE_CAR (假牌车辆事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_COUNTERFEIT_PLATE_CAR_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型: 0车检器,1雷达,2视频 int nMark; // 抓拍帧标记 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 抓拍序号 0/1 : 1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 int nSpeed; // 车速(单位km/h) DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE byReserved[1004]; // 保留字节 }DEV_EVENT_TRAFFIC_COUNTERFEIT_PLATE_CAR_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_FAKE_PLATE_CAR (套牌车辆事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_FAKE_PLATE_CAR_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型: 0车检器,1雷达,2视频 int nMark; // 抓拍帧标记 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 抓拍序号 0/1 : 1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 int nSpeed; // 车速(单位km/h) DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE byReserved[1004]; // 保留字节 }DEV_EVENT_TRAFFIC_FAKE_PLATE_CAR_INFO; ///@brief 事件类型 EVENT_IVS_SEWAGE_DETECTION (排污检测事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_SEWAGE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; EM_CLASS_TYPE emClassType; // 智能事件所属大类 char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) UINT UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 UINT nPresetID; // 事件触发的预置点号,从1开始, 没有该字段,表示预置点未知 NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_SEWAGE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_MOTORCYCLE_FORBID (禁摩事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_MOTORCYCLE_FORBID { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号 0/1 : 1表示抓拍正常结束,0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_MOTORCYCLE_FORBID; ///@brief 污水颜色 typedef enum tagEM_WATER_COLOR { EM_WATER_COLOR_UNKNOWN, // 未知 EM_WATER_COLOR_BLACK, // 黑色 EM_WATER_COLOR_RED, // 红色 EM_WATER_COLOR_GREEN, // 绿色 EM_WATER_COLOR_YELLOW, // 黄色 }EM_WATER_COLOR; ///@brief 事件类型 EVENT_IVS_WATERCOLOR_DETECTION (水体颜色事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_WATERCOLOR_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; EM_CLASS_TYPE emClassType; // 智能事件所属大类 char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nEventID; // 事件ID编号 double PTS; // 时间戳(单位是毫秒) UINT UTC; // 事件发生的时间(单位是秒) UINT UTCMS; // 事件时间(单位是毫秒) int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 UINT nPresetID; // 事件触发的预置点号,从1开始, 没有该字段,表示预置点未知 EM_WATER_COLOR emWaterColor; // 污水颜色 NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_WATERCOLOR_DETECTION_INFO; ///@brief 触发事件的类型 typedef enum tagEM_HELMET_EVENT_TYPE { EM_UNKNOWN_TYPE, EM_NOT_WEAR_HELMET, // 未佩戴安全帽 }EM_HELMET_EVENT_TYPE; ///@brief 事件类型 EVENT_IVS_HELMET_DETECTION (安全帽检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_HELMET_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号 int nObjectID; // 目标ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_HELMET_EVENT_TYPE emHelmetEventType ; // 触发事件类型 HUMAN_IMAGE_INFO stuHumanImage; // 人体图片 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 }DEV_EVENT_HELMET_DETECTION_INFO; ///@brief Mask信息 typedef struct tagNET_CFG_MASK_INFO { UINT nOffset; // Mask信息在二进制数据块中的偏移 UINT nLength; // Mask信息大小,单位:字节 BYTE byReserved[1016]; }NET_CFG_MASK_INFO; ///@brief 应用场景 typedef enum tagEM_DEPOSIT_DETECTION_SCENE_TYPE { EM_DEPOSIT_DETECTION_SCENE_TYPE_UNKNOWN = -1, // 未知 EM_DEPOSIT_DETECTION_SCENE_TYPE_LATTICE, // 格口检测 EM_DEPOSIT_DETECTION_SCENE_TYPE_CONVEROR_BELT, // 传送带阻塞检测 }EM_DEPOSIT_DETECTION_SCENE_TYPE; ///@brief 事件类型 EVENT_IVS_DEPOSIT_DETECTION (包裹堆积程度检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_DEPOSIT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nEventID; // 事件ID int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 char szRegionName[64]; // 格口名称 UINT nStackThreshold; // 包裹堆积百分比 UINT nGridState; // 格口状态 0:未知1:空仓 2:半仓 3:满仓 4: 爆仓 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 全景大图信息 NET_INTELLIGENCE_IMAGE_INFO stuDepositImage; // 格口抠图图片信息 BYTE byReserved[1024]; // 为图片信息做预留字节,新增的字段请在该保留字节下面添加 NET_CFG_MASK_INFO stuMask; // Mask信息 EM_DEPOSIT_DETECTION_SCENE_TYPE emSceneType; // 应用场景 }DEV_EVENT_DEPOSIT_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_HOTSPOT_WARNING (热点异常报警事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_HOTSPOT_WARNING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nEventID; // 事件ID DH_POINT stuPoint; // 热点的坐标,坐标值 0~8191 float fHotSpotValue; // 热点温度值 NET_TEMPERATURE_UNIT nTemperatureUnit; // 温度单位(当前配置的温度单位) BYTE byReserved[256]; // 保留字节 }DEV_EVENT_HOTSPOT_WARNING_INFO; ///@brief 课堂行为动作类型 typedef enum tagEM_CLASSROOM_ACTION { EM_CLASSROOM_ACTION_UNKNOWN, // 未知 EM_CLASSROOM_ACTION_PLAY_PHONE, // 玩手机 EM_CLASSROOM_ACTION_HANDSUP, // 举手 EM_CLASSROOM_ACTION_LISTEN, // 听讲 EM_CLASSROOM_ACTION_READ_WRITE, // 读写 EM_CLASSROOM_ACTION_TABLE, // 趴桌子 EM_CLASSROOM_ACTION_TURN, // 转身 } EM_CLASSROOM_ACTION; ///@brief 事件类型 EVENT_IVS_CLASSROOM_BEHAVIOR (课堂行为分析事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_CLASSROOM_BEHAVIOR_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nObjectID; // 物体ID UINT nSequence; // 帧序号 EM_CLASSROOM_ACTION emClassroomAction; // 课堂行为动作 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 UINT nPresetID; // 事件触发的预置点号 char szPresetName[64]; // 事件触发的预置点名称 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他; //中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001 BYTE byReserved1[2]; // 用于字节对齐 DH_RECT stuBoundingBox; // 包围盒 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 底图信息 NET_INTELLIGENCE_IMAGE_INFO stuFaceImage; // 小图信息 NET_FACE_ATTRIBUTE_EX stuFaceAttributes; // 属性 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 预留字节 } DEV_EVENT_CLASSROOM_BEHAVIOR_INFO; ///@brief 事件类型 EVENT_IVS_VEHICLE_DISTANCE_NEAR (安全驾驶车距过近报警事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO { int nAction; // 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szDriverID[32]; // 司机ID char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 BYTE bReserved[736]; // 预留字节 } DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL (驾驶员异常报警事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX UTC; // 事件发生的时间 char szVideoPath[256]; // 违章关联视频FTP上传路径 BYTE bReserved[768]; // 预留字节 } DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVER_CHANGE (驾驶员变更报警事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVER_CHANGE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 NET_TIME_EX UTC; // 事件发生的时间 char szPrevDriverID[MAX_COMMON_STRING_32]; // 驾驶员更换前驾驶员ID char szCurDriverID[MAX_COMMON_STRING_32]; // 驾驶员更换后驾驶员ID char szVideoPath[256]; // 违章关联视频FTP上传路径 BYTE bReserved[768]; // 预留字节 } DEV_EVENT_TRAFFIC_DRIVER_CHANGE_INFO; ///@brief 安全帽属性 typedef struct tagNET_HELMET_ATTRIBUTE { EM_WORK_HELMET_STATE emHelmetState; // 安全帽佩戴状态 EM_CLOTHES_COLOR emHelmetColor; // 安全帽颜色 UINT nHelmetFlag; // 报警类型: 0:未知, 1:达到触发速度的报警, 2:达到上报速度的报警, 3:两者同时达到 int nReportFlag; // 报警上传标识 -1: 未知, 0: 未报警, 1: 报警, int nHasLegalHat; // 安全帽检测结果, 0-合规 1-不合规 2-未知 BYTE byReserved[1012]; // 预留字节 } NET_HELMET_ATTRIBUTE; ///@brief 工作服合法状态 typedef enum tagEM_CLOTHES_LEGAL_STATE { EM_CLOTHES_LEGAL_STATE_UNKNOWN, // 未知 EM_CLOTHES_LEGAL_STATE_WRONGFUL, // 不合法 EM_CLOTHES_LEGAL_STATE_LEGAL, // 合法 } EM_CLOTHES_LEGAL_STATE; ///@brief 工作服属性 typedef struct tagNET_WORKCLOTHES_ATTRIBUTE { EM_WORKCLOTHES_STATE emWorkClothesState; // 工作服穿戴状态 EM_CLOTHES_COLOR emWorkClothColor; // 工作服颜色 EM_CLOTHES_LEGAL_STATE emWorkClothesLegalState; // 工作服合法状态 BYTE byReserved[1020]; // 预留字节 } NET_WORKCLOTHES_ATTRIBUTE; ///@brief 工作裤穿戴状态 typedef enum tagEM_WORKPANTS_STATE { EM_WORKPANTS_STATE_UNKNOWN, // 未知 EM_WORKPANTS_STATE_NOTWEAR, // 没有 EM_WORKPANTS_STATE_WEAR, // 有 } EM_WORKPANTS_STATE; ///@brief 工作裤属性 typedef struct tagNET_WORKPANTS_ATTRIBUTE { EM_WORKPANTS_STATE emWorkPantsState; // 工作裤穿戴状态 EM_CLOTHES_COLOR emWorkPantsColor; // 工作裤颜色 BYTE byReserved[1024]; // 预留字节 } NET_WORKPANTS_ATTRIBUTE; ///@brief 工装检测报警规则类型 typedef enum tagEM_EVENT_WORKCLOTHES_RULE_TYPE { EM_EVENT_WORKCLOTHES_RULE_UNKNWON, // 未知 EM_EVENT_WORKCLOTHES_RULE_HELMET, // 安全帽 EM_EVENT_WORKCLOTHES_RULE_CLOTHES, // 工作服 EM_EVENT_WORKCLOTHES_RULE_PANTS, // 工作裤 EM_EVENT_WORKCLOTHES_RULE_PROTECTIVESUIT, // 防护服 EM_EVENT_WORKCLOTHES_RULE_SHOESCOVER, // 鞋套 EM_EVENT_WORKCLOTHES_RULE_SAFETYROPE, // 安全绳 EM_EVENT_WORKCLOTHES_RULE_NORMALHAT, // 普通帽 EM_EVENT_WORKCLOTHES_RULE_MASK, // 口罩 EM_EVENT_WORKCLOTHES_RULE_APRON, // 围裙 EM_EVENT_WORKCLOTHES_RULE_GLOVE, // 手套 EM_EVENT_WORKCLOTHES_RULE_BOOT, // 靴子 EM_EVENT_WORKCLOTHES_RULE_NOHAT, // 无帽子 EM_EVENT_WORKCLOTHES_RULE_TYPE_PROHLMET, // 防护面罩 EM_EVENT_WORKCLOTHES_RULE_FIREPROOFCLOTHES, // 防火衣 EM_EVENT_WORKCLOTHES_RULE_UNIFORM, // 制服 EM_EVENT_WORKCLOTHES_RULE_MULTIMETER, // 万用表 EM_EVENT_WORKCLOTHES_RULE_BREATHINGMASK, // 呼吸面罩检测 EM_EVENT_WORKCLOTHES_RULE_GLASSES, // 眼镜 EM_EVENT_WORKCLOTHES_RULE_VEST, // 反光衣 EM_EVENT_WORKCLOTHES_RULE_WRISTGUARD, // 防割护腕 EM_EVENT_WORKCLOTHES_RULE_SAFETYSHOES, // 劳保鞋 } EM_EVENT_WORKCLOTHES_RULE_TYPE; ///@brief 穿戴状态 typedef enum tagEM_WEARING_STATE { EM_WEARING_STATE_UNKNOWN, // 未知 EM_WEARING_STATE_NOTWEAR, // 没有穿戴 EM_WEARING_STATE_WEAR, // 有穿戴 EM_WEARING_STATE_NO_EXIT, // 不存在指定颜色的帽子 } EM_WEARING_STATE; ///@brief 合规检测状态 typedef enum tagEM_COMPLIANCE_STATE { EM_COMPLIANCE_STATE_COMPLIANT, // 合规 EM_COMPLIANCE_STATE_NONCOMPLIANT, // 不合规 EM_COMPLIANCE_STATE_UNKNOWN, // 未知 } EM_COMPLIANCE_STATE; ///@brief 是否穿着防火衣 typedef enum tagEM_FIREPROOF_CLOTHES_STATE { EM_FIREPROOF_CLOTHES_STATE_UNKNOWN, // 未知 EM_FIREPROOF_CLOTHES_STATE_NO, // 没有穿着防火衣 EM_FIREPROOF_CLOTHES_STATE_YES, // 有穿着防火衣 EM_FIREPROOF_CLOTHES_STATE_NOEXIT, // 不存在指定颜色的防火衣 } EM_FIREPROOF_CLOTHES_STATE; ///@brief 普通帽子相关属性状态信息 typedef struct tagNET_NORMALHAT_ATTRIBUTE { EM_WEARING_STATE emHasHat; // 是否有戴普通帽 EM_COMPLIANCE_STATE emHasLegalHat; // 帽子检测结果 } NET_NORMALHAT_ATTRIBUTE; ///@brief 口罩相关属性状态信息 typedef struct tagNET_MASK_ATTRIBUTE { EM_WEARING_STATE emHasMask; // 是否有戴口罩 EM_COMPLIANCE_STATE emHasLegalMask; // 口罩检测结果 } NET_MASK_ATTRIBUTE; ///@brief 围裙相关属性状态信息 typedef struct tagNET_APRON_ATTRIBUTE { EM_WEARING_STATE emHasApron; // 是否有穿围裙 EM_COMPLIANCE_STATE emHasLegalApron; // 围裙检测结果 } NET_APRON_ATTRIBUTE; ///@brief 手套相关属性状态信息 typedef struct tagNET_GLOVE_ATTRIBUTE { EM_WEARING_STATE emHasGlove; // 是否有戴手套 EM_COMPLIANCE_STATE emHasLegalGlove; // 手套检测结果 } NET_GLOVE_ATTRIBUTE; ///@brief 靴子相关属性状态信息 typedef struct tagNET_BOOT_ATTRIBUTE { EM_WEARING_STATE emHasBoot; // 是否有穿靴子 EM_COMPLIANCE_STATE emHasLegalBoot; // 靴子检测结果 } NET_BOOT_ATTRIBUTE; ///@brief 鞋套相关属性状态信息 typedef struct tagNET_SHOESCOVER_ATTRIBUTE { EM_WEARING_STATE emHasCover; // 是否有穿鞋套 EM_COMPLIANCE_STATE emHasLegalCover; // 鞋套检测结果 } NET_SHOESCOVER_ATTRIBUTE; ///@brief 无帽子相关属性状态信息 typedef struct tagNET_NOHAT_ATTRIBUTE { EM_WEARING_STATE emHasHat; // 是否有戴帽子 EM_COMPLIANCE_STATE emHasLegalHat; // 帽子检测结果 } NET_NOHAT_ATTRIBUTE; ///@brief 防护面罩相关属性状态信息 typedef struct tagNET_PROHELMET_ATTRIBUTE { EM_WEARING_STATE emHasHat; // 是否有戴防护面罩 EM_CLOTHES_COLOR emHatColor; // 帽子颜色 char szReserved[128]; // 预留字节 } NET_PROHELMET_ATTRIBUTE; ///@brief 防火衣相关属性状态信息 typedef struct tagNET_FIREPROOF_CLOTHES { EM_FIREPROOF_CLOTHES_STATE emHasFireProofClothes; // 是否穿着防火衣 EM_CLOTHES_COLOR emFireProofClothesColor; // 防火衣颜色 char szReserved[128]; // 预留字节 } NET_FIREPROOF_CLOTHES; ///@brief 眼镜检测规则中报警类型 typedef enum tagEM_GLASSES_RULE_TYPE { EM_GLASSES_RULE_TYPE_UNKNOWN = -1, // 未知 EM_GLASSES_RULE_TYPE_NO_GLASSES, // 无眼镜 EM_GLASSES_RULE_TYPE_SUN_GLASSES, // 太阳镜 EM_GLASSES_RULE_TYPE_BLACK_RIMMED_GLASSES, // 黑框眼镜 EM_GLASSES_RULE_TYPE_HALF_RIMMED_GLASSES, // 半框眼镜 EM_GLASSES_RULE_TYPE_RIMLESS_GLASSES, // 无框眼镜 EM_GLASSES_RULE_TYPE_NORMAL_GLASSES, // 普通眼镜 EM_GLASSES_RULE_TYPE_INDUSTRIAL_SAFETY_GLASSES, // 工业护目镜 } EM_GLASSES_RULE_TYPE; ///@brief 眼镜相关属性状态信息 typedef struct tagNET_GLASSES_RELATED_INFO { EM_GLASSES_RULE_TYPE emGlassesType; // 眼镜检测规则中报警类型 int nGlassesLegalMask; // 眼镜检测结果, 0-合规 1-不合规 2-未知 char szReserved[64]; // 预留字节 } NET_GLASSES_RELATED_INFO; ///@brief 呼吸面罩相关属性状态信息 typedef struct tagNET_BREATHING_MASK_INFO { int nHasLegalBreathingMask; // 呼吸面罩检测结果, 0:未知,1:不合规,2:合规 int nHasBreathingMask; // 是否有穿着呼吸面罩, 0: 未知 1: 没有 2: 有 char byReserved[56]; // 预留字节 }NET_BREATHING_MASK_INFO; ///@brief 防护服相关属性状态信息 typedef struct tagNET_PROTECTIVE_SUIT_INFO { int nHasProtectiveSuit; // 是否有穿着防护服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色的防护服 EM_CLOTHES_COLOR emProtectiveSuitColor; // 防护服颜色 char szReserved[24]; // 预留字节 }NET_PROTECTIVE_SUIT_INFO; ///@brief 安全绳相关属性状态信息 typedef struct tagNET_SAFETY_ROPE_INFO { int nCompliantType; // 佩戴带安全绳是否合规, 0-不合规 1-合规 2-未知 char szReserved[28]; // 预留字节 }NET_SAFETY_ROPE_INFO; ///@brief 制服相关属性状态信息 typedef struct tagNET_UNIFORM_INFO { int nHasUniform; // 是否有穿着制服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色制服 EM_CLOTHES_COLOR emUniformColor; // 制服颜色 char szReserved[24]; // 预留字节 }NET_UNIFORM_INFO; ///@brief 安全带相关属性状态信息 typedef struct tagNET_SAFE_BELT_INFO { int nHasSafeBelt; // 是否穿安全带 , 0:未知,1:未穿安全带,2:穿了安全带 int nHasLegalSafeBelt; // 安全带检测结果, 0-合规 1-不合规 2-未知 char szReserved[24]; // 预留字节 }NET_SAFE_BELT_INFO; ///@brief 反光背心相关属性状态信息 typedef struct tagNET_VEST_INFO { int nHasVest; // 是否穿反光背心, 0:未知,1:未穿反光背心,2:穿了反光背心 int nHasLegalVest; // 反光背心检测结果, 0-合规 1-不合规 2-未知 char szReserved[24]; // 预留字节 }NET_VEST_INFO; ///@brief 劳保鞋相关属性状态信息 typedef struct tagNET_SAFETY_SHOES_INFO { int nHasSafetyShoes; // 是否穿劳保鞋, 0:未知,1:未穿劳保鞋,2:穿了劳保鞋 int nHasLegalSafetyShoes; // 劳保鞋检测结果 , 0-合规 1-不合规 2-未知 char szReserved[24]; // 预留字节 }NET_SAFETY_SHOES_INFO; ///@brief 防割护腕相关属性状态信息 typedef struct tagNET_WRIST_GUARD_INFO { int nHasWristGuard; // 是否穿防割护腕, 0:未知,1:未穿防割护腕,2:穿了防割护腕 int nHasLegalWristGuard; // 防割护腕检测结果 , 0-合规 1-不合规 2-未知 char szReserved[24]; // 预留字节 }NET_WRIST_GUARD_INFO; ///@brief 事件类型EVENT_IVS_WORKCLOTHES_DETECT(工装(安全帽/工作服等)检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WORKCLOTHES_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nObjectID; // 物体ID UINT nGroupID; // 事件组ID,一次检测的多个nGroupID相同 UINT nCountInGroup; // 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同 UINT nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 SCENE_IMAGE_INFO stuSceneImage; // 全景大图信息 HUMAN_IMAGE_INFO stuHumanImage; // 小图信息 NET_HELMET_ATTRIBUTE stuHelmetAttribute; // 安全帽属性 NET_WORKCLOTHES_ATTRIBUTE stuWorkClothesAttribute; // 工作服属性 NET_WORKPANTS_ATTRIBUTE stuWorkPantsAttribute; // 工作裤颜色 int nAlarmType; // 不规范报警类型 0-未知 1-防护服不规范 2: 工作服不规范3:安全帽不规范4:安全帽和工作服不规范 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 // 类型:02-图像 时间:YYYYMMDDhhmmss 序列号:00001 EM_EVENT_WORKCLOTHES_RULE_TYPE emRuleType; // 报警规则类型 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_NORMALHAT_ATTRIBUTE stuNormalHat; // 普通帽子相关属性状态信息 NET_MASK_ATTRIBUTE stuMask; // 口罩相关属性状态信息 NET_APRON_ATTRIBUTE stuApron; // 围裙相关属性状态信息 NET_GLOVE_ATTRIBUTE stuGlove; // 手套相关属性状态信息 NET_BOOT_ATTRIBUTE stuBoot; // 靴子相关属性状态信息 NET_SHOESCOVER_ATTRIBUTE stuShoesCover; // 鞋套相关属性状态信息 NET_NOHAT_ATTRIBUTE stuNoHat; // 无帽子相关属性状态信息 NET_PROHELMET_ATTRIBUTE stuProhelmet; // 防护面罩相关属性状态信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_FIREPROOF_CLOTHES stuFireProofClothes; // 防火衣相关属性状态信息 DH_MSG_OBJECT_EX2* pstObjectInfo; // 物体信息数据 UINT nObjectNum; // 物体信息数 NET_GLASSES_RELATED_INFO stuGlassesInfo; // 眼镜相关属性状态信息 NET_BREATHING_MASK_INFO stuBreathingMaskInfo; // 呼吸面罩相关属性状态信息 NET_PROTECTIVE_SUIT_INFO stuProtectiveSuitInfo; // 防护服相关属性状态信息 NET_UNIFORM_INFO stuUniformInfo; // 制服相关属性状态信息 NET_SAFETY_ROPE_INFO stuSafetyRopeInfo; // 安全绳相关属性状态信息 NET_SAFE_BELT_INFO stuSafeBeltInfo; // 安全带相关属性状态信息 NET_VEST_INFO stuVestInfo; // 反光背心相关属性状态信息 NET_SAFETY_SHOES_INFO stuSafetyShoesInfo; // 劳保鞋相关属性状态信息 NET_WRIST_GUARD_INFO stuWristGuardInfo; // 防割护腕相关属性状态信息 char byReserved[332 - POINTERSIZE]; // 预留字节 } DEV_EVENT_WORKCLOTHES_DETECT_INFO; ///@brief 安全门人员通过方向 typedef enum tagEM_SECURITYGATE_PERSON_PASS_DIRECTION { EM_SECURITYGATE_PERSON_PASS_DIRECTION_UNKNOWN = 0, // 未知 EM_SECURITYGATE_PERSON_PASS_DIRECTION_IN, // 进入 EM_SECURITYGATE_PERSON_PASS_DIRECTION_OUT, // 离开 }EM_SECURITYGATE_PERSON_PASS_DIRECTION; ///@brief 安全门人员报警级别 typedef enum tagEM_SECURITYGATE_ALARM_LEVEL { EM_SECURITYGATE_ALARM_LEVEL_UNKNOWN = 0, // 未知 EM_SECURITYGATE_ALARM_LEVEL_NON, // 无报警 EM_SECURITYGATE_ALARM_LEVEL_LOW, // 低危报警级别 EM_SECURITYGATE_ALARM_LEVEL_MIDDLE, // 中危报警级别 EM_SECURITYGATE_ALARM_LEVEL_HIGH, // 高危报警级别 }EM_SECURITYGATE_ALARM_LEVEL; ///@brief 安全门报警位置 typedef enum tagEM_SECURITYGATE_ALARM_POSITION { EM_SECURITYGATE_ALARM_POSITION_UNKNWON = -1, // 未知 EM_SECURITYGATE_ALARM_POSITION_LEFT_1, // 左1 EM_SECURITYGATE_ALARM_POSITION_LEFT_2, // 左2 EM_SECURITYGATE_ALARM_POSITION_LEFT_3, // 左3 EM_SECURITYGATE_ALARM_POSITION_LEFT_4, // 左4 EM_SECURITYGATE_ALARM_POSITION_LEFT_5, // 左5 EM_SECURITYGATE_ALARM_POSITION_LEFT_6, // 左6 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_1, // 中1 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_2, // 中2 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_3, // 中3 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_4, // 中4 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_5, // 中5 EM_SECURITYGATE_ALARM_POSITION_MIDDLE_6, // 中6 EM_SECURITYGATE_ALARM_POSITION_RIGHT_1, // 右1 EM_SECURITYGATE_ALARM_POSITION_RIGHT_2, // 右2 EM_SECURITYGATE_ALARM_POSITION_RIGHT_3, // 右3 EM_SECURITYGATE_ALARM_POSITION_RIGHT_4, // 右4 EM_SECURITYGATE_ALARM_POSITION_RIGHT_5, // 右5 EM_SECURITYGATE_ALARM_POSITION_RIGHT_6, // 右6 } EM_SECURITYGATE_ALARM_POSITION; ///@brief 温度类型 typedef enum tagEM_TEMPERATURE_TYPE { EM_TEMPERATURE_TYPE_UNKNOWN = -1, // 未知 EM_TEMPERATURE_TYPE_UNDEFINE, // 未识别 EM_TEMPERATURE_TYPE_LOW, // 体温异常 EM_TEMPERATURE_TYPE_NORMAL, // 体温正常 EM_TEMPERATURE_TYPE_HIGH, // 体温异常 } EM_TEMPERATURE_TYPE; ///@brief 安检门事件人员表情 typedef enum tagEM_SECURITYGATE_EXPRESSION_TYPE { EM_SECURITYGATE_EXPRESSION_UNKNOWN = -1, // 未知 EM_SECURITYGATE_EXPRESSION_UNDEFINE, // 未识别 EM_SECURITYGATE_EXPRESSION_ANGER, // 生气 EM_SECURITYGATE_EXPRESSION_SAD, // 悲伤 EM_SECURITYGATE_EXPRESSION_DISGUST, // 厌恶 EM_SECURITYGATE_EXPRESSION_FEAR, // 恐惧 EM_SECURITYGATE_EXPRESSION_SURPRISED, // 诧异 EM_SECURITYGATE_EXPRESSION_CALM, // 平静 EM_SECURITYGATE_EXPRESSION_SMILE, // 微笑 EM_SECURITYGATE_EXPRESSION_LAUGH, // 大笑 EM_SECURITYGATE_EXPRESSION_HAPPY, // 高兴 EM_SECURITYGATE_EXPRESSION_CONFUSE, // 困惑 EM_SECURITYGATE_EXPRESSION_SCREAM, // 尖叫 }EM_SECURITYGATE_EXPRESSION_TYPE; ///@brief 安检门事件人员是否戴眼镜 typedef enum tagEM_SECURITYGATE_GLASSES_TYPE { EM_SECURITYGATE_GLASSES_UNKNOWN = -1, // 未知 EM_SECURITYGATE_GLASSES_UNDEFINE, // 未识别 EM_SECURITYGATE_WITHOUT_GLASSES, // 未戴眼镜 EM_SECURITYGATE_WITH_GLASSES, // 戴眼镜 }EM_SECURITYGATE_GLASSES_TYPE; ///@brief 安检门事件人员性别 typedef enum tagEM_SECURITYGATE_SEX_TYPE { EM_SECURITYGATE_SEX_MAN = 0, // 男 EM_SECURITYGATE_SEX_WOMEN, // 女 EM_SECURITYGATE_SEX_UNKNOWN, // 未知 }EM_SECURITYGATE_SEX_TYPE; ///@brief 安检门事件人员信息 typedef struct tagNET_SECURITYGATE_ALARM_FACE_INFO { EM_SECURITYGATE_SEX_TYPE emSex; // 性别 int nAge; // 年龄 EM_SECURITYGATE_EXPRESSION_TYPE emEmotion; // 表情 EM_SECURITYGATE_GLASSES_TYPE emGlasses; // 是否戴眼镜 EM_MASK_STATE_TYPE emMask; // 是否带口罩 EM_BEARD_STATE_TYPE emBeard; // 是否有胡子 int nAttractive; // 魅力值 char szReserved1[4]; EM_MOUTH_STATE_TYPE emMouth; // 嘴巴状态 EM_EYE_STATE_TYPE emEye; // 眼睛状态 float fTemperature; // 体温 EM_TEMPERATURE_UNIT emTempUnit; // 温度单位 EM_TEMPERATURE_TYPE emTempType; // 体温类型 BYTE byReserved[1024]; // 保留字段 }NET_SECURITYGATE_ALARM_FACE_INFO; ///@brief 安检门事件小图 typedef struct tagNET_SECURITYGATE_ALARM_FACEIMAGE_INFO { UINT nOffSet; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位字节 BYTE byReserved[24]; // 预留字节 }NET_SECURITYGATE_ALARM_FACEIMAGE_INFO; ///@brief 安全门注册人员信息 typedef struct tagNET_SECURITYGATE_PERSON { char szUID[32]; // 人员唯一标识符,首次由服务端生成,区别于ID字段 char szGroupID[64]; // 人员所属组ID EM_SEX_TYPE emSexType; // 性别 char szPersonName[64]; // 姓名 NET_TIME stuBirthday; // 生日 char szCountry[3]; // 国籍,符合ISO3166规范 char szProvince[64]; // 省份 char szCity[64]; // 城市 char szHomeAddress[128]; // 地址 EM_CERTIFICATE_TYPE emCertificateType; // 类型 char szID[32]; // 人员证件号码,工号,或其他编号 BYTE byReserved[1020]; // 保留字节 }NET_SECURITYGATE_PERSON; ///@brief 安全门候选人信息 typedef struct tagNET_SECURITYGATE_CANDIDATE { NET_SECURITYGATE_PERSON stuPerson; // 人员信息 int nSimilarity; // 抓拍相似度 1~100 BYTE byReserved[260]; // 保留字节 }NET_SECURITYGATE_CANDIDATE; ///@brief 分类报警信息 typedef struct tagNET_SECURITYGATE_ALARM_INFO { UINT nPosition; // 报警位置,范围:0-9,分别对应10个区位 UINT nObjectType; // 分类检测结果物品类型 0:未分类, 1:手机类, 2:刀枪工具类, 3:易拉罐类, 4:马口铁类 char szResvered[128]; // 保留字节 }NET_SECURITYGATE_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_SECURITYGATE_PERSONALARM (安全门人员报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SECURITYGATE_PERSONALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 时间 UINT nEventID; // 事件ID EM_SECURITYGATE_PERSON_PASS_DIRECTION emDirection; // 人员通过方向 EM_SECURITYGATE_ALARM_LEVEL emAlarmLevel; // 报警级别 int nChannelIn; // 关联进入通道 int nChannelOut; // 关联离开通道 NET_INTELLIGENCE_IMAGE_INFO stuImageInfo; // 图片信息 UINT nAlarmPositionNum; // 报警位置个数 EM_SECURITYGATE_ALARM_POSITION emAlarmPosition[18]; // 报警位置 建议使用 emAlarmPositionEx NET_SECURITYGATE_ALARM_FACEIMAGE_INFO stuFaceImageInfo; // 小图 NET_SECURITYGATE_ALARM_FACE_INFO stuSecurityGateFaceInfo; // 信息 BYTE byReserved[4]; // 保留字段 int nCandidateNum; // 候选人个数, 最大支持50 NET_SECURITYGATE_CANDIDATE stuCandidates[50]; // 候选人信息 UINT nDoorRegion; // 门体分区 0表示6分区 1表示12分区 2表示18分区 3:表示10分区;4:表示33分区; // 5:表示1分区;6:表示2分区;7:表示3分区;8:表示4分区;9:表示8分区;10:表示9分区; // 11:表示16分区;12:表示20分区;13:表示24分区;14:表示36分区;15:表示40分区;16:表示45分区;17:表示48分区;18:表示60分区 int nAlaramPositionNum; // 报警位置个数 UINT nAlaramPosition[18]; // 报警位置数组 建议使用 nAlaramPositionEx; 当nDoorRegion为0时,数组个数最多6个 0表示1区,1表示2区...5表示6区 // 当nDoorRegion为1时,数组个数最多12个 0表示左1,1表示右1,2表示左2,3表示右2...10表示左6,11表示右6 // 当nDoorRegion为2时,数组个数最多18个 0表示左1,1表示中1,2表示右2,3表示左1,4表示中1,5表示右2...15表示左6,16表示中6,17表示右6 UINT nPositionNumEx; // 报警位置个数拓展 EM_SECURITYGATE_ALARM_POSITION emAlarmPositionEx[128]; // 报警位置拓展 int nAlaramPositionNumEx; // 报警位置个数拓展 UINT nAlaramPositionEx[128]; // 报警位置数组拓展 门体分区相关 int nAlarmInfoNum; // 分类报警信息个数 NET_SECURITYGATE_ALARM_INFO stuAlarmInfo[32]; // 分类报警信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nPartitionRow; // DoorRegion门体分区对应的区位分布的行数 int nPartitionColumn; // DoorRegion门体分区对应的区位分布的列数 char szResvered[1016]; // 保留字节 }DEV_EVENT_SECURITYGATE_PERSONALARM_INFO; ///@brief 人员信息 typedef struct tagNET_HUMAN { NET_RECT stuBoundingBox; // 包围盒(8192坐标系) UINT nObjectID; // 物体ID char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 BYTE bReserved[230]; // 保留字节 }NET_HUMAN; ///@brief 事件类型 EVENT_IVS_STAY_ALONE_DETECTION (单人独处事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_STAY_ALONE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 int UTCMS; // UTC时间对应的毫秒数 int nEventID; // 事件ID NET_HUMAN stuHuman; // 人员信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_STAY_ALONE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ROAD_BLOCK (交通路障检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_RECT stuBoundingBox; // 物体包围盒 UINT nLane; // 车道号 EVENT_COMM_INFO stCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[4088 - POINTERSIZE]; // 预留字节 } DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION (交通道路施工检测事件) 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_RECT stuBoundingBox; // 物体包围盒 UINT nLane; // 车道号 EVENT_COMM_INFO stCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[4088 - POINTERSIZE]; // 预留字节 } DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO; ///@brief 作业行为状态信息 typedef enum tagEM_WORKACTION_STATE { EM_WORKACTION_STATE_UNKNOWN, // 未知 EM_WORKACTION_STATE_NO_WORKER, // 无人作业 EEM_WORKACTION_STATE_SINGLE_WORKER, // 单人作业 EM_WORKACTION_STATE_NORED_VEST, // 无红马甲作业 } EM_WORKACTION_STATE; ///@brief 作业统计检测类型 typedef enum tagEM_WORKSTATDETECTION_TYPE { EM_WORKSTATDETECTION_UNKNOWN, // 未知 EM_WORKSTATDETECTION_NO_WORKER, // 脱岗检测 EM_WORKSTATDETECTION_SINGLE_WORKER, // 单人作业 EM_WORKSTATDETECTION_NO_WORKER_LEADER, // 工作负责人脱岗检测 EM_WORKSTATDETECTION_HAND_DISINFECTION, // 手部消毒检测 EM_WORKSTATDETECTION_FOOT_DIP, // 蘸脚动作检测 EM_WORKSTATDETECTION_SHOES_CHANGE, // 换鞋动作检测 } EM_WORKSTATDETECTION_TYPE; ///@brief 事件类型EVENT_IVS_WORKSTATDETECTION(作业统计事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WORKSTATDETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nObjectID; // 物体ID UINT nWorkActionNum; // 作业行为状态个数 EM_WORKACTION_STATE emWorkAction[32]; // 作业行为状态信息 SCENE_IMAGE_INFO stuSceneImage; // 全景大图信息 EM_WORKSTATDETECTION_TYPE emRuleType; // 报警规则类型 DH_MSG_OBJECT_EX2* pstObjectInfo; //物体信息数据 UINT nObjectNum; //物体信息数 BYTE byReserved[1016 - POINTERSIZE]; // 预留字节 } DEV_EVENT_WORKSTATDETECTION_INFO; ///@brief 属性信息 typedef struct tagNET_FACE_ATTRIBUTES { int nAngle[3]; // 抓拍角度,三个角度分别是:仰俯角,偏航角,翻滚角;默认值[999,999,999]表示无此数据 UINT nFaceQuality; // 抓拍质量分数,取值范围 0~10000 int nFaceAlignScore; // 对齐得分分数,取值范围 0~10000,-1为无效值 BYTE byReserved[36]; // 预留字节 }NET_FACE_ATTRIBUTES; ///@brief 特征值信息 typedef struct tagNET_FEATURE_VECTOR_INFO { char szFeatureVersion[32]; // 特征版本版本号 EM_FEATURE_ERROR_CODE emFeatureErrCode; // 特征建模失败错误码 NET_FEATURE_VECTOR stuFeatureVector; // 特征值的偏移和大小信息 NET_FACE_ATTRIBUTES stuFaceAttribute; // 属性信息 ,当提取特征向量成功时上报 BYTE byReserved[968]; // 预留字节 }NET_FEATURE_VECTOR_INFO; ///@brief 事件类型EM_ANALYSE_EVENT_FEATURE_ABSTRACT(特征提取)对应的数据块描述信息 typedef struct tagDEV_EVENT_FEATURE_ABSTRACT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nFeatureNum; // 特征值数量 NET_FEATURE_VECTOR_INFO stuFeatureVectorList[10]; // 特征值数组,同一个图片需要进行多个版本的特征向量提取,在一个事件中返回 BYTE byReserved[1024]; // 预留字节 } DEV_EVENT_FEATURE_ABSTRACT_INFO; ///@brief 全景抓拍触发类型 typedef enum tagEM_TRIGGER_EVENT_TYPE { EM_TRIGGER_EVENT_TYPE_UNKNOWN, // 未知 EM_TRIGGER_EVENT_TYPE_PTZ_PRESET, // 云台预置点触发 EM_TRIGGER_EVENT_TYPE_FIREWARNING, // 火情触发 EM_TRIGGER_EVENT_TYPE_MOVE_ABSOLUTELY,// 绝对移动定位触发 } EM_TRIGGER_EVENT_TYPE; ///@brief 事件类型EVENT_IVS_PANORAMA_SHOT(全景抓拍)对应的数据块描述信息 typedef struct tagDEV_EVENT_PANORAMA_SHOT_INFO { int nChannelID; // 通道号 char szStationID[64]; // 站点ID char szPictureID[128]; // 影像ID NET_TIME_EX stuLocalSnapshotTime; // 本地抓拍时间 int nPitchAngleInSnapping; // 抓拍时的俯仰角(角度精确到0.1度),范围:【-1800~1800】,对应实际的【-180.0~180.0】度(度数扩大10倍表示) int nHorizontalAngleInSnapping; // 抓拍时的水平角度(角度精确到0.1度),范围:【0~3599】,对应实际【0~359.9度】(度数扩大10倍表示) EM_TRIGGER_EVENT_TYPE emTriggerEventType; // 全景抓拍类型 DWORD dwFireID; // 火情ID(触发事件类型为火情触发有效) NET_RECT stuFireBoundingBox; // 火情边界框(触发事件类型为火情触发有效) BYTE byReserved[1024]; // 预留字节 } DEV_EVENT_PANORAMA_SHOT_INFO; ///@brief 事件类型EVENT_ALARM_SMARTMOTION_HUMAN(智能视频移动侦测事件(人))对应的数据块描述信息 typedef struct tagDEV_EVENT_SMARTMOTION_HUMAN_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_MOTIONDETECT_REGION_INFO stuSmartRegion[32]; // 智能动检区域信息 UINT nSmartRegionNum; // 智能动检区域个数 UINT nHumanObjectNum; // 智能动检(人)对象个数 NET_SMARTDETECT_HUMAN_OBJECT stuHumanObject[64]; // 智能动检(人)对象信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1024]; // 保留字节 } DEV_EVENT_SMARTMOTION_HUMAN_INFO; ///@brief 事件类型EVENT_ALARM_SMARTMOTION_VEHICLE(智能视频移动侦测事件(车))对应的数据块描述信息 typedef struct tagDEV_EVENT_SMARTMOTION_VEHICLE_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_MOTIONDETECT_REGION_INFO stuSmartRegion[32]; // 智能动检区域信息 UINT nSmartRegionNum; // 智能动检区域个数 UINT nVehicleObjectNum; // 智能动检(车)对象个数 NET_SMARTDETECT_VEHICLE_OBJECT stuVehicleObject[64]; // 智能动检(车)对象信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE bReserved[1024]; // 保留字节 } DEV_EVENT_SMARTMOTION_VEHICLE_INFO; ///@brief 事件类型EVENT_IVS_INTELLI_SHELF(智能补货事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_INTELLI_SHELF_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nAreaID; // 区域ID(从1开始), 0为单区域 UINT nPresetID; // 事件触发的预置点号,从1开始 int nPercent; // 表示货架上剩余货物的百分比 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景大图 BYTE byReserved1[4]; // 预留字节用于字节对齐 BYTE byReserved[1024]; // 预留字节 } DEV_EVENT_INTELLI_SHELF_INFO; ///@brief 车辆行驶方向 typedef enum tagEM_DRIVING_DIRECTION { EM_DRIVING_DIRECTION_UNKNOWN = 0, // 未知 EM_DRIVING_DIRECTION_IN, // 驶入 EM_DRIVING_DIRECTION_OUT, // 驶出 }EM_DRIVING_DIRECTION; ///@brief 事件类型EVENT_IVS_CAR_DRIVING_IN_OUT(车辆驶入驶出状态事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CAR_DRIVING_IN_OUT_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 int nFrameSequence; // 帧序号 EM_DRIVING_DIRECTION emDrivingDirection; // 车辆行驶方向 NET_EVENT_IMAGE_OFFSET_INFO stuGlobalScene; // 大图信息 NET_EVENT_IMAGE_OFFSET_INFO stuParkingImage; // 车位抠图信息 char szParkingNum[32]; // 车位(地磁)编号 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 预留字节 }DEV_EVENT_CAR_DRIVING_IN_OUT_INFO; ///@brief 车门状态 typedef enum tagEM_CAR_DOOR_STATE { EM_CAR_DOOR_STATE_UNKNOWN, // 未知 EM_CAR_DOOR_STATE_OPEN, // 开启 EM_CAR_DOOR_STATE_CLOSE, // 关闭 } EM_CAR_DOOR_STATE; ///@brief 人员闯入报警标志 typedef enum tagEM_PERSON_INTRUDE_STATUS { EM_PERSON_INTRUDE_STATUS_UNKNOWN = -1, // 未知 EM_PERSON_INTRUDE_STATUS_UNMANNED, // 无人员闯入 EM_PERSON_INTRUDE_STATUS_SOMEONE, // 有人员闯入 } EM_PERSON_INTRUDE_STATUS; ///@brief 事件类型EVENT_IVS_PARKINGSPACE_STATUS(停车位状态事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PARKINGSPACE_STATUS_INFO { int nChannelID; // 通道号 int nEventID; // 事件ID char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 帧序号 int nMark; // 用于标记抓拍帧 EM_PARKINGSPACE_STATUS emParkingSpaceStatus; // 车位的状态 char szParkingNum[32]; // 车位(地磁)编号 char szText[32]; // 车牌号码 EM_CAR_DOOR_STATE emCarDoorState; // 车门状态 int nWorkerNum; // 车厢作业人数 DH_POINT stuBoxcarDetectRegion[4]; // 车厢状态检测区域, 使用相对坐标体系,取值均为0-8191 int nBoxcarDetectRegionNum; // 车厢状态检测区域个数 int nLoadingRate; // 车厢货物装载率,取值范围:0-100之间 int nUnLoadLength; // 车厢内卸货长度,单位cm EM_PERSON_INTRUDE_STATUS emPersonIntrudeStatus; // 人员闯入报警标志 BYTE byReserved[472]; // 预留字节 }DEV_EVENT_PARKINGSPACE_STATUS_INFO; ///@brief 目标关联信息 typedef struct tagOBJECT_RELATED_INFO { UINT nObjectID; // 物体ID UINT nRelativeID; // 相关物体ID char szObjectType[128]; // 物体类型,如"HumanFace" NET_RECT stuBoundingBox; // 物体包围盒,坐标[0, 8191] NET_RECT stuOriginalBoundingBox; // 原始物体包围盒,坐标[0, 8191] BYTE byReserved[1024]; // 预留字段 }OBJECT_RELATED_INFO; ///@brief 事件类型EVENT_IVS_FACEBODY_DETECT(人员检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FACEBODY_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nObjectID; // 物体ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 int nGroupID; // 事件组ID,一次检测的多个nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 BYTE byReserved1[4]; // 字节对齐 FACE_TRAIT stuFaceTrait; // f特征信息 BODY_TRAIT stuBodyTrait; // b特征信息 NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage; // b图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage; // f图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage; // 全景图片信息 OBJECT_RELATED_INFO stuFaceObject; // f关联信息 OBJECT_RELATED_INFO stuBodyObject; // b关联信息 }DEV_EVENT_FACEBODY_DETECT_INFO; ///@brief 事件类型EVENT_IVS_FACEBODY_ANALYSE(人员识别事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FACEBODY_ANALYSE_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nObjectID; // 物体ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 int nGroupID; // 事件组ID,一次检测的多个nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 BYTE byReserved1[4]; // 字节对齐 FACE_TRAIT stuFaceTrait; // f特征信息 BODY_TRAIT stuBodyTrait; // b特征信息 NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage; // b图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage; // f图片信息 NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage; // 全景图片信息 OBJECT_RELATED_INFO stuFaceObject; // f关联信息 OBJECT_RELATED_INFO stuBodyObject; // b关联信息 CANDIDATE_INFOEX stuCandidate[DH_MAX_CANDIDATE_NUM]; // 列表 int nCandidateNum; // 返回的候选个数 }DEV_EVENT_FACEBODY_ANALYSE_INFO; ///@brief 事件类型EVENT_IVS_CONGESTION_DETECTION(道路场景车辆拥堵报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CONGESTION_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置名称 int nAlarmMask; // 报警业务掩码, 不同掩码位表示不同报警类型:bit0位表示是否有拥堵报警;bit1位表示是否有排队报警; int nVehicleQuantity; // 拥堵车辆数量 int nQueueLength; // 车辆排队长度 int nDetectRegionNum; // stuDetectRegion中有效坐标点个数 DH_POINT stuDetectRegion[32]; // 发生报警的区域坐标 BYTE byReserved[1024]; // 预留字节 }DEV_EVENT_CONGESTION_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_VEHICLELIMIT_DETECTION(停车场场景下停车车辆上限报警)对应的数据块描述信息 typedef struct tagDEV_EVENT_VEHICLELIMIT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置名称 int nVehicleQuantity; // 车辆数量 int nDetectRegionNum; // stuDetectRegion中有效坐标点个数 DH_POINT stuDetectRegion[32]; // 发生报警的区域坐标 EM_SPACE_TYPE emSpaceType; // 车位类型 int nUpdateInfoNum; // 更新配置信息的个数 NET_UPDATE_INFO stuUpdateInfo[20]; // 更新配置信息,每个数组代表一条更新信息 BYTE byReserved[1024]; // 预留字节 }DEV_EVENT_VEHICLELIMIT_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_VIOLENT_THROW_DETECTION(暴力抛物检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_VIOLENT_THROW_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nFrameSequence; // 视频分析帧序号 char szRegionName[64]; // 暴力抛物检测区域名称 SCENE_IMAGE_INFO_EX stuSceneImage; // 大图信息 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserver[1024]; // 保留字节 }DEV_EVENT_VIOLENT_THROW_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_TRAMCARSECTIONS_DETECTION(矿车超挂报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAMCARSECTIONS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nSequence; // 帧序号 UINT nCarSections; // 当前车节数 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 全景广角图 BYTE byReserved[512]; // 预留字节 }DEV_EVENT_TRAMCARSECTIONS_DETECTION_INFO; ///@brief 动物统计信息 typedef struct tagNET_ANIMAL_OBJECTS_STATISTICS { UINT nAnimalsAmount; // 动物总数 VA_OBJECT_ANIMAL stuAnimalTypes[32]; // 动物类型 BYTE bReserved[132]; // 保留字节 }NET_ANIMAL_OBJECTS_STATISTICS; ///@brief 动物检测的大图信息 typedef struct tagNET_ANIMAL_SCENE_IMAGE_INFO { UINT nOffSet; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位字节 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE bReserved[252]; // 保留字节 }NET_ANIMAL_SCENE_IMAGE_INFO; ///@brief 区域内目标列表 typedef struct tagNET_ANIMAL_OBJECT_LIST_INFO { NET_RECT stuBoundingBox; // 目标包围盒,8192坐标系 NET_POINT stuPoint; // 目标中心点 int nObjectID; // 目标ID int nObjectNumber; // 目标编号 char szReserved[256]; // 保留字节 }NET_ANIMAL_OBJECT_LIST_INFO; ///@brief 事件类型EVENT_IVS_ANIMAL_DETECTION(动物检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ANIMAL_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nSequence; // 帧序号 NET_ANIMAL_SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_ANIMAL_OBJECTS_STATISTICS stuObjectsStatistics; // 动物统计信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 EM_DETECTION_SCENE_TYPE emDetectionSceneType; // 动物检测规则下的场景类型 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nObjectListCount; // 区域内目标列表个数 NET_ANIMAL_OBJECT_LIST_INFO stuObjectListInfo[64]; // 区域内目标列表 char byReserved[1024]; // 预留字节 }DEV_EVENT_ANIMAL_DETECTION_INFO; ///@brief 车辆动作 typedef enum tagEM_VEHICLE_ACTION { EM_VEHICLE_ACTION_UNKNOWN, // 未知 EM_VEHICLE_ACTION_APPEAR, // 进入检测区域内 EM_VEHICLE_ACTION_DISAPPEAR, // 离开检测区域 EM_VEHICLE_ACTION_STAY, // 停留在检测区域内 } EM_VEHICLE_ACTION; ///@brief 车辆动作 ///@brief 检测到的车辆信息 typedef struct tagNET_DETECT_VEHICLE_INFO { EM_VEHICLE_ACTION emAction; // 检测车辆动作 UINT nObjectID; // 物体ID EVENT_PIC_INFO stuVehicleImage; // 车辆抓图信息 NET_COLOR_RGBA stuColor; // 车身主要颜色 EM_CATEGORY_TYPE emCategoryType; // 车辆类型 UINT nFrameSequence; // 帧序号 UINT nCarLogoIndex; // 车辆车标 UINT nSubBrand; // 车辆子品牌 UINT nBrandYear; // 车辆品牌年款 UINT nConfidence; // 置信度,值越大表示置信度越高, 范围 0~255 NET_RECT stuBoundingBox; // 包围盒, 0-8191相对坐标 char szText[128]; // 车标 UINT nSpeed; // 车速,单位为km/h UINT nDirection; // 车辆行驶方向, 0:未知, 1:上行方向, 2:下行方向 char szRegionName[64]; // 车辆所在区域名称 BYTE bReserved[448]; // 保留字节 } NET_DETECT_VEHICLE_INFO; ///@brief 检测的车牌信息 typedef struct tagNET_DETECT_PLATE_INFO { UINT nObjectID; // 车牌ID UINT nRelativeID; // 关联的车辆ID EVENT_PIC_INFO stuPlateImage; // 车牌图片信息 EM_NET_PLATE_TYPE emPlateType; // 车牌类型 EM_NET_PLATE_COLOR_TYPE emPlateColor; // 车牌颜色 UINT nConfidence; // 置信度,值越大表示置信度越高, 范围 0~255 char szCountry[3]; // 车牌国家 BYTE bReserved1; // 字节对齐 char szPlateNumber[128]; // 车牌号码 BYTE bReserved[512]; // 保留字节 } NET_DETECT_PLATE_INFO; ///@brief 从加油机获取的信息 typedef struct tagNET_FUEL_DISPENSER_INFO { unsigned int nFuelingStartTime; // 开始加油时间,带时区偏差的UTC时间,单位秒 unsigned int nFuelingEndTime; // 结束加油时间,带时区偏差的UTC时间,单位秒 unsigned int nMoney; // 加油金额,单位分 unsigned int nLitre; // 加油升数,单位0.01升 char szOilType[8]; // 加油类型,加油油号 char szReserved[128]; // 保留字节 } NET_FUEL_DISPENSER_INFO; ///@brief 事件类型EVENT_IVS_GASSTATION_VEHICLE_DETECT(加油站车辆检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_DETECT_VEHICLE_INFO stuDetectVehicleInfo; // 检测到的车辆信息 NET_DETECT_PLATE_INFO stuDetectPlateInfo; // 检测到的车牌信息 BOOL bIsGlobalScene; // 是否有场景图 EVENT_PIC_INFO stuSceneImage; // 场景图信息, bIsGlobalScene 为 TRUE 时有效 int nCarCandidateNum; // 候选车辆数量 NET_CAR_CANDIDATE_INFO stuCarCandidate[MAX_CAR_CANDIDATE_NUM]; // 候选车辆数据 NET_FUEL_DISPENSER_INFO stuFuelDispenser; // 从加油机获取的信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 char szOilGunColor[32]; // 加油枪颜色: "Red" : 红色, "Yellow" : 黄色, "Green" : 绿色 BYTE bReserved[840]; // 保留字节 } DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO; ///@brief 事件类型EVENT_IVS_SHOP_WINDOW_POST(橱窗张贴事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SHOP_WINDOW_POST_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 UINT nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置点名称 char szShopAddress[256]; // 商铺地址 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE bReserved[1020 - POINTERSIZE]; // 保留字节 } DEV_EVENT_SHOP_WINDOW_POST_INFO; ///@brief 事件类型EVENT_IVS_SHOP_SIGN_ABNORMAL(店招异常事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SHOP_SIGN_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[HDBJ_MAX_OBJECTS_NUM]; // 检测到的物体 UINT nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置点名称 char szShopAddress[256]; // 商铺地址 UINT nViolationDuration; // 违法持续时长,单位:秒,缺省值0表示无意义 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节 } DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO; ///@brief 智慧养殖检测目标子类型 typedef enum tagEM_BREED_DETECT_CATEGORY_TYPE { EM_BREED_DETECT_CATEGORY_UNKNOWN, // 未知 EM_BREED_DETECT_CATEGORY_PIG, // 猪 } EM_BREED_DETECT_CATEGORY_TYPE; ///@brief 智慧养殖对象信息 typedef struct tagNET_VAOBJECT_ANIMAL_INFO { UINT nObjectID; // 物体ID,每个ID表示一个唯一的物体 EM_BREED_DETECT_CATEGORY_TYPE emCategoryType; // 智慧养殖检测目标子类型 NET_RECT stuBoundingBox; // 包围盒 UINT nObjectWeight; // 对象重量, 单位: g SCENE_IMAGE_INFO_EX stuImageData; // 物体截图 UINT nMotionStatus; // 是否运动, 0:未知,1:静止,2:运动 UINT nInoutRegion; // 是否在区域内, 0:未知, 1:是, 2:否 UINT nResultType; // 结果类型, 0:实时, 1:非实时 BYTE byReserved[1012]; // 预留字节 } NET_VAOBJECT_ANIMAL_INFO; ///@brief 事件类型EVENT_IVS_BREED_DETECTION(智慧养殖检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BREED_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved1[4]; // 字节对齐 UINT nObjectNum; // 检测到的物体个数 NET_VAOBJECT_ANIMAL_INFO stuObjects[64]; // 检测到的物体信息 double dBreedStallTemp; // 栏位温度(单位:℃) UINT nBreedStallNum; // 栏位号 BYTE byReserved[500]; // 预留字节 } DEV_EVENT_BREED_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_BREED_DETECTION (智慧养殖检测事件) 对应的数据块描述信息 typedef struct tagALARM_BREED_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; char szName[128]; // 报警名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 unsigned int nEventID; // 事件ID unsigned int nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 unsigned int nSequence; // 帧序号 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 unsigned int nBreedStallNum; // 栏位号 unsigned int nObjectNum; // 检测到的物体个数 NET_VAOBJECT_ANIMAL_INFO stuObjects[64]; // 检测到的物体信息 double dbBreedStallTemp; // 栏位温度(单位:℃) char szReserved[1024]; // 预留字节 } ALARM_BREED_DETECTION_INFO; ///@brief 保障车类型 typedef enum tagEM_AIRPORT_VEHICLE_TYPE { EM_AIRPORT_VEHICLE_TYPE_UNKNOWN = 0, // 未知 EM_AIRPORT_VEHICLE_TYPE_TANKER, // 航油车 EM_AIRPORT_VEHICLE_TYPE_CONVEYORCAR, // 行李传送带车 EM_AIRPORT_VEHICLE_TYPE_TRAILERCAR, // 行李拖车 }EM_AIRPORT_VEHICLE_TYPE; ///@brief 保障车动作 typedef enum tagEM_AIRPORT_VEHICLE_ACTION { EM_AIRPORT_VEHICLE_ACTION_UNKNOWN = 0, // 未知 EM_AIRPORT_VEHICLE_ACTION_ENTERREGION, // 进入区域 EM_AIRPORT_VEHICLE_ACTION_LEAVEREGION, // 离开区域 EM_AIRPORT_VEHICLE_ACTION_STARTWORK, // 开始工作 EM_AIRPORT_VEHICLE_ACTION_OVERWORK, // 结束工作 EM_AIRPORT_VEHICLE_ACTION_AIRREFUEL, // 飞机加油 EM_AIRPORT_VEHICLE_ACTION_OVERREFUEL, // 结束加油 }EM_AIRPORT_VEHICLE_ACTION; ///@brief 机场保障车对象 typedef struct tagNET_AIRPORT_VEHICLE_OBJECT { int nObjectID; // 物体ID EM_AIRPORT_VEHICLE_TYPE emType; // 保障车类型 NET_RECT stuRect; // 保障车位置 EM_AIRPORT_VEHICLE_ACTION emAction; // 保障车动作 BYTE byReserved[1020]; // 预留字节 }NET_AIRPORT_VEHICLE_OBJECT; ///@brief 事件类型EVENT_IVS_AIRPORT_VEHICLE_DETECT(机场智能保障车辆检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_AIRPORT_VEHICLE_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域,[0,8191] SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 int nVehicleObjectNum; // 检测到的保障车个数 NET_AIRPORT_VEHICLE_OBJECT stuVehicleObjects[MAX_AIRPORT_VEHICLE_OBJECT_NUM]; // 检测保障车列表 BYTE byReserved[504]; // 预留字节 } DEV_EVENT_AIRPORT_VEHICLE_DETECT_INFO; ///@brief 事件类型EVENT_IVS_MAN_CAR_COEXISTANCE(人车共存事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_MAN_CAR_COEXISTANCE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 BYTE byReserved[512]; // 预留字节 }DEV_EVENT_MAN_CAR_COEXISTANCE_INFO; ///@brief 车位内已停车位数量相对上次上报的变化状态 typedef enum tagEM_PARKING_NUMBER_CHANGE_STATUS { EM_PARKING_NUMBER_CHANGE_STATUS_UNKNOWN = -1, // 未知 EM_PARKING_NUMBER_CHANGE_STATUS_NO_CHANGE, // 无变化 EM_PARKING_NUMBER_CHANGE_STATUS_INCREASE, // 数量增加 EM_PARKING_NUMBER_CHANGE_STATUS_DECREASE, // 数量减少 } EM_PARKING_NUMBER_CHANGE_STATUS; ///@brief 室外停车位状态 typedef struct tagNET_PARKING_STATUS { char szName[32]; // 车位名称 int nID; // 车位ID,范围:[0,99] UINT nParkedNumber; // 车位内已停车位数量,范围:[0,255] EM_PARKING_NUMBER_CHANGE_STATUS emChangeStatus; // 车位内已停车位数量相对上次上报的变化状态 BYTE reserved[252]; // 预留字节 } NET_PARKING_STATUS; ///@brief 事件类型 EVENT_IVS_PARKING_LOT_STATUS_DETECTION(室外停车位状态检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) unsigned int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 int nParkingStatusNum; // 室外停车位个数 NET_PARKING_STATUS stuParkingStatus[100]; // 室外停车位状态 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 预留字节 } DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO; ///@brief 事件类型 DH_ALARM_PARKING_LOT_STATUS_DETECTION (室外停车位状态检测事件) 对应的数据块描述信息 typedef struct tagALARM_PARKING_LOT_STATUS_DETECTION { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) unsigned int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 int nParkingStatusNum; // 室外停车位个数 NET_PARKING_STATUS stuParkingStatus[100]; // 室外停车位状态 BYTE byReserved[1020]; // 预留字节 } ALARM_PARKING_LOT_STATUS_DETECTION; ///@brief 车辆信息 typedef struct tagDREGS_UNCOVERED_VEHICLE_INFO { char szPlateNumber[64]; // 车牌号码 NET_RECT stuBoundingBox; // 包围盒 BYTE byReserved[512]; // 预留字节 }DREGS_UNCOVERED_VEHICLE_INFO; ///@brief 事件类型 EVENT_IVS_DREGS_UNCOVERED(渣土车未遮盖载货检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DREGS_UNCOVERED_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域,[0,8191] DREGS_UNCOVERED_VEHICLE_INFO stuVehicleInfo; // 车辆信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 BYTE byReserved[952]; // 预留字节 } DEV_EVENT_DREGS_UNCOVERED_INFO; ///@brief 事件类型EVENT_IVS_HIGH_TOSS_DETECT(高空抛物检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_HIGH_TOSS_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_HIGHTOSS_OBJECT_INFO stuObjInfos[50]; // 物体信息 UINT nObjNum; // 物体个数 int nDetectRegionNum; // 检测区域顶点数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域,[0,8191] int nFrameSequence; // 视频分析帧序号 int nGroupID; // 事件组ID, 同一物体抓拍过程内GroupID相同 int nIndexInGroup; // 抓拍序号,从1开始 int nCountInGroup; // 抓拍张数 NET_EVENT_IMAGE_OFFSET_INFO stuImageInfo; // 图片信息 BOOL bIsGlobalScene; // 是否上传大图, true表示第一个图片为全景大图,信息由ImageInfo来表示 int nMark; // 用于标记抓拍帧 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BYTE byReserved[380 - POINTERSIZE]; // 预留字节 } DEV_EVENT_HIGH_TOSS_DETECT_INFO; ///@brief 电力手套类型 typedef enum tagEM_ELECTRIC_GLOVE_TYPE { EM_ELECTRIC_GLOVE_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_GLOVE_TYPE_GENERAL, // 普通手套 EM_ELECTRIC_GLOVE_TYPE_INSULATED, // 绝缘手套 } EM_ELECTRIC_GLOVE_TYPE; ///@brief 电力手套对象信息 typedef struct tagNET_ELECTRIC_GLOVE_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_GLOVE_TYPE emGloveType; // 手套类型 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_GLOVE_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nGloveObjNum; // 手套对象个数 NET_ELECTRIC_GLOVE_OBJECT stuGloveObjs[32]; // 手套对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 }DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO; ///@brief 电力梯子类型 typedef enum tagEM_ELECTRIC_LADDER_TYPE { EM_ELECTRIC_LADDER_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_LADDER_TYPE_GENERAL, // 普通梯子 EM_ELECTRIC_LADDER_TYPE_INSULATED, // 绝缘梯子 } EM_ELECTRIC_LADDER_TYPE; ///@brief 梯子对象信息 typedef struct tagNET_ELECTRIC_LADDER_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_LADDER_TYPE emLadderType; // 梯子类型 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_LADDER_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_LADDER_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nLadderObjNum; // 梯子对象个数 NET_ELECTRIC_LADDER_OBJECT stuLadderObjs[32]; // 梯子对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 }DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO; ///@brief 电力布幔类型 typedef enum tagEM_ELECTRIC_CURTAIN_TYPE { EM_ELECTRIC_CURTAIN_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_CURTAIN_TYPE_GENERAL, // 普通布幔 } EM_ELECTRIC_CURTAIN_TYPE; ///@brief 布幔对象信息 typedef struct tagNET_ELECTRIC_CURTAIN_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_CURTAIN_TYPE emCurtainType; // 布幔类型 EM_UNIFIED_COLOR_TYPE emCurtainColor; // 布幔颜色 BYTE byReserved1[4]; // 字节对齐 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_CURTAIN_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nCurtainObjNum; // 布幔对象个数 NET_ELECTRIC_CURTAIN_OBJECT stuCurtainObjs[32]; // 布幔对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 }DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO; ///@brief 电力围栏类型 typedef enum tagEM_ELECTRIC_FENCE_TYPE { EM_ELECTRIC_FENCE_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_FENCE_TYPE_GENERAL, // 普通围栏 EM_ELECTRIC_FENCE_TYPE_COLUMNAR, // 柱状围栏 EM_ELECTRIC_FENCE_TYPE_GRID, // 网状围栏 } EM_ELECTRIC_FENCE_TYPE; ///@brief 电力围栏对象信息 typedef struct tagNET_ELECTRIC_FENCE_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_FENCE_TYPE emFenceType; // 围栏类型 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_FENCE_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_FENCE_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nFenceObjNum; // 围栏对象个数 NET_ELECTRIC_FENCE_OBJECT stuFenceObjs[32]; // 围栏对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 }DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO; ///@brief 电力标识牌类型 typedef enum tagEM_ELECTRIC_SIGNBOARD_TYPE { EM_ELECTRIC_SIGNBOARD_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_SIGNBOARD_TYPE_GENERAL, // 普通标识牌 EM_ELECTRIC_SIGNBOARD_TYPE_WARNING, // 警戒牌 EM_ELECTRIC_SIGNBOARD_TYPE_NAMEPLATE, // 铭牌 } EM_ELECTRIC_SIGNBOARD_TYPE; ///@brief 电力标识牌对象信息 typedef struct tagNET_ELECTRIC_SIGNBOARD_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_SIGNBOARD_TYPE emSignboardType; // 围栏类型 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_SIGNBOARD_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nSignboardObjNum; // 标识牌对象个数 NET_ELECTRIC_SIGNBOARD_OBJECT stuSignboardObjs[32]; // 标识牌对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 }DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO; ///@brief 电力安全带类型 typedef enum tagEM_ELECTRIC_BELT_TYPE { EM_ELECTRIC_BELT_TYPE_UNKNOWN, // 未知 EM_ELECTRIC_BELT_TYPE_GENERAL, // 普通电力安全带 } EM_ELECTRIC_BELT_TYPE; ///@brief 电力安全带穿戴方式 typedef enum tagEM_BELT_WARE_TYPE { EM_BELT_WARE_TYPE_UNKNOWN, // 未知 EM_BELT_WARE_TYPE_NORMAL, // 正常穿戴 EM_BELT_WARE_TYPE_MISS_MAIN, // 主保护绳缺失 EM_BELT_WARE_TYPE_MISS_BACKUP, // 备用保护绳缺失 EM_BELT_WARE_TYPE_LOW_HANGING, // 作业低挂高用 } EM_BELT_WARE_TYPE; ///@brief 安全带对象信息 typedef struct tagNET_ELECTRIC_BELT_OBJECT { UINT nObjectID; // 物体ID EM_ELECTRIC_BELT_TYPE emBeltType; // 电力安全带类型 EM_BELT_WARE_TYPE emBeltWareType; // 电力安全带穿戴方式 BYTE byReserved1[4]; // 字节对齐 NET_RECT stuBoundingBox; // 包围盒 NET_OBJECT_IMAGE_INFO stuImageData; // 物体截图 BYTE byReserved[1024]; // 预留字节 } NET_ELECTRIC_BELT_OBJECT; ///@brief 事件类型EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ELECTRIC_BELT_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nBeltObjNum; // 安全带对象个数 NET_ELECTRIC_BELT_OBJECT stuBeltObjs[32]; // 安全带对象信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[1028]; // 预留字节 } DEV_EVENT_ELECTRIC_BELT_DETECT_INFO; ///@brief 雷达检测对象类型 typedef enum tagEM_RADAR_DETECT_OBJECT_TYPE { EM_RADAR_DETECT_OBJECT_UNKNOWN, // 未知 EM_RADAR_DETECT_OBJECT_HUMAN, // 人 EM_RADAR_DETECT_OBJECT_VEHICLE // 车 }EM_RADAR_DETECT_OBJECT_TYPE; ///@brief 雷达检测对象 typedef struct tagNET_RADAR_DETECT_OBJECT { int nObjectID; // 物体ID EM_RADAR_DETECT_OBJECT_TYPE emObjectType; // 物体类型 BYTE byReserved[1024]; // 预留字节 }NET_RADAR_DETECT_OBJECT; ///@brief 雷达报警类型 typedef enum tagEM_RADAR_ALARM_TYPE { EM_RADAR_ALARM_TYPE_UNKNOWN, // 未知 EM_RADAR_ALARM_TYPE_ALARM, // 报警 EM_RADAR_ALARM_TYPE_WARNING, // 预警 }EM_RADAR_ALARM_TYPE; ///@brief 事件类型EVENT_IVS_RADAR_LINE_DETECTION(雷达警戒线/绊线检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RADAR_LINE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nObjectNum; // 检测到的对象个数 NET_RADAR_DETECT_OBJECT stuObjects[100]; // 雷达检测对象列表 int nPresetID; // 事件触发的预置点号 int nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域,[0,8191] SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图(当图片超过1张时 使用stuSceneImageEx) char szAlarmLevel[16]; // 报警等级 int nAlarmChannel; // 报警输入通道号 SCENE_IMAGE_INFO_EX stuSceneImageEx[10]; // 全景广角图(扩展为10张) int nstuSceneImageExNum; // 全景广角图个数 EM_RADAR_ALARM_TYPE emAlarmType; // 报警类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1020]; // 预留字节 } DEV_EVENT_RADAR_LINE_DETECTION_INFO; ///@brief RFID卡片信息 typedef struct tagNET_RFID_CARD_INFO { char szCardId[24]; // RFID卡片ID char byReserved[128]; // 预留字节 }NET_RFID_CARD_INFO; ///@brief 事件类型EVENT_IVS_RADAR_REGION_DETECTION(雷达警戒区检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RADAR_REGION_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nObjectNum; // 检测到的对象个数 NET_RADAR_DETECT_OBJECT stuObjects[100]; // 雷达检测对象列表 int nPresetID; // 事件触发的预置点号 int nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域,[0,8191] SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图(当图片超过1张时 使用stuSceneImageEx) EM_RADAR_ALARM_TYPE emAlarmType; // 报警类型 char szAlarmLevel[16]; // 报警等级 int nAlarmChannel; // 报警输入通道号 int nRFIDCardIdNum; // RFID卡片信息个数 NET_RFID_CARD_INFO stuRFIDCardId[256]; // RFID卡片信息,最多支持256张卡片信息 SCENE_IMAGE_INFO_EX stuSceneImageEx[10]; // 全景广角图(扩展为10张) int nstuSceneImageExNum; // 全景广角图个数 int nSpeed; // 触发事件目标的速度,用整型传输,扩大100倍 单位m/s int nTrackID; // 触发事件目标的id,范围[0,63] int nObjectType; // 触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船 int nAlarmFlag; // 报警标志位,第0bit位表示是否超速,第1bit位表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行 int nLongitude; // 经度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐 int nLatitude; // 纬度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐 int nUpDownGoing; // 车道/航道方向 -1:未知 0:无效 1:上行 2:下行 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nDistance; // 当前触发事件目标的像素极坐标值--距离,扩大100倍的结果,单位米 int nAngle; // 当前触发事件目标的极坐标值--角度,扩大100倍的结果,单位度 BYTE byReserved[988]; // 预留字节 } DEV_EVENT_RADAR_REGION_DETECTION_INFO; ///@brief 异常音检测信息 typedef struct tagAUDIO_INTENSITY_MESSAGE_INFO { char szType[128]; // 消息类型,如"Audio Detection" char szContent[128]; // 消息内容 BYTE byReserved[1024]; // 预留字段 }AUDIO_INTENSITY_MESSAGE_INFO; ///@brief 事件类型EVENT_IVS_AUDIO_INTENSITY(异常音报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_AUDIO_INTENSITY_INFO { int nChannelID; // 通道号(音频) int nAction; // 0:脉冲 1:开始 2:停止 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 BYTE byReserved1[4]; // 预留字段1 AUDIO_INTENSITY_MESSAGE_INFO stuAudioIntensityInfo; // 音频检测信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_AUDIO_INTENSITY_INFO; ///@brief 事件类型EVENT_IVS_WALK_DETECTION(走动检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WALK_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID UINT nPresetID; // 场景预置点号 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_WALK_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_BACK_TO_DETECTION(背对检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BACK_TO_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID UINT nPresetID; // 场景预置点号 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_BACK_TO_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_WRITE_ON_THE_BOARD_DETECTION(板书检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WRITE_ON_THE_BOARD_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 NET_TIME_EX UTC; // 事件发生的时间 double PTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID UINT nPresetID; // 场景预置点号 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_WRITE_ON_THE_BOARD_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房穿着检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 char szClassAlias[16]; // 智能事件所属大类别名 HUMAN_IMAGE_INFO stuHumanImage; // 图片信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图片信息 FACE_IMAGE_INFO stuFaceImage; // 图片信息 UINT nObjectID; // 目标ID EM_NONMOTOR_OBJECT_STATUS emHasMask; // 检测是否有戴口罩 EM_NONMOTOR_OBJECT_STATUS emHasChefHat; // 检测是否有戴厨师帽 EM_NONMOTOR_OBJECT_STATUS emHasChefClothes; // 检测是否有穿厨师服 EM_OBJECT_COLOR_TYPE emChefClothesColor; // 厨师服颜色(检测出不符合规定的厨师服颜色) NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char bReserved[1024]; // 预留字节 }DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_SLEEP_DETECT(睡觉检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SLEEP_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nPresetID; // 事件触发的预置点号,从1开始 UINT nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 int nRuleCount; // 规则个数 char szRuleType[16][32]; // 规则类型:"Common":普通睡觉检测,默认值, "HeadCoveredSleep":蒙头睡觉检测 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[224]; // 预留字段 }DEV_EVENT_SLEEP_DETECT_INFO; ///@brief 事件类型EVENT_IVS_WALK_AROUND_DETECT(随意走动检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WALK_AROUND_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nPresetID; // 事件触发的预置点号,从1开始 UINT nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[232]; // 预留字段 }DEV_EVENT_WALK_AROUND_DETECT_INFO; ///@brief 事件类型EVENT_IVS_PLAY_MOBILEPHONE(玩手机事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PLAY_MOBILEPHONE_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nPresetID; // 事件触发的预置点号,从1开始 UINT nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_GPS_INFO stuGPSInfo; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1012]; // 预留字段 }DEV_EVENT_PLAY_MOBILEPHONE_INFO; ///@brief 事件类型EVENT_IVS_FINANCE_CONTRABAND_DETECT(智慧金融违规物品检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FINANCE_CONTRABAND_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nPresetID; // 事件触发的预置点号,从1开始 UINT nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] UINT nHumanDetectRegionNum; // 检测人体区域顶点数 NET_POINT stuHumanDetectRegion[20]; // 检测的人体区域,[0,8191] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 BYTE byReserved[1020]; // 预留字段 }DEV_EVENT_FINANCE_CONTRABAND_DETECT_INFO; ///@brief 事件类型EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FINANCE_CASH_TRANSACTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nPresetID; // 事件触发的预置点号,从1开始 UINT nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] UINT nHumanDetectRegionNum; // 检测人体区域顶点数 NET_POINT stuHumanDetectRegion[20]; // 检测的人体区域,[0,8191] UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE byReserved[228]; // 预留字段 }DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO; ///@brief IRCUT模式切换事件当前模式 typedef enum tagEM_IRCUT_MODESWITCH_MODE { EM_IRCUT_MODESWITCH_MODE_UNKNOWN, // 未知 EM_IRCUT_MODESWITCH_MODE_AUTO, // 自动 EM_IRCUT_MODESWITCH_MODE_DAY, // 强制白天 EM_IRCUT_MODESWITCH_MODE_NIGHT, // 强制晚上 }EM_IRCUT_MODESWITCH_MODE; ///@brief IRCUT模式切换事件当前状态 typedef enum tagEM_IRCUT_MODESWITCH_STATE { EM_IRCUT_MODESWITCH_STATE_UNKNOWN, // 未知 EM_IRCUT_MODESWITCH_STATE_DAY, // 白天 EM_IRCUT_MODESWITCH_STATE_NIGHT, // 晚上 }EM_IRCUT_MODESWITCH_STATE; ///@brief 事件类型EVENT_IVS_IRCUT_MODESWITCH_ALARM_EVENT(IRCUT模式切换事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_IRCUT_MODESWITCH_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 目前暂不支持该字段解析 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_IRCUT_MODESWITCH_MODE emMode; // 当前模式 EM_IRCUT_MODESWITCH_STATE emState; // 当前状态 char szReserved[512]; // 预留字段 }NET_DEV_EVENT_IRCUT_MODESWITCH_ALARM_INFO; ///@brief 事件类型EVENT_IVS_REMOTE_APPROVAL_ALARM(金融远程审批事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 目前暂不支持该字段解析 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nApprovalNo; // 审批单号 int nType; // 操作类型,-1:未知,0:存箱, 1:取箱 int nTimeout; // 审批超时时间,单位秒 int nCabinListNum; // 存取的舱位下标数量 int nCabinList[32]; // 存取的舱位下标数组 char szAccessorID[64]; // 存取人ID char szAccessorName[64]; // 存取人名称 char szReviewerID[64]; // 复核人ID char szReviewerName[64]; // 复核人名称 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[508]; // 预留字段 }NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO; ///@brief 事件类型EVENT_IVS_ANTI_COUNTERFEIT(防造假检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_ANTI_COUNTERFEIT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID int nSequence; // 帧序号 int nFrameSequence; // 视频分析帧序号 int nDetectRegionNum; // 规则区域个数 NET_UINT_POINT stuDetectRegion[20]; // 规则区域 char szDirection[16]; // Direction表示入侵方向, 参见警戒区配置 char szAction[16]; // Action表示动作,参见警戒区配置 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 UINT nEventSeq; // 事件序列号 char szReserved[1020]; // 预留字段 }NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SPEED_DIFFPREWARNING (速度差预警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_SPEED_DIFFPREWARNING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 UINT nUTCMS; // 事件时间毫秒数 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 char byReserved1[4]; // 用于字节对齐 BOOL bNonMotorInfoEx; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 车道号 int nSequence; // 抓拍序号 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1020]; // 预留字段 }NET_DEV_EVENT_TRAFFIC_SPEED_DIFFPREWARNING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVER_IDENTIFIED (驾驶员比对成功通知事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_DRIVER_IDENTIFIED_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 UINT nUTCMS; // 事件时间毫秒数 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON NET_GPS_STATUS_INFO stuGpsSatus; // GPS状态 char szDriverID[32]; // 驾驶员ID char szReserved[1024]; // 预留字段 }NET_DEV_EVENT_TRAFFIC_DRIVER_IDENTIFIED_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_QUEUE_OVERFLOW (排队溢出事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_QUEUE_OVERFLOW_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 int nLane; // 对应车道号 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号, 1表示抓拍正常结束, 0表示抓拍异常结束 float fQueueLength; // 排队长度 UINT nEventID; // 事件ID double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 BOOL bVehicleInfo; // 是否有车辆信息 BOOL bObjectInfo; // 是否有车牌信息 BOOL bNonMotorInfo; // 是否有非机动车信息 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_QUEUE_OVERFLOW_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_QUEUE_TIMEOUT (排队超限事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_QUEUE_TIMEOUT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nEventID; // 事件ID double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved1[4]; // 字节对齐 BOOL bVehicleInfo; // 是否有车辆信息 int nLane; // 对应车道号 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号, 1表示抓拍正常结束, 0表示抓拍异常结束 BOOL bObjectInfo; // 是否有车牌信息 BOOL bNonMotorInfo; // 是否有非机动车信息 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_QUEUE_TIMEOUT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PLATE_ABNORMAL (车牌异常检测)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_PLATE_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 车牌信息 int nLane; // 对应车道号 int nSequence; // 抓拍序号, 1表示抓拍正常结束, 0表示抓拍异常结束 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_PLATE_ABNORMAL_INFO; ///@brief 事件类型 EVENT_IVS_GARBAGE_PLASTICBAG (打包垃圾检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 NET_TIME_EX stuUTC; // 事件发生的时间 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nEventID; // 事件ID int nObjectCount; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[64]; // 检测到的物体信息 NET_POINT_EX stuDetectRegion[20]; // 规则检测区域 int nDetectRegionCount; // 规则检测区域顶点数 UINT nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置点名称 char szSourceID[32]; // 事件关联ID char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO; ///@brief 事件类型 EVENT_IVS_POSITION_SNAP (按位置抓图事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_POSITION_SNAP_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szType[64]; // 按位置抓图的类型, 目前仅有"PresetSnap" int nPresetID; // 预置点序号 char szPresetName[64]; // 预置点名称 NET_GPS_INFO stuGPSInfo; // GPS信息 int nAbsposition[3]; // 云台方向与放大倍数,显示值,扩大100倍值, 该数组固定为3,第一个元素为水平角度,0-36000; 第二个元素为垂直角度,(-18000)-(18000); 第三个元素为显示放大倍数,0-100。 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_POSITION_SNAP_INFO; ///@brief 检测区域信息 typedef struct tagNET_DETECT_REGION_INFO_EX { int nDetectRegionCount; // 检测区域个数 NET_POINT_EX stuDetectRegion[20]; // 检测区域 char szReserved[428]; // 预留字节 }NET_DETECT_REGION_INFO_EX; ///@brief 事件类型 EVENT_IVS_MULTI_MAN_NUM_DETECTION (讯问会见室人数报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_MULTI_MAN_NUM_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nObjectsRealNum; // 实际有效目标检测信息个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 NET_DETECT_REGION_INFO_EX *pstuDetectRegionInfo; // 检测区域信息 int nDetectRegionInfoCount; // 检测区域信息个数 char szReserved[1020-POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_MULTI_MAN_NUM_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_USERMANAGER_FOR_TWSDK (用户信息上报事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 NET_TIME_EX stuUTC; // 事件发生的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szUserID[9]; // 用户ID char szReserved1[7]; // 字节对齐 char szUserName[64]; // 用户名 int nUserType; // 用户类型 int nUseTime; // 使用次数 int nAuthority; // 用户权限 0:未知 1: 管理员 2: 普通用户 int nTimeSectionNum; // 有效的的时间段数目 UINT nTimeSections[64]; // 时段 NET_TIME stuValidTo; // 有效期 UINT nSpecialDaysSchedule[64]; // 假日计划 int nSpecialDaysScheduleNum; // 假日计划表示数量 int nType; // 消息类型 0: 未知 1: 人员新增消息 2: 人员修改消息 3:人员删除消息(删除时仅UserID有效) char szPassword[9]; // 密码 char szReserved2[7]; // 字节对齐 char szFaceList[5][2048]; // 特征值 int nFaceListNum; // 特征值数量 int nCardListNum; // 卡片数量 char szCardList[5][32]; // 卡片 char szFingerList[5][256]; // 信息 int nFingerListNum; // 信息数量 BOOL bDelAllUser; // 是否删除所有用户(true:删除所有用户数据,其余字段无效) NET_TIME stuValidFrom; // 有效期开始时间 char szSN[32]; // 设备序列号 UINT nUserCount; // 用户总数量 UINT nFingerCount; // 信息总数量 UINT nFaceCount; // 目标总数量 UINT nCardCount; // 卡片总数量 NET_USERMANAGER_IMAGE_INFO stuImageInfo[5]; // 用户信息图片信息 int nImageInfoCount; // 用户信息图片信息个数 char szReserved[572]; // 预留字节 }NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO; ///@brief 事件类型 EVENT_IVS_OBJECT_QUANTITY_DETECTION (目标类型和数量检测报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 int nObjectsRealNum; // 实际有效目标检测信息个数 int nDetectRegionRealNum; // 检测区域数组有效个数 UINT nDetectRegion[20][2]; // 检测区域 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_DRIVE_ASSISTANT_ALARM (驱动辅助报警)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DRIVE_ASSISTANT_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nForwardCollideFlag; // 前向碰撞预警标识, 0:未预警 1:预警 UINT nForwardCollideReportFlag; // 前向碰撞上报标识, 0:未预警 1:预警 float fForwardCollideTime; // 前向碰撞耗时,单位秒, 当nForwardCollideFlag或nForwardCollideReportFlag值为1时有效 UINT nTooCloseFlag; // 距离过近预警标识, 0:未预警 1:预警 UINT nTooCloseReportFlag; // 距离过近上报标识, 0:未预警 1:预警 UINT nDepartureState; // 满足预警速度时车道偏移状态, 0:未偏移 1:左压线 2:右压线 UINT nDepartureReportState; // 满足上报速度时车道偏移状态, 0:未偏移 1:左压线 2:右压线 UINT nDepartureLaneType; // 车道线类型:0: 无车道线,1: 单虚线,2: 单实线,3: 双虚线,4: 双实线,5: 内虚外实线,6: 内实外虚线 UINT nSolidLaneChangeFlag; // 实线变道预警标识0:未预警 1:预警 UINT nSolidLaneChangeReportFlag; // 实线变道上报标识0:未预警(不上报平台) 1:预警(上报平台) NET_OBJECT_IMAGE_INFO stuImageInfo; // 图片信息 UINT nFrontCarGoFlag; // 前车启动的状态, 0 :未启动; 1 : 启动预警 UINT nPedestrianOnZebraFlag; // 斑马线有行人预警, 0 :未预警; 1 : 预警 UINT nPedestrianOnZebraDiscourtesyFlag; // 斑马线有行人未礼让预警, 0 :未预警; 1:未礼让预警 UINT nTrafficLightStateFlag; // 红灯变绿灯预警, 0:未预警; 1:红灯变绿灯 UINT nTrafficSignsHighSpeed; // 限速牌识别,最高速,大于0有效,单位KM/H UINT nTrafficSignsLowSpeed; // 限速牌识别,最低速,大于0有效,单位KM/H char szForwardCollideObjectType[16]; // 前向碰撞预警对象物体类型 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_DRIVE_ASSISTANT_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_FISH_STATE_DETECTION (鱼类状态检测报警)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_FISH_STATE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 NET_TIME_EX stuUTC; // 事件发生的时间 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nEventID; // 事件ID int nObjectCount; // 检测的动物个数 NET_VAOBJECT_ANIMAL_INFO stuObjects[8]; // 检测的动物信息 NET_OBJECT_IMAGE_INFO stuSceneImage; // 全景广角图 UINT nPresetID; // 事件触发的预置点号,从1开始 int nDetectRegionCount; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 char szUserName[32]; // 用户名称 UINT nCurrentQuantity; // 当前检测到的鱼数量 UINT nAssessmentQuantity; // 根据检测到的鱼数量得到的评估数量 int nType; // 当前检测到的鱼类型, 0: 各种鱼, 1: 三文鱼 UINT nActualQuantity; // 鱼群的真值,返回配置下发来的值, 单位:条 int nLowFish; // 鱼数量低报警百分比(例:低于20%则报警) 单位:百分比,0-100 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_FISH_STATE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_CONVEYOR_NTH_TO_STH_DETECTION (传送带载体从无到有检测报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CONVEYOR_NTH_TO_STH_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nRuleID; // 智能事件规则编号 int nObjectCount; // 检测的动物个数 DH_MSG_OBJECT stuObjects[32]; // 检测的动物信息 NET_OBJECT_IMAGE_INFO stuSceneImage; // 全景广角图 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionCount; // 检测区个数 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_CONVEYOR_NTH_TO_STH_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_CONVEYOR_STH_TO_NTH_DETECTION (传送带载体从有到无检测报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CONVEYOR_STH_TO_NTH_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 NET_TIME_EX stuUTC; // 事件发生的时间 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nRuleID; // 智能事件规则编号 int nObjectCount; // 检测的动物个数 DH_MSG_OBJECT stuObjects[32]; // 检测的动物信息 NET_OBJECT_IMAGE_INFO stuSceneImage; // 全景广角图 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionCount; // 检测区个数 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CONVEYOR_STH_TO_NTH_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_CO_LOW_ALARM (CO低浓度报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CO_LOW_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 int nCOConcentration; //一氧化碳浓度值,单位ppm char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CO_LOW_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_CO_HIGH_ALARM (CO低浓度报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CO_HIGH_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 int nCOConcentration; //一氧化碳浓度值,单位ppm char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CO_HIGH_ALARM_INFO; ///@brief 销售香烟信息 typedef struct tagNET_CIGARETTE_CASE_INFO { char szCigaretteType[128]; // 销售烟盒种类,目前支持的类型如下 //0 "GuiYan-Yinghuangjingpin" 贵烟(硬黄精品) //1 "HuangGuoShu-Lanjiapin" 黄果树(蓝佳品) //2 "GuiYan-Yinggaozun" 贵烟(硬高遵) //3 "GuiYan-Xi" 贵烟(喜) //4 "YunYan-Ruanzhenpin" 云烟(软珍品) //5 "YunYan-Zi" 云烟(紫) //6 "GuiYan-Fu" 贵烟(福) //7 "GuiYan-Cui" 贵烟(萃) //8 "GuiYan-Jinbaihe" 贵烟(金百合) //9 "YuXi-Ruan" 玉溪(软) //10 "GuiYan-Kuayue" 贵烟(跨越) //11 "ZhongHua-Ying" 中华(硬) //12 "HuangHeLou-Ruanlan" 黄鹤楼(软蓝) //13 "GuiYan-Ruangaozun" 贵烟(软高遵) //14 "GuiYan-Guojiuxiang30" 贵烟(国酒香30) //15 "GuiYan-Hongzhongzhi" 贵烟(红中支) //16 "YunYan-Ruandazhongjiu" 云烟(软大重九) //17 "YunYan-Zhongzhijinyaodai" 云烟(中支金腰带) //18 "HuangHeLou-Tianxiaminglou" 黄鹤楼(天下名楼) //19 "GuiYan-Xizhiguojiuxiang30" 贵烟(细支国酒香30) //20 "NanJing-Xuanhemen" 南京(炫赫门) //21 "ZhongHua-Ruan" 中华(软) //22 "HuangGuoShu-Changzhenghongxingzhaoyao" 黄果树(长征红星照耀) //23 "FuRongWang-Ying" 芙蓉王(硬) //24 "TianZi-Jin" 天子(金) //25 "BaiSha-Hetianxia" 白沙(和天下) //26 "NanJing-Shierchaibohe" 南京(十二钗薄荷) //27 "GuiYan-Shengxiao" 贵烟(生肖) //28 "TianZi-ZhongZhi" 天子(中支) //29 "YunYan-Ruanyinxiangyanzhuang" 云烟(软印象烟庄) //30 "ZhongHua-Shuangzhongzhi" 中华(双中支) //31 "GuiYan-Xingzhe" 贵烟(行者) //32 "GuiYan-Guizhongzhi" 贵烟(贵中支) //33 "YuXi-Zhongzhijingjie" 玉溪(中支境界) //34 "ZhongHua-Jinzhongzhi" 中华(金中支) //35 "YunYan-Heijingangyinxiang" 云烟(黑金刚印象) //36 "YunYan-Xiaoxiongmaojiayuan" 云烟(小熊猫家园) //37 "GuiYan-Fuzhongzhi" 贵烟(福中支) //38 "GuiYan-Xigui" 贵烟(喜贵) //39 "JiaoZi-Kuanzhaihaoyunxizhi" 娇子(宽窄好运细支) //40 "GuiYan-Xizhixingzhe" 贵烟(细支行者) //41 "BaiSha-Ruanhetianxia" 白沙(软和天下) //42 "GuiYan-Yingxiaoguojiuxiang" 贵烟(硬小国酒香) //43 "YunYan-Xizhizhenpin" 云烟(细支珍品) //44 "YunYan-Xizhiyunlong" 云烟(细支云龙) //45 "ChangBaiShan-777" 长白山(777) //46 “LiQun-Xinbon” 利群(新版) //47 “HuangHeLou-Yingxiagurouqing” 黄鹤楼(硬峡谷柔情) //48 “Huangshan-Xinzhiwanyan” 黄山(新制皖烟) //49 “QiPiLang-Hong” 七匹狼(红) //50 “BaiSha-Yingxizhihetianxia” 白沙(硬细支和天下) UINT CigaretteNum; // 销售烟盒数量,单位为盒 char szReserved[1020]; // 预留字节 }NET_CIGARETTE_CASE_INFO; ///@brief 事件类型 EVENT_IVS_CIGARETTE_CASE_DETECTION (烟盒检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,一次检测的多个nGroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nCigaretteCaseNum; // 销售香烟信息数量 NET_CIGARETTE_CASE_INFO stuCigaretteCaseInfo[50]; // 销售香烟信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TIMECHANGE_FOR_TWSDK (系统时间被修改报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME stuBeforeModifyTime; // 修改前时间 NET_TIME stuModifiedTime; // 修改后时间 char szSN[32]; // 设备序列号 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO; ///@brief 传送带运动状态检测类型 typedef enum tagEM_CONVEYOR_BELT_RULETYPE_RULE_TYPE { EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE_UNKNOWN, // 未知 EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE_STH_TO_NTH, // 物品从有到无 EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE_NTH_TO_STH, // 物品从无到有 EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE_MOVE_TO_STOP, // 运动到静止 EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE_STOP_TO_MOVE, // 静止到运动 }EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE; ///@brief 事件类型 EVENT_IVS_CONVEYOR_BELT_STATUS (传送带运动状态检测报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CONVEYOR_BELT_STATUS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionCount; // 检测区个数 float fCoalData; // 当前煤量占比值 UINT nStatusType; // 本次事件触发对应的传送带运行状态: 0表示运动到静止, 1表示静止到运动, 2表示未知 UINT nObjectStatusType; // 本次事件触发对应的传送带上的物品状态: 0表示未知, 1表示物品从有到无, 2表示物品从无到有 NET_OBJECT_IMAGE_INFO stuSceneImage; // 全景广角图 int nRuleTypeCount; // 检测类型个数 EM_CONVEYOR_BELT_RULETYPE_RULE_TYPE emRuleType[16]; // 检测类型 UINT nStatusTypeObjRst; // 皮带运动到静止时或静止到运动时, 皮带上是否有物体。 0- 未知 1- 有物体 2- 无物体 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_CONVEYOR_BELT_STATUS_INFO; ///@brief 事件类型 EVENT_IVS_HOSPITAL_TALK_CONTROL (设备上报谈话事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_HOSPITAL_TALK_CONTROL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szCitizenName[128]; // 姓名。证件、社保卡上的正式公民姓名 char szCitizenIDNo[20]; // 证件卡号 char szPatientIdentity[20]; // 病人证件 UINT nMode; // 谈话模式 0:病人谈话,1:家属谈话 UINT nStatus; // 上报状态类型 0: 开始,1: 结束,2: 暂停,3: 继续 UINT nCardType; // 刷卡类型 1:证件,2:社保卡 UINT nImageInfoNum; // 实际图片信息个数 NET_USERMANAGER_IMAGE_INFO stuImageInfo[6]; // 图片信息数组 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_HOSPITAL_TALK_CONTROL_INFO; ///@brief 站点信息上报类型 typedef enum tagEM_STATIONINFO_SITE_TYPE { EM_STATIONINFO_SITE_UNKNOWN, // 未知 EM_STATIONINFO_SITE_SIGNIN, // 签到/上车 EM_STATIONINFO_SITE_SIGNOUT, // 签出/下车 EM_STATIONINFO_SITE_NORMAL, // 正常刷卡,不区分上下车 }EM_STATIONINFO_SITE_TYPE; ///@brief 事件类型 EVENT_IVS_SCHOOL_BUS_SWIPE_CARD (学生刷卡事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SCHOOL_BUS_SWIPE_CARD_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 char szCardID[64]; // 刷卡ID NET_TIME_EX stuSwipeTime; // 刷卡时间,本地时间 char szSiteName[64]; // 站点名称 EM_STATIONINFO_SITE_TYPE emSiteType; // 站点信息上报类型 NET_TIME_EX stuStartTime; // 行程开始时间,本地时间 NET_TIME_EX stuEndTime; // 行程结束时间,本地时间 NET_GPS_STATUS_INFO stuGPS; // GPS信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_SCHOOL_BUS_SWIPE_CARD_INFO; ///@brief 门状态 typedef struct tagNET_DOOR_STATUS_FOR_BOX { int nNumber; // 编号 int nStatus; // 状态 char szReserved[64]; // 预留字节 }NET_DOOR_STATUS_FOR_BOX; ///@brief 事件类型 EVENT_IVS_DOOR_STATUS_FOR_BOX (智能柜门状态上报)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DOOR_STATUS_FOR_BOX_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 NET_DOOR_STATUS_FOR_BOX stuDoorStatus[256]; // 门状态 int nDoorStatusNum; // 门状态数量 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_DOOR_STATUS_FOR_BOX_INFO; ///@brief 事件类型 EVENT_IVS_COLD_SPOT_WARNING (冷点报警)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_COLD_SPOT_WARNING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 NET_POINT_EX stuPoint; // 冷点位置 归一化到[0,8191]上的坐标点 float fColdSpotValue; // 冷点温度值 NET_TEMPERATURE_UNIT emTemperatureUnit; // 当前配置的温度单位 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_COLD_SPOT_WARNING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ACCELERATION_RAPID (急加速事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 char szName[128]; // 事件名称 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同。 int nCountInGroup; // CountInGroup一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nLane; // 表示对应车道号 double dbPTS; // 相对事件时间戳,单位毫秒 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 车牌信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 表示交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bHasNonMotor; // 是否有非机动车对象 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 int nSpeed; // 车速,单位km/h int nTriggerType; // 触发类型: -1: 未知 0: 车检器 1: 雷达 2: 视频 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nEventType; // 事件类型掩码, bit0表示报警事件, bit1表示违章事件, 若bit0和bit1都置位则既是报警事件又是违章事件 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURN_SHARP (急转弯事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 char szName[128]; // 事件名称 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同。 int nCountInGroup; // CountInGroup一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nLane; // 表示对应车道号 double dbPTS; // 相对事件时间戳,单位毫秒 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 车牌信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 表示交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BOOL bHasNonMotor; // 是否有非机动车对象 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 int nSpeed; // 车速,单位km/h int nTriggerType; // 触发类型: -1: 未知 0: 车检器 1: 雷达 2: 视频 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO; ///@brief 事件类型 EVENT_IVS_PASSENGER_FLOW_ALARM (校车上客事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_PASSENGER_FLOW_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 int nAlarmType; // 报警类型: 0: 未知,不关心, 1: 校车上客事件, 2: 校车下客事件 NET_TIME stuTime; // 报警产生时间,本地时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS状态 char szCarNo[12]; // 车牌 UINT nPassengerNum; // 客流人数 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_PASSENGER_FLOW_ALARM_INFO; ///@brief 人证驾驶员信息 typedef struct tagNET_DRIVER_MISMATCH_INFO { char szFaceID[32]; // 驾驶员ID char szOrganization[32]; // 所属公司或者组织 char szReserved[256]; // 预留字节 }NET_DRIVER_MISMATCH_INFO; ///@brief 人证刷卡信息 typedef struct tagNET_CARD_MISMATCH_INFO { char szCardID[32]; // 刷卡ID char szOrganization[32]; // 所属公司或者组织 char szReserved[256]; // 预留字节 }NET_CARD_MISMATCH_INFO; ///@brief 人车车辆信息 typedef struct tagNET_VEHICLE_MISMATCH_INFO { char szOrganization[32]; // 所属公司或者组织 char szReserved[256]; // 预留字节 }NET_VEHICLE_MISMATCH_INFO; ///@brief 事件类型 EVENT_IVS_DRIVER_MISMATCH_CERTIFICATE (司机人证不符事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DRIVER_MISMATCH_CERTIFICATE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 NET_DRIVER_MISMATCH_INFO stuDriverInfo; // 驾驶员信息 NET_CARD_MISMATCH_INFO stuCardInfo; // 刷卡信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_DRIVER_MISMATCH_CERTIFICATE_INFO; ///@brief 事件类型 EVENT_IVS_DRIVER_MISMATCH_VEHICLE (司机人车不符事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DRIVER_MISMATCH_VEHICLE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 NET_DRIVER_MISMATCH_INFO stuDriverInfo; // 驾驶员信息 NET_VEHICLE_MISMATCH_INFO stuVehicleInfo; // 车辆信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_DRIVER_MISMATCH_VEHICLE_INFO; ///@brief 事件类型 EVENT_IVS_CERTIFICATE_MISMATCH_VEHICLE (司机证车不符事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CERTIFICATE_MISMATCH_VEHICLE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 NET_CARD_MISMATCH_INFO stuCardInfo; // 驾驶员信息 NET_VEHICLE_MISMATCH_INFO stuVehicleInfo; // 车辆信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CERTIFICATE_MISMATCH_VEHICLE_INFO; ///@brief "电池低电压"附带信息 typedef struct tagNET_BATTERY_LOW_POWER_INFO { UINT nVoltage; // 电池电压,单位mV UINT nPercent; // 电池电量百分比 char szReserved[256]; // 预留字段 }NET_BATTERY_LOW_POWER_INFO; ///@brief "温度报警"附带信息 typedef struct tagNET_TEMP_SENSOR_INFO { double dbValue; // 温度数值 char szUnit[8]; // 温度单位, ℃或℉ char szReserved[256]; // 预留字段 }NET_TEMP_SENSOR_INFO; ///@brief "湿度报警"附带信息 typedef struct tagNET_HUMIDITY_SENSOR_INFO { double dbValue; // 湿度 char szUnit[8]; // 湿度单位, 相对湿度百分比%RH,简写为% char szReserved[256]; // 预留字段 }NET_HUMIDITY_SENSOR_INFO; ///@brief 报警类型的附带信息 typedef struct tagNET_FINANCIAL_ALARM_INFO { NET_BATTERY_LOW_POWER_INFO stuBatteryLowPower; // "电池低电压"附带信息 NET_TEMP_SENSOR_INFO stuTempSensor; // "温度报警"附带信息 NET_HUMIDITY_SENSOR_INFO stuHumiditySensor; // "湿度报警"附带信息 char szReserved[1024]; // 预留字段 }NET_FINANCIAL_ALARM_INFO; ///@brief 事件类型EVENT_IVS_FINANCIAL_CABINET_ALARM_EVENT(金融业务库异常事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_FINANCIAL_CABINET_ALARM_EVENT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szUserID[32]; // 报警用户ID char szAlarmType[32]; // 智能业务库的报警类型, 具体描述如下: // "ShockSensor"- 震动报警 "NetAbort"- 断网报警 "PowerFault"-市电掉电 "TempSensor"-温度报警 "HumiditySensor"-湿度报警 // "AbnormalOpenDoor"-异常开门 "EmergencyOpenDoor"-应急开门 "DoorNotOpen"-超时未开 "OperTimeOut"-存取操作超时 "FailTooManyTimes"-尝试过多 // "TrunkAway"-超时未存 "AbnormalWithdraw"-非法领用 "AbnormalDeposit"-非法存入 "Duress"-胁迫报警 "Infrared"-红外报警 // "SmokingSensor"-烟感报警 "UrgencyButton"-紧急报警 "InvalidAuth"-非法验证 "BatteryLowPower"-电池低电压 "Other"-其他 NET_FINANCIAL_ALARM_INFO stuAlarmInfo; // szAlarmType指定报警类型的附带信息 UINT nAlarmLevel; // 报警等级 char szReserved[1020]; // 预留字段 }NET_DEV_EVENT_FINANCIAL_CABINET_ALARM_EVENT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_RUNASTOP_SIGN(闯行停车标志事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_RUNASTOP_SIGN_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_RUNASTOP_SIGN_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_VEHICLE_OVERLOAD(超员检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TRAFFIC_VEHICLE_OVERLOAD_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TRAFFIC_VEHICLE_OVERLOAD_INFO; ///@brief 事件类型EVENT_IVS_DOOR_STATUS(门状态事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DOOR_STATUS_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szSerialNumber[256]; // 无线设备序列号(智能锁) EM_DOOR_STATUS emStatus; // 门禁状态 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC ,否则用 UTC 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) BYTE byReserved[970]; // 预留字段 }DEV_EVENT_DOOR_STATUS_INFO; ///@brief 全景图 typedef struct tagNET_VIS_SCENE_IMAGE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小, 单位字节 UINT nWidth; // 图片宽度, 像素 UINT nHeight; // 图片高度, 像素 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[60]; // 预留字段 } NET_VIS_SCENE_IMAGE; ///@brief 热成像全景图 typedef struct tagNET_THERMAL_SCENE_IMAGE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小, 单位字节 UINT nWidth; // 图片宽度, 像素 UINT nHeight; // 图片高度, 像素 UINT nIndexInData; // 在上传图片数据中的图片序号 BYTE byReserved[60]; // 预留字段 } NET_THERMAL_SCENE_IMAGE; ///@brief 事件类型EVENT_IVS_ANATOMY_TEMP_DETECT(人体测温检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ANATOMY_TEMP_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nPresetID; // 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知 NET_MAN_TEMP_INFO stManTempInfo; // 区域内人员体温信息 NET_VIS_SCENE_IMAGE stVisSceneImage; // 可见光全景图 NET_THERMAL_SCENE_IMAGE stThermalSceneImage; // 热成像全景图 UINT nSequence; // 帧序号 UINT nEventRelevanceID; // 事件关联ID BOOL bIsFaceRecognition; // 是否做过后智能的目标识别 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1004]; // 预留字段 } DEV_EVENT_ANATOMY_TEMP_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_DHOP_CUSTOM 及 EVENT_IVS_DHOP_CUSTOM_ONCE (DHOP自定义事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DHOP_CUSTOM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSourceIndex; // 触发源ID BYTE byReserved1[4]; // 预留,字节对齐 NET_DHOP_APP_INFO stuAppInfo; // 事件触发源信息(APP信息) char szCustomData[4096]; // 自定义数据 double PTS; // 时间戳(单位是毫秒) char szClass[32]; // 事件所属大类 BYTE byReserved[2008]; // 预留字节 } DEV_EVENT_DHOP_CUSTOM_INFO; ///@brief 起雾检测事件数据类型 typedef enum tagEM_FOG_DETECTION_EVENT_TYPE { EM_FOG_DETECTION_EVENT_TYPE_UNKNOWN, // 未知 EM_FOG_DETECTION_EVENT_TYPE_REAL, // 实时数据 EM_FOG_DETECTION_EVENT_TYPE_ALARM, // 报警数据 }EM_FOG_DETECTION_EVENT_TYPE; ///@brief 雾值 typedef enum tagEM_FOG_LEVEL { EM_FOG_LEVEL_UNKNOWN, // 未知 EM_FOG_LEVEL_NO, // 无 EM_FOG_LEVEL_BLUE, // 蓝色预警 EM_FOG_LEVEL_YELLOW, // 黄色预警 EM_FOG_LEVEL_ORANGE, // 橙色预警 EM_FOG_LEVEL_RED, // 红色预警 }EM_FOG_LEVEL; ///@brief 起雾检测事件雾信息 typedef struct tagFOG_DETECTION_FOG_INFO { EM_FOG_LEVEL emFogLevel; // 雾等级 BYTE byReserved[508]; // 预留字段 }FOG_DETECTION_FOG_INFO; ///@brief 事件类型EVENT_IVS_FOG_DETECTION(起雾检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FOG_DETECTION { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nPresetID; // 预置点号,从1开始有效 char szPresetName[128]; // 阈值点名称 EM_FOG_DETECTION_EVENT_TYPE emEventType; // 事件数据类型 FOG_DETECTION_FOG_INFO stuFogInfo; // 雾信息 DH_EVENT_FILE_INFO stFileInfo; // 事件对应文件信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_FOG_DETECTION; ///@brief 事件类型EVENT_IVS_TRAFFIC_VEHICLE_BC(飙车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VEHICLE_BC { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_EVENT_FILE_INFO stFileInfo; // 事件对应文件信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_TRAFFIC_VEHICLE_BC; ///@brief 事件类型 EVENT_IVS_TRAFFIC_MOTOR_OVERLOAD (机动车超载事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_MOTOR_OVERLOAD_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_MSG_OBJECT_SUPPLEMENT stuObjectInfoEx; // 车牌信息拓展字段, 与DH_MSG_OBJECT的合集表示视频分析物体信息 BYTE byReserved[720]; // 预留字段 }DEV_EVENT_TRAFFIC_MOTOR_OVERLOAD_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PLATE_OCCLUSION (车牌污损事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PLATE_OCCLUSION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束 EVENT_COMM_INFO stCommInfo; // 公共信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_TRAFFIC_PLATE_OCCLUSION_INFO; ///@brief 获取角度 typedef struct tagNET_CAMERA_PTZ_INFO { PTZ_SPACE_UNIT stuPosition; // 预置点的坐标和放大倍数 unsigned int nAngelH; // 热成像横向视场角,单位度,实际角度乘以100 unsigned int nAngelV; // 热成像纵向视场角,单位度,实际角度乘以100 char szreserved[60]; // 预留字段 }NET_CAMERA_PTZ_INFO; ///@brief 事件类型 EVENT_IVS_BREAK_RULE_BUILDING_DETECTION (违章建筑检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BREAK_RULE_BUILDING_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 EM_CLASS_TYPE emClassType; // 智能事件所属大类 SCENE_IMAGE_INFO stuSceneImageInfo; // 全景广角图(当前事件只有:nOffSet、nLength有效) DWORD dwEventID; // 事件ID char szreserved[4]; // 字节对齐 NET_CAMERA_PTZ_INFO stuCameraPtz; // 获取角度 NET_RECT stuBoundingBox; // 目标矩形框 int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测到的物体信息 BYTE byReserved[888]; // 预留字段 }DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_ROAD_ALERT(道路安全预警)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_ROAD_ALERT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nLane; // 对应车道号 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_EVENT_FILE_INFO stFileInfo; // 事件对应文件信息 int nSequence; // 表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束 BYTE byReserved[1020]; // 预留字段 } DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO; ///@brief 事件类型 EVENT_IVS_NONMOTOR_ENTRYING (非机动车进入电梯事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_NONMOTOR_ENTRYING_INFO { int nChannelID; // 通道号 int nAction; // 1:开始 2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nRuleID; // 规则ID int nSequence; // 视频帧序号 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nObjectNum; // 目标个数 VA_OBJECT_NONMOTOR stuObjects[8]; // 非机动车目标 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 预留字段 }DEV_EVENT_NONMOTOR_ENTRYING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_RUN_REDLIGHT (非机动车闯红灯事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲事件 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 视频帧序号 int nLane; // 车道号 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车 EVENT_COMM_INFO stCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1016]; // 预留字段 }DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO; ///@brief 事件类型 EVENT_IVS_PRAM_DETECTION (婴儿车检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PRAM_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nPresetID; // 事件触发的预置点号,从1开始, 没有该字段,表示预置点未知 DH_MSG_OBJECT stuObjects[128]; // 检测到的多个物体 int nObjectNum; // 检测到的物体个数 int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 BYTE byReversed[1024]; // 保留字节 }DEV_EVENT_PRAM_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_BIG_BAGGAGE_DETECTION (大件行李箱检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BIG_BAGGAGE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nPresetID; // 事件触发的预置点号,从1开始, 没有该字段,表示预置点未知 DH_MSG_OBJECT stuObjects[128]; // 检测到的多个物体 int nObjectNum; // 检测到的物体个数 int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 BYTE byReversed[1024]; // 保留字节 }DEV_EVENT_BIG_BAGGAGE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TICKET_EVADE_DETECTION (逃票检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TICKET_EVADE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 1:开始 2:停止 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 UINT nPresetID; // 事件触发的预置点号,从1开始, 没有该字段,表示预置点未知 DH_MSG_OBJECT stuObjects[128]; // 检测到的多个物体 int nObjectNum; // 检测到的物体个数 int nDetectRegionNum; // 实际检测到区域个数 DH_POINT stuDetectRegion[DH_MAX_DETECT_REGION_NUM]; // 检测区域 BYTE byReversed[1024]; // 保留字节 }DEV_EVENT_TICKET_EVADE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE (占用应急车道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲事件 char szName[DH_EVENT_NAME_LEN]; // 事件名称 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号 DH_MSG_OBJECT stuObject; // 检测到的物体 BYTE byReserved1[4]; // 字节对齐 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 BYTE byReserved2[4]; // 字节对齐 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO; ///@brief 物体动作支持类型 typedef enum tagEM_OBJECT_ACTION { EM_OBJECT_ACTION_UNKNOWN, // 未知动作 EM_OBJECT_ACTION_APPEAR, // "Appear": 第一次出现在检测区域中, 或者跟踪时物理分离动作中尚未确认的新物体 EM_OBJECT_ACTION_MOVE, // "Move": 正在运动 物体被正常跟踪 EM_OBJECT_ACTION_STAY, // "Stay": 物体停止运动这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中 EM_OBJECT_ACTION_REMOVE, // "Remove": 物体从原来的区域移除,或者被遮盖,或者跟踪失败 EM_OBJECT_ACTION_DISAPPERAR, // "Disappear": 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现 EM_OBJECT_ACTION_SPLIT, // "Split": 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离 EM_OBJECT_ACTION_MERGE, // "Merge": 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体 EM_OBJECT_ACTION_RENAME, // "Rename": 无法确定分离动作中某个物体是原先同一个物体,关联ID表示暂时使用的新的ID }EM_OBJECT_ACTION; ///@brief 异物物体 ForeignMatterObjects typedef struct tagFOREIGN_MATTER_OBJECT { DWORD dwObjectID; // 物体ID, 每个ID表示一个唯一的物体 EM_OBJECT_ACTION emAction; // 物体动作类型 NET_RECT stuBoundingBox; // 跟踪物体包围盒 BYTE byReserved[256]; // 保留字节 }FOREIGN_MATTER_OBJECT; ///@brief 事件类型 EVENT_IVS_POWERLINE_FOREIGN_DETECITON 对应数据 typedef struct tagDEV_EVENT_POWERLINE_FOREIGN_DETEC_INFO { int nChannelID; // 通道号 int nAction; // 事件动作 1-开始. 2-结束 char szName[128]; // 事件名称 DWORD PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nRuleID; // 智能事件规则编号, 缺省为0 int nCount; // 事件触发次数 int nPresetID; // 事件触发的预置点号, 缺省为0 int nDetectRegionNum; // 规则检测区域顶点数 NET_POINT stuDetectRegion[20]; // 规则检测区域 int nForeignMatterNum; // 异物物体实际个数 FOREIGN_MATTER_OBJECT *pForeignMatter; // 异物物体信息 void *pReserved; // 字节对齐 BYTE byReserved[1024]; // 保留 }DEV_EVENT_POWERLINE_FOREIGN_DETEC_INFO; ///@brief 触发时机类型 typedef enum tagEM_TRIGGER_OCCUR_TYPE { EM_TRIGGER_OCCUR_TYPE_UNKNOWN = -1, // 未知 EM_TRIGGER_OCCUR_TYPE_ENTER, // 进入 EM_TRIGGER_OCCUR_TYPE_LEAVE, // 离开 }EM_TRIGGER_OCCUR_TYPE; ///@brief 抓拍过程结束类型 typedef enum tagEM_CAPTURE_PROCESS_END_TYPE { EM_CAPTURE_PROCESS_END_TYPE_UNKNOWN = -1, // 未知 EM_CAPTURE_PROCESS_END_TYPE_ABNORMAL, // 异常 EM_CAPTURE_PROCESS_END_TYPE_NORMAL, // 正常 }EM_CAPTURE_PROCESS_END_TYPE; ///@brief 雷达上报车辆信息 typedef struct tagRADAR_REPORTS_VEHICLE_INFO { UINT nVehicleId; // 车辆ID UINT nVehicleLength; // 车辆长度(单位:厘米) UINT nVehicleWidth; // 车辆宽度(单位:厘米) UINT nVehicleHeight; // 车辆高度(单位:厘米) UINT nVehicleVolume; // 车辆体积(单位:立方厘米) UINT nLaneID; // 车道号 EM_VEHICLE_DRIVING_DIRECTION emDrivingDirection; // 车辆行驶方向(相对车道方向) char szDetectTime[32]; // 车辆到达雷达检测位置的时间 UINT nVehicleRailingHigh; // 车辆的挡板高度(单位:厘米) UINT nVehicleSpeed; // 车辆速度(单位:千米/小时) EM_RADAR_DETECTION_VEHICLE_TYPE emVehicleType; // 车辆类型 UINT nAxisNum; // 车辆车轴个数 UINT nAxisType; // 车辆车轴类型 BYTE byResverd[260]; // 保留字节 }RADAR_REPORTS_VEHICLE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_CAR_MEASUREMENT(交通卡口测量(车辆长、宽、高度、重量等)事件) 对应数据 typedef struct tagDEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 UINT nEventID; // 事件ID UINT nSpeed; // 车速,单位km/h EM_TRIGGER_TYPE emTriggerType; // 触发类型 EM_TRIGGER_OCCUR_TYPE emTriggerOccur; // 触发时机 UINT nMark; // 标记抓拍帧 UINT nSource; // 视频分析的数据源地址 UINT nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 NET_TIME_EX stuRedLightStartTime; // 红灯开始的时间 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 EVENT_CARD_INFO stuCardInfo; // 卡片信息 EM_VEHICLE_DRIVING_DIRECTION emDrivingDirection; // 车辆行驶方向(相对车道方向) EM_TRFAFFIC_LIGHT_TYPE emLightState; // 交通信号灯类型 EM_OPEN_STROBE_STATE emOpenStrobeState; // 开闸状态 EM_VEHICLE_DIRECTION emVehicleDirection; // 抓拍车的位置 NET_SAFEBELT_STATE emMainSeat; // 主驾驶座位安全带状态 NET_SAFEBELT_STATE emSlaveSeat; // 副驶座位安全带状态 EVENT_PLATE_INFO stuPlateInfo; // 车辆信息,记录了车头、车尾车牌号和车牌颜色 NET_CAR_WEIGHT_INFO stuCarWeightInfo; // 称重系统车辆信息 RADAR_REPORTS_VEHICLE_INFO stuRadarReportsVehicleInfo; // 雷达上报车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE byResersed[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TURN_RIGHT_OVER_LINE 右转弯压线事件 typedef struct tagDEV_EVENT_TRAFFIC_TURN_RIGHT_OVER_LINE_INFO { char szName[128]; // 事件名称 int nChannelID; // 通道号 int nAction; // 0:脉冲 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 NET_TIME_EX UTC; // 事件发生的时间,单位秒 double dbPTS; // 时间戳(单位是毫秒) DH_MSG_OBJECT stuVehicle; // 车身信息 DH_MSG_OBJECT stuObject; // 车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 UINT nEventID; // 事件编号,用来唯一标志一个事件 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频帧序号 int nSpeed; // 车辆实际速度(单位: km/h) int nLane; // 对应的车道号 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON BYTE byReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_TURN_RIGHT_OVER_LINE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVE_ON_LINE(骑线行驶事件) 对应数据 typedef struct tagDEV_EVENT_TRAFFIC_DRIVE_ON_LINE_INFO { char szName[128]; // 事件名称 int nChannelID; // 通道号 int nAction; // 0:脉冲 int nGroupID; // 事件组ID,同一辆车抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 NET_TIME_EX UTC; // 事件发生的时间 double dbPTS; // 时间戳(单位是毫秒) DH_MSG_OBJECT stuVehicle; // 车身信息 DH_MSG_OBJECT stuPlateObject; // 车牌信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 UINT nEventID; // 事件编号,用来唯一标志一个事件 int nLane; // 对应的车道号 int nSequence; // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_TRAFFIC_DRIVE_ON_LINE_INFO; ///@brief 事件类型 EVENT_IVS_OBJECT_PLACEMENT_DETECTION(物品放置检测事件) 对应数据 typedef struct tagDEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO { char szName[128]; // 事件名称 int nChannelID; // 通道号 int nAction; // 0:脉冲 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 UINT nPreRecord; // 预录时长, 单位秒 DH_MSG_OBJECT stuObject; // 物体信息数据 SCENE_IMAGE_INFO stuSceneImage; // 广角图 int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObjects[128]; // 表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char Reserved[1012]; // 保留字节 } DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_OBJECT_REMOVAL_DETECTION(物品拿取检测事件) 对应数据 typedef struct tagDEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO { char szName[128]; // 事件名称 int nChannelID; // 通道号 int nAction; // 0:脉冲 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 UINT nPreRecord; // 预录时长, 单位秒 DH_MSG_OBJECT stuObject; // 物体信息数据 SCENE_IMAGE_INFO stuSceneImage; // 广角图 int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObjects[128]; // 表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char Reserved[1012]; // 保留字节 } DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_MANUAL_ALARM (人工报警事件) 对应的数据描述信息 typedef struct tagDEV_EVENT_MANUAL_ALARM_INFO { int nAction; // 1:开始 2:停止 int nChannel; // 通道号 NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nImageNum; // 有效stuImages图片个数 SCENE_IMAGE_INFO stuImages[3]; // 图片信息, 最大支持3张图 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szName[128]; // 事件名称 UINT nACK; // 确认ID int nGroupID; // 事件组ID double dbPTS; // 时间戳(单位是毫秒) UINT nUTCMS; // 事件时间毫秒数 int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 int nMark; // 抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nLane; // 车道号 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 DH_MSG_OBJECT_EX2* pstuVehicle; // 车辆信息(由sdk管理的内存) DH_MSG_OBJECT_EX2* pstuObject; // 车牌信息(由sdk管理的内存) DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO* pstuTrafficCar; // 交通车辆的数据库记录(由sdk管理的内存) EVENT_COMM_INFO* pstuCommInfo; // 公共信息(由sdk管理的内存) BYTE byReserved[836 - 4*POINTERSIZE];// 保留字节 }DEV_EVENT_MANUAL_ALARM_INFO; ///@brief 安检图片类型 typedef enum tagEM_SECURITY_IMAGE_TYPE { EM_SECURITY_IMAGE_UNKNOWN = -1, // 未知 EM_SECURITY_IMAGE_INSPECTOR, // 安检员图片 EM_SECURITY_IMAGE_PACKAGE // 包裹图片 }EM_SECURITY_IMAGE_TYPE; ///@brief 安检图片信息 typedef struct tagNET_SECURITY_IMAGE_LIST { EM_SECURITY_IMAGE_TYPE emImageType; // 安检图片类型 unsigned int nOffset; // 图片偏移 unsigned int nLen; // 图片长度 char szReserved[60]; // 保留字节 } NET_SECURITY_IMAGE_LIST; ///@brief 事件类型EVENT_IVS_SECURITY_INSPECTOR_LOOKAROUND (安检员左顾右盼报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SECURITY_INSPECTOR_LOOKAROUND_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[32]; // 用户名称 NET_SECURITY_IMAGE_LIST stuImageList[32]; // 安检图片信息 unsigned int nImageListCount; // 安检图片信息个数 char szReserved[1020]; // 保留字节,留待扩展. } DEV_EVENT_SECURITY_INSPECTOR_LOOKAROUND_INFO; ///@brief 事件类型EVENT_IVS_SECURITY_INSPECTOR_LOWERHEAD (安检员低头报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SECURITY_INSPECTOR_LOWERHEAD_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[32]; // 用户名称 NET_SECURITY_IMAGE_LIST stuImageList[32]; // 安检图片信息 unsigned int nImageListCount; // 安检图片信息个数 char szReserved[1020]; // 保留字节,留待扩展. } DEV_EVENT_SECURITY_INSPECTOR_LOWERHEAD_INFO; ///@brief 事件类型EVENT_IVS_SECURITY_INSPECTOR_TIRED (安检员疲劳报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SECURITY_INSPECTOR_TIRED_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[32]; // 用户名称 NET_SECURITY_IMAGE_LIST stuImageList[32]; // 安检图片信息 unsigned int nImageListCount; // 安检图片信息个数 char szReserved[1020]; // 保留字节,留待扩展. } DEV_EVENT_SECURITY_INSPECTOR_TIRED_INFO; ///@brief 事件类型EVENT_IVS_SECURITY_INSPECTOR_YAWN (安检员打哈欠报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SECURITY_INSPECTOR_YAWN_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szUserName[32]; // 用户名称 NET_SECURITY_IMAGE_LIST stuImageList[32]; // 安检图片信息 unsigned int nImageListCount; // 安检图片信息个数 char szReserved[1020]; // 保留字节,留待扩展. } DEV_EVENT_SECURITY_INSPECTOR_YAWN_INFO; ///@brief 事件类型EVENT_IVS_AIPICK_DETECT (智能拾音器语音识别事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_AIPICK_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szContent[256]; // 语音识别转文本的字符 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_AIPICK_DETECT_INFO; ///@brief 交通灯故障状态 typedef struct tagNET_TRAFFIC_LIGHT_FAULT_STATES { UINT nStraightLightMask[3]; //直行灯故障状态, 0-绿灯 1-红灯 2-黄灯 非0表示信号灯有故障 UINT nTurnLeftLightMask[3]; //左转灯故障状态, 0-绿灯 1-红灯 2-黄灯 非0表示信号灯有故障 UINT nTurnRightLightMask[3]; //右转灯故障状态, 0-绿灯 1-红灯 2-黄灯 非0表示信号灯有故障 UINT nUTurnLightMask[3]; //掉头灯故障状态, 0-绿灯 1-红灯 2-黄灯 非0表示信号灯有故障 char szReserved[512]; // 保留字节,留待扩展 } NET_TRAFFIC_LIGHT_FAULT_STATES; ///@brief 交通灯故障类型 typedef struct tagNET_TRAFFIC_LIGHT_FAULT_TYPE { UINT nStraightLightFaultType[4]; //直行灯故障类型, 0-正常 1-不亮 2-长亮 3-闪亮 非0表示信号灯有故障 UINT nTurnLeftLightFaultType[4]; //直行灯故障类型, 0-正常 1-不亮 2-长亮 3-闪亮 非0表示信号灯有故障 UINT nTurnRightLightFaultType[4];//直行灯故障类型, 0-正常 1-不亮 2-长亮 3-闪亮 非0表示信号灯有故障 UINT nUTurnLightFaultType[4]; //直行灯故障类型, 0-正常 1-不亮 2-长亮 3-闪亮 非0表示信号灯有故障 char szReserved[512]; // 保留字节,留待扩展 } NET_TRAFFIC_LIGHT_FAULT_TYPE; ///@brief 事件类型EVENT_IVS_TRAFFIC_LIGHT_FAULT (交通灯故障报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_LIGHT_FAULT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID NET_TRAFFIC_LIGHT_FAULT_STATES stuFaultStates; // 交通灯故障状态 NET_TRAFFIC_LIGHT_FAULT_TYPE stuFaultType; // 交通灯故障类型 EM_FAULT_DETECT_SOURCE_TYPE emDetectSource; // 交通灯故障检测源 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_TRAFFIC_LIGHT_FAULT_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_PARKING_BACKING (出入口倒车驶离事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKING_BACKING_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nGroupID; // nGroupID事件组ID,同一物体抓拍过程内nGroupID相同 int nCountInGroup; // nCountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 EM_TRIGGER_TYPE emTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 int nMark; // 底层产生的触发抓拍帧标记 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED (违法载人事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nGroupID; // nGroupID事件组ID,同一物体抓拍过程内nGroupID相同 int nCountInGroup; // nCountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nHumanNum; // 载人数 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 int nSpeed; // 车速,单位km/h char szReserved[1020]; // 保留字节,留待扩展 } DEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO; ///@brief 消费记录类型 typedef enum tagEM_CONSUMPTION_EVENT_TYPE { EM_CONSUMPTION_EVENT_TYPE_UNKNOWN = -1, // 未知 EM_CONSUMPTION_EVENT_TYPE_QUOTA, // 定额消费事件 EM_CONSUMPTION_EVENT_TYPE_NONQUOTA, // 非定额消费事件 EM_CONSUMPTION_EVENT_TYPE_DEPOSIT, // 充值事件 EM_CONSUMPTION_EVENT_TYPE_RESTORE, // 末次返还事件 } EM_CONSUMPTION_EVENT_TYPE; ///@brief 消费事件 typedef struct tagDEV_EVENT_CONSUMPTION_EVENT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 UTC,否则用 stuTime 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) UINT nRecNo; // 记录集编号,只读 UINT nBlockId; // 上报事件数据序列号从1开始自增 NET_ACCESS_CTL_EVENT_TYPE emType; // 事件类型 EM_CONSUMPTION_STATUS emStatus; // 消费结果 NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 EM_USER_TYPE emUserType; // 用户类型 NET_ACCESSCTLCARD_STATE emCardStatus; // 卡状态 NET_ACCESS_DOOROPEN_METHOD emMethod; // 开门方式 char szCardNo[16]; // 卡号 char szReaderID[32]; // 读卡器ID char szUserID[12]; // 用户ID UINT nErrorCode; // 消费失败的原因,配合 emStatus 使用 // 0x00 没有错误 // 0x10 未授权 // 0x11 卡挂失或注销 // 0x12 没有该门权限 // 0x13 开门模式错误 // 0x14 有效期错误 // 0x15 防反潜模式 // 0x16 胁迫报警未打开 // 0x17 门常闭状态 // 0x18 AB互锁状态 // 0x19 巡逻卡 // 0x1A 设备处于闯入报警状态 // 0x20 时间段错误 // 0x21 假期内开门时间段错误 // 0x30 需要先验证有首卡权限的卡片 // 0x40 卡片正确,输入密码错误 // 0x41 卡片正确,输入密码超时 // 0x42 卡片正确,输入信息错误 // 0x43 卡片正确,输入信息超时 // 0x44 信息正确,输入密码错误 // 0x45 信息正确,输入密码超时 // 0x50 组合开门顺序错误 // 0x51 组合开门需要继续验证 // 0x60 验证通过,控制台未授权 // 0x61 卡片正确,信息错误 // 0x62 卡片正确,信息超时 // 0x63 重复进入 // 0x64 未授权,需要后端平台识别 // 0x65 温度异常 // 0x66 未戴口罩 // 0x67 健康码获取失败 // 0x68 黄码禁止通行 // 0x69 红码禁止通行 // 0x6a 健康码无效 // 0x6b 绿码验证通过 // 0x70 获取健康码信息 // 0x71 校验证件信息(平台下发对应证件号的校验结果) char szSnapURL[128]; // 抓拍照片存储地址 UINT nSimilarity; // 目标识别相似度,开门方式为目标开门时有效 EM_CONSUMPTION_EVENT_TYPE emEventType; // 记录类型 UINT nConsumptionAmount; // 消费金额。单位(分)101 = 1.01 元 UINT nRechargeAmount; // 充值金额。单位(分)101 = 1.01 元 char szTransactionSerialNumber[128]; // 交易流水号 int nImageCount; // 图片的数量 DEV_ACCESS_CTL_IMAGE_INFO stuImageInfos[6]; // 图片信息 char szLastTransactionSerialNumber[128]; // 上一次交易流水号 char szReserved[896]; // 保留字节,留待扩展 }DEV_EVENT_CONSUMPTION_EVENT_INFO; ///@brief 事件类型EVENT_IVS_TOUCH_ELECTROSTATIC_BALL (触摸静电球事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szReserved1[4]; // 字节对齐,非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 1:开始 2:停止 DH_MSG_OBJECT stuObject; // 检测到的物体 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_POINT stuDetectRegion[20]; // 静电球区域坐标框 int nDetectRegionNum; // 静电球区域坐标框个数 NET_POINT stuUpstairsLine[20]; // 上拌线坐标 int nUpstairsLineNum; // 上拌线坐标个数 NET_POINT stuDownstairsLine[20]; // 下拌线坐标 int nDownstairsLineNum; // 下拌线坐标个数 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO; ///@brief 事件类型EVENT_IVS_OXYGEN_CYLINDER_DETECTION (氧气瓶检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_OXYGEN_CYLINDER_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 char szReserved1[4]; // 字节对齐,非保留字节 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nAction; // 1:开始 2:停止 DH_MSG_OBJECT stuObject; // 检测到的物体 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_OXYGEN_CYLINDER_DETECTION_INFO; ///@brief 检测到的物体信息 typedef struct tagNET_GENERAL_ATTITUDE_DETECTION_OBJECT { int nObjectID; // 目标ID char szObjectType[16]; // 物体类型 char szAttitudeType[16]; // 动作类型 DH_RECT BoundingBox; // 包围盒 char szSerialUUID[22]; // 智能物体全局唯一物体标识 char szReserved[1022]; // 保留字段 } NET_GENERAL_ATTITUDE_DETECTION_OBJECT; ///@brief 全景广角图 typedef struct tagNET_SCENE_IMAGE_INFO { UINT nOffSet; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位字节 char byReserved[128]; // 预留字节 } NET_SCENE_IMAGE_INFO; ///@brief 事件类型EVENT_IVS_GENERAL_ATTITUDE_DETECTION (姿态检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID NET_GENERAL_ATTITUDE_DETECTION_OBJECT stuObject; // 检测到的物体 NET_SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_CHANGE_LANE_CONTINUES (机动车连续变道违法事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /*以上为公共字段*/ int nGroupID; // nGroupID事件组ID,同一物体抓拍过程内nGroupID相同 int nCountInGroup; // nCountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 UINT nEventType; // 事件类型掩码, bit0表示报警事件, bit1表示违章事件. 若bit0和bit1都置位则既是报警事件又是违章事件, 无该字段默认该事件是报警事件 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 EM_TRIGGER_TYPE emTriggerType; // TriggerType:触发类型,0车检器,1雷达,2视频 int nMark; // 底层产生的触发抓拍帧标记 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO; ///@brief 事件类型EVENT_IVS_SPRAY_DETECT (喷洒异常检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SPRAY_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szClass[16]; // 智能事件所属大类 UINT nRuleId; // 智能事件规则编号 int UTCMS; // UTC时间对应的毫秒数 int nGroupID; // nGroupID事件组ID,同一物体抓拍过程内nGroupID相同 int nCountInGroup; // nCountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 UINT nEventType; // 检测事件类型, 0: 车厢无煤有抑尘液喷洒, 1: 车厢无煤无抑尘液喷洒, 2: 车厢有煤无抑尘液喷洒 UINT nFluidType; // 喷洒液体类型, 0:抑尘液 1:防冻液 UINT nPresetID; // 事件触发的预置点号 char szReserved[1020]; // 保留字节,留待扩展 } DEV_EVENT_SPRAY_DETECT_INFO; ///@brief 事件类型EVENT_IVS_SNAP_TASK (非接入式任务抓图事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SNAP_TASK_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szCameraID[64]; // 相机ID UINT nTaskID; // 任务ID char szReserved[1020]; // 保留字节,留待扩展 } DEV_EVENT_SNAP_TASK_INFO; ///@brief 事件类型 EVENT_IVS_SILICON_FIRE_DETECTION (刺火检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SILICON_FIRE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObject[128]; // 检测目标的物体信息 UINT nSequence; // 帧序号 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 int nDetectRegionCount; // 检测区个数 DH_POINT stuDetectRegion[20]; // 检测区 char szReserved[1024]; // 预留字节 }DEV_EVENT_SILICON_FIRE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_LADLE_NO_DETECTION (钢包编号识别事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_LADLE_NO_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nObjectCount; // 检测目标物体的个数 UINT nPresetID; // 事件触发的预置点号,从1开始 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DH_MSG_OBJECT_EX2 stuObjects[128]; // 检测目标的物体信息 NET_POINT stuDetectRegion[20]; // 表示配置的规则区域 int nDetectRegionCount; // 检测区个数 char szReserved[1020]; // 预留字节 }DEV_EVENT_LADLE_NO_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_FISHING_DETECTION (钓鱼检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FISHING_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID 协议是uint32 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObjects[100]; // 检测目标的物体信息 int nDetectRegionCount; // 检测区个数 NET_POINT stuDetectRegion[20]; // 表示配置的规则区域 UINT nPresetID; // 事件触发的预置点号,从1开始 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 char szReserved[1020]; // 预留字节 }DEV_EVENT_FISHING_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_BARELAND_DETECTION (裸土检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BARELAND_DETECTION_INFO { char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTC; // 事件发生时间,带时区偏差的UTC时间,单位:秒 double dbPTS; // 相对事件时间戳,单位毫秒 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 UINT nRatio; // 裸土实际占比,取值0~100 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szReserved[980]; // 预留字节 }DEV_EVENT_BARELAND_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_PERSONNEL_COEXISTENCE (人员共存事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_PERSONNEL_COEXISTENCE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szClass[16]; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 int nObjectCount; // 检测目标的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 int nRuleID; // 智能事件规则编号 char szReserved[1020]; // 保留字节,留待扩展 } DEV_EVENT_PERSONNEL_COEXISTENCE_INFO; ///@brief 姿态类型 typedef enum tagNET_EM_ATTITUDE_TYPE { NET_EM_ATTITUDE_TYPE_UNKNOWN, // 未知 NET_EM_ATTITUDE_TYPE_ONE_HAND, // 单手递接 NET_EM_ATTITUDE_TYPE_AKIMBO, // 叉腰 NET_EM_ATTITUDE_TYPE_HAND_SON_HEAD, // 双手抱头 NET_EM_ATTITUDE_TYPE_HAND_SON_CHEST, // 双手抱胸 NET_EM_ATTITUDE_TYPE_HIT_WALL, // 撞墙 NET_EM_ATTITUDE_TYPE_BEND, // 弯腰 NET_EM_ATTITUDE_TYPE_SITTING, // 坐状态 NET_EM_ATTITUDE_TYPE_STANDING, // 站状态 NET_EM_ATTITUDE_TYPE_SIT_DOWN, // 坐下 NET_EM_ATTITUDE_TYPE_STAND_UP, // 起立 NET_EM_ATTITUDE_TYPE_ON_TABLE, // 趴桌子 NET_EM_ATTITUDE_TYPE_LOOK_BACK, // 回头 NET_EM_ATTITUDE_TYPE_DELIVERY, // 传递 NET_EM_ATTITUDE_TYPE_GAZE_AROUND, // 东张西望 NET_EM_ATTITUDE_TYPE_HAND_DOWN_PEEP, // 手放桌下偷看 NET_EM_ATTITUDE_TYPE_PICK_UP, // 捡东西 NET_EM_ATTITUDE_TYPE_HAND_UP, // 举手 NET_EM_ATTITUDE_TYPE_WRITE, // 书写 } NET_EM_ATTITUDE_TYPE; ///@brief 事件类型EVENT_IVS_GENEAL_ATTITUDE (通用姿态行为事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GENEAL_ATTITUDE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szClass[16]; // 智能事件所属大类 int nUTCMS; // 事件时间毫秒数 int nObjectCount; // 检测目标的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_EM_ATTITUDE_TYPE emAttitudeType; // 姿态类型 int nRuleID; // 智能事件规则编号 int nImageInfoNum; // 图片信息个数 NET_IMAGE_INFO_EX3 *pstuImageInfo; // 图片信息数组 char szReserved[1016-POINTERSIZE]; // 保留字节,留待扩展 } DEV_EVENT_GENEAL_ATTITUDE_INFO; ///@brief 事件类型EVENT_IVS_CASH_BOX_STATE (款箱状态事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CASH_BOX_STATE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID char szClass[16]; // 智能事件所属大类 int nRuleID; // 智能事件规则编号 int nUTCMS; // 事件时间毫秒数 int nState; // 款箱开关状态: 1-开, 2-关 int nObjectCount; // 检测目标的物体个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_CASH_BOX_STATE_INFO; ///@brief 事件类型 EVENT_IVS_LEAKAGE_DETECTION (渗漏检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_LEAKAGE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nObjectCount; // 检测目标物体的个数 DH_MSG_OBJECT_EX2 stuObjects[128]; // 检测目标的物体信息 float fRatio; // 渗漏实际占比,单位:%,取值范围[0, 100] SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1024]; // 预留字节 }DEV_EVENT_LEAKAGE_DETECTION_INFO; ///@brief 报警类型 typedef enum tagEM_ALARM_ACCESSORY_STATUS { EM_ALARM_ACCESSORY_STATUS_UNKNOWN, // 未知 EM_ALARM_ACCESSORY_STATUS_DEVSELFCHECK, // 设备自检 EM_ALARM_ACCESSORY_STATUS_EXTINPUTALARM, // 外部输入报警 }EM_ALARM_ACCESSORY_STATUS; ///@brief 事件类型 EVENT_IVS_ALARM_ACCESSORY (报警配件事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ALARM_ACCESSORY_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 EM_ALARM_ACCESSORY_STATUS emStatus; // 报警类型 char szSN[32]; // 配件序列号 char szReserved[1024]; // 预留字节 }DEV_EVENT_ALARM_ACCESSORY_INFO; ///@brief 无线设备类型 typedef enum tagEM_WIRELESS_DEV_LOWPOWER_TYPE { EM_WIRELESS_DEV_LOWPOWER_TYPE_UNKNOWN, // 未知 EM_WIRELESS_DEV_LOWPOWER_TYPE_REMOTE_CONTROL, // 无线遥控器 EM_WIRELESS_DEV_LOWPOWER_TYPE_DEFENCE, // 无线防区 EM_WIRELESS_DEV_LOWPOWER_TYPE_KEYBOARD, // 键盘 EM_WIRELESS_DEV_LOWPOWER_TYPE_SMARTLOCK, // 智能锁 EM_WIRELESS_DEV_LOWPOWER_TYPE_ALARMBELL, // 警号、警笛、警铃 EM_WIRELESS_DEV_LOWPOWER_TYPE_EXTERNAL_SENSOR, // 外部传感器,比如温度、温度传感器 }EM_WIRELESS_DEV_LOWPOWER_TYPE; ///@brief 异常状态 typedef enum tagEM_WIRELESS_DEV_LOWPOWER_STATUS { EM_WIRELESS_DEV_LOWPOWER_STATUS_UNKNOWN, // 未知 EM_WIRELESS_DEV_LOWPOWER_STATUS_BAT_ABNORMAL, // 电池异常(电池不在位) }EM_WIRELESS_DEV_LOWPOWER_STATUS; ///@brief 事件类型 EVENT_IVS_WIRELESS_DEV_LOWPOWER (无线设备低电量事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WIRELESS_DEV_LOWPOWER_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 BOOL bLowPower; // 是否为低电量 true:低电量, false:电量正常 EM_WIRELESS_DEV_LOWPOWER_TYPE emType; // 无线设备类型 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 float fPercent; // 电量百分比 char szSN[32]; // 无线配件序列号 EM_WIRELESS_DEV_LOWPOWER_STATUS emStatus; // 异常状态 char szReserved[1024]; // 预留字节 }DEV_EVENT_WIRELESS_DEV_LOWPOWER_INFO; ///@brief 事件类型 EVENT_IVS_SENSOR_ABNORMAL (探测器异常报警)对应的数据块描述信息 typedef struct tagDEV_EVENT_SENSOR_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szSN[32]; // 无线配件序列号 EM_SENSOR_ABNORMAL_STATUS emStatus; // 异常状态 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 char szReserved[1024]; // 预留字节 }DEV_EVENT_SENSOR_ABNORMAL_INFO; ///@brief 总线类型 typedef enum tagEM_MODULE_LOST_TYPE { EM_MODULE_LOST_TYPE_UNKNOWN, // 未知 EM_MODULE_LOST_TYPE_M_BUS, // M-BUS EM_MODULE_LOST_TYPE_RS_485, // RS-485 EM_MODULE_LOST_TYPE_CAN, // CAN EM_MODULE_LOST_TYPE_NET, // NET }EM_MODULE_LOST_TYPE; ///@brief 设备类型 typedef enum tagEM_MODULE_LOST_DEV_TYPE { EM_MODULE_LOST_DEV_TYPE_UNKNOWN, // 未知 EM_MODULE_LOST_DEV_TYPE_SMARTLOCK, // 智能锁 EM_MODULE_LOST_DEV_TYPE_DEFENCE, // 开关量防区 EM_MODULE_LOST_DEV_TYPE_KEYBOARD, // 键盘 EM_MODULE_LOST_DEV_TYPE_REMOTE_CONTROL, // 远程控制 EM_MODULE_LOST_DEV_TYPE_MAGNETOMER, // 磁力计 EM_MODULE_LOST_DEV_TYPE_ALARMBELL, // 警号,警铃 EM_MODULE_LOST_DEV_TYPE_ACCESS_SUBCONTROLLER, // 分控器 EM_MODULE_LOST_DEV_TYPE_GPS, // gps模块 EM_MODULE_LOST_DEV_TYPE_WIFI, // wifi模块 EM_MODULE_LOST_DEV_TYPE_MOBILE_DEVICE, // 3G/4G模块 EM_MODULE_LOST_DEV_TYPE_LIFT_CONTROLLER, // 梯控设备 EM_MODULE_LOST_DEV_TYPE_PRINTER, // 打印机 }EM_MODULE_LOST_DEV_TYPE; ///@brief 事件类型 EVENT_IVS_MODULE_LOST (模块断线报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_MODULE_LOST_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nACK; // 确认ID EM_MODULE_LOST_TYPE emType; // 总线类型 EM_MODULE_LOST_DEV_TYPE emDevType; // 设备类型 NET_SENSE_METHOD emSenseMethod; // SenseMethod, 感应方式,参见具体枚举定义 int arrAddr[32]; // 地址 int nAddrNum; // 地址数量 BOOL bOnline; // 在线情况, true 在线;false 不在线 char szSN[32]; // 无线配件序列号 char szReserved[1024]; // 预留字节 }DEV_EVENT_MODULE_LOST_INFO; ///@brief 触发模式 typedef enum tagEM_CROWD_LEVEL_DETECTION_TRIGGERMODE { EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_UNKNOWN, // 未知 EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_ADAPTIVE, // 自适应模式 EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_CUSTOM, // 自定义模式 }EM_CROWD_LEVEL_DETECTION_TRIGGERMODE; ///@brief 事件类型 EVENT_IVS_CROWD_LEVEL_DETECTION (拥挤程度检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROWD_LEVEL_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID NET_POINT stuDetectRegion[20]; // 规则区域 int nDetectRegionNum; // 规则区域个数 UINT nPresetID; // 事件触发的预置点号,从1开始 EM_CROWD_LEVEL_DETECTION_TRIGGERMODE emTriggerMode; // 触发模式 UINT nCrowdDetectNum; // 实际触发报警的人数 UINT nCrowdRankResult; // 检测到的拥挤程度等级 char szReserved1[4]; // 字节对齐 char szCrowdGroupName[128]; // 检测到的拥挤程度等级名称 NET_IMAGE_INFO_EX3 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szReserved[1020-POINTERSIZE]; // 预留字节 }DEV_EVENT_CROWD_LEVEL_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_REGION_DEFENSE_DETECTION (区域看防事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_REGION_DEFENSE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 char szReserved1[4]; // 字节对齐 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID char szReserved[1024]; // 预留字节 }DEV_EVENT_REGION_DEFENSE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_DUSTBIN_DETECTION (垃圾桶检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DUSTBIN_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nObjectNum; // 检测到的物体信息个数 DH_MSG_OBJECT_EX2 stuObjects[64]; // 表示检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 int nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 UINT nViolationDuration; // 违法持续时长,单位:秒 char szSourceID[32]; // 事件关联ID 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1024 - POINTERSIZE]; // 预留字节 }DEV_EVENT_DUSTBIN_DETECTION_INFO; ///@brief 路面状况等级 typedef enum tagEM_ROAD_LEVEL { EM_ROAD_UNKNOWN_LEVEL = -1, // 未知 EM_ROAD_ZERO_LEVEL, // 0: 纵向裂纹 EM_ROAD_ONE_LEVEL, // 1: 横向裂纹 EM_ROAD_TWO_LEVEL, // 2: 鳄鱼裂纹 EM_ROAD_THREE_LEVEL, // 3: 槽纹 EM_ROAD_FOUR_LEVEL, // 4: 车辙纹 EM_ROAD_FIVE_LEVEL, // 5: 纵向修复纹 EM_ROAD_SIX_LEVEL, // 6: 横向修复纹 }EM_ROAD_LEVEL; ///@brief 事件类型 EVENT_IVS_ROAD_CONDITIONS_DETECTION (路面检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 EM_ROAD_LEVEL emRoadLevel; // 路面状况等级 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 float fDamageArea; // 路面病害面积,单位:平方米 float fDamageLength; // 路面病害长度,单位:米 char szReserved[760]; // 预留字节 }DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO; ///@brief 检测目标 typedef enum tagEM_EVENT_DETECT_OBJECT { EM_EVENT_DETECT_OBJECT_UNKNOWN, // 未知 EM_EVENT_DETECT_OBJECT_PERSON, // "Person":人 EM_EVENT_DETECT_OBJECT_ANIMAL, // "Animal":动物 }EM_EVENT_DETECT_OBJECT; ///@brief 被接近目标类型 typedef enum tagEM_NEAR_DETECT_OBJECT_TYPE { EM_NEAR_DETECT_OBJECT_TYPE_UNKNOWN, // 未知 EM_NEAR_DETECT_OBJECT_TYPE_MOVINGFORKLIFT, // "MovingForklift":移动叉车 EM_NEAR_DETECT_OBJECT_TYPE_SILICONPACKAGE, // "SiliconPackage":硅包 EM_NEAR_DETECT_OBJECT_TYPE_MOVINGSILICONPACKAGE, // "MovingSiliconPackage":移动的硅包 EM_NEAR_DETECT_OBJECT_TYPE_POURINGSILICONPACKAGE, // "PouringSiliconPackage":倒硅水的硅包 }EM_NEAR_DETECT_OBJECT_TYPE; ///@brief 事件类型 EVENT_IVS_NEAR_OBJECT_DETECT (近物体检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_NEAR_OBJECT_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 EM_EVENT_DETECT_OBJECT emDetectObject; // 检测目标 EM_NEAR_DETECT_OBJECT_TYPE emNearObjectType; // 被接近目标类型 UINT nSequence; // 帧序号 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DH_MSG_OBJECT_EX2* pstObjectInfo; //物体信息数据 UINT nObjectNum; //物体信息数 char szReserved[1020 - POINTERSIZE]; // 预留字节 }DEV_EVENT_NEAR_OBJECT_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_OBJECT_NUM_DETECTION (区域内计数事件)对应的数据块描述信息( 注意该事件不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) typedef struct tagDEV_EVENT_OBJECT_NUM_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nAreaID; // 区域ID, 没有该字段或者为0,为单区域 UINT nPresetID; // 事件触发的预置点号,从1开始 int nNumber; // 表示区域内物体的个数 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图(仅nIndexInData, nOffSet, nLength字段有效) char szReserved[1024]; // 预留字节 }DEV_EVENT_OBJECT_NUM_DETECTION_INFO; ///@brief 属性组合 typedef struct tagNET_STAT_ATTRMAP { int nAttrTypeID; // 属性索引 int nValueID; // 属性值索引 char szAttrType[32]; // 属性名称 char szValue[32]; // 属性值 char szReserved[128]; // 预留字节 }NET_STAT_ATTRMAP; ///@brief 属性计数信息 typedef struct tagNET_STAT_ATTRIBUTE { int nNumber; // 目标及属性组合的计数 int nAttrMapNumber; // 属性组合个数 NET_STAT_ATTRMAP stuAttrMap[20]; // 属性组合 char szReserved[128]; // 预留字节 }NET_STAT_ATTRIBUTE; ///@brief 详细计数信息 typedef struct tagNET_STAT_DETAIL { char szType[32]; // 目标类型名称 int nTypeID; // 目标类型索引 int nNumber; // 目标类型总数 NET_STAT_ATTRIBUTE stuAttribute[1024]; // 属性计数信息 int nAttributeNumber; // 属性计数信息个数 char szReserved[124]; // 预留字节 }NET_STAT_DETAIL; ///@brief 统计方向查询条件 typedef enum tagEM_STAT_DIRECTION { EM_STAT_DIRECTION_UNKNOWN, // 未知 EM_STAT_DIRECTION_LEFTTORIGHT, // 左到右 EM_STAT_DIRECTION_RIGHTTOLEFT, // 右到左 EM_STAT_DIRECTION_BOTH, // 全部 }EM_STAT_DIRECTION; ///@brief 事件类型 EVENT_IVS_CROSSLINE_STAT (绊线计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) typedef struct tagNET_DEV_EVENT_CROSSLINE_STAT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nUTCMS; // 事件时间毫秒数 UINT nRuleID; // 智能事件规则编号 UINT nAreaID; // 区域ID EM_STAT_DIRECTION emDirection; // 绊线方向 int nNumber; // 目标绊线总数 int nStatDetailNum; // 详细计数信息个数 NET_STAT_DETAIL stuStatDetail[16]; // 详细计数信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_CROSSLINE_STAT_INFO; ///@brief 事件类型 EVENT_IVS_REGIONNUM_STAT (域内计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) typedef struct tagNET_DEV_EVENT_REGIONNUM_STAT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) UINT nUTCMS; // 事件时间毫秒数 UINT nRuleID; // 智能事件规则编号 UINT nAreaID; // 区域ID EM_STAT_DIRECTION emDirection; // 绊线方向 int nNumber; // 目标绊线总数 int nStatDetailNum; // 详细计数信息个数 NET_STAT_DETAIL stuStatDetail[16]; // 详细计数信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_REGIONNUM_STAT_INFO; ///@brief 目标属性数组 typedef struct tagNET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO { char szAttrTypeName[128]; // 属性类型名称 char szAttrValueName[128]; // 属性值名称 }NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO; ///@brief 检测到的目标属性信息列表 typedef struct tagNET_OPEN_INTELLI_OBJECT_INFO { int nObjectId; // 目标id NET_RECT stuBoundingBox; // 包围盒 矩形类型,8192坐标系 char szObjectTypeName[128]; // 目标类型名称 int nObjectAttributeNums; // 目标属性数组中的有效个数 NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO stuObjectAttributes[128]; // 目标属性数组 }NET_OPEN_INTELLI_OBJECT_INFO; ///@brief 用户数据 typedef struct tagNET_OPEN_INTELLI_USER_DATA_INFO { int nAlarmId; // 自定义报警id char szReserved[512]; // 保留字节 }NET_OPEN_INTELLI_USER_DATA_INFO; ///@brief 事件类型 EVENT_IVS_OPEN_INTELLI (开放智能事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_OPEN_INTELLI_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szOpenCode[32]; // 所属开放算法的Id char szOpenName[128]; // 所属开放算法的名称 char szRuleType[32]; // 所属开放算法的规则类型, 仅支持: 拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION)、区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION)、滞留检测StayDetection(EVENT_IVS_STAYDETECTION)、数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION)、通用姿态行为事件 GenealAttitude(EVENT_IVS_GENEAL_ATTITUDE) void* pstuOpenData; // 与开放算法的规则类型支持的带图事件类型对应的结构体对应(只解析Event Data中的字段) // 拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION) - DEV_EVENT_CROSSLINE_INFO // 区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION) - DEV_EVENT_CROSSREGION_INFO // 滞留检测StayDetection(EVENT_IVS_STAYDETECTION) - DEV_EVENT_STAY_INFO // 数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION) - DEV_EVENT_OBJECT_NUM_DETECTION_INFO // 绊线计数事件 CrossLineStat(EVENT_IVS_CROSSLINE_STAT) - NET_DEV_EVENT_CROSSLINE_STAT_INFO // 域内计数事件 RegionNumStat(EVENT_IVS_REGIONNUM_STAT) - NET_DEV_EVENT_REGIONNUM_STAT_INFO // 全物体类型检测事件 AnythingDetect(EVENT_IVS_ANYTHING_DETECT) - DEV_EVENT_ANYTHING_DETECT_INFO // 通用姿态行为事件 GenealAttitude(EVENT_IVS_GENEAL_ATTITUDE) - DEV_EVENT_GENEAL_ATTITUDE_INFO int nObjectNums; // 检测到的目标属性信息列表的个数 NET_OPEN_INTELLI_OBJECT_INFO stuObjects[100]; // 检测到的目标属性信息列表 NET_OPEN_INTELLI_USER_DATA_INFO stuUserData; // 用户数据 char szReserved[1024]; // 保留字节 }DEV_EVENT_OPEN_INTELLI_INFO; ///@brief 检测的目标类型 typedef enum tagEM_DETECTED_OBJECT_TYPE { EM_DETECTED_OBJECT_TYPE_UNKNOWN, // 未知 EM_DETECTED_OBJECT_TYPE_HANGING_PACKAGE, // 吊物(硅包、钢包、铁包) }EM_DETECTED_OBJECT_TYPE; ///@brief 事件类型 EVENT_IVS_CRANE_LOAD_STAY_DETECTION (天车吊物滞留事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CRANE_LOAD_STAY_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char byReserved1[4]; // 仅用于字节对齐 DH_MSG_OBJECT_EX2 stuObject; // Object表示检测到的物体信息 char byReserved2[4]; // 仅用于字节对齐 int nObjectsNum; // 检测到的物体信息个数, 上限为32 DH_MSG_OBJECT_EX2 stuObjects[32]; // Objects表示多个物体同时触发滞留事件列表,填写检测到的所有物体 上限32个数组元素 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 EM_DETECTED_OBJECT_TYPE emDetectObject; // 检测的目标类型 char szType[16]; // 报警规则类型 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图,仅IndexInData字段和Length字段有效 char szReserved[1024]; // 预留字节 }DEV_EVENT_CRANE_LOAD_STAY_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_DRIVER_NO_BELT (未系安全带报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_DRIVER_NO_BELT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char szDriverID[32]; // 司机ID NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 char szReserved[768]; // 预留字节 }DEV_EVENT_TRAFFIC_DRIVER_NO_BELT_INFO; ///@brief 事件类型 EVENT_IVS_RIDING_MOTOR_CYCLE (摩托车骑跨检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_RIDING_MOTOR_CYCLE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nObjectNum; // 检测到的物体信息个数 DH_MSG_OBJECT_EX2 stuObjects[64]; // 表示检测到的物体信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图,仅IndexInData字段有效 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1020 - POINTERSIZE]; // 预留字节 }DEV_EVENT_RIDING_MOTOR_CYCLE_INFO; ///@brief 检测异物类型 typedef enum tagEM_ARTICLE_TYPE { EM_ARTICLE_TYPE_UNKNOWN, // 未知 EM_ARTICLE_TYPE_ANCHORROD, // 锚杆 }EM_ARTICLE_TYPE; ///@brief 事件类型 EVENT_IVS_CONVEYOR_ARTICLE_TYPE (传送带异物检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CONVEYOR_ARTICLE_TYPE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 EM_ARTICLE_TYPE emArticleType; // 检测异物类型 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DH_MSG_OBJECT_EX2* pstObjectInfo; //物体信息数据 UINT nObjectNum; //物体信息数 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC ,否则用 UTC 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) UINT nArticleEventCount; // 异物事件累计计数 char szReserved[976 - POINTERSIZE]; // 预留字节 }DEV_EVENT_CONVEYOR_ARTICLE_TYPE_INFO; ///@brief 事件类型 EVENT_IVS_BLIND_ALARM (盲区报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_BLIND_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 char szVideoPath[256]; // 违章关联视频FTP上传路径 char szReserved[1024]; // 保留字节 }DEV_EVENT_BLIND_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SPEED_DROP_SHARPLY (车辆速度骤减)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 UINT nUTCMS; // 事件时间毫秒数 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID double dbPTS; // 相对事件时间戳,(单位是毫秒) int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车辆信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 int nLane; // 车道号 int nSequence; // 抓包序号 EVENT_COMM_INFO stCommInfo; // 公共信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 char szReserved[1024]; // 保留字节 }DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO; ///@brief 事件类型 EVENT_IVS_GESTURE_DETECTION (手势检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GESTURE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID NET_GESTURE_INFO stuGestureInfo; // 手势信息 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 char szReserved[1024]; // 预留字节 }DEV_EVENT_GESTURE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_HEAD_LIFT_DETECTION (抬头检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_HEAD_LIFT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 UINT nFaceCount; // 抬头人数 UINT nHumanCount; // 检测到的总人数 char szReserved[1024]; // 保留字节 }DEV_EVENT_HEAD_LIFT_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_DRAINING_DETECTION (排水检测识别事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DRAINING_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 int nObjectNum; // 检测到的物体信息个数 DH_MSG_OBJECT_EX2 stuObjects[100]; // 检测目标的物体信息 int nPresetID; // 事件触发的预置点号,从1开始 char szReserved[1024]; // 预留字节 }DEV_EVENT_DRAINING_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_CROSSING_SPEEDY (斑马线不减速事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_CROSSING_SPEEDY_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_CROSSING_SPEEDY_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_LARGECAR_NO_STOP (大车右转不停车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_LARGECAR_NO_STOP_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_GPS_STATUS_INFO stuGPSStatus; // GPS状态 char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_LARGECAR_NO_STOP_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_OVERTAKE_ONRIGHT (右侧超车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 char szReserved1[4]; // 字节对齐 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED (大车占道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 char szReserved1[4]; // 字节对齐 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SMALL_DISPLACEMENT (车辆缓行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_SMALL_DISPLACEMENT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS位置信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_SMALL_DISPLACEMENT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_OCCUPYING_THEPATH (占道事件)对应的数据块描述信息 typedef struct tagNET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSpeed; // 车速,单位km/h char szReserved[1020]; // 预留字节 }NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO; ///@brief 事件类型 EVENT_IVS_SILICON_FIREPUTTER_DETECTION (刺火推杆检测事件)对应的数据块描述信息 typedef struct tagNET_EVENT_SILICON_FIREPUTTER_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号 UINT nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON SCENE_IMAGE_INFO_EX stuSceneImage; // 全景大图信息 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 int nObjectNum; // 物体个数 int nDetectRegionNum; // 规则区域个数 DH_POINT stuDetectRegion[20]; // 规则检测区域 char szReserved[1024]; // 预留字节 }NET_EVENT_SILICON_FIREPUTTER_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_GREEN_BELT (绿化带报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_GREEN_BELT_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRatio; // 区域实际占比 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1016 - POINTERSIZE]; // 保留字节 }DEV_EVENT_GREEN_BELT_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_ROAD_DAMAGE (道路损坏报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_ROAD_DAMAGE_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1020 - POINTERSIZE]; // 保留字节 }DEV_EVENT_ROAD_DAMAGE_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SERPENTINE_CHANGE_LANE (蛇形变道事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作 0:脉冲 char szName[128]; // 事件名称 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nEventType; // 事件类型掩码,bit0表示报警事件,bit1表示违章事件。若bit0和bit1都置位则既是报警事件又是违章事件,默认bit0置位,报警事件 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLane; // 对应车道号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DH_MSG_OBJECT stuObject; // 车牌信息 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_GPS_INFO stuGPSInfo; // GPS位置信息 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON char szReserved[1024]; // 预留字节 }DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO; ///@brief 事件类型 EVENT_IVS_PERSON_TRANS_DETECTION (人员传输检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_IVS_PERSON_TRANS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nViolationNum; // 违规物品类型个数 char szViolation[10][32]; // 设备检测到人员携带的违规物品类型 当前违规物品类型如下:"Ladder": 梯子,"Sack":袋子,"Bag":包,"Spade":铁锹 ,"Box":端子箱 char szReserved[1024]; // 保留字节 }DEV_EVENT_IVS_PERSON_TRANS_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_ALARM_METHANE_ALARM (甲烷报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_METHANE_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 0:脉冲 1:开始 2:停止 NET_TIME_EX stuTime; // 事件发生的时间,带时区偏差 UINT nConcentration; // 报警时的甲烷浓度,单位ppm.m UINT nConcentrationThreshold;// 报警阈值,超过该值报警,单位ppm.m char szReserved[1020]; // 保留字节 }NET_DEV_EVENT_METHANE_ALARM_INFO; ///@brief 图片信息 typedef struct tagNET_SCRAPSTEEL_DETECT_IMAGE_INFO { UINT nIndexInData; // 在上传图片数据中的图片序号 int nWidth; // 图片宽度 int nHeight; // 图片高度 char szImageID[42]; // 图片ID, 有效数据41位 char szReserved[256]; // 保留字节 }NET_SCRAPSTEEL_DETECT_IMAGE_INFO; ///@brief 废钢厚度,杂质及危险品统计量 typedef struct tagNET_SCRAPSTEEL_STATISTICS_INFO { int nType; // 目标粗类别: 0-未知, 1-废钢厚度类型, 2-废钢杂质类型, 3-废钢危险品类型, 4-废钢料型类型 int nSubType; // 目标细类别,对应粗类别的类型, 具体描述如下: /**************************************** 目标细类别 *******************************************/ /* *废钢厚度细分类型枚举: 0- 未知, 1-厚度≥1mm, 2-厚度≥2mm, 3-厚度≥3mm ... 20-厚度≥20mm, 21-压块 *废钢杂质细分类型枚举: 0x0000-未知, 0x1000-铁锈, 0x2000-非金属杂质:橡胶、包芯线、炉渣、矿渣、铁渣、陶瓷、泥沙、水泥、石块、木料、耐材、塑料、棉布、纱线、纤维、水、冰等, 0x3000-一类金属杂质: 细铁丝、彩钢板、钢丝绳、钢绞线、电焊丝等, 0x4000-二类金属杂质: 含油、含漆、镀锌等有害废钢和铸铁 *废钢危险品细分类型枚举: 0x0000-未知,0x1000-A类危险品, 0x1001-A类危险品:易燃易爆物品, 0x1002-A类危险品:有毒有害物品, 0x2000-B类危险品, 0x2001-B类危险品:密闭件, 0x3000-C类危险品, 0x3001-C类危险品:半密闭件, 0x3002-C类危险品:军械用品 *废钢料型细分类型枚举: 0-未知, 1-冲子, 2-冲豆, 3-镐豆, 4-钢筋切头, 5-工业下脚料, 6-钢板料, 7-工槽角切头, 8-圆钢头, 9-轧废, 10-钢坯头, 11-铁道轨, 12-法兰片, 13-弓子片(钢板弹簧)厚度≥10mm, 14-铁道芯, 15-模具钢, 16-辊剪料, 17-机械冲压废料, 18-冷轧板料, 19-热冲马蹄铁, 20-轴承芯, 21-管子压片, 22-角钢, 23-槽钢, 24-圆钢厚度≥4mm*, 25-机器零部件 26-铆焊件 27-大车轮轴, 28-拆船废料, 29-管切头, 30-螺纹钢头, 31-钢板下脚料, 32-花铁, 33-花边料, 34-08A1压块, 35-扁丝压块, 36-钢销压块, 37-钢筋压块, 38-铁板下脚料, 39-螺栓, 40-螺目 41-船板, 42-型钢边角料, 43-无锈铁钉, 44-无锈铁丝, 45-无镀锌薄板, 46-下脚料打包块, 47-花板料, 48-拆车废料, 49-08A1破碎废钢*, 50-特级破碎料, 51-一级破碎料, 52-硅钢片破碎料(厚度小于1mm), 53-渣钢, 54-小跑钢, 55-水洗豆, 56-重废, 57-中废, 58-轻废 */ /**************************************** 目标细类别 *******************************************/ int nNum; // 目标细类别的检测/分割数量 float fNumRatio; // 目标细类别的数量占比,百分比,如0.75表示75% float fAreaRatio; // 目标细类别的面积占比,百分比,如0.75表示75% int nArea; // 目标细类别的面积(像素) char szReserved[256]; // 保留字节 }NET_SCRAPSTEEL_STATISTICS_INFO; ///@brief 废钢单层分析结果 typedef struct tagNET_SCRAPSTEEL_LAYER_DETECT_INFO { int nScrapsteelState; // 状态变量: 0-未知, 1-是, 2-不是 float fConsistConfidence; // 票料一致的概率 float fSimilarity; // 当前合法帧与上一合法帧的相似度 int nScrapsteelType; // 废钢检测料型, 取值参考NET_SCRAPSTEEL_STATISTICS_INFO中的nSubType字段 int nStatisticsInfoNum; // 废钢厚度,杂质及危险品统计量个数, 最大支持32 NET_SCRAPSTEEL_STATISTICS_INFO stuStatisticsInfo[32]; // 废钢厚度,杂质及危险品统计量 char szReserved[256]; // 保留字节 }NET_SCRAPSTEEL_LAYER_DETECT_INFO; ///@brief 检测区穿越类型 typedef enum tagEM_CROSS_DETECT_REGION_TYPE { EM_CROSS_DETECT_REGION_TYPE_UNKNOWN, // 未知 EM_CROSS_DETECT_REGION_TYPE_NULL, // 无 EM_CROSS_DETECT_REGION_TYPE_ENTER, // 进入 EM_CROSS_DETECT_REGION_TYPE_LEAVE, // 离开 EM_CROSS_DETECT_REGION_TYPE_BOTH, // 进入和离开 }EM_CROSS_DETECT_REGION_TYPE; ///@brief 检测区域 typedef struct tagNET_SCRAPSTEEL_DETECT_REGION_INFO { int nPointNum; // 设备返回的顶点坐标的个数, 最大为30 NET_POINT stuPoint[30]; // 多边形顶点坐标, 多边形中每个顶点的坐标归一化到[0,8192)区间 EM_CROSS_DETECT_REGION_TYPE emCrosssType; // 检测区穿越类型 }NET_SCRAPSTEEL_DETECT_REGION_INFO; ///@brief 事件类型 EVENT_IVS_SCRAPSTEEL_DETECT (废钢检测事件) 对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SCRAPSTEEL_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 规则ID, 用于标示哪个规则触发的事件 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间,带时区偏差的UTC时间,单位秒 UINT nEventID; // 事件ID UINT nSequence; // 帧序号 NET_SCRAPSTEEL_DETECT_REGION_INFO stuDetectRegion; // 检测区域 char szPlateNum[32]; // 车牌号码 char szPlateChannelCode[48]; // 车牌识别通道用户数据 NET_SCRAPSTEEL_DETECT_IMAGE_INFO stuOrgImage; // 原始图片信息 NET_SCRAPSTEEL_DETECT_IMAGE_INFO stuRenderImage; // 与原始图片信息(stuOrgImage)对应的渲染图像, 将检测分割结果叠加到原图上 NET_SCRAPSTEEL_LAYER_DETECT_INFO stuScrapsteelResult; // 废钢分析结果 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 设备返回的图片信息个数 char szReserved[1024]; // 预留字节 } NET_DEV_EVENT_SCRAPSTEEL_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_SCRAPSTEEL_DANGER_DETECT (废钢危险品事件) 对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SCRAPSTEEL_DANGER_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 规则ID, 用于标示哪个规则触发的事件 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间,带时区偏差的UTC时间,单位秒 UINT nEventID; // 事件ID NET_SCRAPSTEEL_DETECT_REGION_INFO stuDetectRegion; // 检测区域 NET_SCRAPSTEEL_DETECT_IMAGE_INFO stuOrgImage; // 原始图片信息 NET_SCRAPSTEEL_DETECT_IMAGE_INFO stuRenderImage; // 与原始图片信息(stuOrgImage)对应的渲染图像, 将检测分割结果叠加到原图上 DH_MSG_OBJECT_EX2 stuObjects[128]; // 设备返回的检测危险品目标的物体信息 数组 UINT nObjectsCount; // 设备返回的检测危险品目标的物体信息 个数 int nImageInfoNum; // 设备返回的图片信息个数 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 char szReserved[1024]; // 预留字节 } NET_DEV_EVENT_SCRAPSTEEL_DANGER_DETECT_INFO; ///@brief 事件类型 EVENT_IVS_CHANGE_DETECTION (差异检测事件) 对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_CHANGE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nUTCMS; // 事件时间毫秒数 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号, 从1开始 UINT nEventID; // 事件ID DH_MSG_OBJECT* pstObjects; // 检测到的多个物体信息 int nObjectNum; // 检测到的多个物体个数 char szReserved[1020]; // 保留字节 } NET_DEV_EVENT_CHANGE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_HUMAN_ANIMAL_COEXISTENCE (人和动物检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作, 1:开始 2:停止 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nUTCMS; // 事件时间毫秒数 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 规则ID, 用于标示哪个规则触发的事件 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号, 从1开始 UINT nEventID; // 事件ID int nPresetID; // 事件触发的预置点号,从1开始, 0 表示无效 EM_HUMAN_ANIMAL_ALARM_TYPE emAlarmType; // 事件报警类型 EM_DETECTION_SCENE_TYPE emDetectionSceneType; // 场景类型 char szReserved[1024]; // 保留字节 }DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO; ///@brief 贮柜当前状态 typedef enum tagEM_TANK_STATUS { EM_TANK_STATUS_UNKNOWN, // 未知 EM_TANK_STATUS_DISCHARGING, // 出料 EM_TANK_STATUS_CHARGING, // 进料 EM_TANK_STATUS_IDLE, // 空闲 }EM_TANK_STATUS; ///@brief 事件类型 EVENT_IVS_TANK_CAPACITY_DETECTION (贮柜储量检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_IVS_TANK_CAPACITY_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nObjectID; // 物体ID UINT nRuleID; // 智能事件规则编号 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nCurrentRatio; // 用料当前占比(百分比) EM_TANK_STATUS emTankStatus; // 贮柜当前状态 char szReserved[1020]; // 保留字节 }DEV_EVENT_IVS_TANK_CAPACITY_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TANK_DUMPING_DETECTION (周转箱倒料不干净检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_IVS_TANK_DUMPING_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nObjectID; // 物体ID UINT nRuleID; // 智能事件规则编号 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nCurrentRatio; // 用料当前占比(百分比) char szReserved[1024]; // 保留字节 }DEV_EVENT_IVS_TANK_DUMPING_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TANK_OVERFLOW_DETECTION (尘棒箱满溢检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_IVS_TANK_OVERFLOW_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nObjectID; // 物体ID UINT nRuleID; // 智能事件规则编号 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nCurrentRatio; // 用料当前占比(百分比) char szReserved[1024]; // 保留字节 }DEV_EVENT_IVS_TANK_OVERFLOW_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_DRIVE_HANDSOFF_STEERING_WHEEL (驾驶行为分析手离开方向盘检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DRIVE_HANDSOFF_STEERING_WHEEL_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nHandsOffState; // 双手脱离方向盘状态,1:单手脱离报警,2:双手脱离报警,3:方向盘遮挡报警 UINT nAlarmFlag; // 报警触发标识 0:未报警 1:报警 UINT nReportFlag; // 报警上传标识 0:未报警 1:报警 UINT nPhoneAlarmFlag; // 玩手机报警触发标识 0:未报警 1:报警 UINT nPhoneReportFlag; // 玩手机报警上传标识 0:未报警(不上报平台) 1:报警(上报平台) UINT nNobeltFlag; // 未系安全带报警触发标识 0:未报警 1:报警 UINT nNobeltReportFlag; // 未系安全带报警上传标识 0:未报警(不上报平台) 1:报警(上报平台) UINT nPhoneLocalFlag; // 根据玩手机动作持续时间决定是否报警 0:未报警1:本地报警 SCENE_IMAGE_INFO_EX stuImage; // 小图 SCENE_IMAGE_INFO_EX stuImageOther[16]; // 图片数组 int nImageOtherNum; // 图片数组个数 int nRelatingVideoInfoNum; // 违章关联的多个视频信息个数 NET_RELATING_VIDEO_INFO stuRelatingVideoInfo[16]; // 违章关联的多个视频信息数组,最多支持16个视频 char szVideoPath[256]; // 违章关联视频FTP上传路径 char szReserved[764]; // 预留字节 }DEV_EVENT_DRIVE_HANDSOFF_STEERING_WHEEL_INFO; ///@brief 事件类型 EVENT_IVS_DUSTBIN_RETREAT (垃圾桶撤离检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DUSTBIN_RETREAT_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[64]; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nPresetID; // 事件触发的预置点号,从1开始 char szPresetName[64]; // 事件触发的预置点名称 UINT nViolationDuration; // 违法持续时长,单位:秒 UINT nPictureType; // 图片类型 0-普通 1-合成 2-抠图 char szSourceID[32]; // 事件关联ID UINT nRuleId; // 规则编号 char szRuleName[128]; // 规则名称 int nAlarmType; // -1表示未知类型,报警逻辑类型,0表示为垃圾桶撤离导致的报警,1表示为没有垃圾桶导致的报警 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1012 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_DUSTBIN_RETREAT_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHT_ON_DETECTION (信号灯同亮检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHT_ON_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHT_ON_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHT_FLASHYELLOW_DETECTION (单色灯黄闪检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHT_FLASHYELLOW_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHT_FLASHYELLOW_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHT_NOBRIGHT_DETECTION (信号灯亮度不足检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHT_NOBRIGHT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHT_NOBRIGHT_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHT_BLOCKING_DETECTION (信号灯遮挡检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHT_BLOCKING_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHT_BLOCKING_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHT_ALWAYSON_DETECTION (单色灯常亮检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHT_ALWAYSON_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHT_ALWAYSON_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_LEDSCREEN_NOTLIGHTUP_DETECTION (LED屏不亮检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_LEDSCREEN_NOTLIGHTUP_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_LEDSCREEN_NOTLIGHTUP_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SIGNAL_LIGHTOFF_DETECTION (信号灯不亮检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_SIGNAL_LIGHTOFF_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体信息 NET_POINT stuDetectRegion[20]; // 检测区 int nDetectRegionNum; // 检测区个数 UINT nIndexInData; // 在上传图片数据中的图片序号 char szChannelId[260]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 char szReserved[760]; // 预留字节 }NET_DEV_EVENT_SIGNAL_LIGHTOFF_DETECTION_INFO; ///@brief 图片信息 typedef struct tagNET_COMPARE_DETECTION_IMAGEINFO { int nIndexInData; // 在上传图片数据中的图片序号 UINT nPicType; // 图片类型 0:算法处理后的图 1:抓图图片信息 UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 char szFilePath[256]; // 图片路径 NET_RECT stuBoundingBox; // 包围盒 char szReserved[256]; // 预留字节 }NET_COMPARE_DETECTION_IMAGEINFO; ///@brief 事件类型 EVENT_IVS_PIC_COMPARE_DETECTION (图片比对不上报警)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_PIC_COMPARE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nPresetID; // 预置点ID,如果普通IPC则为0 char szTaskID[64]; // 任务ID 添加时设备端生成 BOOL bIsAlarm; // FALSE 表示不报警 TRUE 表示报警 int nImageInfoNum; // 图片信息个数 NET_COMPARE_DETECTION_IMAGEINFO stuImageInfo[64]; // 图片信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_PIC_COMPARE_DETECTION_INFO; ///@brief 跟踪物体 typedef struct tagNET_TRACK_OBJECT_INFO { int nTrackID; // 跟踪目标ID int nSpeed; // 速度,单位米/秒,扩大100倍 int nLongitude; // 经度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐 int nLatitude; // 纬度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐 char szReserved[256]; // 预留字节 }NET_TRACK_OBJECT_INFO; ///@brief 事件类型 EVENT_IVS_LINK_AGE_RADAR_ALARM (联动事件(作为细节事件、联动球机时发送))对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_LINK_AGE_RADAR_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nAlarmFlag; // 报警标志位,第0bit位表示是否超速,第1bit位表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行 int nUpDownGoing; // 车道/航道方向 -1:未知 0:无效 1:上行 2:下行 (双向判线使用,AlarmFlag非0时,该字段为0 UpDownGoing非0时,AlarmFlag字段为0) NET_TRACK_OBJECT_INFO stuTrackObject; // 跟踪物体 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_LINK_AGE_RADAR_ALARM_INFO; ///@brief 报警标志(保养里程小于2000km时告警标示) typedef enum tagEM_VEHICLE_STATE_ALARM_FLAG { EM_VEHICLE_STATE_ALARM_FLAG_UNKNOWN = -1, // 未知 EM_VEHICLE_STATE_ALARM_FLAG_NO_ALARM, // 无告警 EM_VEHICLE_STATE_ALARM_FLAG_ALARM, // 有告警 EM_VEHICLE_STATE_ALARM_FLAG_NO_MEAN, // 补传时无意义平台不需要处理 }EM_VEHICLE_STATE_ALARM_FLAG; ///@brief 事件类型 EVENT_IVS_VEHICLE_STATE (车辆状态事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_VEHICLE_STATE_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nUTCMS; // 事件时间毫秒数 UINT nACK; // 事件的确认ID char szStatus[32]; // 车辆状态 char szTaskID[64]; // 任务号 UINT nOilTankage; // 油箱容积,单位0.1L UINT nCurrentFuel; // 当前油箱的油量, 单位0.1L UINT nConsumptionOil; // 当前油耗,L/100公里 单位0.1L UINT nTotalUsedFuel; // 总的消耗油量,单位0.1L UINT nTotalDistance; // 总里程,单位0.1 Km int nServiceDistance; // 保养距离,单位0.1Km EM_VEHICLE_STATE_ALARM_FLAG emAlarmFlag; // 报警标志(保养里程小于2000km时告警标示) int nCurrentGear; // 当前档位 -1:未知 0-P 1-R 2-N 3-D 4-S UINT nSpeed; // 当前速度,单位:0.1Km/h EM_COVER_STATUS emCoverStatus; // 箱盖状态 EM_LIFT_STATUS emLiftStatus; // 举升状态 EM_LOAD_STATUS emLoadStatus; // 载重状态 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_VEHICLE_STATE_INFO; ///@brief 事件类型 EVENT_IVS_PASS_WINDOW_DELIVERY(隔窗递物检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_PASS_WINDOW_DELIVERY_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID int nObjectsNum; // 检测目标个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 int nDetectRegionNum; // 检测区个数 int nDeliveryRegionNum; // 递接区个数 NET_POINT stuDetectRegion[20]; // 检测区 NET_POINT stuDeliveryRegion[20]; // 递接区 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图,仅IndexInData字段有效 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_PASS_WINDOW_DELIVERY_INFO; ///@brief 门状态异常报警 typedef struct tagNET_DOOR_STATE_ABNORMAL_INFO { NET_CFG_TIME_SCHEDULE stuDSTimeSection; // 门状态的报警指定时间段,在指定时间段开门或关门为异常,产生报警 UINT nDoorState; // 门的状态,开门状态1表示,关门状态0表示 char szReserved[124]; // 预留字节 }NET_DOOR_STATE_ABNORMAL_INFO; ///@brief 开门状态异常报警 typedef struct tagNET_OPEN_DOOR_ABNORMAL_INFO { NET_CFG_TIME_SCHEDULE stuODTimeSection; // 开门状态的报警指定时间段,在指定时间段开门达到nLongTime,产生报警 UINT nLongTime; // 开门过长时间/min char szReserved[124]; // 预留字节 }NET_OPEN_DOOR_ABNORMAL_INFO; ///@brief 事件类型 EVENT_IVS_DOOR_STATE_DETECTION(开关门检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DOOR_STATE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 char szAlarmType[32]; // 报警类型 门状态异常或开门异常 NET_DOOR_STATE_ABNORMAL_INFO stuDoorStateAbnormal; // 门状态异常报警 NET_OPEN_DOOR_ABNORMAL_INFO stuOpenDoorAbnormal; // 开门状态异常报警 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_DOOR_STATE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_WASTE_MIXED_INVEST(垃圾混投事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_WASTE_MIXED_INVEST_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 int nObjectsNum; // 检测目标个数 int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 DH_MSG_OBJECT stuObjects[64]; // 检测目标的物体信息 char szSourceID[32]; // 事件关联ID 应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 char szRuleName[128]; // 规则名称 UINT nRuleId; // 规则编号 UINT nViolationDuration; // 违法持续时长,单位:秒 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[508 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_WASTE_MIXED_INVEST_INFO; ///@brief 事件类型 EVENT_IVS_UNBROKEN_TRASHBAG(垃圾袋未破袋检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_UNBROKEN_TRASHBAG_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 int nObjectsNum; // 检测目标个数 int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 DH_MSG_OBJECT stuObjects[64]; // 检测目标的物体信息 char szSourceID[32]; // 事件关联ID 应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 char szRuleName[128]; // 规则名称 UINT nRuleId; // 规则编号 UINT nViolationDuration; // 违法持续时长,单位:秒 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[508 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_UNBROKEN_TRASHBAG_INFO; ///@brief 事件类型 EVENT_IVS_PERSON_CARRY_TRASHBAG(人员拎袋报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_PERSON_CARRY_TRASHBAG_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 int nObjectsNum; // 检测目标个数 int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 DH_MSG_OBJECT stuObjects[64]; // 检测目标的物体信息 char szSourceID[32]; // 事件关联ID 应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位 char szRuleName[128]; // 规则名称 UINT nRuleId; // 规则编号 UINT nViolationDuration; // 违法持续时长,单位:秒 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[508 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_PERSON_CARRY_TRASHBAG_INFO; ///@brief 事件类型 EVENT_IVS_ILLEGAL_CARRIAGE(非法运输事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[128]; // 智能事件所属大类 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐,无实际意义 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID DH_MSG_OBJECT_EX2 stuVehicles[10]; // 车辆信息 int nVehiclesNum; // 检测到的车辆信息个数(配合stuVehicles使用) int nObjectsNum; // 检测到的车牌信息个数(配合stuObjects使用) DH_MSG_OBJECT_EX2 stuObjects[10]; // 车牌信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图, 仅nIndexInData字段有效 UINT nBusDoorStatus; // 大客车周身门的状态(比如车门, 行李箱门是否打开), 0-未知, 1-是, 2-不是 UINT nIsTrunk; // 附近是否存在行李箱, 0-没有行李箱, 1-有行李箱 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 int nDetectRegionNum; // 检测区个数 NET_POINT_EX stuDetectRegion[20]; // 检测区 char szReserved[1936 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO; ///@brief 事件类型 EVENT_IVS_ALARM_TORPEDO_DETECT(鱼雷罐报警事件)区域内鱼雷罐测温信息 typedef struct tagNET_TORPRDO_INFO { char szTroprdoNumber[128]; // 鱼雷罐编号 float fTemp; // 鱼雷罐罐体温度 int nTempUnit; // 温度单位(0摄氏度 1华氏度 2开尔文) BOOL bIsOverTemp; // 是否超温 UINT nBoundingBox[4]; // 鱼雷罐包围盒信息 UINT nAlarmState; // 报警状态:0正常报警, 1高温报警, 2预报警 char szReserved[124]; // 预留字节 }NET_TORPRDO_INFO; ///@brief 事件类型 EVENT_IVS_ALARM_TORPEDO_DETECT(鱼雷罐报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TORPEDO_DETECT_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[128]; // 智能事件所属大类 UINT nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 UINT nCountInGroup; // CountInGroup一个事件组内的抓拍张数 char byReserved[4]; // 仅用于字节对齐,无实际意义 UINT nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID DH_MSG_OBJECT_EX2 stuTorpedoObject; // 鱼雷管物体信息 UINT nDetectRegion[20][2]; // 检测区 UINT nPresetID; // 事件触发的预置点号,从1开始,没有该字段,表示预置点未知 int nSequence; // 帧序号 NET_TORPRDO_INFO stuTorpedoInfo; // 区域内鱼雷罐测温信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TORPEDO_DETECT_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_GAS_TANK_DETECTION(煤气罐检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_GAS_TANK_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[128]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 char byReserved[4]; // 仅用于字节对齐,无实际意义 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID DH_MSG_OBJECT_EX2 stuObject; // 检测目标的物体信息 DH_MSG_OBJECT_EX2 stuObjects[100]; // 检测目标的物体信息数组 int nObjectNum; // 检测到的物体个数(配合stuObjects使用) int nDetectRegionNum; // 检测区个数 NET_POINT stuDetectRegion[20]; // 检测区 int nCount; // 规则被触发生次数 EM_EVENT_LEVEL emEventLevel; // 事件级别 UINT nPresetID; // 事件触发的预置点号,从1开始,没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_GAS_TANK_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_UNATTENDED_DETENTION(无人值守检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_UNATTENDED_DETENTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nImageInfoNum; // 图片信息个数 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 char szVideoPath[256]; // 违章关联视频FTP上传路径 char szPlateNumber[32]; // 车牌号 char szSN[32]; // 设备序列号 char szReserved[512]; // 预留字节 }NET_DEV_EVENT_UNATTENDED_DETENTION_INFO; ///@brief 事件类型 EVENT_IVS_DROP_DETECTION(滴漏检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_DROP_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 double dbPTS; // 相对事件时间戳,(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件ID int nObjectsNum; // 检测目标个数 DH_MSG_OBJECT stuObjects[128]; // 检测目标的物体信息 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图,仅 nIndexInData字段有效 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[508 - POINTERSIZE]; // 预留字节 }NET_DEV_EVENT_DROP_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TEMPERATURE_ALARM(温度报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_TEMPERATURE_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szName[128]; // 名称 float fCurrent; // 当前温度 int nRange[2]; // 正常范围 NET_GPS_STATUS_INFO stuGPS; // GPS信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_TEMPERATURE_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_HUMIDITY_ALARM(湿度报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_HUMIDITY_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 float fCurrentValue; // 当前湿度值 float fLimitValue; // 报警阈值 NET_GPS_STATUS_INFO stuGPS; // GPS信息 int nRange[2]; // 检测正常范围 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_HUMIDITY_ALARM_INFO; ///@brief 485传感器报警类型 typedef enum tagEM_POWER_SWITCHER_ALARM_TYPE { EM_POWER_SWITCHER_ALARM_TYPE_UNKNOWN, // 未知 EM_POWER_SWITCHER_ALARM_TYPE_LOWCURRENT, // 电流低于阈值 EM_POWER_SWITCHER_ALARM_TYPE_HIGHCURRENT, // 电流高于阈值 EM_POWER_SWITCHER_ALARM_TYPE_LOWVOLTAGE, // 电压低于阈值 EM_POWER_SWITCHER_ALARM_TYPE_HIGHVOLTAGE, // 电压高于阈值 EM_POWER_SWITCHER_ALARM_TYPE_LOWPOWER, // 功率低于阈值 EM_POWER_SWITCHER_ALARM_TYPE_HIGHPOWER, // 功率高于阈值 }EM_POWER_SWITCHER_ALARM_TYPE; ///@brief 事件类型 EVENT_IVS_POWER_SWITCHER_ALARM(电量报警事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_POWER_SWITCHER_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件类型 0:脉冲,1:开始, 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间 char szName[128]; // 名称 int nPowerVoltage; // 电压值,单位: mV int nPowerCurrent; // 电流值,单位: mA int nPowerValue; // 功率,单位: mW int nSwitchOn; // 开关通断: 0 未知, 1 关, 2 开 int nPowerState; // 数据状态掩码, 从低位到高位分别为: 全为0表示正常, Bit0-欠压, Bit1-过压, Bit2-欠流, Bit3-过流, Bit4-状态无效,此状态不与其他同时置位 EM_ALARM_INTERFACE_TYPE emInterfaceType; // 感应器相位电压 int nAlarmTypeNum; // 485传感器报警个数 EM_POWER_SWITCHER_ALARM_TYPE emAlarmType[8]; // 485传感器报警类型 int nCurrentCT; // 电流比 int nVoltagePT; // 电压比 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_POWER_SWITCHER_ALARM_INFO; ///@brief 检测类型 typedef enum tagEM_OCR_DETECTION_DETECT_TYPE { EM_OCR_DETECTION_DETECT_TYPE_UNKNOWN, // 未知 EM_OCR_DETECTION_DETECT_TYPE_TEMPERATURE, // 温度 EM_OCR_DETECTION_DETECT_TYPE_WEIGH, // 称重 }EM_OCR_DETECTION_DETECT_TYPE; ///@brief 检测事件类型 typedef enum tagEM_OCR_DETECTION_TRIGGER_TYPE { EM_OCR_DETECTION_TRIGGER_TYPE_UNKNOWN = -1, // 未知 EM_OCR_DETECTION_TRIGGER_TYPE_GREATER_THAN_TOPLIMIT, // 大于上限 EM_OCR_DETECTION_TRIGGER_TYPE_LESS_THAN_LOWERLIMIT, // 小于下限 EM_OCR_DETECTION_TRIGGER_TYPE_EQUAL_TO_THRESHOLD, // 等于阈值 }EM_OCR_DETECTION_TRIGGER_TYPE; ///@brief 事件类型 EVENT_IVS_OCR_DETECTION (OCR检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_OCR_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleId; // 智能事件规则编号,用于标示哪个规则触发的事件 int nGroupID; // GroupID事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号,从1开始 NET_TIME_EX stuUTC; // 事件发生时间,带时区偏差的UTC时间,单位:秒 UINT nUTCMS; // 事件时间毫秒数 double dbPTS; // 相对事件时间戳,单位毫秒 UINT nEventID; // 事件编号,用来唯一标志一个事件 UINT nPresetID; // 事件触发的预置点号,从1开始 没有该字段,表示预置点未知 char szContent[256]; // 识别内容 EM_OCR_DETECTION_DETECT_TYPE emDetectType; // 检测类型 EM_OCR_DETECTION_TRIGGER_TYPE emTriggerType; // 检测事件类型 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图,仅IndexInData字段有效 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1020]; // 预留字节 }DEV_EVENT_OCR_DETECTION_INFO; ///@brief 可变车道指示牌的方向类型 typedef enum tagEM_TRAFFIC_LIGHT_DIRECTION { EM_TRAFFIC_LIGHT_DIRECTION_UNKNOWN, // 未知 EM_TRAFFIC_LIGHT_DIRECTION_LEFT, // 左转 EM_TRAFFIC_LIGHT_DIRECTION_STRAIGHT, // 直行 EM_TRAFFIC_LIGHT_DIRECTION_RIGHT, // 右转 EM_TRAFFIC_LIGHT_DIRECTION_UTURN, // 调头 EM_TRAFFIC_LIGHT_DIRECTION_NOENTRY, // 禁止通行 }EM_TRAFFIC_LIGHT_DIRECTION; ///@brief 可变车道指示牌的亮灭状态 typedef enum tagEM_TRAFFIC_LIGHT_STATE { EM_TRAFFIC_LIGHT_STATE_UNKNOWN, // 未知 EM_TRAFFIC_LIGHT_STATE_TURNOFF, // 熄灯 EM_TRAFFIC_LIGHT_STATE_TURNON, // 亮灯 }EM_TRAFFIC_LIGHT_STATE; ///@brief 可变车道指示牌的故障类型 typedef enum tagEM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE { EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE_UNKNOWN, // 未知 EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE_NOTLIGHT, // 不亮 EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE_LIGHT, // 长亮 EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE_SHINING, // 闪亮 EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE_NORMAL, // 正常 }EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE; ///@brief 可变车道指示牌信息 typedef struct tagNET_TRAFFIC_LANE_INDICATOR_INFO { EM_TRAFFIC_LIGHT_DIRECTION emLightDirection; // 可变车道指示牌的方向类型 EM_TRAFFIC_LIGHT_STATE emLightState; // 可变车道指示牌的亮灭状态 EM_TRAFFIC_LANE_INDICATOR_FAULT_TYPE emFaultType; // 可变车道指示牌的故障类型 char szReserved[512]; // 保留字节,留待扩展 } NET_TRAFFIC_LANE_INDICATOR_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_LANE_INDICATOR_FAULT (交通变道指示牌故障事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_LANE_INDICATOR_FAULT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID NET_TRAFFIC_LANE_INDICATOR_INFO stuLaneIndicatorInfo[5]; // 可变车道指示牌信息 int nLaneIndicatorInfoNum; // 可变车道指示牌信息个数 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_TRAFFIC_LANE_INDICATOR_FAULT_INFO; ///@brief 水速信息 typedef struct tagNET_WATER_SPEED_INFO { float fSpeed; // 水流速,单位m/s float fDistance; // 测速点距河岸距离,单位m char szReserved[128]; // 保留字节,留待扩展 } NET_WATER_SPEED_INFO; ///@brief 水流速状态 typedef enum tagEM_WATER_SPEED_STATUS { EM_WATER_SPEED_STATUS_UNKNOWN, // 未知 EM_WATER_SPEED_STATUS_NORMAL, // 水流速正常 EM_WATER_SPEED_STATUS_HIGH, // 水流速高于上限阈值 EM_WATER_SPEED_STATUS_LOW, // 水流速低于下限阈值 }EM_WATER_SPEED_STATUS; ///@brief 事件的数据类型 typedef enum tagEM_EVENT_TYPE { EM_EVENT_TYPE_UNKNOWN, // 未知 EM_EVENT_TYPE_REAL, // 实时数据 EM_EVENT_TYPE_ALARM, // 报警数据 }EM_EVENT_TYPE; ///@brief 事件类型EVENT_IVS_WATER_SPEED_DETECTION (水流速检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_WATER_SPEED_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 int nGroupID; // 事件组ID int nCountInGroup; // 一个事件组内应有的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nEventID; // 事件ID double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 EM_EVENT_TYPE emEventType; // 事件的数据类型 UINT nPresetID; // 事件触发的预置点号,从1开始没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 NET_WATER_SPEED_INFO stuWaterSpeed[50]; // 水流速度信息 int nWaterSpeedNum; // 水流速度信息个数 EM_WATER_SPEED_STATUS emStatus; // 水流速状态 NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图,近景 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 char szReserved[1024]; // 保留字节,留待扩展 } DEV_EVENT_WATER_SPEED_DETECTION_INFO; ///@brief 事件类型EVENT_IVS_VALVE_ABNORMAL (阀门异常检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_VALVE_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。取值同VideoAnalyseRule.Id。 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT UTCMS; // 事件时间(单位是毫秒) UINT nSequence; // 帧序号 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图片信息 char szReserved[1024]; // 保留字节,留待扩展 }DEV_EVENT_VALVE_ABNORMAL_INFO; ///@brief 事件类型EVENT_IVS_DISCHARGE_PORT_ABNORMAL (出料口异常检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_DISCHARGE_PORT_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。取值同VideoAnalyseRule.Id。 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT UTCMS; // 事件时间(单位是毫秒) UINT nSequence; // 帧序号 SCENE_IMAGE_INFO stuSceneImage; // 全景图片信息 char szReserved[1024]; // 保留字节,留待扩展 }DEV_EVENT_DISCHARGE_PORT_ABNORMAL_INFO; ///@brief 防火门状态 typedef enum tagEM_EM_FIRE_DOOR_STATUS { EM_FIRE_DOOR_UNKNOWN, // 0:防火门状态未知 EM_FIRE_DOOR_CLOSED, // 1:防火门状态关闭 EM_FIRE_DOOR_OPEN // 2:防火门状态开启 }EM_FIRE_DOOR_STATUS; ///@brief 防火门检测事件, 对应事件类型 EVENT_IVS_FIRE_DOOR_DETECTION typedef struct tagDEV_EVENT_FIRE_DOOR_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szReserved[4]; // 字节对齐 /* 事件业务信息 */ EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 EM_FIRE_DOOR_STATUS emFireDoorStatus; // 防火门状态 DH_MSG_OBJECT stuObject; // 检测到的物体 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved1[1020 - POINTERSIZE]; // 预留字节 } DEV_EVENT_FIRE_DOOR_DETECTION_INFO; ///@brief 目标物体子类型 typedef enum tagEM_FIRE_EXTINGUISHER_CATEGORY_TYPE { EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_UNKNOWN, // 未知 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_GENERAL, // 普通类型灭火器,8kg左右 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_HANDPUSH, // 35kg推车式灭火器 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_GENERAL, // 普通标识牌 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_STATIC_ELETRICITY, // 静电标示牌 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_OILCAP, // 加油口盖标示牌 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_ROADCONE, // 路锥 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_COVERPLATE, // 盖子 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_OPEN, // 加油口盖标示牌打开 EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_CLOSE, // 加油口盖标示牌关闭 }EM_FIRE_EXTINGUISHER_CATEGORY_TYPE; ///@brief 区域内目标物体子类型信息 typedef struct tagNET_FIRE_EXTINGUISHER_CATEGORY_INFO { EM_FIRE_EXTINGUISHER_CATEGORY_TYPE emCategory; // 目标物体子类型 int nNum; // 目标物体子类型对应计数 char szReserved[128]; // 预留字节 }NET_FIRE_EXTINGUISHER_CATEGORY_INFO; ///@brief 目标区域内物体计数信息 typedef struct tagNET_FIRE_EXTINGUISHER_OBJECT_INFO { UINT nAlertNum; // 区域内目标总数 int nCategoryInfoNum; // 区域内目标物体子类型信息个数 NET_FIRE_EXTINGUISHER_CATEGORY_INFO stuCategoryInfo[16]; // 区域内目标物体子类型信息 char szReserved[256]; // 预留字节 }NET_FIRE_EXTINGUISHER_OBJECT_INFO; ///@brief 灭火器检测事件, 对应事件类型 EVENT_IVS_FIRE_EXTINGUISHER_DETECTION typedef struct tagDEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID /* 事件业务信息 */ EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 DH_MSG_OBJECT stuObject; // 检测到的物体 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_FIRE_EXTINGUISHER_OBJECT_INFO stuObjectInfo; // 目标区域内物体计数信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char szReserved[1020 - POINTERSIZE]; // 预留字节 } DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO; ///@brief 车位内已停车位数量相对上次上报的变化状态 typedef enum tagEM_PARKING_CHANGE_STATUS { EM_PARKING_CHANGE_STATUS_UNKNOW = -1, // 未知 EM_PARKING_CHANGE_STATUS_UNCHANGED, // 无变化 EM_PARKING_CHANGE_STATUS_INCREASE, // 数量增加 EM_PARKING_CHANGE_STATUS_REDUCE, // 数量减少 } EM_PARKING_CHANGE_STATUS; ///@brief 室外停车位状态 typedef struct tagDEV_PARKING_STATUS_INFO { int nID; // 车位ID,范围0-99 char szName[32]; // 车位名称 UINT nParkedNumber; // 车位内已停车位数量,范围[0,255]。 EM_PARKING_CHANGE_STATUS emChangeStatus; // 车位内已停车位数量相对上次上报的变化状态, } DEV_PARKING_STATUS_INFO; ///@brief 车位阈值变化报警, 对应事件类型 EVENT_IVS_PARKING_LIMIT_DETECTION typedef struct tagDEV_EVENT_PARKING_LIMIT_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT UTCMS; // 事件时间(单位是毫秒) UINT nEventID; // 事件ID /* 事件业务信息 */ EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。 UINT nSequence; // 帧序号 DEV_PARKING_STATUS_INFO stParkingStatus[100]; // 室外停车位状态 int nParkingStatusNum; // 室外停车位状态个数 char szReserved[1024]; // 预留字节 } DEV_EVENT_PARKING_LIMIT_DETECTION_INFO; ///@brief 车位状态变化报警, 对应事件类型 EVENT_IVS_PARKING_STATUS_CHANGE_DETECTION typedef struct tagDEV_EVENT_PARKING_STATUS_CHANGE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT UTCMS; // 事件时间(单位是毫秒) UINT nEventID; // 事件ID /* 事件业务信息 */ EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。 UINT nSequence; // 帧序号 DEV_PARKING_STATUS_INFO stParkingStatus[100]; // 室外停车位状态 int nParkingStatusNum; // 室外停车位状态个数 char szReserved[1024]; // 预留字节 } DEV_EVENT_PARKING_STATUS_CHANGE_DETECTION_INFO; ///@brief 门未关事件, 对应事件类型 EVENT_IVS_DOOR_NOT_CLOSE typedef struct tagDEV_EVENT_DOOR_NOT_CLOSE_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 门禁名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID char szSN[32]; // 设备序列号,如智能锁 无线配件需要该字段 BOOL bRealUTC; // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC ,否则用 UTC 字段 NET_TIME_EX RealUTC; // 事件发生的时间(标准UTC) int nOpenTimeOut; // 开门超时时间,单位秒 UINT nACK; // 确认ID NET_GPS_STATUS_INFO stGPSStatus; // GPS信息 BYTE byReserved[240]; // 预留字段 } DEV_EVENT_DOOR_NOT_CLOSE_INFO; ///@brief 仪表类型 typedef enum tagEM_INSTRUMENT_TYPE { EM_INSTRUMENT_TYPE_UNKNOWN, // 未知 EM_INSTRUMENT_TYPE_STATE, // 状态识别类型 EM_INSTRUMENT_TYPE_STATEMATCH, // 状态匹配类型 EM_INSTRUMENT_TYPE_METER, // 指针式表计类型 EM_INSTRUMENT_TYPE_CHAR, // 数字识别类型 EM_INSTRUMENT_TYPE_OIL, // 油表类型 EM_INSTRUMENT_TYPE_SWIIDEN, // 开关标识 EM_INSTRUMENT_TYPE_LIGHT, // 指示灯类型 EM_INSTRUMENT_TYPE_SWITCH, // 室内开关类型 EM_INSTRUMENT_TYPE_APPEARANCE, // 外观检测类型 EM_INSTRUMENT_TYPE_LEVELGAUGE, // 液位计 }EM_INSTRUMENT_TYPE; ///@brief 图片类型 typedef enum tagEM_PIC_TYPE { EM_PIC_TYPE_UNKNOWN = -1, // 未知 EM_PIC_TYPE_ALGORITHMICALLY_PROCESSED, // 算法处理后的图片 }EM_PIC_TYPE; ///@brief 图片信息 typedef struct tagNET_IMAGE_INFO { EM_PIC_TYPE emPicType; // 图片类型 unsigned int nOffset; // 在二进制数据块中的偏移 unsigned int nLength; // 图片大小,单位:字节 char szFilePath[256]; // 图片路径 BYTE byReserved[1024]; // 预留字节 }NET_IMAGE_INFO; ///@brief 仪表检测事件, 对应事件类型 EVENT_IVS_DIALRECOGNITION typedef struct tagDEV_EVENT_DIALRECOGNITION_INFO { unsigned int nChannelID; // 视频通道号,从0开始 unsigned int nPresetID; // 预置点ID,如果普通IPC则为0 char szTaskID[64]; // 任务ID.添加时设备端生成 EM_INSTRUMENT_TYPE emType; // 仪表类型 int nRetImageInfoNum; // 返回的图片信息个数 NET_IMAGE_INFO stuImgaeInfo[8]; // 图片信息 char szDialResult[2048]; // 检测结果,根据Type的不同,格式也不同 int nOriginalImageOffset; // 原始图片在二进制数据块中的偏移 int nOriginalImageLength; // 原始图片大小,单位:字节 UINT nAlarmType; // 告警类型:0-该字段无效;1-数值异常;2-定时上报; 3-高阀值报警; 4-低阀值报警 char szDialSubType[32]; // 仪表检测具体子类型 float fUpperThreshold; // 报警上限阈值 float fLowerThreshold; // 报警下限阈值 NET_RECT stuBoundingBox[128]; // 包围盒 int nRetBoundingBoxNum; // 包围盒个数 char szReserved[968]; // 预留字节 } DEV_EVENT_DIALRECOGNITION_INFO; ///@brief 挂空悬浮物具体类型 typedef enum tagEM_AIRBORNE_TYPE { EM_AIRBORNE_TYPE_UNKNOWN, // 未知 EM_AIRBORNE_TYPE_PLASTICBAG, // 塑料袋 EM_AIRBORNE_TYPE_TEXTILE, // 织物 EM_AIRBORNE_TYPE_KITE, // 风筝 } EM_AIRBORNE_TYPE; ///@brief 挂空悬浮物检测异常输出结果 typedef struct tagNET_AIRBORNE_DETECT { EM_AIRBORNE_TYPE emAirborneType; // 挂空悬浮物具体类型 NET_RECT stuBoundingBox; // 包围盒 } NET_AIRBORNE_DETECT; ///@brief 鸟巢检测结果 typedef struct tagNET_NEST_DETECT { NET_RECT stuBoundingBox; // 包围盒 } NET_NEST_DETECT; ///@brief 表盘状态 typedef enum tagEM_DIAL_STATE { EM_DIAL_STATE_UNKNOWN, // 未知 EM_DIAL_STATE_NORMAL, // 正常 EM_DIAL_STATE_DIM, // 模糊 EM_DIAL_STATE_DIAL_BROKEN, // 表盘破损 EM_DIAL_STATE_SHELL_BROKEN, // 外壳破裂 EM_DIAL_STATE_ABNORMAL_READING, // 读数异常 } EM_DIAL_STATE; ///@brief 表盘检测结果 typedef struct tagNET_DIAL_DETECT { EM_DIAL_STATE emDialState; // 表盘状态 NET_RECT stuBoundingBox; // 包围盒 } NET_DIAL_DETECT; ///@brief 渗漏检测结果 typedef struct tagNET_LEAKAGE_DETECT { NET_RECT stuBoundingBox; // 包围盒 } NET_LEAKAGE_DETECT; ///@brief 箱门状态 typedef enum tagEM_DOOR_STATE { EM_DOOR_STATE_UNKNOWN, // 未知 EM_DOOR_STATE_OPEN, // 打开 EM_DOOR_STATE_CLOSE, // 关闭 } EM_DOOR_STATE; ///@brief 箱门检测结果 typedef struct tagNET_DOOR_DETECT { EM_DOOR_STATE emDoorState; // 箱门状态 NET_RECT stuBoundingBox; // 包围盒 } NET_DOOR_DETECT; ///@brief 呼吸器状态 typedef enum tagEM_RESPIRATOR_STATE { EM_RESPIRATOR_STATE_UNKNOWN, // 未知 EM_RESPIRATOR_STATE_NORMAL, // 正常 EM_RESPIRATOR_STATE_SILICA_GEL_COLOR_CHANGE, // 硅胶变色 EM_RESPIRATOR_STATE_SILICA_GEL_BARREL_BROKEN, // 硅胶桶破损 EM_RESPIRATOR_STATE_ABNORMAL_OIL_LEVEL, // 油位异常 } EM_RESPIRATOR_STATE; ///@brief 呼吸器检测结果 typedef struct tagNET_RESPIRATOR_DETECT { EM_RESPIRATOR_STATE emRespiratorState; // 呼吸器状态 NET_RECT stuBoundingBox; // 包围盒 } NET_RESPIRATOR_DETECT; ///@brief 吸烟检测结果 typedef struct tagNET_SMOKING_DETECT { NET_RECT stuBoundingBox; // 包围盒 } NET_SMOKING_DETECT; ///@brief 绝缘子状态 typedef enum tagEM_INSULATOR_STATE { EM_INSULATOR_STATE_UNKNOWN, // 未知 EM_INSULATOR_STATE_NORMAL, // 正常 EM_INSULATOR_STATE_BROKEN, // 破裂 } EM_INSULATOR_STATE; ///@brief 绝缘子检测结果 typedef struct tagNET_INSULATOR_DETECT { EM_INSULATOR_STATE emInsulatorState; // 绝缘子状态 NET_RECT stuBoundingBox; // 包围盒 } NET_INSULATOR_DETECT; ///@brief 盖板状态 typedef enum tagEM_COVER_PLATE_STATE { EM_COVER_PLATE_STATE_UNKNOWN, // 未知 EM_COVER_PLATE_STATE_NORMAL, // 正常 EM_COVER_PLATE_STATE_BROKEN, // 破裂 } EM_COVER_PLATE_STATE; ///@brief 盖板检测结果 typedef struct tagNET_COVER_PLATE_DETECT { EM_COVER_PLATE_STATE emCoverPlateState; // 盖板状态 NET_RECT stuBoundingBox; // 包围盒 } NET_COVER_PLATE_DETECT; ///@brief 压板状态 typedef enum tagEM_PRESSING_PLATE_STATE { EM_PRESSING_PLATE_STATE_UNKNOWN, // 未知 EM_PRESSING_PLATE_STATE_DISCONNECT, // 断开 EM_PRESSING_PLATE_STATE_CLOSE, // 闭合 } EM_PRESSING_PLATE_STATE; ///@brief 压板检测结果 typedef struct tagNET_PRESSING_PLATE_DETECT { EM_PRESSING_PLATE_STATE emPressingPlateState; // 压板状态 NET_RECT stuBoundingBox; // 包围盒 } NET_PRESSING_PLATE_DETECT; ///@brief 对应设备所使能的检测规则 typedef enum tagELECTRIC_FAULT_ENABLE_RULES { ELECTRIC_FAULT_ENABLE_RULES_UNKNOWN, // 未知 ELECTRIC_FAULT_ENABLE_RULES_AIRBORNEDETECT, // 挂空悬浮物检测 ELECTRIC_FAULT_ENABLE_RULES_NESTDETECT, // 鸟巢检测 ELECTRIC_FAULT_ENABLE_RULES_DIALDETECT, // 表盘检测 ELECTRIC_FAULT_ENABLE_RULES_LEAKAGEDETECT, // 渗漏检测 ELECTRIC_FAULT_ENABLE_RULES_DOORDETECT, // 箱门检测 ELECTRIC_FAULT_ENABLE_RULES_RESPIRATORDETECT, // 呼吸器检测 ELECTRIC_FAULT_ENABLE_RULES_SMOKINGDETECT, // 吸烟检测 ELECTRIC_FAULT_ENABLE_RULES_INSULATORDETECT, // 绝缘子检测 ELECTRIC_FAULT_ENABLE_RULES_COVERPLATEDETECT, // 盖板检测 ELECTRIC_FAULT_ENABLE_RULES_PRESSINGPLATEDETECT, // 压板检测 ELECTRIC_FAULT_ENABLE_RULES_CORROSIONDETECT, // 锈蚀检测 } ELECTRIC_FAULT_ENABLE_RULES; ///@brief 金属锈蚀结果 typedef struct tagNET_METAL_CORROSION { NET_RECT stuBoundingBox; // 包围盒 char bReserved[128]; // 预留字段 } NET_METAL_CORROSION; ///@brief 仪表类缺陷检测事件 typedef struct tagDEV_EVENT_ELECTRICFAULTDETECT_INFO { EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nChannel; // 视频通道号 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 int nEventID; // 事件ID char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nPresetID; // 预置点ID UINT nUTCMS; // 事件时间毫秒数 ELECTRIC_FAULT_ENABLE_RULES emEnableRules[16]; // 对应设备所使能的检测规则 int nEnableRulesNum; // 设备所使能的检测规则个数 int nAirborneDetectNum; // 挂空悬浮物检测异常输出结果个数 NET_AIRBORNE_DETECT stuAirborneDetectInfo[8]; // 挂空悬浮物检测异常输出结果 NET_NEST_DETECT stuNestDetectInfo[8]; // 鸟巢检测结果 int nNestDetectNum; // 鸟巢检测结果个数 int nDialDetectNum; // 表盘检测结果个数 NET_DIAL_DETECT stuDialDetectInfo[8]; // 表盘检测结果 NET_LEAKAGE_DETECT stuLeakageDetectInfo[8]; // 渗漏检测结果 int nLeakageDetectNum; // 渗漏检测结果个数 int nDoorDetectNum; // 箱门检测结果个数 NET_DOOR_DETECT stuDoorDetectInfo[8]; // 箱门检测结果 NET_RESPIRATOR_DETECT stuRespiratorDetectInfo[8]; // 呼吸器检测结果 int nRespiratorDetectNum; // 呼吸器检测个数 int nSmokingDetectNum; // 吸烟检测结果个数 NET_SMOKING_DETECT stuSmokingDetectInfo[8]; // 吸烟检测结果 SCENE_IMAGE_INFO stuSceneImageInfo; // 大图 NET_INSULATOR_DETECT stuInsulatorDetectInfo[8]; // 绝缘子检测结果 int nInsulatorDetectNum; // 绝缘子检测结果个数 int nCoverPlateDetectNum; // 盖板检测结果个数 NET_COVER_PLATE_DETECT stuCoverPlateDetectInfo[8]; // 盖板检测结果 NET_PRESSING_PLATE_DETECT stuPressingPlateDetectInfo[8]; // 压板检测结果 int nPressingPlateDetectNum; // 压板检测结果个数 int nMetalCorrosionNum; // 金属锈蚀结果个数 NET_METAL_CORROSION stuMetalCorrosionInfo[8]; // 金属锈蚀结果 BYTE bReserved[1024]; // 预留字段 } DEV_EVENT_ELECTRICFAULTDETECT_INFO; ///@brief 事件类型EVENT_IVS_FIREDETECTION(火警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FIRE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved1[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; // 保留字节 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DH_MSG_OBJECT stuVehicle; // 车身信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 } DEV_EVENT_FIRE_INFO; ///@brief 事件类型EVENT_IVS_CROSSREGIONDETECTION(警戒区事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CROSSREGION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved2[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT TrackLine[DH_MAX_TRACK_LINE_NUM]; // 物体运动轨迹 int nTrackLineNum; // 物体运动轨迹顶点数 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bDirection; // 表示入侵方向, 0-进入, 1-离开,2-出现,3-消失 BYTE bActionType; // 表示检测动作类型,0-出现 1-消失 2-在区域内 3-穿越区域 BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 NET_CUSTOM_INFO stuCustom; // 货物通道信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 NET_PRESET_POSITION stPosition; // 预置点的坐标和放大倍数 UINT nVisibleHFOV; // 可见光横向视场角,单位度 实际角度乘以100 UINT nVisibleVFOV; // 可见光纵向视场角,单位度 实际角度乘以100 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的纵向视场角,单位度,实际角度乘以100 char szRealEventType[32]; // 采用该字段区分是区域入侵还是特定事件,该字段不携带则是通用的区域入侵事件,携带则根据内容区分实际的事件类型,目前只有IllegalDumping(垃圾违规投放) BYTE bReserved[264]; // 保留字节,留待扩展. int nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjectIDs[DH_MAX_OBJECT_LIST]; // 检测到的物体 int nTrackNum; // 轨迹数(与检测到的物体个数对应) DH_POLY_POINTS stuTrackInfo[DH_MAX_OBJECT_LIST]; // 轨迹信息(与检测到的物体对应) EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 UINT nObjetcHumansNum; // 检测到人的数量 NET_VAOBJECT_NUMMAN stuObjetcHumans[100]; // 检测的到人 DH_MSG_OBJECT stuVehicle; // 车身信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 NET_PTZSPACE_UNNORMALIZED stuAbsPosition; // 云台方向与放大倍数(扩大100倍表示) // 第一个元素为水平角度,0-36000; // 第二个元素为垂直角度,(-18000)-(18000); // 第三个元素为显示放大倍数,0-MaxZoom*100 int nHFovValue; // 对应倍率水平视场角, 单位0.01度, 扩大100倍表示 double dbFocusPosition; // 聚焦位置 UINT nObjectBoatNum; // 船只物体个数 NET_BOAT_OBJECT stuBoatObject[100]; // 船只物品信息 int nImageNum; // 图片信息个数 NET_IMAGE_INFO_EX2* pImageArray; // 图片信息数组 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 DH_MSG_OBJECT_EX2* pstuObjectEx2; // 检测到的物体扩展 DH_MSG_OBJECT_EX2* pstuObjectIDsEx2; // 检测到的物体扩展,数量为nObjectNum DH_MSG_OBJECT_EX2* pstuVehicleEx2; // 车身信息扩展 } DEV_EVENT_CROSSREGION_INFO; ///@brief 烟雾颜色类型 typedef enum tagEM_SMOKE_COLOR { EM_SMOKE_COLOR_UNKNOWN, // 未知 EM_SMOKE_COLOR_WHITE, // White EM_SMOKE_COLOR_BLACK, // black EM_SMOKE_COLOR_RED, // red EM_SMOKE_COLOR_YELLOW, // yellow }EM_SMOKE_COLOR; ///@brief 事件类型EVENT_IVS_SMOKEDETECTION(烟雾报警事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_SMOKE_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT stuObject; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[2]; BYTE byImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 PTZ_SPACE_UNIT stuPtzPosition; // 云台的坐标和放大倍数 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DH_MSG_OBJECT stuVehicle; // 车身信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 UINT nCurChannelHFOV; // 当前报警通道的横向视场角,单位:度,实际角度乘以100 UINT nCurChannelVFOV; // 当前报警通道的垂直视场角,单位:度,实际角度乘以100 NET_GPS_INFO_EX stuGPS; // 设备的GPS坐标 int nObjectCount; // 烟雾检测点个数 DH_MSG_OBJECT_EX2 stuObjects[16]; // 烟雾检测点信息 EM_SMOKE_COLOR emSmokeColor[16]; // 烟雾颜色 int nSmokeColorNum; // 烟雾颜色有效个数 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[944]; // 保留字段 } DEV_EVENT_SMOKE_INFO; ///@brief 交通卡口功能 typedef struct tagNET_TRAFFIC_JUNCTION_CUSTOM_INFO { NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 BYTE byReserved[1024]; // 保留字节 } NET_TRAFFIC_JUNCTION_CUSTOM_INFO; ///@brief 事件 EVENT_IVS_TRAFFIC_WRONG_TURN_LIGHT 对应数据 typedef struct tagDEV_EVENT_TRAFFIC_WRONG_TURN_LIGHT_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 int nSpeed; // 车速,单位km/h char szDriverID[32]; // 司机ID EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应的文件信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 NET_TRAFFIC_JUNCTION_CUSTOM_INFO stuJunctionCustom; // 交通卡口功能 DH_MSG_OBJECT stuObject; // 检测到的物体信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 BYTE byResersed[1024]; // 保留字节 }DEV_EVENT_TRAFFIC_WRONG_TURN_LIGHT_INFO; ///@brief 交通事故事件 EVENT_IVS_TRAFFIC_REAREND_ACCIDENT 对应数据 typedef struct tagDEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 UINT nLaneID; // 车道号 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应的文件信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 DH_MSG_OBJECT stuObjects[50]; // 检测到的物体信息 int nObjectNum; // 返回检测到的个数 BYTE byResersed[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO; ///@brief 对讲动作类型 typedef enum tagEM_TALK_ACTION_TYPE { EM_TALK_ACTION_TYPE_UNKNOWN, // 未知 EM_TALK_ACTION_TYPE_INVITE, // 呼叫 EM_TALK_ACTION_TYPE_HANGUP, // 挂断 }EM_TALK_ACTION_TYPE; ///@brief 呼叫源对象类型 typedef enum tagEM_CALL_SOURCE_TYPE { EM_CALL_SOURCE_TYPE_UNKNOWN, // 未知 EM_CALL_SOURCE_TYPE_VT_OR_SIP, // VT或SIP EM_CALL_SOURCE_TYPE_GEN2, // 二代 EM_CALL_SOURCE_TYPE_THIRD_PARTY, // 第三方 }EM_CALL_SOURCE_TYPE; ///@brief 挂断原因 typedef enum tagEM_HANGUP_REASON { EM_HANGUP_REASON_UNKNOWN, // 未知 EM_HANGUP_REASON_ANSWER_BY_VTH, // VTH 已应答 EM_HANGUP_REASON_REFUSE_BY_VTH, // VTH 已拒绝 EM_HANGUP_REASON_HANGUP_BY_VTO, // VTO 挂断 }EM_HANGUP_REASON; ///@brief 对讲信息 typedef struct tagDEV_EVENT_DO_TALK_ACTION_INFO { int nAction; // 0:脉冲 int nChannelID; // 通道号 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID char szCallID[64]; // 呼叫ID EM_TALK_ACTION_TYPE emTalkAction; // 对讲动作类型 EM_CALL_SOURCE_TYPE emCallSource; // 呼叫源类型 EM_HANGUP_REASON emHangupReason; // 挂断原因,emTalkAction 为 EM_TALK_ACTION_TYPE_HANGUP 时有效 BYTE byReserved[1020]; // 预留字段 }DEV_EVENT_DO_TALK_ACTION_INFO; ///@brief 水位场景类型 typedef enum tagEM_WATERMONITOR_SCENE_TYPE { EM_WATERMONITOR_SCENE_UNKNOWN, // 未知 EM_WATERMONITOR_SCENE_WATERSTAGE_RULE, // 水位检测, 有水位尺 EM_WATERMONITOR_SCENE_WATERSTAGE_NO_RULE, // 水位检测, 无水位尺 EM_WATERMONITOR_SCENE_WATERLOGG_RULE, // 内涝检测, 有水位尺 EM_WATERMONITOR_SCENE_WATERLOGG_NO_RULE, // 内涝检测, 无水位尺 } EM_WATERSTAGE_SCENE_TYPE; ///@brief 水面分割掩膜信息 typedef struct tagNET_WATER_SURFACE_MASK_INFO { UINT nColNum; // 水面分割掩膜列数 UINT nOffset; // 偏移 UINT nLength; // 长度 BYTE byReserved[1020]; // 预留字段 } NET_WATER_SURFACE_MASK_INFO; ///@brief 水位监测事件, 目前仅用于任务型智能分析 typedef struct tagDEV_EVENT_WATER_STAGE_MONITOR_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 EM_CLASS_TYPE emClassType; // 智能事件所属大类 EM_WATERSTAGE_SCENE_TYPE emSceneType; // 水位场景类型 double dbMark; // 水尺读数 NET_POINT stuCrossPoint; // 水尺与水面交点 NET_WATER_SURFACE_MASK_INFO stuWaterSurfaceMask; // 水面分割掩膜信息, emSceneType 为EM_WATERMONITOR_SCENE_WATERSTAGE_NO_RULE 或者EM_WATERMONITOR_SCENE_WATERLOGG_NO_RULE有效 BYTE byReserved[1020]; // 预留字段 } DEV_EVENT_WATER_STAGE_MONITOR_INFO; ///@brief 压停止线触发类型 typedef enum tagEM_TRAFFIC_OVER_LINE_TRIGGER_TYPE { EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE_UNKNOWN, // 未知 EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE_VEHICLE_DETECTOR, // 车检器 EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE_RADAR, // 雷达 EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE_VIDEO, // 视频 }EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE; ///@brief 事件类型 EVENT_IVS_TRAFFIC_OVER_GUIDE_LINE (压导流线事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_OVER_GUIDE_LINE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲事件 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nLane; // 对应车道号,从1开始有效 BYTE byReserved1[4]; // 字节对齐 DH_MSG_OBJECT stuObject; // 检测到的物体 BYTE byReserved2[4]; // 字节对齐 DH_MSG_OBJECT stuVehicle; // 车身信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE emTriggerLine; // 触发类型 int nSnapFrameMark; // 抓拍帧标记 int nDataSourceAddress; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 int nSpeed; // 车速,单位km/h DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1024]; // 预留字段 }DEV_EVENT_TRAFFIC_OVER_GUIDE_LINE_INFO; ///@brief 物体进入还是离开 typedef enum tagEM_FIRE_LANE_MOVE_STATE { EM_FIRE_LANE_MOVE_STATE_UNKNOWN, // 未知 EM_FIRE_LANE_MOVE_STATE_ENTER, // 进入 EM_FIRE_LANE_MOVE_STATE_LEAVE, // 离开 }EM_FIRE_LANE_MOVE_STATE; ///@brief 加油口盖标示牌状态 typedef enum tagEM_FIRE_LANE_OILCAP_STATE { EM_FIRE_LANE_OILCAP_STATE_UNKNOWN, // 未知 EM_FIRE_LANE_OILCAP_STATE_OPEN, // 打开 EM_FIRE_LANE_OILCAP_STATE_CLOSE, // 关闭 }EM_FIRE_LANE_OILCAP_STATE; ///@brief 事件类型EVENT_IVS_FIRE_LANE_DETECTION(消防占道检测事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_FIRE_LANE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 1:开始,2:停止 char szName[128]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int nSequence; // 帧序号 int nRuleID; // 规则编号 UINT nObjectNum; // 检测到的物体个数 DH_MSG_OBJECT stuObjects[64]; // 检测到的物体 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 EM_FIRE_LANE_MOVE_STATE emMoveState; // 表示物体进入还是离开 EM_FIRE_LANE_OILCAP_STATE emOilCapState; // 表示加油口盖标示牌状态 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 BOOL bNonMotorInfo; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1024]; // 预留字段 } DEV_EVENT_FIRE_LANE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NON_MOTOR_RETROGRADE(非机动车逆行事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲事件 char szName[128]; // 事件名称 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 EM_TRAFFIC_OVER_LINE_TRIGGER_TYPE emTriggerLine; // 触发类型 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 int nSpeed; // 车速(单位:km/h) EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 EVENT_COMM_INFO stuCommInfo; // 公共信息 BOOL bNonMotorInfoEx; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1012]; // 预留字段 }DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO; ///@brief 事件类型 EVENT_IVS_CAR_DRIVING_IN(车辆驶入事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CAR_DRIVING_IN_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 int nSpeed; // 车速(单位:km/h) DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_CAR_DRIVING_IN_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NON_MOTOR_OVER_STOP_LINE(非机动车越线停车事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NON_MOTOR_OVER_STOP_LINE_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲事件 char szName[128]; // 事件名称 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID int nLaneID; // 车道号 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 BOOL bNonMotorInfoEx; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 BYTE byReserved[1012]; // 预留字段 }DEV_EVENT_TRAFFIC_NON_MOTOR_OVER_STOP_LINE_INFO; ///@brief 事件类型 EVENT_IVS_CAR_DRIVING_OUT(车辆驶出事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_CAR_DRIVING_OUT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 int nSpeed; // 车速(单位:km/h) DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_CAR_DRIVING_OUT_INFO; ///@brief 报警事件类型 EVENT_ALARM_LOCALALARM(外部报警),EVENT_ALARM_MOTIONALARM(动检报警)报警) typedef struct tagDEV_EVENT_ALARM_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char Reserved[4]; // 保留字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EVENT_COMM_INFO stCommInfo; // 公共信息 BYTE byEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved[3]; // 保留字节 NET_SENSE_METHOD emSenseType; // 传感器类型 EM_NET_DEFENCE_AREA_TYPE emDefenceAreaType; // 防区类型 NET_GPS_STATUS_INFO stuGPS; // GPS信息 char szUserID[32]; // 本地报警时登陆的用户ID char szUserName[128]; // 本地报警时登陆的用户名 char szSN[32]; // 设备序列号 BOOL bExAlarmIn; // 外部输入报警 NET_FILE_PROCESS_INFO stuFileProcessInfo; // 图片与智能事件信息 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szReserved[512]; // 保留字节 }DEV_EVENT_ALARM_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_HEAD_LAMP_OFF(未开照明灯事件)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_HEAD_LAMP_OFF_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 DH_MSG_OBJECT stuVehicle; // 检测到的物体信息 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nLaneID; // 车道号 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆的数据库记录 EVENT_COMM_INFO stuCommInfo; // 公共信息 EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess; // 抓拍过程 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_HEAD_LAMP_OFF_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT (特殊车辆检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR (交通非机动车事件检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_NONMOTOR_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 BOOL bNonMotorInfo; // 是否有非机动车信息 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_TRAFFIC_NONMOTOR_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_BOARD (交通违章上下客事件检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_BOARD_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_BOARD_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_VISIBILITY (交通能见度事件检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VISIBILITY_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 UINT nVisibility; // 能见程度(表示距离范围)单位:米 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_TRAFFIC_VISIBILITY_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS (交通车辆清洁度检测事件检测)对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 EVENT_COMM_INFO stuCommInfo; // 公共信息 int nCleanValue; // 清洁度阀值 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO; ///@brief 事件类型 EVENT_IVS_TRUCKNOTCLEAN_FOR_PRMA 工程车未清洗 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClass; // 智能事件所属大类 UINT nSequence; // 帧序号 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 BOOL bSceneImage; // stuSceneImage 是否有效 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO; ///@brief 事件类型 EVENT_IVS_ROADOCCUPATION_BY_FOREIGNOBJECT 异物占道事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_ROADOCCUPATION_BY_FOREIGNOBJECT_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClass; // 智能事件所属大类 UINT nSequence; // 帧序号 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_ROADOCCUPATION_BY_FOREIGNOBJECT_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFICFLOW_OVER 车流量超过上限 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFICFLOW_OVER_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 EM_CLASS_TYPE emClass; // 智能事件所属大类 UINT nSequence; // 帧序号 int nLane; // 车道号 int nVehicleNums; // 统计时间内的车辆数 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_TRAFFICFLOW_OVER_INFO; ///@brief 物品类型 typedef enum tagEM_GOODS_TYPE { EM_GOODS_TYPE_UNKNOWN, // 未知类型 EM_GOODS_TYPE_RMB, // 人民币 EM_GOODS_TYPE_KEY, // 钥匙 EM_GOODS_TYPE_SEAL, // 印章 EM_GOODS_TYPE_CARD, // 卡片 }EM_GOODS_TYPE; ///@brief 事件类型 EVENT_IVS_GOODS_DETECTION 违规物品检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_GOODS_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 UINT nPresetID; // 事件触发的预置点号,从1开始 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 BOOL bSceneImage; // stuSceneImage 是否有效 EM_GOODS_TYPE emObjectType; // 物品类型 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_GOODS_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_CONVEYORBLOCK_DETECTION 传送阻塞报警事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_CONVEYORBLOCK_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 double dPTS; // 相对事件时间戳,单位毫秒 NET_TIME_EX UTC; // 事件发生时间,带时区偏差的UTC时间,单位秒 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号,用来唯一标志一个事件 UINT nSequence; // 帧序号 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景图 BOOL bSceneImage; // stuSceneImage 是否有效 NET_IMAGE_INFO_EX2 stuImageInfo[32]; // 图片信息数组 int nImageInfoNum; // 图片信息个数 char byReserved[1024]; // 保留字节 }DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO; ///@brief 物体动作支持类型 typedef enum tagENUM_VAGEOBJECT_ACTION { ENUM_VAGEOBJECT_ACTION_UNKNOWN, // 未知类型 ENUM_VAGEOBJECT_ACTION_APPEAR, // 第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体 ENUM_VAGEOBJECT_ACTION_MOVE, // 正在运动,物体被正常跟踪 ENUM_VAGEOBJECT_ACTION_STAY, // 物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中 ENUM_VAGEOBJECT_ACTION_REMOVE, // 物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用 ENUM_VAGEOBJECT_ACTION_DISAPPEAR, // 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现 ENUM_VAGEOBJECT_ACTION_SPLIT, // 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离 ENUM_VAGEOBJECT_ACTION_MERGE, // 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体 ENUM_VAGEOBJECT_ACTION_RENAME, // 如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID }ENUM_VAGEOBJECT_ACTION; ///@brief 物体截图 typedef struct tagNET_VAGEOBJECT_IMAGE { UINT nOffset; // 在二进制数据块中的偏移 UINT nLength; // 图片大小,单位:字节 UINT nWidth; // 图片宽度 UINT nHeight; // 图片高度 char szFilePath[260]; // 文件路径 }NET_VAGEOBJECT_IMAGE; ///@brief 视频分析泛型物体类型 typedef struct tagNET_VAGEOBJECT_INFO { UINT nObjectID; // 物体ID,每个ID表示一个唯一的物体 UINT nTypeIndex; // 模型支持的泛类型物体类型编号 char szTypeName[32]; // 模型支持的泛类型物体类型 int nConfidence; // 置信度,值越大表示置信度越高 0~100 ENUM_VAGEOBJECT_ACTION emAction; // 物体动作支持类型 NET_RECT stuBoundingBox; // 包围盒 矩形类型,当物体类型为车辆、车牌时为0~8191相对坐标 NET_RECT stuOriginalBoundingBox; // 包围盒 绝对坐标 NET_POINT stuCenter; // 物体型心(不是包围盒中心), 二维空间点类型 BOOL bMainColor; // 主要颜色是否有效 BYTE byMainColor[4]; // 物体主要颜色, rgb NET_VAGEOBJECT_IMAGE stuImage; // 物体截图 NET_TIME_EX stuCurrentTimeStamp; // 当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间) BYTE byReserved[1024]; // 保留字节 }NET_VAGEOBJECT_INFO; ///@brief 事件类型 EVENT_IVS_ANYTHING_DETECT 全物体类型检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_ANYTHING_DETECT_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nRuleId; // 智能事件规则编号 UINT nPresetID; // 事件触发的预置点号,从1开始 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 int nObjectNum; // 检测到的物体个数 NET_VAGEOBJECT_INFO *pstuObjects; // 检测到的物体信息 BYTE bReserved[1024]; // 保留字节 }DEV_EVENT_ANYTHING_DETECT_INFO; ///@brief 检测目标信息 typedef struct tagNET_OBJECT_INFO { NET_RECT stuBoundingBox; // 目标包围盒(8192坐标系) BYTE bReserved[256]; // 保留字节 }NET_OBJECT_INFO; ///@brief 目标类型 typedef enum tagEM_ABNORMAL_OBJECT_TYPE { ABNORMAL_OBJECT_TYPE_UNKNOWN, // 未知 ABNORMAL_OBJECT_TYPE_PIG, // 猪 }EM_ABNORMAL_OBJECT_TYPE; ///@brief 异常行为 typedef enum tagEM_OBJCET_ABNORMAL_TYPE { EM_OBJECT_ABNORMAL_TYPE_UNKNOWN, // 未知 EM_OBJECT_ABNORMAL_TYPE_RETROGRADE,// 逆向运动 }EM_OBJECT_ABNORMAL_TYPE; ///@brief 事件类型 EVENT_IVS_OBJECT_ABNORMAL 目标异常检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_OBJECT_ABNORMAL_INFO { int nChannelID; // 通道号 int nAction; // 0-脉冲 1-开始 2-结束 char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage; // 全景大图信息 EM_CLASS_TYPE emClassType; // 智能事件所属大类 unsigned short nAreaID; // 区域ID(一个预置点可以对应多个区域ID) unsigned short nPresetID; // 预置点编号,从1开始 NET_OBJECT_INFO stuObjectInfo[64]; // 目标信息 int nObjectInfoNum; // 目标信息个数 EM_ABNORMAL_OBJECT_TYPE emObjectType; // 目标类型 EM_OBJECT_ABNORMAL_TYPE emAbnormalType; // 异常行为 BYTE bReserved[1020]; // 保留字节 }DEV_EVENT_OBJECT_ABNORMAL_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_SPEED_CHANGE_DETECTION 变速检测事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szName[128]; // 事件名称 double PTS; // 时间戳(单位:毫秒) NET_TIME_EX UTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleId; // 智能事件规则编号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_MSG_OBJECT stuObject; // 检测到的车牌信息 DH_MSG_OBJECT stuVehicle; // 检测到的车辆信息 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nLane; // 对应车道号 int nSpeedNew; // 当前车速, 单位: km/h int nSpeedOld; // 变化前车速, 单位: km/h BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO; ///@brief 跟随车辆报警自定义信息 typedef struct tagNET_FOLLOW_CAR_ALARM_CUSTOM_INFO { NET_GPS_STATUS_INFO stuGPS; // GPS信息 BYTE byReserved[256]; // 保留字节 }NET_FOLLOW_CAR_ALARM_CUSTOM_INFO; ///@brief 跟随车辆报警图片类型 typedef enum tagNET_FOLLOW_CAR_ALARM_IMAGE_TYPE { EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_UNKNOWN = -1, // 未知 EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_PANORAMA, // 全景图 EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_SMALL_PICTURE, // 小图 }EM_FOLLOW_CAR_ALARM_IMAGE_TYPE; ///@brief 跟随车辆报警图片信息 typedef struct tagNET_FOLLOW_CAR_ALARM_IMAGE_INFO { UINT nGroupID; // 同一组大小图片内GroupID相同 EM_FOLLOW_CAR_ALARM_IMAGE_TYPE emImageType; // 图片类型 DWORD dwoffset; // 在二进制数据块中的偏移,单位:字节 DWORD dwLength; // 图片大小,单位:字节 BYTE byReserved[256]; // 保留字节 }NET_FOLLOW_CAR_ALARM_IMAGE_INFO; ///@brief 事件类型 EVENT_IVS_FOLLOW_CAR_ALARM 跟车报警事件 对应的数据块描述信息 typedef struct tagDEV_EVENT_FOLLOW_CAR_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; NET_TIME_EX UTC; // 事件发生的时间 int nImageInfoNum; // 跟车图片信息个数 NET_FOLLOW_CAR_ALARM_IMAGE_INFO stuImageInfo[8]; // 跟车图片信息 NET_FOLLOW_CAR_ALARM_CUSTOM_INFO stuCustomInfo; // 自定义信息 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 BYTE byReserved[1024]; // 保留字节 }DEV_EVENT_FOLLOW_CAR_ALARM_INFO; ///@brief CLIENT_SetSDKLocalCfg/CLIENT_GetSDKLocalCfg 接口配置本地参数类型 typedef enum tagNET_EM_SDK_INIT_CFG_TYPE { NET_SDK_LOCAL_CFG_TYPE_OPENSSL, // openssl库信息配置,对应结构体 NET_CONFIG_OPENSSL_INFO NET_SDK_LOCAL_CFG_TYPE_STREAMCONVERTOR, // StreamConvertor转码库信息配置,对应结构体 NET_CONFIG_STREAMCONVERTOR_INFO NET_SDK_LOCAL_CFG_TYPE_AVNETSDK, // avnetsdk库信息配置,对应结构体 NET_CONFIG_AVNETSDK_INFO }NET_EM_SDK_LOCAL_CFG_TYPE; ///@brief openssl库信息配置 typedef struct tagNET_CONFIG_OPENSSL_INFO { char szSsleay[MAX_PATH]; //openssl协议库 //windows下 为ssleay32.dll库全路径,当路径为空时默认从当前NetSDK.dll路径下查找加载 //linux下 为libssl.so 库全路径,当路径为空时默认从系统路径下查找加载 char szLibeay[MAX_PATH]; //openssl加密库 //windows下 为libeay32.dll库全路径,当路径为空时默认从当前NetSDK.dll路径下查找加载 //linux下 为libcrypto.so库全路径,当路径为空时默认从系统路径下查找加载 BYTE bReserved[504]; //保留字节 }NET_CONFIG_OPENSSL_INFO; ///@brief StreamConvertor转码库信息配置 typedef struct tagNET_CONFIG_STREAMCONVERTOR_INFO { char szStreamConvertor[MAX_PATH]; //StreamConvertor转码库 //Windows: 为StreamConvertor.dll 库全路径,当路径为空时默认从当前dhnetsdk.dll路径下查找加载 //Linux: 为libStreamConvertor.so 库全路径,当路径为空时默认从当前libdhnetsdk.so路径下查找加载 //Mac OS: 为libStreamConvertor.so/libStreamConvertor.dylib 库全路径,当路径为空时默认从当前libdhnetsdk.so路径下查找加载 // Mac OS中先默认转码库是libStreamConvertor.so,尝试加载失败时候,则认为转码库是libStreamConvertor.dylib BYTE bReserved[764]; //保留字节 }NET_CONFIG_STREAMCONVERTOR_INFO ; ///@brief avnetsdk库信息配置 typedef struct tagNET_CONFIG_AVNETSDK_INFO { char szAvnetsdk[MAX_PATH]; //avnetsdk库 //Windows: 为avnetsdk.dll 库全路径,当路径为空时默认从当前dhnetsdk.dll路径下查找加载 //Linux: 为avnetsdk.so 库全路径,当路径为空时默认从当前libdhnetsdk.so路径下查找加载 //Mac OS: 为avnetsdk.so 库全路径,当路径为空时默认从当前libdhnetsdk.so路径下查找加载 BYTE bReserved[764]; //保留字节 }NET_CONFIG_AVNETSDK_INFO; ///@brief 初始化参数 typedef struct tagNETSDK_INIT_PARAM { int nThreadNum; // 指定NetSDK常规网络处理线程数, 当值为0时, 使用内部默认值 BYTE bReserved[1024]; // 保留字节 }NETSDK_INIT_PARAM, *LPNETSDK_INIT_PARAM; ///@brief 配置接口返回信息 typedef struct tagNET_CONFIG_RETURN_INFO { DWORD dwSize; int nRetCnt; // 返回的实际有效的配置个数 } NET_CONFIG_RETURN_INFO; ///@brief 叠加类型 typedef enum tagNET_EM_OSD_BLEND_TYPE { NET_EM_OSD_BLEND_TYPE_UNKNOWN, //未知叠加类型 NET_EM_OSD_BLEND_TYPE_MAIN, //叠加到主码流 NET_EM_OSD_BLEND_TYPE_EXTRA1, //叠加到辅码流1 NET_EM_OSD_BLEND_TYPE_EXTRA2, //叠加到辅码流2 NET_EM_OSD_BLEND_TYPE_EXTRA3, //叠加到辅码流3 NET_EM_OSD_BLEND_TYPE_SNAPSHOT, //叠加到抓图 NET_EM_OSD_BLEND_TYPE_PREVIEW, //叠加到预览视频 }NET_EM_OSD_BLEND_TYPE; ///@brief 标题文本对齐方式 typedef enum tagEM_TITLE_TEXT_ALIGNTYPE { EM_TEXT_ALIGNTYPE_INVALID, // 无效的对齐方式 EM_TEXT_ALIGNTYPE_LEFT, // 左对齐 EM_TEXT_ALIGNTYPE_XCENTER, // X坐标中对齐 EM_TEXT_ALIGNTYPE_YCENTER, // Y坐标中对齐 EM_TEXT_ALIGNTYPE_CENTER, // 居中 EM_TEXT_ALIGNTYPE_RIGHT, // 右对齐 EM_TEXT_ALIGNTYPE_TOP, // 按照顶部对齐 EM_TEXT_ALIGNTYPE_BOTTOM, // 按照底部对齐 EM_TEXT_ALIGNTYPE_LEFTTOP, // 按照左上角对齐 EM_TEXT_ALIGNTYPE_CHANGELINE, // 换行对齐 }EM_TITLE_TEXT_ALIGNTYPE; ///@brief 编码物件-通道标题 typedef struct tagNET_OSD_CHANNEL_TITLE { DWORD dwSize; NET_EM_OSD_BLEND_TYPE emOsdBlendType; // 叠加类型,不管是获取还是设置都要设置该字段 BOOL bEncodeBlend; // 是否叠加 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点 EM_TITLE_TEXT_ALIGNTYPE emTextAlign; // 文本对齐方式 } NET_OSD_CHANNEL_TITLE; ///@brief 编码物件-时间标题 typedef struct tagNET_OSD_TIME_TITLE { DWORD dwSize; NET_EM_OSD_BLEND_TYPE emOsdBlendType; // 叠加类型,不管是获取还是设置都要设置该字段 BOOL bEncodeBlend; // 是否叠加 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点 BOOL bShowWeek; // 是否显示星期 } NET_OSD_TIME_TITLE; ///@brief 叠加标题用途 typedef enum tagNET_EM_TITLE_TYPE { NET_EM_TITLE_UNKNOWN, // 未知 NET_EM_TITLE_RTINFO, // 实时刻录信息 NET_EM_TITLE_CUSTOM, // 自定义叠加、温湿度叠加 NET_EM_TITLE_TITLE, // 片头信息 NET_EM_TITLE_CHECK, // 校验码 NET_EM_TITLE_SPEEDOMETER, // 测速仪 NET_EM_TITLE_GEOGRAPHY, // 地理信息 NET_EM_TITLE_ATMCARDINFP, // ATM卡号信息 NET_EM_TITLE_CAMERAID, // 摄像机编号 }NET_EM_TITLE_TYPE; ///@brief 编码物件-自定义标题信息 typedef struct tagNET_CUSTOM_TITLE_INFO { BOOL bEncodeBlend; // 是否叠加 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点 char szText[CUSTOM_TITLE_LEN]; // 标题内容 NET_EM_TITLE_TYPE emTitleType; // 叠加标题用途 EM_TITLE_TEXT_ALIGNTYPE emTextAlign; // 文本对齐方式 BYTE byReserved[504]; // 保留字节 } NET_CUSTOM_TITLE_INFO; ///@brief 编码物件-自定义标题 typedef struct tagNET_OSD_CUSTOM_TITLE { DWORD dwSize; NET_EM_OSD_BLEND_TYPE emOsdBlendType; // 叠加类型,不管是获取还是设置都要设置该字段 int nCustomTitleNum; // 自定义标题数量 NET_CUSTOM_TITLE_INFO stuCustomTitle[MAX_CUSTOM_TITLE_NUM]; // 自定义标题 } NET_OSD_CUSTOM_TITLE; ///@brief 自定义标题文本对齐 typedef struct tagNET_OSD_CUSTOM_TITLE_TEXT_ALIGN { DWORD dwSize; int nCustomTitleNum; // 自定义标题数量 EM_TITLE_TEXT_ALIGNTYPE emTextAlign[MAX_CUSTOM_TITLE_NUM]; // 自定义标题文本对齐方式 }NET_OSD_CUSTOM_TITLE_TEXT_ALIGN; ///@brief OSD中的字体方案 typedef enum tagEM_OSD_FONT_SOLUTION { EM_OSD_FONT_SOLUTION_UNKNOWN, // 未知 EM_OSD_FONT_SOLUTION_DFAULT, // 默认字体 "default-font" EM_OSD_FONT_SOLUTION_SIMKAI, // 楷体 "simkai" EM_OSD_FONT_SOLUTION_SIMSUN, // 宋体"simsun" }EM_OSD_FONT_SOLUTION; ///@brief 编码物件-公共配置信息 typedef struct tagNET_OSD_COMM_INFO { DWORD dwSize; double fFontSizeScale; //叠加字体大小放大比例 //当fFontSizeScale≠0时,nFontSize不起作用 //当fFontSizeScale=0时,nFontSize起作用 //设备默认fFontSizeScale=1.0 //如果需要修改倍数,修改该值 //如果需要按照像素设置,则置该值为0,nFontSize的值生效 int nFontSize; //叠加到主码流上的全局字体大小,单位 px, 默认24. //和fFontSizeScale共同作用 int nFontSizeExtra1; //叠加到辅码流1上的全局字体大小,单位 px int nFontSizeExtra2; //叠加到辅码流2上的全局字体大小,单位 px int nFontSizeExtra3; //叠加到辅码流3上的全局字体大小,单位 px int nFontSizeSnapshot; //叠加到抓图流上的全局字体大小, 单位 px int nFontSizeMergeSnapshot; //叠加到抓图流上合成图片的字体大小,单位 px EM_OSD_FONT_SOLUTION emFontSolution; // 叠加到主码流上的字体方案 EM_OSD_FONT_SOLUTION emFontSolutionExtra1; // 叠加到辅码流1上的字体方案 EM_OSD_FONT_SOLUTION emFontSolutionExtra2; // 叠加到辅码流2上的字体方案 EM_OSD_FONT_SOLUTION emFontSolutionExtra3; // 叠加到辅码流3上的字体方案 EM_OSD_FONT_SOLUTION emFontSolutionSnapshot; // 叠加到抓图码流上的字体方案 EM_OSD_FONT_SOLUTION emFontSolutionMergeSnapshot; // 叠加到合成抓图流上的字体方案 } NET_OSD_COMM_INFO; ///@brief 编码物件-变倍叠加配置 typedef struct tagNET_OSD_PTZZOOM_INFO { DWORD dwSize; BOOL bMainBlend; // 是否叠加到主码流 BOOL bPreviewBlend; // 是否叠加到预览码流 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点 int nDisplayTime; // 显示时间,单位为妙,0表示一直显示 } NET_OSD_PTZZOOM_INFO; ///@brief 编码物件-GPS标题显示配置 typedef struct tagNET_OSD_GPS_TITLE { DWORD dwSize; BOOL bEncodeBlend; //叠加到主码流视频编码 }NET_OSD_GPS_TITLE; #define MAX_COUNT_PLANE 32 // 最大人数统计计划个数 ///@brief 每个计划对应的人数统计计划OSD配置 typedef struct tagNET_STATPLAN_INFO { int nPlanID; // 人数统计计划号 BOOL bEncodeBlend; // 是否叠加到主码流 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 EM_TITLE_TEXT_ALIGNTYPE emTextAlign; // 对齐方式 NET_RECT stuRect; // 区域, 坐标取值0~8191 BOOL bShowEnterNum; // 是否显示进入人数 BOOL bShowExitNum; // 是否显示离开人数 BYTE byReserved[128]; // 保留字节 } NET_STATPLAN_INFO; ///@brief 人数统计计划叠加OSD配置 typedef struct tagNET_OSD_NUMBER_STATPLAN { DWORD dwSize; int nRetPlanCount; // 实际的统计计划个数 NET_STATPLAN_INFO stuStatplanInfo[MAX_COUNT_PLANE]; // OSD配置 } NET_OSD_NUMBER_STATPLAN; ///@brief 音频编码模式 typedef enum tatNET_EM_AUDIO_FORAMT { EM_AUDIO_FORMAT_UNKNOWN, // unknown EM_AUDIO_FORMAT_G711A, // G711a EM_AUDIO_FORMAT_PCM, // PCM EM_AUDIO_FORMAT_G711U, // G711u EM_AUDIO_FORMAT_AMR, // AMR EM_AUDIO_FORMAT_AAC, // AAC EM_AUDIO_FORMAT_G726, // G.726 EM_AUDIO_FORMAT_G729, // G.729 EM_AUDIO_FORMAT_ADPCM, // ADPCM EM_AUDIO_FORMAT_MPEG2, // MPEG2 EM_AUDIO_FORMAT_MPEG2L2, // MPEG2-Layer2 EM_AUDIO_FORMAT_OGG, // OGG EM_AUDIO_FORMAT_MP3, // MP3 EM_AUDIO_FORMAT_G7221, // G.722.1 } NET_EM_AUDIO_FORMAT; ///@brief 视频压缩格式 typedef enum tagNET_EM_VIDEO_COMPRESSION { EM_VIDEO_FORMAT_UNKNOWN = -1, // 未知 EM_VIDEO_FORMAT_MPEG4, // MPEG4 EM_VIDEO_FORMAT_MS_MPEG4, // MS-MPEG4 EM_VIDEO_FORMAT_MPEG2, // MPEG2 EM_VIDEO_FORMAT_MPEG1, // MPEG1 EM_VIDEO_FORMAT_H263, // H.263 EM_VIDEO_FORMAT_MJPG, // MJPG EM_VIDEO_FORMAT_FCC_MPEG4, // FCC-MPEG4 EM_VIDEO_FORMAT_H264, // H.264 EM_VIDEO_FORMAT_H265, // H.265 EM_VIDEO_FORMAT_SVAC, // SVAC } NET_EM_VIDEO_COMPRESSION; ///@brief 码流控制模式 typedef enum tagNET_EM_BITRATE_CONTROL { EM_BITRATE_CBR, // 固定码流 EM_BITRATE_VBR, // 可变码流 } NET_EM_BITRATE_CONTROL; ///@brief 画质 typedef enum tagNET_EM_IMAGE_QUALITY { EM_IMAGE_QUALITY_Q10 = 1, // 图像质量10% EM_IMAGE_QUALITY_Q30, // 图像质量30% EM_IMAGE_QUALITY_Q50, // 图像质量50% EM_IMAGE_QUALITY_Q60, // 图像质量60% EM_IMAGE_QUALITY_Q80, // 图像质量80% EM_IMAGE_QUALITY_Q100, // 图像质量100% } NET_EM_IMAGE_QUALITY; ///@brief H264 编码级别 typedef enum tagNET_EM_H264_PROFILE_RANK { EM_PROFILE_UNKNOWN, // 未知类型 EM_PROFILE_BASELINE = 1, // 提供I/P帧,仅支持progressive(逐行扫描)和CAVLC EM_PROFILE_MAIN, // 提供I/P/B帧,支持progressiv和interlaced,提供CAVLC或CABAC EM_PROFILE_EXTENDED, // 提供I/P/B/SP/SI帧,仅支持progressive(逐行扫描)和CAVLC EM_PROFILE_HIGH, // 即FRExt,Main_Profile基础上新增:8x8 intra prediction(8x8 帧内预测), custom // quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式 }NET_EM_H264_PROFILE_RANK; ///@brief 码流类型 typedef enum tagNET_EM_FORMAT_TYPE { EM_FORMAT_TYPE_UNKNOWN, // 未知类型 /*主码流*/ EM_FORMAT_MAIN_NORMAL, // 主码流普通编码 EM_FORMAT_MAIN_MOVEEXAMINE, // 主码流动检编码 EM_FORMAT_MAIN_ALARM, // 主码流报警编码 /*辅码流*/ EM_FORMAT_EXTRA1, // 辅码流1 EM_FORMAT_EXTRA2, // 辅码流2 EM_FORMAT_EXTRA3, // 辅码流3 } NET_EM_FORMAT_TYPE; ///@brief 打包模式 typedef enum tagNET_EM_PACK_TYPE { EM_PACK_UNKOWN, // UNKOWN EM_PACK_DHAV, // DHAV EM_PACK_PS, // ps } NET_EM_PACK_TYPE; ///@brief 主(辅)码流视频格式(f6/f5/bin) typedef struct tagNET_ENCODE_VIDEO_INFO { DWORD dwSize; NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 BOOL bVideoEnable; // 视频使能 NET_EM_VIDEO_COMPRESSION emCompression; // 视频压缩格式 int nWidth; // 视频宽度 int nHeight; // 视频高度 NET_EM_BITRATE_CONTROL emBitRateControl; // 码流控制模式 int nBitRate; // 视频码流(kbps) float nFrameRate; // 视频帧率 int nIFrameInterval; // I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。 NET_EM_IMAGE_QUALITY emImageQuality; // 图像质量 } NET_ENCODE_VIDEO_INFO; ///@brief 主(辅)码流视频格式打包模式配置(f6/f5) typedef struct tagNET_ENCODE_VIDEO_PACK_INFO { DWORD dwSize; NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 NET_EM_PACK_TYPE emPackType; // 打包模式 } NET_ENCODE_VIDEO_PACK_INFO; ///@brief 主(辅)码流视频格式SVC配置(f6) typedef struct tagNET_ENCODE_VIDEO_SVC_INFO { DWORD dwSize; NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 int nSVC; // SVC-T层数 } NET_ENCODE_VIDEO_SVC_INFO; ///@brief 主(辅)码流视频格式profile配置(f6/bin)编码 typedef struct tagNET_ENCODE_VIDEO_PROFILE_INFO { DWORD dwSize; NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 NET_EM_H264_PROFILE_RANK emProfile; // H.264编码级别 } NET_ENCODE_VIDEO_PROFILE_INFO; ///@brief 主(辅)码流音频压缩格式配置 typedef struct tagNET_ENCODE_AUDIO_COMPRESSION_INFO { DWORD dwSize; BOOL bAudioEnable; // 音频使能 NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 NET_EM_AUDIO_FORMAT emCompression; // 音频压缩模式 } NET_ENCODE_AUDIO_COMPRESSION_INFO; ///@brief 主(辅)码流音频格式其他属性配置 typedef struct tagNET_ENCODE_AUDIO_INFO { DWORD dwSize; NET_EM_FORMAT_TYPE emFormatType; // 码流类型,设置和获取时都需要设置值 int nDepth; // 音频采样深度 int nFrequency; // 音频采样频率 int nMode; // 编码码率,不同编码类型定义不同: // "AMR"编码码率 // 0: 4.75kbps, // 1: 5.15 kbps, // 2: 5.9 kbps, // 3: 6.7 kbps, // 4: 7.4 kbps, // 5: 7.95 kbps, // 6: 10.2 kbps, // 7: 12.2 kbps, // G726编码码率 // 0: 40kbps(默认) // 1: 16kbps // 2: 24kbps // 3: 32kbps // 其他: 暂无定义 int nFrameType; // 音频打包模式, 0-DHAV, 1-PS int nPacketPeriod; // 音频打包周期, ms } NET_ENCODE_AUDIO_INFO; ///@brief 抓图类型 typedef enum tagNET_EM_SNAP_TYPE { EM_SNAP_UNKNOWN, // 未知类型 EM_SNAP_NORMAL, // 普通抓图 EM_SNAP_MOVEEXAMINE, // 动检抓图 EM_SNAP_ALARM, // 报警抓图 } NET_EM_SNAP_TYPE; ///@brief 抓图配置 typedef struct tagNET_ENCODE_SNAP_INFO { DWORD dwSize; NET_EM_SNAP_TYPE emSnapType; // 抓图类型 BOOL bSnapEnable; // 定时抓图使能 NET_EM_VIDEO_COMPRESSION emCompression; // 视频压缩格式 int nWidth; // 视频宽度 int nHeight; // 视频高度 float nFrameRate; // 视频帧率 int nQualityRange; // 图像质量取值范围 NET_EM_IMAGE_QUALITY emImageQuality; // 图像质量 } NET_ENCODE_SNAP_INFO; ///@brief 抓图时间配置 typedef struct tagNET_ENCODE_SNAP_TIME_INFO { DWORD dwSize; short shPicTimeInterval; // 定时抓图时间间隔,单位为秒,目前设备支持最大的抓图时间间隔为30分钟 BYTE bPicIntervalHour; // 定时抓图时间间隔小时数 DWORD dwTrigPicIntervalSecond; // 报警触发后每次抓图时间间隔时间 单位秒 } NET_ENCODE_SNAP_TIME_INFO; ///@brief 每个通道对应的配置类型 typedef enum tagNET_EM_CONFIG_TYPE { NET_EM_CONFIG_DAYTIME, // 白天 NET_EM_CONFIG_NIGHT, // 夜晚 NET_EM_CONFIG_NORMAL, // 普通 NET_EM_CONFIG_ADAPTER, // 自适应模式,SDK根据设备当前的模式进行自适应设置和获取 // 自适应模式目前暂时只支持NET_VIDEOIN_IMAGE_INFO配置 } NET_EM_CONFIG_TYPE; ///@brief 通道名称配置 typedef struct tagNET_ENCODE_CHANNELTITLE_INFO { DWORD dwSize; char szChannelName[MAX_CHANNEL_NAME_LEN]; // 通道名称 } NET_ENCODE_CHANNELTITLE_INFO; ///@brief 延时模式 typedef enum tagEM_DELAY_MODE { EM_DELAY_MODE_UNKNOWN = -1, // 未知 EM_DELAY_MODE_LOW_DELAY, // 低延时 EM_DELAY_MODE_HIGH_DELAY, // 高延时 }EM_DELAY_MODE; ///@brief 通道编码延时配置 typedef struct tagNET_ENCODE_DELAY_MODE_INFO { DWORD dwSize; // 结构体大小 EM_DELAY_MODE emDelayMode; // 延时模式 }NET_ENCODE_DELAY_MODE_INFO; ///@brief 通道模式 typedef enum tagEM_SIGNAL_FORMAT { EM_SIGNAL_FORMAT_UNKNOWN, // 未知 EM_SIGNAL_FORMAT_HDMI, // "HDMI" EM_SIGNAL_FORMAT_VGA, // "VGA" }EM_SIGNAL_FORMAT; ///@brief 通道编码信号模式配置 typedef struct tagNET_ENCODE_SIGNAL_FORMAT_INFO { DWORD dwSize; // 结构体大小 EM_SIGNAL_FORMAT emSignalFormat; // 信号模式 }NET_ENCODE_SIGNAL_FORMAT_INFO; ///@brief 音频输入类型 typedef enum tagNET_EM_AUDIOIN_SOURCE_TYPE { NET_EM_AUDIOIN_SOURCE_UNKNOW, // 未知 NET_EM_AUDIOIN_SOURCE_COAXIAL, // Coaxial NET_EM_AUDIOIN_SOURCE_BNC, // BNC NET_EM_AUDIOIN_SOURCE_HDCVI_BNC, // HDCVI_BNC NET_EM_AUDIOIN_SOURCE_LINEIN, // LineIn NET_EM_AUDIOIN_SOURCE_LINEIN1, // LineIn1 NET_EM_AUDIOIN_SOURCE_LINEIN2, // LineIn2 NET_EM_AUDIOIN_SOURCE_LINEIN3, // LineIn3 NET_EM_AUDIOIN_SOURCE_MIC, // Mic NET_EM_AUDIOIN_SOURCE_MIC1, // Mic1 NET_EM_AUDIOIN_SOURCE_MIC2, // Mic2 NET_EM_AUDIOIN_SOURCE_MIC3, // Mic3 NET_EM_AUDIOIN_SOURCE_MICOUT, // MicOut NET_EM_AUDIOIN_SOURCE_REMOTE, // Remote NET_EM_AUDIOIN_SOURCE_REMOTE1, // Remote1 NET_EM_AUDIOIN_SOURCE_REMOTE2, // Remote2 NET_EM_AUDIOIN_SOURCE_REMOTE3, // Remote3 } NET_EM_AUDIOIN_SOURCE_TYPE; ///@brief 音频输入类型配置 typedef struct tagNET_ENCODE_AUDIO_SOURCE_INFO { DWORD dwSize; int nMaxAudioInSource; // 输入类型最大个数 int nRetAudioInSource; // 输入类型实际返回个数 NET_EM_AUDIOIN_SOURCE_TYPE emAudioInSource[24]; // 输入源类型 } NET_ENCODE_AUDIO_SOURCE_INFO; ///@brief 音频输入降噪配置 typedef struct tagNET_AUDIOIN_DENOISE_INFO { DWORD dwSize; BOOL bEnable; // 降噪使能 } NET_AUDIOIN_DENOISE_INFO; ///@brief 音频输入音量配置 typedef struct tagNET_AUDIOIN_VOLUME_INFO { DWORD dwSize; int nVolume; // 音频输入音量 } NET_AUDIOIN_VOLUME_INFO; ///@brief 音频输出音量配置 typedef struct tagNET_AUDIOOUT_VOLUME_INFO { DWORD dwSize; int nVolume; // 音频输出音量 } NET_AUDIOOUT_VOLUME_INFO; ///@brief 音频输出模式 typedef enum tagEM_AUDIOOUT_MODE { EM_AUDIOOUT_MODE_UNKNOWN, // 未知 EM_AUDIOOUT_MODE_SUBCARD, // 子卡音频输出 EM_AUDIOOUT_MODE_MAINCARD, // 主控音频输出 EM_AUDIOOUT_MODE_ALL, // 同时输出 } EM_AUDIOOUT_MODE; ///@brief 音频输出模式配置 typedef struct tagNET_AUDIOOUT_MODE_INFO { DWORD dwSize; EM_AUDIOOUT_MODE emAudioOutMode; // 音频输出模式 } NET_AUDIOOUT_MODE_INFO; ///@brief 切换模式 typedef enum tagNET_EM_SWITCH_MODE { NET_EM_SWITCH_MODE_WIGHT, // 不切换,总是使用白天配置 NET_EM_SWITCH_MODE_LIGHT, // 根据亮度切换 NET_EM_SWITCH_MODE_TIME, // 根据时间切换 NET_EM_SWITCH_MODE_NIGHT, // 不切换,总是使用夜晚配置 NET_EM_SWITCH_MODE_NORMAL, // 使用普通配置 NET_EM_SWITCH_MODE_ICR, // 按ICR(双滤光片切换器)的状态切换日夜 } NET_EM_SWITCH_MODE; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_MODE_ICR_CAPS 入参 typedef struct tagNET_IN_VIDEOIN_MODE_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_VIDEOIN_MODE_CAPS; ///@brief CLIENT_GetDevCaps 接口 NET_VIDEOIN_MODE_ICR_CAPS 命令出参 typedef struct tagNET_OUT_VIDEOIN_MODE_CAPS { DWORD dwSize; BOOL bSwitchByDayNight; // 是否支持ICR方式切换日夜模式。即VideoInMode配置的Mode是否支持2 默认false,不支持 }NET_OUT_VIDEOIN_MODE_CAPS; ///@brief 大致日出/日落时间 typedef struct tagNET_SUN_TIME { int nHour; // 时 int nMinute; // 分 int nSecond; // 秒 } NET_SUN_TIME; ///@brief 切换模式配置 typedef struct tagNET_VIDEOIN_SWITCH_MODE_INFO { DWORD dwSize; NET_EM_SWITCH_MODE emSwitchMode; // 切换模式 /*大致日出和日落时间,日落之后日出之前,将采用夜晚特殊的配置,emSwitchMode为NET_EM_SWITCH_MODE_TIME是有效*/ NET_SUN_TIME stuSunRiseTime; // 大致日出时间 NET_SUN_TIME stuSunSetTime; // 大致日落时间 } NET_VIDEOIN_SWITCH_MODE_INFO; ///@brief 色彩风格 typedef enum tagEM_COLOR_STYLE_TYPE { EM_COLOR_STYLE_UNKNOWN, // 未知 EM_COLOR_STYLE_GENTLE, // 柔和 EM_COLOR_STYLE_STANDARD, // 标准 EM_COLOR_STYLE_FLAMBOYANT, // 艳丽 } EM_COLOR_STYLE_TYPE; ///@brief 视频输入颜色配置 typedef struct tagNET_VIDEOIN_COLOR_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 int nBrightness; // 亮度0-100 int nContrast; // 对比度0-100 int nSaturation; // 饱和度0-100 int nGamma; // 伽马值0-100 EM_COLOR_STYLE_TYPE emColorStyle; // 色彩风格 int nHue; // 色调值0-100 int nChromaSuppress; // 色彩抑制等级值0-100 DH_TSECT stuTimeSection; // 对应的时间段 } NET_VIDEOIN_COLOR_INFO; ///@brief LED屏显示颜色 typedef enum tagNET_EM_FLIP_MODE { NET_EM_FLIP_MODE_UNKNOWN = 0, // 未知 NET_EM_FLIP_MODE_MANUAL, // 手动 NET_EM_FLIP_MODE_AUTO, // 自动 }NET_EM_FLIP_MODE; ///@brief 图像旋转设置能力配置,对应枚举NET_EM_CFG_VIDEO_IMAGE_CTRL typedef struct tagNET_EM_CFG_VIDEO_IMAGE_CTRL_INFO { DWORD dwSize; BOOL bMirror; // 是否支持画面镜像功能 BOOL bFlip; // 是否支持画面180翻转功能 BOOL bFreeze; // 是否支持图像冻结功能 BOOL bVerticalFlip; // 是否开启垂直旋转180度功能 BOOL bHorizontalFlip; // 是否开启水平旋转180度功能 int nRotate90; // 90顺逆时针旋转标志 0-不旋转,1-顺时针90°,2-逆时针90° int nStable; // 支持图像防抖的功能掩码 0关闭,支持按位或 1-开启电子防抖,2-开启光学防抖,4-开启控件防抖 int nStableSensitivity; // 是否支持电子防抖灵敏度, 取值范围[0-100] NET_EM_FLIP_MODE emFlipMode; // 画面翻转模式 }NET_EM_CFG_VIDEO_IMAGE_CTRL_INFO; ///@brief 图像属性配置 typedef struct tagNET_VIDEOIN_IMAGE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要制定 BOOL bMirror; // 是否开启画面镜像功能 BOOL bFlip; // 是否开启画面翻转功能 int nRotate90; // 0-不旋转,1-顺时针90°,2-逆时针90° } NET_VIDEOIN_IMAGE_INFO; ///@brief 图像防抖模式 typedef enum tagNET_EM_STABLE_TYPE { NET_EM_STABLE_OFF, // 关闭 NET_EM_STABLE_ELEC, // 电子防抖 NET_EM_STABLE_LIGHT, // 光学防抖 NET_EM_STABLE_CONTORL = 4, // 控件防抖 } NET_EM_STABLE_TYPE; ///@brief 图像防抖配置 typedef struct tagNET_VIDEOIN_STABLE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_STABLE_TYPE emStableType; // 防抖配置 } NET_VIDEOIN_STABLE_INFO; ///@brief 自动光圈配置 typedef struct tagNET_VIDEOIN_IRISAUTO_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 BOOL bIrisAuto; //是否使能自动光圈 } NET_VIDEOIN_IRISAUTO_INFO; ///@brief 图像增强配置 typedef struct tagNET_VIDEOIN_IMAGEENHANCEMENT_INFO { DWORD dwSize; BOOL bEnable; // 使能 int nLevel; // 图像增强等级 }NET_VIDEOIN_IMAGEENHANCEMENT_INFO; ///@brief 双快门的支持类型 typedef enum tagEM_DOUBLE_EXPOSURE_TYPE { EM_DOUBLE_EXPOSURE_UNKNOWN = -1, // 未知 EM_DOUBLE_EXPOSURE_NOT_SUPPORT, // 不支持 EM_DOUBLE_EXPOSURE_SUPPORT_FULL_FRAM, // 支持双快门全帧率,即图像和视频只有快门参数不同 EM_DOUBLE_EXPOSURE_SUPPORT_HALF_FRAM, // 支持双快门半帧率,即图像和视频快门及白平衡参数均不同 EM_DOUBLE_EXPOSURE_ALL, // 支持双快门全帧率和半帧率 } EM_DOUBLE_EXPOSURE_TYPE; ///@brief 通用曝光属性配置 typedef struct tagNET_VIDEOIN_EXPOSURE_NORMAL_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_EXPOSURE_MODE emExposureMode; // 曝光模式 int nAntiFlicker; // 防闪烁0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁 int nCompensation; // 曝光补偿0-100 int nGain; // 增益值 int nGainMin; // 增益下限0-100 int nGainMax; // 增益上限0-100 int nExposureIris; // 光圈值,模式为光圈优先时有效,0-100 double dbExposureValue1; // 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms double dbExposureValue2; // 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms,且必须不小于"ExposureValue1"取值 BOOL bIrisAuto; // 自动光圈使能 EM_DOUBLE_EXPOSURE_TYPE emDoubleExposure; // 双快门的支持类型 } NET_VIDEOIN_EXPOSURE_NORMAL_INFO; ///@brief 其他曝光属性配置 typedef struct tagNET_VIDEOIN_EXPOSURE_OTHER_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 BOOL bSlowShutter; // 慢快门使能 int nSlowSpeed; // 慢曝光速度等级 int nSlowAutoExposure; // 慢曝光 int nRecoveryTime; // 0-表示不恢复,其他表示恢复的时间,单位为秒 int nIrisMin; // 光圈区间下限,SupportIrisRange能力为true时可设置,0~100 (光圈优先下设置,与Iris互斥) int nIrisMax; // 光圈区间下限,0~100,取值不小于"IrisMin"的取值(光圈优先下设置,与Iris互斥) } NET_VIDEOIN_EXPOSURE_OTHER_INFO; ///@brief 曝光快门属性配置 typedef struct tagNET_VIDEOIN_EXPOSURE_SHUTTER_INFO { DWORD dwSize; BOOL bAutoSyncPhase; // 自动相位调节使能 float fShutter; // 快门值,AutoSyncPhase为true时有效,毫秒为单位,取值0.1ms~80ms, // 且必须不小于NET_VIDEOIN_EXPOSURE_NORMAL_INFO中的"ExposureValue1"、不大于"ExposureValue2" int nPhase; // 相位值,取值0~360° } NET_VIDEOIN_EXPOSURE_SHUTTER_INFO; ///@brief 背光配置 typedef struct tagNET_VIDEOIN_BACKLIGHT_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_BACK_MODE emBlackMode; // 背光模式 NET_EM_BLACKLIGHT_MODE emBlackLightMode; // 背光补偿模式 NET_RECT stuBacklightRegion; // 背光补偿区域 int nWideDynamicRange; // 宽动态值 int nGlareInhibition; // 强光抑制0-100,emBlackMode为NET_EM_BACKLIGHT_MODE_GLAREINHIBITION时生效 } NET_VIDEOIN_BACKLIGHT_INFO; ///@brief 场景自适应对比度强度配置,背光模式为场景自适应时有效 typedef struct tagNET_VIDEOIN_INTENSITY_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_BACK_INTENSITY_MODE emIntensityMode; // 场景自适应对比度强度调节模式 int nIntensity; // SSA手动调整强度0-100, emIntensityMode为NET_EM_INTENSITY_MANUAL时有效 } NET_VIDEOIN_INTENSITY_INFO; ///@brief 白平衡配置 typedef struct tagNET_VIDEOIN_WHITEBALANCE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_WHITEBALANCE_TYPE emWhiteBalanceType; //白平衡模式 int nGainRed; // 红色增益调节0-100,白平衡为"Custom"模式下有效 int nGainBlue; // 蓝色增益调节0-100,白平衡为"Custom"模式下有效 int nGainGreen; // 绿色增益调节0-100,白平衡为"Custom"模式下有效 int nColorTemperature; // 色温等级, 白平衡为"CustomColorTemperature"模式下有效 } NET_VIDEOIN_WHITEBALANCE_INFO; ///@brief 日夜切换模式 typedef enum tagNET_EM_DAYNIGHT_TYPE { NET_EM_DAYNIGHT_COLOR, // 总是彩色 NET_EM_DAYNIGHT_AUTO, // 根据亮度自动切换 NET_EM_DAYNIGHT_WHITEBLACK, // 总是黑白 } NET_EM_DAYNIGHT_TYPE; ///@brief 日夜模式配置 typedef struct tagNET_VIDEOIN_DAYNIGHT_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_DAYNIGHT_TYPE emDayNightType; // 日夜切换模式 int nDayNightSensitivity; // 日夜模式切换灵敏度,范围1-3 int nDayNightSwitchDelay; // 日夜模式切换延迟时间,单位秒,范围2-10 } NET_VIDEOIN_DAYNIGHT_INFO; ///@brief 日夜模式ICR切换类型配置 typedef struct tagNET_VIDEOIN_DAYNIGHT_ICR_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_ICR_TYPE emType; // ICR切换类型 } NET_VIDEOIN_DAYNIGHT_ICR_INFO; ///@brief 灯光模式 typedef enum tagNET_EM_LIGHTING_MODE { NET_EM_LIGHTING_UNKNOW, // 未知模式 NET_EM_LIGHTING_MANUAL, // 手动模式 NET_EM_LIGHTING_AUTO, // 自动模式 NET_EM_LIGHTING_OFF, // 关闭模式 NET_EM_LIGHTING_ZOOMPRIO, // 倍率优先模式 NET_EM_LIGHTING_TIMING, // 定时模式,本模式时LightingSchedule配置生效 NET_EM_LIGHTING_SMARTLIGHT, // 智能灯光模式(仅球机使用),如果在模式选择本模式,使用新加的SmartLighting配置 NET_EM_LIGHTING_EXCLUSIVEMANUAL, // 支持多种灯光,但手动模式下只使用一种灯光,此时使用ManualLighting配置 NET_EM_LIGHTING_FORCEON, // 强制打开灯光(需求要保持状态) } NET_EM_LIGHTING_MODE; ///@brief 补光灯配置 typedef struct tagNET_VIDEOIN_LIGHTING_INFO { DWORD dwSize; NET_EM_LIGHTING_MODE emLightMode; // 灯光模式 int nCorrection; // 灯光补偿值,倍率优先时有效0-4 int nSensitive; // 灯光灵敏度,倍率优先时有效,0-5,默认为3 int nNearLight; // 近光灯亮度0-100 int nFarLight; // 远光灯亮度0-100 } NET_VIDEOIN_LIGHTING_INFO; ///@brief 透雾模式 typedef enum tagNET_EM_DEFOG_MODE { NET_EM_DEFOG_UNKNOW, // 未知模式 NET_EM_DEFOG_OFF, // 关闭 NET_EM_DEFOG_AUTO, // 自动 NET_EM_DEFOG_MANAUL, // 手动 }NET_EM_DEFOG_MODE; ///@brief 大气光模式枚举 typedef enum tagNET_EM_INTENSITY_MODE { NET_EM_INTENSITY_MODE_UNKNOW,//未知方式 NET_EM_INTENSITY_MODE_AUTO, //自动 NET_EM_INTENSITY_MODE_MANUAL, //手动 }NET_EM_INTENSITY_MODE; ///@brief 透雾配置 typedef struct tagNET_VIDEOIN_DEFOG_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_DEFOG_MODE emDefogMode; // 透雾模式 int nIntensity; // 强度0-100 NET_EM_INTENSITY_MODE emIntensityMode; //大气光模式 int nLightIntensityLevel; //大气光强度(0-15) BOOL bCamDefogEnable; //光学去雾使能 (TRUE使能,FALSE去使能) } NET_VIDEOIN_DEFOG_INFO; ///@brief 聚焦模式配置 typedef struct tagNET_VIDEOIN_FOCUSMODE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_FOCUS_MODE emFocusMode; // 聚焦模式 } NET_VIDEOIN_FOCUSMODE_INFO; ///@brief 聚焦灵敏度 typedef enum tagNET_EM_SENSITIVITY_TYPE { NET_EM_SENSITIVITY_HIGH, // 高 NET_EM_SENSITIVITY_DEFAULT, // 默认 NET_EM_SENSITIVITY_LOW, // 低 } NET_EM_SENSITIVITY_TYPE; ///@brief 红外光聚焦修正模式 typedef enum tagNET_EM_IRC_TYPE { NET_EM_IRC_DONOT, // 不修正 NET_EM_IRC_DOIT, // 修正 NET_EM_IRC_AUTO, // 自动修正 } NET_EM_IRC_TYPE; ///@brief 聚焦信息配置 typedef struct tagNET_VIDEOIN_FOCUSVALUE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_SENSITIVITY_TYPE emSensitivity; // 聚焦灵敏度 NET_EM_IRC_TYPE emIRCorrection; // 红外光聚焦修正 NET_EM_FOCUS_LIMITSELECT_MODE emFocusLimitSelectMode; // 聚焦极限选取模式 int nFocusLimit; // 近端聚焦极限建议值,单位毫米 BOOL bAutoFocusTrace; // 变焦跟踪使能 } NET_VIDEOIN_FOCUSVALUE_INFO; ///@brief 锐度配置 typedef struct tagNET_VIDEOIN_SHARPNESS_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_SHARPNESS_MODE emSharpnessMode; // 锐度模式 int nSharpness; // 锐度值0-100,手动时有效 int nLevel; // 锐度抑制等级,0-100,0表示不抑制 } NET_VIDEOIN_SHARPNESS_INFO; ///@brief 3D降噪控制类型 typedef enum tagNET_EM_3D_TYPE { NET_EM_3D_UNKONW, // 未知 NET_EM_3D_OFF, // 关闭 NET_EM_3D_AUTO, // 自动 } NET_EM_3D_TYPE; ///@brief 高级降噪类型 typedef enum tagNET_EM_ALGORITHM_TYPE { NET_EM_ALGORITHM_UNKNOW, // 未知 NET_EM_ALGORITHM_OFF, // 关闭 NET_EM_ALGORITHM_MANUAL, // 手动 }NET_EM_ALGORITHM_TYPE; ///@brief 高级降噪配置 typedef struct tagNET_DENOISE_ALGORITHM { NET_EM_ALGORITHM_TYPE emAlgorithmType; // 高级降噪等级, NET_EM_ALGORITHM_MANUAL时空域和时域有效 int nTnfLevel; // 时域等级 int nSnfLevel; //空域等级 BYTE bReserved[256]; // 保留字节 } NET_DENOISE_ALGORITHM; ///@brief 通用降噪配置 typedef struct tagNET_VIDEOIN_DENOISE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 BOOL b2DEnable; // 2D降噪使能 int n2DLevel; // 2D降噪等级0-100, b2DEnable为TRUE时有效 NET_DENOISE_ALGORITHM stuAlgorithm; // 高级降噪配置 } NET_VIDEOIN_DENOISE_INFO; ///@brief 3D降噪配置 typedef struct tagNET_VIDEOIN_3D_DENOISE_INFO { DWORD dwSize; NET_EM_CONFIG_TYPE emCfgType; // 配置类型,获取和设置时都要指定 NET_EM_3D_TYPE em3DType; // 3D降噪控制类型 int nAutoLevel; // 3D降噪等级,em3DType为NET_EM_3D_AUTO时有效 } NET_VIDEOIN_3D_DENOISE_INFO; ///@brief 优先聚焦模式 typedef struct tagNET_PRIOR_FOCUSMODE_INFO { unsigned int nPriorFocusMode; // 聚焦模式:0:近景 1:远景 BYTE byReserved[256]; // 保留字节 }NET_PRIOR_FOCUSMODE_INFO; ///@brief 聚焦扩展配置(对应命令 NET_EM_CFG_VIDEOIN_FOCUSEX) typedef struct tagNET_VIDEOIN_FOCUS_INFO_EX { DWORD dwSize; // 结构体的大小 int nPriorFocusModeNum; // 优先聚焦模式个数 NET_PRIOR_FOCUSMODE_INFO stuPriorFocusMode[8]; // 优先聚焦模式 }NET_VIDEOIN_FOCUS_INFO_EX; ///@brief 近光灯 typedef struct tagNET_NEAR_LIGHT { int nLight; // 灯光亮度百分比值,0关闭 (1~100)灯光亮度百分比 int nAngle; // 激光灯角度归一化值, 0~100 BYTE byReserved[128]; // 保留字节 }NET_NEAR_LIGHT; ///@brief 中光灯 typedef struct tagNET_MIDDLE_LIGHT { BOOL bEnable; // 使能 int nLight; // 灯光亮度百分比值,0关闭 (1~100)灯光亮度百分比 int nAngle; // 激光灯角度归一化值, 0~100 BYTE byReserved[132]; // 保留字节 }NET_MIDDLE_LIGHT; ///@brief 远光灯 typedef struct tagNET_FAR_LIGHT { int nLight; // 灯光亮度百分比值,0关闭 (1~100)灯光亮度百分比 int nAngle; // 激光灯角度归一化值, 0~100 BYTE byReserved[128]; // 保留字节 }NET_FAR_LIGHT; ///@brief 每个通道对应的配置类型 typedef enum tagNET_EM_CONFIGEX_TYPE { NET_EM_CONFIGEX_REALTIME, // 即时生效 NET_EM_CONFIGEX_DAYTIME, // 白天 NET_EM_CONFIGEX_NIGHT, // 夜晚 NET_EM_CONFIGEX_NORMAL, // 普通 } NET_EM_CONFIGEX_TYPE; ///@brief 补光灯配置的扩展(对应命令 NET_EM_CFG_VIDEOIN_LIGHTINGEX) typedef struct tagNET_VIDEOIN_LIGHTINGEX_INFO { DWORD dwSize; NET_EM_CONFIGEX_TYPE emCfgType; // 配置类型,获取和设置时都要制定 NET_EM_LIGHTING_MODE emLightMode; // 灯光模式 int nCorrection; // 灯光补偿,倍率优先时有效,范围从(0~4)切换到(0~100),存在两种范围,没有能力区分。建议用(0~100) int nSensitive; // 灯光灵敏度,倍率优先时有效,范围0~5,默认3 int nTimes; // 补光灯开灯时间,自动模式有效,单位:秒 int nNearLight; // 近光灯数量 int nMiddleLight; // 中光灯数量 int nFarLight; // 远光灯数量 BYTE byReserved[4]; // 保留字节,用于字节对齐 NET_NEAR_LIGHT stuNearLight[4]; // 近光灯组 NET_MIDDLE_LIGHT stuMiddleLight[4]; // 中光灯组 NET_FAR_LIGHT stuFarLight[4]; // 远光灯组 }NET_VIDEOIN_LIGHTINGEX_INFO; ///@brief 可视域状态信息(对应命令 NET_EM_CFG_VIDEOIN_VIEWRANGESTATUS) typedef struct tagNET_CFG_VIDEOIN_VIEWRANGESTATUS_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 double dbAzimuthH; // 水平方位角度 单位:度,-180~180 逆时针转动为正方向 double dbAzimuthV; // 垂直方位角度 单位:度,-90~90 double dbInclinationH; // 水平倾斜角度 单位:度,-90~90 double dbHeight; // 相机安装高度 单位:米,0~50 }NET_CFG_VIDEOIN_VIEWRANGESTATUS_INFO; ///@brief 补光灯方案 typedef enum tagEM_LIGHTING_SCHEME_MODE { EM_LIGHTING_SCHEME_MODE_UNKNOWN, // 未知类型 EM_LIGHTING_SCHEME_MODE_MIX, // 柔光方案 EM_LIGHTING_SCHEME_MODE_WHITE, // 白光方案 EM_LIGHTING_SCHEME_MODE_NORMAL, // 支持柔光双色方案 EM_LIGHTING_SCHEME_MODE_INFRARED, // 红外补光方案 EM_LIGHTING_SCHEME_MODE_AIMODE, // 智能补光方案 EM_LIGHTING_SCHEME_MODE_OFF, // 关闭夜视补光方案 }EM_LIGHTING_SCHEME_MODE; ///@brief 灯光方案配置 (对应命令 NET_EM_CFG_VIDEOIN_LIGHTING_SCHEME) typedef struct tagNET_CFG_VIDEOIN_LIGHTING_SCHEME_INFO { DWORD dwSize; // 结构体大小 int nModeNum; // 灯光方案个数 EM_LIGHTING_SCHEME_MODE emMode[8]; // 灯光方案 元素0开始分别表示 白天、夜晚、普通、顺光、一般逆光、强逆光、低照度、自定义 }NET_CFG_VIDEOIN_LIGHTING_SCHEME_INFO; ///@brief 警戒灯光类型 typedef enum tagEM_ALARM_LIGHT_TYPE { EM_ALARM_LIGHT_TYPE_UNKNOWN, // 未知类型 EM_ALARM_LIGHT_TYPE_INFRARED, // 红外灯 EM_ALARM_LIGHT_TYPE_WHITE, // 白光灯 EM_ALARM_LIGHT_TYPE_LASER, // 激光灯 EM_ALARM_LIGHT_TYPE_REDBLUE, // 红蓝警示灯 }EM_ALARM_LIGHT_TYPE; ///@brief 警戒灯光条件设置 typedef enum tagEM_ALARM_LIGHT_CONDITION_TYPE { EM_ALARM_LIGHT_CONDITION_UNKNOWN, // 未知类型 EM_ALARM_LIGHT_CONDITION_BY_VIDEOSTATUS, // 根据图像的状态: 事件发生时取图像的状态,图像判断当前场景是否需要亮起灯光 EM_ALARM_LIGHT_CONDITION_BY_TIME, // 根据时间段 EM_ALARM_LIGHT_CONDITION_BY_FORCE, // 无附加条件、事件触发即强制灯光亮起 }EM_ALARM_LIGHT_CONDITION_TYPE; ///@brief 警戒灯光详细配置 typedef struct tagNET_CFG_ALARM_LIGHTING_DETAIL_INFO { BOOL bEnable; // 使能,如果true,说明该灯有警戒功能 EM_ALARM_LIGHT_TYPE emLightType; // 灯光类型 UINT nLightDuration; // 灯光保持常亮或闪烁的时间,单位秒 int nBrightness; // 亮度 0 ~ 100 EM_ALARM_LIGHT_CONDITION_TYPE emLightCondition; // 亮起条件 BYTE bReserved[236]; // 保留字段 }NET_CFG_ALARM_LIGHTING_DETAIL_INFO; ///@brief 警戒灯光配置 (对应命令 NET_EM_CFG_VIDEOIN_ALARM_LIGHTING ) typedef struct tagNET_CFG_VIDEOIN_ALARM_LIGHTING_INFO { DWORD dwSize; // 结构体大小 int nValidDetail; // stuDetail 有效个数 NET_CFG_ALARM_LIGHTING_DETAIL_INFO stuDetail[8]; // 警戒灯光详细配置 }NET_CFG_VIDEOIN_ALARM_LIGHTING_INFO; ///@brief 智能规则检测,根据检测区域自动曝光配置 (对应命令 NET_EM_CFG_VIDEOIN_FACE_AUTOEXPOSURE ) typedef struct tagNET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启 unsigned int nInterval; // 2A曝光间隔检测时间:当前信息离开画面,画面亮度保持的时间,单位秒,范围[0, 100] unsigned int nTargetBrightness; // 亮度等级,范围[0, 100] }NET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO; ///@brief 抓图模式配置 typedef struct tagNET_SNAP_MODE { DWORD dwSize; int nMode; // 0自动抓图,1手动抓图,2关闭抓图 BOOL bDirectStorageMode; // 直存模式,TRUE打开,FALSE关闭 }NET_SNAP_MODE; ///@brief 刻录光盘编码计划(对应命令 CFG_CMD_ENCODEPLAN),每个通道(包括画中画通道)一个配置结构体 typedef struct tagNET_ENCODE_PLAN_INFO { DWORD dwSize; BOOL bEnable; // 通道是否需要配置,FALSE:没有此通道,TRUE:此通道可用 unsigned int nExpectTime; // 业务预期时长 整型,单位:分钟 CAPTURE_SIZE emResolution; // 视频分辨率 unsigned int nBitRate; // 视频固定码流值(kbps) unsigned int nPacketSize; // 单个刻录文件打包大小(KB) }NET_ENCODE_PLAN_INFO; ///@brief 合成通道配置(对应命令 NET_EM_CFG_COMPOSE_CHANNEL) typedef struct tagNET_COMPOSE_CHANNEL_INFO { DWORD dwSize; DH_SPLIT_MODE emSplitMode; // 分割模式 int nChannelCombination[CFG_MAX_VIDEO_CHANNEL_NUM]; // 割模式下的各子窗口显示内容 int nChannelCount; // 分割窗口数量 } NET_COMPOSE_CHANNEL_INFO; ///@brief 刻录参数配置 (NET_EM_CFG_BURN_PARAM) typedef struct tagNET_BURN_PARAM_INFO { DWORD dwSize; int nChannelCount; // 有效刻录通道个数 int nChannels[64]; // 刻录通道 NET_BURN_MODE emMode; // 刻录模式 NET_BURN_RECORD_PACK emFormat; // 刻录格式 UINT nBurnFileLength; // 刻录文件长度,单位为MB }NET_BURN_PARAM_INFO; ///@brief 合成通道的预案信息 typedef struct tagNET_COMPOSE_PLAN_DETAIL_INFO { char szName[64]; // 预案名称, 用户自定义 DH_SPLIT_MODE emSplitMode; // 分割模式 int nChannelCombinationNum; // 分割模式下的各子窗口有效个数 int nChannelCombination[64]; // 分割模式下的各子窗口显示内容; int nAudioOutNum; // 输出音频通道个数 int nAudioOutChn[4]; // 输出音频通道信息 BYTE bReserved[676]; // 保留字节 }NET_COMPOSE_PLAN_DETAIL_INFO; ///@brief 合成通道的预案分割配置 ( NET_EM_CFG_COMPOSE_PLAN ) typedef struct tagNET_COMPOSE_PLAN_INFO { DWORD dwSize; BOOL bEnable; // 预案配置是否开启 int nPlansNum; // 合成通道预案有效个数 NET_COMPOSE_PLAN_DETAIL_INFO stuPlans[4]; // 合成通道预案信息 }NET_COMPOSE_PLAN_INFO; ///@brief 乐清外接灯光配置(NET_EM_CFG_YUEQING_SUPPLYLIGHTING) typedef struct tagNET_YUEQING_SUPPLYLIGHTING_INFO { DWORD dwSize; BOOL bTimeEnable; // 定时控制使能(放弃使用) BOOL bManualEnable; // 手动控制使能,true : 打开 false : 关闭 unsigned int nPreferentialMode; // 补光灯控制状态 0 : 光敏感控制 1:手动控制 2:定时控制 unsigned int nBrightness; // 补光灯亮度 范围【1~255】 DH_TSECT stuTimeSection[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 布撤防时间段 }NET_YUEQING_SUPPLYLIGHTING_INFO; ///@brief 分页获取信息标注信息列表输入参数(CLIENT_ScenicSpotGetPointInfos) typedef struct tagNET_IN_SCENICSPOT_GETPOINTINFOS_INFO { DWORD dwSize; int nChannelID; // 通道号 int nOffset; // 从第几位开始获取(最大 255) int nLimit; // 获取几个信息点结构(从 0 开始) }NET_IN_SCENICSPOT_GETPOINTINFOS_INFO; ///@brief 坐标 typedef struct tagNET_POINT_INFO { DH_POINT stuMasterPoint; // 主相机标定点 DH_POINT stuSlavePoint; // 从相机(球机)标定点 BYTE byReserved[256]; // 保留字段 }NET_POINT_INFO; ///@brief 坐标 typedef struct { int nHorizontalAngle; // 水平角度 int nVerticalAngle; // 垂直角度 int nMagnification; // 放大倍数 } POSTION; ///@brief 空间排除信息 typedef struct tagNET_POSTIONF { float fHorizontalAngle; // 水平角度 [-1,1] float fVerticalAngle; // 垂直角度 [-1,1] float fMagnification; // 放大倍数 [-1,1] } NET_POSTIONF; ///@brief 多目主从跟踪标定点对 typedef struct tagNET_POINT_PAIR_EX { int nCaliSceneID; // 标定场景序号,拼接后的全景画面可以分成多个场景进行标定 PTZ_SPACE_UNIT stuSlaveCenter; // 标定第一目时,球机转到和第一目场景近似的地方,记下此时球机中心点坐标 NET_POINT_INFO stuPoint[16]; // 在该场景固定球机后,记录两个画面的像素点坐标对应关系 int nEffectiveNumber; // stuPoint 有效个数 float fMasterZoom; // 天枢相机(枪球一体设备),枪机具备变倍功能,智能场景恢复时,根据这个值调整倍率,范围[0,1] BYTE byReserved[252]; // 保留字段 } NET_POINT_PAIR_EX; ///@brief 多目相机标定配置 typedef struct tagNET_CALIBRATE_MATRIX_ELEMENT_EX { char szMasterSN[48]; // 主设备序列号 char szSlaveSN[48]; // 从设备序列号 PTZ_SPACE_UNIT stuExpectRatio; // 期望倍率(可选) NET_POINT_PAIR_EX stuPointPairEx[8]; // 多目主从跟踪标定点对 int nEffectiveNumber; // stuPointPairEx 有效个数 BYTE byReserved[256]; // 保留字段 } NET_CALIBRATE_MATRIX_ELEMENT_EX; ///@brief 主从式跟踪器标定矩阵扩展配置 多目情况下使用(对应 NET_EM_CFG_CALIBRATE_MATRIX 命令) typedef struct tagNET_MULTI_SENSOR_INFO { DWORD dwSize; DWORD nMaxCalibElement; // 主从跟踪器标定矩阵配置元素最大个数(用户填写) DWORD nRetCalibElement; // 主从跟踪器标定矩阵配置元素实际个数(仅是获取时有效) NET_CALIBRATE_MATRIX_ELEMENT_EX *pstCaliMatrixElementEx; // 内存由用户申请 } NET_MULTI_SENSOR_INFO; ///@brief 标定模式 typedef enum tagNET_EM_CALIBRATION_MODES { NET_EM_CALIBRATION_MODES_UNKNOWN, // 未知标定 NET_EM_CALIBRATION_MODES_AUTO, // 自动标定 NET_EM_CALIBRATION_MODES_MANUAL, // 手动标定 NET_EM_CALIBRATION_MODES_SEMIAUTO, // 半自动标定 NET_EM_CALIBRATION_MODES_CLIENTAUTO // 客户端自动标定 }NET_EM_CALIBRATION_MODES; ///@brief 灵瞳相机标定配置 typedef struct tagNET_CALIBRATE_MATRIX_ELEMENT_MULTIMODE { NET_EM_CALIBRATION_MODES emMode; // 支持多模式标定的相机,当前生效的标定模式 char szMasterSN[48]; // 主设备序列号 char szSlaveSN[48]; // 从设备序列号 PTZ_SPACE_UNIT stuExpectRatio; // 期望倍率(可选) NET_POINT_PAIR_EX stuPointPairEx[8]; // 多场景手动标定点对 int nPointPairNumber; // stuPointPairEx 有效个数 NET_POINT_PAIR_EX stuAutoPointPairEx[8]; // 算法自动计算出的多个场景标定参数 int nAutoPointPairNumber; // stuAutoPointPairEx 有效个数 BYTE byReserved[512]; // 保留字段 } NET_CALIBRATE_MATRIX_ELEMENT_MULTIMODE; ///@brief 主从式跟踪器标定矩阵扩展配置 灵瞳相机使用(对应 NET_EM_CFG_STEREO_CALIBRATEMATRIX_MULTIMODE 命令) typedef struct tagNET_CALIBRATEMATRIX_MULTIMODE_INFO { DWORD dwSize; DWORD nMaxCalibElement; // 主从跟踪器标定矩阵配置元素最大个数(用户填写) DWORD nRetCalibElement; // 主从跟踪器标定矩阵配置元素实际个数(仅是获取时有效) NET_CALIBRATE_MATRIX_ELEMENT_MULTIMODE *pstCaliMatrixElementEx; // 内存由用户申请 } NET_CALIBRATEMATRIX_MULTIMODE_INFO; ///@brief 智能养殖定时抓图配置 typedef struct tagNET_CFG_AUTO_SNAP_SCHEDULE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否使能定时抓图 UINT nChannelNum; // 抓图通道个数 int arnChannelID[2]; // 抓图通道号 UINT nPeriod; // 抓图周期, 单位秒 } NET_CFG_AUTO_SNAP_SCHEDULE_INFO; ///@brief 停车超时检测配置 typedef struct tagNET_CFG_PARKING_TIMEOUT_DETECT { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否使能停车超时检测 UINT nParkingTime; // 可停车时长, 单位为秒, 默认值为604800. 范围:3600-604800, 超过指定时长则判断为超时停车 UINT nDetectInterval; // 上报超时停车间隔, 单位为秒, 默认值为86400(24小时). 最小值为600, 最大值为86400 } NET_CFG_PARKING_TIMEOUT_DETECT; ///@brief 智能动检敏感等级 typedef enum tagEM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL { EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL_UNKNOWN, // 未知 EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL_LOW, // 低 EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL_MIDDLE, // 中 EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL_HIGH, // 高 }EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL; ///@brief 智能动态检测对象 typedef struct tagNET_SMART_MOTION_DETECT_OBJECT { BOOL bHuman; // 动态检测人使能 BOOL bVehicle; // 动态检测车使能 BYTE byReserved[1020]; // 保留字节 }NET_SMART_MOTION_DETECT_OBJECT; ///@brief 智能动态检测配置 typedef struct tagNET_CFG_SMART_MOTION_DETECT { DWORD dwSize; // 结构体大小 BOOL bEnable; // 动检使能,开:TRUE 关:FALSE EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL emMotionDetectSensitivityLevel; // 动检敏感级别 NET_SMART_MOTION_DETECT_OBJECT stuMotionDetectObject; // 智能动态检测对象 }NET_CFG_SMART_MOTION_DETECT; ///@brief 外部智能做任务调度配置 typedef struct tagNET_CFG_EXTERNAL_ANALYSE_TASK_CAPS { DWORD dwSize; // 结构体大小 int nModuleNumber; // 分配给外部智能做任务调度使用的智能子卡数量 } NET_CFG_EXTERNAL_ANALYSE_TASK_CAPS; ///@brief 轮巡任务 typedef struct tagNET_ROUND_TOUR_TASK_INFO { BOOL bEnable; // 任务使能 char szReserved[128]; // 预留字节 }NET_ROUND_TOUR_TASK_INFO; ///@brief 分时轮巡模式配置 typedef struct tagNET_CFG_TIMEDIV_TOUR_CONFIG_INFO { DWORD dwSize; // 结构体大小 NET_ROUND_TOUR_TASK_INFO stuRoundTourTask; // 轮巡任务 } NET_CFG_TIMEDIV_TOUR_CONFIG_INFO; #define MAX_STAFF_COUNT 32 // 最大标定线数量 ///@brief 标尺类型 typedef enum tagEM_SCALE_TYPR { EM_SCALE_UNKNOWN, // 未知 EM_SCALE_HORIZONTAL, // 水平线段 EM_SCALE_VERTIVAL, // 垂直线段 EM_SCALE_ANY, // 任意线段,未使用 EM_SCALE_CROSS, // 垂直面交线段,未使用 }EM_SCALE_TYPR; ///@brief 标定尺线信息 typedef struct tagNET_MAP_STAFF_INFOO { NET_POINT stuStartPoint; // 起点坐标 NET_POINT stuEndPoint; // 终点坐标 double dbLength; // 实际长度, 单位米 EM_SCALE_TYPR emScaleType; // 标尺类型 BYTE byReserved[252]; // 保留字段 } NET_MAP_STAFF_INFO; ///@brief 人群分布标定配置 typedef struct tagNET_CROWDDISTRIMAP_CALIBRATE_INFO { DWORD dwSize; // 此结构体大小 int nStaffNum; // 标定尺线数量 NET_MAP_STAFF_INFO stuStaffInfo[MAX_STAFF_COUNT]; // 标定尺线信息 } NET_CROWDDISTRIMAP_CALIBRATE_INFO; ///@brief 时间段信息 typedef struct tagNET_TIME_SECTION { BOOL bEnable; // 使能 0:时间段无效 1:时间段有效 int nBeginHour; // 开始 时 int nBeginMin; // 开始 分 int nBeginSec; // 开始 秒 int nEndHour; // 结束 时 int nEndMin; // 结束 分 int nEndSec; // 结束 秒 BYTE byReserved[80]; // 保留字段 } NET_TIME_SECTION; ///@brief 如果为周,从星期一开始;单双号取前两个元素1-单、2-双 typedef struct tagNET_NOPASSING_TIMESECTION_INFO { int nLimitedNum; // 限制的个数 int nPlateTailNum[MAX_PLATE_TAILNUM]; // 限行的车牌尾号(默认为最后一个,如果为字母就倒数第二个,以此类推) char szLegalPlateHead[MAX_COMMON_STRING_8]; // 合法车牌的首字符、首字母,不符合的需要抓拍。 // 中文编码格式为UTF8; 为空表示不按本地字规则抓拍 NET_TIME_SECTION stuTimeSection; // 抓拍时间段 BYTE byReserved[256]; // 保留字段 }NET_NOPASSING_TIMESECTION_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_NOPASSING (交通违章-禁止通行事件)对应的配置 typedef struct tagNET_TRAFFIC_NOPASSING_INFO { DWORD dwSize; // 此结构体大小 BOOL bEnable; // 时间配置使能 int nLaneNumber; // 车道号 int nTimeSectionMode; // 限行时间模式 0-星期(默认) 1-单双号 int nNoPassingTimeNumRow; // 禁行天数 int nNoPassingTimeNumCol; // 禁行时间段个数 NET_NOPASSING_TIMESECTION_INFO stuNoPassingTimeSection[DH_N_WEEKS][DH_N_REC_TSECT]; // 禁行时间段信息配置 }NET_TRAFFIC_NOPASSING_INFO; ///@brief 规则检测模式组 typedef enum tagEM_VIDEO_ANALYSE_RULE_DETECT_MODE { EM_VIDEO_ANALYSE_RULE_DETECT_MODE_UNKNOWN, // 未知 EM_VIDEO_ANALYSE_RULE_DETECT_MODE_VIDEO, // 视频检测模式 EM_VIDEO_ANALYSE_RULE_DETECT_MODE_COIL, // 线圈检测模式 EM_VIDEO_ANALYSE_RULE_DETECT_MODE_RADAR, // 雷达检测模式 }EM_VIDEO_ANALYSE_RULE_DETECT_MODE; ///@brief 事件类型 EVENT_IVS_TRAFFIC_TOLL_GATE (交通卡口事件)对应的配置 typedef struct tagNET_CFG_TRAFFIC_TOLL_GATE_INFO { DWORD dwSize; // 此结构体大小 BOOL bEnable; // 时间配置使能 char szName[128]; // 规则名称 UINT nPtzPresetId; // 云台预置点编号 int nDetectModeCount; // 规则检测模式组个数 EM_VIDEO_ANALYSE_RULE_DETECT_MODE emDetectMode[3]; // 规则检测模式组 int nLaneNumber; // 车道号 int nDetectLineCount; // 卡口报警线个数 NET_POINT_EX stuDetectLine[20]; // 卡口报警线 int nDirection; // 相对车道方向需要上报的车辆行驶方向个数 EM_VEHICLE_DRIVING_DIRECTION emDirection[2]; // 相对车道方向需要上报的车辆行驶方向 }NET_CFG_TRAFFIC_TOLL_GATE_INFO; ///@brief 标定区域信息 typedef struct tagNET_CALIBRATE_AREA_INFO { int nCalibratePloygonAreaNum; // 标定多边形区域顶点个数 DH_POINT stuCalibratePloygonArea[MAX_CALIBRATE_PLOYGON_AREA_NUM]; // 标定多边形区域 int nCalibrateRectNum; // 标定框个数 NET_RECT stuCalibrateRects[MAX_CALIBRATE_RECT_NUM]; // 标定框, 需在标定多边形区域内 BYTE byReserved[256]; // 保留字段 } NET_CALIBRATE_AREA_INFO; ///@brief 场景信息 typedef struct tagNET_SCENE_INFO { int nSceneID; // 场景编号, 单场景为0, 多场景为0~N NET_CALIBRATE_AREA_INFO stuCalibrateAreaInfo; // 标定区域信息 BYTE byReserved[256]; // 保留字段 } NET_SCENE_INFO; ///@brief 打架标定配置 typedef struct tagNET_FIGHT_CALIBRATE_INFO { DWORD dwSize; // 结构体大小 int nSceneNum; // 场景个数 NET_SCENE_INFO stuScenes[MAX_SCENE_NUM]; // 场景信息 } NET_FIGHT_CALIBRATE_INFO; ///@brief 景物点位置 typedef struct { int nX; // 第一个元素表示景物点的x坐标(0~8191) int nY; // 第二个元素表示景物点的y坐标(0~8191) } POINTCOORDINATE; ///@brief 景物形状 typedef enum tagNET_EM_SHAPE_TYPE { NET_EM_SHAPE_TYPE_UNKNOWN = -1, // 未知 NET_EM_SHAPE_TYPE_MANSARD, // 折线形 NET_EM_SHAPE_TYPE_SECTOR, // 扇形 }NET_EM_SHAPE_TYPE; ///@brief 坐标 typedef struct { int nIndex; // 信息点编号 bool bEnable; // 信息点是否生效 bool bTitleAttribute; // 该信息点是否有子标题 POSTION stuPostion; // 云台方向与放大倍数(第一个元素为水平角度,0~3600;第二个元素为垂直角度,-1800~1800;第三个元素为放大倍数,0~127) POINTCOORDINATE stuPoint; // 景物点位置(使用相对坐标体系,取值均为0-8191在整个屏幕上的位置) char szTitleName[MAX_COMMON_STRING_64]; // 一级标题名称 BYTE byTitleType; // 一级标题名称类型 BYTE byReserved[3]; // 预留字节 NET_EM_SHAPE_TYPE emShapeType; // 景物形状 DH_POINT stuPolygon[DH_MAX_POLYGON_NUM]; // 景物的轮廓,每个点依次表示轮廓顶点坐标 int nRetPolygonPointNum; // 返回的景物轮廓顶点个数 BYTE byReserved1[184]; // 保留字段 }POINTINFOS; ///@brief 分页获取信息标注信息列表输出参数(CLIENT_ScenicSpotGetPointInfos) typedef struct tagNET_OUT_SCENICSPOT_GETPOINTINFOS_INFO { DWORD dwSize; int nTotal; // 设备总共多少个景物点信息 int nRetSceneNum; // 当前获取到景物点个数 POINTINFOS stuPointInfos[MAX_SCENICSPOT_POINTS_NUM]; // 数组长度等于limit,最后一组查询可能小于limit }NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO; ///@brief 设置景物点,原编号的景物点将会被覆盖 输入参数(CLIENT_ScenicSpotSetPointInfo) typedef struct tagNET_IN_SCENICSPOT_SETPOINTINFO_INFO { DWORD dwSize; int nChannel; // 通道号 int nIndex; // 信息点编号 bool bEnable; // 信息点是否生效 bool bTitleAttribute; // 该信息点是否有子标题 POSTION stuPosition; // 云台方向与放大倍数 POINTCOORDINATE stuPoint; // 景物点位置 char szTitleName[MAX_COMMON_STRING_64]; // 一级标题名称 BYTE byTitleType; // 一级标题名称类型 BYTE byReserved[3]; // 预留字节 NET_EM_SHAPE_TYPE emShapeType; // 景物形状 DH_POINT stuPolygon[DH_MAX_POLYGON_NUM]; // 景物的轮廓,每个点依次表示轮廓顶点坐标 int nPolygonPointNum; // 景物轮廓点的个数,最大不超过DH_MAX_POLYGON_NUM int nChannelNum; // 通道个数 unsigned short nSyncToChannels[16]; // 支持标签同步标签的通道 }NET_IN_SCENICSPOT_SETPOINTINFO_INFO; ///@brief 设置景物点,原编号的景物点将会被覆盖 输出参数(CLIENT_ScenicSpotSetPointInfo) typedef struct tagNET_OUT_SCENICSPOT_SETPOINTINFO_INFO { DWORD dwSize; // 结构体大小 int nSyncToChannelNum; // 标签同步通道有效个数 unsigned short nSyncToChannels[16]; // 标签同步通道 }NET_OUT_SCENICSPOT_SETPOINTINFO_INFO; ///@brief 获取景物点支持的能力(CLIENT_ScenicSpotGetCaps 输入参数) typedef struct tagNET_IN_SCENICSPOT_GETCAPS_INFO { DWORD dwSize; int nChannel; // 通道号 }NET_IN_SCENICSPOT_GETCAPS_INFO; ///@brief 能力集 typedef struct tagNET_SCENICSPOT_CAPS_INFO { BOOL bEnable; // 是否支持景物点功能 unsigned int nTotalNum; // 总共最多支持多少个景物点 unsigned int nRegionNum; // 单画面最多支持多少个景物点 int nChannelNum; // 通道个数 unsigned short nSyncToChannels[16];// 支持标签同步的通道 BYTE byReserved[220]; // 保留字段 }NET_SCENICSPOT_CAPS_INFO; ///@brief 获取景物点支持的能力(CLIENT_ScenicSpotGetCaps 输出参数) typedef struct tagNET_OUT_SCENICSPOT_GETCAPS_INFO { DWORD dwSize; NET_SCENICSPOT_CAPS_INFO stuCaps; // 能力集信息 }NET_OUT_SCENICSPOT_GETCAPS_INFO; ///@brief 以景物标注点为中心,进行三维定位的输入参数(对应 CLIENT_ScenicSpotTurnToPoint) typedef struct tagNET_IN_SCENICSPOT_TURNTOPOINT_INFO { DWORD dwSize; int nChannel; // 通道号 int nIndex; // 景物点编号 }NET_IN_SCENICSPOT_TURNTOPOINT_INFO; ///@brief 以景物标注点为中心,进行三维定位的输出参数(对应 CLIENT_ScenicSpotTurnToPoint) typedef struct tagNET_OUT_SCENICSPOT_TURNTOPOINT_INFO { DWORD dwSize; }NET_OUT_SCENICSPOT_TURNTOPOINT_INFO; ///@brief 报警声音效果 typedef enum tagEM_ALARM_SOUND_EFFECT { EM_ALARM_SOUND_EFFECT_UNKNOWN, // 未知的音效 EM_ALARM_SOUND_EFFECT_MUTE, // 静音 EM_ALARM_SOUND_EFFECT_NOTICE, // 较为轻柔的报警音, 起到提示作用 EM_ALARM_SOUND_EFFECT_ALERT, // 尖锐响亮的报警音, 起到警示作用 }EM_ALARM_SOUND_EFFECT; ///@brief 报警网关语音配置 typedef struct tagNET_ALARM_SOUND_INFO { DWORD dwSize; EM_ALARM_SOUND_EFFECT emSoundEffect; // 声音效果 }NET_ALARM_SOUND_INFO; ///@brief 双目标定结果配置 typedef struct tagNET_STEREO_CALIBRATE_INFO { DWORD dwSize; int nCameraHeight; // 保存上次标定高度,单位cm float fCameraAngle; // 保存上次标定角度,单位角度 } NET_STEREO_CALIBRATE_INFO; ///@brief 网络连接模式 typedef enum tagEM_LINK_MODE { EM_LINK_MODE_UNKNOWN, // 未知模式 EM_LINK_MODE_AUTO, // 自动选择合适的模式 EM_LINK_MODE_ADHOC, // 是一种特殊的无线网络应用模式, 一群计算机接上无线网络卡, 即可相互连接, 资源共享, 无需透过Access Point EM_LINK_MODE_INFRASTRUCTURE, // 是一种整合有线与无线局域网络架构的应用模式, 可以网络资源共享, 此应用需透过Access Point。 }EM_LINK_MODE; ///@brief AP加密方式 typedef enum tagEM_AP_DATA_ENCRYPT { EM_AP_DATA_ENCRYPT_UNKNOWN, // UnKnown EM_AP_DATA_ENCRYPT_NONE, // NONE EM_AP_DATA_ENCRYPT_AUTO, // AUTO EM_AP_DATA_ENCRYPT_SHARED, // SHARED EM_AP_DATA_ENCRYPT_OPEN, // OPEN EM_AP_DATA_ENCRYPT_TKIP, // TKIP EM_AP_DATA_ENCRYPT_AES, // AES } EM_AP_DATA_ENCRYPT; ///@brief 功率模式 typedef enum tagEM_AP_POWER_MODE { EM_AP_POWER_MODE_UNKNOWN, // UnKnown EM_AP_POWER_MODE_LOW, // Low EM_AP_POWER_MODE_MIDDLE, // Middle EM_AP_POWER_MODE_HIGH, // High }EM_AP_POWER_MODE; ///@brief DHCP 配置 typedef struct tagNET_DHCP_INFO { char szStartIP[NET_IPADDRSTR_LEN]; // 分配的起始IP char szStopIP[NET_IPADDRSTR_LEN]; // 分配的结束IP int nLeaseTime; // 续租时间 单位: 分钟 BYTE byReserved[512]; // 保留字段 }NET_DHCP_INFO; ///@brief WEP认证配置 typedef struct tagNET_WEP_INFO { int nKeyID; // 秘钥索引, 取值0~3 char szKeys[MAX_WEP_KEY_NUM][MAX_COMMON_STRING_64];// 四组密码 BYTE byReserved[256]; // 保留字段 }NET_WEP_INFO; ///@brief WPA/WPA2 PSK配置 typedef struct tagNET_WPA_PSK_INFO { char szPassword[MAX_COMMON_STRING_64]; // 密码 BYTE byReserved[256]; // 保留字段 }NET_WPA_PSK_INFO; ///@brief EAP方法 typedef enum tagEM_EAP_METHOD { EM_EAP_METHOD_UNKNOWN, // UnKnown EM_EAP_METHOD_PEAP, // PEAP EM_EAP_METHOD_TLS, // TLS EM_EAP_METHOD_TTLS, // TTLS } EM_EAP_METHOD; ///@brief EAP身份验证方法 typedef enum tagEM_EAP_AUTH_TYPE { EM_EAP_AUTH_TYPE_UNKNOWN, // UnKnown EM_EAP_AUTH_TYPE_NONE, // NONE EM_EAP_AUTH_TYPE_PAP, // PAP EM_EAP_AUTH_TYPE_MSCHAP, // MSCHAP EM_EAP_AUTH_TYPE_MSCHAPV2, // MSCHAPV2 EM_EAP_AUTH_TYPE_GTC, // GTC } EM_EAP_AUTH_TYPE; ///@brief AP认证方式 typedef enum tagEM_AP_AUTHENTICATION { EM_AP_AUTHENTICATION_UNKNOWN, // UnKnown EM_AP_AUTHENTICATION_OPEN, // OPEN EM_AP_AUTHENTICATION_WEP, // WEP EM_AP_AUTHENTICATION_WPAPSK, // WPA PSK EM_AP_AUTHENTICATION_WPA2PSK, // WPA2 PSK EM_AP_AUTHENTICATION_WPA, // WPA EM_AP_AUTHENTICATION_WPA2, // WPA2 } EM_AP_AUTHENTICATION; ///@brief WPA/WPA2配置 typedef struct tagNET_EAP_INFO { EM_EAP_METHOD emMethod; // EAP方法 EM_EAP_AUTH_TYPE emAuthType; // EAP身份验证方法 char szIdentity[MAX_COMMON_STRING_64]; // 身份 char szAnonymousID[MAX_COMMON_STRING_64];// 匿名身份 char szPassword[MAX_COMMON_STRING_64]; // 密码 char szCaCert[MAX_COMMON_STRING_512]; // CA证书 char szUserCert[MAX_COMMON_STRING_512]; // 用户证书 BYTE byReserved[256]; // 保留字段 }NET_EAP_INFO; ///@brief WIFI 连接方式 typedef enum tagEM_WIFI_CONNECT_TYPE { EM_WIFI_CONNECT_TYPE_UNKNOWN, // 未知 EM_WIFI_CONNECT_TYPE_PUSH_BUTTON, // 按钮方式 EM_WIFI_CONNECT_TYPE_PIN_ENROLLEE, // PIN 码方式 EM_WIFI_CONNECT_TYPE_PIN_REG, // PIN REG方式 目前暂不支持 }EM_WIFI_CONNECT_TYPE; ///@brief WIFI 安全保护配置 typedef struct tagNET_WPS_INFO { EM_WIFI_CONNECT_TYPE emConnType; // 连接方式 char szPIN[MAX_COMMON_STRING_32]; // PIN码, 当连接方式为PIN码方式时需要填写 BYTE byReserved[256]; // 保留字段 }NET_WPS_INFO; ///@brief 地址过滤列表 typedef struct tagNET_FILTER_ADDRESS_LIST { BOOL bEffective; // 在列表中有效性 true有效,false无效 char szMAC[DH_MACADDR_LEN]; // 设备MAC地址 char szDescribeText[DH_COMMON_STRING_256]; // 对该MAC的描述信息 BYTE byReserved[256]; // 保留字段 }NET_FILTER_ADDRESS_LIST; ///@brief 地址列表过滤策略 typedef enum tagEM_ADDRLIST_FILTER_POLICY { EM_ADDRLIST_FILTER_POLICY_UNKNOWN, // 未知 EM_ADDRLIST_FILTER_POLICY_WHITE, // "allow" : 允许列表中的有效地址设备连接热点,允许名单。 EM_ADDRLIST_FILTER_POLICY_BLACK, // "block" : 禁止列表中的有效地址设备连接热点,禁止名单。 }EM_ADDRLIST_FILTER_POLICY; ///@brief AccessPoint 接入过滤配置 typedef struct tagNET_AP_FILTER { BOOL bEnable; // 是否开启过滤功能 int nMaxAccessNum; // 最大Wifi设备连接个数 EM_ADDRLIST_FILTER_POLICY emPolicy; // 过滤策略 NET_FILTER_ADDRESS_LIST *pstuAddrList; // 地址过滤列表,由用户申请内存和释放 int nMaxListNum; // 地址最大个数 int nRetListNum; // 返回的地址个数 BYTE byReserved[256]; // 保留字段 }NET_AP_FILTER; ///@brief Accesspoint 工作模式 typedef enum tagEM_WORKPATTERN { EM_WORKPATTERN_UNKNOWN, // 未知 EM_WORKPATTERN_2_4G, // 默认为2.4G工作模式的配置 EM_WORKPATTERN_5G, // 5G模式的配置 }EM_WORKPATTERN; ///@brief AP 工作模式配置 typedef struct tagNET_AP_WORKPATTERN { EM_WORKPATTERN emWorkPatternType; // 工作模式:2.4G/5G BOOL bEnable; // WIFI网卡使能开关, TRUE打开, FALSE关闭 BOOL bHideSSID; // 是否隐藏SSID, TRUE 隐藏, FALSE 显示 char szSSID[DH_COMMON_STRING_36]; // 网络名称(SSID) EM_LINK_MODE emLinkMode; // 网络连接模式 int nPriority; // 优先级 (范围 1-32) int nChannel; // 信道号 (范围 1-13) int nChannelBandwidth; // 信道带宽 单位: M EM_AP_AUTHENTICATION emAuthentication; // 认证方式 EM_AP_DATA_ENCRYPT emDataEncryption; // 数据加密方式 EM_AP_POWER_MODE emPowerMode; // 功率模式 BOOL bDHCPEnable; // 是否开启DHCP方式分配IP地址 NET_DHCP_INFO stuDHCP; // DHCP详细配置信息 char szIPAddresss[NET_IPADDRSTR_LEN]; // IP地址 char szSubnetMask[MAX_COMMON_STRING_16]; // 子网掩码 char szDefaultGateway[MAX_COMMON_STRING_16]; // 默认网关 NET_WEP_INFO stuWEP; // WEP认证配置 NET_WPA_PSK_INFO stuWPAPSK; // WPA/WPA2 PSK配置 NET_EAP_INFO stuEAP; // WPA/WPA2 配置 NET_WPS_INFO stuWPS; // WPS 安全保护配置 NET_AP_FILTER stuFilter; // 接入过滤配置 BYTE byReserved[1024]; // 保留字段 }NET_AP_WORKPATTERN; ///@brief 热点功能的网卡配置名 typedef enum tagEM_ACCESSPOINT_NAME { EM_ACCESSPOINT_NAME_UNKNOWN, // 未知 EM_ACCESSPOINT_NAME_ETH2, // "eth2" : 前端使用的软AP网卡名 EM_ACCESSPOINT_NAME_WALN0, // "wlan0" : 存储使用的软AP网卡名 EM_ACCESSPOINT_NAME_APRA0, // "apra0" : 提供硬AP功能的网卡名 }EM_ACCESSPOINT_NAME; ///@brief AccessPoint 配置信息 typedef struct tagNET_ACCESSPOINT_INFO { EM_ACCESSPOINT_NAME emAccessPointName; // 提供热点功能的网卡配置名 int nValidPatternNum; // 有效工作模式个数 NET_AP_WORKPATTERN stuWorkPattern[MAX_WORKPATTERN_NUM];// 工作模式配置:2.4G(默认)/5G BYTE byReserved[1024]; // 保留字段 }NET_ACCESSPOINT_INFO; ///@brief WIFI服务器端配置 (热点功能) typedef struct tagNET_NETAPP_ACCESSPOINT { DWORD dwSize; int nValidAPNum; // AccessPoints 有效个数 NET_ACCESSPOINT_INFO stuAccessPoints[NET_MAX_AP_NUM]; // AP 配置信息 }NET_NETAPP_ACCESSPOINT; ///@brief 乱序窗口类型 typedef enum tagEM_DISORDERWINDOW_TYPE { EM_DISORDERWINDOW_TYPE_UNKNOWN = -1, EM_DISORDERWINDOW_TYPE_PACKETS_NUMBER = 0, //数据包数量,默认 EM_DISORDERWINDOW_TYPE_DATA_DELAY = 1, //数据延时(ms) EM_DISORDERWINDOW_TYPE_MEMORY_SIZE = 2, //内存大小(KB) }EM_DISORDERWINDOW_TYPE; ///@brief RTSP传输配置 typedef struct tagNET_CFG_RTSP_TRANSIT { int nUdpSndBufSize; //UDP发送socket缓冲区大小(单位:KB) 默认512 0-使用系统默认值 int nUdpRcvBufSize; //UDP接收socket缓冲区大小(单位:KB)默认512 0-使用系统默认值 int nSliceSize; //rtp报文分包大小(单位:字节),默认1472 建议值:网卡mtu-ip头部-udp头部 int nFlowControlMaxDelay;// 流控最大延迟,表示由于流量控制和 // 整形引起的延迟最大不超过此值,默认400ms int nFlowControlCoefficient;// 延迟系数,实际生效最大延迟= MaxDelay* Coefficient/100, // 值越大,表示容忍延迟越大,数据发送也就更均匀,范围[0,100],默认50 ,0表示关闭应用层流控 EM_DISORDERWINDOW_TYPE emDisorderWindowType; //乱序窗口类型 int nDisorderWindowValue; //乱序窗口大小,默认为100个包 BYTE byReserved[2048]; //保留字节 }NET_CFG_RTSP_TRANSIT; ///@brief 重传功能类型 typedef enum tagEM_RETRANSIT_TYPE { EM_RETRANSIT_TYPE_UNKNOWN = -1, EM_RETRANSIT_TYPE_PACKETS_NUMBER = 0, //数据包数量,默认 EM_RETRANSIT_TYPE_DATA_DELAY = 1, //数据延时(ms) }EM_RETRANSIT_TYPE; ///@brief DVRIP传输配置 typedef struct tagNET_CFG_DVRIP_TRANSIT { int nUdpSndBufSize; //UDP发送socket缓冲区大小(单位:KB),默认512 0-使用系统默认值 int nMaxSize; //最大码流数据包分包大小(单位:字节) 默认:1400 建议值:网卡mtu-ip头部-udp头部 int nFlowControlMaxDelay;// 流控最大延迟,表示由于流量控制和 // 整形引起的延迟最大不超过此值,默认400ms int nFlowControlCoefficient;// 延迟系数,实际生效最大延迟= MaxDelay* Coefficient/100, // 值越大,表示容忍延迟越大,数据发送也就更均匀,范围[0,100],默认50 ,0表示关闭应用层流控 EM_RETRANSIT_TYPE emRetransitType; //重传类型 int nRetransitValue; //重传值 BYTE byReserved[2048]; //保留字节 }NET_CFG_DVRIP_TRANSIT; ///@brief GB28181传输配置 typedef struct tagNET_CFG_GB28181_TRANSIT { int nUdpSndBufSize; //UDP发送socket缓冲区大小(单位:KB),默认512 0-使用系统默认值 int nMaxSize; //最大码流数据包分包大小(单位:字节) 默认:1400 建议值:网卡mtu-ip头部-udp头部 int nFlowControlMaxDelay;// 流控最大延迟,表示由于流量控制和 // 整形引起的延迟最大不超过此值,默认400ms int nFlowControlCoefficient;// 延迟系数,实际生效最大延迟= MaxDelay* Coefficient/100, // 值越大,表示容忍延迟越大,数据发送也就更均匀,范围[0,100],默认50 ,0表示关闭应用层流控 BYTE byReserved[2048]; //保留字节 }NET_CFG_GB28181_TRANSIT; ///@brief 网络自适应传输配置对应NET_EM_CFG_NETAUTOADAPTTRANSIT typedef struct tagNET_NETAUTOADAPTTRANSIT { DWORD dwSize; NET_CFG_RTSP_TRANSIT stuRtsp; //RTSP配置 NET_CFG_DVRIP_TRANSIT stuDvrip; //DVRIP配置 NET_CFG_GB28181_TRANSIT stuGB28181; //GB28181配置 }NET_NETAUTOADAPTTRANSIT; // 标识名最大长度 #define MAX_DN_LENGTH 128 ///@brief LDAP 配置 typedef struct tagNET_NETAPP_LDAP { DWORD dwSize; BOOL bEnable; // 是否使能 char szServerIP[MAX_SERVER_ADDRESS_LEN]; // 服务IP地址 int nServerPort; // 服务端口号 char szBindDN[MAX_DN_LENGTH]; // 绑定的标识名 char szBindPwd[MAX_PWD_LEN]; // 密码 BOOL bAnonymousBind; // 是否匿名 char szBaseDN[MAX_DN_LENGTH]; // 基本标识名 char szFilter[DH_COMMON_STRING_128]; // 搜索范围 } NET_NETAPP_LDAP; ///@brief 设备编号(与服务器配置保持一致,编号标识服务器对该设备日志具体存放路径) typedef enum tagEM_SYSLOG_FACILITY_TYPE { EM_SYSLOG_FACILITY_UNKNOWN = -1, EM_SYSLOG_FACILITY_KERNEL_MESSAGES, // 0 kernel messages EM_SYSLOG_FACILITY_USER_LEVEL_MESSAGES, // 1 user-level messages EM_SYSLOG_FACILITY_MAIL_SYSTEM, // 2 mail system EM_SYSLOG_FACILITY_SYSTEM_DAEMONS, // 3 system daemons EM_SYSLOG_FACILITY_SECURITY_MESSAGES, // 4 security/authorization messages EM_SYSLOG_FACILITY_MESSAGES_GENERATED_INTERNALLY_BY_SYSLOGD, // 5 messages generated internally by syslogd EM_SYSLOG_FACILITY_LINE_PRINTER_SUBSYSTEM, // 6 line printer subsystem EM_SYSLOG_FACILITY_NETWORK_NEWS_SUBSYSTEM, // 7 network news subsystem EM_SYSLOG_FACILITY_UUCP_SUBSYSTEM, // 8 UUCP subsystem EM_SYSLOG_FACILITY_CLOCK_DAEMON, // 9 clock daemon EM_SYSLOG_FACILITY_SECURITY_MESSAGES_2, // 10 security/authorization messages EM_SYSLOG_FACILITY_FTP_DAEMON, // 11 FTP daemon EM_SYSLOG_FACILITY_NTP_SUBSYSTEM, // 12 NTP subsystem EM_SYSLOG_FACILITY_LOG_AUDIT, // 13 log audit EM_SYSLOG_FACILITY_LOG_ALERT, // 14 log alert EM_SYSLOG_FACILITY_CLOCK_DAEMON_2, // 15 clock daemon EM_SYSLOG_FACILITY_LOCAL_USE_0, // 16 local use 0 EM_SYSLOG_FACILITY_LOCAL_USE_1, // 17 local use 1 EM_SYSLOG_FACILITY_LOCAL_USE_2, // 18 local use 2 EM_SYSLOG_FACILITY_LOCAL_USE_3, // 19 local use 3 EM_SYSLOG_FACILITY_LOCAL_USE_4, // 20 local use 4 EM_SYSLOG_FACILITY_LOCAL_USE_5, // 21 local use 5 EM_SYSLOG_FACILITY_LOCAL_USE_6, // 22 local use 6 EM_SYSLOG_FACILITY_LOCAL_USE_7, // 23 local use 7 } EM_SYSLOG_FACILITY_TYPE; ///@brief Syslog 配置 typedef struct tagNET_NETAPP_SYSLOG { DWORD dwSize; BOOL bEnable; // 使能 char szServerIP[MAX_SERVER_IP_LEN]; // 服务器地址 int nServerPort; // 服务端口号 EM_SYSLOG_FACILITY_TYPE emFacility; // 设备编号 } NET_NETAPP_SYSLOG; ///@brief 鉴权模式 typedef enum tagEM_WIRELESS_AUTH_MODE { EM_WIRELESS_AUTH_MODE_UNKNOWN = 0, EM_WIRELESS_AUTH_MODE_NO, // 无需鉴权 EM_WIRELESS_AUTH_MODE_PAP, // PAP鉴权 EM_WIRELESS_AUTH_MODE_CHAP, // CHAP鉴权 }EM_WIRELESS_AUTH_MODE; ///@brief 流量控制策略 typedef enum tagEM_WIRELESS_3GFLUX_TACTICS { EM_WIRELESS_3GFLUX_TACTICS_UNKNOWN = 0, EM_WIRELESS_3GFLUX_TACTICS_BYFLUX_MONTHLY, // 包月按流量 EM_WIRELESS_3GFLUX_TACTICS_BYTIME_MONTHLY // 包月按时长 }EM_WIRELESS_3GFLUX_TACTICS; ///@brief 每日流量控制策略 typedef enum tagEM_WIRELESS_DAY3GFLUX_TACTICS { EM_WIRELESS_DAY3GFLUX_TACTICS_UNKNOWN = 0, EM_WIRELESS_DAY3GFLUX_TACTICS_BYFLUX, // 按流量 EM_WIRELESS_DAY3GFLUX_TACTICS_BYTIME // 按时长 }EM_WIRELESS_DAY3GFLUX_TACTICS; ///@brief 每日达到流量上限动作 typedef enum tagEM_WIRELESS_3GFLUX_ACTION { EM_WIRELESS_3GFLUX_ACTION_UNKNOWN = 0, EM_WIRELESS_3GFLUX_ACTION_NOTHING, // 无动作 EM_WIRELESS_3GFLUX_ACTION_3GNETDOWN // 3G下线 }EM_WIRELESS_3GFLUX_ACTION; ///@brief 工作模式选择 typedef enum tagEM_WIRELESS_WORK_MODE { EM_WIRELESS_WORK_MODE_UNKNOWN = 0, EM_WIRELESS_WORK_MODE_CDMA1X, // CDMA1x EM_WIRELESS_WORK_MODE_EVDO, // EVDO EM_WIRELESS_WORK_MODE_TD_SCDMA, // TD-SCDMA EM_WIRELESS_WORK_MODE_WCDMA, // WCDMA EM_WIRELESS_WORK_MODE_EDGE, // EDGE EM_WIRELESS_WORK_MODE_TDD_LTE, // TDD-LTE EM_WIRELESS_WORK_MODE_FDD_LTE, // FDD-LTE EM_WIRELESS_WORK_MODE_GPRS, // GPRS EM_WIRELESS_WORK_MODE_NR, // NR EM_WIRELESS_WORK_MODE_NO_SERVICE, // NOService EM_WIRELESS_WORK_MODE_AMPS, // AMPS EM_WIRELESS_WORK_MODE_CDMA2000, // CDMA2000 EM_WIRELESS_WORK_MODE_GSM, // GSM EM_WIRELESS_WORK_MODE_LTE, // LTE EM_WIRELESS_WORK_MODE_TD_LTE, // TD-LTE EM_WIRELESS_WORK_MODE_AUTO // Auto }EM_WIRELESS_WORK_MODE; #define MAX_DAIL_NUMBER 32 // Wireless中拨号号码长度 ///@brief 蜂窝网络连接设置 typedef struct tagNET_NETAPP_WIRELESS { DWORD dwSize; BOOL bEnable; // 蜂窝网络使能开关 int nIndex; // 模块索引。只读,即PAL层获取的index int nKeepAlive; // 保活时间, 单位为秒,0表示不自动断开 EM_WIRELESS_APN_TYPE emAPN; // 接入网络, 当为自定义时,使用szAPNName字符串透传 char szAPNName[DH_COMMON_STRING_32]; // 接入网络名,当emAPN为自定义时,使用szAPNName字符串透传,例如:"CTNET", "CMNET", "UNINET", "CUSTOMIZED" EM_WIRELESS_AUTH_MODE emAuthMode; // 鉴权模式 char szUserName[DH_COMMON_STRING_64]; // 用户名 char szPassword[DH_COMMON_STRING_64]; // 密码 BOOL bAutoDial; // 按时间自动拨号开关, 默认为true,如果打开,拨号时间段使用stuTimeSection,false时,stuTimeSection配置无效 DH_TSECT stuTimeSection[DH_N_WEEKS][DH_N_REC_TSECT]; // 拨号时间段 EM_WIRELESS_3GFLUX_TACTICS em3GFluxTactic; // 流量使用策略 UINT n3GFluxUp; // 流量使用上限, [0,65535]MB或者分钟 UINT n3GFlux; // 实际使用流量, [0,65535]MB或者分钟 EM_WIRELESS_DAY3GFLUX_TACTICS emDay3GFluxTactic; // 每日流量控制策略 UINT nDay3GFluxUp; // 每日流量使用上限, [0,65535]MB或者分钟 UINT nDay3GFlux; // 当日已使用流量, [0,65535]MB或者分钟 EM_WIRELESS_3GFLUX_ACTION emDay3GFluxAction; // 流量报警策略,每日达到流量上限动作 EM_WIRELESS_WORK_MODE emWorkMode; // 工作模式选择 char szDailNumber[MAX_DAIL_NUMBER]; // 拨号号码 BOOL bActivate; // 是否已经被语音或短信激活 char szCardNum[32]; // 卡号码 char szIMEI[16]; // IMEI char szPIN[16]; // PIN码 char szICCID[32]; // 集成电路卡识别码即SIM卡卡号,20位数字组成 } NET_NETAPP_WIRELESS; ///@brief 运营商选择模式 typedef enum tagEM_OPERATOR_SELECTION_MODE { EM_OPERATOR_SELECTION_MODE_UNKNOWN = -1, // 未知类型 EM_OPERATOR_SELECTION_MODE_AUTO, // 自动选择运营商 EM_OPERATOR_SELECTION_MODE_MANUAL, // 手动设置运营商 EM_OPERATOR_SELECTION_MODE_LOGOUT, // 从注册网络注销 EM_OPERATOR_SELECTION_MODE_FORMAT, // 仅设置格式,不进行网络注册和注销 EM_OPERATOR_SELECTION_MODE_AUTO_OR_MANUAL, // 手动/自动 (如果手动设置失败则进入自动模式) }EM_OPERATOR_SELECTION_MODE; ///@brief 运营商消息格式 typedef enum tagEM_OPERATOR_MSG_FORMAT { EM_OPERATOR_MSG_FORMAT_UNKNOWN = -1, // 未知类型 EM_OPERATOR_MSG_FORMAT_FULL_STRING, // 字符串全称型 EM_OPERATOR_MSG_FORMAT_SHORT_STRING, // 字符串简短型 EM_OPERATOR_MSG_FORMAT_DIGITAL, // 数字型 }EM_OPERATOR_MSG_FORMAT; ///@brief 接入技术 Access technology typedef enum tagEM_ACCESS_TECHNOLOGY { EM_ACCESS_TECHNOLOGY_UNKNOWN = -1, // 未知类型 EM_ACCESS_TECHNOLOGY_GSM, // GSM EM_ACCESS_TECHNOLOGY_GSM_COMPACT, // GSM COMPACT EM_ACCESS_TECHNOLOGY_UTRAN, // UTRAN EM_ACCESS_TECHNOLOGY_GSM_W_EGPRS, // GSM W/EGPRS EM_ACCESS_TECHNOLOGY_UTRAN_W_HSDPA, // UTRAN W/HSDPA EM_ACCESS_TECHNOLOGY_UTRAN_W_HSUPA, // UTRAN W/HSUPA EM_ACCESS_TECHNOLOGY_UTRAN_W_HSDPA_AND_HSUPA, // UTRAN W/HSDPA 和 HSUPA EM_ACCESS_TECHNOLOGY_E_UTRAN, // E-UTRAN }EM_ACCESS_TECHNOLOGY; ///@brief 蜂窝网络高级配置 typedef struct tagNET_WIRELESS_EXPERT { BOOL bValid; // 配置是否有效 BOOL bEnable; // 蜂窝网络使能开关 int nIndex; // 模块索引, 只读 EM_WIRELESS_APN_TYPE emAPN; // 接入网络, 当为自定义时,使用szAPNName字符串透传 char szAPNName[32]; // 接入网络名称 EM_WIRELESS_AUTH_MODE emAuthMode; // 鉴权模式 char szUserName[64]; // 用户名 char szPassword[64]; // 密码 EM_OPERATOR_SELECTION_MODE emOprMode; // 运营商选择模式 EM_OPERATOR_MSG_FORMAT emOprFormat; // 运营商网络信息格式 char szOperInfo[32]; // 运营商网络信息,需要向sim卡提供方获取 EM_ACCESS_TECHNOLOGY emAccessTechnology; // 选择的接入技术 BYTE byReserved[64]; // 保留字节 }NET_WIRELESS_EXPERT; ///@brief 蜂窝网络连接高级设置 typedef struct tagNET_NETAPP_WIRELESS_EXPERT { DWORD dwSize; NET_WIRELESS_EXPERT stuExpert[4]; // 具体配置信息 4个SIM卡 每个元素对应一张SIM卡 }NET_NETAPP_WIRELESS_EXPERT; ///@brief 铁路记录信息 typedef struct tagNET_DEV_CAR_COACH_INFO { DWORD dwSize; char szCarNo[MAX_CARNO_LEN]; // 车辆号 char szCoachNo[MAX_COACHNO_LEN]; // 车厢号 }NET_DEV_CAR_COACH_INFO; ///@brief 抓图流编码格式参照格式 typedef enum tagEM_MEDIA_GLOBAL_SNAP_FORMAT_AS { EM_MEDIA_GLOBAL_SNAP_FORMAT_AS_UNKNOWN, EM_MEDIA_GLOBAL_SNAP_FORMAT_AS_MAIN_FORMAT, // 参照主码流 EM_MEDIA_GLOBAL_SNAP_FORMAT_AS_EXTRA_FORMAT, // 参照辅码流1 EM_MEDIA_GLOBAL_SNAP_FORMAT_AS_EXTRA2_FORMAT, // 参照辅码流2 EM_MEDIA_GLOBAL_SNAP_FORMAT_AS_EXTRA3_FORMAT, // 参照辅码流3 }EM_MEDIA_GLOBAL_SNAP_FORMAT_AS; ///@brief 媒体组件全局配置 typedef struct tagNET_MEDIA_GLOBAL_INFO { DWORD dwSize; int nPacketType; // 0:按时间,1:按大小 BYTE byPacketLength; // 录像打包时间长度,单位分钟。1-255 BYTE byAlign[3]; // 对齐 DWORD dwPacketSize; // 录像打包文件长度,单位KB BOOL bLogRecord; // 是否记录录像日志 BOOL bLogEncode; // 是否记录编码异常日志 EM_MEDIA_GLOBAL_SNAP_FORMAT_AS emSnapFormatAs; // 抓图流编码格式参照格式;设备不支持独立配置抓图流分辨率格式时,抓图格式根据参照格式设置 }NET_MEDIA_GLOBAL_INFO; ///@brief 车位设置(专有车位和普通车位设置) 对应 NET_EM_CFG_PARKINGSPACECELL_STATUS ///@brief 注:数组最大16, 实际返回有效配置,请查看接口(NET_CONFIG_RETURN_INFO*)reserve参数 typedef struct tagNET_PARKINGSPACECELL_STATUS_INFO { DWORD dwSize; int nCellNumber; // 车位号 UINT nCellType; // 车位类型, -1:无效, 0:普通车位 1:专有车位 2:充电车位 } NET_PARKINGSPACECELL_STATUS_INFO; ///@brief 车位灯色 typedef struct tagNET_PARKINGSPACELIGHT_INFO { int nRed; // 红灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nYellow; // 黄灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nBlue; // 蓝灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nGreen; // 绿灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nPurple; // 紫灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nWhite; // 白灯: -1:无效, 0/灭, 1/亮, 2/闪烁 int nPink; // 粉等: -1:无效, 0/灭, 1/亮, 2/闪烁 BYTE byReserved[32]; // 保留字节 } NET_PARKINGSPACELIGHT_INFO; ///@brief 网络异常状态灯色 typedef struct tagNET_NETWORK_EXCEPTION_INFO { NET_PARKINGSPACELIGHT_INFO stNetPortAbortInfo[MAX_NETPORT_NUM]; // 网口断开状态灯色 int nRetNetPortAbortNum; // 实际返回的个数 NET_PARKINGSPACELIGHT_INFO stuSpaceSpecialInfo; // 车位专用状态灯色 NET_PARKINGSPACELIGHT_INFO stuSpaceChargingInfo; // 充电车位状态灯色 BYTE byReserved[256]; // 保留字节 } NET_NETWORK_EXCEPTION_INFO; ///@brief 车位状态对应的车位指示灯色 对应 NET_EM_CFG_PARKINGSPACELIGHT_STATE typedef struct tagNET_PARKINGSPACELIGHT_STATE_INFO { DWORD dwSize; NET_PARKINGSPACELIGHT_INFO stuSpaceFreeInfo; // 车位空闲状态灯色 NET_PARKINGSPACELIGHT_INFO stuSpaceFullInfo; // 车位占满状态灯色 NET_PARKINGSPACELIGHT_INFO stuSpaceOverLineInfo; // 车位压线状态灯色 NET_PARKINGSPACELIGHT_INFO stuSpaceOrderInfo; // 车位预定状态灯色 NET_NETWORK_EXCEPTION_INFO stuNetWorkExceptionInfo; // 网络异常状态灯色 } NET_PARKINGSPACELIGHT_STATE_INFO; ///@brief NAS Protocol 类型 typedef enum __EM_NAS_PROTOCOL { NAS_PROTOCOL_UNKNOW = 0, NAS_PROTOCOL_FTP, // FTP NAS_PROTOCOL_SMB, // SMB NAS_PROTOCOL_NFS, // NFS NAS_PROTOCOL_ISCSI, // ISCSI NAS_PROTOCOL_CLOUD, // CLOUD }EM_NAS_PROTOCOL; ///@brief NAS 配置信息 typedef struct tagNET_NAS_INFO { DWORD dwSize; BOOL bEnable; // 是否启用 char szName[MAX_COMMON_STRING_128]; // 名称 char szHostIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // IP地址或网络名 WORD wHostPort; // 主机端口 char reserved[2]; // 保留字段 char szDirName[DH_FTP_MAX_PATH]; // FTP目录路径 char szUserName[DH_FTP_USERNAME_LEN]; // 用户名 char szPassword[DH_FTP_PASSWORD_LEN]; // 密码 int nInterval; // 相邻文件时间间隔(1~600),单位秒 BOOL bAnonymity; // 匿名使能,匿名使能(Protocol为FTP时有效) EM_NAS_PROTOCOL emProtocol; // 协议类型 }NET_NAS_INFO; ///@brief PPPoE配置信息 typedef struct tagNET_PPPOE_INFO { DWORD dwSize; BOOL bEnable; // 是否使能 char szUserName[MAX_USER_NAME_LEN]; // 用户名 char szPasswd[MAX_PWD_LEN]; // 密码 }NET_PPPOE_INFO; ///@brief Email配置信息 typedef struct tagNET_EMAIL_INFO { DWORD dwSize; BOOL bEnable; // 使能0:false, 1:true char szMailIPAddr[DH_MAX_DOMAIN_NAME_LEN]; // 邮件服务器地址(IP或者域名) WORD wMailPort; // 邮件服务器端口 char reserved[2]; // 保留字段 char szSenderAddr[DH_MAX_MAIL_ADDR_LEN]; // 发送地址 char szUserName[DH_MAX_MAIL_NAME_LEN]; // 用户名 char szUserPsw[DH_MAX_MAIL_NAME_LEN]; // 用户密码 char szDestAddr[DH_MAX_MAIL_ADDR_LEN]; // 目的地址 char szSubject[DH_MAX_MAIL_SUBJECT_LEN]; // 标题 char *szReceivers[DH_MAX_MAIL_ADDR_LEN]; // 收件人列表,用户分配内存 unsigned int nReceiversNum; // 收件人数量 unsigned int nReceiversNumRet; // 设备返回的收件人数量 BOOL bSSLEnable; // SSL使能 BOOL bTLSEnable; // TLS使能 WORD wSendInterval; // 发送时间间隔,[0,3600]秒 BYTE bAnonymous; // 匿名选项[0,1], 0表示FALSE,1表示TRUE. BYTE bAttachEnable; // 附件使能[0,1], 0表示FALSE,1表示TRUE. BOOL bHealthReport; // 健康邮件使能 int nHealthReportInterval; // 健康邮件间隔 }NET_EMAIL_INFO; ///@brief DDNS配置信息 typedef struct tagNET_DDNS_INFO { DWORD dwSize; DWORD dwDdnsServerNum; // DDNS 服务器数量 DH_DDNS_SERVER_CFG stuDdnsServer[DH_MAX_DDNS_NUM]; }NET_DDNS_INFO; ///@brief 协议管理配置信息列表 typedef struct tagNET_PROTOCOLS_MANAGER { char szDesc[DH_COMMON_STRING_128]; // 协议描述,如:烟感探测器_DI_SMK BOOL bEnable; // 使能标志 char szProtocol[DH_COMMON_STRING_128]; // 协议名称,如:DI_SMK char szShowType[DH_COMMON_STRING_128]; // 协议类型,如:SmokingSensor BYTE byReserved[256]; // 保留字节 }NET_PROTOCOLS_MANAGER; ///@brief 协议管理配置信息 typedef struct tagNET_SCADA_PROTOCOLS_MANAGER { DWORD dwSize; NET_PROTOCOLS_MANAGER* pstProtocolsManager; // 协议管理配置信息 int nProtocolsManagerNum; // 协议管理配置信息个数 int nRetProtocolsManagerNum; // 实际返回的协议管理配置信息个数 // 如果第一次获取所有协议管理配置时,nRetProtocolsManagerNum大于nProtocolsManagerNum // 那么在下一次获取所有协议管理配置时,nProtocolsManagerNum的值建议取nRetProtocolsManagerNum }NET_SCADA_PROTOCOLS_MANAGER; ///@brief 设备信息配置列表 typedef struct tagNET_DEVICEIDSETS { char szDevName[DH_COMMON_STRING_32]; // 设备名称 char szDevType[DH_COMMON_STRING_32]; // 设备类型 char szNewDeviceId[DH_COMMON_STRING_32]; // 用户配置资产编码,szNewDeviceId实际大小要与szOldDeviceId的实际大小相同 char szOldDeviceId[DH_COMMON_STRING_32]; // 默认资产编码 BYTE byReserved[128]; // 保留字节 }NET_DEVICEIDSETS; ///@brief 设备信息配置 typedef struct tagNET_SCADA_DEVICEINFO_CFG { DWORD dwSize; char szCity[DH_COMMON_STRING_32]; // 所在城市 char szProvince[DH_COMMON_STRING_32]; // 所在省份 int nStation; // 基站类型 NET_DEVICEIDSETS* pstDeviceIdSets; // 接入设备信息 int nDeviceIdSetsNum; // 接入设备个数 int nRetDeviceIdSetsNum; // 返回的接入设备个数 }NET_SCADA_DEVICEINFO_CFG; ///@brief 控制器配置信息 typedef struct tagNET_SCADA_CONTROLLER_SITE_INFO { char szIPAddress[64]; // IP地址 char szDevName[64]; // 设备名称 UINT nPort; // 端口 char szDeviceID[32]; // 设备ID.仅读不可修改,控制器唯一标识 BYTE bReserved[128]; // 保留字节 }NET_SCADA_CONTROLLER_SITE_INFO; ///@brief 控制器配置信息 typedef struct tagNET_CFG_SCADA_CONTROLLER_SITE_INFO { DWORD dwSize; // 结构体大小 int nControllerNum; // 控制器个数 NET_SCADA_CONTROLLER_SITE_INFO stuControllerInfo[128]; // 控制器信息 }NET_CFG_SCADA_CONTROLLER_SITE_INFO; ///@brief 链路层VPN类型 typedef enum tagNET_EM_LINK_LAYER_VPN_TYPE { NET_EM_TYPE_UNKNOWN = 0, // 未知类型 NET_EM_TYPE_PPTP, // PPTP类型的链路层VPN NET_EM_TYPE_L2TP, // L2TP类型的链路层VPN }NET_EM_LINK_LAYER_VPN_TYPE; ///@brief 链路层VPN配置列表 typedef struct tagNET_NETAPP_LINK_LAYER_VPN { char szName[MAX_LINK_NAME_LEN]; // 连接名称 NET_EM_LINK_LAYER_VPN_TYPE emLinkLayerVPNType; // 链路层VPN类型 BOOL bEnable; // 使能开关 char szAddress[MAX_SERVER_ADDRESS_LEN]; // 服务器IP char szUserName[MAX_USER_NAME_LEN]; // 用户名 char szPassword[MAX_PWD_LEN]; // 密码 BYTE byReserved[1024]; // 保留字节 }NET_NETAPP_LINK_LAYER_VPN; ///@brief 链路层VPN设置 typedef struct tagNET_NETAPP_LINK_LAYER_VPN_CFG { DWORD dwSize; int nRetLinkLayerVPNNum; //返回的链路层VPN配置个数 NET_NETAPP_LINK_LAYER_VPN stLinkLayerVPN[LINK_LAYER_VPN_NUM]; //链路层VPN设置数组 }NET_NETAPP_LINK_LAYER_VPN_CFG; ///@brief ssh服务端配置 typedef struct tagNET_NETAPP_SSHD_CFG { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启sshd监听服务 } NET_NETAPP_SSHD_CFG; ///@brief 联系人信息 typedef struct tagNET_MEMBERS_INFO { char szName[MAX_COMMON_STRING_32]; // 联系人姓名 char szMobile[MAX_COMMON_STRING_16]; // 设备描述 char szEmail[MAX_COMMON_STRING_32]; // 电子邮箱 char szOrganization[MAX_COMMON_STRING_64]; // 组织 }NET_MEMBERS_INFO; ///@brief 通知类型 typedef enum tagNET_NOTIFY_TYPE { NET_NOTIFY_TYPE_UNKNOWN, // 未知 NET_NOTIFY_TYPE_SMS, // 短信 NET_NOTIFY_TYPE_CALL, // 电话 NET_NOTIFY_TYPE_ALL, // 短信&电话 }NET_NOTIFY_TYPE; ///@brief 用户组关联通知信息 typedef struct tagNET_NOTIFY_INFO { NET_NOTIFY_TYPE emType; // 通知类型 BOOL bAlarmEvents; // 是否接受报警事件的推送 BOOL bSystemEvents; // 是否接受故障事件的推送 BOOL bOperationEvents; // 是否接受操作事件的推送 }NET_NOTIFY_INFO; ///@brief 通讯录配置列表 typedef struct tagNET_NETAPP_COMMUNICATION_LIST { char szGroupName[MAX_COMMON_STRING_16]; // 自定义组名,不可重复命名 int nMembersNum; // 联系人个数 NET_MEMBERS_INFO arrMembers[32]; // 联系人信息 NET_NOTIFY_INFO stuNotifyInfo; // 用户组关联通知信息 }NET_NETAPP_COMMUNICATION_LIST; ///@brief 通讯录配置 typedef struct tagNET_NETAPP_COMMUNICATION_LIST_CFG { DWORD dwSize; // 结构体大小 int nConmmunicationListNum; // 实际的通讯录配置个数 NET_NETAPP_COMMUNICATION_LIST stuCommunication[10]; // 通讯录配置数组 }NET_NETAPP_COMMUNICATION_LIST_CFG; ///@brief Web服务器设置 typedef struct tagNET_NETAPP_WEB_CFG { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能开关 UINT nPort; // 端口号 }NET_NETAPP_WEB_CFG; ///@brief 中国铁塔平台接入配置 typedef struct tagNET_VSP_CHINA_TOWER { DWORD dwSize; BOOL bEnable; // 接入使能,TRUE为开启,FALSE为关闭 char szServerIP[MAX_SERVER_IP_LEN]; // 服务器IP int nServerPort; // 服务器端口,取值范围0~65535 int nLoginInterval; // 注册时间间隔,单位为秒,取值范围60~180 }NET_VSP_CHINA_TOWER; ///@brief 中国电信手机看店 typedef struct tagNET_VSP_SHDXJT { DWORD dwSize; BOOL bEnable; // 接入使能,TRUE为开启,FALSE为关闭 char szRegisterUrl[128]; // 注册请求的URL地址 char szDeviceID[32]; // 设备唯一识别码,由平台统一分配管理 char szDeviceKey[32]; // 设备合法性验证码,由平台统一分配管理 int nEStoreFlag; // 云存储功能标识, 0:不支持,1:支持 BYTE byReserve[4]; // 保留字节,用于字节对齐 }NET_VSP_SHDXJT; ///@brief 消费机配置 typedef struct tagNET_CFG_VSP_CONSUME { DWORD dwSize; // 结构体大小 UINT nTotalNumber; // 消费总人数 }NET_CFG_VSP_CONSUME; ///@brief 视频对讲电话通用配置(对应NET_EM_CFG_VTH_PASSWORD) typedef struct tagNET_CFG_VTH_PASSWORD_INFO { DWORD dwSize; char szUser[8]; // 用户密码,必须为6位的数字 }NET_CFG_VTH_PASSWORD_INFO; ///@brief sip注册服务器信息 typedef struct tagNET_CFG_SIPSERVER_INFO { DWORD dwSize; char szAccoutName[MAX_COMMON_STRING_64]; // 账户名称 char szAddres[DH_MAX_IPADDR_EX_LEN]; // sip服务器地址 int nPort; // sip服务器端口号 char szProxyAdress[DH_MAX_IPADDR_EX_LEN]; // 代理服务器地址 char szProxyID[MAX_COMMON_STRING_64]; // 代理服务器ID int nProxyPort; // 代理服务器端口号 char szUserID[MAX_COMMON_STRING_64]; // 用户ID,一般是电话号码 int nUserType; // 用户类型。0:SIP客户端,2:门口机做服务器,3:VTNC做服务器 char szAuthID[MAX_USER_NAME_LEN]; // 身份鉴别ID char szAuthPassword[MAX_PWD_LEN]; // 身份鉴别密码 char szSTUNServer[DH_MAX_IPADDR_EX_LEN]; // UDP数据报简单穿越网络地址转换器服务器 char szRegisterRealm[MAX_COMMON_STRING_64]; // 注册域 int nRegExpiration; // 注册间隔时间,单位:秒 int nSipPort; // 本地Sip端口 int nRTPPort; // 本地RTP端口 BOOL bUnregisterOnReboot; // 重启删除注册信息使能 char szDefaultCallNumber[MAX_COMMON_STRING_64]; // 默认呼叫号码 UINT nVideoStreamType; // 视频码流,码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3; UINT nAudioStreamType; // 音频码流,码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3; BOOL bRouteEnable; // 是否开启Sip跨路由功能 int nRouteCount; // 路由器数量 char szRouteAddress[DH_MAX_IPADDR_EX_LEN][MAX_ROUTE_NUM]; // 路由地址 char szSIPServerLoginUserName[MAX_USER_NAME_LEN];// 登陆VTNC的用户名 char szSIPServerLoginPWD[MAX_PWD_LEN]; // 登录VTNC的密码 BOOL bMainVTO; // 是否是备用服务器使能 char szRedundancyServer[DH_MAX_IPADDR_EX_LEN]; // 备用sip服务器地址 char szRedundancyUserName[MAX_USER_NAME_LEN]; // 备用服务器登陆用户名 char szRedundancyPassword[MAX_PWD_LEN]; // 备用服务器登陆密码 char szAnalogNumberStart[MAX_COMMON_STRING_64]; // 模拟系统中支持的模拟室内机起始号码 char szAnalogNumberEnd[MAX_COMMON_STRING_64]; // 模拟系统中支持的模拟室内机结束号码 BOOL bUserEnable; // 注册使能 }NET_CFG_SIPSERVER_INFO; ///@brief 从门口机配置 typedef struct tagNET_DEVICE_LOGIN_INFO { char szAddress[DH_MAX_IPADDR_EX_LEN]; // IP地址 char szLongNumber[MAX_COMMON_STRING_16]; // 长号 char szUsername[MAX_COMMON_STRING_16]; // 用户名 char szPassword[MAX_COMMON_STRING_16]; // 密码 BYTE byReserved[512]; // 保留字节 } NET_DEVICE_LOGIN_INFO; ///@brief 主门口机登陆从门口机配置 typedef struct tagNET_CFG_DEVICE_LOGIN_INFO { DWORD dwSize; int nCount; // 从门口机配置个数 NET_DEVICE_LOGIN_INFO stDeviceLoginInfo[32]; // 从门口机配置 } NET_CFG_DEVICE_LOGIN_INFO; ///@brief 镜头前遮挡盖配置(对应NET_EM_CFG_AELENSMASK) typedef struct tagNET_CFG_AELENSMASK_INFO { DWORD dwSize; BOOL bEnable; // 使能项(true时才支持遮挡盖的开和关操作) char szName[MAX_COMMON_STRING_128]; // 自定义名字 BOOL bStatus; // 开关状态true:表示打开遮挡盖false:遮挡盖遮住镜头 }NET_CFG_AELENSMASK_INFO; ///@brief 单个超声波配置 typedef struct tagNET_CFG_SINGLE_ULTRASONIC { BOOL bEnable; //是否开启超声波使能 UINT nFreq; //超声波探头频率,单位hz int nBurst; //探测一次发出的脉冲个数 int nGain; //超声波探头增益范围[0,100] int nDriveCurrent; //超声波探头驱动电流,单位mA int nMinValidDistance; //超声波信号最小值单位cm int nMaxValidDistance; //超声波信号最大值单位cm,表示过滤大于最大或者小于最小的物体 int nMinVaildSignalIntensity; //最小超声波强度 在最小和最大之间的信号有效 int nMaxVaildSignalIntensity; //最大超声波强度 BYTE byReserved[512]; //保留字节 }NET_CFG_SINGLE_ULTRASONIC; ///@brief 超声波信息 typedef struct tagNET_CFG_ULTRASONIC_INFO { DWORD dwSize; int nMaxCount; //最大超声波配置个数 int nRetCount; //返回的超声波配置个数 NET_CFG_SINGLE_ULTRASONIC *pstuULTRASONIC; //超声波配置信息,由用户申请释放 }NET_CFG_ULTRASONIC_INFO; ///@brief 门禁卡预欠费配置 typedef struct tagNET_CFG_ACCESS_DELAYSTRATEGY { DWORD dwSize; BOOL bEnable; // 是否启用 int nPreArrearsTerm; // 预欠费期限,单位:天 int nArrearsTerm; // 欠费期限,单位:天 }NET_CFG_ACCESS_DELAYSTRATEGY; ///@brief 服务器类型 typedef enum tagNET_EM_REGISTAR_SERVER_TYPE { NET_EM_REGISTAR_SERVER_TYPE_UNKNOWN, NET_EM_REGISTAR_SERVER_TYPE_VTO, NET_EM_REGISTAR_SERVER_TYPE_H500, NET_EM_REGISTAR_SERVER_TYPE_VTNC, NET_EM_REGISTAR_SERVER_TYPE_ZYCOO, NET_EM_REGISTAR_SERVER_TYPE_THIRDPARTY, NET_EM_REGISTAR_SERVER_TYPE_3CXSYSTEM, NET_EM_REGISTAR_SERVER_TYPE_ASTERISK, }NET_EM_REGISTAR_SERVER_TYPE; ///@brief 注册服务器配置信息 typedef struct tagNET_CFG_REGISTAR_INFO { DWORD dwSize; char szRegistarName[MAX_COMMON_STRING_64]; // 注册服务器名称,唯一 NET_EM_REGISTAR_SERVER_TYPE emServerType; // 注册服务器类型 BOOL bRegistarEnable; // 是否注册 char szAddress[DH_MAX_IPADDR_EX_LEN]; // 注册地址 int nPort; // 注册端口 char szPassword[MAX_COMMON_STRING_64]; // 注册密码 }NET_CFG_REGISTAR_INFO; ///@brief 辅码流录像配置时间段 typedef struct tagNET_CFG_RECORDEXTRA_INFO { DWORD dwSize; DH_TSECT stuTimeSection[DH_N_SCHEDULE_TSECT][DH_N_REC_TSECT]; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 }NET_CFG_RECORDEXTRA_INFO; #define NET_MAX_NUM_RECORDBACKUP_TASK 512 // 录像回传任务最大数量 #define NET_MAX_NUM_RECORDBACKUP_CHANNEL 128 // 录像回传通道的最大数量 ///@brief 录像回传任务 typedef struct tagNET_RECORDBACKUP_TASK { int nNumChannel; // 通道数量 int nChannel[NET_MAX_NUM_RECORDBACKUP_CHANNEL];// 通道号列表 NET_TIME_EX stuStartTime; // 开始时间 NET_TIME_EX stuEndTime; // 结束时间 char szStorageGroupName[DH_COMMON_STRING_32]; // 该通道录像要保存到的某盘组中。不存在此字段,由设备默认实现决定 //"ReadWrite*",代表读写组,中间的"*"可以为空,可以为一个数字 //"ReadOnly",代表只读组 //"Redundant",冗余组,设备内置磁盘,使用文件系统.和"ReadWirte"组一个冗余副本 //"NASFTP-" 或 "NASNFS-" 或 "NASSMB-" 或 "NASISCSI-" 或 "NASCloud-" //"Backup":备份组,设备外接的磁盘或U盘,使用标准文件系统.数据写满后停止,不会循环覆盖 //"DrawFrame":历史抽帧组,设备内置磁盘,使用文件系统.实时录像在指定时间后,抽帧并写入该组 BYTE byReserved[512]; // 保留字节 }NET_RECORDBACKUP_TASK; ///@brief 自动录像回传配置(NET_EM_CFG_AUTO_RECORDBACKUP_RESTORE) typedef struct tagNET_CFG_AUTORECORDBACKUPRESTORE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能开关 UINT nSpeed; // 设置回传速度,单位:Kbps NET_TIME_EX stuBackupTime; // 开始录像回传时间 int nNumTask; // 录像回传任务数量 NET_RECORDBACKUP_TASK stuTask[NET_MAX_NUM_RECORDBACKUP_TASK]; //录像回传任务 }NET_CFG_AUTORECORDBACKUPRESTORE_INFO; ///@brief IPC智能抓拍策略 typedef enum tagEM_FACE_SNAP_POLICY { EM_FACE_SNAP_POLICY_UNKNOWN, // 未知 EM_FACE_SNAP_POLICY_REALTIME, // 实时抓拍模式(当前的通用模式,实时性优先) EM_FACE_SNAP_POLICY_OPTIMAL, // 优选抓拍模式,在设定的延时区间(OptimalTime)内挑选评分最高的抓图,准确性优先但延时较大 EM_FACE_SNAP_POLICY_QUALITY, // 质量抓拍模式,在Optimal的基础上,如果图片质量好于阈值提前结束优选,提高实时性 EM_FACE_SNAP_POLICY_RECOGNITION, // 识别优先抓拍模式,在优选时间内,以一定间隔帧数多次进行比对;一旦比对成功则立即结束优选,以提高对比成功率,取代质量优先模式。 EM_FACE_SNAP_POLICY_QUICK, // 快速优选,从检测到开始,抓拍一定帧数内的质量最好的图片 EM_FACE_SNAP_POLICY_FULLTRACK, // 全程优选,抓拍全程质量最好的图片 EM_FACE_SNAP_POLICY_INTERVAL, // 间隔抓拍 EM_FACE_SNAP_POLICY_SINGLE, // 单人模式 EM_FACE_SNAP_POLICY_PRECISION, // 高精度模式,增强目标识别 }EM_FACE_SNAP_POLICY; ///@brief IPC智能抓拍上报图策略 typedef enum tagEM_CUTOUT_POLICY { EM_CUTOUT_POLICY_UNKNOWN = -1, // 未知 EM_CUTOUT_POLICY_UNSUPPORT, // 不支持抠图 EM_CUTOUT_POLICY_ORIGINAL, // 上报照片原始大小 EM_CUTOUT_POLICY_HALF, // 半身照 EM_CUTOUT_POLICY_WHOLE, // 全身照 EM_CUTOUT_POLICY_CEPHALOTHORAX, // 头肩照 }EM_CUTOUT_POLICY; ///@brief IPC智能抓拍配置 typedef struct tagNET_CFG_FACESNAPSHOT_INFO { DWORD dwSize; // 结构体大小 EM_FACE_SNAP_POLICY emSnapPolicy; // 抓拍策略 UINT nSnapFrames; // 抓拍帧数,用于快速抓拍模式,范围[10,1500],默认25帧 UINT nOptimalTime; // 优先最大延时,单位秒 // emSnapPolicy为EM_FACE_SNAP_POLICY_OPTIMAL或EM_FACE_SNAP_POLICY_QUALITY时有效 EM_CUTOUT_POLICY emCutoutPolicy; // UINT nIntervalFrmCnt; // 识别优先抓拍间隔帧数 emSnapPolicy 为 EM_FACE_SNAP_POLICY_RECOGNITION 有效 UINT nOptimalInterval; // 优选抓拍间隔帧数 emSnapPolicy 为 EM_FACE_SNAP_POLICY_INTERVAL 有效 UINT nOptimalCount; // 优选抓拍次数,emSnapPolicy 为 EM_FACE_SNAP_POLICY_INTERVAL 有效 UINT nRecognizeTimeout; // 目标识别失败超时时间,单位秒 }NET_CFG_FACESNAPSHOT_INFO; ///@brief 录像类型 typedef enum tagEM_RECORD_TYPE { EM_RECORD_TYPE_UNKNOWN, // 未知 EM_RECORD_TYPE_COMMON, // 普通录像 EM_RECORD_TYPE_ALARM2, // 报警录像 EM_RECORD_TYPE_MOTIONDETECT, // 动检录像 }EM_RECORD_TYPE; ///@brief 备份任务 typedef struct tagNET_TIME_RECORDBACKUP_TASK { UINT nChannelCount; // 通道有效个数 UINT nChannels[512]; // 通道号 UINT nRemoteChannels[512]; // 远程通道号 char szDeviceIP[64]; // 备份录像源IP,如果为主动注册方式登录的内容为设备ID,例如" IPC9912" UINT nPort; // 端口,如果为主动注册方式登录的内容为0,DeviceIP与Port需保持一致。 char szUserName[64]; // 用户名 char szPassword[64]; // 密码 NET_TIME_EX1 stuStartTime; // 开始时间 NET_TIME_EX1 stuEndTime; // 结束时间 char szStorageGroupName[32]; // 保存的盘组名称 EM_RECORD_TYPE emRecordType; // 录像类型,不填为普通录像 NET_STREAM_TYPE emStreamType; // 码流类型,不填为主码流 BYTE byReserved[504]; // 保留字段 }NET_TIME_RECORDBACKUP_TASK; ///@brief 备份任务处理时间 typedef struct tagNET_RECORDBACKUP_PROCESSTIME { NET_TIME_EX1 stuStartTime; // 开始时间 NET_TIME_EX1 stuEndTime; // 结束时间 BYTE bReserved[64]; // 保留字段 }NET_RECORDBACKUP_PROCESSTIME; ///@brief 录像定时自动备份配置 typedef struct tagNET_CFG_TIME_RECORDBACKUP_RESTORE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能开关,未使能,全天可备份 int nProcessTimeCount; // 备份任务处理时间有效个数 NET_RECORDBACKUP_PROCESSTIME stuProcessTime[4]; // 备份任务处理时间 int nTaskCount; // 任务有效个数 NET_TIME_RECORDBACKUP_TASK stuTask[512]; // 任务信息, 最大支持512个; }NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO; ///@brief 设备下载速度 typedef enum tagNET_EM_DOWNLOAD_SPEED { NET_EM_DOWNLOAD_SPEED_UNKNOWN = -1, // 未知 NET_EM_DOWNLOAD_SPEED_ZERO = 0, // 无限制 NET_EM_DOWNLOAD_SPEED_1024 = 1024, // 1024bps NET_EM_DOWNLOAD_SPEED_2048 = 2048, // 2048bps NET_EM_DOWNLOAD_SPEED_3072 = 3072, // 3072bps NET_EM_DOWNLOAD_SPEED_4096 = 4096, // 4096bps NET_EM_DOWNLOAD_SPEED_8192 = 8192, // 8192bps } NET_EM_DOWNLOAD_SPEED; ///@brief 设备下载速度配置 typedef struct tagNET_CFG_RECORD_DOWNLOAD_SPEED_ALL_INFO { DWORD dwSize; // 结构体大小 NET_EM_DOWNLOAD_SPEED emSpeed; // 设备下载速度 }NET_CFG_RECORD_DOWNLOAD_SPEED_ALL_INFO; ///@brief 上报策略 typedef enum tagNET_EM_REPORT_POLICY { NET_EM_REPORT_POLICY_UNKNOWN, NET_EM_REPORT_POLICY_AUTO, // 设备自动上报 NET_EM_REPORT_POLICY_TIMING, // 平台定时上报 }NET_EM_REPORT_POLICY; ///@brief 设备自动上报信息 typedef struct tagNET_AUTO_REPORT_INFO { int nReportTime; // 上报时间间隔,单位:秒 int nReportDistance; // 上报距离,单位:米 int nInflectionPointAngle; // 拐点角度,单位:度 int nAccOffReportTime; // ACC关闭位置上报时间间隔,单位:秒 BYTE byReserved[1024]; // 保留字节 }NET_AUTO_REPORT_INFO; ///@brief GPS位置上报策略信息(对应 NET_EM_CFG_POSITIONREPORTPOLICY) typedef struct tagNET_CFG_POSITIONREPORTPOLICY_INFO { DWORD dwSize; NET_EM_REPORT_POLICY emReportPolicy; // 上报策略,在设置该字段时,emReportPolicy不为NET_EM_REPORT_POLICY_UNKNOWN NET_AUTO_REPORT_INFO stuAutoReportInfo; // 自动上报信息,此字段在emReportPolicy为NET_EM_REPORT_POLICY_AUTO时有效 }NET_CFG_POSITIONREPORTPOLICY_INFO; ///@brief 运行模式参数 typedef struct tagNET_RUNMODE_PARAMS { DWORD dwSize; //运行模式0:非内存池模式1:内存池模式 int nMode; /*针对nWinConnectBufSize (windows) 每个连接接收数据缓冲大小(字节为单位), * 为0表示维持原来的值,250*1024最佳,最小为128*1024 */ int nWinConnectBufSize; /*针对nWinSocketRcvBuf (windows/linux), socket接收缓存大小(字节为单位), * 为0表示维持原来的值,64*1024最佳,最小为36*1024 */ int nWinSocketRcvBuf; }NET_RUNMODE_PARAMS; ///@brief 自动布撤防时间段 typedef struct tagNET_CFG_ARMSCHEDULE_INFO { DWORD dwSize; BOOL bEnable; // 配置使能 DH_TSECT stuTimeSection[DH_N_SCHEDULE_TSECT][DH_N_REC_TSECT]; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 }NET_CFG_ARMSCHEDULE_INFO; #define MAX_CID_NUM 100 // 标准CID协议最大个数 #define MAX_FTCID_NUM 100 // 4+2型CID协议最大个数 #define MAX_TEL_NUM 2 // 上报的报警中心下标最大个数 ///@brief 协议类型 typedef enum tagEM_CID_REPORT_PROTOCOL_TYPE { EM_CID_REPORT_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_CID_REPORT_PROTOCOL_TYPE_CID, // 标准CID协议 EM_CID_REPORT_PROTOCOL_TYPE_FTCID, // 4+2型CID协议 }EM_CID_REPORT_PROTOCOL_TYPE; ///@brief 标准CID协议事件类型 typedef enum tagEM_CID_EVENT_CODE { EM_CID_EVENT_CODE_UNKNOWN =-1, // -1 : 未知 EM_CID_EVENT_CODE_DEFENCE_GENERAL_ALARM, // 0 : 防区一般报警 EM_CID_EVENT_CODE_DEFENCE_PREVENT_MOVE_ALARM, // 1 : 防区防拆报警 EM_CID_EVENT_CODE_DEFENCE_FAULT_ALARM, // 2 : 防区故障报警 EM_CID_EVENT_CODE_DEFENCE_BYPASS, // 3 : 防区旁路 EM_CID_EVENT_CODE_RAPID_ARM, // 4 : 快速布防 EM_CID_EVENT_CODE_LOCK_ARM_DISARM, // 5 : 锁布撤防 EM_CID_EVENT_CODE_REMOTE_ARM_DISARM, // 6 : 远程布撤防 EM_CID_EVENT_CODE_TIME_ARM_DISARM, // 7 : 定时布撤防 EM_CID_EVENT_CODE_TELEOPERATION_ARM_DISARM, // 8 : 遥控布撤防 EM_CID_EVENT_CODE_USER_ARM_DISARM, // 9 : 用户布撤防 EM_CID_EVENT_CODE_PART_ARM_DISARM, // 10 : 局部布撤防 EM_CID_EVENT_CODE_HOST_PREVENT_MOVE, // 11 :主机防拆 EM_CID_EVENT_CODE_HOST_POWER_FAULT, // 12 :主机掉电 EM_CID_EVENT_CODE_BATTERY_LOW, // 13 :电池低压 EM_CID_EVENT_CODE_BATTERY_FAULT, // 14 :电池掉电 EM_CID_EVENT_CODE_TELEPHONE_DISCONNECTION, // 15 :电话线断线 EM_CID_EVENT_CODE_GSM_SIGNAl_BAD, // 16 :GSM信号差 EM_CID_EVENT_CODE_ALARM_PREVENT_MOVE, // 17 :警号防拆 EM_CID_EVENT_CODE_MODULE_COMMUNICATION_FAULT, // 18 :模块通信故障 EM_CID_EVENT_CODE_SYSTEM_TIME_ABNORMAl, // 19 :系统时间异常 EM_CID_EVENT_CODE_SIM_CAR_FAULT, // 20 :SIM卡故障 EM_CID_EVENT_CODE_NETWORK_COMMUNICATION_FAULT, // 21 :网络通信故障 EM_CID_EVENT_CODE_FIRE_ALARM, // 22 :火警 EM_CID_EVENT_CODE_ROBBER_ALARM, // 23 :匪警 EM_CID_EVENT_CODE_URGENT_MEDICAL_ALARM, // 24 :紧急医疗报警 EM_CID_EVENT_CODE_DURESS_ALARM, // 25 :胁迫报警 EM_CID_EVENT_CODE_PANIC_ALARM, // 26 :恐慌报警 EM_CID_EVENT_CODE_PERIOD_TEST_REPORT, // 27 :定期测试报告 EM_CID_EVENT_CODE_MANUAL_TEST_REPORT, // 28 :手动测试报告 EM_CID_EVENT_CODE_CLEAR_ALARM_CACHE, // 29 :清除报警缓存 EM_CID_EVENT_CODE_ALARM_CANCEL, // 30 :报警取消 EM_CID_EVENT_CODE_EMERGENCY_ALARM, // 31 :软防区紧急报警事件 EM_CID_EVENT_CODE_OUTSIDE_ZONE_ALARM, // 32 :外部(周界)防区报警 EM_CID_EVENT_CODE_INSIDE_ZONE_ALARM, // 33 :内部防区报警 EM_CID_EVENT_CODE_24H_ZONE_ALARM, // 34 :24H防区报警 EM_CID_EVENT_CODE_DELAY_ZONE_ALARM, // 35 :(出入口)延时防区报警 EM_CID_EVENT_CODE_INTIME_DOUBLEMETHOD_ZONE_ALARM, // 36 :即时防区+双鉴传感器,上报盗警 EM_CID_EVENT_CODE_24H_URGENCYBUTTON_ZONE_ALARM, // 37 :24H紧急按钮防区报警(防区类型:24H、传感器感应方式:紧急按钮) EM_CID_EVENT_CODE_24H_FIRE_ZONE_ALARM, // 38 :24H火警防区报警 EM_CID_EVENT_CODE_24H_ROBBERY_ZONE_ALARM, // 39 :24H匪警防区报警 EM_CID_EVENT_CODE_24H_SILENT_ZONE_ALARM, // 40 :24H无声防区报警 EM_CID_EVENT_CODE_24H_SOUND_ZONE_ALARM, // 41 :24H有声防区报警 EM_CID_EVENT_CODE_24H_AUXILIARY_ZONE_ALARM, // 42 :24H辅助防区报警 EM_CID_EVENT_CODE_24H_VIBRATION_ZONE_ALARM, // 43 :24H震动防区报警 EM_CID_EVENT_CODE_TIMEOUT_ZONE_ALARM, // 44 :超时防区报警 EM_CID_EVENT_CODE_FOLLOW_ZONE_ALARM, // 45 :跟随防区报警 EM_CID_EVENT_CODE_EXMODULE_FAULT, // 46 :扩展模块故障 EM_CID_EVENT_CODE_EXMODULE_DC_LOSS, // 47 :扩展模块直流电掉电 EM_CID_EVENT_CODE_EXMODULE_LOW_BATTERY, // 48 :扩展模块电压低 EM_CID_EVENT_CODE_EXMODULE_TAMPER, // 49 :扩展模块防拆 EM_CID_EVENT_CODE_EXMODULE_AC_LOSS, // 50 :扩展模块交流电掉电 EM_CID_EVENT_CODE_PRINTER_FAILURE, // 51 :打印机掉线 EM_CID_EVENT_CODE_GSM_FAULT, // 51 :GSM模块故障 EM_CID_EVENT_CODE_ARMED_STAY, // 53 :留守布防 EM_CID_EVENT_CODE_AUTO_ARM_FAILED, // 54 :自动布防失败 EM_CID_EVENT_CODE_SYSTEM_TROUBLE_PRESENT, // 55 :系统故障保持 EM_CID_EVENT_CODE_PROGRAM_MODE_ENTRY, // 56 :进入编程模式 EM_CID_EVENT_CODE_PROGRAM_MODE_EXIT, // 57 :退出编程模式 EM_CID_EVENT_CODE_PANEL_PROGRAMMING_CHANGED, // 58 :主机编程被改动,此处特指SDK Demo的登录与退出 EM_CID_EVENT_CODE_KEYPAD_TAMPER_ALARM, // 59 :键盘防拆报警 EM_CID_EVENT_CODE_IP_CONFLICT, // 60 :IP冲突 }EM_CID_EVENT_CODE; ///@brief 标准CID协议配置信息 typedef struct tagNET_CFG_CID_REPORT_CID_INFO { int nTelNum; // 上报的报警中心下标个数 int nTel[MAX_TEL_NUM]; // 上报的报警中心下标 EM_CID_EVENT_CODE emEventCode; // 事件类型 BOOL bEventRestore; // 是否支持事件恢复上报 char szContactId[4]; // 3位数字字符串事件码 BYTE bReserved[256]; // 保留字节 }NET_CFG_CID_REPORT_CID_INFO; ///@brief 4+2型CID协议事件类型 typedef enum tagEM_FTCID_EVENT_CODE { EM_FTCID_EVENT_CODE_UNKNOWN =-1, // 未知 EM_FTCID_EVENT_CODE_DEFENCE_ALARM = 0, // 报警,0~15 : 防区1~16报警 EM_FTCID_EVENT_CODE_DEFENCE_ALARM_RESTORE = 16, // 报警恢复,16~31 : 防区1~16报警恢复 EM_FTCID_EVENT_CODE_DEFENCE_BYPASS = 32, // 旁路,32~47 : 防区1~16旁路 EM_FTCID_EVENT_CODE_DEFENCE_BYPASS_RESTORE = 48 , // 旁路恢复,48~63 : 防区1~16旁路恢复 EM_FTCID_EVENT_CODE_ARM = 64, // 64 : 布防 EM_FTCID_EVENT_CODE_DISARM = 65, // 65 : 撤防 EM_FTCID_EVENT_CODE_ALARM_CANCEL = 66, // 66 : 报警取消 EM_FTCID_EVENT_CODE_PERIOD_TEST_REPORT = 67, // 67 : 定期测试报告 EM_FTCID_EVENT_CODE_MANUAL_TEST_REPORT = 68, // 68 : 手动测试报告 EM_FTCID_EVENT_CODE_HOST_POWER_FAULT = 69, // 69 : 主机掉电 EM_FTCID_EVENT_CODE_HOST_POWER_FAULT_RESTORE = 70, // 70 : 主机掉电恢复 EM_FTCID_EVENT_CODE_BATTERY_LOW = 71, // 71 : 电池低压 EM_FTCID_EVENT_CODE_BATTERY_LOW_RESTORE = 72, // 72 : 电池低压恢复 EM_FTCID_EVENT_CODE_SOFT_KEYBOARD_REPORT_CODE = 73, // 73 : 软键盘报告码 }EM_FTCID_EVENT_CODE; ///@brief 4+2型CID协议配置信息 typedef struct tagNET_CFG_CID_REPORT_FTCID_INFO { int nTelNum; // 上报的报警中心下标个数 int nTel[MAX_TEL_NUM]; // 上报的报警中心下标 EM_FTCID_EVENT_CODE emEventCode; // 事件类型 int nDefenceChannel; // 防区号,当事件类型为报警、报警恢复、旁路、旁路恢复时才有效 char szContactId[3]; // 2位数字字符串事件码 BYTE bReserved[257]; // 保留字节 }NET_CFG_CID_REPORT_FTCID_INFO; ///@brief CID联动配置(对应NET_EM_CFG_CID_REPORT) typedef struct tagNET_CFG_CID_REPORT_INFO { DWORD dwSize; // 结构体大小 EM_CID_REPORT_PROTOCOL_TYPE emProtocol; // 协议类型 int nCIDNum; // 标准CID协议个数 NET_CFG_CID_REPORT_CID_INFO stuCID[MAX_CID_NUM]; // 标准CID协议,当emProtocol为EM_CID_REPORT_PROTOCOL_TYPE_CID时有效 int nFTCIDNum; // 4+2型CID协议个数,当emProtocol为EM_CID_REPORT_PROTOCOL_TYPE_FTCID时有效 NET_CFG_CID_REPORT_FTCID_INFO stuFTCID[MAX_FTCID_NUM]; // 4+2型CID协议 }NET_CFG_CID_REPORT_INFO; ///@brief 报警主机操作员配置信息 typedef struct tagNET_CFG_KBUSER_SERVER { int nUserCode; // 用户编号 char szPasswd[7]; // 键盘密码 BYTE bReserved[129]; // 保留字节 }NET_CFG_KBUSER_SERVER; // 最多支持100个用户密码参数 #define MAX_KBUSER_SERVER_NUM 100 ///@brief 报警主机键盘密码配置(对应 NET_EM_CFG_KBUER_PASSWORD) typedef struct tagNET_CFG_KBUSER_PASSWORD { DWORD dwSize; //结构体大小 int nServerNum; //操作员配置信息数量 NET_CFG_KBUSER_SERVER stuServers[MAX_KBUSER_SERVER_NUM]; //操作员配置信息 }NET_CFG_KBUSER_PASSWORD; ///@brief 任务类型 typedef enum tagEM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE { EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_UNKNOWN, // 未知 EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_BY_TIMESECTION, // 基于TimeSection进行分析,分析时间根据TimeSection控制 EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_BY_CHANNELNUM, // 基于通道数量进行分析,任务下发立即执行,单次任务直至所有通道分析完毕才停止,IsCycle为true则开启下次分析,若无此字段默认基于TimeSection } EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE; ///@brief 视频诊断任务 typedef struct tagNET_PROJECT_TASK { BOOL bEnable; // 任务是否使能 char szTaskName[MAX_PATH]; // 任务名称Ansi编码 DH_TSECT stuTimeSection[DH_N_WEEKS][DH_N_REC_TSECT]; // 任务时间段 BOOL bIsCycle; // 任务是否循环,TRUE表示循环,FALSE表示不循环 EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE emTaskType; // 任务类型 BOOL bIsRepeat; // 任务是否重复执行,(跨天/周是否重复执行) int nCycleInterval; // 任务循环间隔,单位秒 BYTE byReserved[500]; // 保留字节 }NET_PROJECT_TASK; ///@brief 视频诊断计划配置 typedef struct tagNET_VIDEODIAGNOSIS_PROJECT_INFO { DWORD dwSize; char szProjectName[MAX_PATH]; // 计划名称 int nTotalTaskNum; // 调用者分配任务列表个数, 根据能力集获取 int nReturnTaskNum; // 返回实际任务列表个数 NET_PROJECT_TASK* pstProjectTasks; // 任务列表 , 调用者分配内存nTotalTaskNum个 } NET_VIDEODIAGNOSIS_PROJECT_INFO; ///@brief 视频诊断任务 typedef struct tagNET_PROJECT_TASK_INFO { BOOL bEnable; // 任务是否使能 char szTaskName[260]; // 任务名称 DH_TSECT stuTimeSection[32][6]; // 按月的任务时间段,第一维里的前31个元素对应每月的日期,第32个元素为预留元素 BOOL bIsCycle; // 任务是否循环,TRUE表示循环,FALSE表示不循环 BYTE byReserved[512]; // 保留字节 }NET_PROJECT_TASK_INFO; ///@brief 按月的视频诊断计划扩展配置信息,对应 NET_EM_CFG_VIDEO_DIAGNOSIS_PROJECT_MONTH typedef struct tagNET_CFG_VIDEODIAGNOSIS_PROJECT_MONTH_INFO { DWORD dwSize; // 结构体大小 char szProjectName[260]; // 计划名称 int nTotalTaskNum; // 调用者分配任务列表个数, 根据能力集获取,最大不超过32 int nReturnTaskNum; // 返回实际任务列表个数 NET_PROJECT_TASK_INFO* pstProjectTasks; // 任务列表, 调用者分配内存nTotalTaskNum*sizeof(NET_PROJECT_TASK_INFO)个字节 }NET_CFG_VIDEODIAGNOSIS_PROJECT_MONTH_INFO; ///@brief GPS搜星数OSD配置 typedef struct tagNET_CFG_GPSSTARNUM_OSD_INFO { DWORD dwSize; BOOL bBDOSDEnable; // 是否叠加北斗卫星数 BOOL bGPSOSDEnable; // 是否叠加GPS卫星数 }NET_CFG_GPSSTARNUM_OSD_INFO; ///@brief 图片标题 typedef struct tagNET_OSD_PICTURE_TITLE { DWORD dwSize; NET_EM_OSD_BLEND_TYPE emOsdBlendType; // 叠加类型 BOOL bEncodeBlend; // 是否叠加 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值0~8191 char szName[DH_COMMON_STRING_64]; // 图片名称 int nWidth; // 图片宽 int nHeight; // 图片高 }NET_OSD_PICTURE_TITLE; ///@brief 预置点信息叠加 NET_EM_CFG_PTZ_PRESET typedef struct tagNET_OSD_CFG_PTZ_PRESET { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 }NET_OSD_CFG_PTZ_PRESET; ///@brief 显示巡迹百分比叠加配置 NET_EM_CFG_PTZ_PATTERN typedef struct tagNET_OSD_CFG_PTZ_PATTERN { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 }NET_OSD_CFG_PTZ_PATTERN; ///@brief 显示RS485检测结果的叠加配置 NET_EM_CFG_PTZ_RS485_DETECT typedef struct tagNET_OSD_CFG_PTZ_RS485_DETECT { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 }NET_OSD_CFG_PTZ_RS485_DETECT; ///@brief 显示云台坐标的叠加配置 NET_EM_CFG_PTZ_COORDINATES typedef struct tagNET_OSD_CFG_PTZ_COORDINATES { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 }NET_OSD_CFG_PTZ_COORDINATES; ///@brief 显示云台方向的叠加配置 NET_EM_CFG_PTZ_DIRECTION typedef struct tagNET_OSD_CFG_PTZ_DIRECTION { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 }NET_OSD_CFG_PTZ_DIRECTION; ///@brief 温度单位 typedef enum tagEM_TEMPERATURE_UNIT_EX { EM_TEMPERATURE_EX_UNKNOWN, // 未知 EM_TEMPERATURE_EX_CENTIGRADE, // 摄氏度 EM_TEMPERATURE_EX_FAHRENHEIT, // 华氏度 EM_TEMPERATURE_EX_KELVIN, // 开尔文 } EM_TEMPERATURE_UNIT_EX; ///@brief 显示环境温度的叠加配置 NET_EM_CFG_TEMPERATURE typedef struct tagNET_OSD_CFG_TEMPERATURE { DWORD dwSize; int nDisplayTime; // 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600 BOOL bEncodeBlend; // 叠加到主码流视频编码 BOOL bPreviewBlend; // 是否叠加到预览显示 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域 EM_TEMPERATURE_UNIT_EX emTemperatureType; // 温度单位的类型 }NET_OSD_CFG_TEMPERATURE; ///@brief 人体测温的状态 typedef enum tagEM_TEMPERATURE_STATE { EM_TEMPERATURE_STATE_UNKNOWN, // 未知 EM_TEMPERATURE_STATE_LOW, // 异常 EM_TEMPERATURE_STATE_NORMAL, // 正常 EM_TEMPERATURE_STATE_HIGH, // 异常 } EM_TEMPERATURE_STATE; ///@brief 事件类型DH_ALARM_ANATOMY_TEMPDETECT_TO_PHONE (用于手机推送的测温事件) 对应的数据块描述信息 typedef struct tagALARM_ANATOMY_TEMPDETECT_TO_PHONE_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID char szObjPath[256]; // 抓拍图路径 char szVisSceneImagePath[256];//可见光大图路径 float fHighTemp; // 最高的温度,界面展示精确到1位小数,四舍五入处理 EM_TEMPERATURE_STATE emTempType; // 测温的状态 EM_TEMPERATURE_UNIT_EX emTempUnit; // 温度单位的类型 BYTE byReserved[1020]; // 预留字段 } ALARM_ANATOMY_TEMPDETECT_TO_PHONE_INFO; ///@brief 事件类型DH_ALARM_CHANNEL_CAPS_CHANGE (通道智能能力变化事件) 对应的数据块描述信息 typedef struct tagALARM_CHANNEL_CAPS_CHANGE_INFO { UINT nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID UINT nOldCapsCnt; // 通道变化前开启的智能个数 UINT nNewCapsCnt; // 通道变化后开启的智能个数 char szOldCaps[16][64]; // 通道变化前开启的智能 char szNewCaps[16][64]; // 通道变化后开启的智能 char szReserved[1024]; // 预留字段 } ALARM_CHANNEL_CAPS_CHANGE_INFO; ///@brief 雨量状态 typedef enum tagEM_RAIN_FALL_STATUS { EM_RAIN_FALL_STATUS_UNKNOWN, // 未知 EM_RAIN_FALL_STATUS_NORMAL, // 正常 EM_RAIN_FALL_STATUS_HIGH, // 高于上限阈值 } EM_RAIN_FALL_STATUS; ///@brief 事件类型DH_ALARM_RAIN_FALL_MSG (雨量数据上报事件) 对应的数据块描述信息 typedef struct tagALARM_RAIN_FALL_MSG_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_TIME_EX stuTime; // 事件发生的时间 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID EM_EVENT_TYPE emEventType; // 事件的数据类型 float fRainLevel; // 雨量高度(单位:毫米) EM_RAIN_FALL_STATUS emStatus; // 雨量状态 char szReserved[1024]; // 保留字节 } ALARM_RAIN_FALL_MSG_INFO; ///@brief 事件类型DH_ALARM_VEHICLE_DETENTION(车道滞留事件) 对应的数据块描述信息 typedef struct tagALARM_VEHICLE_DETENTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuTime; // 事件发生的时间 int nEventID; // 事件ID NET_TIME stuDetentionStartTime; // 滞留开始时间 char szPlateNumber[128]; // 车牌号码 char szReserved[1024]; // 预留字段 }ALARM_VEHICLE_DETENTION_INFO; ///@brief 事件类型DH_ALARM_ANIMAL_DETECTION (动物检测事件) 对应的数据块描述信息 typedef struct tagALARM_ANIMAL_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 NET_TIME_EX stuTime; // 事件发生的时间 EM_SCENE_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nEventID; // 事件ID UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件 UINT nSequence; // 帧序号 NET_ANIMAL_SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_ANIMAL_OBJECTS_STATISTICS stuObjectsStatistics; // 动物统计信息 EM_DETECTION_SCENE_TYPE emDetectionSceneType; // 动物检测规则下的场景类型 int nObjectListCount; // 区域内目标列表个数 NET_ANIMAL_OBJECT_LIST_INFO stuObjectListInfo[64]; // 区域内目标列表 char szReserved[1024]; // 保留字节 } ALARM_ANIMAL_DETECTION_INFO; ///@brief 自检结果 typedef enum tagEM_RESULT { EM_RESULT_UNKNOWN = -1, // 自检结果未知 EM_RESULT_ALL_NORMAL, // 全部功能正常 EM_RESULT_CORE_NORMAL, // 核心功能正常 EM_RESULT_CORE_ABNORMAL, // 核心功能不良 }EM_RESULT; ///@brief 错误码 typedef enum tagEM_INFRARED_ERROR_CODE { EM_INFRARED_ERROR_CODE_UNKNOWN = -1, // 未知 EM_INFRARED_ERROR_CODE_ALL_INFRARED_NORMAL, // 全部红外正常 EM_INFRARED_ERROR_CODE_NOCORE_ABNORMAL, // 核心红外正常,非核心红外不良 EM_INFRARED_ERROR_CODE_CORE_ABNORMAL, // 核心红外不良 }EM_INFRARED_ERROR_CODE; ///@brief 红外检查项 typedef struct tagNET_INFRARED { EM_INFRARED_ERROR_CODE emInfraredErrorCode; // 错误码 UINT nFaultNumber; // 故障红外编号个数 UINT nFaultNoList[32]; // 故障红外编号列表 char szReserved[512]; // 预留字节 }NET_INFRARED; ///@brief 错误码 typedef enum tagEM_FIRMWARE_ERROR_CODE { EM_FIRMWARE_ERROR_CODE_UNKNOWN = -1, // 未知 EM_FIRMWARE_ERROR_CODE_ADAPTATION, // 适配 EM_FIRMWARE_ERROR_CODE_COMPATIBLE, // 兼容 EM_FIRMWARE_ERROR_CODE_NOCOMPATIBLE, // 不兼容 }EM_FIRMWARE_ERROR_CODE; ///@brief 固件检查项 typedef struct tagNET_FIRMWARE { EM_FIRMWARE_ERROR_CODE emFirmwareErrorCode; // 错误码 char szReserved[512]; // 预留字节 }NET_FIRMWARE; ///@brief 错误码 typedef enum tagEM_MOTOR_ERROR_CODE { EM_MOTOR_ERROR_CODE_UNKNOWN = -1, // 未知 EM_MOTOR_ERROR_CODE_NORMAL, // 正常 EM_MOTOR_ERROR_CODE_UVW_LACK, // UVW缺相 EM_MOTOR_ERROR_CODE_AB_LACK, // 编码器A/B缺相 EM_MOTOR_ERROR_CODE_Z_LACK, // 编码器Z缺相 EM_MOTOR_ERROR_HALL_SENSOR_ABNORMAL, // 霍尔传感器异常 EM_MOTOR_ERROR_CODE_ZERO, // 零位错误(学习到的逻辑零位,不在转动范围内) EM_MOTOR_ERROR_CODE_ROTATION, // 电机转动行程异常 }EM_MOTOR_ERROR_CODE; ///@brief 电机检查项 typedef struct tagNET_MOTOR { EM_MOTOR_ERROR_CODE emMotorErrorCode; // 错误码 char szReserved[512]; // 预留字节 }NET_MOTOR; ///@brief 事件类型DH_ALARM_ASG_SELFCHECK (闸机自检事件) 对应的数据块描述信息 typedef struct tagALARM_ASG_SELFCHECK_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 EM_RESULT emResult; // 自检结果 NET_INFRARED stuInfrared; // 红外检查项 NET_FIRMWARE stuFirmWare; // 固件检查项 NET_MOTOR stuMotor; // 电机检查项 char szReserved[1024]; // 保留字节 }ALARM_ASG_SELFCHECK_INFO; ///@brief 布控类型 typedef enum tagEM_GPS_CONTROLLED_TYPE { EM_GPS_CONTROLLED_TYPE_UNKNOWN, // 未知 EM_GPS_CONTROLLED_TYPE_FOCALCAR, // 重点车辆 EM_GPS_CONTROLLED_TYPE_GUARANTEECAR, // 保障车辆 EM_GPS_CONTROLLED_TYPE_FOLLOWCAR, // 关注车辆 EM_GPS_CONTROLLED_TYPE_OTHER, // 其他 }EM_GPS_CONTROLLED_TYPE; ///@brief GPS上报平台报警事件ALARM_GPS_REPORTING_PLATFORM typedef struct tagALARM_GPS_REPORTING_PLATFORM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) UINT nEventID; // 事件ID NET_TIME_EX stuUTC; // 事件发生的时间 NET_GPS_STATUS_INFO stuGPSStatus; // GPS状态(大运会上报标定GPS信息) EM_GPS_CONTROLLED_TYPE emControlledType; // 布控类型 char szPlateNumber[64]; // 车牌号 char szReserved[1024]; // 预留字节 }ALARM_GPS_REPORTING_PLATFORM; ///@brief 事件类型 typedef enum tagEM_HOSPITAL_ALARM_TYPE { EM_HOSPITAL_ALARM_TYPE_UNKNOWN, // 未知 EM_HOSPITAL_ALARM_TYPE_EMERGENCY, // 紧急报警事件 EM_HOSPITAL_ALARM_TYPE_NURSING, // 护理事件 EM_HOSPITAL_ALARM_TYPE_HOSTING, // 主机托管事件 EM_HOSPITAL_ALARM_TYPE_ABNORMAL_BODY_TEMPERATURE, // 人体温度监测异常 EM_HOSPITAL_ALARM_TYPE_DRESSING_CHANGE_REQUEST, // 换药请求 EM_HOSPITAL_ALARM_TYPE_REQUEST_SUPPORT, // 请求支援 EM_HOSPITAL_ALARM_TYPE_NURSING_REQUEST, // 护理请求 EM_HOSPITAL_ALARM_TYPE_HANDLE_DISCONNECTED_ALARM, // 手柄掉线报警 EM_HOSPITAL_ALARM_TYPE_DISINFECT_CLEAN_COMPLETE, // 消杀清洁完成 }EM_HOSPITAL_ALARM_TYPE; ///@brief 事件类型DH_ALARM_HOSPITAL_ALARM(医护对讲的报警事件) 对应的数据块描述信息 typedef struct tagALARM_HOSPITAL_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; NET_TIME_EX stuTime; // 事件发生的时间 EM_HOSPITAL_ALARM_TYPE emType; // 事件类型 char szRoomNumber[16]; // 病房号 char szBedNumber[8]; // 病床号 char szDestPhone[16]; // 托管的目标主机号码 char szSrcPhone[16]; // 托管的源主机号码 char szDestDevCode[64]; // 托管的目标主机设备编码 char szSrcDevCode[64]; // 托管的源主机设备编码 UINT nUniqueID; // 事件序列标志 NET_TIME_EX stuUTC; // 事件触发的时间 char szUUID[64]; // 事件唯一序号 char szReserved[920]; // 保留字节 }ALARM_HOSPITAL_ALARM_INFO; ///@brief 报警线剪断报警事件 typedef struct tagALARM_CUTLINE { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 UINT nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生时间 BYTE byReserved[512]; // 预留字节 }ALARM_CUTLINE; ///@brief 右侧盲区报警事件 typedef struct tagALARM_BLIND_SPOT_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 UINT nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生时间 UINT nAlarmLevel; // 报警等级 int nObjectNum; // 目标物体个数 NET_BLIND_SPOT_DETECTION_OBJECT_INFO stuObjectInfo[32]; // 目标物体信息 BYTE byReserved[512]; // 预留字节 }ALARM_BLIND_SPOT_DETECTION_INFO; ///@brief 呼叫类型 typedef enum tagEM_VIDEOTALK_TYPE { EM_VIDEOTALK_TYPE_UNKNOW, // 未知 EM_VIDEOTALK_TYPE_INVITE, // 呼叫 EM_VIDEOTALK_TYPE_RING, // 振铃 EM_VIDEOTALK_TYPE_ANSWER, // 通话 EM_VIDEOTALK_TYPE_HANGUP, // 挂断 }EM_VIDEOTALK_TYPE; ///@brief 事件类型DH_ALARM_HOSPITAL_ALARM(对讲记录事件) 对应的数据块描述信息 typedef struct tagALARM_VIDEOTALK_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nLocalID; // 主叫号码 UINT nRemoteID; // 被叫号码 EM_VIDEOTALK_TYPE emVideoTalkType; // 呼叫类型 NET_TIME_EX stuTime; // 呼叫时间 char szIP[40]; // 本机IP地址 char szReserved[512]; // 预留字节 }ALARM_VIDEOTALK_INFO; ///@brief 异常类型 typedef enum tagEM_PREVENT_FREERIDE_EXCEPTION_TYPE { EM_PREVENT_FREERIDE_EXCEPTION_TYPE_UNKNOWN = -1, // 未知 EM_PREVENT_FREERIDE_EXCEPTION_TYPE_ABNORMAL_BOARDING, // 上车异常 EM_PREVENT_FREERIDE_EXCEPTION_TYPE_ABNORMAL_ALIGHTING, // 下车异常 EM_PREVENT_FREERIDE_EXCEPTION_TYPE_ABNORMAL_BOARDING_AND_ALIGHTING, // 上下车异常 }EM_PREVENT_FREERIDE_EXCEPTION_TYPE; ///@brief 公交系统上报逃票异常报警事件 typedef struct tagALARM_PREVENT_FREE_RIDE_INFO { int nChannelID; // 通道号 char szDeviceID[20]; // 设备编号 char szName[128]; // 事件名称 NET_TIME_EX UTC; // 标准UTC时间 EM_PREVENT_FREERIDE_EXCEPTION_TYPE emExceptionType; // 异常类型 int nGetOnBusPeople; // 上车人数 int nGetOffBusPeople; // 下车人数 int nInputNumber; // 录入人数 int nOutputNumber; // 结算人数 BYTE byReserved[512]; // 预留字节 }ALARM_PREVENT_FREE_RIDE_INFO; ///@brief 水流速检测事件 typedef struct tagALARM_WATER_SPEED_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 UINT nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生时间 EM_EVENT_TYPE emEventType; // 事件的数据类型 UINT nPresetID; // 事件触发的预置点号,从1开始,没有该字段,表示预置点未知 char szPresetName[64]; // 事件触发的预置点名称 NET_WATER_SPEED_INFO stuWaterSpeed[50]; // 水流速度信息 int nWaterSpeedNum; // 水流速度信息个数 EM_WATER_SPEED_STATUS emStatus; // 水流速状态 NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage; // 原始图,近景 NET_INTELLIGENCE_IMAGE_INFO stuSceneImage; // 球机变到最小倍下的抓图 float fValue; // 流量值,单位:立方米每秒(m3/s) float fSecSpeedValue; // 断面平均流速值, 单位:m/s BYTE byReserved[1016]; // 预留字节 }ALARM_WATER_SPEED_DETECTION_INFO; ///@brief 湿度报警事件 typedef struct tagALARM_HUMIDITY_ALARM_INFO { int nChannelID; // 通道号 int nAction; // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[128]; // 事件名称 UINT nEventID; // 事件ID NET_TIME_EX UTC; // 事件发生时间 float fCurrentValue; // 当前湿度值 float fLimitValue; // 报警阈值 NET_GPS_STATUS_INFO stuGPSStatus; // GPS信息 char byReserved[1024]; // 预留字节 }ALARM_HUMIDITY_ALARM_INFO; ///@brief 覆盖区域 typedef struct tagNET_VEDIO_WIDGET_COVER { BOOL bPreviewBlend; // 叠加到预览视频 BOOL bEncodeBlend; // 叠加到主码流 BOOL bEncodeBlendExtra1; // 叠加到辅码流1 BOOL bEncodeBlendExtra2; // 叠加到辅码流2 BOOL bEncodeBlendExtra3; // 叠加到辅码流3 BOOL bEncodeBlendSnapshot; // 叠加到抓图 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 区域, 坐标取值区间[0,8191] BYTE byReserver[128]; // 保留字节 }NET_VEDIO_WIDGET_COVER; ///@brief 区域覆盖 NET_EM_CFG_COVERS typedef struct tagNET_OSD_CFG_COVERS { DWORD dwSize; int nCoverCount; // 覆盖区域个数 NET_VEDIO_WIDGET_COVER stuCovers[16]; // 覆盖区域 }NET_OSD_CFG_COVERS; ///@brief 自定义的标题信息 typedef struct tagNET_USER_DEF_TITLE_INFO { char szText[CUSTOM_TITLE_LEN]; // 标题内容 BOOL bEncodeBlend; // 是加叠加到编码视频使能 BOOL bPreviewBlend; // 叠加到预览视频使能 NET_RECT stuRect; // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 EM_TITLE_TEXT_ALIGNTYPE emTextAlign; // 文本对齐方式 BYTE byReserved[516]; // 保留字节 }NET_USER_DEF_TITLE_INFO; ///@brief 用户自定义OSD标题 NET_EM_CFG_USER_DEF_TITLE typedef struct tagNET_OSD_USER_DEF_TITLE { DWORD dwSize; int nUserDefTitleNum; // 自定义标题数量 NET_USER_DEF_TITLE_INFO stuUserDefTitle[16]; // 自定义标题 }NET_OSD_USER_DEF_TITLE; ///@brief 叠加配置信息 typedef struct tagNET_OSD_CUSTOM_GENERAL_INFO { BOOL bEnable; // 是否叠加 BYTE byReserved[2044]; // 预留字节 }NET_OSD_CUSTOM_GENERAL_INFO; ///@brief 抓拍OSD 智能业务合集 typedef struct tagNET_CFG_SNAP_OSD_WITH_CLASS { int nGeneralInfoNum; // 叠加配置个数 NET_OSD_CUSTOM_GENERAL_INFO stGeneralInfos[8]; // 叠加配置信息 BYTE byReserved[2048]; // 保留字节 } NET_CFG_SNAP_OSD_WITH_CLASS; ///@brief 抓拍OSD配置信息 typedef struct tagNET_CFG_SNAP_OSD_INFO { int nClassNum; // 智能业务个数 NET_CFG_SNAP_OSD_WITH_CLASS stuOSDWithClass[8]; // 智能业务集合 BYTE byReserved[2048]; // 保留字节 }NET_CFG_SNAP_OSD_INFO; ///@brief 抓拍OSD配置 NET_EM_CFG_SNAP_OSD typedef struct tagNET_CFG_SNAP_OSD { DWORD dwSize; // 结构体大小 int nSnapOSDNum; // 抓拍OSD配置数量 NET_CFG_SNAP_OSD_INFO stuSnapOSDInfo[8]; // 抓拍OSD配置信息 } NET_CFG_SNAP_OSD; ///@brief 抓图类型 typedef enum tagEM_SNAP_TYPE { EM_SNAP_TYPE_UNKNOWN, // 未知 EM_SNAP_TYPE_PLATE, // "Plate": 车牌抠图(抠车牌边框) EM_SNAP_TYPE_DRIVER_FACE, // "DriverFace": 驾驶员目标抠图 EM_SNAP_TYPE_ASSISTANT_DRIVER_FACE, // "AssistantDriverFace": 辅驾驶员目标抠图 EM_SNAP_TYPE_VEHICLE_TAIL, // "VehicleTail": 车尾抠图 EM_SNAP_TYPE_VEHICLE_BODY, // "VehicleBody": 车身抠图 EM_SNAP_TYPE_FACE, // 目标抠图 EM_SNAP_TYPE_BODY, // "Body": 行人全身抠图 EM_SNAP_TYPE_BINARIZED_PLATE, // "BinarizedPlate": 二值化车牌抠图 EM_SNAP_TYPE_NON_MOTOR_FACE, // "NonMotorFace": 非机动车f目标抠图 EM_SNAP_TYPE_NON_MOTOR_BODY, // "NonMotorBody": 非机动车身图 EM_SNAP_TYPE_SCENE_IMAGE, // "SceneImage": 全景图 EM_SNAP_TYPE_HUMAN_SCENE_IMAGE, // "HumanSceneImage": 人员全景图 EM_SNAP_TYPE_VEHICLE_SCENE_IMAGE, // "VehicleSceneImage": 机动车全景图 EM_SNAP_TYPE_NON_MOTOR_SCENE_IMAGE, // "NonMotorSceneImage": 非机动车全景图 }EM_SNAP_TYPE; ///@brief IPC物体检测(机非人)抓图叠加OSD配置信息 typedef struct tagNET_CFG_OBJECT_DETECT_SNAP_SHOT_INFO { EM_SNAP_TYPE emSnapTypeEnable[32]; // 使能的抓图类型 int nSnapTypeEnableNum; // 使能的抓图类型的个数, 最大值为32, 配合emSnapTypeEnable[32]一起使用 int nUploadVehicleTypeNum; // 使能的上传车辆类型图片的个数, 最大值为255, 配合nUploadVehicleType[255]一起使用 int nUploadVehicleType[255]; // 使能的上传车辆类型图片, 具体描述见下: // 0:未知 1:客车 2:大货车 3:中货车 4:轿车 5:面包车 6:小货车 7:三轮车 8:摩托车 9:行人 10:SUV-MPV // 11:中客车 12:危化品车辆(特殊车辆) 13:SUV 14:MPV 15:公交车 16:皮卡车 17:微型车 18:油罐车(特殊车辆) 19:槽罐车(特殊车辆) 20:保留1(特殊车辆) 21:渣土车(特殊车辆) // 22:混凝土搅拌车(特殊车辆) 23:出租车(特殊车辆) 24:警车(特殊车辆) 25:救护车(特殊车辆) 26:普通车(特殊车辆) 27:环卫车(包括洒水车、垃圾车、清扫车等)(特殊车辆) 28:保留2(特殊车辆) 29:消防车(特殊车辆) 30:拖拉机(特殊车辆) 31:工程车(特殊车辆) 32:粉粒物料车(特殊车辆) // 33:吸污车(特殊车辆) 34:普通罐车(特殊车辆) 35:二轮车 36:校车(特殊车辆) 37:挖掘车(特殊车辆) 38:推土车(特殊车辆) 39:吊车(特殊车辆) 40:泵车(特殊车辆) 41:押运车(特殊车辆) 42:铲车(特殊车辆) // 201:自行车 202:厢式三轮车 203:载人敞篷三轮车 204:不载人敞篷三轮车 char szReserved[2044]; // 保留字节 }NET_CFG_OBJECT_DETECT_SNAP_SHOT_INFO; ///@brief IPC物体检测(机非人)抓图叠加OSD配置 NET_EM_CFG_OBJECT_DETECT_SNAP_SHOT typedef struct tagNET_CFG_OBJECT_DETECT_SNAP_SHOT { DWORD dwSize; // 结构体大小 int nObjectDetectSnapshotNum; // IPC物体检测(机非人)抓图叠加OSD配置数量(需要用户输入赋值) NET_CFG_OBJECT_DETECT_SNAP_SHOT_INFO* pstuObjectDetectSnapshotInfo; // IPC物体检测(机非人)抓图叠加OSD配置信息, 内存由用户分配和释放,大小为nObjectDetectSnapshotNum * sizeof(NET_CFG_OBJECT_DETECT_SNAP_SHOT_INFO) int nRetObjectDetectSnapshotNum; // 设备返回的IPC物体检测(机非人)抓图叠加OSD配置数量(不需要用户输入赋值), nRetObjectDetectSnapshotNum小于或等于nObjectDetectSnapshotNum } NET_CFG_OBJECT_DETECT_SNAP_SHOT; ///@brief 定时抓图配置 typedef struct tagNET_CFG_TIMING_SNAP { BOOL bEnable; // 是否开启定时抓图 UINT nTimingSnapInterval; // 定时抓图的时间间隔,单位为秒,必填,若为0或不存在则不抓图 UINT nTimeSectionID; // 事件对应的日程ID char szReserved[256]; // 保留字段 }NET_CFG_TIMING_SNAP; ///@brief 计划抓图配置 NET_EM_CFG_SNAP_FPS typedef struct tagNET_CFG_SNAP_FPS { DWORD dwSize; // 结构体大小 BOOL bIsGlobal; // 是否继承全局的存储计划配置(StorageScheduleGlobal),true表示继承,false表示不继承 UINT nManulSnapNum; // 一次手动抓图,抓Num张图 范围[1,5] UINT nManulSnapInterval; // 手动抓图的时间间隔,单位为秒 范围[1,7] NET_CFG_TIMING_SNAP stuTimingSnap; // 定时抓图配置 }NET_CFG_SNAP_FPS; ///@brief 拉流控制配置, 对应 NET_EM_CFG_STREAM_LOCK typedef struct tagNET_CFG_STREAM_LOCK_INFO { DWORD dwSize; // 结构体大小 BOOL bMonitorLock; // 是否锁定实时预览 BOOL bPlayBackLock; // 是否锁定录像回放 char szLockReasonNote[256]; // 锁定提示语 BOOL bGlobalLock; // 当这个字段是true时,无法拉实时流和回放流,当这个字段为false时,由bMonitorLock和bPlayBackLock分别控制拉实时流和回放流 }NET_CFG_STREAM_LOCK_INFO; ///@brief 拉流控制配置, 对应 NET_EM_CFG_CAMERA_STREAM_LOCK typedef struct tagNET_CFG_CAMERA_STREAM_LOCK_INFO { DWORD dwSize; // 结构体大小 BOOL bMonitorLock; // 是否锁定实时预览 BOOL bPlayBackLock; // 是否锁定录像回放 char szLockReasonNote[256]; // 锁定提示语 }NET_CFG_CAMERA_STREAM_LOCK_INFO; ///@brief 检测参数信息 typedef struct tagNET_EAR_DETECTION_PARAM { int nStepFrequency; // 步进频率: 0:160Hz, 1:170Hz, 2:180Hz, 3:190Hz int nFrequency; // 工作频率: 0:6.8MHz, 1:7.2MHz, 2:8.2MHz, 3:9.5MHz int nBandwidth; // 频率宽度: 0:550KHz, 1:650KHz, 2:750KHz, 3:850KHz, 4:950KHz, 5:1050KHZ UINT nSensitivity; // 灵敏度, 范围: 0~99 char szReserved[32]; // 保留字节 }NET_EAR_DETECTION_PARAM; ///@brief EAS RF款检测配置, 对应 NET_EM_CFG_EAR_DETECTION_CONFIG typedef struct tagNET_CFG_EAR_DETECTION_CONFIG_INFO { DWORD dwSize; // 结构体大小 UINT nAntiInterference; // 抗干扰功能,0--关闭 1--开启 UINT nEarlyWarning; // 预警功能,0--关闭 1--开启 int nDetectionParamCount; // 检测参数个数 NET_EAR_DETECTION_PARAM stuDetectionParam[64]; // 检测参数信息,元素下标对应检测通道 }NET_CFG_EAR_DETECTION_CONFIG_INFO; ///@brief 声音配置, 对应 NET_EM_CFG_SOUND_CONFIG typedef struct tagNET_CFG_SOUND_CONFIG_INFO { DWORD dwSize; // 结构体大小 int nTone; // 报警音频: 0:未知 1:铃声类型1, 2:铃声类型2, 3:铃声类型3, 4:铃声类型4... UINT nVolume; // 报警音量 }NET_CFG_SOUND_CONFIG_INFO; ///@brief 上下客客流预警配置, 对应 NET_EM_PASSENGER_FLOW_CONFIG typedef struct tagNET_CFG_PASSENGER_FLOW_CONFIG_INFO { DWORD dwSize; // 结构体大小 UINT nUpPassengerFlowLimit; // 上客客流预警阈值 UINT nDownPassengerFlowLimit; // 下客客流预警阈值 }NET_CFG_PASSENGER_FLOW_CONFIG_INFO; ///@brief 时间间隔配置, 对应 NET_EM_TRAFFIC_LAMP_CONFIG typedef struct tagNET_CFG_TRAFFIC_LAMP_CONFIG_INFO { DWORD dwSize; // 结构体大小 UINT nNotifyPeriod; // DH_ALARM_TRAFFIC_LAMP_WORK_STATE报警事件的通知周期, 单位是秒, 默认600, 范围300~86400 }NET_CFG_TRAFFIC_LAMP_CONFIG_INFO; ///@brief 房间号、楼幢单元等信息配置, 对应 NET_EM_CFG_LOCAL_INFO typedef struct tagNET_CFG_LOCAL_INFO { DWORD dwSize; // 结构体大小 char szShortNumber[16]; // VTS的号码 BOOL bEnableSection; // 是否使能区号 BOOL bEnableBuilding; // 是否使能楼幢号 BOOL bEnableUnit; // 是否使能单元号 int nBuildingNumBit; // 楼幢号的位数 }NET_CFG_LOCAL_INFO; ///@brief 防蜂鸣联动项使能配置信息, 对应 NET_EM_CFG_DISABLE_BEEP_LINKAGE typedef struct tagNET_CFG_DISABLE_BEEP_LINKAGE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 开启撤防联动项功能总开关(DisableLinkage)后,是否撤防蜂鸣联动项 char szName[32]; // 联动项配置名 }NET_CFG_DISABLE_BEEP_LINKAGE_INFO; ///@brief 禁止布防的条件,当其中一个或多个状态且对应项的值为true时,报警主机应能禁止布防 typedef struct tagNET_PREVENTION_OF_ARMING_INFO { BOOL bIntrusionDetectorActivated; // 入侵探测器处于激活状态 BOOL bHoldupDeviceActivated; // 紧急报警装置处于激活状态 BOOL bMovementDetectorMasked; // 移动目标探测器被遮挡 BOOL bMovementDetectorRangeReduction; // 移动目标探测器的探测距离明显减小 BOOL bIntrusionDetectorFault; // 入侵探测器故障 BOOL bTamperCondition; // 防拆报警 BOOL bInterconnectionFaults; // 互连通信故障 BOOL bPrimePowerSourceFault; // 主电源故障 BOOL bAlternativePowerSourceFault; // 备用电源故障 BOOL bAlarmTransmissionSystemFault; // 报警传输系统故障 BOOL bWarningDeviceFault; // 告警装置故障 char szReserved[252]; // 保留字节 }NET_PREVENTION_OF_ARMING_INFO; ///@brief 系统检测状态 typedef struct tagNET_SYSTEM_STATUS_CHECK_INFO { BOOL bEnable; // 检测使能 NET_PREVENTION_OF_ARMING_INFO stuPreventionOfArming; //禁止布防的条件,当其中一个或多个状态且对应项的值为true时,报警主机应能禁止布防 char szReserved[512]; // 保留字节 }NET_SYSTEM_STATUS_CHECK_INFO; ///@brief Area状态信息 typedef struct tagNET_AREAS_INFO { char szMode[32]; // 子系统当前的布撤防模式 //"T" : Total布防/外出布防模式 //"p1" : Partial1布防/在家布防模式 //"p2" : Partial2布防/自定义模式 //"P" : Partial1+2布防 //"t" : 强制布防 //"D" : 撤防 char szReserved[32]; // 保留字节 }NET_AREAS_INFO; ///@brief Area布撤防配置, 对应 NET_EM_CFG_AREA_ARM_MODE typedef struct tagNET_CFG_AREA_ARM_MODE_INFO { DWORD dwSize; // 结构体大小 int nAreasNum; // Area状态信息数量,数组最大64个 NET_AREAS_INFO stuAreas[64]; // Area状态信息数组 NET_SYSTEM_STATUS_CHECK_INFO stuSystemStatusCheck; // 系统检测状态 }NET_CFG_AREA_ARM_MODE_INFO; ///@brief 报警类型 typedef enum tagEM_VEHICLE_ALARM_TYPE { EM_VEHICLE_ALARM_TYPE_UNKNOWN, // 未知 EM_VEHICLE_ALARM_TYPE_DRIVEACTIONANALYSE, // "DriveActionAnalyse" , 驾驶员行为检测 DSM EM_VEHICLE_ALARM_TYPE_DRIVEASSISTANTALARM, // "DriveAssistantAlarm", 辅助驾驶报警 ADAS EM_VEHICLE_ALARM_TYPE_HANDSOFFSTEERINGWHEELDETECTION, // "HandsOffSteeringWheelDetection" , 双手脱离方向盘 ICM EM_VEHICLE_ALARM_TYPE_EMERGENCY, // "Emergency" 紧急报警 EM_VEHICLE_ALARM_TYPE_DRIVERDEATAILALARM, // "DriverDeatailAlarm" 按DSM/ADAS具体子类型配置,此时stuSubAlarmInfo有效 }EM_VEHICLE_ALARM_TYPE; ///@brief 报警子类型 typedef enum tagEM_SUB_ALARM_TYPE { EM_SUB_ALARM_TYPE_UNKNOWN, // 未知 EM_SUB_ALARM_TYPE_FATIGUEALARM, // "FatigueAlarm",疲劳驾驶报警 EM_SUB_ALARM_TYPE_DISTRACTALARM, // "DistractAlarm",分身驾驶报警 EM_SUB_ALARM_TYPE_CALLINGALARM, // "CallingAlarm",接打电话报警 EM_SUB_ALARM_TYPE_NODRIVERALARM, // "NoDriverAlarm",驾驶员离岗报警 EM_SUB_ALARM_TYPE_WEARINGIRALARM, // "WearingIRAlarm",佩戴红外阻断眼镜报警 EM_SUB_ALARM_TYPE_SMOKINGALARM, // "SmokingAlarm",吸烟报警 EM_SUB_ALARM_TYPE_CAMOCCLUSIONALARM, // "CamOcclusionAlarm",镜头遮挡报警 EM_SUB_ALARM_TYPE_UNBELTEDALARM, // "UnbeltedAlarm",未系安全带报警 EM_SUB_ALARM_TYPE_IDENTITYALARM, // "IdentityAlarm",驾驶员身份异常报警 EM_SUB_ALARM_TYPE_DRIVERCHANGEALARM, // "DriverChangeAlarm",换人驾驶报警 EM_SUB_ALARM_TYPE_FORWARDCOLLISIONALARM, // "ForwardCollisionAlarm",前向碰撞报警 EM_SUB_ALARM_TYPE_LANEDEPARTUREALARM, // "LaneDepartureAlarm",车道偏离报警 EM_SUB_ALARM_TYPE_HEADWAYALARM, // "HeadwayAlarm"车距过近报警 }EM_SUB_ALARM_TYPE; ///@brief 具体的报警子类型信息 typedef struct tagNET_SUB_ALARM_INFO { EM_SUB_ALARM_TYPE emSubAlarmType; // 报警子类型 int nRecordAheadTimes; // 关联视频录像的开始时间以事件发生时间为基础的提前多少秒 int nRecordDelayTimes; // 关联视频录像的结束时间以事件发生时间为基础的延后多少秒 char szReserved[124]; // 保留字节 }NET_SUB_ALARM_INFO; ///@brief 一个报警类型的通道配置 typedef struct tagNET_VEHICLE_ALARM_LINK_INFO { EM_VEHICLE_ALARM_TYPE emAlarmType; // 报警类型 int nLinkSnapChannelNum; // 报警关联的抓图通道数组个数 int nLinkSnapChannelList[32]; // 报警关联的抓图通道数组,通道号从0开始 int nLinkRecordChannelList[32]; // 报警关联的视频通道数组,通道号从0开始。 int nLinkRecordChannelNum; // 报警关联的视频通道数组个数 int nRecordAheadTimes; // 关联视频录像的开始时间以事件发生时间为基础的提前多少秒 int nRecordDelayTimes; // 关联视频录像的结束时间以事件发生时间为基础的延后多少秒 int nSubAlarmInfoNum; // 具体的报警子类型个数 NET_SUB_ALARM_INFO stuSubAlarmInfo[32]; // 具体的报警子类型信息 char szReserved[512]; // 保留字节 }NET_VEHICLE_ALARM_LINK_INFO; ///@brief 车载设备报警关联配置, 对应 NET_EM_CFG_VEHICLE_ALARM_LINK_PARAM typedef struct tagNET_CFG_VEHICLE_ALARM_LINK_PARAM_INFO { DWORD dwSize; // 结构体大小 int nVehicleAlarmLinkNum; // 配置个数 NET_VEHICLE_ALARM_LINK_INFO stuVehicleAlarmLinkInfo[32]; // 一个报警类型的通道配置 }NET_CFG_VEHICLE_ALARM_LINK_PARAM_INFO; ///@brief 手机push notification配置, 对应 NET_EM_CFG_MOBILE_PHONE_APPLICATION typedef struct tagNET_CFG_MOBILE_PHONE_APPLICATION_INFO { DWORD dwSize; // 结构体大小 BOOL bPushNotificationEnable; // 是否开启手机推送 }NET_CFG_MOBILE_PHONE_APPLICATION_INFO; ///@brief CGI服务开关控制配置, 对应 NET_EM_CFG_VSP_CGI typedef struct tagNET_CFG_VSP_CGI_INFO { DWORD dwSize; // 结构体大小 BOOL bServiceStart; // 是否开启CGI服务 }NET_CFG_VSP_CGI_INFO; ///@brief NTP Server服务开关控制配置, 对应 NET_EM_CFG_VSP_NTP_SERVER typedef struct tagNET_CFG_CFG_VSP_NTP_SERVER_INFO { DWORD dwSize; // 结构体大小 BOOL bServiceStart; // 是否开启NTP Server服务 }NET_CFG_CFG_VSP_NTP_SERVER_INFO; ///@brief 设备搜索配置, 对应 NET_EM_CFG_DEVICE_DISCOVERY typedef struct tagNET_CFG_DEVICE_DISCOVERY_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启设备搜索 }NET_CFG_DEVICE_DISCOVERY_INFO; ///@brief LLDPConfig 全局配置, 对应 NET_EM_CFG_LLDP_GLOBAL typedef struct tagNET_CFG_LLDP_GLOBAL_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启LLDPConfig全局配置 }NET_CFG_LLDP_GLOBAL_INFO; ///@brief 登录安全等级控制配置, 对应 NET_EM_CFG_LOGIN_AUTH_CTRL typedef struct tagNET_CFG_LOGIN_AUTH_CTRL_INFO { DWORD dwSize; // 结构体大小 int nPriSvrPolicy; // 私有协议服务端角色认证模式, 1:安全模式, 2:兼容模式 int nPriCliPolicy; // 私有协议客户端角色认证模式, 1:安全模式, 2:兼容模式 }NET_CFG_LOGIN_AUTH_CTRL_INFO; ///@brief 音频输出音量配置, 对应 NET_EM_CFG_REMOTE_AUDIO_OUTPUT_VOLUME typedef struct tagNET_CFG_REMOTE_AUDIO_OUTPUT_VOLUME_INFO { DWORD dwSize; // 结构体大小 int nAudioOutputVolumeNum; // 音频输出音量数组有效个数,设置配置需填入有效个数,获取配置时为设备返回有效个数 int nAudioOutputVolume[4096]; // 音频输出音量数组,每个音频输出通道一个配置 }NET_CFG_REMOTE_AUDIO_OUTPUT_VOLUME_INFO; ///@brief 人员数量统计OSD配置 typedef struct tagNET_OSD_FACEFLOW_STAT_INFO { DWORD dwSize; // 结构体大小 BOOL bEncodeBlend; // 是否叠加到视频码流 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 叠加区域 坐标范围 [0,8191] int nTextAlign; // 文本对齐方式 0-左对齐 2-右对齐 BOOL bShowFaceRecognition; // 是否显示识别成功(在注册库中)人数 BOOL bShowFaceDetection; // 是否显示检测到的总目标数 BOOL bShowBodyDetection; // 是否叠加检测到的总人体数 }NET_OSD_FACEFLOWSTAT_INFO; ///@brief 水利监控OSD配置 typedef struct tagNET_WATERMONITOR_OSD_INFO { BOOL bEncodeBlend; // 是否叠加到视频码流 int nTextAlign; // 文本对齐方式 0-左对齐 2-右对齐 NET_COLOR_RGBA stuFrontColor; // 前景色 NET_COLOR_RGBA stuBackColor; // 背景色 NET_RECT stuRect; // 叠加区域 8192相对坐标 BYTE byReserved[1024]; // 保留字节 }NET_WATERMONITOR_OSD_INFO; ///@brief 智慧水利叠加OSD配置(对应枚举 NET_EM_CFG_WATER_MONITOR_TITLE) typedef struct tagNET_CFG_WATER_MONITOR_TITLE_INFO { DWORD dwSize; NET_WATERMONITOR_OSD_INFO stuWaterLevel; // 水位检测OSD NET_WATERMONITOR_OSD_INFO stuFlotage; // 漂浮物OSD }NET_CFG_WATER_MONITOR_TITLE_INFO; ///@brief RTSP使能的配置(对应枚举 NET_EM_CFG_KT_RTSP_FLAG) typedef struct tagNET_CFG_KT_RTSP_FLAG_INFO { DWORD dwSize; BOOL bEnable; // 是否使能Rtsp的断线策略,TRUE:使能; FALSE:不使能 }NET_CFG_KT_RTSP_FLAG_INFO; ///@brief 单个录像的名字 typedef struct tagNET_ABORT_VEDIO { char szVedio[100]; }NET_ABORT_VEDIO; ///@brief 获取RTSP断线后存储到设备本地的录像列表(只有获取,没有设置)(对应枚举 NET_EM_CFG_RTSP_ABORT_LIST) typedef struct tagNET_CFG_RTSP_ABORT_LIST_INFO { DWORD dwSize; BYTE byReserved[4]; // 保留字节,用于字节对齐 int nMaxListCount; // 用户分配的录像列表的数量,最大支持3000个 UINT nRetListCount; // 设备返回的录像列表的数量 NET_ABORT_VEDIO* pVedioList; // 具体的录像列表,需要用户申请 char szMark[32]; // 当前录像类型 }NET_CFG_RTSP_ABORT_LIST_INFO; ///@brief 录像保存天数配置 (对应枚举 NET_EM_CFG_FILE_HOLD_DAYS) typedef struct tagNET_CFG_FILE_HOLD_DAYS_INFO { DWORD dwSize; UINT nDays; // 设置文件的保留天数,超过时间的将被删除,单位:天,取值范围0-65535,0表示没有天数限制 }NET_CFG_FILE_HOLD_DAYS_INFO; ///@brief 接入功能配置(对应枚举 NET_EM_CFG_ACCESS_FUNCTION) typedef struct tagNET_CFG_ACCESS_FUNCTION_INFO { DWORD dwSize; BOOL bGb28181ClientEnable; // 是否允许接入国标前端设备 BOOL bGb28181ServerEnable; // 是否能接入国标平台 BOOL bONVIFClientEnable; // 是否允许接入ONVIF前端 BOOL bONVIFServerEnable; // 是否支持onvifserver BOOL bRTSPEnable; // 是否支持rtsp被拉流 }NET_CFG_ACCESS_FUNCTION_INFO; ///@brief 用户类型 typedef enum tagEM_ATTENDANCE_USER_TYPE { EM_ATTENDANCE_USER_TYPE_UNKNOWN = -1, // 未知用户 EM_ATTENDANCE_USER_TYPE_NORMAL, // 普通用户 EM_ATTENDANCE_USER_TYPE_BLACKLIST, // 禁止名单用户 }EM_ATTENDANCE_USER_TYPE; ///@brief 考勤人员状态 typedef enum tagEM_ATTENDANCE_USER_STATUS { EM_ATTENDANCE_USER_STATUS_UNKNOWN = -1, // 未知 EM_ATTENDANCE_USER_STATUS_NORMAL, // 正常 EM_ATTENDANCE_USER_STATUS_FROZEN, // 冻结 }EM_ATTENDANCE_USER_STATUS; ///@brief 考勤人员信息 typedef struct tagNET_ATTENDANCE_USER_INFO { char szUserID[64]; // 用户ID EM_ATTENDANCE_USER_TYPE emUserType; // 用户类型 EM_ATTENDANCE_USER_STATUS emUserStatus; // 用户状态 NET_TIME stuUserAttendanceBeginTime; // 个人考勤开启时间 NET_TIME stuUserAttendanceEndTime; // 个人考勤结束时间 BYTE byReserved[80]; // 预留字段 }NET_ATTENDANCE_USER_INFO; ///@brief 考勤模式信息(对应枚举 NET_EM_CFG_ATTENDANCE_MODEL_INFO ) typedef struct tagNET_CFG_ATTENDANCE_MODEL_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启考勤模式 NET_TIME stuBeginTime; // 考勤开启时间 NET_TIME stuEndTime; // 考勤结束时间 NET_ATTENDANCE_USER_INFO stuUserInfo[128]; // 考勤人员信息 UINT nUserCount; // 考勤人员数量 BYTE byReserved[4]; // 预留字段 }NET_CFG_ATTENDANCE_MODEL_INFO; ///@brief 事件标题内容结构体 typedef struct tagNET_CFG_EVENT_TITLE { char szText[CFG_MAX_CHANNELNAME_LEN]; DH_POINT stuPoint; // 标题左上角坐标, 采用0-8191相对坐标系 DH_SIZE stuSize; // 标题的宽度和高度,采用0-8191相对坐标系,某项或者两项为0表示按照字体自适应宽高 NET_COLOR_RGBA stuFrontColor; // 前景颜色 NET_COLOR_RGBA stuBackColor; // 背景颜色 } NET_CFG_EVENT_TITLE; ///@brief 邮件附件类型 typedef enum tagNET_CFG_ATTACHMENT_TYPE { NET_ATTACHMENT_TYPE_PIC, // 图片附件 NET_ATTACHMENT_TYPE_VIDEO, // 视频附件 NET_ATTACHMENT_TYPE_NUM, // 附件类型总数 } NET_CFG_ATTACHMENT_TYPE; ///@brief 邮件详细内容 typedef struct tagNET_CFG_MAIL_DETAIL { NET_CFG_ATTACHMENT_TYPE emAttachType; // 附件类型 int nMaxSize; // 文件大小上限,单位kB int nMaxTimeLength; // 最大录像时间长度,单位秒,对video有效 }NET_CFG_MAIL_DETAIL; ///@brief 时间段信息 typedef struct tagNET_CFG_TIME_SECTION { DWORD dwRecordMask; // 录像掩码,按位分别为Bit0-动态检测录像、Bit1-报警录像、Bit2-定时录像、Bit3-动检和报警同时触发时才录像、Bit4-卡号录像、Bit5-智能录像、Bit6-POS录像、Bit7~Bit15保留 int nBeginHour; int nBeginMin; int nBeginSec; int nEndHour; int nEndMin; int nEndSec; } NET_CFG_TIME_SECTION; ///@brief 闪烁灯光类型 typedef enum tagNET_EM_FILCKERLIGHT_TYPE { NET_EM_WHITELIGHT, //闪烁白光灯 NET_EM_REDBLUELIGHT, //红蓝闪烁警示灯 } NET_EM_FILCKERLIGHT_TYPE; ///@brief 灯光联动方式 typedef enum tagNET_EM_LIGHTLINK_TYPE { NET_EM_FILCKER, //闪烁; 默认 NET_EM_KEEPLIGHTING, //常亮 } NET_EM_LIGHTLINK_TYPE; ///@brief 云台补光灯联动项 typedef struct tagNET_CFG_LIGHTING_LINK_INFO { BOOL bEnable; //使能 NET_EM_FILCKERLIGHT_TYPE emFilckerLightType; //闪烁灯光类型 NET_EM_LIGHTLINK_TYPE emLightlinkType; //灯光联动方式 float fFilckerIntevalTime; //闪烁间隔时间 int nFilckerTimes; //闪烁可配置的次数 UINT nLightDuration; //灯光闪烁或常亮持续时间,单位秒 UINT nLightBright; //联动灯光的亮度 NET_CFG_TIME_SECTION stuWhiteLightTimeSection[7][6];//白光灯联动时间段 }NET_CFG_LIGHTING_LINK_INFO; ///@brief 轮巡联动配置 typedef struct tagNET_CFG_TOURLINK { BOOL bEnable; // 轮巡使能 DH_SPLIT_MODE emSplitMode; // 轮巡时的分割模式 int nChannels[CFG_MAX_VIDEO_CHANNEL_NUM]; // 轮巡通道号列表 int nChannelCount; // 轮巡通道数量 } NET_CFG_TOURLINK; ///@brief 门禁操作类型 typedef enum NET_EM_CFG_ACCESSCONTROLTYPE { NET_EM_CFG_ACCESSCONTROLTYPE_NULL = 0, // 不做操作 NET_EM_CFG_ACCESSCONTROLTYPE_AUTO, // 自动 NET_EM_CFG_ACCESSCONTROLTYPE_OPEN, // 开门 NET_EM_CFG_ACCESSCONTROLTYPE_CLOSE, // 关门 NET_EM_CFG_ACCESSCONTROLTYPE_OPENALWAYS, // 永远开启 NET_EM_CFG_ACCESSCONTROLTYPE_CLOSEALWAYS, // 永远关闭 }NET_EM_CFG_ACCESSCONTROLTYPE; ///@brief 语音呼叫发起方 typedef enum tagNET_EM_CALLER_TYPE { NET_EM_CALLER_DEVICE = 0, // 设备发起 }NET_EM_CALLER_TYPE; ///@brief 呼叫协议 typedef enum tagNET_EM_CALLER_PROTOCOL_TYPE { NET_EM_CALLER_PROTOCOL_CELLULAR = 0, // 手机方式 }NET_EM_CALLER_PROTOCOL_TYPE; ///@brief 语音呼叫联动信息 typedef struct tagNET_CFG_TALKBACK_INFO { BOOL bCallEnable; // 语音呼叫使能 NET_EM_CALLER_TYPE emCallerType; // 语音呼叫发起方 NET_EM_CALLER_PROTOCOL_TYPE emCallerProtocol; // 语音呼叫协议 }NET_CFG_TALKBACK_INFO; ///@brief 电话报警中心联动信息 typedef struct tagNET_CFG_PSTN_ALARM_SERVER { BOOL bNeedReport; // 是否上报至电话报警中心 int nServerCount; // 电话报警服务器个数 BYTE byDestination[CFG_MAX_PSTN_SERVER_NUM]; // 上报的报警中心下标 }NET_CFG_PSTN_ALARM_SERVER; ///@brief 车载工作计划配置 typedef struct tagNET_CFG_VEHICLE_WORKTIMESCHEDULE_INFO { DWORD dwSize; BOOL bEnable; // 使能 NET_CFG_TIME_SCHEDULE stuWorkSchedule; // 工作计划表 }NET_CFG_VEHICLE_WORKTIMESCHEDULE_INFO; ///@brief 荷载人数 typedef struct tagNET_CFG_VEHICLE_LOAD_INFO { DWORD dwSize; int nLoadNumber; // 荷载人数 }NET_CFG_VEHICLE_LOAD_INFO; #define MAX_TICKETINFO_NUM 8 // 票类信息最大个数 ///@brief 票类信息 typedef struct tagNET_CFG_TICKET_INFO { BOOL bEnable; // 是否需要显示和打印 char szScreenModel[32]; // 显示的屏幕上该票的简称 char szPrintModel[64]; // 打印出来的票名称 unsigned int nFare; // 票价 }NET_CFG_TICKET_INFO; ///@brief 公交打印票价 typedef struct tagNET_CFG_TICKETPRINT_INFO { DWORD dwSize; BOOL bEncodeBlend; // 是否叠加到主码流 char szRoute[32]; // 路线 char szNumber[32]; // 序号 unsigned int nNormal; // 普通票价 unsigned int nDiscount; // 优惠价 unsigned int nSubsidy; // 老幼补贴价 unsigned int nStatisticsNum; // 统计票打印张数, 默认为1, 范围[1,2] unsigned int nTicketInfoNum; // 票类信息个数 NET_CFG_TICKET_INFO stuTicketInfo[MAX_TICKETINFO_NUM]; // 票类信息 char szText[256]; // 备注 }NET_CFG_TICKETPRINT_INFO; ///@brief ACC延时关机时间 typedef struct tagNET_CFG_VEHICLEAUTOMAIN_INFO { DWORD dwSize; int nAutoShutDelay; //车载延时关机时间,ACC断电后开始计数。单位:分钟,[0, 65536], 65536等效于不关机 int nForceShutDelay; //延时时间达到后,再强制延时关机时间。相当于ACC断电后,共延时Auto+Force分钟关机, [0, 65536] int nPercent; //以电池剩余电量为关机条件。此条件和AutoShutDelay两个条件并用。任意一个条件满足,即关机。默认0。[0, 100] }NET_CFG_VEHICLEAUTOMAIN_INFO; ///@brief 车载网络服务配置 typedef struct tagNET_CFG_VEHICLENETSERVER_INFO { DWORD dwSize; BOOL bEnable; // 服务是否开启 UINT nUdpPort; // Udp端口 UINT nTcpPort; // 监听端口 }NET_CFG_VEHICLENETSERVER_INFO; ///@brief 车载布控球IMSI绑定配置 typedef struct tagNET_CFG_IMSIBIND_INFO { DWORD dwSize; int nIMSI; // IMSI的个数 char szIMSI[4][32]; // 绑定的IMSI号 }NET_CFG_IMSIBIND_INFO; ///@brief 车载人员维护设置 typedef struct tagNET_CFG_VEHICLE_MAINTAINCE_INFO { DWORD dwSize; char szMaintainer[32]; // 维护人员 char szMaintainerID[32]; // 维护人员ID char szInfo[256]; // 自定义维护信息 }NET_CFG_VEHICLE_MAINTAINCE_INFO; ///@brief 假日信息 typedef struct tagNET_ACCESSCTL_SPECIALDAY_INFO { char szDayName[32]; // 组名称 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 BYTE byReserved[256]; }NET_ACCESSCTL_SPECIALDAY_INFO; ///@brief 门禁假日组配置 typedef struct tagNET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO { DWORD dwSize; BOOL bGroupEnable; // 组使能 char szGroupName[32]; // 组名称 int nSpeciaday; // 有效的节假日数量 NET_ACCESSCTL_SPECIALDAY_INFO stuSpeciaday[16]; // 假日信息 }NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO; ///@brief 门禁假日计划配置 typedef struct tagNET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO { DWORD dwSize; char szSchduleName[64]; // 假日计划名称 BOOL bSchdule; // 假日计划使能 int nGroupNo; // NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP 配置的下标 int nTimeSection; // 一天的时间段个数 DH_TSECT stuTimeSection[6]; // 时间段 int nDoorNum; // 有效的门数量 int nDoors[64]; // 生效的门通道号 }NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO; ///@brief (工行)门禁假日组配置 typedef struct tagNET_CFG_ACCESSCTL_HOLIDAY_GROUP_INFO { DWORD dwSize; // 结构体大小 int nHolidayGroupNum; // 节假日表的个数 int nHolidayGroup[30]; // 是一个数组,每个元素表示一个节假日表 BOOL bEnable; // 假日组是否使能 char szName[32]; // 假日组名称 }NET_CFG_ACCESSCTL_HOLIDAY_GROUP_INFO; ///@brief 工行假日表时间段 typedef struct tagNET_GH_TIMESECTION { BOOL bEnable; // 时间段使能 int nDoorStatus; // 门状态 char szReversed1[4]; // 字节对齐 NET_TIME_EX1 stuBeginTime; // 假日开始时间 NET_TIME_EX1 stuEndTime; // 假日结束时间 }NET_GH_TIMESECTION; ///@brief (工行)门禁假日表配置 typedef struct tagNET_CFG_ACCESSCTL_HOLIDAY_SCHEDULE_INFO { DWORD dwSize; // 结构体大小 int nTimeSection; // 假日表时间段个数 NET_GH_TIMESECTION stuGhTimeSections[4]; // 工行假日表时间段 char szReversed1[4]; // 字节对齐 BOOL bEnable; // 假日表是否使能 char szName[64]; // 假日表名称 NET_TIME stuBeginDate; // 假日起始时间 结构体中仅 年-月-日 有效 NET_TIME stuEndDate; // 假日结束时间 结构体中仅 年-月-日 有效 }NET_CFG_ACCESSCTL_HOLIDAY_SCHEDULE_INFO; ///@brief 配置门的周计划、假日计划、进出读卡器开门方式和时间段外开门报警使能 typedef struct tagNET_CFG_ICBC_DOOR_PARAS_INFO { int nWeekTimeSection; // 门的周计划,值为CFG_ACCESS_TIMESCHEDULE_INFO数组的下表 int nInReaderMethod; // 针对双向设备而言,具体取值含义和EM_AC_UNLOCK_MODE值减一相匹配 int nOutReaderMethod; // 读卡器的开门方式,具体取值含义和EM_AC_UNLOCK_MODE值减一相匹配 BOOL bOpenOutTimeEnable; // 时间段外是否能开门 int nHolidayGroupIndex; // 门的假日计划,值为NET_CFG_ACCESSCTL_HOLIDAY_GROUP_INFO的数下标 char szRserved[512]; // 预留字节 }NET_CFG_ICBC_DOOR_PARAS_INFO; ///@brief 配置门的周计划、假日计划、进出读卡器开门方式和时间段外开门报警使能 typedef struct tagNET_CFG_ICBC_DOOR_PARAS { DWORD dwSize; // 结构体大小 int nICBCDoorNum; // 工行门个数 NET_CFG_ICBC_DOOR_PARAS_INFO stuICBCDoorInfo[8]; // 工行门配置信息 }NET_CFG_ICBC_DOOR_PARAS; ///@brief 银行工作场景 typedef enum tagEM_BANK_WORK_SCENE { EM_BANK_WORK_SCENE_UNKNOWN = -1, // 未知 EM_BANK_WORK_SCENE_NORMAL, // 正常工作场景 EM_BANK_WORK_SCENE_ADDMONEYROOM, // 加钞间场景 EM_BANK_WORK_SCENE_INTERLOCKLINK, // 互锁联动AB门场景 }EM_BANK_WORK_SCENE; ///@brief 门禁运行场景配置,针对设备而言 typedef struct tagNET_CFG_WORK_SCENE_INFO { DWORD dwSize; // 结构体大小 EM_BANK_WORK_SCENE emBankWorkScene; // 银行工作场景 }NET_CFG_WORK_SCENE_INFO; ///@brief 开门方式 typedef enum tagEM_CUSTOMER_DEV_SETTING_DOOR_METHOD { EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_UNKNOWN = -1, // 未知 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID, // CTID 码开门 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID_AND_FACE, // CTID 码 + 目标组合开门 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID_OR_FACE, // CTID 码或目标开门 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE, // 腕带码或目标开门 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE_OR_IDCARD, // 腕带码或目标或证件开门 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CODE1_OR_CODE2, // 码1或码2开门 (码1、码2的含义由平台和设备双方约定) EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE_OR_CODE2, // 目标或腕带码或码2 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_AND_CODE1_OR_CODE2, // 目标+(码1或码2) EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_OR_IDCARD_AND_CODE1_OR_CODE2, // (目标或证件)+(码1或者码2) EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_OR_IDCARD_OR_CODE1_OR_CODE2, // 目标或码1或码2或者腕带码 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_AND_CODE1_OR_WRISTBAND // (目标+码1)或腕带码 }EM_CUSTOMER_DEV_SETTING_DOOR_METHOD; ///@brief "系统设置"配置 typedef struct tagNET_CFG_CUSTOMER_DEV_SETTING_INFO { DWORD dwSize; // 结构体大小 EM_CUSTOMER_DEV_SETTING_DOOR_METHOD emDoorMethod; // 开门方式 char szEnckeycipher[1024]; // 国密加密算法密钥:加密密钥的密文及校验码,字符串 }NET_CFG_CUSTOMER_DEV_SETTING_INFO; ///@brief 用户类型 typedef enum tagNET_ENUM_USER_TYPE { NET_ENUM_USER_TYPE_UNKNOWN = -1, NET_ENUM_USER_TYPE_NORMAL, NET_ENUM_USER_TYPE_BLACKLIST, NET_ENUM_USER_TYPE_GUEST, NET_ENUM_USER_TYPE_PATROL, NET_ENUM_USER_TYPE_VIP, NET_ENUM_USER_TYPE_HANDICAP, NET_ENUM_USER_TYPE_CUSTOM1, NET_ENUM_USER_TYPE_CUSTOM2, }NET_ENUM_USER_TYPE; ///@brief 值班人员信息 typedef struct tagNET_ON_DUTY_USER_INFO { char szUserID[32]; // 值班人员ID NET_ENUM_USER_TYPE emUserType; // 用户类型 UINT nUserStatus; // 用户状态, 0 正常, 1 冻结 BYTE byReserved[128]; // 保留字节 }NET_ON_DUTY_USER_INFO; ///@brief 门禁配置 值班人员信息配置 typedef struct tagNET_CFG_CUSTOMER_ON_DUTY_MODEL_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启值班模式 NET_ON_DUTY_USER_INFO stuOnDutyUser[128]; // 值班人员信息数组 int nOnDutyUserCnt; // stuOnDutyUser的有效个数 }NET_CFG_CUSTOMER_ON_DUTY_MODEL_INFO; ///@brief 测温策略配置 typedef struct tagNET_CFG_CUSTOMER_TEMP_POLICY_INFO { DWORD dwSize; // 结构体大小 int nAdvanceInfoTime; // 提前多少分钟提醒(分钟) int nInformTimes; // 区间内提醒次数 int nInformInterval; // 提醒间隔(分钟) float fHignTemp; // 高温阈值 float fLowTemp; // 低温阈值 int nCustomerTimeScheduleCount; // 测温区间个数 NET_TIME_SECTION stuCustomerTimeSchedule[16]; // 测温区间 BOOL bEnable; // 测温策略功能启用 char szFirstInfoMessage[256]; // 提前初次测温提醒消息 char szCommonInfoMessage[256]; // 常规提醒消息 }NET_CFG_CUSTOMER_TEMP_POLICY_INFO; ///@brief 定期人数清除周期 typedef enum tagEM_USER_PASS_DATA_COUNT_CLEAR_PERIOD { EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_UNKNOWN, // 未知 EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_HOUR, // 按小时 EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_DAILY, // 按天, 按照每天00点清除 } EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD; ///@brief 定期通行人数清除功能配置 typedef struct tagNET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启定期通行人数清除功能使能 EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD emPeriod; // 定期人数清除周期 }NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO; ///@brief 存放平台下发的参数名称以及服务名称 typedef struct tagNET_EM_CFG_SAMPO_SERVICE_NAME_INFO { DWORD dwSize; // 结构体大小 int nParamterCount; // 参数名称个数 char szParamter[6][128]; // 参数名称 char szService[6][128]; // 服务名称 int nServiceCount; // 服务名称个数 }NET_EM_CFG_SAMPO_SERVICE_NAME_INFO; ///@brief 人员类型与对应通行权限配置 typedef struct tagNET_EM_CFG_USER_PASS_PERMISSION_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 启用通行权限鉴定 int nStudent; // 学生: 0可通行,1禁止通行,下同 int nTeacher; // 教师 int nSecurity; // 保安 int nSupportPersonnel; // 保障人员 int nOther; // 其他 int nFolk; // 家属 int nBlockList; // 禁止名单 int nTmp; // 临时 int nTmpPersonnel; // 临时人员 int nMaintenanceMan; // 维修工 int nDoctor; // 博士 int nMastter; // 硕士 int nUndergraduate; // 本科 int nSpecialStudent; // 特殊学生 int nBeOnRegularPayroll; // 在编 int nUniversityEmployment; // 校聘 int nSpecialPost; // 特殊岗位 int nNormal; // 一般 int nSpecial; // 特殊 int nJiangQianwanResident; // 蒋钱湾居民 int nLixinChangchengBieyuan; // 立信公寓长城别苑居民 int nCommunityResident; // 社区居民 int nResident; // 常住区 int nTenant; // 租户 int nFamilyMembersOfStaff; // 教职工家属 int nObligate1; // 预留1 int nObligate2; // 预留2 int nObligate3; // 预留3 int nObligate4; // 预留4 int nObligate5; // 预留5 int nObligate6; // 预留6 int nObligate7; // 预留7 int nObligate8; // 预留8 int nObligate9; // 预留9 int nObligate10; // 预留10 int nObligate11; // 预留11 int nObligate12; // 预留12 int nObligate13; // 预留13 int nObligate14; // 预留14 }NET_EM_CFG_USER_PASS_PERMISSION_INFO; ///@brief 谈话需求配置 typedef struct tagNET_EM_CFG_HOSPITAL_TALK_CONFIG_INFO { DWORD dwSize; // 结构体大小 char szDepartmentName[20]; // 科室名称 }NET_EM_CFG_HOSPITAL_TALK_CONFIG_INFO; ///@brief 涉密项目配置 typedef struct tagNET_EM_CFG_SECRET_PROJECT_CONFIG_INFO { DWORD dwSize; // 结构体大小 int nProjectNum; // 涉密项目配置信息数量 char szProjects[30][64]; // 平台下发的当前设备的涉密项目配置信息 }NET_EM_CFG_SECRET_PROJECT_CONFIG_INFO; ///@brief 序列号允许名单下发至NVR typedef struct tagNET_CFG_SERIALNOWHITETABLE_INFO { DWORD dwSize; int nCount; // 有效的序列号个数 char szSerialNo[512][48]; // 序列号数组 }NET_CFG_SERIALNOWHITETABLE_INFO; /////////////////////////////////////////////////////start//////////////////////////////////////////////////////////////////////// ///@brief 信息下发 typedef struct tagNET_CFG_LXSJ_WXJJ_INFO { DWORD dwSize; BOOL bEnable; // 是否使能 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szText[256]; // 下发信息内容 char szDisplayContent[256]; // 屏上显示的内容 }NET_CFG_LXSJ_WXJJ_INFO; ///@brief 通讯传输方式 typedef enum tagNET_EM_LXSJ_TRANSMODE { NET_EM_LXSJ_TRANSMODE_UNKNOWN = -1, // 未知 NET_EM_LXSJ_TRANSMODE_TCP, // TCP方式 NET_EM_LXSJ_TRANSMODE_UDP // UDP方式 }NET_EM_LXSJ_TRANSMODE; ///@brief 字体颜色 typedef enum tagNET_EM_LXSJ_FONTCOLOR { NET_EM_LXSJ_FONTCOLOR_UNKNOWN = -1, // 未知 NET_EM_LXSJ_FONTCOLOR_R0_G0_B0, // 0-红灯、绿灯、蓝灯都不亮 NET_EM_LXSJ_FONTCOLOR_R1_G0_B0, // 1-红灯亮、绿灯不亮、蓝灯不亮 NET_EM_LXSJ_FONTCOLOR_R0_G1_B0, // 2-红灯不亮、绿灯亮、蓝灯不亮 NET_EM_LXSJ_FONTCOLOR_R1_G1_B0, // 3-红灯亮、绿灯亮、蓝灯不亮 NET_EM_LXSJ_FONTCOLOR_R0_G0_B1, // 4-红灯不亮、绿灯不亮、蓝灯亮 NET_EM_LXSJ_FONTCOLOR_R1_G0_B1, // 5-红灯亮、绿灯不亮、蓝灯亮 NET_EM_LXSJ_FONTCOLOR_R0_G1_B1, // 6-红灯不亮、绿灯亮、蓝灯不亮 NET_EM_LXSJ_FONTCOLOR_R1_G1_B1 // 7-红灯、绿灯、蓝灯全亮 }NET_EM_LXSJ_FONTCOLOR; ///@brief 无车牌配置项 typedef struct tagNET_CFG_VSP_LXSJ_NOPLATE { BOOL bEnable; // 使能 char szText[128]; // 无牌车内容 BYTE byReserved[380]; // 预留 }NET_CFG_VSP_LXSJ_NOPLATE; ///@brief 通用违章配置项 typedef struct tagNET_CFG_VIOLATIONTYPE_NORMAL { BOOL bEnable; // 使能 NET_EM_LXSJ_FONTCOLOR emTextColor; // 文本颜色 char szText[128]; // 违法内容 BYTE byReserved[376]; // 预留 }NET_CFG_VIOLATIONTYPE_NORMAL; typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICOVERSPEED; // 超速 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICCROSSLANE; // 违法变道 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICPARKING; // 违法停车 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICBACKING; // 违法倒车 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICRETROGRADE; // 逆行 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_PARKINGWARNING; // 违停预警 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICPEDESTRAINPRIORITY;// 礼让行人 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICRUNREDLIGHT; // 闯红灯 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICWRONGROUTE; // 不按车道行驶 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICJAMFORBIDINTO; // 车辆拥堵禁入 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICOVERLINE; // 压白线 typedef NET_CFG_VIOLATIONTYPE_NORMAL NET_CFG_VIOLATIONTYPE_TRAFFICVEHICLEINROUTE; // 有车占道 ///@brief 卡口违章配置项 typedef struct tagNET_CFG_VIOLATIONTYPE_TRAFFICJUNCTION { BOOL bEnable; // 使能 NET_EM_LXSJ_FONTCOLOR emTrustTextColor; // 文本颜色 char szTrustText[128]; // 在允许名单内时内容 NET_EM_LXSJ_FONTCOLOR emDisTrustTextColor; // 文本颜色 char szDisTrustText[128]; // 不在允许名单内时内容 BYTE byReserved[244]; // 预留 }NET_CFG_VIOLATIONTYPE_TRAFFICJUNCTION; ///@brief 违章类型使能集 typedef struct tagNET_CFG_VSP_LXSJ_VIOLATIONTYPE { NET_CFG_VIOLATIONTYPE_TRAFFICOVERSPEED stuTrafficOverSpeed; // 超速 NET_CFG_VIOLATIONTYPE_TRAFFICCROSSLANE stuTrafficCrossLane; // 违法变道 NET_CFG_VIOLATIONTYPE_TRAFFICPARKING stuTrafficParking; // 违法停车 NET_CFG_VIOLATIONTYPE_TRAFFICBACKING stuTrafficBacking; // 违法倒车 NET_CFG_VIOLATIONTYPE_TRAFFICRETROGRADE stuTrafficRetrograde; // 逆行 NET_CFG_VIOLATIONTYPE_PARKINGWARNING stuParkingWarning; // 违停预警 NET_CFG_VIOLATIONTYPE_TRAFFICJUNCTION stuTrafficJunction; // 卡口 NET_CFG_VIOLATIONTYPE_TRAFFICPEDESTRAINPRIORITY stuTrafficPedestrainPriority; // 礼让行人 NET_CFG_VIOLATIONTYPE_TRAFFICRUNREDLIGHT stuTrafficRunRedLight; // 闯红灯 NET_CFG_VIOLATIONTYPE_TRAFFICWRONGROUTE stuTrafficWrongRoute; // 不按车道行驶 NET_CFG_VIOLATIONTYPE_TRAFFICJAMFORBIDINTO stuTrafficJamForbidInto; // 车辆拥堵禁入 NET_CFG_VIOLATIONTYPE_TRAFFICOVERLINE stuTrafficOverLine; // 压白线 NET_CFG_VIOLATIONTYPE_TRAFFICVEHICLEINROUTE stuTrafficVehicleInRoute; // 有车占道 BYTE byReserved[13824]; // 预留 }NET_CFG_VSP_LXSJ_VIOLATIONTYPE; ///@brief 颜色类型 typedef enum tagNET_EM_LXSJ_COLORTYPE { NET_EM_LXSJ_COLORTYPE_UNKNOWN = -1, // 未知 NET_EM_LXSJ_COLORTYPE_SINGLE_COLOR = 1, // 单色 NET_EM_LXSJ_COLORTYPE_DOUBLE_COLOR = 2, // 双色 NET_EM_LXSJ_COLORTYPE_THREE_COLOR = 3, // 三色 }NET_EM_LXSJ_COLORTYPE; ///@brief 区域数据类型 typedef enum tagNET_EM_LXSJ_AREATYPE { NET_EM_LXSJ_AREATYPE_UNKNOWN = -1, //未知 NET_EM_LXSJ_AREATYPE_STATIC_TYPE = 0, // 0- 静态 NET_EM_LXSJ_AREATYPE_DYNAMIC_TYPE = 1, // 1- 动态 }NET_EM_LXSJ_AREATYPE; ///@brief 区域显示类型 typedef enum tagNET_EM_LXSJ_DISPLAYTYPE { NET_EM_LXSJ_DISPLAYTYPE_UNKNOWN = -1, //未知 NET_EM_LXSJ_DISPLAYTYPE_BACK_TYPE = 0, // 0- 背景 NET_EM_LXSJ_DISPLAYTYPE_FRONT_TYPE = 1, // 1- 前景 }NET_EM_LXSJ_DISPLAYTYPE; ///@brief 显示风格 typedef enum tagNET_EM_LXSJ_SHOWMODE { NET_EM_LXSJ_SHOWMODE_UNKNOWN = -1, // 未知 NET_EM_LXSJ_SHOWMODE_IMMEDIATELY = 1, // 立即显示 NET_EM_LXSJ_SHOWMODE_TO_LEFT = 2, // 向左移动 NET_EM_LXSJ_SHOWMODE_TO_TOP = 3, // 向上移动 NET_EM_LXSJ_SHOWMODE_TO_RIGHT = 4, // 向右移动 NET_EM_LXSJ_SHOWMODE_TO_BOTTOM = 5, // 向下移动 NET_EM_LXSJ_SHOWMODE_BLINK = 6, // 闪烁 NET_EM_LXSJ_SHOWMODE_TO_TOP_CONTINUOUS = 94, // 向上连移 NET_EM_LXSJ_SHOWMODE_TO_BOTTOM_CONTINUOUS = 95, // 向下连移 NET_EM_LXSJ_SHOWMODE_TO_RIGHT_CONTINUOUS = 96, // 向右连移 NET_EM_LXSJ_SHOWMODE_TO_LEFT_CONTINUOUS = 97, // 向左连移 }NET_EM_LXSJ_SHOWMODE; ///@brief 文字大小(字高宽点数) typedef enum tagNET_EM_LXSJ_FONTSIZE { NET_EM_LXSJ_FONTSIZE_UNKNOWN = -1, // 未知 NET_EM_LXSJ_FONTSIZE_16 = 16, // 16点阵 NET_EM_LXSJ_FONTSIZE_32 = 32, // 32点阵 }NET_EM_LXSJ_FONTSIZE; ///@brief 名称类型 typedef enum tagNET_EM_LXSJ_ELEM_NAMETYPE { NET_EM_LXSJ_ELEM_NAMETYPE_UNKNOWN = -1, // 未知 NET_EM_LXSJ_ELEM_NAMETYPE_SEPERATER = 0, // 0-分隔符 NET_EM_LXSJ_ELEM_NAMETYPE_NEWLINE = 1, // 1-换行符 NET_EM_LXSJ_ELEM_NAMETYPE_PLATE = 2, // 2-车牌 NET_EM_LXSJ_ELEM_NAMETYPE_VIOLATIONINFO = 3, // 3-违章信息 NET_EM_LXSJ_ELEM_NAMETYPE_SPEED = 4, // 4-速度 NET_EM_LXSJ_ELEM_NAMETYPE_CUSTOM = 5, // 5-自定义项 }NET_EM_LXSJ_ELEM_NAMETYPE; ///@brief 叠加元素 typedef struct tagNET_CFG_VSP_LXSJ_ELEMENT { NET_EM_LXSJ_ELEM_NAMETYPE emNameType; // 名称类型 char szName[32]; // 名称 char szPrefix[64]; // 前缀字符串 char szPostfix[64]; // 后缀字符串 int nSeperaterCount; // 后面添加分隔符个数 BYTE byReserved[856]; // 预留 }NET_CFG_VSP_LXSJ_ELEMENT; ///@brief 区域数据配置项 typedef struct tagNET_CFG_VSP_LXSJ_AREADATA { NET_EM_LXSJ_AREATYPE emAreaType; // 区域数据类型 NET_EM_LXSJ_DISPLAYTYPE emAreaDisplayType; // 区域显示类型 UINT nAreaX1; // 区域开始坐标X1 UINT nAreaY1; // 区域开始坐标Y1 UINT nAreaX2; // 区域开始坐标X2 UINT nAreaY2; // 区域开始坐标Y2 NET_EM_LXSJ_FONTCOLOR emFontColor; // 区域字体颜色 DH_COLOR_RGBA stuRGB; // 区域字体RGB值 NET_EM_LXSJ_SHOWMODE emShowMode; // 显示风格 UINT nMoveSpeed; // 移动速度,越小越快(单位5ms) UINT nStayTime; // 每页停留时间(单位1s) NET_EM_LXSJ_FONTSIZE emFontSize; // 文字大小(字高宽点数) UINT nMaxRollingItem; // 区域数据最大滚动项 int nElement; // 叠加元素的个数 NET_CFG_VSP_LXSJ_ELEMENT stuElement[16]; // 元素列表 BYTE byReserved[956]; // 预留 }NET_CFG_VSP_LXSJ_AREADATA; ///@brief 自定义配置项 typedef struct tagNET_CFG_VSP_LXSJ_CUSTOM { BOOL bEnable; UINT nWaitTime; // 等待时间,单位秒 char szText[256]; // 自定义显示内容 NET_EM_LXSJ_DISPLAYTYPE emAreaDisplayType; // 区域显示类型 UINT nAreaX1; // 区域开始坐标X1 UINT nAreaY1; // 区域开始坐标Y1 UINT nAreaX2; // 区域开始坐标X2 UINT nAreaY2; // 区域开始坐标Y2 NET_EM_LXSJ_FONTCOLOR emFontColor; // 区域字体颜色 DH_COLOR_RGBA stuRGB; // 区域字体RGB值 NET_EM_LXSJ_SHOWMODE emShowMode; // 显示风格 UINT nMoveSpeed; // 移动速度,越小越快(单位5ms) UINT nStayTime; // 每页停留时间(单位1s) NET_EM_LXSJ_FONTSIZE emFontSize; // 文字大小(字高宽点数) BYTE byReserved[704]; // 预留 }NET_CFG_VSP_LXSJ_CUSTOM; ///@brief 滚动配置项 typedef struct tagNET_CFG_VSP_LXSJ_ROLLCONFIG { BOOL bEnable; UINT nMaxItemNum; // 最大滚动记录数 UINT nPeriod; // 周期 BYTE byReserved[52]; // 预留 }NET_CFG_VSP_LXSJ_ROLLCONFIG; ///@brief 标语配置项/警示配置 typedef struct tagNET_CFG_VSP_LXSJ_SLOGAN { char szText[256]; // 显示内容 NET_EM_LXSJ_DISPLAYTYPE emAreaDisplayType; // 区域显示类型 UINT nAreaX1; // 区域开始坐标X1 UINT nAreaY1; // 区域开始坐标Y1 UINT nAreaX2; // 区域开始坐标X2 UINT nAreaY2; // 区域开始坐标Y2 NET_EM_LXSJ_FONTCOLOR emFontColor; // 区域字体颜色 DH_COLOR_RGBA stuRGB; // 区域字体RGB值 NET_EM_LXSJ_SHOWMODE emShowMode; // 显示风格 UINT nMoveSpeed; // 移动速度,越小越快(单位5ms) UINT nStayTime; // 每页停留时间(单位1s) NET_EM_LXSJ_FONTSIZE emFontSize; // 文字大小(字高宽点数) BYTE byReserved[712]; // 预留 }NET_CFG_VSP_LXSJ_SLOGAN, NET_CFG_VSP_LXSJ_WARNNING; ///@brief 交通拥堵事件配置项 typedef struct tagNET_CFG_VSP_LXSJ_TRAFFICJAM { BOOL bEnable; NET_CFG_VSP_LXSJ_SLOGAN stuSlogan; // 标语配置项 NET_CFG_VSP_LXSJ_WARNNING stuWarnning; // 警示配置 BYTE byReserved[4096]; // 预留 }NET_CFG_VSP_LXSJ_TRAFFICJAM; ///@brief 雷达预警配置项 typedef struct tagNET_CFG_VSP_LXSJ_RADARPREALARM { BOOL bEnable; char szText[256]; // 显示内容 NET_EM_LXSJ_DISPLAYTYPE emAreaDisplayType; // 区域显示类型 UINT nAreaX1; // 区域开始坐标X1 UINT nAreaY1; // 区域开始坐标Y1 UINT nAreaX2; // 区域开始坐标X2 UINT nAreaY2; // 区域开始坐标Y2 NET_EM_LXSJ_FONTCOLOR emFontColor; // 区域字体颜色 DH_COLOR_RGBA stuRGB; // 区域字体RGB值 NET_EM_LXSJ_SHOWMODE emShowMode; // 显示风格 UINT nMoveSpeed; // 移动速度,越小越快(单位5ms) UINT nStayTime; // 每页停留时间(单位1s) NET_EM_LXSJ_FONTSIZE emFontSize; // 文字大小(字高宽点数) BYTE byReserved[708]; // 预留 }NET_CFG_VSP_LXSJ_RADARPREALARM; ///@brief 灵信视觉平台接入配置 typedef struct tagNET_CFG_VSP_LXSJ_INFO { DWORD dwSize; BOOL bEnable; // 平台接入使能 char szServerIP[32]; // 平台服务器IP地址 int nServerPort; // 服务器端口 NET_EM_LXSJ_TRANSMODE emTransMode; // 通讯传输方式 char szContorlID[32]; // 控制器ID UINT nWidth; // 显示屏宽度 UINT nHeigth; // 显示屏高度 UINT nPlayTime; // 播放时间(秒) UINT nCirclePlayTimes; // 循环播放次数 NET_EM_LXSJ_COLORTYPE emColorType; // 颜色类型 NET_CFG_VSP_LXSJ_NOPLATE stuNoPlate; // 无车牌配置项 NET_CFG_VSP_LXSJ_VIOLATIONTYPE stuViolationType; // 违章类型使能集 int nAreaDataNum; // 区域数据配置项个数 NET_CFG_VSP_LXSJ_AREADATA stuAreaData[16]; // 区域数据配置项 NET_CFG_VSP_LXSJ_CUSTOM stuCustom; // 自定义配置项 NET_CFG_VSP_LXSJ_ROLLCONFIG stuRollConfig; // 滚动配置项 NET_CFG_VSP_LXSJ_TRAFFICJAM stuTrafficJam; // 交通拥堵事件配置项 NET_CFG_VSP_LXSJ_RADARPREALARM stuRadarPreAlarm; // 雷达预警配置项 }NET_CFG_VSP_LXSJ_INFO; /////////////////////////////////////////////////////end//////////////////////////////////////////////////////////////////////// ///@brief 对应模式下的值 typedef struct tagNET_CFG_GLOBAL_MODEVALUE_INFO { int nNormal; // 普通模式的值 int nAlarm; // 报警模式的值 BYTE byReserved[24]; // 保留字段 }NET_CFG_GLOBAL_MODEVALUE_INFO; ///@brief 传感器报警全局配置 typedef struct tagNET_CFG_SENSOR_ALARM_GLOBAL_INFO { DWORD dwSize; NET_CFG_GLOBAL_MODEVALUE_INFO stuFrequency; // 设备采集周期 NET_CFG_GLOBAL_MODEVALUE_INFO stuTimes; // 设备采集次数 }NET_CFG_SENSOR_ALARM_GLOBAL_INFO; ///@brief 传感器信息 typedef struct tagNET_CFG_SERSOR_INFO { NET_SENSE_METHOD emSenseMethod; // 传感器类型 int nAlarmLowerLimit; // 下限报警值,低于此值会报警 int nAlarmHighLimit; // 上限报警值,高于此值会报警 BYTE byReserved[500]; // 保留字段 }NET_CFG_SERSOR_INFO; ///@brief 传感器报警配置 typedef struct tagNET_CFG_SENSOR_ALARM_INFO { DWORD dwSize; int nMaxNum; // pstSensorList数组分配的内存的最大个数 int nRetNum; // 实际传感器的个数 NET_CFG_SERSOR_INFO* pstSensorList; // 传感器列表,内存由用户分配,大小为nMaxNum * sizeof(NET_CFG_SERSOR_INFO) }NET_CFG_SENSOR_ALARM_INFO; ///@brief 时间点 typedef struct tagNET_TIME_POINT { int bEnable; // 使能 int nHour; // 时 int nMin; // 分 int nSec; // 秒 }NET_TIME_POINT; ///@brief 定时抓拍配置(对应枚举 NET_EM_CFG_TIMINGCAPTURE) typedef struct tagNET_CFG_TIMINGCAPTURE_INFO { DWORD dwSize; NET_TIME_POINT stuTimeSchedule[DH_N_WEEKS]; // 定时抓拍时间(注:7个元素中,第一个是星期日,第二个是星期一,以此类推) }NET_CFG_TIMINGCAPTURE_INFO; ///@brief 音频循环播放报警配置 typedef struct tagNET_LOOPPLAYBACK_AUDIOALARM_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能,开启:TRUE 关闭:FALSE DH_TSECT stuTimeSection[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 布撤防时间段 char szAudioFilePath[256]; // 语音播报文件路径 char szStartTime[20]; // 开始时间 char szEndTime[20]; // 结束时间 }NET_LOOPPLAYBACK_AUDIOALARM_INFO; ///@brief 云台速度配置 typedef struct tagNET_CFG_PTZ_SPEED { DWORD dwSize; int nPtzSpeed; // 云台速度 0~4 int nPatternSpeed; // 巡迹速度 1-10档可调,10档为100%速度,5档为50%速度,依此类推。 }NET_CFG_PTZ_SPEED; ///@brief 云台水平旋转组限制信息 typedef struct tagNET_CFG_HORIZONTAL_ROTATION_LIMIT_INFO { BOOL bLimitEnable; // 限制使能 int nLimitMode; // 限制模式 0:左右 1:上下 BYTE byReserved[256]; // 保留字节 } NET_CFG_HORIZONTAL_ROTATION_LIMIT_INFO; ///@brief 云台水平旋转组扫描配置 NET_EM_CFG_PTZ_HORIZONTAL_ROTATION_SCAN typedef struct tagNET_CFG_HORIZONTAL_ROTATION_GROUP_SCAN_INFO { DWORD dwSize; // 结构体大小 NET_CFG_HORIZONTAL_ROTATION_LIMIT_INFO stuHorizontalRotationInfo; // 云台水平旋转组限制信息 } NET_CFG_HORIZONTAL_ROTATION_GROUP_SCAN_INFO; ///@brief 线扫信息 typedef struct tagNET_AUTOSCAN_INFO { char szName[32]; // 线扫号名称 BOOL bLeftEnable; // 该线扫左边界是否生效 BOOL bRightEnable; // 该线扫右边界是否生效 UINT nScanSpeed; // 线扫速度,0~7 BYTE byReserved[948]; // 预留 }NET_AUTOSCAN_INFO; ///@brief 自动线扫设置 typedef struct tagNET_CFG_AUTOSCAN_INFO { DWORD dwSize; // 结构体大小 int nMaxScanInfoNum; // 用户分配的pAutoScanInfos内存的个数 NET_AUTOSCAN_INFO* pAutoScanInfos; // 线扫信息,内存由用户分配,大小应为 nMaxScanInfoNum * sizeof(NET_AUTOSCAN_INFO) int nRetScanInfoNum; // 实际获取/设置的配置的个数,必须小于nMaxScanInfoNum }NET_CFG_AUTOSCAN_INFO; ///@brief 巡航优先模式 typedef enum tagEM_TOUR_PRIOR_MODE { EM_TOUR_PRIOR_MODE_UNKNOWN, // 未知 EM_TOUR_PRIOR_MODE_SWITCH, // 场景优先 EM_TOUR_PRIOR_MODE_DETECT, // 检测优先 EM_TOUR_PRIOR_MODE_TOUR, // 巡航优先 } EM_TOUR_PRIOR_MODE; ///@brief 巡航路径 typedef struct tagNET_TOUR_PATH { UINT nPresetID; // 预置点编号, 范围:1~300 UINT nDuration; // 停留时间, 范围:30~900, 单位:秒 UINT nSpeed; // 预置点速度等级, 范围:1~10 BYTE byReserved[508]; // 预留字节 } NET_TOUR_PATH; ///@brief 巡航组信息 typedef struct tagNET_TOUR_GROUP { DH_TSECT stuTimeSection; // 时间段 int nTourPathNum; // 巡航路径预置点个数 NET_TOUR_PATH stuTourPath[10]; // 巡航路径 BYTE byReserved[1024]; // 预留字节 } NET_TOUR_GROUP; ///@brief 巡航计划 typedef struct tagNET_TOUR_PLAN { NET_TOUR_GROUP stuTourGroup[16]; // 巡航组信息 int nGroupNum; // 巡航组个数 BYTE byReserved[1020]; // 预留字节 } NET_TOUR_PLAN; ///@brief 巡航组配置 typedef struct tagNET_CFG_INTELLI_TOUR { DWORD dwSize; // 结构体大小 BOOL bEnable; // 巡航计划是否启用 EM_TOUR_PRIOR_MODE emTourPriMode; // 巡航优先模式 UINT nIdleWaitingTime; // 空闲等待时间, 即用户停止操作设备后,到巡航计划继续生效的空闲延时时间,单位:秒 NET_TOUR_PLAN stuTourPlan[7]; // 巡航计划,每一维表示星期几 UINT nSceneSwitchingTime; // 场景切换时间, 在巡航计划开启,优先模式为检测优先或者巡航优先时,一定时间检测不到物体后,自动转到下一个场景 BYTE byReserved[4]; // 对齐 }NET_CFG_INTELLI_TOUR; ///@brief 白光灯视频通道配置 NET_PRIOR_MODE_INFO typedef struct tagNET_CFG_COAXIAL_LIGHT_INFO { DWORD dwSize; BOOL bEnable; // 联动使能 DH_TSECT stuTimeSection[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 白光灯联动时间段 } NET_CFG_COAXIAL_LIGHT_INFO; ///@brief 视频输出颜色 typedef struct tagNET_VIDEO_OUT_COLOR { UINT nBrightness; // 亮度, 0~100 UINT nContrast; // 对比度, 0~100 UINT nSaturation; // 饱和度, 0~100 UINT nHue; // 色调, 0~100 UINT nGamma; // Gamma值, 0~100 BYTE byResered[132]; // 保留字节 } NET_VIDEO_OUT_COLOR; ///@brief 输出信号模式 typedef enum tagEM_VIDEO_OUT_FORMAT { EM_VIDEO_OUT_FORMAT_UNKNOWN, // 未知 EM_VIDEO_OUT_FORMAT_AUTO, // Auto, 不允许下发 EM_VIDEO_OUT_FORMAT_TV, // TV EM_VIDEO_OUT_FORMAT_VGA, // VGA EM_VIDEO_OUT_FORMAT_DVI, // DVI EM_VIDEO_OUT_FORMAT_HDMI, // DHMI EM_VIDEO_OUT_FORMAT_SPOT, // SPOT EM_VIDEO_OUT_FORMAT_SDI, // SDI } EM_VIDEO_OUT_FORMAT; ///@brief 输出扫描模式 typedef enum tagEM_VIDEO_OUT_SCAN_FORMAT { EM_VIDEO_OUT_SCAN_FORMAT_UNKNOWN, // 未知 EM_VIDEO_OUT_SCAN_FORMAT_PROGRESSIVE, // 逐行 EM_VIDEO_OUT_SCAN_FORMAT_INTERLACE, // 隔行 } EM_VIDEO_OUT_SCAN_FORMAT; ///@brief 视频输出模式 typedef struct tagNET_VIDEO_OUT_MODE { int nWidth; // 水平分辨率 int nHeight; // 垂直分辨率 int nBPP; // 颜色深度 int nRefreshRate; // 刷新频率 EM_VIDEO_OUT_FORMAT emFormat; // 输出信号模式 EM_VIDEO_OUT_SCAN_FORMAT emScanFormat; // 输出扫描模式 BYTE byResered[128]; // 保留字节 } NET_VIDEO_OUT_MODE; ///@brief 自定义视频输出模式 typedef struct tagNET_VIDEO_OUT_USERDEF_MODE { int nWidth; // 水平分辨率 int nHeight; // 垂直分辨率 int nBPP; // 颜色深度 int nRefreshRate; // 刷新频率 EM_VIDEO_OUT_FORMAT emFormat; // 输出信号模式 EM_VIDEO_OUT_SCAN_FORMAT emScanFormat; // 输出扫描模式 BYTE byResered[128]; // 保留字节 } NET_VIDEO_OUT_USERDEF_MODE; ///@brief 视频输出配置 NET_EM_CFG_VIDEO_OUT typedef struct tagNET_CFG_VIDEO_OUT_INFO { DWORD dwSize; BOOL bEnable; // 使能 UINT nMargin[4]; // 缩小比率,每一项分别表示视频输出左上右下四个边的缩小比率,每项0~100 BOOL bIQIMode; // 输出图像增强 BOOL bIsUserDefMode; // 是否启用户自定义视频输出模式 NET_VIDEO_OUT_COLOR stuColor; // 视频输出颜色 NET_VIDEO_OUT_MODE stuMode; // 视频输出模式 NET_VIDEO_OUT_USERDEF_MODE stuSelfDefMode; // 自定义视频输出模式, 当bIsUserDefMode为TRUE时有效 } NET_CFG_VIDEO_OUT_INFO; ///@brief 配置录像上传到云服务器的时间段 typedef struct tagNET_CFG_CLOUDUPLOADTIME_INFO { DWORD dwSize; BOOL bEnable; // 使能 NET_TIME stStartTime; // 开始时间段,在时间段内进行视频上传 NET_TIME stEndTime; // 结束时间段,在时间段内进行视频上传 }NET_CFG_CLOUDUPLOADTIME_INFO; ///@brief 云台 typedef struct tagNET_CFG_PATTERN_PTZ_INFO { BOOL bEnable; // 巡迹生效使能 TRUE 生效,FALSE 失效 char szName[32]; // 巡迹号名称(自定义名称,要有唯一性) BYTE byReserved[1020]; // 保留字节 }NET_CFG_PATTERN_PTZ_INFO; ///@brief 自动巡迹设置 typedef struct tagNET_CFG_AUTO_PATTERN_INFO { DWORD dwSize; // 结构体大小 NET_CFG_PATTERN_PTZ_INFO stuPatternPtzInfo[32]; // 云台信息 int nPatternPtzInfo; // 云台个数 }NET_CFG_AUTO_PATTERN_INFO; ///@brief 单个平台接入启动选项 typedef enum tagEM_SERVER_OPTION { EM_SERVER_OPTION_UNKNOWN, // 未知 EM_SERVER_OPTION_DISABLE, // 平台接入不启动 EM_SERVER_OPTION_GB28181, // 以28181接入方式开启 EM_SERVER_OPTION_GB35114, // 以35114接入方式开启 }EM_SERVER_OPTION; ///@brief 通道相关信息 typedef struct tagNET_CHANNEL_INFO { char szID[MAX_CHANNEL_ID_LEN]; // 通道编号 unsigned int nAlarmLevel; // 报警级别,范围[1,6] BYTE byReserved[1024]; // 保留字节 }NET_CHANNEL_INFO; ///@brief 报警相关信息 typedef struct tagNET_ALARM_INFO { char szID[MAX_CHANNEL_ID_LEN]; // 通道编号 unsigned int nAlarmLevel; // 报警级别,范围[1,6] BYTE byReserved[1024]; // 保留字节 }NET_ALARM_INFO; ///@brief 音频输出通道相关信息 typedef struct tagNET_AUDIO_OUTPUT_CHANNEL_INFO { char szID[MAX_CHANNEL_ID_LEN]; // 通道编号 BYTE byReserved[1024]; // 保留字节 }NET_AUDIO_OUTPUT_CHANNEL_INFO; ///@brief SIP服务器信息 typedef struct tagNET_SIP_SERVER_INFO { EM_SERVER_OPTION emServerOption; // 单个平台接入启动选项 char szSipSvrId[MAX_SIP_SVR_ID_LEN]; // SIP服务器编号 char szDomain[MAX_SIP_DOMAIN_LEN]; // SIP域 char szSipSvrIp[MAX_SIP_SVR_IP_LEN]; // SIP服务器IP char szDeviceId[MAX_SIP_SERVER_DEVICE_ID_LEN]; // 设备编号 char szPassword[MAX_REG_PASSWORD_LEN]; // 注册密码 unsigned short nLocalSipPort; // 本地SIP服务端口 unsigned short nSipSvrPort; // SIP服务器端口 unsigned int nSipRegExpires; // 注册有效期,单位:秒 unsigned int nRegInterval; // 注册失败后重新注册间隔,单位:秒 unsigned int nKeepAliveCircle; // 心跳周期,单位:秒 unsigned int nMaxTimeoutTimes; // 最大心跳超时次数 char szCivilCode[MAX_CIVIL_CODE_LEN]; // 行政区划代码 char szIntervideoID[MAX_INTERVIDEO_ID_LEN]; // 接入模块识别码 NET_CHANNEL_INFO* pstuChannnelInfo; // 通道相关信息,由用户申请内存,大小为sizeof(NET_CHANNEL_INFO)*nChannelInfoNum unsigned int nChannelInfoNum; // 通道信息个数,可以根据登陆时获取的通道数为准 unsigned int nRetChannelInfoNum; // 实际返回的通道号信息个数 NET_ALARM_INFO* pstuAlarmInfo; // 报警通道相关信息,由用户申请内存,大小为sizeof(NET_ALARM_INFO)*nAlarmInfoNum unsigned int nAlarmInfoNum; // 报警信息个数,最大值为640 unsigned int nRetAlarmInfoNum; // 实际返回的报警通道信息个数 NET_AUDIO_OUTPUT_CHANNEL_INFO* pstuAudioOutputChnInfo; // 音频输出通道相关信息,由用户申请内存,大小为sizeof(NET_AUDIO_OUTPUT_CHANNEL_INFO)*nAudioOutputChnInfoNum unsigned int nAudioOutputChnInfoNum; // 音频输出通道相关信息个数,最大值为181 unsigned int nRetAudioOutputChnInfoNum; // 实际返回的音频输出通道信息个数 BYTE byReserved[1024]; // 预留字节 }NET_SIP_SERVER_INFO; ///@brief 公安一所平台接入配置信息 typedef struct tagNET_CFG_VSP_GAYS_SERVER_INFO { DWORD dwSize; // 结构体大小 unsigned int nSipServerInfoNum; // 下发SIP服务器信息的个数,不超过MAX_SIP_SERVER_NUM NET_SIP_SERVER_INFO stuSipServerInfo[MAX_SIP_SERVER_NUM]; // SIP服务器信息 unsigned int nRetSipServerInfoNum; // 获取到的实际返回SIP服务器信息个数 BYTE byReserved[4]; // 预留对齐字节 }NET_CFG_VSP_GAYS_SERVER_INFO; ///@brief 协同签名服务器配置信息,对应 NET_EM_CFG_VSP_CO_SIGN_SERVER typedef struct tagNET_CFG_VSP_CO_SIGN_SERVER_INFO { DWORD dwSize; // 结构体大小 char szCoSignServerIP[64]; // 协同签名服务器IP地址 unsigned int nCoSignServerPort; // 协同签名服务器端口 }NET_CFG_VSP_CO_SIGN_SERVER_INFO; ///@brief 上报对象信息 typedef struct tagNET_VSP_GAVI_NOTIFY_OBJECT { BOOL bFaceChecked; // f目标选中 BOOL bPersonChecked; // b目标选中 BOOL bMotorVehicleChecked; // 机动车选中 BOOL bNonMotorVehicleChecked; // 非机动车选中 BOOL bImageChecked; // 图片选中 BYTE byReserved[516]; // 预留字段 }NET_VSP_GAVI_NOTIFY_OBJECT; ///@brief 通道信息 typedef struct tagNET_VSP_GAVI_CHANNEL_INFO { char szChannelEncode[24]; // 通道编码 NET_VSP_GAVI_NOTIFY_OBJECT stuNotifyObject; // 上报设备信息 BYTE byReserved[512]; // 预留字段 }NET_VSP_GAVI_CHANNEL_INFO; ///@brief 接入平台枚举 typedef enum tagEM_VSP_GAVI_PLATFORM_CODE { EM_VSP_GAVI_PLATFORM_CODE_UNKNOWN = -1, EM_VSP_GAVI_PLATFORM_CODE_DEFAULT, EM_VSP_GAVI_PLATFORM_CODE_DAHUA, EM_VSP_GAVI_PLATFORM_CODE_HKTDA_CLOUDSTORAGE, EM_VSP_GAVI_PLATFORM_CODE_UNIVIEW, EM_VSP_GAVI_PLATFORM_CODE_HKTEST, EM_VSP_GAVI_PLATFORM_CODE_SHQPNETPOSE, EM_VSP_GAVI_PLATFORM_CODE_HKTDA, EM_VSP_GAVI_PLATFORM_CODE_HARZONE, EM_VSP_GAVI_PLATFORM_CODE_NETPOSE, EM_VSP_GAVI_PLATFORM_CODE_TAOAN, EM_VSP_GAVI_PLATFORM_CODE_RESERVED, EM_VSP_GAVI_PLATFORM_CODE_HKVIEWGATEWAY, EM_VSP_GAVI_PLATFORM_CODE_KODAK, }EM_VSP_GAVI_PLATFORM_CODE; ///@brief 云存储服务器鉴权密钥 typedef struct tagNET_HKIMAGESERVER_INFO { char szAccessKey[136]; // 接入码 char szSecretKey[136]; // 鉴权密钥 BYTE szReserved[512]; // 预留字段 }NET_HKIMAGESERVER_INFO; ///@brief 注册平台信息 typedef struct tagNET_VSP_GAVI_INFO { char szAddress[128]; // 注册平台IP地址或网络名。IP为空时,不做接入 char szUserId[64]; // 设备登陆帐号 char szPassword[64]; // 登陆密码 UINT nPort; // 注册平台端口号 BOOL bEnable; // 接入使能 UINT nKeepAliveTime; // 会话保活周期,范围[10,90],单位秒 UINT nMaxTimeoutTimes; // 最大超时次数,范围[2,5] UINT nRegisterInterval; // 注册失败后重新注册随机时间上限,范围[30,300],单位秒 char szDeviceID[24]; // 注册设备ID NET_VSP_GAVI_CHANNEL_INFO* pstuChannelInfo; // 通道信息,用户分配内存 UINT nChannelCount; // pstuChannelInfo 个数,和通道数保持一致 UINT nChannelCountRet; // 返回的 pstuChannelInfo 个数 EM_VSP_GAVI_PLATFORM_CODE emPlatform; // 当前平台 BOOL bIsOnLine; // 是否在线,不可修改 NET_HKIMAGESERVER_INFO* pHKImageServerInfo; // 云存储服务器鉴权密钥信息,emPlatform 为 EM_VSP_GAVI_PLATFORM_CODE_HKTDA_CLOUDSTORAGE时有效 BYTE byReserved[68]; // 保留字节 }NET_VSP_GAVI_INFO; ///@brief 接入平台范围信息 typedef struct tagNET_VSP_GAVI_PLATFORM_INFO { EM_VSP_GAVI_PLATFORM_CODE emPlatformCode; // 平台码 char szPlatformName[128]; // 平台名称 BYTE byReserved[132]; // 预留字段 }NET_VSP_GAVI_PLATFORM_INFO; ///@brief 公安视频图像信息应用系统接入配置,对应 NET_EM_CFG_VSP_GAVI typedef struct tagNET_CFG_VSP_GAVI_INFO { DWORD dwSize; // 结构体大小 int nGaviInfoCount; // 注册平台个数 NET_VSP_GAVI_INFO stuGaviInfo[16]; // 注册平台信息 int nPlatformCount; // stuPlatformInfo个数 NET_VSP_GAVI_PLATFORM_INFO stuPlatformInfo[64]; // 接入平台范围信息,不允许修改 }NET_CFG_VSP_GAVI_INFO; ///@brief ONVIF服务配置, 对应 NET_EM_CFG_VSP_ONVIF typedef struct tagNET_CFG_VSP_ONVIF_INFO { DWORD dwSize; // 结构体大小 BOOL bServiceStart; // 开关控制 }NET_CFG_VSP_ONVIF_INFO; ///@brief 目标离线消费基本配置, 对应 NET_EM_CFG_VSP_LRLXXF_MODULE typedef struct tagNET_CFG_VSP_LRLXXF_MODULE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 平台接入使能, TRUE:启动平台接入模块, FALSE:关闭平台接入模块 }NET_CFG_VSP_LRLXXF_MODULE_INFO; ///@brief 自定义配置 typedef struct tagNET_VSP_LRLXXF_CUSTOM_INFO { UINT nReportInterval; // ReportInterval, web展现, 单位分钟 char szEvoConsumeUrl[128]; // EvoConsumeUrl, web展现 char szClientSecret[128]; // ClientSecret, web展现 char szClientID[128]; // ClientID, web展现 char szGetTokenUrl[128]; // GetTokenUrl, web展现 char byReserved[256]; // 预留字段 }NET_VSP_LRLXXF_CUSTOM_INFO; ///@brief 目标离线消费个性化配置, 对应 NET_EM_CFG_VSP_LRLXXF_CUSTOM typedef struct tagNET_CFG_VSP_LRLXXF_CUSTOM_INFO { DWORD dwSize; // 结构体大小 NET_VSP_LRLXXF_CUSTOM_INFO stuCustom; // 自定义配置 }NET_CFG_VSP_LRLXXF_CUSTOM_INFO; ///@brief 注册协议 typedef enum tagEM_REGISTRATION_PROTOCOL { EM_REGISTRATION_PROTOCOL_UNKNWON, // 未知 EM_REGISTRATION_PROTOCOL_PRIVATE, // Private协议 EM_REGISTRATION_PROTOCOL_SIP, // 私有SIP协议 EM_REGISTRATION_PROTOCOL_H323, // H323协议 EM_REGISTRATION_PROTOCOL_HITRY_CLOUD, // HitryCloud协议 }EM_REGISTRATION_PROTOCOL; ///@brief 终端注册到视频会议服务器的配置信息, 对应 NET_EM_CFG_VSP_TERMINAL_REGISTER_INFO typedef struct tagNET_CFG_VSP_TERMINAL_REGISTER_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能 char szDeviceID[16]; // 设备ID char szPassword[32]; // 密码 char szRemoteIp[64]; // 服务器IP UINT nRemotePort; // 服务器端口, 默认50060, 取值范围:1-65535 BOOL bIsAutoJoinConference; // 是否自动入会 EM_REGISTRATION_PROTOCOL emProtocol; // 注册协议 BOOL bIsRecord; // 终端是否录制互动会议录像 }NET_CFG_VSP_TERMINAL_REGISTER_INFO; ///@brief 媒体数据加密配置 typedef struct tagNET_MEDIA_ENCRYPT_INFO { DWORD dwSize; // 结构体大小 BOOL bKeyFrameEncryptEnable; // 是否开启关键帧数据加密 unsigned int nVKUpdateTime; // 密钥更新周期,单位:分钟,若为0,则表示密钥不更新 BOOL bRTSPOverTlsEnable; // 是否开启RTSP TLS服务 EM_ALGORITHM_TYPE emAlgorithm; // 加密算法 }NET_MEDIA_ENCRYPT_INFO; ///@brief 下载数据加密配置 typedef struct tagNET_DOWNLOAD_ENCRYPT_INFO { DWORD dwSize; // 结构体大小 BOOL bEncryptEnable; // 是否开启数据加密 char szEncryptPasswd[256]; // 加密下载数据密码 EM_ALGORITHM_TYPE emAlgorithm; // 加密算法 }NET_DOWNLOAD_ENCRYPT_INFO; ///@brief 存储数据加密配置 typedef struct tagNET_STORE_ENCRYPT_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否需要录像存储加密 int nVKEKMode; // 0:未知 1:密钥管理服务器分配管理 2:用户自定义密码 EM_ALGORITHM_TYPE emAlgorithm; // 加密算法 char szEncryptPasswd[64]; // 客户配置的密码,用于对码流加密密码的二次加密,bEnable为TRUE且nVKEKMode为2时填写 }NET_STORE_ENCRYPT_INFO; ///@brief 国家/地区配置 typedef struct tagNET_CFG_COUNTRY_INFO { DWORD dwSize; // 结构体大小 char szCountry[3]; // 国家/地区,2字节大写格式,符合ISO 3166规范 BYTE byReserved1[1]; // 字节对齐, 非保留字节 }NET_CFG_COUNTRY_INFO; ///@brief 视频制式 typedef enum tagEM_VIDEO_STANDARD { EM_VIDEO_STANDARD_UNKNOWN, EM_VIDEO_STANDARD_PAL, // "PAL" EM_VIDEO_STANDARD_NTSC, // "NTSC" EM_VIDEO_STANDARD_SECAM, // "SECAM" }EM_VIDEO_STANDARD; ///@brief 视频制式配置 typedef struct tagNET_CFG_VIDEOSTANDARD_INFO { DWORD dwSize; // 结构体大小 EM_VIDEO_STANDARD emVideoStandard; // 视频制式 }NET_CFG_VIDEOSTANDARD_INFO; ///@brief NVR级联控制IPC灯光配置 typedef struct tagNET_CFG_CASCADE_LIGHT_INFO { DWORD dwSize; int nCount; // 实际灯光个数 BOOL bEnable[16]; // 灯光使能 } NET_CFG_CASCADE_LIGHT_INFO; ///@brief 乐橙简易智能追踪配置 typedef struct tagNET_CFG_LE_SMARTTRACK_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 乐橙简易智能追踪使能 } NET_CFG_LE_SMARTTRACK_INFO; ///@brief 乐橙镜头遮挡配置 typedef struct tagNET_CFG_LE_LENS_MASK_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 镜头是否处在遮挡位置, TRUE:遮挡位, 无视频; FALSE:正常位置 int nValidLastPositionNum; // 有效的遮挡前云台位置坐标数组个数 BYTE byReserved[4]; // 字节对齐 double dbLastPosition[3]; // 遮挡前云台位置坐标数组, 记录遮挡前的云台位置, 恢复时回到该坐标 // 第一个元素为水平角度,归一化到-1~1;第二个元素为垂直角度,归一化到-1~1;第三个元素为放大倍数,归一化到0~1。 // 数组元素分别对应DH_PTZ_LOCATION_INFO中的pan、tilt、zoom,对应DH_DEVSTATE_PTZ_LOCATION枚举命令 // 遮挡使能为FALSE时,无需填坐标 }NET_CFG_LE_LENS_MASK_INFO; ///@brief 注册类型 typedef enum tagNET_EM_REGISTER_TYPE { NET_EM_REGISTER_TYPE_UNKNOWN, // 未知 NET_EM_REGISTER_TYPE_LECHENG, // 国内:lecheng NET_EM_REGISTER_TYPE_EASY4IP, // 国外:easy4ip }NET_EM_REGISTER_TYPE; ///@brief 乐橙云注册配置(NET_EM_CFG_VSP_PAAS) typedef struct tagNET_CFG_VSP_PAAS_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 接入使能,可用于WEB端获取/设置接入使能 BOOL bOnline; // 是否在线标识,可用于判断设备是否与平台建立正常连接 char szRsServerIP[DH_MAX_IPADDR_EX_LEN]; // 注册服务器地址 int nRsServerPort; // 注册服务器端口 char szSN[DH_DEV_SERIALNO_LEN]; // 设备序列号 char szCheckCode[DH_DEV_SERIALNO_LEN]; // 设备验证码 NET_EM_REGISTER_TYPE emType; // 注册类型 }NET_CFG_VSP_PAAS_INFO; ///@brief 目标认证模式 typedef enum tagNET_EM_FACE_AUTH_MODE { NET_EM_FACE_AUTH_MODE_UNKNOWN = 0, // 未知 NET_EM_FACE_AUTH_MODE_LOCAL, // 本地比对认证 NET_EM_FACE_AUTH_MODE_REMOTE, // 远程比对认证 }NET_EM_FACE_AUTH_MODE; ///@brief 卡片认证模式 typedef enum tagNET_EM_CARD_AUTH_MODE { NET_EM_CARD_AUTH_MODE_UNKNOWN = 0, // 未知 NET_EM_CARD_AUTH_MODE_LOCAL, // 本地比对认证 NET_EM_CARD_AUTH_MODE_REMOTE, // 远程比对认证 }NET_EM_CARD_AUTH_MODE; ///@brief 二维码认证模式 typedef enum tagNET_EM_QR_CODE_AUTH_MODE { NET_EM_QR_CODE_AUTH_MODE_UNKNOWN = 0, // 未知 NET_EM_QR_CODE_AUTH_MODE_LOCAL, // 本地比对认证 NET_EM_QR_CODE_AUTH_MODE_REMOTE, // 远程比对认证 }NET_EM_QR_CODE_AUTH_MODE; ///@brief 所有权限认证模式 typedef enum tagNET_EM_ALL_AUTH_MODE { NET_EM_ALL_AUTH_MODE_UNKNOWN = 0, // 未知 NET_EM_ALL_AUTH_MODE_DISABLE, // 无效,当需要单独配置各个权限认证模式时使用 NET_EM_ALL_AUTH_MODE_LOACL, // 本地比对认证 NET_EM_ALL_AUTH_MODE_REMOTE, // 远程比对认证 }NET_EM_ALL_AUTH_MODE; ///@brief 在离线开门认证模式配置,如果是在线模式,设备开门权限由远程鉴权,如果是离线模式,由设备端来鉴权 typedef struct tagNET_CFG_ACCESSCTL_AUTH_MODE { DWORD dwSize; // 结构体大小 NET_EM_FACE_AUTH_MODE emFaceAuthMode; // 目标认证模式 NET_EM_CARD_AUTH_MODE emCardAuthMode; // 卡片认证模式 NET_EM_QR_CODE_AUTH_MODE emQRCodeAuthMode; // 二维码认证模式 NET_EM_ALL_AUTH_MODE emAllAuthMode; // 所有权限认证模式,当该模式生效时,其他认证模式以此模式为准,当该模式无效时,使用各个权限各自的认证模式 }NET_CFG_ACCESSCTL_AUTH_MODE; ///@brief LED屏显示颜色 typedef enum tagNET_EM_LED_COLOR { NET_EM_LED_COLOR_UNKNOWN = 0, // 未知 NET_EM_LED_COLOR_GREEN, // 绿色 NET_EM_LED_COLOR_YELLOW, // 黄色 NET_EM_LED_COLOR_RED, // 红色 }NET_EM_LED_COLOR; ///@brief LED屏显示配置 typedef struct tagNET_CFG_LED_TEXT { DWORD dwSize; // 结构体大小 char szText[128]; // 显示内容 NET_EM_LED_COLOR emColor; // 显示颜色 }NET_CFG_LED_TEXT; ///@brief LED屏显示批量配置 typedef struct tagNET_CFG_LED_TEXT_ARRAY { DWORD dwSize; // 结构体大小 char szText[128]; // 显示内容 NET_EM_LED_COLOR emColor; // 显示颜色 int nHoldTime; // 保持时间(秒) }NET_CFG_LED_TEXT_ARRAY; ///@brief 一键撤防配置 typedef struct tagNET_CFG_DISABLE_LINKAGE { DWORD dwSize; // 结构体大小 BOOL bEnable; // 撤防联动项功能总开关 }NET_CFG_DISABLE_LINKAGE; ///@brief 周期撤防联动项功能总开关 typedef struct tagNET_CFG_DISABLE_LINKAGE_TIME_SECTION { DWORD dwSize; // 结构体大小 BOOL bEnable; // 周期撤防联动项功能总开关 DH_TSECT stuTimeSection[DH_N_SCHEDULE_TSECT][DH_N_REC_TSECT]; // 时间段周期设置, 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 } NET_CFG_DISABLE_LINKAGE_TIME_SECTION; ///@brief 远程撤防联动项功能总开关配置 typedef struct tagNET_CFG_REMOTE_DISABLE_LINKAGE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 撤防联动项功能总开关 }NET_CFG_REMOTE_DISABLE_LINKAGE_INFO; ///@brief 远程通道是否同步本地端"周期一键布撤防"配置,对应配置枚举 NET_EM_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC typedef struct tagNET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 远程通道是否同步本地端"周期一键布撤防"配置功能总开关 int* pRemoteChannels; // 需要同步的通道号,由用户分配内存 DWORD nRemoteChannelsCnt; // pRemoteChannels指向的有效通道个数 DWORD nRetRemoteChannelsCnt; // 获取配置时,返回的有效通道号个数 }NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO; ///@brief 网络键盘快速控制配置数组元素信息 typedef struct tagNET_MATRIX_NETKBDFASTCTRL_ELEMENTS_INFO { int nChannel; // 键盘操作对应的视频源通道 char szUserName[64]; // 键盘操作对应的用户名 BYTE byReserved[260]; // 保留字节 } NET_MATRIX_NETKBDFASTCTRL_ELEMENTS_INFO; ///@brief 网络键盘快速控制配置 typedef struct tagNET_CFG_MATRIX_NETKBDFASTCTRL_INFO { DWORD dwSize; // 结构体大小 int nMatrixNetKBDFastCtrlInfoNum; // 网络键盘快速控制配置个数 NET_MATRIX_NETKBDFASTCTRL_ELEMENTS_INFO stuMatrixNetKBDFastCtrlInfo[128]; // 网络键盘快速控制配置 } NET_CFG_MATRIX_NETKBDFASTCTRL_INFO; ///@brief 保密室代码和名称配置 typedef struct tagNET_CFG_VIDEO_CHANNEL_LABEL_INFO { DWORD dwSize; // 结构体大小 char szSecurityRoomCode[32]; // 保密室代码 char szSecurityRoomName[32]; // 保密室名称 }NET_CFG_VIDEO_CHANNEL_LABEL_INFO; ///@brief 预置点抓图数量配置,对应枚举 NET_EM_CFG_PRESET_SNAP_PICTURE_NUM typedef struct tagNET_CFG_PRESET_SNAP_PICTURE_NUM { DWORD dwSize; // 结构体大小 int nNum; // 抓图数量 }NET_CFG_PRESET_SNAP_PICTURE_NUM; ///@brief 比对报警规则 typedef enum tagEM_ALARM_RULE_TYPE { EM_ALARM_RULE_UNKNOWN = -1, // 未知 EM_ALARM_RULE_NONE, // 不报警 EM_ALARM_RULE_SUCCESS, // 比对成功报警 EM_ALARM_RULE_FAIL, // 比对失败报警 } EM_ALARM_RULE_TYPE; ///@brief 联动报警输出通道信息 typedef struct tagNET_ALARM_OUT_CHANNEL_INFO { EM_ALARM_RULE_TYPE emAlarmRuleType; // 比对报警规则 int nAlarmOutLatch; // 报警输出延时, 单位秒, 范围1-300 BYTE byReserved[128]; // 保留字节 } NET_ALARM_OUT_CHANNEL_INFO; ///@brief 目标识别联动报警通道信息 typedef struct tagNET_FACE_RECOGNITION_ALARM_CHANNEL { char szGroupID[64]; // 目标库ID char szGroupName[128]; // 目标库名称 BOOL bAlarmOutEnable; // 目标识别事件是否联动报警输出 UINT nAlarmChannelNum; // 联动报警输出通道个数 NET_ALARM_OUT_CHANNEL_INFO stuAlarmChannel[64]; // 联动报警输出通道信息 BYTE byReserved[256]; // 保留字节 } NET_FACE_RECOGNITION_ALARM_CHANNEL; ///@brief 目标识别联动报警通道配置, 对应枚举 NET_EM_CFG_FACE_RECOGNITION_ALARM typedef struct tagNET_FACE_RECOGNITION_ALARM_INFO { DWORD dwSize; // 结构体大小 UINT nFaceReconChannelNum; // 目标识别联动报警通道个数 NET_FACE_RECOGNITION_ALARM_CHANNEL stuFaceReconChannel[50]; // 目标识别联动报警通道信息 } NET_FACE_RECOGNITION_ALARM_INFO; ///@brief 逻辑屏显示内容 typedef enum tagNET_EM_SCREEN_SHOW_CONTENTS { EM_TRAFFIC_LATTICE_SCREEN_UNKNOWN = 0, // 未知 EM_TRAFFIC_LATTICE_SCREEN_PLATENUMBE, // 车牌 EM_TRAFFIC_LATTICE_SCREEN_SYSTIME, // 系统时间 EM_TRAFFIC_LATTICE_SCREEN_PARKTIME, // 停车时长 EM_TRAFFIC_LATTICE_SCREEN_MASTEROFCAR, // 车主姓名 EM_TRAFFIC_LATTICE_SCREEN_USERTYPE, // 用户类型 EM_TRAFFIC_LATTICE_SCREEN_REMAINDAY, // 到期天数 EM_TRAFFIC_LATTICE_SCREEN_PARKCHARGE, // 停车费 EM_TRAFFIC_LATTICE_SCREEN_REMAINSPACE, // 余位数 EM_TRAFFIC_LATTICE_SCREEN_SYSDATE, // 系统日期 EM_TRAFFIC_LATTICE_SCREEN_PASSICONCIRCLE, // 车辆通过指示灯(红圆绿圆组合指示灯) EM_TRAFFIC_LATTICE_SCREEN_PASSICONARROW, // 车辆通过指示灯(红叉绿箭组合指示灯) EM_TRAFFIC_LATTICE_SCREEN_INTIME, // 入场时间 EM_TRAFFIC_LATTICE_SCREEN_OUTTIME, // 出场时间 EM_TRAFFIC_LATTICE_SCREEN_REMARKS, // 备注信息 EM_TRAFFIC_LATTICE_SCREEN_RESOURCE, // 资源文件(视频或图片) EM_TRAFFIC_LATTICE_SCREEN_CUSTOM, // 自定义信息 }NET_EM_SCREEN_SHOW_CONTENTS; ///@brief 逻辑屏显示内容 typedef struct tagNET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS { NET_EM_SCREEN_SHOW_CONTENTS emContents; // 逻辑屏显示的内容 BYTE byReserved1[4]; // 字节对齐 char szCustomStr[32]; // 自定义内容,emContents为 EM_TRAFFIC_LATTICE_SCREEN_CUSTOM 时有效 BYTE byReserved[32]; // 预留 }NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS; ///@brief 点阵屏显示信息 typedef struct tagNET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO { NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS stuContents[64]; // 逻辑屏显示内容 int nContentsNum; // 逻辑屏个数 BYTE byReserved[1020]; // 预留 }NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO; ///@brief 逻辑屏显示方式 typedef enum tagNET_EM_LATTICE_SCREEN_SHOW_TYPE { EM_LATTICE_SCREEN_SHOW_TYPE_UNKNOWN = -1, // 未知 EM_LATTICE_SCREEN_SHOW_TYPE_WORD_CONTROL, // 字段控制显示 EM_LATTICE_SCREEN_SHOW_TYPE_TRUSTEESHIP_CONTROL, // 托管显示(完全由平台自定义显示) }NET_EM_LATTICE_SCREEN_SHOW_TYPE; ///@brief 逻辑屏控制方式 typedef enum tagNET_EM_LATTICE_SCREEN_CONTROL_TYPE { EM_LATTICE_SCREEN_CONTROL_TYPE_UNKNOWN = -1, // 未知 EM_LATTICE_SCREEN_CONTROL_TYPE_CAMERA_CONTROL, // 相机控制 EM_LATTICE_SCREEN_CONTROL_TYPE_PLATFORM_CONTROL, // 平台控制 }NET_EM_LATTICE_SCREEN_CONTROL_TYPE; ///@brief 逻辑屏背景风格模式 typedef enum tagNET_EM_LATTICE_SCREEN_BACKGROUND_MODE { NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_UNKNOWN, // 未知 NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_A, // 背景风格A NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_B, // 背景风格B NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_C, // 背景风格C }NET_EM_LATTICE_SCREEN_BACKGROUND_MODE; ///@brief 逻辑屏LOGO类型 typedef enum tagNET_EM_LATTICE_SCREEN_LOGO_TYPE { NET_EM_LATTICE_SCREEN_LOGO_TYPE_UNKNOWN, // 未知 NET_EM_LATTICE_SCREEN_LOGO_TYPE_STENCIL, // 文字 NET_EM_LATTICE_SCREEN_LOGO_TYPE_PICTURE, // 图片 }NET_EM_LATTICE_SCREEN_LOGO_TYPE; ///@brief 点阵屏LOGO信息 typedef struct tagNET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO { NET_EM_LATTICE_SCREEN_LOGO_TYPE emLogoType; // LOGO类型 char szContent[128]; // emLogoType为文字时,为文字内容;emLogoType为图片时,为图片名称 }NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO; ///@brief 点阵屏报警提示显示信息 typedef struct tagNET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO { char szNoHelmet[128]; // 未带头盔屏幕提示信息 char szNonMotorOverload[128]; // 非机动车超载提示信息 }NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO; ///@brief 点阵屏显示信息配置, 对应枚举 NET_EM_CFG_TRAFFIC_LATTICE_SCREEN typedef struct tagNET_CFG_TRAFFIC_LATTICE_SCREEN_INFO { DWORD dwSize; // 结构体大小 int nStatusChangeTime; // 状态切换间隔,单位:秒,取值10 ~ 60 NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO stuNormal; // 常态下 NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO stuCarPass; // 过车时 NET_EM_LATTICE_SCREEN_SHOW_TYPE emShowType; // 显示方式 NET_EM_LATTICE_SCREEN_CONTROL_TYPE emControlType; // 控制方式 NET_EM_LATTICE_SCREEN_BACKGROUND_MODE emBackgroundMode; // 背景风格模式 char szPlayList[10][64]; // 资源文件播放列表,支持视频文件和图片文件播放,按照数组顺序循环播放 int nPlayListNum; // 资料文件个数 NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO stuLogoInfo; // Logo信息 NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO stuAlarmNoticeInfo; // 报警提示显示信息 }NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO; #define NET_MAX_PLATEENABLE_NUM 16 // 最大使能过车车牌播报个数 #define NET_MAX_BROADCAST_ELEMENT_NUM 64 // 最大语音播报元素个数 ///@brief 使能过车车牌播报功能枚举 typedef enum tagNET_EM_PLATEENABLE_TYPE { EM_PLATEENABLE_UNKNOWN = 0, // 未定义 EM_PLATEENABLE_TIPS, // 播放欢迎词 EM_PLATEENABLE_PLATE, // 播放车牌 EM_PLATEENABLE_ELEMENT, // 按照配置元素播报 } NET_EM_PLATEENABLE_TYPE; ///@brief 播报元素类型 typedef enum tagNET_EM_VOICE_BROADCAST_ELEMENT_TYPE { EM_VOICE_BROADCAST_ELEMENT_UNKNOWN = 0, // 未知 EM_VOICE_BROADCAST_ELEMENT_PLATENUMBER, // 车牌号码 EM_VOICE_BROADCAST_ELEMENT_PARKTIME, // 停车时间 EM_VOICE_BROADCAST_ELEMENT_PARKCHARGE, // 停车收费 EM_VOICE_BROADCAST_ELEMENT_USERTYPE, // 用户类型 EM_VOICE_BROADCAST_ELEMENT_REMAINDAY, // 剩余天数 EM_VOICE_BROADCAST_ELEMENT_INTIME, // 入场时间 EM_VOICE_BROADCAST_ELEMENT_OUTTIME, // 出场时间 EM_VOICE_BROADCAST_ELEMENT_REMARKS, // 备注信息 EM_VOICE_BROADCAST_ELEMENT_CUSTOM, // 自定义,内容为前缀+后缀字符串 }NET_EM_VOICE_BROADCAST_ELEMENT_TYPE; ///@brief 播报元素 typedef struct tagNET_TRAFFIC_VOICE_BROADCAST_ELEMENT { NET_EM_VOICE_BROADCAST_ELEMENT_TYPE emType; // 类型 BYTE byReserved1[4]; // 字节对齐 char szPrefix[512]; // 前缀字符串 char szPostfix[512]; // 后缀字符串 BYTE byReserved[1024]; // 预留 }NET_TRAFFIC_VOICE_BROADCAST_ELEMENT; ///@brief 智能交通语音播报配置 对应枚举 NET_EM_CFG_TRAFFIC_VOICE_BROADCAST typedef struct tagNET_CFG_TRAFFIC_VOICE_BROADCAST_INFO { DWORD dwSize; // 结构体大小 int nEnableCount; // 使能播报个数 NET_EM_PLATEENABLE_TYPE emEnable[NET_MAX_PLATEENABLE_NUM]; // 使能过车车牌播报,见枚举 NET_EM_PLATEENABLE_TYPE char szNormalCar[MAX_PATH]; // 普通车辆过车播报内容,例如:播报语音文件"欢迎光临.wav" char szTrustCar[MAX_PATH]; // 信任车辆过车播报内容,例如:播报语音文件"欢迎光临.wav" char szSuspiciousCar[MAX_PATH]; // 异常车辆过车播报内容,例如:播报语音文件"非注册车辆.wav" NET_TRAFFIC_VOICE_BROADCAST_ELEMENT stuElement[NET_MAX_BROADCAST_ELEMENT_NUM]; // 播报元素 int nElementNum; // stuElement中有效数据个数 }NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO; ///@brief 抓拍类型 typedef enum tagNET_EM_SNAP_SHOT_TYPE { NET_EM_SNAP_SHOT_TYPE_UNKNOWN = 0, // 未知 NET_EM_SNAP_SHOT_TYPE_NEAR, // 近景 NET_EM_SNAP_SHOT_TYPE_MEDIUM, // 中景 NET_EM_SNAP_SHOT_TYPE_FAR, // 远景 NET_EM_SNAP_SHOT_TYPE_FEATURE, // 车牌特写 }NET_EM_SNAP_SHOT_TYPE; ///@brief 抓拍间隔模式 typedef enum tagNET_EM_SNAP_SHOT_INTERVAL_MODE { NET_EM_SNAP_SHOT_INTERVAL_UNKNOWN = 0, // 未知 NET_EM_SNAP_SHOT_INTERVAL_TIME, // 按固定时间间隔,该模式下nSingleInterval有效 NET_EM_SNAP_SHOT_INTERVAL_FRAMEADAPTSPEED, // 速度自适应帧间隔 NET_EM_SNAP_SHOT_INTERVAL_FRAME, // 固定帧间隔 }NET_EM_SNAP_SHOT_INTERVAL_MODE; ///@brief 规则集抓拍参数 typedef struct tagNET_SNAP_SHOT_WITH_RULE_INFO { UINT nRuleId; DWORD dwRuleType; // 规则类型,详见dhnetsdk.h中"智能分析事件类型" UINT nSnapShotNum; // 抓拍图片张数 NET_EM_SNAP_SHOT_TYPE emSnapShotType[MAX_SNAP_SHOT_NUM]; // 抓拍图片类型数组 UINT nSingleInterval[MAX_SNAP_SHOT_NUM]; // 抓图时间间隔数组,单位秒,数组第一个时间:5~180 默认10, 其余时间(N张抓拍有N-1个间隔时):1~3600 默认20 NET_EM_SNAP_SHOT_INTERVAL_MODE emIntervalMode; // 抓拍间隔模式 BYTE byReserved[1024]; // 预留 }NET_SNAP_SHOT_WITH_RULE_INFO; ///@brief 抓拍参数 typedef struct tagNET_SCENE_SNAP_SHOT_WITH_RULE2_INFO { UINT nPresetID; // 场景预置点号 UINT nRetSnapShotRuleNum; // stuSnapShotWithRule中有效数据个数 NET_SNAP_SHOT_WITH_RULE_INFO stuSnapShotWithRule[32]; // 规则集抓拍参数 BYTE byReserved[1024]; // 预留 }NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO; ///@brief 场景抓拍设置 对应枚举 NET_EM_CFG_SCENE_SNAP_SHOT_WITH_RULE2 typedef struct tagNET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO { DWORD dwSize; // 结构体大小 UINT nMaxRuleNum; // pstuSnapShotWithRule中用户分配的内存个数 UINT nRetRuleNum; // pstuSnapShotWithRule中实际有效的数据个数 NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO* pstuSceneSnapShotWithRule; // 抓拍参数,由用户分配和释放内存,大小为nMaxRuleNum * sizeof(NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO) }NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO; ///@brief 停车场景定时抓拍配置信息, 对应枚举 NET_EM_CFG_TRAFFIC_PARKING_SNAP_TIMER typedef struct tagNET_CFG_TRAFFIC_PARKING_SNAP_TIMER_INFO { DWORD deSize; // 结构体大小 BOOL bEnable; // 是否使能 UINT nPeriod; // 定时周期,单位为分钟。默认值为5分钟,取值范围[1,60] } NET_CFG_TRAFFIC_PARKING_SNAP_TIMER_INFO; ///@brief 车辆信息配置, 对应枚举 NET_EM_CFG_VEHICLE_INFO typedef struct tagNET_CFG_VEHICLE_INFO { DWORD deSize; // 结构体大小 char szOrganization[32]; // 车辆所属公司或者组织 char szVehicleID[32]; // 车辆编号 } NET_CFG_VEHICLE_INFO; ///@brief 车辆工作状态 typedef enum tagEM_VEHICLE_WORK_MODE { EM_VEHICLE_WORK_MODE_UNKNOWN, // 默认,不区分 EM_VEHICLE_WORK_MODE_INSIDE, // 园区内作业 EM_VEHICLE_WORK_MODE_OUTSIDE, // 园区外作业 } EM_VEHICLE_WORK_MODE; ///@brief 车辆工作模式配置, 对应枚举 NET_EM_CFG_VEHICLE_WORK_MODE typedef struct tagNET_CFG_VEHICLE_WORK_MODE { DWORD dwSize; // 结构体大小 EM_VEHICLE_WORK_MODE emWorkMode; // 车辆工作状态 } NET_CFG_VEHICLE_WORK_MODE; ///@brief 门铃类型 typedef enum tagNET_EM_DOORBELL_TYPE { NET_EM_DOORBELL_UNKNOWN = -1, // 未知 NET_EM_DOORBELL_UNCONNECTED, // 未接 NET_EM_DOORBELL_MECHANICAL, // 机械 NET_EM_DOORBELL_ELECTRONIC, // 电子 } NET_EM_DOORBELL_TYPE; ///@brief 外接门铃配置, 对应枚举 NET_EM_CFG_DOORBELL_EXTERNALDOORBELL typedef struct tagNET_CFG_DOORBELL_EXTERNALDOORBELL { DWORD dwSize; // 结构体大小 NET_EM_DOORBELL_TYPE emDoorBellType; // 门铃类型 BOOL bEnable; // 外接门铃使能 }NET_CFG_DOORBELL_EXTERNALDOORBELL; ///@brief 安装模式 typedef enum tagEM_MOUNT_MODE { EM_MOUNT_MODE_UNKNOWN, EM_MOUNT_MODE_INDOOR, // 室内 EM_MOUNT_MODE_OUTDOOR, // 室外 }EM_MOUNT_MODE; ///@brief Wifi设备安装配置, 对应枚举 NET_EM_CFG_WIFI_INSTALL_PARAM typedef struct tagNET_CFG_WIFI_INSTALL_PARAM { DWORD dwSize; // 结构体大小 char szCountry[4]; // 国家/地区, 符合ISO3166规范 EM_MOUNT_MODE emMountMode; // 安装模式 BYTE byReserved[4]; // 字节对齐, 非保留字节 }NET_CFG_WIFI_INSTALL_PARAM; ///@brief 键盘显示器鼠标节点信息 typedef struct tagNET_CFG_KVM_MAIN_NODE_INFO { int nLevel; // 等级,值越大等级越低,可根据等级来做主节点选择优先级。设备间值不能冲突 char szAddress[128]; // KVM输出节点IP地址 BYTE byReserved[128]; // 保留字节 } NET_CFG_KVM_MAIN_NODE_INFO; ///@brief 键盘显示器鼠标节点配置,对应枚举NET_EM_CFG_KVM_MAIN_NODE typedef struct tagNET_CFG_KVM_MAIN_NODE { DWORD dwSize; // 结构体大小 UINT nMainNodeNum; // 节点个数 NET_CFG_KVM_MAIN_NODE_INFO stuMainNodeInfo[1024]; // 键盘显示器鼠标节点信息 } NET_CFG_KVM_MAIN_NODE; ///@brief 热键功能名称 typedef enum tagNET_EM_KVM_HOTKEY_FUNCTION_NAME { EM_KVM_HOTKEY_FUNCTION_NAME_UNKNOWN, // 未知 EM_KVM_HOTKEY_FUNCTION_NAME_SPLITMENU, // 分屏菜单调取 EM_KVM_HOTKEY_FUNCTION_NAME_GETMENU, // 接管菜单调取 EM_KVM_HOTKEY_FUNCTION_NAME_PUSHMENU, // 推送菜单调取 EM_KVM_HOTKEY_FUNCTION_NAME_BASEINFOMENU // 基本信息菜单调取 }EM_KVM_HOTKEY_FUNCTION_NAME; ///@brief 键盘显示器鼠标热键信息 typedef struct tagNET_CFG_KVM_HOT_KEY_INFO { int nKeyNum; // 热键元素个数 int szKey[3]; // 热键 EM_KVM_HOTKEY_FUNCTION_NAME emFuncName; // 热键功能名称 BYTE byReserved[128]; // 保留字节 }NET_CFG_KVM_HOT_KEY_INFO; ///@brief 键盘显示器鼠标热键配置,对应枚举NET_EM_CFG_KVM_HOT_KEY typedef struct tagNET_CFG_KVM_HOT_KEY { DWORD dwSize; // 结构体大小 int nHotKeyNum; // 热键数量 NET_CFG_KVM_HOT_KEY_INFO stuHotKeyInfo[64]; // 热键信息 }NET_CFG_KVM_HOT_KEY; ///@brief 键盘鼠标加密配置,对应NET_EM_CFG_KM_TRANS_ENCRYPT typedef struct tagNET_CFG_KM_TRANS_ENCRYPT { DWORD dwSize; // 结构体大小 BOOL bEnable; // 鼠标键盘消息加密传输开关; true:使能,false:不使能 }NET_CFG_KM_TRANS_ENCRYPT; ///@brief 视频输出通道信息 typedef struct tagNET_VIDEO_OUTPUT_CHANNEL_INFO { char szName[32]; // 通道名称 BYTE byReserved[256]; // 保留字节 } NET_VIDEO_OUTPUT_CHANNEL_INFO; ///@brief 槽位信息 typedef struct tagNET_TV_CARD_INFO { BOOL bExist; // 解码卡是否存在 int nVideoOutputChannels; // 视频输出通道数量 int nVideoOutputChannelsRange[2]; // 视频输出逻辑通道号起止值 NET_VIDEO_OUTPUT_CHANNEL_INFO stuVideoOutput[24]; // 视频输出通道信息 BYTE byReserved[256]; // 保留字节 } NET_TV_CARD_INFO; ///@brief 连接设备的协议类型 typedef enum tagEM_DEVICE_PROTOCOL_TYPE { EM_DEVICE_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_DEVICE_PROTOCOL_TYPE_PRIVATE, // 私有协议 } EM_DEVICE_PROTOCOL_TYPE; ///@brief 网络解码设备信息 typedef struct tagNET_CFG_NET_TV_DEVICE_INFO { char szNodeName[64]; // 节点名称 char szUserName[128]; // 用户名 char szPassword[128]; // 密码 char szName[32]; // 机器名称 char szAddress[40]; // 设备地址或域名 UINT nPort; // 端口号 int nCardNum; // 槽位数量 NET_TV_CARD_INFO stuCardInfo[21]; // 槽位信息 BOOL bEnable; // 设备是否启用 EM_DEVICE_PROTOCOL_TYPE emProtocolType; // 连接设备的协议类型 BYTE byReserved[252]; // 保留字节 } NET_CFG_NET_TV_DEVICE_INFO; ///@brief 网络解码设备配置, 对应 NET_EM_CFG_NET_TV_DEVICE typedef struct tagNET_CFG_NET_TV_DEVICE { DWORD dwSize; // 结构体大小 int nDeviceNum; // 设备数量 BYTE byReserved[4]; // 对齐 int nMaxDeviceNum; // 设备最大数量 NET_CFG_NET_TV_DEVICE_INFO* pstuNetTvDevice; // 网络解码设备信息 } NET_CFG_NET_TV_DEVICE; ///@brief 热成像机芯维护配置, 对应枚举 NET_EM_CFG_SENSOR_MAINTAIN typedef struct tagNET_CFG_SENSOR_MAINTAIN { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否启用维护功能, 必填 DH_TSECT stuTimeSection[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 时间段,是一个二维数组,前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段。 }NET_CFG_SENSOR_MAINTAIN; ///@brief 激光测距俯仰角限制, 对应枚举 NET_EM_CFG_TILT_LIMIT typedef struct tagNET_CFG_TILT_LIMIT { DWORD dwSize; // 结构体大小 int nUp; // 上俯仰角,精度0.1, 实际值已扩大10倍,范围[0,900] int nDown; // 下俯仰角,精度0.1, 实际值已扩大10倍,范围[-900,0] BYTE byReserve[4]; // 保留字节,用于字节对齐 }NET_CFG_TILT_LIMIT; ///@brief 门禁目标识别相关配置 对应枚举 NET_EM_CFG_ACCESS_FACE_RECOGNITION typedef struct tagNET_CFG_ACS_FACE_RECOGNITION_SCHEME { DWORD dwSize; // 结构体大小 UINT nMode; // 目标识别模式; 0:前智能目标识别, 1:后智能目标识别, 2:前智能目标失败后到后智能目标识别 }NET_CFG_ACS_FACE_RECOGNITION_SCHEME; ///@brief 广告禁用时段配置信息 typedef struct tagNET_CFG_FORBIDDEN_ADVERT_PLAY_INFO { BOOL bEnable; // 时间段使能 NET_TIME_EX1 stuBeginTime; // 广告禁用开始时间 NET_TIME_EX1 stuEndTime; // 广告结束开始时间 BYTE reserved[256]; // 保留字节 } NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO; ///@brief 广告禁用时段配置 对应枚举 NET_EM_CFG_FORBIDDEN_ADVERT_PLAY typedef struct tagNET_CFG_FORBIDDEN_ADVERT_PLAY { DWORD dwSize; // 结构体大小 UINT nAdvertNum; // 广告配置时间段个数 NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO stuAdvertInfo[8]; // 广告禁用时段配置信息 } NET_CFG_FORBIDDEN_ADVERT_PLAY; ///@brief 门禁设备当前模式配置 对应枚举 NET_EM_CFG_BGY_CUSTOMERCFG typedef struct tagNET_CFG_BGY_CUSTOMERCFG { DWORD dwSize; // 结构体大小 EM_PLAY_WITH_MODE emModeType; // 模式类别 } NET_CFG_BGY_CUSTOMERCFG; ///@brief 按键对应的信息配置信息 typedef struct tagNET_CFG_ACCESSCTL_KEYBINDINGINFOCFG_INFO { char szBindingInfo[128]; // 按键绑定的信息 UINT nKey; // 对应的按键号,范围0-9 BYTE byReserved[508]; // 预留字节 } NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG_INFO; ///@brief 不同数字按钮对应的信息配置 typedef struct tagNET_CFG_ACCESSCTL_KEYBINDINGINFOCFG { DWORD dwSize; // 结构体大小 UINT nKeyNum; // 按键个数 NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG_INFO stuKeyBindingInfo[10]; // 按键对应的信息配置信息 } NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG; ///@brief 主机、从机设置配置信息 typedef struct tagNET_CFG_HOST_DEVICE { DWORD dwSize; // 结构体大小 UINT nMode; // 进出入口类型: 0-进口 1-出口 BOOL bHostEnable; // 当前设备是否作为主机的使能 char szHostIP[40]; // 主机的设备IP }NET_CFG_HOST_DEVICE; ///@brief 默认组合通道绑定模式 typedef enum tagEM_COMPOSIT_CHANNEL_BIND_MODE { EM_COMPOSIT_CHANNEL_BIND_MODE_UNKNOWN, // 未知 EM_COMPOSIT_CHANNEL_BIND_MODE_AUTOMATIC, // 自动 EM_COMPOSIT_CHANNEL_BIND_MODE_SEMIAUTOMATIC, // 半自动 EM_COMPOSIT_CHANNEL_BIND_MODE_MANUAL, // 手动 } EM_COMPOSIT_CHANNEL_BIND_MODE; ///@brief 拉流使能 typedef enum tagEM_CAN_START_STREAM { EM_CAN_START_STREAM_UNKNOWN = -1, // 未知 EM_CAN_START_STREAM_OFF, // 不拉流 EM_CAN_START_STREAM_ON, // 拉流 } EM_CAN_START_STREAM; ///@brief 录像使能 typedef enum tagEM_IS_RECORD { EM_IS_RECORD_UNKNOWN, // 未知 EM_IS_RECORD_ON, // 录像 EM_IS_RECORD_OFF, // 不录像 } EM_IS_RECORD; ///@brief 录播默认配置 typedef struct tagNET_CFG_COURSE_RECORD_DEFAULT_CONFIG { DWORD dwSize; // 结构体大小 UINT nCompositChannelMode; // 组合通道默认模式; 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, 小于0: 自定义模式 int nCanStartStreamNum; // 能否被拉流逻辑通道数 int nIsRecordNum; // 是否要录像逻辑通道号数 EM_CAN_START_STREAM emCanStartStream[64]; // 能否被拉流 EM_IS_RECORD emIsRecord[64]; // 是否要录像 EM_COMPOSIT_CHANNEL_BIND_MODE emCompositChannelBindMode; // 默认组合通道绑定模式 BYTE byReserved[4]; // 保留字节 }NET_CFG_COURSE_RECORD_DEFAULT_CONFIG; ///@brief 录像上传类型 typedef enum tagEM_COURSE_RECORD_UPLOAD_TYPE { EM_COURSE_RECORD_UPLOAD_TYPE_TIMING, // 定时 EM_COURSE_RECORD_UPLOAD_TYPE_IMMEDIATE, // 即时 } EM_COURSE_RECORD_UPLOAD_TYPE; ///@brief 录像上传模式信息 typedef struct tagNET_COURSE_RECORD_UPLOAD_METHOD { EM_COURSE_RECORD_UPLOAD_TYPE emUploadType; // 录像上传类型 NET_TIME_EX1 stuUploadTime; // 上传时间, 定时上传关注, 即时上传可不关注 UINT nFilePiece; // 分片大小,单位: MB(0表示不分片) UINT nFileMode; // 按配置值分文件,单位: MB,如配置500,即按照500MB一个文件分文件(0表示不分文件,一堂课一个文件) int nUploadValidTime; // 上传录像有效期,-1表示永久有效,等于0表示停止正在上传的任务,大于0表示有效天数 NET_TIME_EX1 stuUploadEndTime; // 上传结束时间, 定时上传关注,立即上传可不关注 BYTE byReserved[1012]; // 保留字节 } NET_COURSE_RECORD_UPLOAD_METHOD; ///@brief 上传地址设备方式 typedef enum tagEM_COURSE_RECORD_UPLOAD_PATH_DEVICE_TYPE { EM_COURSE_RECORD_UPLOAD_PATH_DEVICE_TYPE_COLONY, // 集群 EM_COURSE_RECORD_UPLOAD_PATH_DEVICE_TYPE_STANDALONE, // 单机 } EM_COURSE_RECORD_UPLOAD_PATH_DEVICE_TYPE; ///@brief 录像上传路径信息 typedef struct tagNET_COURSE_RECORD_UPLOAD_PATH { EM_COURSE_RECORD_UPLOAD_PATH_DEVICE_TYPE emDeviceType; // 上传地址设备方式 int nDevicePathNum; // 上传地址个数 char szDevicePath[16][256]; // 上传地址集合 BYTE byReserved[1024]; // 保留字节 } NET_COURSE_RECORD_UPLOAD_PATH; ///@brief 鉴权类型 typedef enum tagEM_ENCRY_TYPE { EM_ENCRY_TYPE_RSA, // RSA EM_ENCRY_TYPE_MD5, // MD5 } EM_ENCRY_TYPE; ///@brief 录像上传鉴权信息 typedef struct tagNET_COURSE_RECORD_UPLOAD_TOKEN { BOOL bTokenCheck; // 是否需要鉴权 int nTokenPathNum; // 临时Token地址个数 char szTokenPath[16][256]; // 临时Token地址, 不鉴权不需要 char szPlatformFlag[64]; // 设备在平台中的标识 char szUserName[32]; // 设备添加到平台中的用户名 char szEncryptUri[256]; // 加密公钥获取路径 char szAccessUri[256]; // 临时token获取路径 EM_ENCRY_TYPE emEncryType; // 鉴权类型 BYTE byReserved[1020]; // 保留字节 } NET_COURSE_RECORD_UPLOAD_TOKEN; ///@brief 录像视频格式 typedef enum tagEM_RECORD_FILE_TYPE { EM_RECORD_FILE_TYPE_UNKNOWN, // 未知 EM_RECORD_FILE_TYPE_MP4, // mp4 EM_RECORD_FILE_TYPE_DAV, // dav } EM_RECORD_FILE_TYPE; ///@brief 录播设备支持录像文件上传配置 typedef struct tagNET_CFG_COURSE_RECORD_UPLOAD { DWORD dwSize; // 结构体大小 EM_RECORD_FILE_TYPE emFileType; // 上传录像视频格式 NET_COURSE_RECORD_UPLOAD_METHOD stuUploadMethod; // 录像上传模式信息 NET_COURSE_RECORD_UPLOAD_PATH stuUploadPath; // 录像上传路径信息 NET_COURSE_RECORD_UPLOAD_TOKEN stuUploadToken; // 录像上传鉴权信息 }NET_CFG_COURSE_RECORD_UPLOAD; ///@brief 录像类型 typedef enum tagEM_SUB_MODE { EM_SUB_UNKNOWN = -1, // 未知 EM_SUB_NORECORD, // 不录像 EM_SUB_NORMAL_COTINUE_RECORD, // 普通连续录像 EM_SUB_EVENT_TRIGGER_RECORD, // 事件触发录像 EM_SUB_PLAN_REGULAR_RECORD, // 计划定时录像 EM_SUB_EVENT_TRIGGER_AND_PLAN_REGULAR_RECORD, // 事件触发录像和定时计划录像 }EM_SUB_MODE; ///@brief IVSS产品首次提交,录像计划扩展配置,跟StorageScheduleGlobal配置关联。(NET_EM_CFG_COURSE_RECORD_EX) typedef struct tagNET_CFG_COURSE_RECORD_EX { DWORD dwSize; // 结构体大小 BOOL bIsGlobal; // 是否继承全局的存储计划配置(StorageScheduleGlobal),true表示继承,false表示不继承 UINT nPreRecord; // 预录时间,为零时表示关闭,最大预录时间从RocordEX中获取MaxPreRecordTime,单位秒 BOOL bEnable; // 录像断网续传功能使能,是否支持从Record能力集中取得 UINT nMaxRecordTime; // 最长的上传录像时间,如果断网时间小于这个值 就传断网时间内的录像,如果大于这个值就传这么长时间内的录像,单位:秒 UINT nRecordLatch; // 事件发生后的录像延时时间范围[1,300] EM_SUB_MODE emSubMode; // 录像类型 UINT nTimeSectionID; // 事件类型对应的日程ID UINT nManulRecordLength; // 手动录像打包时长,单位分钟范围[1,30] UINT nFileHoldTime; // 设置文件的保留天数,超过时间的将被删除。0~365,天为单位,0表示永不过期。 }NET_CFG_COURSE_RECORD_EX; ///@brief 梯控主机全局配置 typedef struct tagNET_CFG_LIFTCONTROL_OPTION { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能情况,TRUE:使能;FALSE:未使能 }NET_CFG_LIFTCONTROL_OPTION; ///@brief 健康码使能 typedef struct tagNET_CFG_HEALTH_CODE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 健康码使能,TRUE:使能;FALSE:未使能 BOOL bOfflineEnable; // 健康码离线使能,TRUE:使能;FALSE:未使能 BOOL bCheckHealthCode; // 核验健康码功能使能 BOOL bHSVisible; // 核酸显示使能 BOOL bHSCheckEnable; // 核验核酸功能使能 UINT nHSTimeout; // 核酸结果超时时间(小时) 0 默认不处理 UINT nHSCollectTimeout; // 核酸采集超时时间(小时) 0 默认不处理 BOOL bVaccineVisible; // 疫苗显示使能 BOOL bVaccineCheckEnable; // 疫苗校验使能 BOOL bTravelCodeVisible; // 行程码显示使能 BOOL bTravelCodeCheck; // 行程码校验使能 BOOL bVaccineIntensifyVisible; // 加强针状态显示 UINT nOFFLineGreenCodeMethod; // 健康码鉴权方式组合 0:无组合方式 1:健康码单独存在 2:与现有鉴权方式组合,健康码鉴权优先 UINT nCodeFlushTimeout; // 二维码过期时间(秒) UINT nHealthQueryTimeout; // 健康码请求超时时间(秒); 默认2秒 BOOL bRedPermit; // 红码禁止通行使能 BOOL bYellowPermit; // 黄码禁止通行使能 BOOL bQueryTimeoutPermit; // 健康码请求超时禁止通行使能 }NET_CFG_HEALTH_CODE_INFO; ///@brief 继电器状态 typedef enum tagEM_RELAY_STATE_TYPE { EM_RELAY_STATE_TYPE_UNKNOWN = -1, // 未知 EM_RELAY_STATE_TYPE_CLOSE, // 关 EM_RELAY_STATE_TYPE_OPEN, // 开 EM_RELAY_STATE_TYPE_NO_SUPPORT = 255, // 不支持 }EM_RELAY_STATE_TYPE; ///@brief 继电器状态配置(NET_EM_CFG_RELAY_STATE) typedef struct tagNET_CFG_RELAY_STATE_INFO { DWORD dwSize; // 结构体大小 int nAddress; // 继电器地址 EM_RELAY_STATE_TYPE emState; // 继电器状态 BYTE byReserved[4]; // 字节对齐 }NET_CFG_RELAY_STATE_INFO; ///@brief OSD 方案显示内容 typedef struct tagNET_CFG_OSD_PLAN_VIDEOWIDGET_INFO { char szChannelTitle[256]; // 通道名称 BYTE byReserved[1024]; // 预留字节 }NET_CFG_OSD_PLAN_VIDEOWIDGET_INFO; ///@brief OSD 单个方案计划配置 typedef struct tagNET_CFG_OSD_PLAN_INFO { BOOL bIsUsed; // 方案使能 NET_TIME stuTime; // 方案切换时间 char szName[32]; // 方案名称 int nValidVideoWidget; // 设置或者获取的有效stuVideoWidgets个数 NET_CFG_OSD_PLAN_VIDEOWIDGET_INFO stuVideoWidgets[512]; // 显示内容, 数组下标对应通道号, 最大支持512个通道 BYTE byReserved[1024]; // 预留字节 }NET_CFG_OSD_PLAN_INFO; ///@brief OSD 方案计划配置 对应枚举 NET_EM_CFG_OSD_PLAN typedef struct tagNET_CFG_OSD_PLANS_INFO { DWORD dwSize; // 结构体大小 int nMaxPlanNum; // 设置或者获取的有效方案计划个数 int nRetPlanNum; // 返回的有效方案计划个数 NET_CFG_OSD_PLAN_INFO *pstuPlansInfo; // 方案信息, 内存由用户申请释放 }NET_CFG_OSD_PLANS_INFO; ///@brief 平台下发天气情况到室内机, 对应枚举 NET_EM_CFG_ENVIRONMENT_DETECT typedef struct tagNET_CFG_ENVIRONMENT_DETECT_INFO { DWORD dwSize; // 结构体大小 int nTemperature; // 实时温度,单位是摄氏度 int nHumidity; // 相对湿度,单位是% int nPM25; // PM2.5数值,单位 微克每立方米 }NET_CFG_ENVIRONMENT_DETECT_INFO; ///@brief 门禁系统改造工程项目 二维码对接、人员开门时间配置定制、二维码密钥卡号定制 对应枚举 NET_EM_CFG_AC_GZYD typedef struct tagNET_CFG_AC_GZYD_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能 UINT nInterval; // 时间间隔 UINT nQRLastTime; // 二维码有效时间 char szUrl0[256]; // 请求地址,注册地址 char szUrl1[256]; // 请求地址,心跳地址 char szDeviceID[32]; // 设备编号 char szQRCONTENT[256]; // 二维码内容 char szReserved[1024]; // 预留字节 }NET_CFG_AC_GZYD_INFO; ///@brief 定制单片机兼容cpu卡和ic卡功能切换 对应枚举 NET_EM_CFG_CARD_MNG typedef struct tagNET_CFG_CARD_MNG_INFO { DWORD dwSize; // 结构体大小 UINT nType; // CPU卡 = 1, IC卡 = 2, char szReserved[1024]; // 预留字节 }NET_CFG_CARD_MNG_INFO; ///@brief 工作模式 typedef enum tagEM_WORK_MODE { EM_WORK_MODE_UNKNOWN = -1, // 未知 EM_WORK_MODE_ENERGY_CONSERVATION, // 节能模式 EM_WORK_MODE_ORDINARY, // 普通模式 EM_WORK_MODE_ULTRA, // Ultra模式 EM_WORK_MODE_CUSTOM, // 自定义模式 EM_WORK_MODE_CONTINUOUS_RECORDING, // 连续录像模式 EM_WORK_MODE_VLOG, // Vlog录像模式 }EM_WORK_MODE; ///@brief 自定义模式有效 typedef struct tagNET_WORK_PARAM { UINT nPirRecordTime; // pir录像时长,0表示无限制,取值范围[10,60]秒 UINT nPirPeriod; // pir触发时间间隔,取值范围[0,60]秒 char szResolution[16]; // 分辨率名称 int nWhiteLight; // 是否联动白光,0:不联动 1:联动 char szReserved[128]; // 预留字节 }NET_WORK_PARAM; ///@brief 工作模式 typedef struct tagNET_WORK_MODE { EM_WORK_MODE emMode; // 工作模式 NET_WORK_PARAM stuModeParam; // 自定义模式有效 char szReserved[128]; // 预留字节 }NET_WORK_MODE; ///@brief IPC配套APP显示工作模式 对应枚举 NET_EM_CFG_WORK_MODE typedef struct tagNET_CFG_WORK_MODE_INFO { DWORD dwSize; // 结构体大小 int nWorkModeNum; // 工作模式个数 NET_WORK_MODE stuWorkMode[16]; // 工作模式 下标视频通道号 }NET_CFG_WORK_MODE_INFO; ///@brief 识别USB功能配置, 对应枚举NET_EM_CFG_USB_FLASH typedef struct tagNET_CFG_USB_FLASH { DWORD dwSize; // 结构体大小 BOOL bDetectEnable; //是否支持识别USB Flash, TRUE:支持,FALSE:不支持 }NET_CFG_USB_FLASH; ///@brief 设备端是否连接显示器配置, 对应枚举NET_EM_CFG_DISPLAY_CONNECT typedef struct tagNET_CFG_DISPLAY_CONNECT { DWORD dwSize; // 结构体大小 int nHdmiStatusSize; // 连接HDMI数量 BOOL bHdmiStatus[8]; // 设备是否连接HDMI, TRUE:已经连接,FALSE:未连接 }NET_CFG_DISPLAY_CONNECT; ///@brief 校准源信息 typedef struct tagNET_REGULATOR_INFO { UINT nDistance; // 校准源距离, 单位cm UINT nTemperature; // 校准源温度, 精度0.1, 放大10倍 NET_RECT stRect; // 校准源矩形位置取值[0,8191] UINT nHeight; // 校准源高度, 单位cm int nDiffTemperature; // 温度偏差值, 精度0.01, 放大100倍 int nEmissivity; // 黑体辐射率,精度0.01,放大100倍,范围50-100 int nBlackBodyCorrectTemp; // 修正黑体温度,精度0.1,放大10倍 BYTE byReserve[24]; // 保留字节,用于字节对齐 } NET_REGULATOR_INFO; ///@brief 人体测温标准黑体配置, 对应枚举 NET_EM_CFG_RADIO_REGULATOR typedef struct tagNET_CFG_RADIO_REGULATOR { DWORD dwSize; // 结构体大小 BOOL bEnable; // 标准黑体配置使能 UINT nPresetId; // 预置点编号, 对于无预置点设备为0 UINT nCamerHeight; // 热成像相机安装高度, 单位cm int nCamerAngle; // 相机安装角度, 精度0.1, 放大10倍 NET_REGULATOR_INFO stRegulatorInfo; // 校准源信息 } NET_CFG_RADIO_REGULATOR; ///@brief 人体测温标定信息,对应枚举 NET_EM_CFG_HUMAN_THERM_CALIBRATE typedef struct tagNET_CFG_HUMAN_THERM_CALIBRATE_INFO { DWORD dwSize; // 结构体大小 int nThermBoxHeight; // 人体测温标定框高缩放百分比,范围1~100 int nThermBoxWidth; // 人体测温标定框宽缩放百分比,范围1~100 int nThermCenterX; // 测温框中心坐标x,范围:-1024~1024 int nThermCenterY; // 测温框中心坐标y,范围:-1024~1024 }NET_CFG_HUMAN_THERM_CALLBRATE_INFO; ///@brief 开关控制 typedef enum tagEM_SWITCH_CONTROL_TYPE { EM_SWITCH_CONTROL_TYPE_UNKNOWN = -1, // 未知 EM_SWITCH_CONTROL_TYPE_OFF, // 关 EM_SWITCH_CONTROL_TYPE_ON, // 开 }EM_SWITCH_CONTROL_TYPE; ///@brief 测距模式 typedef enum tagEM_RANGE_MODE { EM_RANGE_MODE_UNKNOWN=-1, // 未知 EM_RANGE_MODE_WOLF, // 狼 EM_RANGE_MODE_RABBIT, // 兔 EM_RANGE_MODE_PEOPLE, // 人 EM_RANGE_MODE_OTHER, // 自定义 }EM_RANGE_MODE; ///@brief 目标检测敏感度 typedef enum tagEM_TARGET_DETECT_SENSITIVITY { EM_TARGET_DETECT_SENSITIVITY_UNKNOWN = -1, // 未知 EM_TARGET_DETECT_SENSITIVITY_OFF, // 关 EM_TARGET_DETECT_SENSITIVITY_LOW, // 低 EM_TARGET_DETECT_SENSITIVITY_MEDIUM, // 中 EM_TARGET_DETECT_SENSITIVITY_HIGH, // 高 }EM_TARGET_DETECT_SENSITIVITY; ///@brief 图像参数 typedef enum tagEM_SCENE_MODE { EM_SCENE_MODE_UNKNOWN = -1, // 未知 EM_SCENE_MODE_LOW, // 低 EM_SCENE_MODE_HIGH, // 高 EM_SCENE_MODE_SELF_ADAPTION, // 自适应 }EM_SCENE_MODE; ///@brief 屏幕切换开关 typedef enum tagEM_SCREEN_SWITCH_TYPE { EM_SCREEN_SWITCH_TYPE_UNKNOWN = -1, // 未知 EM_SCREEN_SWITCH_TYPE_LCOS, // LCOS屏(目镜) EM_SCREEN_SWITCH_TYPE_P, // P制外接屏 EM_SCREEN_SWITCH_TYPE_N, // N制外接屏 }EM_SCREEN_SWITCH_TYPE; ///@brief 距离单位 typedef enum tagEM_RANGE_UNIT { EM_RANGE_UNIT_UNKOWN=-1, // 未知 EM_RANGE_UNIT_METER, // 米 EM_RANGE_UNIT_FOOT, // 英尺 }EM_RANGE_UNIT; ///@brief 场景模式 typedef enum tagEM_SCENE_STYLE { EM_SCENE_STYLE_UNKOWN=-1, // 未知 EM_SCENE_STYLE_STANDARD, // 标准模式 EM_SCENE_STYLE_JUNGLE, // 丛林模式 }EM_SCENE_STYLE; ///@brief 光标类型 typedef enum tagEM_CURSOR_TYPE { EM_CURSOR_TYPE_UNKOWN=-1, // 未知 EM_CURSOR_TYPE_0, // 类型0 EM_CURSOR_TYPE_1, // 类型1 EM_CURSOR_TYPE_2, // 类型2 EM_CURSOR_TYPE_3, // 类型3 EM_CURSOR_TYPE_4, // 类型4 EM_CURSOR_TYPE_5, // 类型5 EM_CURSOR_TYPE_6, // 类型6 EM_CURSOR_TYPE_7, // 类型7 EM_CURSOR_TYPE_8, // 类型8 EM_CURSOR_TYPE_9, // 类型9 EM_CURSOR_TYPE_10, // 类型10 EM_CURSOR_TYPE_11, // 类型11 }EM_CURSOR_TYPE; ///@brief 光标标定方案 typedef enum tagEM_CURSOR_SCHEME { EM_CURSOR_SCHEME_UNKOWN=-1, // 未知 EM_CURSOR_SCHEME_0, // 标定方案0 EM_CURSOR_SCHEME_1, // 标定方案1 EM_CURSOR_SCHEME_2, // 标定方案2 EM_CURSOR_SCHEME_3, // 标定方案3 EM_CURSOR_SCHEME_4, // 标定方案4 EM_CURSOR_SCHEME_5, // 标定方案5 }EM_CURSOR_SCHEME; ///@brief 光标距离方案 typedef enum tagEM_DISTANCE_SCHEME { EM_DISTANCE_SCHEME_UNKOWN=-1, // 未知 EM_DISTANCE_SCHEME_0, // 距离方案0 EM_DISTANCE_SCHEME_1, // 距离方案1 EM_DISTANCE_SCHEME_2, // 距离方案2 EM_DISTANCE_SCHEME_3, // 距离方案3 EM_DISTANCE_SCHEME_4, // 距离方案4 EM_DISTANCE_SCHEME_5, // 距离方案5 }EM_DISTANCE_SCHEME; ///@brief 望远镜配置,对应的枚举 NET_EM_CFG_TELESCOPE_OPTIONS typedef struct tagNET_CFG_TELESCOPE_OPTIONS_INFO { DWORD dwSize; // 结构体大小 BOOL bLaserCtrl; // 激光指示控制 TRUE:开; FALSE:关) BOOL bRangeCtrl; // 测距开关控制 TRUE:开; FALSE:关) EM_RANGE_MODE emRangeMode; // 测距模式 BOOL bOsdSet; // OSD设置.显示/隐藏(TRUE:显示;FALSE:隐藏) EM_TARGET_DETECT_SENSITIVITY emTargetChk; // 目标检测 EM_TARGET_DETECT_SENSITIVITY emFireChk; // 火点检测 EM_SCENE_MODE emSceneMode; // 图像参数设置 int nAutoShutdown; // 自动关机时间 单位:分钟(0:关闭自动关机功能) int nAutoSleep; // 自动休眠时间 单位:分钟(0:关闭自动休眠功能) EM_SCREEN_SWITCH_TYPE emScreenSwitch; // 屏幕切换开关 BOOL bWIFICtrl; // WIFI开关:(TRUE:开;FALSE:关) EM_SWITCH_CONTROL_TYPE emHotColdPoint; // 冷热点显示开关 EM_RANGE_UNIT emRangeUnit; // 距离单位 EM_SWITCH_CONTROL_TYPE emBuzzerCtrl; // 蜂鸣器开关 int nCustomHeight; // 待测距物体自定义高度(0.1~999.9米/英尺),乘10下发(1~9999). BOOL bLogoShow; // LOGO叠加开关: (true: ON; false:OFF) BOOL bAutoRecord; // 自动录像开关(检测到声音或者检测到冲击后自动录像):(true: ON; false:OFF) EM_SCENE_STYLE emSceneStyle; // 场景模式 EM_CURSOR_TYPE emCursorStyle; // 光标类型 EM_CURSOR_SCHEME emCursorScheme; // 光标标定方案 EM_DISTANCE_SCHEME emDistanceScheme; // 光标距离方案 UINT nCalibrateDistance; // 光标标定距离量: 100-99999cm 单位:厘米 UINT nCalibrateOffset[2]; // 光标标定偏移量, 二维空间点类型, 第一个元素表示点的x坐标; 第二个元素表示点的y坐标; }NET_CFG_TELESCOPE_OPTIONS_INFO; ///@brief 环境温度信息配置(热成像内部配置,只可读,不可设),对应的枚举 NET_EM_CFG_ENVIRONMENT_THERM_INFO typedef struct tagNET_CFG_ENVIRONMENT_THERM_INFO { DWORD dwSize; // 结构体大小 int nEnvironmentTemp; // 环境温度,精度0.01,实际值扩大100倍,只可读,不可设 NET_TIME stuLastEnvSaveTime; // 环境温度最后一次保存的时间,只可读,不可设 UINT nEnvSaveCnt; // 环境温度保存的次数,只可读,不可设 BYTE byReserved[4]; // 字节对齐 }NET_CFG_ENVIRONMENT_THERM_INFO; ///@brief 每个屏蔽区的测温屏蔽区配置信息 typedef struct tagTHERMOMETRY_SHIELD_INFO { BOOL bEnable; // 屏蔽使能, TRUE开启, FALSE关闭 int nShieldId; // 屏蔽区编号 char szName[64]; // 自定义名称 NET_RECT stuRect; // 自定义名称 int nPresetId; // 预置点编号 char szReserved[128]; // 预留字段 }THERMOMETRY_SHIELD_INFO; ///@brief 屏蔽区的测温屏蔽区配置信息 typedef struct tagNET_CFG_THERMOMETRY_SHIELD_INFO { DWORD dwSize; // 结构体大小, 必填项 UINT nRealInfoNumOfEachChennel; // 1 获取配置时,每个通道实际返回的测温屏蔽区配置个数 // 2 设置配置时,设置的配置个数 THERMOMETRY_SHIELD_INFO stuThermometryShieldInfo[12]; // 每个通道的测温屏蔽区配置信息,每个通道最多支持12个屏蔽区 }NET_CFG_THERMOMETRY_SHIELD_INFO; ///@brief 待机灯光颜色 typedef enum tagEM_EAS_LED_COLOR { EM_EAS_LED_COLOR_UNKOWN, // 未知 EM_EAS_LED_COLOR_WHITE=1, // 白色 EM_EAS_LED_COLOR_BLUE, // 蓝色 EM_EAS_LED_COLOR_GREEN, // 绿色 EM_EAS_LED_COLOR_PURPLE, // 紫色 EM_EAS_LED_COLOR_PINK, // 粉色 }EM_EAS_LED_COLOR; ///@brief 各通道报警参数 typedef struct tagNET_EAS_ALARM_PARAMETER { UINT nSnr; // 信噪比,0~50 UINT nAmp; // 幅度,0~300 UINT nStd; // 离散度,0~1500 UINT nRms; // 有效度,0~1500 char szReserved[64]; // 预留字节 }NET_EAS_ALARM_PARAMETER; ///@brief EAS设备配置信息, 对应配置枚举 NET_EM_CFG_EAS_SYSTEM_CONFIG typedef struct tagNET_CFG_EAS_SYSTEM_CONFIG_INFO { DWORD dwSize; // 结构体大小, 必填项 UINT nLabelResident; // 标签驻留提醒开关状态,0 -- 关闭 1-- 开启 UINT nInterfere; // 恶意干扰提醒开关状态,0-- 关闭 1-- 开启 UINT nAlarmMode; // 报警模式 0 -- 报警模式1, 1 -- 报警模式2 注:报警模式1时,使用AlarmThreshold字段 ,报警模式2时,使用AlarmParameter字段 EM_EAS_LED_COLOR emLedColor; // 待机灯光颜色 int nAlarmThresholdNum; // 各通道报警门限数组大小 UINT nAlarmThreshold[64]; // 各通道报警门限,元素值:0~5, 元素0 – 检测通道0, 元素1 – 检测通道1,以此类推 int nAlarmParameterNum; // 各通道报警参数数组实际有效个数 NET_EAS_ALARM_PARAMETER stuAlarmParameter[64]; // 各通道报警参数 }NET_CFG_EAS_SYSTEM_CONFIG_INFO; ///@brief EAS设备天线开关, 对应配置枚举 NET_EM_CFG_EAS_COIL_SWITH typedef struct tagNET_CFG_EAS_COIL_SWITH_INFO { DWORD dwSize; // 结构体大小, 必填项 int nTransmitCoilEnableNum; // 发射机天线开关状态数组实际有效个数 UINT nTransmitCoilEnable[64]; // 发射机天线开关状态, 元素0 – 检测通道0, 元素1 – 检测通道1, 元素2 – 检测通道2,->以此类推, 元素值:0 -- 关闭 1 -- 开启 int nReceiverCoilEnableNum; // 接收机天线开关状态数组实际有效个数 UINT nReceiverCoilEnable[64]; // 接收机天线开关状态, 元素0 – 检测通道0, 元素1 – 检测通道1, 元素2 – 检测通道2,->以此类推, 元素值:0 -- 关闭 1 -- 开启 }NET_CFG_EAS_COIL_SWITH_INFO; ///@brief 每个通道的RTMP信息 typedef struct tagNET_CHANNEL_RTMP_INFO { BOOL bEnable; // 是否使能 UINT nChannel; // 通道号(URL中的Channel) char szUrl[512]; // RTMP连接URL BYTE byReserved[1024]; // 预留字段 }NET_CHANNEL_RTMP_INFO; ///@brief RTMP 配置 typedef struct tagNET_CFG_RTMP_INFO { DWORD dwSize; // 结构体大小,赋值为sizeof(NET_CFG_RTMP_INFO) BOOL bEnable; // RTMP配置是否开启 char szAddr[256]; // RTMP服务器地址 UINT nPort; // RTMP服务器端口 BYTE byReserved[4]; // 字节对齐 char szCustomPath[256]; // 定制路径名 char szStreamPath[256]; // 码流路径前缀:不同通道以后缀数字区分 char szKey[128]; // 获取RTMP地址时的Key(定制) NET_CHANNEL_RTMP_INFO* pstuMainStream; // 主码流信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nMainStream UINT nMainStream; // pstuMainStream 个数 UINT nMainStreamRet; // 返回的 pstuMainStream 个数(获取配置时有效) NET_CHANNEL_RTMP_INFO* pstuExtra1Stream; // 辅码流1信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nExtra1Stream UINT nExtra1Stream; // pstuExtra1Stream 个数 UINT nExtra1StreamRet; // 返回的 nExtra1StreamRet 个数(获取配置时有效) NET_CHANNEL_RTMP_INFO* pstuExtra2Stream; // 辅码流2信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nExtra2Stream UINT nExtra2Stream; // pstuExtra2Stream 个数 UINT nExtra2StreamRet; // 返回的 nExtra2StreamRet 个数(获取配置时有效) }NET_CFG_RTMP_INFO; ///@brief 人体测温补偿模式 typedef enum tagEM_HUMAN_THERMOMETRY_COMPENSATE_MODE { EM_HUMAN_THERMOMETRY_COMPENSATE_MODE_UNKNOWN = 0, // 未知 EM_HUMAN_THERMOMETRY_COMPENSATE_MODE_FOREHEAD, // 额温模式 EM_HUMAN_THERMOMETRY_COMPENSATE_MODE_MERCURY, // 水银模式 }EM_HUMAN_THERMOMETRY_COMPENSATE_MODE; ///@brief 人体测温补偿配置 typedef struct tagNET_CFG_HUMAN_THERMOMETRY_COMPENSATE_INFO { DWORD dwSize; // 结构体大小,赋值为sizeof(NET_CFG_HUMAN_THERMOMETRY_COMPENSATE_INFO) EM_HUMAN_THERMOMETRY_COMPENSATE_MODE emCompensateMode; // 补偿模式 int nHumanCorrectTemp; // 人体修正温度, 精度0.01,实际值扩大100倍 int nBasicnCorrectTemp; // 基准修正温度, 精度0.01,实际值扩大100倍 }NET_CFG_HUMAN_THERMOMETRY_COMPENSATE_INFO; ///@brief 串口日志重定向配置 typedef struct tagNET_CFG_DEBUGINFO_REDIR_INFO { DWORD dwSize; // 结构体大小,赋值为sizeof(NET_CFG_DEBUGINFO_REDIR_INFO) BOOL bEnable; // 是否使能重定向 }NET_CFG_DEBUGINFO_REDIR_INFO; ///@brief NVR 本地温度配置 typedef struct tagNET_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY_INFO { DWORD dwSize; // 结构体大小,赋值为sizeof(NET_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY_INFO) EM_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位,EM_TEMPERATURE_CENTIGRADE 及 EM_TEMPERATURE_FAHRENHEIT 有效 }NET_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY_INFO; ///@brief 门禁测温类型 typedef enum tagEM_TEMP_MEASURE_TYPE { EM_TEMP_MEASURE_TYPE_UNKNOWN, // 未知 EM_TEMP_MEASURE_TYPE_INFRARED, // 单片机红外测温 EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE, // 热成像测温 EM_TEMP_MEASURE_TYPE_GUIDE_MODULE, // 高德测温模块测温 EM_TEMP_MEASURE_TYPE_WRIST, // 单点手腕测温 }EM_TEMP_MEASURE_TYPE; ///@brief 门禁测温口罩检测模式 typedef enum tagEM_MASK_DETECT_MODE { EM_MASK_DETECT_MODE_UNKNOWN, // 未知 EM_MASK_DETECT_MODE_NO_DETECTION, // 不检测口罩 EM_MASK_DETECT_MODE_REMIND, // 口罩提醒模式 EM_MASK_DETECT_MODE_INTERCEPT, // 口罩拦截模式 }EM_MASK_DETECT_MODE; ///@brief 单片机红外测温模式参数 typedef struct tagNET_INFRARED_MEASURE_MODE_PARAM { int nMaxDistance; // 最远测试距离,单位: cm int nRetentionTime; // 红外温度保存时间(ms) (人员在设备鉴权时,从红外设备取温度的有效倒退时间) double dbTempThreshold; // 温度阈值,单位: 摄氏度 double dbCorrectTemp; // 温度矫正值,单位: 摄氏度 double dbValidTempLowerLimit; // 有效温度下限,低于此值的温度为无效温度(摄氏度) BOOL bDebugModelEnable; // 是否开启测温调试模式(在屏幕上显示测温调试数据) BOOL bRectEnable; // 测温区域框显示使能(在视频流界面显示测试区域框) char szSensorType[64]; // 测温模块传感器类型 BYTE byReserved[1024]; // 预留字段 }NET_INFRARED_MEASURE_MODE_PARAM; ///@brief 热成像模式下参数 typedef struct tagNET_THERMAL_IMAGE_MEASURE_MODE_PARAM { int nFaceCompareThreshold; // 目标物比对阈值 int nRetentionTime; // 热成像温度保留时间(s) (目标物无法比对通过时,通过刷卡等其他方式验证权限,找到人员底库后再去热成像设备进行比对,此字段用于温度保存多少时间) int nOverTempMaxDistance; // 上报高温事件的最大距离,在此距离内测到高温直接上报(cm) BYTE byReserved[1020]; }NET_THERMAL_IMAGE_MEASURE_MODE_PARAM; ///@brief 热成像标定模式 typedef enum tagEM_THERMAL_IMAGE_CALIBRATION_MODE { EM_THERMAL_IMAGE_CALIBRATION_MODE_UNKNOWN, // 未知 EM_THERMAL_IMAGE_CALIBRATION_MODE_INDOOR, // 室内模式 EM_THERMAL_IMAGE_CALIBRATION_MODE_WALL_MOUNTING, // 壁装模式 EM_THERMAL_IMAGE_CALIBRATION_MODE_GATE, // 闸机模式 EM_THERMAL_IMAGE_CALIBRATION_MODE_FLOOR, // 高端落地式模式 }EM_THERMAL_IMAGE_CALIBRATION_MODE; ///@brief 高德测温模块使用参数 typedef struct tagNET_GUIDE_MODULE_MEASURE_MODE_PARAM { BOOL bRectEnable; // 测温区域框显示使能(在视频流界面显示测试区域框) int nMaxDistance; // 允许的最远测温距离(cm) double dbTempThreshold; // 温度阈值(摄氏度) double dbCorrectTemp; // 温度矫正值(摄氏度) double dbValidTempLowerLimit; // 有效温度下限,低于此值的温度为无效温度(摄氏度) double dbTempRandReplaceThreshold; // 温度随机替换阈值(低于此阈值的温度会被随机替换为一个有效温度,用于兼容错误情况。阈值为0时表示此功能不开启)。 BOOL bDebugModelEnable; // 是否开启测温调试模式(在目标物顶部显示测温数据) EM_THERMAL_IMAGE_CALIBRATION_MODE emCalibrationMode; // 热成像标定模式,不同标定模式下的标定参数不一样 BOOL bHeatDisplayEnbale; // 是否显示热图 BYTE byReserved[1020]; // 预留字段 }NET_GUIDE_MODULE_MEASURE_MODE_PARAM; ///@brief 单点手腕测温模式参数 typedef struct tagNET_WRIST_MEASURE_MODE_PARAM { double dbTempThreshold; // 温度阈值(摄氏度) double dbCorrectTemp; // 温度矫正值(摄氏度) double dbValidTempLowerLimit; // 有效温度下限,低于此值的温度为无效温度(摄氏度) int nMeasureTimeout; // 测温超时时间(秒) int nValidMeasureDistance; // 有效温度测量距离(cm),小于该距离测量到的温度认为有效 int nInvalidMeasureDistance; // 无效温度测量距离(cm),大于该距离测量到的温度认为无效,直接过滤,同时该字段还配合ValidTemperatureDistance字段使用,在有效和无效距离之间测量的温度是不准的,需要提示用户靠近一点。 BYTE byReserved[1020]; }NET_WRIST_MEASURE_MODE_PARAM; ///@brief 门禁测温配置 typedef struct tagNET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 测温功能是否启用 BOOL bOnlyTempMode; // 仅测温模式是否启用 BOOL bDisplayTemp; // 温度值是否在提示结果中显示 EM_MASK_DETECT_MODE emMaskDetectMode; // 口罩检测模式 EM_TEMP_MEASURE_TYPE emMeasureType; // 测温类型 NET_INFRARED_MEASURE_MODE_PARAM stuInfraredTempParam; // 红外测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_INFRARED 时有效 NET_THERMAL_IMAGE_MEASURE_MODE_PARAM stuThermalImageTempParam; // 热成像测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE 时有效 NET_GUIDE_MODULE_MEASURE_MODE_PARAM stuGuideModuleTempParam; // 高德模块测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_GUIDE_MODULE 时有效 NET_WRIST_MEASURE_MODE_PARAM stuWristTempParam; // 手腕单点测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_WRIST 时有效 }NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO; ///@brief 联动类型 typedef enum tagEM_PTZ_LINK_TYPE { EM_PTZ_LINK_TYPE_NONE, // none EM_PTZ_LINK_TYPE_PRESET, // "Preset" 联动预置点 EM_PTZ_LINK_TYPE_TOUR, // "Tour" 联动巡航 EM_PTZ_LINK_TYPE_PATTERN, // "Pattern" 联动模式 EM_PTZ_LINK_TYPE_ZOOM, // "Zoom" 联动变倍 EM_PTZ_LINK_TYPE_SINGLESCENE, // "SingleScene" 联动智能单场景 EM_PTZ_LINK_TYPE_QUICKFOCUS, // "QuickFocus" 热成像云台联动快速定位 } EM_PTZ_LINK_TYPE; ///@brief 联动云台信息 typedef struct tagNET_CFG_PTZ_LINK { EM_PTZ_LINK_TYPE emType; // 联动类型 int nValue; // 联动取值分别对应预置点号,巡航号等等 } NET_CFG_PTZ_LINK; ///@brief 云台联动项 typedef struct tagNET_PTZ_LINK { EM_PTZ_LINK_TYPE emType; // 云台联动类型 int nParam1; // 联动参数1 int nParam2; // 联动参数2 int nParam3; // 联动参数3 int nChannelID; // 所联动云台通道 } NET_PTZ_LINK; ///@brief 报警联动信息 typedef struct tagNET_CFG_ALARM_MSG_HANDLE { DWORD dwSize; //能力 bool abChannelCount; // 是否支持通道数量 bool abAlarmOutCount; // 是否支持报警输出数量 bool abRecordMask; // 是否支持录像通道 bool abRecordEnable; // 是否支持录像使能 bool abRecordLatch; // 是否支持录像延时 bool abAlarmOutMask; // 是否支持报警输出通道 bool abAlarmOutEn; // 是否支持报警输出使能 bool abAlarmOutLatch; // 是否支持报警输出延时 bool abExAlarmOutMask; // 是否支持扩展报警输出通道 bool abExAlarmOutEn; // 是否支持扩展报警输出使能 bool abPtzLinkEn; // 是否支持云台联动使能 bool abTourMask; // 是否支持轮巡掩码 bool abTourEnable; // 是否支持轮巡使能 bool abSnapshot; // 是否支持快照 bool abSnapshotEn; // 是否支持快照使能 bool abSnapshotPeriod; // 是否支持帧间隔,每隔多少帧抓一张图片 bool abSnapshotTimes; // 是否支持连拍次数 bool abTipEnable; // 是否支持本地消息框提示 bool abMailEnable; // 是否支持发送邮件 bool abMessageEnable; // 是否支持上传到报警中心服务器 bool abBeepEnable; // 是否支持蜂鸣 bool abVoiceEnable; // 是否支持语音提示 bool abMatrixMask; // 是否支持联动视频矩阵掩码 bool abMatrixEnable; // 是否支持联动视频矩阵使能 bool abEventLatch; // 是否支持联动开始延时时间 bool abLogEnable; // 是否支持日志使能 bool abDelay; // 是否支持报警延时 bool abVideoMessageEn; // 是否支持叠加提示字幕到视频 bool abMMSEnable; // 是否支持发送短消息 bool abMessageToNetEn; // 是否支持消息上传给网络使能 bool abTourSplit; // 是否支持换面分割轮巡 bool abSnapshotTitleEn; // 是否支持叠加图片标题使能 bool abPtzLinkEx; // 是否支持云台联动使能 bool abSnapshotTitle; // 是否支持叠加图片标题 bool abMailDetail; // 是否支持邮件详情 bool abVideoTitleEn; // 是否支持叠加视频标题,主要指主码流 bool abVideoTitle; // 是否支持视频标题内容 bool abTour; // 是否支持轮巡 bool abDBKeys; // 是否支持指定事件详细信息里需要写到数据库的关键字 bool abJpegSummary; // 是否支持叠加到JPEG图片的摘要信息 bool abFlashEn; // 是否支持补光灯使能 bool abFlashLatch; // 是否支持补光灯延时 bool abAudioFileName; // 是否支持联动语音文件绝对路径 bool abAlarmBellEn; // 是否支持警号使能 bool abAccessControlEn; // 是否支持门禁控制使能 bool abAccessControl; // 是否支持门禁控制 bool abTalkBack; // 是否支持语音呼叫 bool abPSTNAlarmServer; // 是否支持电话报警中心 bool abAlarmBellLatch; // 是否支持警号输出延时 bool abPlayTimes; // 是否支持联动语音播放次数 bool abReboot; // 是否支持重启使能 bool abBeepTime; // 是否支持蜂鸣时长 BYTE byReserved[68]; // 能力保留字段 /*信息*/ NET_CFG_TIME_SCHEDULE stuTimeSection; // 事件响应时间表 int nChannelCount; // 设备的视频通道数 int nAlarmOutCount; // 设备的报警输出个数 DWORD dwRecordMask[CFG_MAX_CHANNEL_COUNT]; // 录像通道掩码(按位) BOOL bRecordEnable; // 录像使能 int nRecordLatch; // 录像延时时间(秒) DWORD dwAlarmOutMask[CFG_MAX_CHANNEL_COUNT]; // 报警输出通道掩码 BOOL bAlarmOutEn; // 报警输出使能 int nAlarmOutLatch; // 报警输出延时时间(秒) DWORD dwExAlarmOutMask[CFG_MAX_CHANNEL_COUNT]; // 扩展报警输出通道掩码 BOOL bExAlarmOutEn; // 扩展报警输出使能 NET_CFG_PTZ_LINK stuPtzLink[CFG_MAX_VIDEO_CHANNEL_NUM]; // 云台联动项 //这个参数并没有被解析,应该是被扩展替代 BOOL bPtzLinkEn; // 云台联动使能 DWORD dwTourMask[CFG_MAX_CHANNEL_COUNT]; // 轮询通道掩码 BOOL bTourEnable; // 轮询使能 DWORD dwSnapshot[CFG_MAX_CHANNEL_COUNT]; // 快照通道号掩码 BOOL bSnapshotEn; // 快照使能 int nSnapshotPeriod; // 连拍周期(秒) int nSnapshotTimes; // 连拍次数 BOOL bTipEnable; // 本地消息框提示 BOOL bMailEnable; // 发送邮件,如果有图片,作为附件 BOOL bMessageEnable; // 上传到报警服务器 BOOL bBeepEnable; // 蜂鸣 BOOL bVoiceEnable; // 语音提示 int nPlayTimes; // 联动语音播放次数bVoiceEnable=TRUE时生效 DWORD dwMatrixMask[CFG_MAX_CHANNEL_COUNT]; // 联动视频矩阵通道掩码 BOOL bMatrixEnable; // 联动视频矩阵 int nEventLatch; // 联动开始延时时间(秒),0-15 BOOL bLogEnable; // 是否记录日志 int nDelay; // 设置时先延时再生效,单位为秒 BOOL bVideoMessageEn; // 叠加提示字幕到视频。叠加的字幕包括事件类型,通道号,秒计时。 BOOL bMMSEnable; // 发送彩信使能 BOOL bMessageToNetEn; // 消息上传给网络使能 int nTourSplit; // 轮巡时的分割模式 0: 1画面; 1: 8画面 BOOL bSnapshotTitleEn; // 是否叠加图片标题 int nPtzLinkExNum; // 云台配置数 NET_PTZ_LINK stuPtzLinkEx[CFG_MAX_VIDEO_CHANNEL_NUM]; // 扩展云台信息 int nSnapTitleNum; // 图片标题内容数 NET_CFG_EVENT_TITLE stuSnapshotTitle[CFG_MAX_VIDEO_CHANNEL_NUM]; // 图片标题内容 NET_CFG_MAIL_DETAIL stuMailDetail; // 邮件详细内容 BOOL bVideoTitleEn; // 是否叠加视频标题,主要指主码流 int nVideoTitleNum; // 视频标题内容数目 NET_CFG_EVENT_TITLE stuVideoTitle[CFG_MAX_VIDEO_CHANNEL_NUM]; // 视频标题内容 int nTourNum; // 轮询联动数目 NET_CFG_TOURLINK stuTour[CFG_MAX_VIDEO_CHANNEL_NUM]; // 轮询联动配置 int nDBKeysNum; // 指定数据库关键字的有效数 char szDBKeys[CFG_MAX_DBKEY_NUM][CFG_MAX_CHANNELNAME_LEN]; // 指定事件详细信息里需要写到数据库的关键字 BYTE byJpegSummary[CFG_MAX_SUMMARY_LEN]; // 叠加到JPEG图片的摘要信息 BOOL bFlashEnable; // 是否使能补光灯 int nFlashLatch; // 补光灯延时时间(秒),延时时间范围:[10,300] char szAudioFileName[MAX_PATH]; // 联动语音文件绝对路径 BOOL bAlarmBellEn; // 警号使能 BOOL bAccessControlEn; // 门禁使能 DWORD dwAccessControl; // 门禁组数 NET_EM_CFG_ACCESSCONTROLTYPE emAccessControlType[CFG_MAX_ACCESSCONTROL_NUM]; // 门禁联动操作信息 NET_CFG_TALKBACK_INFO stuTalkback; // 语音呼叫联动信息 NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer; // 电话报警中心联动信息 int nAlarmBellLatch; // 警号输出延时时间(10-300秒) BOOL bReboot; //重启使能TRUE:使能 FALSE:不使能 int nBeepTime; //蜂鸣时长最大值为3600,0代表持续蜂鸣 BOOL abLightingLink; // 云台补光灯联动项使能 NET_CFG_LIGHTING_LINK_INFO stuLightingLink; // 云台补光灯联动项 } NET_CFG_ALARM_MSG_HANDLE; ///@brief 报警联动信息 typedef struct tagNET_ALARM_MSG_HANDLE { //能力 bool abChannelCount; // 是否支持通道数量 bool abAlarmOutCount; // 是否支持报警输出数量 bool abRecordMask; // 是否支持录像通道 bool abRecordEnable; // 是否支持录像使能 bool abRecordLatch; // 是否支持录像延时 bool abAlarmOutMask; // 是否支持报警输出通道 bool abAlarmOutEn; // 是否支持报警输出使能 bool abAlarmOutLatch; // 是否支持报警输出延时 bool abExAlarmOutMask; // 是否支持扩展报警输出通道 bool abExAlarmOutEn; // 是否支持扩展报警输出使能 bool abPtzLinkEn; // 是否支持云台联动使能 bool abTourMask; // 是否支持轮巡掩码 bool abTourEnable; // 是否支持轮巡使能 bool abSnapshot; // 是否支持快照 bool abSnapshotEn; // 是否支持快照使能 bool abSnapshotPeriod; // 是否支持帧间隔,每隔多少帧抓一张图片 bool abSnapshotTimes; // 是否支持连拍次数 bool abTipEnable; // 是否支持本地消息框提示 bool abMailEnable; // 是否支持发送邮件 bool abMessageEnable; // 是否支持上传到报警中心服务器 bool abBeepEnable; // 是否支持蜂鸣 bool abVoiceEnable; // 是否支持语音提示 bool abMatrixMask; // 是否支持联动视频矩阵掩码 bool abMatrixEnable; // 是否支持联动视频矩阵使能 bool abEventLatch; // 是否支持联动开始延时时间 bool abLogEnable; // 是否支持日志使能 bool abDelay; // 是否支持报警延时 bool abVideoMessageEn; // 是否支持叠加提示字幕到视频 bool abMMSEnable; // 是否支持发送短消息 bool abMessageToNetEn; // 是否支持消息上传给网络使能 bool abTourSplit; // 是否支持换面分割轮巡 bool abSnapshotTitleEn; // 是否支持叠加图片标题使能 bool abPtzLinkEx; // 是否支持云台联动使能 bool abSnapshotTitle; // 是否支持叠加图片标题 bool abMailDetail; // 是否支持邮件详情 bool abVideoTitleEn; // 是否支持叠加视频标题,主要指主码流 bool abVideoTitle; // 是否支持视频标题内容 bool abTour; // 是否支持轮巡 bool abDBKeys; // 是否支持指定事件详细信息里需要写到数据库的关键字 bool abJpegSummary; // 是否支持叠加到JPEG图片的摘要信息 bool abFlashEn; // 是否支持补光灯使能 bool abFlashLatch; // 是否支持补光灯延时 bool abAudioFileName; // 是否支持联动语音文件绝对路径 bool abAlarmBellEn; // 是否支持警号使能 bool abAccessControlEn; // 是否支持门禁控制使能 bool abAccessControl; // 是否支持门禁控制 bool abTalkBack; // 是否支持语音呼叫 bool abPSTNAlarmServer; // 是否支持电话报警中心 bool abAlarmBellLatch; // 是否支持警号输出延时 bool abPlayTimes; // 是否支持联动语音播放次数 bool abReboot; // 是否支持重启使能 bool abBeepTime; // 是否支持蜂鸣时长 BYTE byReserved[68]; // 能力保留字段 /*信息*/ NET_CFG_TIME_SCHEDULE stuTimeSection; // 事件响应时间表 int nChannelCount; // 设备的视频通道数 int nAlarmOutCount; // 设备的报警输出个数 DWORD dwRecordMask[CFG_MAX_CHANNEL_COUNT]; // 录像通道掩码(按位) BOOL bRecordEnable; // 录像使能 int nRecordLatch; // 录像延时时间(秒) DWORD dwAlarmOutMask[CFG_MAX_CHANNEL_COUNT]; // 报警输出通道掩码 BOOL bAlarmOutEn; // 报警输出使能 int nAlarmOutLatch; // 报警输出延时时间(秒) DWORD dwExAlarmOutMask[CFG_MAX_CHANNEL_COUNT]; // 扩展报警输出通道掩码 BOOL bExAlarmOutEn; // 扩展报警输出使能 NET_CFG_PTZ_LINK stuPtzLink[CFG_MAX_VIDEO_CHANNEL_NUM]; // 云台联动项 //这个参数并没有被解析,应该是被扩展替代 BOOL bPtzLinkEn; // 云台联动使能 DWORD dwTourMask[CFG_MAX_CHANNEL_COUNT]; // 轮询通道掩码 BOOL bTourEnable; // 轮询使能 DWORD dwSnapshot[CFG_MAX_CHANNEL_COUNT]; // 快照通道号掩码 BOOL bSnapshotEn; // 快照使能 int nSnapshotPeriod; // 连拍周期(秒) int nSnapshotTimes; // 连拍次数 BOOL bTipEnable; // 本地消息框提示 BOOL bMailEnable; // 发送邮件,如果有图片,作为附件 BOOL bMessageEnable; // 上传到报警服务器 BOOL bBeepEnable; // 蜂鸣 BOOL bVoiceEnable; // 语音提示 int nPlayTimes; // 联动语音播放次数bVoiceEnable=TRUE时生效 DWORD dwMatrixMask[CFG_MAX_CHANNEL_COUNT]; // 联动视频矩阵通道掩码 BOOL bMatrixEnable; // 联动视频矩阵 int nEventLatch; // 联动开始延时时间(秒),0-15 BOOL bLogEnable; // 是否记录日志 int nDelay; // 设置时先延时再生效,单位为秒 BOOL bVideoMessageEn; // 叠加提示字幕到视频。叠加的字幕包括事件类型,通道号,秒计时。 BOOL bMMSEnable; // 发送彩信使能 BOOL bMessageToNetEn; // 消息上传给网络使能 int nTourSplit; // 轮巡时的分割模式 0: 1画面; 1: 8画面 BOOL bSnapshotTitleEn; // 是否叠加图片标题 int nPtzLinkExNum; // 云台配置数 NET_PTZ_LINK stuPtzLinkEx[CFG_MAX_VIDEO_CHANNEL_NUM]; // 扩展云台信息 int nSnapTitleNum; // 图片标题内容数 NET_CFG_EVENT_TITLE stuSnapshotTitle[CFG_MAX_VIDEO_CHANNEL_NUM]; // 图片标题内容 NET_CFG_MAIL_DETAIL stuMailDetail; // 邮件详细内容 BOOL bVideoTitleEn; // 是否叠加视频标题,主要指主码流 int nVideoTitleNum; // 视频标题内容数目 NET_CFG_EVENT_TITLE stuVideoTitle[CFG_MAX_VIDEO_CHANNEL_NUM]; // 视频标题内容 int nTourNum; // 轮询联动数目 NET_CFG_TOURLINK stuTour[CFG_MAX_VIDEO_CHANNEL_NUM]; // 轮询联动配置 int nDBKeysNum; // 指定数据库关键字的有效数 char szDBKeys[CFG_MAX_DBKEY_NUM][CFG_MAX_CHANNELNAME_LEN]; // 指定事件详细信息里需要写到数据库的关键字 BYTE byJpegSummary[CFG_MAX_SUMMARY_LEN]; // 叠加到JPEG图片的摘要信息 BOOL bFlashEnable; // 是否使能补光灯 int nFlashLatch; // 补光灯延时时间(秒),延时时间范围:[10,300] char szAudioFileName[MAX_PATH]; // 联动语音文件绝对路径 BOOL bAlarmBellEn; // 警号使能 BOOL bAccessControlEn; // 门禁使能 DWORD dwAccessControl; // 门禁组数 NET_EM_CFG_ACCESSCONTROLTYPE emAccessControlType[CFG_MAX_ACCESSCONTROL_NUM]; // 门禁联动操作信息 NET_CFG_TALKBACK_INFO stuTalkback; // 语音呼叫联动信息 NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer; // 电话报警中心联动信息 int nAlarmBellLatch; // 警号输出延时时间(10-300秒) BOOL bReboot; //重启使能TRUE:使能 FALSE:不使能 int nBeepTime; //蜂鸣时长最大值为3600,0代表持续蜂鸣 BOOL abAudioLinkTime; // 联动语音时间使能 int nAudioLinkTime; // 联动语音播放的时间, 单位:秒 BOOL abAudioPlayTimes; // 联动语音播放使能 UINT nAudioPlayTimes; // 联动语音播放次数 BOOL abLightingLink; // 云台补光灯联动项使能 NET_CFG_LIGHTING_LINK_INFO stuLightingLink; // 云台补光灯联动项 BYTE byReserve[828]; // 预留字节 } NET_ALARM_MSG_HANDLE; ///@brief PH值报警配置 typedef struct tagWATER_DETECTION_PH { BOOL bEnable; // PH报警使能 float fHigh; // PH值大于阈值报警配置 范围(1-14) float fLow; // PH值小于阈值报警配置 范围(1-14) char szReserved[128]; // 预留字节 }WATER_DETECTION_PH; ///@brief 浊度报警配置 typedef struct tagWATER_DETECTION_NTU { BOOL bEnable; // 浊度报警使能 float fHigh; // 浊度大于阈值报警配置 范围(0-500NTU) float fLow; // 浊度小于阈值报警配置 范围(0-500NTU) char szReserved[128]; // 预留字节 }WATER_DETECTION_NTU; ///@brief 氨氮报警配置 typedef struct tagWATER_DETECTION_NH3_N { BOOL bEnable; // 氨氮报警使能 float fHigh; // 氨氮大于阈值报警配置 范围(0-50mg/l) float fLow; // 氨氮小于阈值报警配置 范围(0-50mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_NH3_N; ///@brief 总氮报警配置 typedef struct tagWATER_DETECTION_TN { BOOL bEnable; // 总氮报警使能 float fHigh; // 总氮大于阈值报警配置 范围(0-50mg/l) float fLow; // 总氮小于阈值报警配置 范围(0-50mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_TN; ///@brief 透明度报警配置 typedef struct tagWATER_DETECTION_SD { BOOL bEnable; // 透明度报警使能 float fHigh; // 透明度大于阈值报警配置 范围(0-30 m) float fLow; // 透明度小于阈值报警配置 范围(0-30 m) char szReserved[128]; // 预留字节 }WATER_DETECTION_SD; ///@brief 化学需氧量报警配置 typedef struct tagWATER_DETECTION_COD { BOOL bEnable; // 化学需氧量报警使能 float fHigh; // 化学需氧量大于阈值报警配置 范围(0-100mg/l) float fLow; // 化学需氧量小于阈值报警配置 范围(0-100mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_COD; ///@brief 亚硝酸盐氮报警配置 typedef struct tagWATER_DETECTION_NN { BOOL bEnable; // 亚硝酸盐氮报警使能 float fHigh; // 亚硝酸盐氮大于阈值报警配置 范围(0-500mg/l) float fLow; // 亚硝酸盐氮小于阈值报警配置 范围(0-500mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_NN; ///@brief 溶解氧报警配置 typedef struct tagWATER_DETECTION_DO { BOOL bEnable; // 溶解氧报警使能 float fHigh; // 溶解氧大于阈值报警配置 范围(0-10 mg/l) float fLow; // 溶解氧小于阈值报警配置 范围(0-10 mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_DO; ///@brief 叶绿素a报警配置 typedef struct tagWATER_DETECTION_CHL_A { BOOL bEnable; // 叶绿素a报警使能 float fHigh; // 叶绿素a大于阈值报警配置 范围(0-300 ug/l) float fLow; // 叶绿素a小于阈值报警配置 范围(0-300 ug/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_CHL_A; ///@brief 总磷报警场景类型 typedef enum tagEM_WATER_DETECTION_TP_ALARM_TYPE { EM_WATER_DETECTION_TP_ALARM_TYPE_UNKNOWN, // 未知 EM_WATER_DETECTION_TP_ALARM_TYPE_NORMAL, // 一般场景 EM_WATER_DETECTION_TP_ALARM_TYPE_LAKE, // 湖、库场景 }EM_WATER_DETECTION_TP_ALARM_TYPE; ///@brief 总磷报警配置 typedef struct tagWATER_DETECTION_TP { BOOL bEnable; // 总磷报警使能 float fHigh; // 总磷大于阈值报警 范围(0-5mg/l) float fLow; // 总磷小于阈值报警 范围(0-5mg/l) EM_WATER_DETECTION_TP_ALARM_TYPE emAlarmType; // 总磷报警场景类型 char szReserved[128]; // 预留字节 }WATER_DETECTION_TP; ///@brief 高锰酸盐指数报警配置 typedef struct tagWATER_DETECTION_CODMN { BOOL bEnable; // 高锰酸盐指数报警使能 float fHigh; // 高锰酸盐指数大于阈值报警配置 范围(0-100mg/l) float fLow; // 高锰酸盐指数小于阈值报警配置 范围(0-100mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_CODMN; ///@brief 悬浮物报警配置 typedef struct tagWATER_DETECTION_SS { BOOL bEnable; // 悬浮物报警使能 float fHigh; // 悬浮物大于阈值报警配置 范围(0-1000mg/l) float fLow; // 悬浮物小于阈值报警配置 范围(0-1000mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_SS; ///@brief 五日生化需氧量报警配置 typedef struct tagWATER_DETECTION_BOD5 { BOOL bEnable; // 五日生化需氧量报警使能 float fHigh; // 五日生化需氧量大于阈值报警配置 范围(0-50mg/l) float fLow; // 五日生化需氧量小于阈值报警配置 范围(0-50mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_BOD5; ///@brief 硝酸盐报警配置 typedef struct tagWATER_DETECTION_NO3_N { BOOL bEnable; // 硝酸盐报警使能 float fHigh; // 硝酸盐大于阈值报警配置 范围(0-500mg/l) float fLow; // 硝酸盐小于阈值报警配置 范围(0-500mg/l) char szReserved[128]; // 预留字节 }WATER_DETECTION_NO3_N; ///@brief 富营养状况指数报警配置 typedef struct tagWATER_DETECTION_TSL { BOOL bEnable; // 富营养状况指数报警使能 float fHigh; // 富营养状况指数大于阈值报警配置 范围无 float fLow; // 富营养状况指数小于阈值报警配置 范围无 char szReserved[128]; // 预留字节 }WATER_DETECTION_TSL; ///@brief 黑臭等级报警配置 typedef struct tagWATER_DETECTION_SMALL_LEVEL { BOOL bEnable; // 黑臭等级报警使能 char szReserved[128]; // 预留字节 }WATER_DETECTION_SMALL_LEVEL; ///@brief 水质检测功能报警阈值设置 对应枚举 NET_EM_CFG_WATER_QUALITY_DETECTION typedef struct tagNET_CFG_WATER_QUALITY_DETECTION_INFO { DWORD dwSize; // 结构体大小 WATER_DETECTION_PH stuPh; // PH值报警配置 WATER_DETECTION_NTU stuNtu; // 浊度报警配置 WATER_DETECTION_NH3_N stuNh3n; // 氨氮报警配置 WATER_DETECTION_TN stuTn; // 总氮报警配置 WATER_DETECTION_SD stuSd; // 透明度报警配置 WATER_DETECTION_COD stuCod; // 化学需氧量报警配置 WATER_DETECTION_NN stuNn; // 亚硝酸盐氮报警配置 WATER_DETECTION_DO stuDo; // 溶解氧报警配置 WATER_DETECTION_CHL_A stuChla; // 叶绿素a报警配置 WATER_DETECTION_TP stuTp; // 总磷报警配置 WATER_DETECTION_CODMN stuCodMn; // 高锰酸盐指数报警配置 WATER_DETECTION_SS stuSs; // 悬浮物报警配置 WATER_DETECTION_BOD5 stuBod5; // 五日生化需氧量报警配置 WATER_DETECTION_NO3_N stuNo3n; // 硝酸盐报警配置 WATER_DETECTION_TSL stuTsl; // 富营养状况指数报警配置 WATER_DETECTION_SMALL_LEVEL stuSmallLevel; // 黑臭等级报警配置 BOOL bDataUpload; // 是否支持实时上报 UINT nUpdateInterval; // 实时数据上报间隔(单位:秒) 取值范围[60, 86400] NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动信息 }NET_CFG_WATER_QUALITY_DETECTION_INFO; ///@brief 硬盘属性类型 typedef enum tagEM_FINANCIAL_CABINET_ALARM_TYPE { EM_FINANCIAL_CABINET_ALARM_TYPE_UNKNOWN = -1, // 未知 EM_FINANCIAL_CABINET_ALARM_TYPE_ABNORMAL, // 异常开门 EM_FINANCIAL_CABINET_ALARM_TYPE_EMERGENCY, // 应急开门 EM_FINANCIAL_CABINET_ALARM_TYPE_NOTOPEN, // 超时未开 EM_FINANCIAL_CABINET_ALARM_TYPE_TIMEOUT, // 存取操作超时 EM_FINANCIAL_CABINET_ALARM_TYPE_TRUCKAWAY, // 尾款箱未在存取时间内存入 EM_FINANCIAL_CABINET_ALARM_TYPE_WITHDRAW, // 非法领用 EM_FINANCIAL_CABINET_ALARM_TYPE_DEPOSIT, // 非法存入 EM_FINANCIAL_CABINET_ALARM_TYPE_BATTERY, // 电池低电压 EM_FINANCIAL_CABINET_ALARM_TYPE_OTHAR, // 其他 }EM_FINANCIAL_CABINET_ALARM_TYPE; ///@brief 金融业务库报警配置 typedef struct tagNET_FINANCIAL_CABINET_ALARM_INFO { BOOL bEnable; // 使能 EM_FINANCIAL_CABINET_ALARM_TYPE emAlarmType; // 硬盘属性类型 int nAlarmLevel; // 报警等级 0:不报警 1:普通报警 2:严重报警 BOOL bAlarmLinkEnable; // 是否联动报警 int nValue; // 阈值数值 char szUnit[32]; // 阈值单位 int nAlarmOutChannel[8]; // 联动报警输出通道, 在bAlarmLinkEnable为TRUE时生效 int nAlarmOutChannelNum; // 联动报警输出通道的个数, 配合nAlarmOutChannel[8]使用,最大值为8 char szReserverd[984]; // 预留字节 }NET_FINANCIAL_CABINET_ALARM_INFO; ///@brief 金融业务库报警配置 对应枚举 NET_EM_CFG_FINANCIAL_CABINET_ALARM typedef struct tagNET_CFG_FINANCIAL_CABINET_ALARM_INFO { DWORD dwSize; // 结构体大小 int nConfigNum; // 金融业务库报警配置个数 NET_FINANCIAL_CABINET_ALARM_INFO stuFinancialCabinetAlarm[32]; // 金融业务库报警配置 }NET_CFG_FINANCIAL_CABINET_ALARM_INFO; ///@brief 金库门设置 typedef struct tagNET_FINANCIAL_CABINET_VAULTDOOR { UINT nDynamicPasswordLockNum; // 金库门开锁时需要开锁的动态密码锁数量 UINT nElectronicLockNum; // 金库门开锁时需要开锁的电控锁数量 UINT nMechanicalLockNum; // 机械锁数量 UINT nTotalLockNum; // 总开锁数量 UINT nCloseTime; // 闭锁时间, 单位秒 char szReserverd[252]; // 预留字节 }NET_FINANCIAL_CABINET_VAULTDOOR; ///@brief 排班时间 typedef struct tagNET_FINANCIAL_CABINET_WORKTIME { BOOL bEnable; // 使能 不使能则不校验排班时间 char szStartTime[16]; // 排班起始时间 char szEndTime[16]; // 排班结束时间 int nWeekDayNum; // 星期天数 UINT nWeekDay[7]; // 星期 0:周日,1:周一,…,6:周六 char szReserverd[252]; // 预留字节 }NET_FINANCIAL_CABINET_WORKTIME; ///@brief 自动布撤防 typedef struct tagNET_FINANCIAL_CABINET_AUTOARM { BOOL bEnable; // 使能 char szDisarmStartTime[16]; // 撤防开始时间(自动布防结束时间) char szDisarmEndTime[16]; // 撤防结束时间(自动布防开始时间) int nWeekDayNum; // 星期天数 UINT nWeekDay[7]; // 星期 0:周日,1:周一,…,6:周六 char szReserverd[252]; // 预留字节 }NET_FINANCIAL_CABINET_AUTOARM; ///@brief 短信推送 typedef struct tagNET_FINANCIAL_CABINET_MESSAGE { BOOL bEnable; // 使能 int nPhoneNumberNum; // 推送手机号个数 char szPhoneNumber[8][16]; // 推送手机号 char szReserverd[256]; // 预留字节 }NET_FINANCIAL_CABINET_MESSAGE; ///@brief 金融业务库配置 对应枚举 NET_EM_CFG_FINANCIAL_CABINET_CONFIG typedef struct tagNET_CFG_FINANCIAL_CABINET_CONFIG_INFO { DWORD dwSize; // 结构体大小 UINT nCabinNum; // 舱位数量 NET_FINANCIAL_CABINET_VAULTDOOR stuVaultDoor; // 金库门设置 BOOL bRemoteApprovalEnable; // 是否开启远程审批 NET_FINANCIAL_CABINET_WORKTIME stuWorkTime; // 排班时间 UINT nIdentifyMode; // 验证模式 0: 目标或信息 1: 目标+信息 NET_FINANCIAL_CABINET_AUTOARM stuAutoArm; // 自动布撤防 NET_FINANCIAL_CABINET_MESSAGE stuMobileMessage; // 短信推送 BOOL bABLockEnable; // 互锁使能 BOOL bCashAmountEnable; // 现金数额使能 BOOL bCabinsEnable; // 多舱位权限使能 BOOL bRecordScreenEnable; // 录屏使能 BOOL bFreezeEnable; // 冻结业务库使能 }NET_CFG_FINANCIAL_CABINET_CONFIG_INFO; ///@brief 核酸校验规则信息 typedef struct tagNET_NUCLEIC_ACID_RULER_INFO { int nMonday; // 周一的核酸检测校验时间,单位小时,例如 24,即周一检查前24小时核酸信息 int nTuesday; // 周二的核酸检测校验时间,单位小时,例如 48,即周二检查前48小时核酸信息 int nWednesday; // 周三的核酸检测校验时间,单位小时,例如 72,即周三检查前72小时核酸信息 int nThursday; // 周四的核酸检测校验时间,单位小时,例如 72,即周四检查前72小时核酸信息 int nFriday; // 周五的核酸检测校验时间,单位小时,例如 72,即周五检查前72小时核酸信息 int nSaturday; // 周六的核酸检测校验时间,单位小时,例如 72,即周六检查前72小时核酸信息 int nSunday; // 周日的核酸检测校验时间,单位小时,例如 72,即周日检查前72小时核酸信息 BOOL bTimeCheckEnable; // 检验核酸时间使能,TRUE:开启核酸时间校验; FALSE:关闭核酸时间校验使能 BOOL bRemoteCheckEnable; // 平台远程审批使能,TRUE:开启平台远程审批; FALSE:关闭平台远程审批 char szResvered[220]; // 保留字节 }NET_NUCLEIC_ACID_RULER_INFO; ///@brief 核酸校验规则配置, 对应枚举 NET_EM_CFG_NUCLEIC_ACID_RULER typedef struct tagNET_CFG_NUCLEIC_ACID_RULER_INFO { DWORD dwSize; // 结构体大小, 必须赋值 NET_NUCLEIC_ACID_RULER_INFO stuNucleicAcidRulerInfo[20]; // 核酸校验规则信息 }NET_CFG_NUCLEIC_ACID_RULER_INFO; ///@brief 部标车牌颜色 typedef enum tagEM_JT_PLATECOLOR { EM_JT_PLATECOLOR_UNKNOWN, // 未知 EM_JT_PLATECOLOR_BLUE, // 蓝色 EM_JT_PLATECOLOR_YELLOW, // 黄色 EM_JT_PLATECOLOR_BLACK, // 黑色 EM_JT_PLATECOLOR_WHITE, // 白色 EM_JT_PLATECOLOR_OTHER = 9, // 其他 }EM_JT_PLATECOLOR; ///@brief 部标协议版本 typedef enum tagEM_JT_SERVER_VERSION { EM_JT_SERVER_VERSION_UNKNOWN = -1, // 未知 EM_JT_SERVER_VERSION_2013, // 2013 EM_JT_SERVER_VERSION_2019, // 2019 }EM_JT_SERVER_VERSION; ///@brief 部标服务器信息 typedef struct tagNET_JT_SERVER_INFO { char szIP[48]; // 服务器IP 或者 域名 BOOL bTcpEnable; // tcp 使能 int nTcpPort; // tcp 端口 BOOL bUdpEnable; // udp 使能 int nUdpPort; // udp 端口 char szAuthCode[64]; // 服务器鉴权码 EM_JT_SERVER_VERSION emVersion; // 部标协议版本 BYTE bReserverd[252]; // 保留 }NET_JT_SERVER_INFO; ///@brief 部标IC卡认证中心 typedef struct tagNET_JT_IC_INFO { char szMainIP[48]; // 服务器IP 或者 域名 char szBackupIP[48]; // 服务器IP 或者 域名 int nTcpPort; // tcp 端口 int nUdpPort; // Udp 端口 BYTE bReserverd[64]; // 保留 }NET_JT_IC_INFO; ///@brief 部标解锁服务器 typedef struct tagNET_JT_UNLOCKSERVER_INFO { char szIp[48]; // 服务器IP 或者 域名 int nTcpPort; // TCP 端口 BYTE bReserverd[64]; // 保留 }NET_JT_UNLOCKSERVER_INFO; ///@brief 部标注册参数配置 typedef struct tagNET_CFG_JT_SERVER_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 接入使能 int nRegisterMode; // 0: 主从方式, 1: 同时注册 int nCityID; // 市县域ID int nProvinceID; // 省域ID char szFactory[6]; // 制造商ID char szDevType[32]; // 终端型号 char szVIN[18]; // 车辆VIN号 char szVehicleType[32]; // 车辆类型 "客运车辆", "危险品运输车辆", "货运车辆", "出租车辆" char szDevID[32]; // 终端ID EM_JT_PLATECOLOR emPlateColor; // 车牌颜色 char szPlateNO[32]; // 车牌号码 char szPhoneNO[16]; // 电话号码 char szAuthCode[64]; // 主服务器鉴权码 int nHeartBeatInterval; // 心跳间隔 int nTcpTimeOut; // Tcp应答超时时间 int nTcpRetransTimes; // Tcp重传次数 int nUdpTimeOut; // Udp应答超时时间 int nUdpRetransTimes; // Udp重传次数 int nSmsTimeOut; // Sms应答超时时间 int nSmsRetransTimes; // Sms重传次数 NET_JT_SERVER_INFO stuServer[10]; // 服务器参数 索引0主服务器 索引1从服务器 int nServerNum; // 服务器个数 NET_JT_IC_INFO stuIC; // IC卡认证中心 NET_JT_UNLOCKSERVER_INFO stuUnLockServer; // 解锁服务器 char szIMEI[32]; // IMEI }NET_CFG_JT_SERVER_INFO; ///@brief 同步时间到前端远程设备配置 typedef struct tagNET_CFG_REMOTE_DEVICE_TIME_SYNC_INFO { DWORD dwSize; // 结构体大小 UINT* pnChannels; // 支持IPC同步的通道列表; 每个成员表示对应的通道执行IPC校时,通道号从0开始 int nMaxChannel; // 申请的pnChannels有效个数 int nRetChannel; // 实际返回的数组个数, 在getconfig的时候有效 UINT nPeriod; // 同步周期(所有远程设备有效), 单位: 分钟 BOOL bEnable; // 是否开启IPC同步 }NET_CFG_REMOTE_DEVICE_TIME_SYNC_INFO; ///@brief 安全异常报警配置 typedef struct tagNET_CFG_SAFETYABNORMAL_INFO { DWORD dwSize; BOOL bEnable; // 使能 int nExceptionNum; // 有效异常报警个数 EM_EXCEPTION_TYPE stuExceptions[16]; // 异常报警类型 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_SAFETYABNORMAL_INFO; ///@brief 灵敏度 typedef enum tagEM_ACCELERATION_LEVEL { EM_ACCELERATION_KNOWN = -1, // 未知 EM_ACCELERATION_LOW, // 低 EM_ACCELERATION_MEDIUM, // 中 EM_ACCELERATION_HIGH // 高 }EM_ACCELERATION_LEVEL; ///@brief 撞车报警配置 typedef struct tagNET_CFG_VEHICLE_COLLISION_INFO { DWORD dwSize; BOOL bEnable; // 使能 EM_ACCELERATION_LEVEL emAcceleration; // 灵敏度 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_VEHICLE_COLLISION_INFO; ///@brief 侧翻报警配置 typedef struct tagNET_CFG_VEHICLE_TURNOVER_INFO { DWORD dwSize; BOOL bEnable; // 使能 EM_ACCELERATION_LEVEL emAcceleration; // 灵敏度 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_VEHICLE_TURNOVER_INFO; ///@brief 急转弯报警配置 typedef struct tagNET_CFG_VEHICLE_SUDDENTURN_INFO { DWORD dwSize; BOOL bEnable; // 使能 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_VEHICLE_SUDDENTURN_INFO; ///@brief 急加速报警配置 typedef struct tagNET_CFG_VEHICLE_ACCELERATION_INFO { DWORD dwSize; BOOL bEnable; // 使能 int nThreshold; // 报警阈值.超过该值触发报警, 单位0.1m/s2 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_VEHICLE_ACCELERATION_INFO; ///@brief 急减速报警配置 typedef struct tagNET_CFG_VEHICLE_DECELERATION_INFO { DWORD dwSize; BOOL bEnable; // 使能 int nThreshold; // 报警阈值.超过该值触发报警, 单位0.1m/s2 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_VEHICLE_DECELERATION_INFO; ///@brief ACC 报警事件的配置 typedef struct tagNET_CFG_VEHICLE_ACC_INFO { DWORD dwSize; BOOL bAACOnEnable; // ACC打开 NET_ALARM_MSG_HANDLE stuACCOnEventHandler; // ACC打开下报警联动 BOOL bAACOffEnable; // ACC关闭 NET_ALARM_MSG_HANDLE stuACCOffEventHandler; // ACC关闭下报警联动 }NET_CFG_VEHICLE_ACC_INFO; ///@brief 打哈欠报警上报控制参数 typedef struct tagNET_VEHICLE_YAWNING_CONTROL_INFO { UINT nInTime; // 时间段 例如 10分钟 单位秒 UINT nRecvTimes; // 时间段内例如10分钟内接收一定的次数,该报警上报一次 BYTE bReserverd[64]; // 保留字节 }NET_VEHICLE_YAWNING_CONTROL_INFO; ///@brief 闭眼报警上报控制参数 typedef struct tagNET_VEHICLE_EYESCLOSED_CONTROL_INFO { UINT nInTime; // 时间段 例如 10分钟 单位秒 UINT nRecvTimes; // 时间段内例如10分钟内接收一定的次数,该报警上报一次 BYTE bReserverd[64]; // 保留字节 }NET_VEHICLE_EYESCLOSED_CONTROL_INFO; ///@brief DSM报警控制上传配置 typedef struct tagNET_CFG_VEHICLE_DSMALARMCONTROL_INFO { DWORD dwSize; NET_VEHICLE_YAWNING_CONTROL_INFO stuYawning; // 打哈欠报警上报控制参数 NET_VEHICLE_EYESCLOSED_CONTROL_INFO stuEyesClosed; // 闭眼报警上报控制参数 }NET_CFG_VEHICLE_DSMALARMCONTROL_INFO; ///@brief 车载未巡检报警的使能状态和触发时间配置 typedef struct tagNET_CFG_VEHICLE_NOT_INSPECT_ALARM_INFO { DWORD dwSize; BOOL bEnable; // 未巡检报警使能 int nDelayTime; // 闭眼报警上报控制参数 }NET_CFG_VEHICLE_NOT_INSPECT_ALARM_INFO; ///@brief 输出有效模式 typedef enum tagEM_REMOTE_ALARMOUT_POLE { EM_REMOTE_ALARMOUT_POLE_UNKNOWN, // 未知 EM_REMOTE_ALARMOUT_POLE_LOW, // 低电平有效 EM_REMOTE_ALARMOUT_POLE_HIGH, // 高电平有效 } EM_REMOTE_ALARMOUT_POLE; ///@brief 报警输出绑定的输出事件类型 typedef enum tagEM_BIND_EVENT_TYPE { EM_BIND_EVENT_TYPE_UNKNOWN = -1, // 未知 EM_BIND_EVENT_TYPE_CTR_PHONE, // 由电话控制 EM_BIND_EVENT_TYPE_CTR_PASS, // 由密码控制 EM_BIND_EVENT_TYPE_SYS_ARM, // 系统臂 EM_BIND_EVENT_TYPE_SYS_DISARM, // 系统解除 EM_BIND_EVENT_TYPE_REPORT, // 事件报告 EM_BIND_EVENT_TYPE_COMM_FAIL, // 无法传达事件 EM_BIND_EVENT_TYPE_PSTN_OFF, // PSTN断线 EM_BIND_EVENT_TYPE_BELL_SIREN, // 警铃/警笛线切断或短路 EM_BIND_EVENT_TYPE_SYS_ALARM, // 系统报警 EM_BIND_EVENT_TYPE_SILENT, // 无声系统警报或恐慌 EM_BIND_EVENT_TYPE_FIRE_ALARM, // 火警警报 EM_BIND_EVENT_TYPE_ZONE01_OPEN, // 01区开口 EM_BIND_EVENT_TYPE_KEY_FOB, // 遥控钥匙 } EM_BIND_EVENT_TYPE; ///@brief 报警输出时间段 typedef struct tagNET_REMOTE_ALARMOUT_TIME { BOOL bEnable; // 分时段报警输出使能 NET_CFG_TIME_SCHEDULE stuTimeSection; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段 BYTE bReserverd[64]; // 保留字节 } NET_REMOTE_ALARMOUT_TIME; ///@brief 远程报警输出信息 typedef struct tagNET_REMOTE_ALARMOUT_INFO { char szChnName[128]; // 报警输出通道名称 char szOutputType[32]; // 报警输出类型, 用户自定义 int nOutputMode; // 输出模式, 0-自动报警, 1-强制报警, 2-关闭报警, 3- 开关模式 int nPulseDelay; // 脉冲模式输出时间, nOutputMode为0或3时有效, 单位为秒(0-255秒) int nAlarmDelay; // 延时时间,单位:秒 取值范围 5~300,即触发报警后延时多少秒开始报警输出, int nSlot; // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推, -1表示无效 int nLevel1; // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, 从0开始, -1表示无效 BOOL abLevel2; // 表示nLevel2字段是否存在 int nLevel2; // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, 从0开始 EM_REMOTE_ALARMOUT_POLE emPole; // 输出有效模式 UINT nBindEventNum; // 报警输出绑定的输出事件个数 EM_BIND_EVENT_TYPE emBindEventType[32];// 报警输出绑定的输出事件类型 NET_REMOTE_ALARMOUT_TIME stuTimeSchedule; // 报警输出时间段控制 BYTE bReserverd[256]; // 保留字节 } NET_REMOTE_ALARMOUT_INFO; ///@brief 远程报警输出配置 typedef struct tagNET_CFG_REMOTE_ALARMOUT_INFO { DWORD dwSize; // 结构体大小 UINT nRemoteAlarmOutNum; // 远程报警输出通道个数 NET_REMOTE_ALARMOUT_INFO stuRemoteAlarmOut[128]; // 远程报警输出信息 } NET_CFG_REMOTE_ALARMOUT_INFO; ///@brief 制冷机剩余时间提示 typedef struct tagNET_CFG_REMAINDER_TIME_WARN_INFO { DWORD dwSize; // 结构体大小 UINT nWarnThreshold; // 制冷机剩余时间提示阈值,单位小时 }NET_CFG_REMAINDER_TIME_WARN_INFO; ///@brief 配置二维码有效时间 typedef struct tagNET_CFG_QR_CODE_INFO { DWORD dwSize; // 结构体大小 UINT nValidTime; // 业主二维码有效时间,单位分钟 }NET_CFG_QR_CODE_INFO; ///@brief 流量异常告警配置信息 typedef struct tagNET_FLOW_LOWER_INFO { BOOL bEnable; // 使能 UINT nThreshold; // 阈值, 百分比 BYTE bReserverd[1024]; // 保留字节 } NET_FLOW_LOWER_INFO; ///@brief 端口拥塞告警配置信息 typedef struct tagNET_PORT_CONGEST_INFO { BOOL bEnable; // 使能 UINT nThreshold; // 阈值, 百分比 BYTE bReserverd[1024]; // 保留字节 } NET_PORT_CONGEST_INFO; ///@brief NMP系统全局管理配置 typedef struct tagNET_CFG_NMP_GLOBAL_INFO { DWORD dwSize; // 结构体大小 BOOL bSwitchOffline; // 交换机离线告警使能 BOOL bTerminalOffline; // 终端离线告警使能 BOOL bLoopDetect; // 环路检测告警使能 BOOL bIPConflict; // IP冲突检测使能 NET_FLOW_LOWER_INFO stuFlowLowerInfo; // 流量异常告警配置信息 NET_PORT_CONGEST_INFO stuPortCongestInfo; // 端口拥塞告警配置信息 } NET_CFG_NMP_GLOBAL_INFO; ///@brief 热成像测温点温度异常报警配置 typedef struct tagNET_CFG_HEAT_IMAGING_TEMPER_INFO { DWORD dwSize; BOOL bEnable; // 使能 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_HEAT_IMAGING_TEMPER_INFO; ///@brief 网络访问模式 typedef enum tagEM_NET_ACCESS_TYPE { EM_NET_ACCESS_TYPE_UNKNOWN = -1, // 未知 EM_NET_ACCESS_TYPE_OFF, // 未开启 EM_NET_ACCESS_TYPE_ALLOW, // 允许名单 EM_NET_ACCESS_TYPE_BLOCK, // 禁止名单 } EM_NET_ACCESS_TYPE; ///@brief 允许名单控制地址信息 typedef struct tagNET_ALLOW_ADDR_INFO { int nEnableState; // 针对子项的使能情况, 0: 使能(默认) 1:不使能 char szBeginIP[64]; // 起始ip, Ipv4/Ipv6地址; 内部根据分割符进行区分,’.’表示ipv4,’:’表示ipv6 char szEndIP[64]; // 结束ip, 如果BeginIP==EndIP,表明只允许该地址; 如果都为"0.0.0.0"(Ipv4)/"::"(Ipv6)表明该字段将被忽略; // 注:必须和BeginIP是同一类型,即都为Ipv4或者Ipv6, 不能交叉 UINT nBeginPort; // 起始端口号, 0表明无效端口,不需要关心该值 UINT nEndPort; // 结束端口号, 如果BeginPort==EndPort,表明只允许该端口; 如果都为0该字段被忽略 char szMac[20]; // Mac地址, 忽略大小写,必须以":"分割; 其中"0:0:0:0:0:0",表明忽略该字段 BYTE bReserverd[1024]; // 保留字节 } NET_ALLOW_ADDR_INFO; ///@brief 禁止名单控制地址信息 typedef struct tagNET_BLOCK_ADDR_INFO { int nEnableState; // 针对子项的使能情况, 0: 使能(默认) 1:不使能 char szBeginIP[64]; // 起始ip, Ipv4/Ipv6地址; 内部根据分割符进行区分,’.’表示ipv4,’:’表示ipv6 char szEndIP[64]; // 结束ip, 如果BeginIP==EndIP,表明只禁用该地址; 如果都为"0.0.0.0"(Ipv4)/"::"(Ipv6)表明该字段将被忽略; // 注:必须和BeginIP是同一类型,即都为Ipv4或者Ipv6, 不能交叉 UINT nBeginPort; // 起始端口号, 0表明无效端口,不需要关心该值 UINT nEndPort; // 结束端口号, 如果BeginPort==EndPort,表明只禁用该端口; 如果都为0该字段被忽略 char szMac[20]; // Mac地址, 忽略大小写,必须以":"分割; 其中"0:0:0:0:0:0",表明忽略该字段 BYTE bReserverd[1024]; // 保留字节 } NET_BLOCK_ADDR_INFO; ///@brief NTP 校时地址信息 typedef struct tagNET_NTP_ADDR_INFO { int nEnableState; // 针对子项的使能情况, 0: 使能(默认) 1:不使能 char szBeginIP[64]; // 起始ip, 为IP时同网络访问的字段含义; 为域名时内部会进行DNS解析,会允许解析到的全部IP地址。 char szEndIP[64]; // 结束ip, 具体含义同szBeginIP BYTE bReserverd[1020]; // 保留字节 } NET_NTP_ADDR_INFO; ///@brief NTP校时允许访问名单信息 typedef struct tagNET_NTP_ALLOW_ACCCESS_INFO { BOOL bEnable; // 是否开启 UINT nNtpAddrNum; // NTP 校时地址个数 NET_NTP_ADDR_INFO stuNtpAddrInfo[64]; // NTP 校时地址列表 BYTE bReserverd[1024]; // 保留字节 } NET_NTP_ALLOW_ACCCESS_INFO; ///@brief 网络访问规则 typedef struct tagNET_NETACCESS_RULE_INFO { EM_NET_ACCESS_TYPE emNetAccessType; // 访问模式 UINT nAllowAddrNum; // 允许名单控制地址个数 NET_ALLOW_ADDR_INFO stuAllowAddrInfo[128]; // 允许名单控制地址列表 BYTE bReserverd1[4]; // 字节 对齐 UINT nBlockAddrNum; // 禁止名单控制地址个数 NET_BLOCK_ADDR_INFO stuBlockAddrInfo[128]; // 禁止名单控制地址列表 BYTE bReserverd[1024]; // 保留字节 } NET_NETACCESS_RULE_INFO; ///@brief 防火墙过滤规则配置 typedef struct tagNET_CFG_IP_TABLE_FILTER_INFO { DWORD dwSize; // 结构体大小 BOOL bBanPing; // 是否禁用ping功能 NET_NETACCESS_RULE_INFO stuNetAccessRule; // 网络访问规则 NET_NTP_ALLOW_ACCCESS_INFO stuNtpAllowAccessInfo; // Ntp校时允许访问名单信息,相关服务端口固定为123 BOOL bBanhalfConn; // 是否开启半连接防范 } NET_CFG_IP_TABLE_FILTER_INFO; ///@brief 冗余录像存储策略配置, 对应配置项 NET_EM_CFG_REDUNDANT_STORAGE_STRATEGY typedef struct tagNET_CFG_REDUNDANT_STORAGE_STRATEGY_INFO { DWORD dwSize; // 结构体大小 int nPackMode; // 文件打包模式, -1:未知, 0:按文件大小打包, 1:按文件时长打包 TP_U64 nMaxFileSize; // 最大文件大小,以字节为单位 UINT nMaxFileTime; // 最大文件时长,以秒为单位 UINT nPreRecord; // 录像预录时间,以秒为单位 UINT nRecordLatch; // 录像延迟时间,以秒为单位 BYTE bReserverd[4]; // 字节对齐 } NET_CFG_REDUNDANT_STORAGE_STRATEGY_INFO; ///@brief 录像不足配置天数报警, 对应配置项 NET_EM_CFG_RECORD_SHORTAGE_ALARM typedef struct tagNET_CFG_RECORD_SHORTAGE_ALARM_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能 int nValidDay; // 天数 BYTE bReserverd[256]; // 字节对齐 } NET_CFG_RECORD_SHORTAGE_ALARM_INFO; ///@brief 路段对应的车道列表 typedef struct tagNET_LANE_LIST_INFO { int nLaneNumber; // 车道编号 int nLaneType; // 车行灯进口方向车道类型 unsigned int nWaitingArea; // 是否为待行区 0为车道不是待行区,1标示车道有待行区 char szReserved[32]; // 预留字节 }NET_LANE_LIST_INFO; ///@brief 路段数据列表信息 typedef struct tagNET_SIGNAL_ROAD_LIST_INFO { int nRoadSectionId; // 路段Id int nIsTwiceCrossing; // 是否有二次过街 0没有,1有二次过街 char szRoadSectionName[32]; // 路段名称 int nRoadSectionDir; // 路段方向0 - 北 | 1 - 东北 | 2 - 东 | 3 - 东南 | 4 - 南 | 5 - 西南 | 6 - 西 | 7 - 西北 | int nRoadSectionInLaneNum; // 车行灯进口方向的车道数 int nRoadSectionOutLaneNum; // 车行灯出口方向的车道数 int nLaneListNum; // 该路段对应的车道列表个数 NET_LANE_LIST_INFO stuLaneListInfo[8]; // 该路段对应的车道列表 char szReserved[32]; // 预留字节 }NET_SIGNAL_ROAD_LIST_INFO; ///@brief 路口数据列表信息 typedef struct tagNET_CROSS_LIST_INFO { int nCrossType; // 路口类型 int nRoadListInfoNum; // 路段数据列表个数 NET_SIGNAL_ROAD_LIST_INFO stuRoadListInfo[8]; // 路段数据列表 char szReserved[32]; // 预留字节 }NET_CROSS_LIST_INFO; ///@brief 路口数据列表配置,对应配置项NET_EM_CFG_RTSC_SCH_CROSSLIST typedef struct tagNET_CFG_RTSC_SCH_CROSSLIST_INFO { DWORD dwSize; // 结构体大小 int nCrossListInfoNum; // 路口数据列表信息个数 NET_CROSS_LIST_INFO stuCrossListInfo[2]; // 路口数据列表信息 }NET_CFG_RTSC_SCH_CROSSLIST_INFO; ///@brief 通道列表信息 typedef struct tagNET_CHANNELS_INFO { int nChannelNumber; // 通道编号 int nChannelPhase; // 通道关联的相位或跟随相位,相位编号从1开始 int nLampType; // 通道所接灯组的类型 | 16 圆盘灯 | 17 左转箭头灯 | 18 直行箭头灯 | 19 右转箭头灯 | 20 掉头箭头灯 | // | 21 单个行人灯| 22 左转非机动车灯 | 23 直行非机动车灯 | 24 公交信号灯 | 25 入口行人灯,进口为实线有箭头线的斑马线区 | 26 出口行人灯,出口为虚线无箭头线的斑马线区 | int nCrossType; // 通道所接灯组的所在路口;0-单路口,1-短连接路口1,2-短连接路口 int nRoadSectionDir; // 进口方向 | 0 北 | 1 东北 | 2 东| 3 东南 | 4 南 | 5 西南 | 6 西 | 7 西北 | int nChannelControlType; // 通道类型;1-其他,2-机动车,3-行人 char szReserved[32]; // 预留字节 }NET_CHANNELS_INFO; ///@brief 通道表, 对应配置项NET_EM_CFG_RTSC_SCH_CHANNELS typedef struct tagNET_CFG_RTSC_SCH_CHANNELS_INFO { DWORD dwSize; // 结构体大小 int nMaxChannels; // 最大通道个数,只读 int nChannelsInfoNum; // 通道列表个数 NET_CHANNELS_INFO stuChannelsInfo[36]; // 通道列表 }NET_CFG_RTSC_SCH_CHANNELS_INFO; ///@brief 相位列表信息 typedef struct tagNET_PHASES_INFO { int nGridNo; // 相位在栅栏内的位置 int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数,默认为1, A1为1,A2该字段为 int nStartDelayTime; // 迟起时间 int nStartYellowTime; // 预黄时间 int nGreenTime; // 绿信比时间(迟起+预黄+绿灯+绿闪+黄灯+红灯) int nGreenFlashTime; // 绿闪时间 int nYellowTime; // 黄灯时间 int nRedclearTime; // 红灯清空 int nMinimumGreen; // 最小绿灯时间 int nMaximumGreen; // 最大绿灯时间 int nBeforeReduction; // 感应控制递减前时间 int nAddedInitial; // 感应控制延长绿时间 int nPhaseKeepState; // 相位保持状态 0-不保持,1-黄闪,2-常红,3-红闪,4-灭灯 BOOL bFreeEnable; // 相位是否启用感应控制 int nSelectDetectorsNum; // 启用的检测器个数 int nSelectDetectors[128]; // 启用的检测器编号 char szReserved[32]; // 预留字节 }NET_PHASES_INFO; ///@brief 栅栏列表信息 typedef struct tagNET_BARRIER_LIST_INFO { int nBarrierNo; // 栅栏编号 int nPhaseNum; // 相位列表个数 NET_PHASES_INFO stuPhaseInfo[16]; // 相位列表 char szReserved[32]; // 预留字节 }NET_BARRIER_LIST_INFO; ///@brief 环设备信息 typedef struct tagNET_RINGS_LIST_INFO { int nRingNo; // 环编号 int nBarrierNum; // 栅栏列表个数 NET_BARRIER_LIST_INFO stuBarrierInfo[4]; // 栅栏列表 char szReserved[32]; // 预留字节 }NET_RINGS_LIST_INFO; ///@brief 跟随相位列表信息 typedef struct tagNET_OVER_LAPS_INFO { int nOverlapNum; // 跟随相位编号 int nIncludedPhasesNum; // 跟随相位关联的主相位个数 int nIncludedPhases[16]; // 跟随相位关联的主相位数组 int nStartDelayTimeNum; // 跟随相位延时时间个数 int nStartDelayTime[16]; // 跟随相位延时时间数组 char szReserved[32]; // 预留字节 }NET_OVER_LAPS_INFO; ///@brief 周期方案列表信息 typedef struct tagNET_CYCLE_PLAN_INFO { int nCycle; // 周期时长 int nCyclePlanNum; // 周期方案编号 char szCyclePlanName[32]; // 周期方案名称 int nOffSet; // 相位差时间 BOOL bCoordEnable; // 是否相位差协调 int nRingNum; // 环列表个数 char szReserved1[4]; // 字节对齐 NET_RINGS_LIST_INFO stuRingInfo[4]; // 环列表 int nOverLapsNum; // 跟随相位列表个数 char szReserved2[4]; // 字节对齐 NET_OVER_LAPS_INFO stuOverLapsInfo[16]; // 跟随相位列表 char szReserved[32]; // 预留字节 }NET_CYCLE_PLAN_INFO; ///@brief 周期方案表, 对应配置项NET_EM_CFG_RTSC_SCH_PLANS typedef struct tagNET_CFG_RTSC_SCH_PLANS_INFO { DWORD dwSize; // 结构体大小 int nMaxCyclePlans ; // 最大方案个数 只读 int nCyclePlanNum; // 周期方案列表个数 NET_CYCLE_PLAN_INFO stuCyclePlan[20]; // 周期方案列表 }NET_CFG_RTSC_SCH_PLANS_INFO; ///@brief 时段计划列表信息 typedef struct tagNET_DAY_ACTION_INFO { int nActionNumber; // 时段编号 int nBeginHour; // 时段的起始小时 int nBeginMinute; // 时段的起始分钟 int nCyclePlanNum; // 周期方案编号 int nCyclePlanControlMode; // 时段模式| 1定时控制 | 242单点自适应模式 | 246实时控制模式 | 247灭灯模式 | 224行人优先控制模式 | 225 拥堵溢出控制模式 | 226 夜间请求模式 | // | 250手动控制 | 252全红控制 | 254感应控制 | 255黄闪控制 | char szReserved[32]; // 预留字节 }NET_DAY_ACTION_INFO; ///@brief 日计划方案信息 typedef struct tagNET_DAY_PLAN_INFO { int nDayPlanNumber; // 日计划编号,从1开始 char szDayPlanName[32]; // 日计划名称 char szReserved1[4]; // 字节对齐 int nDayActionNum; // 时段计划列表个数 NET_DAY_ACTION_INFO stuDayActionInfo[24]; // 时段计划列表 char szReserved[32]; // 预留字节 }NET_DAY_PLAN_INFO; ///@brief 周计划信息 typedef struct tagNET_WEEK_PLAN_INFO { int nWeekNumber; // 星期类型| 0 星期日 | 1 星期一 | 2 星期二 | 3 星期三 | 4 星期四 | 5 星期五 | 6 星期六 | int nDayPlanNumber; // 日计划编号,从1开始 char szDayPlanName[64]; // 日计划名称 char szReserved[32]; // 预留字节 }NET_WEEK_PLAN_INFO; ///@brief 周计划列表信息 typedef struct tagNET_WEEKS_PLAN_INFO { int nWeekPlanNumber; // 周计划编号 int nWeekPlanNum; // 周计划个数 char szWeekPlanName[32]; // 周计划名称 NET_WEEK_PLAN_INFO stuWeekPlanInfo[7]; // 周计划 char szReserved[32]; // 预留字节 }NET_WEEKS_PLAN_INFO; ///@brief 日常调度列表信息 typedef struct tagNET_COMMON_DATE_PLAN_INFO { int nDatePlanNumber; // 日常调度编号 int nBeginMonth; // 日期开始月份 int nBeginDay; // 日期开始日 int nEndMonth; // 日期结束月份 int nEndDay; // 日期结束日 int nWeekPlanNumber; // 周调度编号 char szWeekPlanName[64]; // 周调度名称 char szReserved[32]; // 预留字节 }NET_COMMON_DATE_PLAN_INFO; ///@brief 特殊调度列表信息 typedef struct tagNET_SPECIAL_DATE_PLAN_INFO { int nDatePlanNumber; // 特殊调度编号 int nBeginMonth; // 日期开始月份 int nBeginDay; // 日期开始日 int nEndMonth; // 日期结束月份 int nEndDay; // 日期结束日 int nWeekPlanNumber; // 周计划 char szWeekPlanName[32]; // 周计划名称 char szReserved[32]; // 预留字节 }NET_SPECIAL_DATE_PLAN_INFO; ///@brief 红绿灯调度计划列表,对应配置项NET_EM_CFG_RTSC_SCH_MANAGE typedef struct tagNET_CFG_RTSC_SCH_MANAGE_INFO { DWORD dwSize; // 结构体大小 int nMaxDayPlans; // 最大日方案数 int nMaxDayActions ; // 最大时段数 int nMaxWeekPlans; // 最大周计划数 int nMaxCommonDatePlans; // 最大日常调度方案个数 int nMaxSpecialDatePlans; // 最大特殊调度方案个数 int nDayplansNum; // 日计划方案个数 NET_DAY_PLAN_INFO stuDayPlanInfo[56]; // 日计划方案 int nWeekPlansNum; // 周计划列表个数 NET_WEEKS_PLAN_INFO stuWeeksPlanInfo[20]; // 周计划列表 int nCommonDatePlanNum; // 日常调度列表个数 NET_COMMON_DATE_PLAN_INFO stuCommonDatePlanInfo[16]; // 日常调度列表 int nSpecialDateNum; // 特殊调度列表个数 NET_SPECIAL_DATE_PLAN_INFO stuSpecialDatePlan[16]; // 特殊调度列表 }NET_CFG_RTSC_SCH_MANAGE_INFO; ///@brief 检测器列表信息 typedef struct tagNET_SIGNAL_VEHICLE_DETECTOR_INFO { int nVehicleDetectorNumber; // 检测器编号 int nVehicleDetectorRoadNum; // 车道编号 int nVehicleDetectorType; // 1:线圈 2:视频1 (电警、卡口,实时过车协议) 3:视频2 (无锡所相机) 4:地磁 5:视频3(流量相机,压占信息协议) 6:视频4-出口 int nVehicleDetectorCallPhase; // 呼叫主相位 int nvehicleDetectorPost; // 检测器位置 1:前置 2:后置 int nVehiclePrority; // 检测器优先级(1表示第一优先级), 取值1-2 char szVideoDetectorIp[16]; // 视频检测器IP int nVideoDetectorPort; // 视频检测器端口 char szVideoDetectorUser[72]; // 视频检测器用户名 char szVideoDetectorPassword[72]; // 视频检测器密码 int nVehicleDetectorChannelNum; // 检测通道编号编号范围为1-96,视频1车道号是1-40,视频2车道号是41-96,视频3车道号是1-40 int nVideoDetectorChn; // 相机里的车道编号,范围1-9 int nVehicleDetectorentryDir; // 进口方向 int nVehicleDetectorentryType; // 进口类型 int nVehicleDetectorPortNum; // 在非视频检测器模式下,需要设置接线端子编号 char szReserved[32]; // 预留字节 }NET_SIGNAL_VEHICLE_DETECTOR_INFO; ///@brief 检测器列表,对应配置项NET_EM_CFG_RTSC_SCH_VEHICLE_DETECTORLIST typedef struct tagNET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO { DWORD dwSize; // 结构体大小 int nMaxVehicleDetectors; // 最大车辆检测器数 int nVehicleDetectorNum; // 检测器列表个数 NET_SIGNAL_VEHICLE_DETECTOR_INFO stuVehicleDetectorInfo[32]; // 检测器列表 }NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO; ///@brief 行人检测器列表信息 typedef struct tagNET_PED_DETECTOR_INFO { int nPedestrianDetectorNumber; // 行人检测器编号,1-16 int nPedestrianDetectorCallPhase; // 行人检测器关联的相位 int nPedestrianDetectorPortNum; // 行人检测器对应的接线端子 int nPedestrianDetectorType; // 检测器类型1:行人按钮 2视频 char szPedestrianDetectorIp[16]; // 视频检测器IP int nPedestrianDetectorPort; // 视频检测器端口 char szPedestrianDetectorUser[72]; // 视频检测器用户名 char szPedestrianDetectorPwd[72]; // 视频检测器密码 int nPedestrianDetectorArea; // 检测区1,2 char szReserved[32]; // 预留字节 }NET_PED_DETECTOR_INFO; ///@brief 行人检测器列表, 对应配置项NET_EM_CFG_RTSC_SCH_PEDDETECTOR_LIST typedef struct tagNET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO { DWORD dwSize; // 结构体大小 int nMaxPedestrianDetectors; // 最大行人检测器数 int nPedDetectorNum; // 行人检测器列表个数 NET_PED_DETECTOR_INFO stuPedDetectorInfo[16]; // 行人检测器列表 }NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO; ///@brief 优先配置表信息 typedef struct tagNET_PHASE_PRIORITY_CONFIG_INFO { int nId; // 序号 int nPhaseNum; // 相位编号,仅支持单环 int nPhaseOrder; // 相位重复出现的次数 int nMinGreenThr; // 相位切换阈值 int nSkipThr; // 跳相阈值 int nEnbleDetectorsNum; // 启用检测器编号个数 int nEnbleDetectors[16]; // 启用检测器编号 char szReserved[32]; // 预留字节 }NET_PHASE_PRIORITY_CONFIG_INFO; ///@brief 行人优先智能化配置列表信息 typedef struct tagNET_PEDESTRAIN_PRIORITY_INFO { int nCycleNum; // 周期编号 int nSuspendingPeriod; // 最小优先间隔, 优先执行后的冷却时长,冷却时间内不再响应新的优先请求(1~90) int nPhasePriorityConfigNum; // 优先配置表个数 NET_PHASE_PRIORITY_CONFIG_INFO stuphasePriorityConfigInfo[255];// 优先配置表 char szReserved[256]; // 预留字节 }NET_PEDESTRAIN_PRIORITY_INFO; ///@brief 行人优先智能化配置,对应配置项NET_EM_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY typedef struct tagNET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO { DWORD dwSize; // 结构体大小 int nPedestrainPriorityNum; // 行人优先智能化配置列表个数 NET_PEDESTRAIN_PRIORITY_INFO stupedestrainPriorityInfo[20]; // 行人优先智能化配置列表 }NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO; ///@brief 检测器配置信息 typedef struct tagNET_DETECTOR_CONFIG_INFO { int nDetectorId; // 检测器id BOOL bEnable; // 是否启用 char szReserved[32]; // 预留字节 }NET_DETECTOR_CONFIG_INFO; ///@brief 相位配置信息 typedef struct tagNET_PHASE_CONFIG_INFO { int nPhaseNum; // 相位编号,仅支持单环 int nPhaseOrder; // 相位重复出现的次数 BOOL bRespondEnable; // 响应使能 float fReduceRatio; // 缩减比例(0~0.5) char szReserved[32]; // 预留字节 }NET_PHASE_CONFIG_INFO; ///@brief 通用配置信息 typedef struct tagNET_COMMON_CONFIG_INFO { float fRatioLimit; // 溢出控制占有率阈值 int nInOCTimes; // 进入溢出控制占有率满足次数 int nOutOCTimes; // 跌出溢出控制占有率满足次数 char szReserved[32]; // 预留字节 }NET_COMMON_CONFIG_INFO; ///@brief 溢出控制智能化配置列表信息 typedef struct tagNET_OVER_FLOW_CONTROL_INFO { int nCycleNum; // 周期编号 NET_COMMON_CONFIG_INFO stuCommnCofigInfo; // 通用配置 int nDetectConfigNum; // 检测器配置个数 NET_DETECTOR_CONFIG_INFO stuDetectConfigInfo[32]; // 检测器配置 int nPhaseConfigNum; // 相位配置个数 NET_PHASE_CONFIG_INFO stuPhaseConfigInfo[16]; // 相位配置 char szReserved[32]; // 预留字节 }NET_OVER_FLOW_CONTROL_INFO; ///@brief 溢出控制列表,对应配置项NET_EM_CFG_RTSC_SCH_OVERFLOW_CONTROL typedef struct tagNET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO { DWORD dwSize; // 结构体大小 int nOverflowControlNum; // 溢出控制智能化配置列表个数 NET_OVER_FLOW_CONTROL_INFO stuOverFlowControlInfo[20]; // 溢出控制智能化配置列表 }NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO; ///@brief 夜间相位配置表信息 typedef struct tagNET_PHASE_CONFIG_NIGHT_INFO { int nPhaseNum; // 相位编号,仅支持单环 int nPhaseOrder; // 相位重复出现的次数 BOOL bHold; // 是否驻留 int nMaxInterval; // 最大请求间隔(0~160) char szReserved[32]; // 预留字节 }NET_PHASE_CONFIG_NIGHT_INFO; ///@brief 夜间请求智能化配置列表信息 typedef struct tagNET_NIGHT_ASK_INFO { int nCycleNum; // 周期编号 int nPhaseConfigNum; // 夜间相位配置表个数 NET_PHASE_CONFIG_NIGHT_INFO stuPhaseConfigNightInfo[16]; // 夜间相位配置表 char szReserved[32]; // 预留字节 }NET_NIGHT_ASK_INFO; ///@brief 夜间请求,对应配置项NET_EM_CFG_RTSC_SCH_NIGHTASK typedef struct tagNET_CFG_RTSC_SCH_NIGHTASK_INFO { DWORD dwSize; // 结构体大小 int nNightAskNum; // 夜间请求智能化配置列表个数 NET_NIGHT_ASK_INFO stuNightAskInfo[20]; // 夜间请求智能化配置列表 }NET_CFG_RTSC_SCH_NIGHTASK_INFO; ///@brief 周期设置信息 typedef struct tagNET_CYCLE_SETTINGS_INFO { int nCycleMax; // 周期上限,最大饱和度对应的周期值nMaxCyc(30 ~ 240) int nCycleMin; // 周期下限,最小饱和度对应的周期值nMinCyc(30 ~ 240) float fSaturitionUpLimit; // 饱和度约束上限(0.000~1.000) float fSaturitionDnLimit; // 饱和度约束下限(0.000~1.000) int nCycleUpLimit; // 周期锁定约束上限(30 ~ 240) int nCycleDnLimit; // 周期锁定约束下限(30 ~ 240) int nCycleUpStep; // 周期上升最大步长(1 ~ 20) int nCycleDnStep; // 周期下降最大步长(1 ~ 20) int nSmoothCycNum; // 平滑周期饱和度个数(1 ~ 5) int nPermitDoubleCyc; // 是否允许双周期:0不允许 1允许 int nDoubleCycThreshold; // 触发双周期的阈值(60 ~ 240) char szReserved[32]; // 预留字节 }NET_CYCLE_SETTINGS_INFO; ///@brief 选票设置信息 typedef struct tagNET_VOTE_SETTINGS_INFO { int nCycleChangeTolerate; // 周期容许秒数:周期增加或减少幅度未超出容许值,认为周期未增加或减少(0 ~ 10) int nCycleUpVote; // 周期增加所需票数(1 ~ 5) int ncycleDnVote; // 周期减少所需票数(1 ~ 5) char szReserved[32]; // 预留字节 }NET_VOTE_SETTINGS_INFO; ///@brief 相位优先配置表信息 typedef struct tagNET_PHASE_PRIORITYS_INFO { int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数 BOOL bPriority; // 是否优先 char szReserved[32]; // 预留字节 }NET_PHASE_PRIORITYS_INFO; ///@brief 检测器配置表 typedef struct tagNET_DETECTOR_SETTINGS_INFO { int nDetectorNumber; // 检测器编号 int nDetectorRoadNum; // 车道编号 int nDetectorentryDir; // 进口方向 int nDetectorentryType; // 进口类型 BOOL bJoinPhaseSplit; // 参与相位饱和度计算 BOOL bJoinCycleSplit; // 参与周期饱和度计算 char szReserved[32]; // 预留字节 }NET_DETECTOR_SETTINGS_INFO; ///@brief 关闭配置信息 typedef struct tagNET_CLOSURE_SETTINGS_INFO { int nRingNo; // 相位所属环编号 int nBarrierNo; // 相位所属栅栏编号 int nGridNo; // 相位所属栅栏内的位置 int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数 char szReferDeviceId[72]; // 参照设备id char szReferDeviceName[72]; // 参照设备名称 int nReferPlanNum; // 参照方案编号 char szReferPlanName[72]; // 参照方案名称 int nReferPhaseNum; // 参照相位 int nReferPhaseOrder; // 参照相位重复出现的次数 double dSplitTime; // 绿信比/时间 char szReserved1[4]; // 字节对齐 int nReferType; // 类型,1绿信比/2时间 char szReserved[32]; // 预留字节 }NET_CLOSURE_SETTINGS_INFO; ///@brief 相位表信息 typedef struct tagNET_PHASE_LIST_INFO { int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数 int nRingNo; // 相位所属环编号 int nBarrierNo; // 相位所属栅栏编号 int nGridNo; // 相位所属栅栏内的位置 BOOL bUsePhaseTime; // 是否为时长变化 int nPhaseTime; // 相位时长 int nPhaseUpLimit; // 相位时长上限(0 ~ 100) int nPhaseDnLimit; // 相位时长下限(0 ~ 100) BOOL bUseSplitTime; // 是否为绿信比变化 double dSplitBase; // 基准方案绿信比 int nSplitUpLimit; // 绿信比变化最大值 int nSplitDnLimit; // 绿信比变化最小值 double dSaturitionWeight; // 相位饱和度加权值 double dSplitMaxStep; // 相位每周期绿信比最大变化值 BOOL bPermitMaxLaneSaturition; // 相位饱和度计算策略:0:饱和度=average(车道饱和度) 1:饱和度=max(车道饱和度) char szReserved[32]; // 预留字节 }NET_PHASE_LIST_INFO; ///@brief 相位优先配置 typedef struct tagNET_PHASE_PRIORITY_INFO { int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数 BOOL bPriority; // 是否优先 char szReserved[32]; // 预留字节 }NET_PHASE_PRIORITY_INFO; ///@brief 检测器配置表 typedef struct tagNET_DETECTOR_SETTING_INFO { int nDetectorNum; // 检测器编号 int nDetectorRoadNum; // 车道编号 int nDetectorentryDir; // 进口方向 int nDetectorentryType; // 进口类型 BOOL bJoinPhaseSplit; // 参与相位饱和度计算 BOOL bJoinCycleSplit; // 参与周期饱和度计算 char szReserved[32]; // 预留字节 }NET_DETECTOR_SETTING_INFO; ///@brief 相位所属配置表 typedef struct tagNET_CLOSURE_SETTING_INFO { int nRingNo; // 相位所属环编号 int nBarrierNo; // 相位所属栅栏编号 int nGridNo; // 相位所属栅栏内的位置 int nPhaseNum; // 相位编号 int nPhaseOrder; // 相位重复出现的次数 char szReferDeviceId[72]; // 参照设备id char szReferDeviceName[72]; // 参照设备名称 int nReferPlanNum; // 参照方案编号 char szReferPlanName[72]; // 参照方案名称 int nReferPhaseNum; // 参照相位 int nReferPhaseOrder; // 参照相位重复出现的次数 double dbSplitTime; // 绿信比/时间 int nReferType; // 类型,1绿信比/2时间 char szReserved1[4]; // 字节对齐 char szReserved[32]; // 预留字节 }NET_CLOSURE_SETTING_INFO; ///@brief 相位设置信息 typedef struct tagNET_PHASE_SETTINGS_INFO { int nPhaseListNum; // 相位表个数 NET_PHASE_LIST_INFO stuPhaseListInfo[16]; // 相位表 int nPhasePrioritysNum; // 相位优先配置表个数 NET_PHASE_PRIORITY_INFO stuPhasePriorityInfo[16]; // 相位优先配置 int nDetectorSettingsNum; // 检测器配置表个数 NET_DETECTOR_SETTING_INFO stuDetectorSettingInfo[16]; // 检测器配置表 int nClosureSettingNum; // 相位所属表个数 NET_CLOSURE_SETTING_INFO stuClosureSettingInfo[16]; // 相位所属配置表 char szReserved[32]; // 预留字节 }NET_PHASE_SETTINGS_INFO; ///@brief 感应参数信息 typedef struct tagNET_SENIOR_INFO { int nCycleSettingNum; // 周期设置个数 NET_CYCLE_SETTINGS_INFO stuCycleSettingInfo[20]; // 周期设置 NET_VOTE_SETTINGS_INFO stuVoteSettingInfo; // 选票设置 NET_PHASE_SETTINGS_INFO stuPhaseSettingInfo; // 相位设置 char szReserved[32]; // 预留字节 }NET_SENIOR_INFO; ///@brief 饱和度与单点自适应智能化配置表信息 typedef struct tagOPTIMIZES { int nCyclePlanNum; // 周期方案编号 int nCoordinatePhaseNum; // 协调相位编号 int nCoordinatePhaseOrder; // 协调相位重复出现的次数 int nCoordinateRingNo; // 相位所属环编号 int nCoordinateBarrierNo; // 相位所属栅栏编号 int nCoordinateGridNo; // 相位所属栅栏内的位置 char szReferDeviceId[72]; // 参照设备id char szReferDeviceName[72]; // 参照设备名称 int nReferCyclePlanNum; // 参照路口的周期方案编号 char szReferCyclePlanName[72]; // 参照路口的周期方案名称 int nReferPhaseNum; // 参考相位 int nReferPhaseOrder; // 参照相位重复出现的次数 int nReferType; // 参考类型 1为早,2为晚 int nOffset; // 相位差 NET_SENIOR_INFO stuSeniorInfo; // 感应参数 char szReserved[32]; // 预留字节 }NET_OPTIMIZES_INFO; ///@brief 饱和度与单点自适应智能化配置,对应配置项NET_EM_CFG_RTSC_SCH_OPTIMIZES typedef struct tagNET_CFG_RTSC_SCH_OPTIMIZES_INFO { DWORD dwSize; // 结构体大小 int nOptimizesInfoNum; // 饱和度与单点自适应智能化配置表个数 NET_OPTIMIZES_INFO stuOptimizeInfo[20]; // 能度与单点完成配置表 }NET_CFG_RTSC_SCH_OPTIMIZES_INFO; ///@brief 可变车道属性信息 typedef struct tagNET_PROPERTY_LIST_INFO { int nVarlaneProperty; // 该指示牌支持的可变属性,最多支持七种,0表示未配置(1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐)) int nVarlaneTochanelNum; // 该指示牌对应可变属性的对应通道编号 int nVarlaneTochanelColor; // 该指示牌对应可变属性的对应的通道的灯色(1:红灯2:黄灯3:绿灯) int nVarlanevehDectNumber; // 该指示牌对应可变属性的对应的检测器编号(对应检测器表) char szReserved[32]; // 预留字节 }NET_PROPERTY_LIST_INFO; ///@brief 属性计划表信息 typedef struct tagNET_PROPERTY_PLAN_LIST_INFO { int nVarlaneProperty; // 该指示牌支持的可变属性,最多支持七种,0表示未配置(1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐)) int nVarlaneDectTime; // 可变车道对应属性的检测时间 int nQueueDissimilarity; // 可变属性的排队差(米) int nQueueLen; // 可变属性的判断起始排队长(米) char szReserved[32]; // 预留字节 }NET_PROPERTY_PLAN_LIST_INFO; ///@brief 计划表信息 typedef struct tagNET_LANE_PLAN_LIST_INFO { int nVarlaneId; // 可变车道指示牌号 int nVarlaneNumber; // 可变车道编号(车道配置页面编号) int nKeepTime; // 保持时间(分钟)0-1440 int nControlMode; // 1:固定方案; 2:自适应双向切换; 3:定向切换 int nCurrentVarlaneProperty; // 当前属性 1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐) int nPropertyPlanListNum; // 属性计划表个数 NET_PROPERTY_PLAN_LIST_INFO stuPropertyPlanInfo[7]; // 属性计划表 char szReserved[32]; // 预留字节 }NET_LANE_PLAN_LIST_INFO; ///@brief 可变车道计划表信息 typedef struct tagNET_VARLANE_PLAN_LIST_INFO { int nVarlanePatternNumber; // 可变车道方案编号(0表示未配置) char szVarlanePatternName[64]; // 可变车道方案名称 int nLanePlanNum; // 计划表个数 NET_LANE_PLAN_LIST_INFO stuLanePlanInfo[12]; // 计划表 char szReserved[32]; // 预留字节 }NET_VARLANE_PLAN_LIST_INFO; ///@brief 可变车道列表信息 typedef struct tagNET_VAR_LANE_LIST_INFO { int nVarlaneId; // 可变车道指示牌号 int nVarlaneNumber; // 可变车道编号(车道配置页面编号) int nVarlaneFlashTime; // 该指示牌对应可变属性的对应的通道的闪光时长 单位秒,0-255 S int nPropertyListNum; // 可变车道属性个数 NET_PROPERTY_LIST_INFO stuPropertyInfo[7]; // 可变车道属性 char szReserved[32]; // 预留字节 }NET_VAR_LANE_LIST_INFO; ///@brief 可变车道列表,对应配置项NET_EM_CFG_RTSC_SCH_VARLANELIST typedef struct tagNET_CFG_RTSC_SCH_VARLANELIST_INFO { DWORD dwSize; // 结构体大小 int nVarlaneListNum; // 可变车道列表个数 NET_VAR_LANE_LIST_INFO stuVarLaneListInfo[8]; // 可变车道列表 int nVarlanePlanListNum; // 可变车道计划表个数 NET_VARLANE_PLAN_LIST_INFO stuVarlanePlanListInfo[8]; // 可变车道计划表 }NET_CFG_RTSC_SCH_VARLANELIST_INFO; ///@brief 日计划时段表内容 typedef struct tagNET_DAY_ACTIONS_INFO { int nActionNumber; // 时段编号,从1开始 int nBeginHour; // 时段的起始小时 int nBeginMinute; // 时段的起始分钟 int nCyclePlanControlMode; // 时段模式 char szReserved[32]; // 预留字节 }NET_DAY_ACTIONS_INFO; ///@brief 可变车道日方案列表信息 typedef struct tagNET_DAY_PLANS_INFO { int nDayPlanNumber; // 日方案个数 char szDayPlanName[64]; // 日方案编号,从1开始 int nDayActionNum; // 日计划时段表名称 NET_DAY_ACTIONS_INFO stuDayActionInfo[24]; // 日计划时段表 char szReserved[32]; // 预留字节 }NET_DAY_PLANS_INFO; ///@brief 周计划列表信息 typedef struct tagNET_WEEK_PLANS_INFO { int nWeekPlanNumber; // 周计划编号 char szWeekPlanName[64]; // 周计划名称 int nWeekPlanNum; // 周计划个数 NET_WEEK_PLAN_INFO stuWeekPlanInfo[7]; // 周计划 char szReserved[32]; // 预留字节 }NET_WEEK_PLANS_INFO; ///@brief 特殊调度列表信息 typedef struct tagNET_SPECIAL_DATE_PLANS_INFO { int nDatePlanNumber; // 日方案编号,从1开始 int nBeginMonth; // 日期开始月份 int nBeginDay; // 日期开始日 int nEndMonth; // 日期结束月份 int nEndDay; // 日期结束日 int nWeekPlanNumber; // 周计划编号 char szWeekPlanName[64]; // 周计划名称 char szReserved[32]; // 预留字节 }NET_SPECIAL_DATE_PLANS_INFO; ///@brief 可变车道调度计划列表,对应配置项NET_EM_CFG_RTSC_SCH_VARLANE_MANAGEMENT typedef struct tagNET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO { DWORD dwSize; // 结构体大小 int nDayPlansNum; // 可变车道日方案列表个数 NET_DAY_PLANS_INFO stuDayPlansInfo[20]; // 可变车道日方案列表 int nWeekPlansNum; // 周计划列表个数 NET_WEEK_PLANS_INFO stuWeekPlansInfo[10]; // 周计划列表 int nCommonDatePlanNum; // 日常调度列表个数 NET_COMMON_DATE_PLAN_INFO stuCommonDatePlanInfo[8]; // 日常调度列表 int nSpecialDatePlanNum; // 特殊调度列表个数 NET_SPECIAL_DATE_PLANS_INFO stuSpecialDatePlanInfo[8]; // 特殊调度列表 }NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO; ///@brief 栅栏信息配置 typedef struct tagNET_BARRIERS_INFO { int nBarrierNo; // 栅栏编号,从1开始 int nPhaseNum; // 相位列表个数 NET_PHASES_INFO stuPhaseInfo[16]; // 相位列表 char szReserved[32]; // 预留字节 }NET_BARRIERS_INFO; ///@brief 环信息配置 typedef struct tagNET_RINGS_INFO { int nRingNo; // 环编号,从1开始 int nBarriersNum; // 栅栏信息个数 NET_BARRIERS_INFO stuBarriesInfo[4]; // 栅栏信息 char szReserved[32]; // 预留字节 }NET_RINGS_INFO; ///@brief 临时方案配置,对应配置项NET_EM_CFG_RTSC_TEMP_SCH typedef struct tagNET_CFG_RTSC_TEMP_SCH_INFO { DWORD dwSize; // 结构体大小 int nStartTimeNum; // 临时方案开始时间个数 int nStartTime[4]; // 临时方案开始时间 int[0]时 Int[1]分 后两位预留 int nEndTimeNum; // 临时方案结束时间个数 int nEndTime[4]; // 临时方案结束时间 int[0]时 Int[1]分 后两位预留 int nRingsNum; // 环信息个数 NET_RINGS_INFO stuRingsInfo[4]; // 环信息 int nOverLapsNum; // 跟随相位列表个数 NET_OVER_LAPS_INFO stuOverLapsInfo[16]; // 跟随相位列表 }NET_CFG_RTSC_TEMP_SCH_INFO; /**********************************************项目配置start**************************************************/ ///@brief 考试科目信息 typedef struct tagNET_EXAM_OBJ_INFO { char szName[256]; // 考试科目全称 char szAbbreviation[64]; // 考试科目简称 BOOL bRequired; // 是否为默认值 BOOL bIsUsed; // 是否正在被使用 BYTE bReserverd[1024]; // 保留字节 } NET_EXAM_OBJ_INFO; ///@brief 考试科目配置, 对应配置项NET_EM_CFG_COURSE_INFO typedef struct tagNET_CFG_COURSE_INFO { DWORD dwSize; // 结构体大小 UINT nExamObjNum; // 考试科目数量, 即stuExamNum 数组的有效元素个数 NET_EXAM_OBJ_INFO stuExamNum[128]; // 考试科目信息 } NET_CFG_COURSE_INFO; ///@brief 考场信息 typedef struct tagNET_EXAMINATION_ROOM_INFO { char szExamRoomName[256]; // 考场名称 char szExamRoomNo[256]; // 考场编号 UINT nCandidatesNum; // 考场人数 UINT nChannelNum; // 考场IPC 通道个数, 即nChannels 数组的有效元素个数 UINT nChannels[512]; // 考场IPC通道 BYTE bReserverd[1024]; // 保留字节 } NET_EXAMINATION_ROOM_INFO; ///@brief 考场配置, 对应配置项NET_EM_CFG_EXAMINATION_ROOM_INFO typedef struct tagNET_CFG_EXAMINATION_ROOM_INFO { DWORD dwSize; // 结构体大小 UINT nEaxmRoomNum; // 考场数量, 即stuEaxmRoomInfo 数组的有效元素个数 NET_EXAMINATION_ROOM_INFO stuEaxmRoomInfo[256]; // 考场信息 char szExamSiteName[256]; // 考点名称 char szExamSiteNo[256]; // 考点编号 } NET_CFG_EXAMINATION_ROOM_INFO; ///@brief 自定义文件目录, 文件名信息 typedef struct tagNET_CUSTOM_FILE_DIR_NAME_INFO { UINT nCustomDirNum; // 自定义文件目录个数, 即szCustomDirName 数组的有效元素个数 char szCustomDirName[32][256]; // 自定义文件目录名(":"前缀表示关键字) UINT nCustomFileNum; // 自定义文件文件个数, 即szCustomFileName 数组的有效元素个数 char szCustomFileName[32][256]; // 自定义文件文件名(":"前缀表示关键字) BYTE bReserverd[1024]; // 保留字节 } NET_CUSTOM_FILE_DIR_NAME_INFO; ///@brief 自定义文件目录, 文件规则信息 typedef struct tagNET_CUSTOM_FILE_DIR_RULE_INFO { UINT nCustomDirNum; // 自定义文件目录个数, 即szCustomDirRule 数组的有效元素个数 char szCustomDirRule[32][256]; // 自定义文件目录规则(":"前缀表示关键字) UINT nCustomFileNum; // 自定义文件文件个数, 即szCustomFileRule 数组的有效元素个数 char szCustomFileRule[32][256]; // 自定义文件文件规则(":"前缀表示关键字) BYTE bReserverd[1024]; }NET_CUSTOM_FILE_DIR_RULE_INFO; ///@brief 文件目录、文件名规则配置, 对应配置项NET_EM_CFG_RECORD_NAME_RULE_INFO typedef struct tagNET_CFG_RECORD_NAME_RULE_INFO { DWORD dwSize; // 结构体大小 BYTE bReserverd1[4]; // 字节对齐 NET_CUSTOM_FILE_DIR_NAME_INFO stuCustomNameInfo; // 自定义文件目录, 文件名信息 NET_CUSTOM_FILE_DIR_RULE_INFO stuCustomRuleInfo; // 自定义文件目录, 文件规则信息 } NET_CFG_RECORD_NAME_RULE_INFO; ///@brief 数据模式 typedef enum tagEM_NET_KVM_CONTROL_MODE { EM_NET_KVM_CONTROL_MODE_UNKNOWN, // 未知 EM_NET_KVM_CONTROL_MODE_DEFAULT, // 默认模式 EM_NET_KVM_CONTROL_MODE_WIN7_MULTISCREEN // Win7跨屏控制模式 } EM_NET_KVM_CONTROL_MODE; ///@brief KVM远程控制数据模式配置, 对应配置项NET_EM_CFG_KVM_CONTROL_DATA_MODE typedef struct tagNET_CFG_KVM_CONTROL_DATA_MODE_INFO { DWORD dwSize; // 结构体大小 EM_NET_KVM_CONTROL_MODE emMode; // 数据模式 } NET_CFG_KVM_CONTROL_DATA_MODE_INFO; ///@brief 目标隐私保护配置 typedef struct tagNET_CFG_PRIVACY_FACEID_INFO { DWORD dwSize; // 结构体大小 int nCount; // 目标ID个数 int nFaceID[32]; // 隐私保护的目标ID列表 } NET_CFG_PRIVACY_FACEID_INFO; ///@brief 支持平台下发禁行时间配置,对应配置项NET_EM_CFG_CHANG_BAI_VEHICLE_PROHIBITED typedef struct tagNET_CFG_CHANG_BAI_VEHICLE_PROHIBITED_INFO { DWORD dwSize; // 结构体大小 NET_TIME stuVehicleProhibitedStartTime; // 禁行开始时间(本地时间) NET_TIME stuVehicleProhibitedEndTime; // 禁行结束时间(本地时间) } NET_CFG_CHANG_BAI_VEHICLE_PROHIBITED_INFO; ///@brief NVR允许接入IPC配置, 对应配置项NET_EM_CFG_TUXI_SN_ACCESS_TABLE typedef struct tagNET_CFG_TUXI_SN_ACCESS_TABLE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否启用 int nCount; // 序列号列表个数 char szTable[512][64]; // 序列号列表 } NET_CFG_TUXI_SN_ACCESS_TABLE_INFO; ///@brief 考勤配置, 对应配置项 NET_EM_CFG_ATTENDANCECFG_XL_CUSTOM typedef struct tagNET_CFG_ATTENDANCECFG_XL_CUSTOM_INFO { DWORD dwSize; // 结构体大小 int nAttendanceType; // 设备考勤类型。0-签入;1-签出 int nCheckInEarlyTime; // 签入-提前时间,单位(分钟) int nCheckInDelayTime; // 签入-提前时间,单位(分钟) int nCheckOutEarlyTime; // 签出-提前时间,单位(分钟) int nCheckOutDelayTime; // 签出-延后时间,单位(分钟) } NET_CFG_ATTENDANCECFG_XL_CUSTOM_INFO; /**********************************************项目配置end**************************************************/ ///@brief 门禁编号及用户开门唯一标识码配置, 对应配置项 NET_EM_CFG_HB_ECOLOGY_INFO typedef struct tagNET_CFG_HB_ECOLOGY_INFO { DWORD dwSize; // 结构体大小 BYTE bReserverd[4]; // 字节对齐 char szDeviceID[128]; // 门禁设备编号 char szUserUniqueID[128]; // 用户唯一标识符 } NET_CFG_HB_ECOLOGY_INFO; ///@brief 录像丢帧报警配置, 对应配置项NET_EM_CFG_LOSS_FRAME_ALARM typedef struct tagNET_CFG_LOSS_FRAME_ALARM_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 配置使能 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 } NET_CFG_LOSS_FRAME_ALARM_INFO; ///@brief 消费模式 typedef enum tagEM_NET_CONSUMPTION_MODE { EM_NET_CONSUMPTION_MODE_UNKNOWN = -1, // 未知 EM_NET_CONSUMPTION_MODE_QUOTA, // 定额消费 EM_NET_CONSUMPTION_MODE_NONQUOTA, // 非定额消费 EM_NET_CONSUMPTION_MODE_DEPOSIT, // 充值 } EM_NET_CONSUMPTION_MODE; ///@brief 消费相关策略, 对应配置项 NET_EM_CFG_CONSUMPTION_STRATEGY typedef struct tagNET_CFG_CONSUMPTION_STRATEGY_INFO { DWORD dwSize; // 结构体大小 EM_NET_CONSUMPTION_MODE emMode; // 消费模式 BOOL bOfflineEnable; // 离线消费使能, TRUE:支持离线消费 FALSE:不支持离线消费 UINT nConsumptionInterval; // 同一个人消费间隔, 单位:秒,取值范围[1,600] }NET_CFG_CONSUMPTION_STRATEGY_INFO; ///@brief 工作模式 typedef enum tagEM_NET_WIEGAND_MODE { EM_NET_WIEGAND_TRANSFER_MODE_UNKNOWN = -1, // 未知 EM_NET_WIEGAND_TRANSFER_MODE_INPUT, // 韦根输入 EM_NET_WIEGAND_TRANSFER_MODE_OUTPUT, // 韦根输出 } EM_NET_WIEGAND_MODE; ///@brief 传输模式 typedef enum tagEM_NET_WIEGAND_TRANSFER_MODE { EM_NET_WIEGAND_MODE_UNKNOWN = -1, // 未知 EM_NET_WIEGAND_MODE_BIT_34, // 韦根34bit传输,4字节卡号,2Bit校验; EM_NET_WIEGAND_MODE_BIT_66, // 韦根66bit传输,8字节卡号,2Bit校验; EM_NET_WIEGAND_MODE_BIT_26, // 韦根26bit传输,3字节卡号,2Bit校验; EM_NET_WIEGAND_MODE_BIT_32, // 韦根32bit传输,4字节卡号,无校验位 EM_NET_WIEGAND_MODE_BIT_42, // 韦根42bit传输,5字节卡号,2Bit校验 } EM_NET_WIEGAND_TRANSFER_MODE; ///@brief 输出类型 typedef enum tagEM_NET_WIEGAND_OUT_TYPE { EM_NET_WIEGAND_OUT_TYPE_UNKNOWN = -1, // 未知 EM_NET_WIEGAND_OUT_TYPE_ID, // 输出ID EM_NET_WIEGAND_OUT_TYPE_CARD_NO, // 输出卡号 } EM_NET_WIEGAND_OUT_TYPE; ///@brief 韦根配置 typedef struct tagNET_WIEGAND_INFO { EM_NET_WIEGAND_MODE emMode; // 工作模式 int nPulseWidth; // 脉冲宽度,单位us int nPulseStep; // 脉冲间隔,单位us EM_NET_WIEGAND_TRANSFER_MODE emTransferMode; // 传输模式 EM_NET_WIEGAND_OUT_TYPE emOutType; // 输出类型 DWORD dwInputType; // 掩码值,每一位代表一个接收输入的掩码值,全为0表示不接收输入 // Bit0-卡号输入 // Bit1-密码输入 // Bit2~Bit31-保留 UINT nDoorNo; // 门编号, 例如 0: 门1编号, 1: 门2编号 BYTE bReserverd[1024]; // 保留字节 }NET_WIEGAND_INFO; ///@brief 韦根配置, 对应配置项 NET_EM_CFG_WIEGAND typedef struct tagNET_CFG_WIEGAND_INFO { DWORD dwSize; // 结构体大小 int nCount; // stuWiegandInfos的有效元素 NET_WIEGAND_INFO stuWiegandInfos[8]; // 韦根配置信息 }NET_CFG_WIEGAND_INFO; ///@brief 拾音器配置, 对应枚举NET_EM_CFG_AI_PICK_DETECT typedef struct tagNET_CFG_AI_PICK_DETECT_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启拾音器 char szIP[32]; // 拾音器IP地址 UINT nPort; // 拾音器通信端口 BOOL bKeyWordsEnable; // 是否进行关键词过滤 int nKeyWordsNum; // 关键词个数 char szKeyWordsText[300][64]; // 关键词列表 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_CFG_AI_PICK_DETECT_INFO; ///@brief 撤防白光灯报警联动项配置, 对应枚举NET_EM_CFG_DISABLE_LIGHTING_LINKAGE typedef struct tagNET_CFG_DISABLE_LIGHTING_LINKAGE_INFO { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bEnable; // 是否撤防白光报警联动项 char szName[32]; // 联动项配置名 }NET_CFG_DISABLE_LIGHTING_LINKAGE_INFO; ///@brief 撤防语音报警联动项配置, 对应枚举NET_EM_CFG_DISABLE_VOICE_LINKAGE typedef struct tagNET_CFG_DISABLE_VOICE_LINKAGE_INFO { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bEnable; // 是否撤防语音报警联动项 char szName[32]; // 联动项配置名 }NET_CFG_DISABLE_VOICE_LINKAGE_INFO; ///@brief 动检支持的视频窗口 typedef struct tagNET_MOTION_DETECT_WINDOW { UINT nThreshold; // 面积阀值,取值[0, 100] UINT nSensitive; // 灵敏度,取值[0, 100] int nMotionRow; // 动态检测区域的行数 int nMotionCol; // 动态检测区域的列数 BYTE nRegion[32][32]; // 动检检测区域块 int nId; // 动态窗口ID号 char szName[256]; // 动态窗口名称 char szResvered[256]; // 保留字节 }NET_MOTION_DETECT_WINDOW; ///@brief 动态检测报警配置配置, 对应枚举NET_EM_CFG_MOTION_DETECT typedef struct tagNET_CFG_MOTION_DETECT_INFO { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bEnable; // 动态检测开启使能 BOOL bPtzManualEnable; // 手动控制云台时,动检是否开启 BOOL bOsdTwinkleEnable; // 动检提示OSD闪烁使能 UINT nVolumeRatio; // 面积占用比, 1-100, 0 表示此配置无效 UINT nSubRatio; // 动检的残差阈值, 1-100, 0 表示此配置无效 NET_ALARM_MSG_HANDLE stuEventHandler; // 动态检测联动 int nMotionDetectWindowCount; // 三代动检支持的视频窗口个数 NET_MOTION_DETECT_WINDOW stuMotionDetectWindow[4]; // 三代动检支持的视频窗口 }NET_CFG_MOTION_DETECT_INFO; ///@brief 租赁规则配置, 对应枚举 NET_EM_CFG_LEASE_RULES typedef struct tagNET_CFG_LEASE_RULES_INFO { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bEnable; // 租赁规则使能 int nReminderTime; // 提醒时间;在租期到期前这个天数内属于提醒范围 int nPaddingTime; // 缓冲时间;在租期到期后这个天数内属于缓冲范围 }NET_CFG_LEASE_RULES_INFO; ///@brief 配置操作类型 typedef enum tagNET_EM_CFG_OPERATE_TYPE { NET_EM_CFG_SNAP_MODE, // 抓图模式配置,对应结构体 NET_SNAP_MODE NET_EM_CFG_DEV_CAR_COACH, // 铁路记录配置, 对应结构体 NET_DEV_CAR_COACH_INFO NET_EM_CFG_YUEQING_SUPPLYLIGHTING, // 乐清外接灯光配置, 对应结构体 NET_YUEQING_SUPPLYLIGHTING_INFO NET_EM_CFG_MEDIA_GLOBAL, // 媒体组件全局配置, 对应结构体 NET_MEDIA_GLOBAL_INFO NET_EM_CFG_PARKINGSPACECELL_STATUS, // 车位设置(专有车位和普通车位的设置), 对应结构体 NET_PARKINGSPACECELL_STATUS_INFO NET_EM_CFG_PARKINGSPACELIGHT_STATE, // 车位状态对应的车位指示灯, 对应结构体 NET_PARKINGSPACELIGHT_STATE_INFO NET_EM_CFG_COAXIAL_LIGHT, // 白光灯视频通道配置, 对应结构体 NET_CFG_COAXIAL_LIGHT_INFO NET_EM_CFG_VIDEO_OUT, // 视频输出配置, 对应结构体 NET_CFG_VIDEO_OUT_INFO NET_EM_CFG_MEDIA_ENCRYPT = 9, // 媒体数据加密配置,对应结构体 NET_MEDIA_ENCRYPT_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_COUNTRY, // 国家/地区配置, 对应结构体 NET_CFG_COUNTRY_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_VIDEOSTANDARD, // 视频制式配置, 对应结构体 NET_CFG_VIDEOSTANDARD_INFO,与通道不相关,通道号需要填成-1, 目前设备不支持配置SECAM制式 NET_EM_CFG_SERIAL_PUSH_LOG, // 串口服务器推送日志配置, 对应结构体 NET_CFG_SERIALPUSHLOG_INFO,与通道不相关需要填成-1 NET_EM_CFG_PRESET_SNAP_PICTURE_NUM, // 预置点抓拍图片数量配置,对应结构体 NET_CFG_PRESET_SNAP_PICTURE_NUM NET_EM_CFG_DOWNLOAD_ENCRYPT, // 下载数据加密配置, 对应结构体 NET_DOWNLOAD_ENCRYPT_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_LIFT_CONTROL_OPTION, // 梯控功能全局配置,对应结构体 NET_CFG_LIFTCONTROL_OPTION,与通道不相关,通道号需要填成-1 NET_EM_CFG_HEALTH_CODE, // 健康码使能配置,对应结构体 NET_CFG_HEALTH_CODE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_RTMP, // RTMP 配置,对应结构体 NET_CFG_RTMP_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_HUMAN_THERMOMETRY_COMPENSATE,// 人体测温补偿配置(可见光通道有效), 对应结构体 NET_CFG_HUMAN_THERMOMETRY_COMPENSATE_INFO NET_EM_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY,// NVR本地温度配置,对应结构体 NET_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_ACCESSCONTROL_MEASURE_TEMP, // 门禁测温配置, 对应结构体 NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_DEBUGINFO_REDIR, // 串口日志重定向配置, 对应结构体 NET_CFG_DEBUGINFO_REDIR_INFO NET_EM_CFG_JT_SERVER, // 部标注册参数配置, 对应结构体 NET_CFG_JT_SERVER_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_REMOTE_DEVICE_TIME_SYNC, // 同步时间到前端远程设备, 对应结构体 NET_CFG_REMOTE_DEVICE_TIME_SYNC_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_REMOTE_ALARM_OUT, // 远程报警输出配置, 对应结构体 NET_CFG_REMOTE_ALARMOUT_INFO NET_EM_CFG_REMAINDER_TIME_WARN, // 制冷机剩余时间提示,对应的结构体 NET_CFG_REMAINDER_TIME_WARN_INFO NET_EM_CFG_QR_CODE, // 配置二维码有效时间, 对应的结构体 NET_CFG_QR_CODE_INFO , 通道号需要填成-1 NET_EM_CFG_NMP_GLOBAL, // NMP系统全局管理配置, 对应结构体NET_CFG_NMP_GLOBAL_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_HEAT_IMAGING_TEMPER, // 热成像测温点温度异常报警配置, 对应结构体NET_CFG_HEAT_IMAGING_TEMPER_INFO NET_EM_CFG_IP_TABLE_FILTER, // 防火墙规则过滤配置, 对应结构体NET_CFG_IP_TABLE_FILTER_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_HB_ECOLOGY_INFO, // 门禁编号及用户开门唯一标识码配置, 对应结构体 NET_CFG_HB_ECOLOGY_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_LOSS_FRAME_ALARM, // 录像丢帧报警配置, 对应结构体NET_CFG_LOSS_FRAME_ALARM_INFO NET_EM_CFG_ALARMIN, // 外部报警配置, 对应结构体NET_CFG_ALARMIN_INFO NET_EM_CFG_USB_FLASH, // 识别USB功能配置,对应结构体NET_CFG_USB_FLASH, 与通道不相关,通道号需要填成-1 NET_EM_CFG_DISPLAY_CONNECT, // 是否连接显示器配置, 对应结构体NET_CFG_DISPLAY_CONNECT, 与通道不相关,通道号需要填成-1 NET_EM_CFG_AI_PICK_DETECT, // 拾音器配置, 对应结构体 NET_CFG_AI_PICK_DETECT_INFO NET_EM_CFG_DISABLE_LIGHTING_LINKAGE, // 撤防白光灯报警联动项配置, 对应结构体 NET_CFG_DISABLE_LIGHTING_LINKAGE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_DISABLE_VOICE_LINKAGE, // 撤防语音报警联动项配置, 对应结构体 NET_CFG_DISABLE_VOICE_LINKAGE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_MOTION_DETECT, // 动态检测报警配置, 对应结构体 NET_CFG_MOTION_DETECT_INFO NET_EM_CFG_SNAP_FPS, // 抓图计划配置,对应结构体 NET_CFG_SNAP_FPS NET_EM_CFG_STREAM_LOCK, // 拉流控制配置, 对应结构体 NET_CFG_STREAM_LOCK_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_CAMERA_STREAM_LOCK, // 拉流控制配置, 对应结构体 NET_CFG_CAMERA_STREAM_LOCK_INFO NET_EM_CFG_EAR_DETECTION_CONFIG, // EAS RF款检测配置, 对应结构体 NET_CFG_EAR_DETECTION_CONFIG_INFO NET_EM_CFG_SOUND_CONFIG, // 声音配置, 对应结构体 NET_CFG_SOUND_CONFIG_INFO NET_EM_CFG_PASSENGER_FLOW_CONFIG, // 上下客客流预警配置, 对应结构体 NET_CFG_PASSENGER_FLOW_CONFIG_INFO NET_EM_CFG_TRAFFIC_LAMP_CONFIG, // 时间间隔配置, 对应结构体 NET_CFG_TRAFFIC_LAMP_CONFIG_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_LOCAL_INFO, // 房间号、楼幢单元等信息配置, 对应结构体 NET_CFG_LOCAL_INFO NET_EM_CFG_DISABLE_BEEP_LINKAGE, // 防蜂鸣联动项使能配置, 对应结构体 NET_CFG_DISABLE_BEEP_LINKAGE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_AREA_ARM_MODE, // Area布撤防配置, 对应结构体 NET_CFG_AREA_ARM_MODE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_STORE_ENCRYPT, // 录像存储加密配置, 对应结构体 NET_STORE_ENCRYPT_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_VEHICLE_ALARM_LINK_PARAM, // 车载设备报警关联配置, 对应结构体 NET_CFG_VEHICLE_ALARM_LINK_PARAM_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_MOBILE_PHONE_APPLICATION, // 手机push notification配置, 对应结构体 NET_CFG_MOBILE_PHONE_APPLICATION_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_VSP_CGI, // CGI服务开关控制配置, 对应结构体 NET_CFG_VSP_CGI_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_VSP_NTP_SERVER, // NTP Server服务开关控制配置, 对应结构体 NET_CFG_CFG_VSP_NTP_SERVER_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_DEVICE_DISCOVERY, // 设备搜索配置, 对应结构体 NET_CFG_DEVICE_DISCOVERY_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_LLDP_GLOBAL, // LLDPConfig 全局配置, 对应结构体 NET_CFG_LLDP_GLOBAL_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_LOGIN_AUTH_CTRL, // 登录安全等级控制配置, 对应结构体 NET_CFG_LOGIN_AUTH_CTRL_INFO,与通道不相关,通道号需要填成-1 /*********OSD叠加相关配置*************************************************************************************************/ NET_EM_CFG_CHANNELTITLE = 1000, // 叠加通道标题属性配置,对应结构体 NET_OSD_CHANNEL_TITLE,其中结构体中的emOsdBlendType为必填参数 NET_EM_CFG_TIMETITLE, // 叠加时间标题属性配置,对应结构体 NET_OSD_TIME_TITLE,其中结构体中的emOsdBlendType为必填参数 NET_EM_CFG_CUSTOMTITLE, // 叠加自定义标题属性配置,对应结构体 NET_OSD_CUSTOM_TITLE,其中结构体中的stuCustomTitle.emOsdBlendType为必填参数 NET_EM_CFG_CUSTOMTITLETEXTALIGN, // 叠加自定义标题对齐方式属性配置,对应结构体 NET_OSD_CUSTOM_TITLE_TEXT_ALIGN NET_EM_CFG_OSDCOMMINFO, // 叠加公共属性配置,对应结构体 NET_OSD_COMM_INFO NET_EM_CFG_OSD_PTZZOOM, // 变倍叠加配置,对应结构体 NET_OSD_PTZZOOM_INFO NET_EM_CFG_GPSTITLE, // 叠加GPS标题显示配置,对应结构体 NET_OSD_GPS_TITLE NET_EM_CFG_OSD_NUMBERSTATPLAN, // 人数统计计划叠加OSD配置, 支持NumberStatPlan算法大类时(球机)使用,对应结构体NET_OSD_NUMBER_STATPLAN NET_EM_CFG_GPSSTARNUM_OSD, // GPS搜星数OSD配置, 车载定制需求, 对应结构体 NET_CFG_GPSSTARNUM_OSD_INFO NET_EM_CFG_PICTURETITLE, // 图片标题,对应结构体 NET_OSD_PICTURE_TITLE NET_EM_CFG_OSD_FACEFLOWSTAT, // 目标数量统计OSD配置,对应结构体 NET_OSD_FACEFLOWSTAT_INFO NET_EM_CFG_PTZ_PRESET, // 预置点信息叠加,对应结构体 NET_OSD_CFG_PTZ_PRESET NET_EM_CFG_PTZ_PATTERN, // 显示巡迹百分比叠加配置,对应结构体 NET_OSD_CFG_PTZ_PATTERN NET_EM_CFG_PTZ_RS485_DETECT, // 显示RS485检测结果的叠加配置,对应结构体 NET_OSD_CFG_PTZ_RS485_DETECT NET_EM_CFG_PTZ_COORDINATES, // 显示云台坐标的叠加配置,对应结构体 NET_OSD_CFG_PTZ_COORDINATES NET_EM_CFG_PTZ_DIRECTION, // 显示云台方向的叠加配置,对应结构体 NET_OSD_CFG_PTZ_DIRECTION NET_EM_CFG_TEMPERATURE, // 显示环境温度的叠加配置,对应结构体 NET_OSD_CFG_TEMPERATURE NET_EM_CFG_COVERS, // 区域覆盖,对应结构体 NET_OSD_CFG_COVERS NET_EM_CFG_USER_DEF_TITLE, // 用户自定义OSD标题,对应结构体 NET_OSD_USER_DEF_TITLE DHOP专用 NET_EM_CFG_SNAP_OSD, // 抓拍OSD配置, 对应结构体 NET_CFG_SNAP_OSD NET_EM_CFG_OBJECT_DETECT_SNAP_SHOT, // IPC物体检测(机非人)抓图叠加OSD配置, 对应结构体 NET_CFG_OBJECT_DETECT_SNAP_SHOT /*********encode 相关配置*************************************************************************************************/ NET_EM_CFG_ENCODE_VIDEO = 1100, // 编码视频格式属性配置,对应结构体 NET_ENCODE_VIDEO_INFO NET_EM_CFG_ENCODE_VIDEO_PACK, // 编码视频格式打包模式配置,对应结构体 NET_ENCODE_VIDEO_PACK_INFO NET_EM_CFG_ENCODE_VIDEO_SVC, // 编码视频格式SVC配置,对应结构体 NET_ENCODE_VIDEO_SVC_INFO NET_EM_CFG_ENCODE_VIDEO_PROFILE, // 编码视频格式profile配置,对应结构体 NET_ENCODE_VIDEO_PROFILE_INFO NET_EM_CFG_ENCODE_AUDIO_COMPRESSION, // 编码音频压缩格式配置,对应结构体 NET_ENCODE_AUDIO_COMPRESSION_INFO NET_EM_CFG_ENCODE_AUDIO_INFO, // 编码音频格式配置,对应结构体 NET_ENCODE_AUDIO_INFO NET_EM_CFG_ENCODE_SNAP_INFO, // 编码抓图配置,对应结构体 NET_ENCODE_SNAP_INFO NET_EM_CFG_ENCODE_SNAPTIME, // 编码抓图时间相关配置,对应结构体 NET_ENCODE_SNAP_TIME_INFO NET_EM_CFG_ENCODE_CHANNELTITLE, // 通道名称配置,对应结构体 NET_ENCODE_CHANNELTITLE_INFO NET_EM_CFG_ENCODE_DELAY_MODE, // 通道编码延时配置, 对应结构体 NET_ENCODE_DELAY_MODE_INFO NET_EM_CFG_ENCODE_SIGNAL_FORMAT, // 通道编码信号采集模式配置,对应结构体 NET_ENCODE_SIGNAL_FORMAT_INFO /**********音频相关配置***************************************************************************************************/ NET_EM_CFG_AUDIOIN_SOURCE = 1200, // 音频输入类型配置,对应结构体 NET_ENCODE_AUDIO_SOURCE_INFO NET_EM_CFG_AUDIOIN_DENOISE, // 音频降噪配置,对应结构体 NET_AUDIOIN_DENOISE_INFO NET_EM_CFG_AUDIOIN_VOLUME, // 音频输入音量配置,对应结构体 NET_AUDIOIN_VOLUME_INFO NET_EM_CFG_AUDIOOUT_VOLUME, // 音频输出音量配置,对应结构体 NET_AUDIOOUT_VOLUME_INFO NET_EM_CFG_AUDIOOUT_MODE, // 音频输出模式配置, 对应结构体 NET_AUDIOOUT_MODE_INFO NET_EM_CFG_LOOPPLAYBACK_AUDIOALARM, // 音频循环播放报警配置,对应结构体 NET_LOOPPLAYBACK_AUDIOALARM_INFO,与通道不相关,通道号需要填成-1 NET_EM_CFG_REMOTE_AUDIO_OUTPUT_VOLUME, // 音频输出音量, 对应结构体 NET_CFG_REMOTE_AUDIO_OUTPUT_VOLUME_INFO /**********videoin 相关配置***********************************************************************************************/ NET_EM_CFG_VIDEOIN_SWITCHMODE = 1300, // 切换模式配置,对应结构体 NET_VIDEOIN_SWITCH_MODE_INFO NET_EM_CFG_VIDEOIN_COLOR, // 视频输入颜色配置,对应结构体 NET_VIDEOIN_COLOR_INFO NET_EM_CFG_VIDEOIN_IMAGE_OPT, // 图像属性配置,对应结构体 NET_VIDEOIN_IMAGE_INFO NET_EM_CFG_VIDEOIN_STABLE, // 图像防抖配置,对应结构体 NET_VIDEOIN_STABLE_INFO NET_EM_CFG_VIDEOIN_IRISAUTO, // 自动光圈配置,对应结构体 NET_VIDEOIN_IRISAUTO_INFO NET_EM_CFG_VIDEOIN_IMAGEENHANCEMENT, // 图像增强配置,对应结构体 NET_VIDEOIN_IMAGEENHANCEMENT_INFO NET_EM_CFG_VIDEOIN_EXPOSURE_NORMAL, // 曝光通用属性配置,对应结构体 NET_VIDEOIN_EXPOSURE_NORMAL_INFO NET_EM_CFG_VIDEOIN_EXPOSURE_OTHER, // 其他曝光属性配置,对应结构体 NET_VIDEOIN_EXPOSURE_OTHER_INFO NET_EM_CFG_VIDEOIN_EXPOSURE_SHUTTER, // 曝光快门配置,对应结构体 NET_VIDEOIN_EXPOSURE_SHUTTER_INFO NET_EM_CFG_VIDEOIN_BACKLIGHT, // 背光配置,对应结构体 NET_VIDEOIN_BACKLIGHT_INFO NET_EM_CFG_VIDEOIN_INTENSITY, // 场景自适应对比度强度配置,对应结构体 NET_VIDEOIN_INTENSITY_INFO NET_EM_CFG_VIDEOIN_LIGHTING, // 补光灯配置,对应结构体 NET_VIDEOIN_LIGHTING_INFO NET_EM_CFG_VIDEOIN_DEFOG, // 透雾配置,对应结构体 NET_VIDEOIN_DEFOG_INFO NET_EM_CFG_VIDEOIN_FOCUSMODE, // 聚焦模式配置,对应结构体 NET_VIDEOIN_FOCUSMODE_INFO NET_EM_CFG_VIDEOIN_FOCUSVALUE, // 聚焦信息配置,对应结构体 NET_VIDEOIN_FOCUSVALUE_INFO NET_EM_CFG_VIDEOIN_WHITEBALANCE, // 白平衡配置,对应结构体 NET_VIDEOIN_WHITEBALANCE_INFO NET_EM_CFG_VIDEOIN_DAYNIGHT, // 日夜模式配置,对应结构体 NET_VIDEOIN_DAYNIGHT_INFO NET_EM_CFG_VIDEOIN_DAYNIGHT_ICR, // 日夜模式ICR切换类型配置,对应结构体 NET_VIDEOIN_DAYNIGHT_ICR_INFO NET_EM_CFG_VIDEOIN_SHARPNESS, // 锐度配置,对应结构体 NET_VIDEOIN_SHARPNESS_INFO NET_EM_CFG_VIDEOIN_COMM_DENOISE, // 通用降噪配置,对应结构体 NET_VIDEOIN_DENOISE_INFO NET_EM_CFG_VIDEOIN_3D_DENOISE, // 3D 降噪配置,对应结构体 NET_VIDEOIN_3D_DENOISE_INFO NET_EM_CFG_VIDEOIN_FOCUSEX, // 聚焦扩展配置,对应结构体 NET_VIDEOIN_FOCUS_INFO_EX NET_EM_CFG_VIDEOIN_LIGHTINGEX, // 补光灯配置的扩展,对应结构体 NET_VIDEOIN_LIGHTINGEX_INFO NET_EM_CFG_VIDEOIN_VIEWRANGESTATUS, // 可视域状态信息,对应结构体 NET_CFG_VIDEOIN_VIEWRANGESTATUS_INFO NET_EM_CFG_VIDEOIN_LIGHTING_SCHEME, // 灯光方案, 对应结构体 NET_CFG_VIDEOIN_LIGHTING_SCHEME_INFO NET_EM_CFG_VIDEOIN_ALARM_LIGHTING, // 警戒灯光, 对应结构体 NET_CFG_VIDEOIN_ALARM_LIGHTING_INFO NET_EM_CFG_VIDEOIN_FACE_AUTOEXPOSURE, // 智能规则检测目标,根据检测区域自动曝光, 对应结构体 NET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO /***********庭审相关配置*****************************************************************************************/ NET_EM_CFG_ENCODE_PLAN = 1400, // 刻录光盘编码计划, 对应结构体 NET_ENCODE_PLAN_INFO NET_EM_CFG_COMPOSE_CHANNEL, // 合成通道配置, 对应结构体 NET_COMPOSE_CHANNEL_INFO NET_EM_CFG_BURN_PARAM, // 刻录参数, 对应结构体 NET_BURN_PARAM_INFO NET_EM_CFG_COMPOSE_PLAN, // 合成通道的预案分割配置, 对应结构体 NET_COMPOSE_PLAN_INFO /**********报警网关相关配置**************************************************************************************/ NET_EM_CFG_ALARM_SOUND = 1500, // 报警网关语音配置, 对应结构体 NET_ALARM_SOUND_INFO NET_EM_CFG_LOCAL_EXT_ALARM = 1501, // 报警盒子配置,对应结构体 NET_LOCAL_EXT_ALARM_INFO,通道无关 NET_EM_CFG_REMOTE_ALARM_BELL = 1502, // 前端相机警号配置, 对应结构体 NET_CFG_REMOTE_ALARM_BELL_INFO NET_EM_CFG_FIRE_WARNINGMODE = 1503, // 火灾预警模式, 对应结构体 NET_FIREWARNING_MODE_INFO NET_EM_CFG_FIRE_WARNING = 1504, // 火灾预警配置(与火灾预警模式配置配合使用), 对应的结构体 NET_FIRE_WARNING_INFO NET_EM_CFG_COAXIAL_ALARMLOCAL = 1506, // CVI 外部报警配置,对应结构体 NET_COAXIAL_ALARMLOCAL_INFO /**********网络应用相关配置**************************************************************************************/ NET_EM_CFG_ACCESS_POINT = 1600, // 用于WiFi服务端配置(热点功能), 对应结构体 NET_NETAPP_ACCESSPOINT NET_EM_CFG_LDAP, // LDAP配置, 对应结构体 NET_NETAPP_LDAP NET_EM_CFG_SYSLOG, // Syslog协议配置, 对应结构体 NET_NETAPP_SYSLOG NET_EM_CFG_NETAUTOADAPTTRANSIT, // 网络自适应传输配置,对应结构体NET_NETAUTOADAPTTRANSIT NET_EM_CFG_WIRELESS, // 蜂窝网络(即俗称的3G/4G网络)的设置, 对应结构体 NET_NETAPP_WIRELESS NET_EM_CFG_WIRELESS_EXPERT, // 蜂窝网络高级参数设置, 对应结构体 NET_NETAPP_WIRELESS_EXPERT /**************安全基线需求**************************************************************************************/ NET_EM_CFG_NAS = 1700, // NAS 配置, 对应结构体 NET_NAS_INFO NET_EM_CFG_PPPOE, // PPPOE 配置,对应结构体 NET_PPPOE_INFO NET_EM_CFG_EMAIL, // Email 配置,对应结构体 NET_EMAIL_INFO NET_EM_CFG_DDNS, // DDNS 配置,对应结构体 NET_DDNS_INFO /**************SCADA配置需求**************************************************************************************/ NET_EM_CFG_SCADA_PROTOCOLS_MANAGER = 1800, // 协议管理配置,对应结构体 NET_SCADA_PROTOCOLS_MANAGER NET_EM_CFG_SCADA_DEVICEINFO_CFG, // 设备信息配置,对应结构体 NET_SCADA_DEVICEINFO_CFG NET_EM_CFG_SCADA_CONTROLLER_SITE, // 控制器配置,对应结构体 NET_CFG_SCADA_CONTROLLER_SITE_INFO /**************NetApp配置需求*************************************************************************************/ NET_EM_CFG_NETAPP_LINK_LAYER_VPN = 1900, // 链路层VPN设置,对应结构体 NET_NETAPP_LINK_LAYER_VPN_CFG NET_EM_CFG_NETAPP_SSHD, // SSH服务端配置,对应结构体 NET_NETAPP_SSHD_CFG NET_EM_CFG_NETAPP_COMMUNICATION_LIST, // 通讯录配置, 对应结构体 NET_NETAPP_COMMUNICATION_LIST_CFG, 与通道不相关,通道号需要填成-1 NET_EM_CFG_NETAPP_WEB, // Web服务器设置, 对应结构体 NET_NETAPP_WEB_CFG /**************第三方平台接入***********************************************************************************/ NET_EM_CFG_VSP_CHINA_TOWER = 2000, // (中国铁塔平台接入)安徽治超平台接入配置,对应结构体 NET_VSP_CHINA_TOWER NET_EM_CFG_VSP_SHDXJT = 2001, // 中国电信手机看店接入配置,对应结构体 NET_VSP_SHDXJT NET_EM_CFG_VSP_CONSUME, // 消费机配置,对应结构体 NET_CFG_VSP_CONSUME,通道无关,通道号需要填成-1 /**********智能相关配置*******************************************************************************************/ NET_EM_CFG_STEREO_CALIBRATE = 2100, // 双目标定结果, 对应结构体NET_STEREO_CALIBRATE_INFO NET_EM_CFG_STEREO_CALIBRATEMATRIX_MULTISENSOR, // 多目相机标定配置CalibrateMatrix(MultiSensor), 对应的结构体 NET_MULTI_SENSOR_INFO NET_EM_CFG_CROWDDISTRIMAP_CALIBRATE, // 人群分布图标定配置, 对应的结构体 NET_CROWDDISTRIMAP_CALIBRATE_INFO NET_EM_CFG_TRAFFIC_NOPASSING, // 交通禁行配置, 对应的结构体 NET_TRAFFIC_NOPASSING_INFO NET_EM_CFG_FIGHT_CALIBRATE, // 打架标定配置, 对应的结构体 NET_FIGHT_CALIBRATE_INFO NET_EM_CFG_FACE_RECOGNITION_ALARM, // 目标识别联动报警通道配置, 对应结构体 NET_FACE_RECOGNITION_ALARM_INFO NET_EM_CFG_STEREO_CALIBRATEMATRIX_MULTIMODE, // 灵瞳相机的标定方式 CalibrateMatrix(MultiMode), 对应的结构体 NET_CALIBRATEMATRIX_MULTIMODE_INFO NET_EM_CFG_AUTO_SNAP_SCHEDULE, // 智能养殖定时抓图配置, 对应结构体 NET_CFG_AUTO_SNAP_SCHEDULE_INFO NET_EM_CFG_PARKING_TIMEOUT_DETECT, // 停车超时检测配置, 对应结构体 NET_CFG_PARKING_TIMEOUT_DETECT NET_EM_CFG_SMART_MOTION_DETECT, // 智能动态检测配置, 对应结构体 NET_CFG_SMART_MOTION_DETECT NET_EM_CFG_EXTERNAL_ANALYSE_TASK_CAPS, // 外部智能做任务调度配置, 对应结构体 NET_CFG_EXTERNAL_ANALYSE_TASK_CAPS, 对应通道为-1 NET_EM_CFG_TIMEDIV_TOUR_CONFIG, // 分时轮巡模式配置 对应结构体 NET_CFG_TIMEDIV_TOUR_CONFIG_INFO 对应通道为-1 NET_EM_CFG_TRAFFIC_TOLL_GATE, // 交通卡口规则配置, 对应结构体 NET_CFG_TRAFFIC_TOLL_GATE_INFO /**********雷达配置***********************************************************************************************/ NET_EM_CFG_RADAR = 2200, // 雷达配置,对应结构体 DEV_RADAR_CONFIG NET_EM_CFG_RADAR_RFIDCARD = 2201, // 雷达RFID卡片信息配置,与通道不相关,通道号需要填成-1,对应结构体 NET_CFG_RADAR_RFIDCARD_INFO NET_EM_CFG_RADAR_REMOTE_CARD = 2202, // 雷达一体机RFID遥控器卡片配置, 对应结构体 NET_CFG_RADAR_REMOTE_CARD_INFO NET_EM_CFG_RADAR_RFID_READ_DISTANCE = 2203, // RFID识别距离配置, 对应结构体 NET_CFG_RADAR_RFID_READ_DISTANCE_INFO NET_EM_CFG_RADAR_STATIC_BACKGROUND = 2204, // 激光雷达地图构建静态背景阈值配置, 与通道不相关,通道号需要填成-1, 对应结构体 NET_CFG_RADAR_STATIC_BACKGROUND_INFO /**********视频对讲电话通用配置***********************************************************************************/ NET_EM_CFG_VTH_PASSWORD = 2300, // 视频对讲电话通用配置,对应结构体 NET_CFG_VTH_PASSWORD_INFO NET_EM_CFG_REGISTAR = 2301, // 注册服务器配置,对应结构体 NET_CFG_REGISTAR_INFO NET_EM_CFG_SIP = 2302, // sip配置, 对应结构体 NET_CFG_SIPSERVER_INFO NET_EM_CFG_DEVICE_LOGIN_INFO = 2303, // 主门口机登陆从门口机配置 NET_CFG_DEVICE_LOGIN_INFO /**********镜头前遮挡盖配置***************************************************************************************/ NET_EM_CFG_AELENSMASK = 2400, //镜头前遮挡盖配置,对应结构体NET_CFG_AELENSMASK_INFO NET_EM_CFG_ULTRASONIC = 2500, //超声波配置,对应结构体NET_CFG_ULTRASONIC_INFO /**********报警主机相关配置***************************************************************************************/ NET_EM_CFG_ARMSCHEDULE = 2600, // 报警计划配置,对应结构体 NET_CFG_ARMSCHEDULE_INFO NET_EM_CFG_CID_REPORT = 2601, // CID联动配置, 对应结构体NET_CFG_CID_REPORT_INFO NET_EM_CFG_VSP_HONEYWELL = 2602, // 霍尼服务器配置,对应结构体NET_CFG_VSP_HONEYWELL_INFO NET_EM_CFG_KBUSER_PASSWORD = 2603, // 报警主机用户权限,键盘密码配置,对应结构体 NET_CFG_KBUSER_PASSWORD /**********录像抓图功能相关配置***********************************************************************************/ NET_EM_CFG_RECORDEXTRA = 3610, // 录像辅码流录像配置, 对应结构体 NET_CFG_RECORDEXTRA_INFO NET_EM_CFG_AUTO_RECORDBACKUP_RESTORE = 3611, // 自动录像回传配置, 对应结构体 NET_CFG_AUTORECORDBACKUPRESTORE_INFO NET_EM_CFG_FACESNAPSHOT = 3612, // IPC智能目标抓拍配置 对应结构体 NET_CFG_FACESNAPSHOT_INFO NET_EM_CFG_TIME_RECORDBACKUP_RESTORE = 3613, // 录像定时自动备份配置, NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO; 对应通道为-1 NET_EM_CFG_RECORD_DOWNLOAD_SPEED_ALL = 3614, // 设备下载速度配置, 对应结构体 NET_CFG_RECORD_DOWNLOAD_SPEED_ALL_INFO,通道无关,通道号填-1 /**********视频诊断相关配置***************************************************************************************/ NET_EM_VIDEODIAGNOSIS_PROJECT = 3700, // 视频诊断计划配置, 对应结构体 NET_VIDEODIAGNOSIS_PROJECT_INFO NET_EM_CFG_VIDEO_DIAGNOSIS_PROJECT_MONTH = 3701,// 按月的视频诊断计划配置, 对应结构体 NET_CFG_VIDEODIAGNOSIS_PROJECT_MONTH_INFO,对应通道为-1 /***********车载相关配置******************************************************************************************/ NET_EM_CFG_POSITIONREPORTPOLICY = 3800, // 车载GPS位置信息上报策略配置, 对应结构体 NET_CFG_POSITIONREPORTPOLICY_INFO NET_EM_CFG_VEHICLE_WORKTIMESCHEDULE, // 车载工作计划配置,对应结构体 NET_CFG_VEHICLE_WORKTIMESCHEDULE_INFO NET_EM_CFG_VEHICLE_LOAD, // 荷载人数配置, 对应结构体 NET_CFG_VEHICLE_LOAD_INFO NET_EM_CFG_TICKETPRINT, // 公交打印票价, 对应结构体 NET_CFG_TICKETPRINT_INFO NET_EM_CFG_VEHICLEAUTOMAIN, // ACC延时关机时间, 对应结构体 NET_CFG_VEHICLEAUTOMAIN_INFO NET_EM_CFG_VEHICLENETSERVER, // 车载网络服务配置(印度BRT项目), 对应结构体 NET_CFG_VEHICLENETSERVER_INFO NET_EM_CFG_IMSIBIND, // 车载布控球IMSI绑定配置, 对应结构体 NET_CFG_IMSIBIND_INFO NET_EM_CFG_VEHICLE_MAINTAINCE, // 车载人员维护设置,对应结构体 NET_CFG_VEHICLE_MAINTAINCE_INFO NET_EM_CFG_SAFETYABNORMAL_ALARM, // 安全异常报警配置, 对应结构体 NET_CFG_SAFETYABNORMAL_INFO NET_EM_CFG_VEHICLE_COLLISION, // 撞车报警配置, 对应结构体 NET_CFG_VEHICLE_COLLISION_INFO NET_EM_CFG_VEHICLE_TURNOVER, // 侧翻报警配置, 对应结构体 NET_CFG_VEHICLE_TURNOVER_INFO NET_EM_CFG_VEHICLE_SUDDENTURN, // 急转弯报警配置, 对应结构体 NET_CFG_VEHICLE_SUDDENTURN_INFO NET_EM_CFG_VEHICLE_ACCELERATION, // 急加速报警配置, 对应结构体 NET_CFG_VEHICLE_ACCELERATION_INFO NET_EM_CFG_VEHICLE_DECELERATION, // 急减速报警配置, 对应结构体 NET_CFG_VEHICLE_DECELERATION_INFO NET_EM_CFG_VEHICLE_ACC, // ACC 报警事件配置, 对应结构体 NET_CFG_VEHICLE_ACC_INFO NET_EM_CFG_VEHICLE_DSMALARMCONTROL, // DSM报警控制上传配置, 对应结构体 NET_CFG_VEHICLE_DSMALARMCONTROL_INFO NET_EM_CFG_VEHICLE_NOT_INSPECT_ALARM, // 车载未巡检报警使能状态和触发时间配置 对应结构体 NET_CFG_VEHICLE_NOT_INSPECT_ALARM_INFO 通道无关,通道号填-1 /***********门禁相关配置******************************************************************************************/ NET_EM_CFG_ACCESSCTL_BLACKLIST = 3900, // 门禁禁止名单报警配置,对应结构体 NET_CFG_ACCESSCTL_BLACKLIST NET_EM_CFG_ACCESSCTL_BLACKLIST_LINK = 3901, // 门禁禁止名单报警联动配置,对应结构体 NET_CFG_ALARM_MSG_HANDLE NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP = 3902, // 门禁节假日组配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE = 3903, // 门禁节假日计划配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO NET_EM_CFG_ACCESSCTL_AUTH_MODE = 3904, // 在离线开门认证模式配置,对应结构体NET_CFG_ACCESSCTL_AUTH_MODE NET_EM_CFG_ACS_FACE_RECOGNITION_SCHEME = 3905, // 门禁目标识别相关配置,对应结构体 NET_CFG_ACS_FACE_RECOGNITION_SCHEME NET_EM_CFG_FORBIDDEN_ADVERT_PLAY = 3906, // 广告禁用时段配置, 对应结构体 NET_CFG_FORBIDDEN_ADVERT_PLAY, 通道无关,通道号填-1 NET_EM_CFG_BGY_CUSTOMERCFG = 3907, // 门禁设备当前模式配置, 对应结构体 NET_CFG_BGY_CUSTOMERCFG, 通道无关,通道号填-1 NET_EM_CFG_ACCESSCTL_KEYBINDINGINFOCFG = 3908, // 不同数字按钮对应的信息配置, 对应结构体 NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG, 通道无关,通道号填-1 NET_EM_CFG_HOST_DEVICE = 3909, // 主机、从机设置配置, 对应结构体 NET_CFG_HOST_DEVICE, 通道无关,通道号填-1 NET_EM_CFG_VTH_ALPA_CLOUD = 3910, // 室内机Alpa客户云服务器配置, 对应结构体 NET_CFG_VTH_ALPA_CLOUD, 通道无关, 通道号填-1 NET_EM_CFG_VTH_FETCHINFO = 3911, // 室内机广告信息配置,对应结构体 NET_CFG_VTH_FETCHINFO, 通道无关, 通道号填-1 NET_EM_CFG_CUSTOMER_DEVICEINFO = 3912, // 门禁提供客户设置的设备信息配置, 对应结构体 NET_CFG_CUSTOMER_DEVICEINFO, 通道无关, 通道号填-1 NET_EM_CFG_BLUE_TOOTH = 3913, // 门禁蓝牙模块开门配置, 对应结构体 NET_CFG_BLUE_TOOTH, 通道无关, 通道号填-1 NET_EM_CFG_TALK_BACK = 3914, // 门禁音频对讲格式配置,对应结构体 NET_CFG_TALKBACK NET_EM_CFG_FORNT_COVER_DISPLAY_TEXT = 3915, // 门禁待机封面文字提示信息配置 对应结构体 NET_CFG_FORNT_COVER_DISPLAY_TEXT, 通道无关, 通道号填-1 NET_EM_CFG_CITIZENPICTURECOMPARE = 3916, // 门禁目标识别相关配置,对应结构体 NET_CFG_CITIZENPICTURECOMPARE 通道无关 通道号填-1 NET_EM_CFG_VIDEOTALK_SIGNLIGHT = 3917, // 签名灯,可视对讲使用配置,对应结构体 NET_CFG_VIDEOTALK_SIGNLIGHT NET_EM_CFG_ESD_COMMSETTING = 3918, // ESD静电仪设备通用配置 对应结构体 NET_CFG_ESD_COMMSETTING 通道无关 通道号填-1 NET_EM_CFG_BSCCUSTOM = 3919, // 门禁配置汇总 对应结构体 NET_CFG_BSCCUSTOM NET_EM_CFG_ACCESS_FACE_RECOGNITION = 3920, // 目标识别成功后二次确认配置,对应结构体 NET_CFG_ACCESS_FACE_RECOGNITION NET_EM_CFG_CONSUMPTION_STRATEGY = 3921, // 消费相关策略, 对应结构体 NET_CFG_CONSUMPTION_STRATEGY_INFO, 通道无关 通道号填-1 NET_EM_CFG_WIEGAND = 3922, // 韦根配置, 对应结构体 NET_CFG_WIEGAND_INFO, 通道无关 通道号填-1 NET_EM_CFG_CUSTOM_WEATHER_INFO = 3923, // 外部下发设备的天气信息配置, 对应结构体 NET_CFG_CUSTOM_WEATHER_INFO 通道无关 通道号填-1 NET_EM_CFG_HOSPITAL_LOGO = 3924, // 医院Logo配置, 用于下发医院的名称和Logo图片, 对应结构体 NET_CFG_HOSPITAL_LOGO_INFO, 通道无关,通道号填-1 NET_EM_CFG_ACCESS_DISPLAY = 3925, // 门禁设备显示配置, 对应结构体 NET_CFG_ACCESS_DISPLAY_INFO, 通道无关, 通道号填-1 NET_EM_CFG_ACCESS_CONFIG = 3926, // 门禁设备通用配置, 对应结构体 NET_CFG_ACCESS_CONFIG_INFO, 通道无关, 通道号填-1 NET_EM_CFG_ACCESSCTL_HOLIDAY_GROUP = 3927, // (工行)门禁节假日组配置, 对应结构体 NET_CFG_ACCESSCTL_HOLIDAY_GROUP_INFO 通道无关, 通道号填-1 NET_EM_CFG_ACCESSCTL_HOLIDAY_SCHEDULE = 3928, // (工行)门禁节假日表配置, 对应结构体 NET_CFG_ACCESSCTL_HOLIDAY_SCHEDULE_INFO 通道无关, 通道号填-1 NET_EM_CFG_ICBC_DOOR_PARAS = 3929, // 门禁通道配置,对应结构体NET_CFG_ICBC_DOOR_PARAS 通道无关, 通道号填-1 NET_EM_CFG_WORK_SCENE = 3930, // 门禁运行场景配置,针对设备而言 无通道概念 对应结构体NET_CFG_WORK_SCENE_INFO 通道无关, 通道号填-1 NET_EM_CFG_CUSTOMER_DEV_SETTING = 3931, // 门禁提供客户的"系统设置"配置, 对应结构体 NET_CFG_CUSTOMER_DEV_SETTING_INFO 通道无关, 通道号填-1 NET_EM_CFG_CUSTOMER_ON_DUTY_MODEL_INFO = 3932, // 门禁配置 值班人员信息配置, 对应结构体 NET_CFG_CUSTOMER_ON_DUTY_MODEL_INFO 通道无关, 通道号填-1 NET_EM_CFG_CUSTOMER_TEMP_POLICY, // 测温策略配置, 对应结构体 NET_CFG_CUSTOMER_TEMP_POLICY_INFO 通道无关, 通道号填-1 NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR = 3934, // 定期通行人数清除功能配置, 对应结构体 NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO 通道无关, 通道号填-1 NET_EM_CFG_SAMPO_SERVICE_NAME = 3935, // 用于存放平台下发的参数名称以及服务名称,对应结构体 NET_EM_CFG_SAMPO_SERVICE_NAME_INFO 通道无关, 通道号填-1 NET_EM_CFG_USER_PASS_PERMISSION = 3936, // 人员类型与对应通行权限配置,对应结构体 NET_EM_CFG_USER_PASS_PERMISSION_INFO 通道无关, 通道号填-1 NET_EM_CFG_HOSPITAL_TALK_CONFIG = 3937, // 谈话需求,对应结构体 NET_EM_CFG_HOSPITAL_TALK_CONFIG_INFO 通道无关, 通道号填-1 NET_EM_CFG_SECRET_PROJECT_CONFIG = 3938, // 涉密项目配置,对应结构体 NET_EM_CFG_SECRET_PROJECT_CONFIG_INFO 通道无关, 通道号填-1 /***********配置************************************************************************************************/ NET_EM_CFG_SERIALNOWHITETABLE = 4000, // 前端序列号允许名单下发至NVR 配置, 对应结构体 NET_CFG_SERIALNOWHITETABLE_INFO NET_EM_CFG_LXSJ_WXJJ = 4001, // 对应结构体 NET_CFG_LXSJ_WXJJ_INFO NET_EM_CFG_SENSOR_ALARM_GLOBAL = 4002, // 传感器报警全局配置 对应结构体 NET_CFG_SENSOR_ALARM_GLOBAL_INFO NET_EM_CFG_SENSOR_ALARM = 4003, // 传感器报警配置 对应结构体 NET_CFG_SENSOR_ALARM_INFO NET_EM_CFG_VSP_LXSJ = 4004, // 灵信视觉平台接入配置 对应结构体 NET_CFG_VSP_LXSJ_INFO,配置较大,建议内存new出来 NET_EM_CFG_TIMINGCAPTURE = 4005, // 定时抓拍配置 对应结构体 NET_CFG_TIMINGCAPTURE_INFO NET_EM_CFG_WATER_MONITOR_TITLE = 4006, // 智慧水利叠加OSD配置 对应结构体 NET_CFG_WATER_MONITOR_TITLE_INFO NET_EM_CFG_ATTENDANCE_MODEL_INFO = 4007, // 考勤模式信息,对应结构体 NET_CFG_ATTENDANCE_MODEL_INFO,通道无关,通道号填-1 NET_EM_CFG_KT_RTSP_FLAG = 4008, // RTSP的使能配置, 对应结构体 NET_CFG_KT_RTSP_FLAG_INFO ,与通道不相关,通道号需要填成-1 NET_EM_CFG_RTSP_ABORT_LIST = 4009, // 获取RTSP断线后存储到设备本地的录像列表(只有获取,没有设置), 对应结构体 NET_CFG_RTSP_ABORT_LIST_INFO ,与通道不相关,通道号需要填成-1 NET_EM_CFG_FILE_HOLD_DAYS = 4010, // 录像保存天数配置, 对应结构体NET_CFG_FILE_HOLD_DAYS_INFO NET_EM_CFG_ACCESS_FUNCTION = 4011, // 接入功能配置, 对应结构体 NET_CFG_ACCESS_FUNCTION_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_RELAY_STATE = 4012, // 继电器状态配置,对应结构体 NET_CFG_RELAY_STATE_INFO NET_EM_CFG_OSD_PLAN = 4013, // OSD 计划配置, 对应结构体 NET_CFG_OSD_PLANS_INFO NET_EM_CFG_ENVIRONMENT_DETECT = 4014, // 平台下发天气情况到室内机, 对应结构体 NET_CFG_ENVIRONMENT_DETECT_INFO NET_EM_CFG_AC_GZYD = 4015, // 门禁系统改造工程项目 二维码对接、人员开门时间配置、二维码密钥卡号, 对应结构体 NET_CFG_AC_GZYD_INFO NET_EM_CFG_CARD_MNG = 4016, // 单片机兼容cpu卡和ic卡功能切换,对应结构体 NET_CFG_CARD_MNG_INFO NET_EM_CFG_WORK_MODE = 4017, // IPC配套APP显示工作模式 对应结构体 NET_CFG_WORK_MODE_INFO NET_EM_CFG_WATER_QUALITY_DETECTION = 4018, // 水质检测功能报警阈值设置 对应结构体 NET_CFG_WATER_QUALITY_DETECTION_INFO NET_EM_CFG_FINANCIAL_CABINET_ALARM = 4019, // 金融业务库报警配置 对应结构体 NET_CFG_FINANCIAL_CABINET_ALARM_INFO NET_EM_CFG_FINANCIAL_CABINET_CONFIG = 4020, // 金融业务库配置 对应结构体 NET_CFG_FINANCIAL_CABINET_CONFIG_INFO NET_EM_CFG_NUCLEIC_ACID_RULER = 4021, // 核酸校验规则配置, 对应结构体 NET_CFG_NUCLEIC_ACID_RULER_INFO, 与通道不相关, 通道号需要填成-1 NET_EM_CFG_LEASE_RULES = 4022, // 租赁规则配置, 对应结构体 NET_CFG_LEASE_RULES_INFO, 与通道不相关, 通道号需要填成-1 /***********云操作配置************************************************************************************************/ NET_EM_CFG_CLOUDUPLOADTIME = 5000, // 配置录像上传到云服务器的时间段, 对应结构体 NET_CFG_CLOUDUPLOADTIME_INFO /***********雷球联动配置************************************************************************************************/ //在调用 CLIENT_SetConfig 时,restart字段无效 NET_EM_CFG_RADAR_MAPPARA = 6000, // 雷达地图参数配置, 对应结构体 NET_CFG_RADAR_MAPPARA_INFO NET_EM_CFG_RADAR_CALIBRATION = 6001, // 雷球校准配置, 对应结构体 NET_CFG_RADAR_CALIBRATION_INFO NET_EM_CFG_RADAR_LINKSD = 6002, // 雷达联动球机使能配置, 对应结构体 NET_CFG_RADAR_LINKSD_INFO NET_EM_CFG_RADAR_RULELINE = 6003, // 雷达规则线配置, 对应结构体 NET_CFG_RADAR_RULELINE_INFO NET_EM_CFG_RADAR_ANALYSERULE = 6004, // 雷达报警联动配置, 对应结构体 NET_CFG_RADAR_ANALYSERULE_INFO NET_EM_CFG_RADAR_TRACKGLOBALCONFIG = 6005, // 雷达跟踪全局配置, 对应结构体 NET_CFG_RADAR_TRACKGLOBALCONFIG_INFO NET_EM_CFG_RADAR_RADARPARA = 6006, // 雷达功能设置, 对应结构体 NET_CFG_RADAR_RADARPARA_INFO NET_EM_CFG_RADAR_REMOTESDLINK = 6007, // 雷达远程球机联动使能配置, 对应结构体 NET_CFG_RADAR_REMOTESDLINK_INFO NET_EM_CFG_RADAR_RADARLINKDEVICE= 6008, // 雷达远程联动球机配置, 对应结构体 NET_CFG_RADAR_RADARLINKDEVICE_INFO NET_EM_CFG_RADAR_MAPOSDPARA = 6009, // 雷达地图OSD叠加配置, 对应结构体 NET_CFG_RADAR_MAPOSDPARA_INFO NET_EM_CFG_RADAR_DEVLIST = 6010, // 雷达设备列表配置, 对应结构体NET_CFG_RADAR_DEVLIST_INFO NET_EM_CFG_RADAR_RULE_BIND_SD = 6011, // 雷达规则绑定球机配置, 对应结构体NET_CFG_RADAR_RULE_BIND_SD_INFO NET_EM_CFG_RADAR_SCREEN_RULE = 6012, // 雷达屏幕显示规则配置, 对应结构体NET_CFG_RADAR_SCREEN_RULE_INFO NET_EM_CFG_RADAR_ALGORITHM_PARAM = 6013, // 雷达模块算法参数配置, 对应结构体 NET_CFG_RADAR_ALGORITHM_PARAM_INFO NET_EM_CFG_RADAR_TRACK_FREQUENCY = 6014, // 雷达轨迹上报频率配置, 对应结构体 NET_CFG_RADAR_TRACK_FREQUENCY_INFO NET_EM_CFG_RADAR_TRACK_MOVE_MODE = 6015, // 雷球联动跟踪模式选择配置, 对应结构体 NET_CFG_CFG_RADAR_TRACK_MOVE_MODE_INFO NET_EM_CFG_MINIRADAR_DECT_PARAM = 6016, // Mini雷达探测参数配置, 对应结构体 NET_CFG_MINIRADAR_DECT_PARAM_INFO NET_EM_CFG_MINIRADAR_INDOOR_ALARM = 6017, // Mini雷达报警配置, 对应结构体 NET_CFG_MINIRADAR_INDOOR_ALARM_INFO NET_EM_CFG_MINIRADAR_COMP_INFO = 6018, // Mini雷达角度补偿配置, 对应结构体 NET_CFG_MINIRADAR_COMP_INFO NET_EM_CFG_MINIRADAR_INSTALL_INFO = 6019, // Mini雷达安装信息配置, 对应结构体 NET_CFG_MINIRADAR_INSTALL_INFO NET_EM_CFG_MINIRADAR_REGION_DETECT = 6020, // Mini雷达探测区域配置, 对应结构体 NET_CFG_MINIRADAR_REGION_DETECT_INFO NET_EM_CFG_MINIRADAR_SCREEN_CONFIG = 6021, // Mini雷达外接广告机配置, 对应结构体 NET_CFG_MINIRADAR_SCREEN_CONFIG_INFO /***********云台相关配置************************************************************************************************/ NET_EM_CFG_PTZ_SPEED = 7000, // 云台速度配置 对应结构体 NET_CFG_PTZ_SPEED NET_EM_CFG_PTZ_HORIZONTAL_ROTATION_GROUP_SCAN = 7001, // 云台水平旋转组扫描 对应结构体 NET_CFG_HORIZONTAL_ROTATION_GROUP_SCAN_INFO NET_EM_CFG_AUTOSCAN = 7002, // 自动线扫设置 对应结构体 NET_CFG_AUTOSCAN_INFO NET_EM_CFG_INTELLI_TOUR = 7003, // 巡航组配置 对应结构体 NET_CFG_INTELLI_TOUR NET_EM_CFG_AUTO_PATTERN = 7004, // 自动巡迹设置, 对应结构体 NET_CFG_AUTO_PATTERN_INFO NET_EM_CFG_PTZ_DIRECTION_CORRECT = 7005, // 保存矫正角度配置,对应结构体 NET_CFG_PTZ_DIRECTION_CORRECT_INFO NET_EM_CFG_RAIN_FALL_CONFIG = 7006, // 雨量筒信息配置(对应结构体 NET_CFG_RAIN_FALL_CONFIG_INFO) /***********乐橙摄像头定制配置************************************************************************************************/ NET_EM_CFG_CASCADE_LIGHT = 8000, // NVR级联控制IPC灯光, 对应结构体 NET_CFG_CASCADE_LIGHT_INFO NET_EM_CFG_LE_SMARTTRACK = 8001, // 乐橙简易智能追踪, 对应结构体 NET_CFG_LE_SMARTTRACK_INFO NET_EM_CFG_LE_LENS_MASK = 8002, // 乐橙镜头遮挡配置, 对应结构体 NET_CFG_LE_LENS_MASK_INFO /***********第三方配置************************************************************************************************/ NET_EM_CFG_VSP_PAAS = 9000, // 乐橙云注册配置修改, 对应结构体 NET_CFG_VSP_PAAS_INFO NET_EM_CFG_VSP_GAYS_SERVER = 9001, // 公安一所平台接入配置(国标服务端),对应结构体 NET_CFG_VSP_GAYS_SERVER_INFO,对应通道为-1 NET_EM_CFG_VSP_CO_SIGN_SERVER = 9002, // 协同签名服务器配置,对应结构体NET_CFG_VSP_CO_SIGN_SERVER_INFO,对应通道为-1 NET_EM_CFG_VSP_GAVI = 9003, // 公安视频图像信息应用系统接入配置,对应结构体 NET_CFG_VSP_GAVI_INFO,对应通道为-1 NET_EM_CFG_VSP_ONVIF = 9004, // ONVIF服务配置, 对应结构体 NET_CFG_VSP_ONVIF_INFO, 对应通道为-1 NET_EM_CFG_VSP_LRLXXF_MODULE = 9005, // 目标离线消费基本配置, 对应结构体 NET_CFG_VSP_LRLXXF_MODULE_INFO, 对应通道为-1 NET_EM_CFG_VSP_LRLXXF_CUSTOM = 9006, // 目标离线消费个性化配置, 对应结构体 NET_CFG_VSP_LRLXXF_CUSTOM_INFO, 对应通道为-1 NET_EM_CFG_VSP_TERMINAL_REGISTER_INFO, // 终端注册到视频会议服务器的配置, 对应结构体 NET_CFG_VSP_TERMINAL_REGISTER_INFO, 对应通道为-1 /***********道闸配置**************************************************************************************************/ NET_EM_CFG_TRAFFICSTROBE = 9100, // 道闸配置, 对应结构体 NET_CFG_TRAFFICSTROBE_INFO /***********LED屏配置************************************************************************************************/ NET_EM_CFG_LED_TEXT = 9200, // LED屏显示配置, 对应结构体 NET_CFG_LED_TEXT NET_EM_CFG_LED_TEXT_ARRAY = 9201, // LED屏显示批量配置, 对应结构体 NET_CFG_LED_TEXT_ARRAY /***********布撤防配置************************************************************************************************/ NET_EM_CFG_DISABLE_LINKAGE = 9300, // 一键撤防配置,对应结构体 NET_CFG_DISABLE_LINKAGE, 与通道不相关,通道号需要填成-1 NET_EM_CFG_DISABLE_LINKAGE_TIME_SECTION = 9301, // 周期撤防联动项功能总开关, 对应结构体 NET_CFG_DISABLE_LINKAGE_TIME_SECTION, 与通道不相关,通道号需要填成-1 NET_EM_CFG_REMOTE_DISABLE_LINKAGE = 9302, // 远程撤防联动项功能总开关, 对应结构体 NET_CFG_REMOTE_DISABLE_LINKAGE_INFO NET_EM_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC = 9303, // 远程通道是否同步本地端"周期一键布撤防"配置, 对应结构体 NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO, 与通道不相关,接口通道号需要填成-1 /***********矩阵相关配置************************************************************************************************/ NET_EM_CFG_MATRIX_NETKBDFASTCTRL = 9400, // 网络键盘快速控制配置, 对应结构体 NET_CFG_MATRIX_NETKBDFASTCTRL_INFO /***********Vedio相关配置************************************************************************************************/ NET_EM_CFG_VIDEO_CHANNEL_LABEL = 9600, // 存放保密室代码和名称, 对应结构体 NET_CFG_VIDEO_CHANNEL_LABEL_INFO NET_EM_CFG_VIDEO_IMAGE_CTRL = 9601, // 图像旋转设置能力配置 ,对应结构体 NET_EM_CFG_VIDEO_IMAGE_CTRL_INFO /***********Traffic相关配置***************************************************************************************************/ NET_EM_CFG_TRAFFIC_LATTICE_SCREEN = 10000, // 点阵屏显示信息配置, 对应结构体 NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO NET_EM_CFG_TRAFFIC_VOICE_BROADCAST = 10001, // 智能交通语音播报配置, 对应结构体 NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO NET_EM_CFG_SCENE_SNAP_SHOT_WITH_RULE2= 10002, // 场景抓拍设置, 对应结构体 NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO NET_EM_CFG_TRAFFIC_PARKING_SNAP_TIMER, // 停车场景定时抓拍配置信息, 对应结构体 NET_CFG_TRAFFIC_PARKING_SNAP_TIMER_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_VEHICLE_INFO = 10004, // 车辆信息配置, 对应结构体 NET_CFG_VEHICLE_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_VEHICLE_WORK_MODE = 10005, // 车辆工作模式配置, 对应结构体 NET_CFG_VEHICLE_WORK_MODE, 与通道不相关,通道号需要填成-1 /***********DoorBell门铃相关配置******************************************************************************************/ NET_EM_CFG_DOORBELL_EXTERNALDOORBELL = 11000, // 外接门铃配置,对应结构体 NET_CFG_DOORBELL_EXTERNALDOORBELL, 与通道不相关,通道号需要填成-1 /***********热成像相关配置******************************************************************************************/ NET_EM_CFG_HOT_COLD_SPOT_WARNING = 1505, // 热冷点报警配置, 对应的结构体 NET_HOT_COLD_SPOT_WARNING_INFO NET_EM_CFG_SENSOR_MAINTAIN = 11100, // 热成像机芯维护配置,对应结构体 NET_CFG_SENSOR_MAINTAIN NET_EM_CFG_TILT_LIMIT = 11101, // 激光测距俯仰角限制,对应结构体 NET_CFG_TILT_LIMIT NET_EM_CFG_RADIO_REGULATOR = 11102, // 人体测温标准黑体配置, 对应结构体 NET_CFG_RADIO_REGULATOR,通道号不能为-1 NET_EM_CFG_HUMAN_THERM_CALIBRATE = 11103,// 人体测温标定信息, 对应结构体 NET_CFG_HUMAN_THERM_CALLBRATE_INFO ,通道号必须是-1 NET_EM_CFG_TELESCOPE_OPTIONS = 11104, // 望远镜配置,对应结构体 NET_CFG_TELESCOPE_OPTIONS_INFO NET_EM_CFG_ENVIRONMENT_THERM_INFO = 11105, // 环境温度信息(热成像内部配置,只可读,不可设),通道号需要填热成像通道号 对应结构体 NET_CFG_ENVIRONMENT_THERM_INFO NET_EM_CFG_THERMOMETRY_SHIELD = 11106, // 测温屏蔽区配置 对应结构体 NET_CFG_THERMOMETRY_SHIELD_INFO /***********坐席系统相关配置******************************************************************************************/ NET_EM_CFG_KVM_MAIN_NODE = 12000, // 键盘显示器鼠标节点配置,对应结构体 NET_CFG_KVM_MAIN_NODE NET_EM_CFG_KVM_HOT_KEY = 12001, // 键盘显示器鼠标热键配置,对应结构体 NET_CFG_KVM_HOT_KEY NET_EM_CFG_KM_TRANS_ENCRYPT = 12002, // 键盘鼠标加密配置,对应结构体 NET_CFG_KM_TRANS_ENCRYPT NET_EM_CFG_NET_TV_DEVICE = 12003, // 网络解码设备配置,对应结构体 NET_CFG_NET_TV_DEVICE /***********录播默认配置******************************************************************************************/ NET_EM_CFG_COURSE_RECORD_DEFAULT_CONFIG = 12100, // 录播默认配置, 对应结构体 NET_CFG_COURSE_RECORD_DEFAULT_CONFIG NET_EM_CFG_COURSE_RECORD_UPLOAD = 12101, // 录播设备支持录像文件上传配置, 对应结构体 NET_CFG_COURSE_RECORD_UPLOAD NET_EM_CFG_COURSE_RECORD_EX = 12102, // 录像计划扩展配置,跟StorageScheduleGlobal配置关联, 对应结构体NET_CFG_COURSE_RECORD_EX /***********AroundWifi相关配置******************************************************************************************/ NET_EM_CFG_WIFI_INSTALL_PARAM = 12200, // Wifi设备安装配置, 对应结构体 NET_CFG_WIFI_INSTALL_PARAM, 与通道不相关,通道号需要填成-1 /***********硬盘相关配置******************************************************************************************/ NET_EM_CFG_STORAGE_HEALTH_ABNORMAL = 12300, // 硬盘健康异常配置, 对应结构体 NET_CFG_STORAGE_HEALTH_ABNORMAL, 与通道不相关,通道号需要填成-1 NET_EM_CFG_STORAGE_GLOBAL = 12301, // 存储组件全局配置, 对应结构体 NET_CFG_STORAGE_GLOBAL, 与通道不相关,通道号需要填成-1 NET_EM_CFG_NAS_DIRECTORY = 12302, // 共享文件夹信息配置, 对应结构体 NET_CFG_NAS_DIRECTORY NET_EM_CFG_DISK_FIRMWARE_INFO = 12303, // 硬盘固件信息, 对应结构体 NET_CFG_DISK_FIRMWARE_INFO, 与通道不相关,通道号需要填成-1 /***********lora 网关相关配置******************************************************************************************/ NET_EM_CFG_LORA_GATEWAY_BASIC = 12400, // Lora网关设备基本配置, 对应结构体 NET_CFG_LORA_GATEWAY_BASIC NET_EM_CFG_LORA_GATEWAY_ACCESS = 12401, // Lora网关接入配置, 对应结构体 NET_CFG_LORA_GATEWAY_ACCESS NET_EM_CFG_LORA_GATEWAY_RADIO = 12402, // Lora网关射频参数, 对应结构体 NET_CFG_LORA_GATEWAY_RADIO /***********室内机门口机相关配置******************************************************************************************/ NET_EM_CFG_VTS_INFO = 12500, // 管理机列表配置, 对应结构体 NET_CFG_VTS_INFO, 与通道不相关,通道号需要填成-1 NET_EM_CFG_HOSPITAL_BACKLIGHT_PLAN, // 医院背光计划配置, 对应结构体 NET_CFG_HOSPITAL_BACKLIGHT_PLAN, 与通道不相关, 通道号需要填成-1 NET_EM_CFG_HOSPITAL_INTRODUCE, // 医院/科室介绍信息配置, 对应结构体 NET_CFG_HOSPITAL_INTRODUCE_INFO, 与通道不相关, 通道号需要填成-1 NET_EM_CFG_HOSPITAL_CHECKLIST, // 医院检查/费用病人清单配置, 对应结构体 NET_CFG_HOSPITAL_CHECKLIST_INFO, 与通道不相关, 通道号需要填成-1 NET_EM_CFG_HOSPITAL_MEDIA_INFO, // 医院健康宣教视频媒体点播协议配置, 对应结构体 NET_CFG_HOSPITAL_MEDIA_INFO, 与通道不相关, 通道号需要填成-1 NET_EM_CFG_VTS_BASIC_INFO, // VTS基本配置, 对应结构体 NET_CFG_VTS_BASIC_INFO, 与通道不相关,通道号需要填成-1 /***********声音配置******************************************************************************************/ NET_EM_CFG_SOUND = 12600, // 声音配置, 对应结构体 NET_CFG_SOUND NET_EM_CFG_VOICE_PLAY_PLAN, // 语音时间预案配置, 对应结构体 NET_CFG_VOICE_PLAY_PLAN,与通道无关, 通道号需填成-1 NET_EM_CFG_SMART_SOUND_DETECT, // 声音检测配置,对应结构体NET_CFG_SMART_SOUND_DETECT,下标对应音频通道号 /***********串口相关配置******************************************************************************************/ NET_EM_CFG_DHRS = 12700, // 485串口协议设备配置, 对应结构体 NET_CFG_DHRS /***********广告播放相关配置******************************************************************************************/ NET_EM_CFG_ADVERT_PLAY_RULE = 12800, // 广告播放的属性设置, 对应结构体 NET_CFG_ADVERT_PLAY_RULE, 与通道无关, 通道号需填成-1 /***********安检相关配置******************************************************************************************/ NET_EM_CFG_XRAY_UPLOAD_PLATFORM = 12900, // 安检服务器上传平台的物品类别设置, 对应结构体 NET_CFG_XRAY_UPLOAD_PLATFORM, 与通道无关, 通道号需填成-1 NET_EM_CFG_XRAY_OVERLAY = 12901, // X光机预览叠加配置, 对应结构体 NET_CFG_XRAY_OVERLAY_INFO, 与通道无关, 通道号需填成-1 /***********项目相关配置******************************************************************************************/ NET_EM_CFG_COURSE_INFO = 13000, // 考试科目配置, 对应结构体NET_CFG_COURSE_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_EXAMINATION_ROOM_INFO, // 考场配置, 对应结构体NET_CFG_EXAMINATION_ROOM_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RECORD_NAME_RULE_INFO, // 文件目录、文件名规则配置, 对应结构体NET_CFG_RECORD_NAME_RULE_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_REDUNDANT_STORAGE_STRATEGY, // 冗余录像存储策略配置, 对应结构体 NET_CFG_REDUNDANT_STORAGE_STRATEGY_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RECORD_SHORTAGE_ALARM, // 录像不足配置天数报警配置,对应结构体 NET_CFG_RECORD_SHORTAGE_ALARM_INFO NET_EM_CFG_KVM_CONTROL_DATA_MODE, // KVM远程控制数据模式配置,对应结构体 NET_CFG_KVM_CONTROL_DATA_MODE_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_PRIVACY_FACEID, // 隐私保护的目标ID列表配置,对应结构体 NET_CFG_PRIVACY_FACEID_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_CHANG_BAI_VEHICLE_PROHIBITED, // 支持平台下发禁行时间配置,对应结构体 NET_CFG_CHANG_BAI_VEHICLE_PROHIBITED_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_TUXI_SN_ACCESS_TABLE, // NVR允许接入IPC配置, 对应结构体 NET_CFG_TUXI_SN_ACCESS_TABLE_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_ATTENDANCECFG_XL_CUSTOM, // 考勤配置, 对应结构体 NET_CFG_ATTENDANCECFG_XL_CUSTOM_INFO, 与通道无关, 通道号需填成-1 /***********信号机相关配置******************************************************************************************/ NET_EM_CFG_RTSC_SCH_CROSSLIST = 14000, // 路口数据列表配置, 对应结构体NET_CFG_RTSC_SCH_CROSSLIST_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_CHANNELS, // 通道表, 对应结构体NET_CFG_RTSC_SCH_CHANNELS_INFO NET_EM_CFG_RTSC_SCH_PLANS, // 周期方案表, 对应结构体NET_CFG_RTSC_SCH_PLANS_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_MANAGE, // 红绿灯调度计划列表, 对应结构体 NET_CFG_RTSC_SCH_MANAGE_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_VEHICLE_DETECTORLIST, // 检测器列表,对应结构体 NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_PEDDETECTOR_LIST, // 行人检测器列表,对应结构体 NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY, // 行人优先智能化配置,对应结构体 NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_OVERFLOW_CONTROL, // 溢出控制列表,对应结构体 NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_NIGHTASK, // 夜间请求,对应结构体 NET_CFG_RTSC_SCH_NIGHTASK_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_OPTIMIZES, // 饱和度与单点自适应智能化配置,对应结构体 NET_CFG_RTSC_SCH_OPTIMIZES_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_VARLANELIST, // 可变车道列表,对应结构体 NET_CFG_RTSC_SCH_VARLANELIST_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_SCH_VARLANE_MANAGEMENT, // 可变车道调度计划列表,对应结构体 NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO, 与通道无关, 通道号需填成-1 NET_EM_CFG_RTSC_TEMP_SCH, // 临时方案配置,对应结构体 NET_CFG_RTSC_TEMP_SCH_INFO, 与通道无关, 通道号需填成-1 /******************************************************************************************************************/ /***********EAS相关配置******************************************************************************************/ NET_EM_CFG_EAS_SYSTEM_CONFIG = 14500, // EAS设备配置信息, 对应结构体 NET_CFG_EAS_SYSTEM_CONFIG_INFO NET_EM_CFG_EAS_COIL_SWITH, // EAS设备天线开关, 对应结构体 NET_CFG_EAS_COIL_SWITH_INFO /******************************************************************************************************************/ } NET_EM_CFG_OPERATE_TYPE; ////////////////////////////////////////////////////////////////////// /// RPC方法名 ////////////////////////////////////////////////////////////////////// #define RPC_METHOD_MONITORWALL_ADD "monitorWallManager.addMonitorWall" // 添加电视墙 /*********************************************************************** ** 回调函数定义 ***********************************************************************/ ///@brief 网络连接断开回调函数原形 typedef void (CALLBACK *fDisConnect)(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, LDWORD dwUser); ///@brief 网络连接恢复回调函数原形 typedef void (CALLBACK *fHaveReConnect)(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, LDWORD dwUser); ///@brief 动态子连接断开回调函数原形 typedef void (CALLBACK *fSubDisConnect)(EM_INTERFACE_TYPE emInterfaceType, BOOL bOnline, LLONG lOperateHandle, LLONG lLoginID, LDWORD dwUser); ///@brief 视频预览断开回调函数原形, (param内存由SDK内部申请释放 ) typedef void (CALLBACK *fRealPlayDisConnect)(LLONG lOperateHandle, EM_REALPLAY_DISCONNECT_EVENT_TYPE dwEventType, void* param, LDWORD dwUser); ///@brief 实时预览数据回调函数原形(pBuffer内存由SDK内部申请释放) // 通过 dwDataType 过滤得到对应码流,具体码流类型请参考 EM_REALDATA_FLAG; 转码流时 dwDataType 值请参考 NET_DATA_CALL_BACK_VALUE 说明 typedef void (CALLBACK *fRealDataCallBack)(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief 实时预览数据回调函数原形--扩展(pBuffer内存由SDK内部申请释放) // 通过 dwDataType 过滤得到对应码流,具体码流类型请参考 EM_REALDATA_FLAG; 转码流时 dwDataType 值请参考 NET_DATA_CALL_BACK_VALUE 说明 typedef void (CALLBACK *fRealDataCallBackEx)(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser); ///@brief 实时预览数据回调函数原形--扩展(pBuffer内存由SDK内部申请释放) // 通过 dwDataType 过滤得到对应码流,具体码流类型请参考 EM_REALDATA_FLAG; 转码流时 dwDataType 值请参考 NET_DATA_CALL_BACK_VALUE 说明 // 当转码流时,param 为具体的转码信息(视频帧、音频帧等信息),对应结构体 NET_STREAMCONVERT_INFO typedef void (CALLBACK *fRealDataCallBackEx2)(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LLONG param, LDWORD dwUser); ///@brief 屏幕叠加回调函数原形 typedef void (CALLBACK *fDrawCallBack)(LLONG lLoginID, LLONG lPlayHandle, HDC hDC, LDWORD dwUser); ///@brief 按时间回放进度回调函数原形 typedef void (CALLBACK *fTimeDownLoadPosCallBack) (LLONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, int index, NET_RECORDFILE_INFO recordfileinfo, LDWORD dwUser); ///@brief 按时间回放进度回调函数原形的扩展 typedef void (CALLBACK *fTimeDownLoadPosCallBackEx) (LLONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, int index, NET_RECORDFILE_INFOEX recordfileinfoEx, LDWORD dwUser); ///@brief 消息回调函数原形(pBuf内存由SDK内部申请释放) typedef BOOL (CALLBACK *fMessCallBack)(LONG lCommand, LLONG lLoginID, char *pBuf, DWORD dwBufLen, char *pchDVRIP, LONG nDVRPort, LDWORD dwUser); ///@brief 新增参数说明 // bAlarmAckFlag : TRUE,该事件为可以进行确认的事件;FALSE,该事件无法进行确认 // nEventID 用于对 CLIENT_AlarmAck 接口的入参进行赋值,当 bAlarmAckFlag 为 TRUE 时,该数据有效 // pBuf内存由SDK内部申请释放 typedef BOOL (CALLBACK *fMessCallBackEx1)(LONG lCommand, LLONG lLoginID, char *pBuf, DWORD dwBufLen, char *pchDVRIP, LONG nDVRPort, BOOL bAlarmAckFlag, LONG nEventID, LDWORD dwUser); ///@brief 报警上报数据 typedef struct tagNET_MESSAGE_CALLBACK_INFO { int nAlarmType; // 报警类型,如 DH_ALARM_ACCESS_CTL_EVENT,同 fMessCallBack、fMessCallBackEx1 中的 lCommand 字段 BYTE byReserved1[4]; // 字节对齐 LLONG lLoginID; // 登录句柄 char* pBuf; // 数据缓存区(SDK申请释放),使用者根据 lCommand 转换为相应结构体,如 ALARM_ACCESS_CTL_EVENT_INFO DWORD dwBufLen; // pBuf 长度 BOOL bAlarmAckFlag; // TRUE,该事件为可以进行确认的事件;FALSE,该事件无法进行确认 char* pszIP; // 设备IP int nPort; // 设备端口 int nEventID; // 事件ID BOOL bRestoreEvent; // 是否是重传数据 BYTE byReserved[1020]; // 预留字节 }NET_MESSAGE_CALLBACK_INFO; ///@brief 消息回调函数原形 // dwUser 用户自定义数据 typedef BOOL (CALLBACK *fMessCallBackEx2)(NET_MESSAGE_CALLBACK_INFO* pInfo, LDWORD dwUser); ///@brief 侦听服务器回调函数原形 typedef int (CALLBACK *fServiceCallBack)(LLONG lHandle, char *pIp, WORD wPort, LONG lCommand, void *pParam, DWORD dwParamLen, LDWORD dwUserData); ///@brief 语音对讲的音频数据回调函数原形(pDataBuf内存由SDK内部申请释放) // 当byAudioFlag为2时,pDataBuf表示为不带头的PCM数据,首先将回调中byAudioFlag为1时的数据通过CLIENT_AudioDec接口发送,再通过byAudioFlag为2时将数据回调给用户 typedef void (CALLBACK *pfAudioDataCallBack)(LLONG lTalkHandle, char *pDataBuf, DWORD dwBufSize, BYTE byAudioFlag, LDWORD dwUser); ///@brief fAudioDataCallBackEx 回调音频信息 typedef struct tagNET_AUDIO_DATA_CB_INFO { BYTE* pBuf; // 带音频头的音频数据 DWORD dwBufSize; // 带音频头的音频数据长度 DH_TALK_CODING_TYPE emAudioCode; // 音频编码格式 BYTE* pRawBuf; // 不带音频头的音频裸数据 DWORD dwRawBufSize; // 不带音频头的音频数据长度 int nAudioBit; // 位数,如8或16等 DWORD dwSampleRate; // 采样率,如8000或16000等 BYTE bReserved[256]; // 预留字节 }NET_AUDIO_DATA_CB_INFO; ///@brief 音频数据来源 typedef enum tagEM_AUDIO_SOURCE_FLAG { EM_AUDIO_SOURCE_FLAG_UNKNOWN = -1, // 未知状态 EM_AUDIO_SOURCE_FLAG_LOCAL = 0, // 本地录音数据,可以发送给设备 EM_AUDIO_SOURCE_FLAG_REMOTE = 1, // 远程音频数据,即从设备接收到音频数据 }EM_AUDIO_SOURCE_FLAG; ///@brief 语音对讲的音频数据回调函数原形 typedef void (CALLBACK *fAudioDataCallBackEx)(LLONG lTalkHandle, NET_AUDIO_DATA_CB_INFO* stAudioInfo, EM_AUDIO_SOURCE_FLAG emAudioFlag, LDWORD dwUser); ///@brief 升级设备程序回调函数原形 // nTotalSize = 0, nSendSize = -1 表示升级完成 // nTotalSize = 0, nSendSize = -2 表示升级出错 // nTotalSize = 0, nSendSize = -3 用户没有权限升级 // nTotalSize = 0, nSendSize = -4 升级程序版本过低 // nTotalSize = 0, nSendSize = -5 备份过程中,暂时无法升级 // nTotalSize = -1, nSendSize = XX 表示升级进度 // nTotalSize = XX, nSendSize = XX 表示升级文件发送进度 typedef void (CALLBACK *fUpgradeCallBack) (LLONG lLoginID, LLONG lUpgradechannel, int nTotalSize, int nSendSize, LDWORD dwUser); ///@brief 升级设备程序回调函数原形支持G以上升级文件 // nTotalSize = 0, nSendSize = -1 表示升级完成 // nTotalSize = 0, nSendSize = -2 表示升级出错 // nTotalSize = 0, nSendSize = -3 用户没有权限升级 // nTotalSize = 0, nSendSize = -4 升级程序版本过低 // nTotalSize = 0, nSendSize = -5 备份过程中,暂时无法升级 // nTotalSize = -1, nSendSize = XX 表示升级进度 // nTotalSize = XX, nSendSize = XX 表示升级文件发送进度 typedef void (CALLBACK *fUpgradeCallBackEx) (LLONG lLoginID, LLONG lUpgradechannel, INT64 nTotalSize, INT64 nSendSize, LDWORD dwUser); ///@brief 透明串口回调函数原形(pBuffer内存由SDK内部申请释放) typedef void (CALLBACK *fTransComCallBack) (LLONG lLoginID, LLONG lTransComChannel, char *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief 查询设备日志数据回调函数原形(pBuffer内存由SDK内部申请释放) typedef void (CALLBACK *fLogDataCallBack)(LLONG lLoginID, char *pBuffer, DWORD dwBufSize, DWORD nTotalSize, BOOL bEnd, LDWORD dwUser); ///@brief 抓图回调函数原形(pBuf内存由SDK内部申请释放) // EncodeType 编码类型,10:表示jpeg图片 0:mpeg4的i帧 typedef void (CALLBACK *fSnapRev)(LLONG lLoginID, BYTE *pBuf, UINT RevLen, UINT EncodeType, DWORD CmdSerial, LDWORD dwUser); ///@brief GPS信息订阅回调 typedef void (CALLBACK *fGPSRev)(LLONG lLoginID, GPS_Info GpsInfo, LDWORD dwUserData); ///@brief GPS信息订阅回调--扩展 typedef void (CALLBACK *fGPSRevEx)(LLONG lLoginID, GPS_Info GpsInfo, ALARM_STATE_INFO stAlarmInfo, LDWORD dwUserData, void *reserved); ///@brief GPS信息订阅回调--扩展2 typedef void (CALLBACK *fGPSRevEx2)(LLONG lLoginID, const LPNET_GPS_LOCATION_INFO lpData, LDWORD dwUserData, void *reserved); ///@brief GPS温湿度信息订阅回调 typedef void (CALLBACK *fGPSTempHumidityRev)(LLONG lLoginID, GPS_TEMP_HUMIDITY_INFO GpsTHInfo, LDWORD dwUserData); ///@brief 异步数据回调 typedef void (CALLBACK *fMessDataCallBack)(LLONG lCommand, LPNET_CALLBACK_DATA lpData, LDWORD dwUser); ///@brief 文件传输回调 typedef void (CALLBACK *fTransFileCallBack)(LLONG lHandle, int nTransType, int nState, int nSendSize, int nTotalSize, LDWORD dwUser); ///@brief 智能分析数据回调;nSequence表示上传的相同图片情况,为0时表示是第一次出现,为2表示最后一次出现或仅出现一次,为1表示此次之后还有 // int nState = (int*) reserved 表示当前回调数据的状态, 为0表示当前数据为实时数据,为1表示当前回调数据是离线数据,为2时表示离线数据传送结束 typedef int (CALLBACK *fAnalyzerDataCallBack)(LLONG lAnalyzerHandle, DWORD dwAlarmType, void* pAlarmInfo, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser, int nSequence, void *reserved); ///@brief 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放) typedef void (CALLBACK *fSearchDevicesCB)(DEVICE_NET_INFO_EX *pDevNetInfo, void* pUserData); ///@brief 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放) typedef void (CALLBACK *fSearchDevicesCBEx)(LLONG lSearchHandle,DEVICE_NET_INFO_EX2 *pDevNetInfo, void* pUserData); ///@brief 回放YUV数据回调函数 typedef void (CALLBACK *fYUVDataCallBack)(LLONG lPlaybackHandle, BYTE *pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser, void *reserved); ///@brief 日志数据回调 typedef void (CALLBACK *fSubLogDataCallBack)(LLONG lLogHandle, NET_EM_LOG_QUERY_TYPE emLogType, const DH_DEVICE_LOG_ITEM_EX *pstuLogData, const int& nCount, LDWORD dwUser, void *reserved); /************************************************************************ ** 接口定义 ***********************************************************************/ ///@brief 设置SDK本地参数,在CLIENT_Init之前调用,szInBuffer内存由用户申请释放,里面存放被设置的信息,具体见NET_EM_SDK_LOCAL_CFG_TYPE类型对应结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetSDKLocalCfg(NET_EM_SDK_LOCAL_CFG_TYPE emCfgType, void* szInBuffer); ///@brief 获取SDK本地参数,szOutBuffer 由用户申请释放,用于存放返回的配置信息,具体见NET_EM_SDK_LOCAL_CFG_TYPE类型对应结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSDKLocalCfg(NET_EM_SDK_LOCAL_CFG_TYPE emCfgType, void* szOutBuffer); ///@brief SDK初始化 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Init(fDisConnect cbDisConnect, LDWORD dwUser); ///@brief SDK初始化, 通过NETSDK_INIT_PARAM指定初始化参数, 如定制NetSDK启用的常规网络处理线程数, // 当lpInitParam为空时,与调用CLIENT_Init效果一致 CLIENT_NET_API BOOL CALL_METHOD CLIENT_InitEx(fDisConnect cbDisConnect, LDWORD dwUser, LPNETSDK_INIT_PARAM lpInitParam = NULL); ///@brief SDK退出清理 CLIENT_NET_API void CALL_METHOD CLIENT_Cleanup(); ///@brief 设置运行模式参数,在CLIENT_Init之后调用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRunModeParams(NET_RUNMODE_PARAMS *pstuRunParams); ///@brief 设置断线重连成功回调函数,设置后SDK内部断线自动重连 CLIENT_NET_API void CALL_METHOD CLIENT_SetAutoReconnect(fHaveReConnect cbAutoConnect, LDWORD dwUser); ///@brief 设置动态子连接断线回调函数,目前SVR设备的预览和回放是短连接的。 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubconnCallBack(fSubDisConnect cbSubDisConnect, LDWORD dwUser); ///@brief 返回函数执行失败代码 CLIENT_NET_API DWORD CALL_METHOD CLIENT_GetLastError(void); ///@brief 设置连接设备超时时间和尝试次数 CLIENT_NET_API void CALL_METHOD CLIENT_SetConnectTime(int nWaitTime, int nTryTimes); ///@brief 设置登陆网络环境(pNetParam内存由用户申请释放) CLIENT_NET_API void CALL_METHOD CLIENT_SetNetworkParam(NET_PARAM *pNetParam); ///@brief 获取UDP和组播网络参数 CLIENT_NET_API void CALL_METHOD CLIENT_GetUdpOption(NET_UDP_OPTION *pUdpOption); ///@brief 设置UDP和组播网络参数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetUdpOption(NET_UDP_OPTION *pUdpOption); ///@brief 获取SDK的版本信息 CLIENT_NET_API DWORD CALL_METHOD CLIENT_GetSDKVersion(); ///@brief 向设备注册(lpDeviceInfo内存由用户申请释放) // error取值及其含义: // error = -1 设备不支持高安全等级登录 // error = 0 无错误 // error = 1 账号或密码错误 // error = 2 用户名不存在 // error = 3 登录超时 // error = 4 重复登录 // error = 5 帐号被锁定 // error = 6 帐号被列入禁止名单 // error = 7 系统忙,资源不足 // error = 8 子连接失败 // error = 9 主连接失败 // error = 10 超过最大连接数 // error = 11 只支持3代协议 // error = 12 设备未插入U盾或U盾信息错误 // error = 13 客户端IP地址没有登录权限 // error = 18 设备账号未初始化,无法登陆 // error = 19 登录受限 // error = 20 设备只支持高安全等级登陆 // error = 21 设备密码超出有效期,请通过 CLIENT_ModifyDevPassword 修改密码 CLIENT_NET_API LLONG CALL_METHOD CLIENT_Login(const char *pchDVRIP, WORD wDVRPort, const char *pchUserName, const char *pchPassword, LPNET_DEVICEINFO lpDeviceInfo, int *error = 0); ///@brief 扩展接口;nSpecCap = 0为TCP方式下的登入,void* pCapParam填NULL // nSpecCap = 2为主动注册的登入,void* pCapParam填主动注册的设备ID // nSpecCap = 3为组播方式下的登入,void* pCapParam填NULL // nSpecCap = 4为UDP方式下的登入,void* pCapParam填NULL // nSpecCap = 6为只建主连接下的登入,void* pCapParam填NULL // nSpecCap = 7为SSL加密,void* pCapParam填NULL // nSpecCap = 9为登录远程设备,这个时候void* pCapParam填入远程设备的名字的字符串 // nSpecCap = 12为LDAP方式登录,void* pCapParam填NULL // nSpecCap = 13为AD方式登录,void* pCapParam填NULL // nSpecCap = 14为Radius登录方式,void* pCapParam填NULL // nSpecCap = 15为Socks5登陆方式,这个时候void* pCapParam填入Socks5服务器的IP&&port&&ServerName&&ServerPassword字符串 // nSpecCap = 16为代理登陆方式,这个时候void* pCapParam填入SOCKET值 // nSpecCap = 19为P2P登陆方式,void* pCapParam填NULL // nSpecCap = 20为手机客户端登入,void* pCapParam填NULL // lpDeviceInfo内存由用户申请释放 // 当登入失败时: error的错误码对应的说明参考 CLIENT_Login // lpDeviceInfo, pCapParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_LoginEx(const char *pchDVRIP, WORD wDVRPort, const char *pchUserName, const char *pchPassword, int nSpecCap, void* pCapParam, LPNET_DEVICEINFO lpDeviceInfo, int *error = 0); ///@brief 登入扩展接口(lpDeviceInfo, pCapParam内存由用户申请释放) // 当登入失败时: error的错误码对应的说明参考 CLIENT_Login CLIENT_NET_API LLONG CALL_METHOD CLIENT_LoginEx2(const char *pchDVRIP, WORD wDVRPort, const char *pchUserName, const char *pchPassword, EM_LOGIN_SPAC_CAP_TYPE emSpecCap, void* pCapParam, LPNET_DEVICEINFO_Ex lpDeviceInfo, int *error = 0); ///@brief 异步向设备注册 // nSpecCap = 0为TCP方式下的登入,nSpecCap = 6为只建主连接下的登入 // nSpecCap = 19为P2P登录 // pCapParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartLogin(char *pchDVRIP, WORD wDVRPort, char *pchUserName, char *pchPassword, int nSpecCap, void* pCapParam, fHaveLogin cbLogin, LDWORD dwUser); ///@brief 只有当CLIENT_StartLogin()的回调错误为11时才使用该接口继续异步登陆(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartLoginEx(NET_IN_STARTLOGINEX* pInParam, NET_OUT_STARTLOGINEX* pOutParam); ///@brief 停止向设备注册 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopLogin(LLONG lLoginID); ///@brief 停止向设备注册 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopLoginEx(LLONG lLoginID); ///@brief 向设备注销 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Logout(LLONG lLoginID); ///@brief 登陆时TLS加密模式 typedef enum tagEM_LOGIN_TLS_TYPE { EM_LOGIN_TLS_TYPE_NO_TLS = 0, // 不走tls加密, 默认方式 EM_LOGIN_TLS_TYPE_TLS_ADAPTER = 1, // 自适应tls加密 EM_LOGIN_TLS_TYPE_TLS_COMPEL = 2, // 强制tls加密 EM_LOGIN_TLS_TYPE_TLS_MAIN_ONLY = 3, // 部分tls加密 EM_LOGIN_TLS_TYPE_TLS_GENERAL = 4, // 通用tls加密 }EM_LOGIN_TLS_TYPE; ///@brief CLIENT_LoginWithHighLevelSecurity 输入参数 typedef struct tagNET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY { DWORD dwSize; // 结构体大小 char szIP[64]; // IP int nPort; // 端口 char szUserName[64]; // 用户名 char szPassword[64]; // 密码 EM_LOGIN_SPAC_CAP_TYPE emSpecCap; // 登录模式 BYTE byReserved[4]; // 字节对齐 void* pCapParam; // 见 CLIENT_LoginEx 接口 pCapParam 与 nSpecCap 关系 EM_LOGIN_TLS_TYPE emTLSCap; // 登录的TLS模式,目前仅支持emSpecCap为EM_LOGIN_SPEC_CAP_TCP,EM_LOGIN_SPEC_CAP_SERVER_CONN 模式下的 tls登陆(TLS加密优先使用该选项) }NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; ///@brief CLIENT_LoginWithHighLevelSecurity 输出参数 typedef struct tagNET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY { DWORD dwSize; // 结构体大小 NET_DEVICEINFO_Ex stuDeviceInfo; // 设备信息 int nError; // 错误码,见 CLIENT_Login 接口错误码 BYTE byReserved[132]; // 预留字段 }NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; ///@brief 高安全级别登陆 CLIENT_NET_API LLONG CALL_METHOD CLIENT_LoginWithHighLevelSecurity(NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY* pstInParam, NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY* pstOutParam); ///@brief 获取设备端协议版本类型 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevProtocolType(LLONG lLoginID, EM_DEV_PROTOCOL_TYPE *pemProtocolType); ///@brief 获取VK入参 typedef struct tagNET_IN_GET_VKINFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道ID }NET_IN_GET_VKINFO; ///@brief 获取VK出参 typedef struct tagNET_OUT_GET_VKINFO { DWORD dwSize; // 结构体大小 NET_VKINFO stuVKInfo; // VK二值对信息 BOOL bContainPrevVKInfo; // 是否含有前一个VK二值对信息,TRUE表示有前一个VK二值对,FALSE表示没有前一个VK二值对 NET_VKINFO stuPrevVKInfo; // 前一个VK二值对信息 }NET_OUT_GET_VKINFO; ///@brief 更新VK入参 typedef struct tagNET_IN_UPDATE_VKINFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 }NET_IN_UPDATE_VKINFO; ///@brief 更新VK出参 typedef struct tagNET_OUT_UPDATE_VKINFO { DWORD dwSize; // 结构体大小 char szVKID[128]; // VKID }NET_OUT_UPDATE_VKINFO; ///@brief 订阅VK回调函数 typedef void (CALLBACK *fAttachVK)(LLONG lLoginID, LLONG lAttachHandle,int nChannelID,const NET_VKINFO* pVKInfo,LDWORD dwUser); ///@brief 订阅VK入参 typedef struct tagNET_IN_ATTACH_VK { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 fAttachVK cbAttachVK; // 回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_VK; ///@brief 订阅VK出参 typedef struct tagNET_OUT_ATTACH_VK { DWORD dwSize; // 结构体大小 NET_VKINFO stuCurrentVKInfo; // 当前VK二值对信息 BOOL bContainPrevVKInfo; // 是否含有前一个VK二值对信息,TRUE表示有前一个VK二值对,FALSE表示没有前一个VK二值对 NET_VKINFO stuPrevVKInfo; // 前一个VK二值对信息 }NET_OUT_ATTACH_VK; ///@brief 码流加密能力集信息 typedef struct tagNET_MEDIA_ENCRYPT_CAPS_INFO { BOOL bSupport; // 是否支持码流加密 BYTE byReserved[256]; // 保留字节 }NET_MEDIA_ENCRYPT_CAPS_INFO; ///@brief 获取加密能力集入参 typedef struct tagNET_IN_GET_MEDIA_ENCRYPT_CAPS { DWORD dwSize; // 结构体大小 int nChannelOffset; // 获取的通道偏移 int nChannelCount; // 一次获取的通道数量 }NET_IN_GET_MEDIA_ENCRYPT_CAPS; ///@brief 获取加密能力集出参 typedef struct tagNET_OUT_GET_MEDIA_ENCRYPT_CAPS { DWORD dwSize; // 结构体大小 NET_MEDIA_ENCRYPT_CAPS_INFO* pstuCapsInfo; // 码流加密能力集信息 int nMaxCapsInfoCount; // 最大获取码流加密能力集个数 int nRetCapsInfoCount; // 返回的码流加密能力集个数 }NET_OUT_GET_MEDIA_ENCRYPT_CAPS; ///@brief 更新VK CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpdateVK(LLONG lLoginID, const NET_IN_UPDATE_VKINFO* pInParam, NET_OUT_UPDATE_VKINFO* pOutParam, int nWaitTime); ///@brief 订阅VK,另外可以获取到当前vk甚至前一个vk信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachVK( LLONG lLoginID, const NET_IN_ATTACH_VK* pInParam, NET_OUT_ATTACH_VK* pOutParam, int nWaitTime); ///@brief 取消订阅VK CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachVK( LLONG lAttachHandle); ///@brief 获取媒体文件加密能力集 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetMediaEncryptCaps( LLONG lLoginID, const NET_IN_GET_MEDIA_ENCRYPT_CAPS* pInParam, NET_OUT_GET_MEDIA_ENCRYPT_CAPS* pOutParam, int nWaitTime); ///@brief 开始实时预览 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealPlay(LLONG lLoginID, int nChannelID, HWND hWnd); ///@brief 多画面预览时nChannelID NVR设备填视频输出通道号 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealPlayEx(LLONG lLoginID, int nChannelID, HWND hWnd, DH_RealPlayType rType = DH_RType_Realplay); ///@brief 实时预览加密数据回调函数(pBuffer内存由SDK内部申请释放) typedef void (CALLBACK *fEncryptRealDataCallBackEx)(LLONG lRealHandle, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief 实时预览原始码流数据回调函数(pBuffer内存由SDK内部申请释放) typedef void (CALLBACK *fOriginalRealDataCallBack)(LLONG lRealHandle, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief CLIENT_RealPlayForSpGdpr 接口入参 typedef struct tagNET_IN_REALPLAY_FOR_SP_GDPR { DWORD dwSize; // 结构体大小:赋值为结构体大小 int nChannelID; // 通道 DH_RealPlayType rType; // 类型 BYTE szReserved[4]; // 预留字段 HWND hWnd; // 窗口句柄 fRealDataCallBackEx2 cbRealData; // 实时数据回调 fOriginalRealDataCallBack pOriginalRealDataCallBack; // 原始码流数据回调 fEncryptRealDataCallBackEx pEncryptRealDataCallBackEx; // 加密码流数据回调 fRealPlayDisConnect cbDisconnect; // 断线回调 LDWORD dwUser; // 用户参数 } NET_IN_REALPLAY_FOR_SP_GDPR; ///@brief CLIENT_RealPlayForSpGdpr 出参 typedef struct tagNET_OUT_REALPLAY_FOR_SP_GDPR { DWORD dwSize; // 结构体大小:赋值为结构体大小 }NET_OUT_REALPLAY_FOR_SP_GDPR; ///@brief 实时预览--端到端音视频加密 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealPlayForSpGdpr(LLONG lLoginID, const NET_IN_REALPLAY_FOR_SP_GDPR* pInParam, NET_OUT_REALPLAY_FOR_SP_GDPR* pOutParam, DWORD dwWaitTime); ///@brief CLIENT_RealPlayEx2 接口入参 typedef struct tagNET_IN_REALPLAY { DWORD dwSize; // 结构体大小:赋值为结构体大小 int nChannelID; // 通道 DH_RealPlayType rType; // 类型 BYTE szReserved[4]; // 预留字段 HWND hWnd; // 窗口句柄 fRealDataCallBackEx2 cbRealData; // 实时数据回调 fOriginalRealDataCallBack pOriginalRealDataCallBack; // 原始码流数据回调 fEncryptRealDataCallBackEx pEncryptRealDataCallBackEx; // 加密码流数据回调 fRealPlayDisConnect cbDisconnect; // 断线回调 fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwUser; // 用户参数 } NET_IN_REALPLAY; ///@brief CLIENT_RealPlayEx2 出参 typedef struct tagNET_OUT_REALPLAY { DWORD dwSize; // 结构体大小:赋值为结构体大小 }NET_OUT_REALPLAY; ///@brief 实时预览--扩展Ex2接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealPlayEx2(LLONG lLoginID, const NET_IN_REALPLAY* pInParam, NET_OUT_REALPLAY* pOutParam, DWORD dwWaitTime); ///@brief 打开实时预览,若返回0表示打开失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRealPlay(LLONG lLoginID, int nChannelID, HWND hWnd, DH_RealPlayType rType, fRealDataCallBackEx cbRealData, fRealPlayDisConnect cbDisconnect, LDWORD dwUser, DWORD dwWaitTime = 10000); ///@brief 多画面实时预览 CLIENT_NET_API LLONG CALL_METHOD CLIENT_MultiPlay(LLONG lLoginID, HWND hWnd); ///@brief 停止多画面实时预览 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopMultiPlay(LLONG lMultiHandle); ///@brief 抓图;hPlayHandle为预览或回放句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CapturePicture(LLONG hPlayHandle, const char *pchPicFileName); ///@brief 抓图扩展;hPlayHandle为预览或回放句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CapturePictureEx(LLONG hPlayHandle, const char *pchPicFileName, NET_CAPTURE_FORMATS eFormat); ///@brief CLIENT_CapturePictureEx2 接口入参 typedef struct tagNET_IN_CAPTURE_PICTURE { DWORD dwSize; // 结构体大小 NET_CAPTURE_FORMATS emFormat; // 图片保存格式 char szPicFilePath[256]; // 图片保存路径 } NET_IN_CAPTURE_PICTURE; ///@brief CLIENT_CapturePictureEx2 接口出参 typedef struct tagNET_OUT_CAPTURE_PICTURE { DWORD dwSize; // 结构体大小 NET_TIME_EX stuTime; // 图片时间 } NET_OUT_CAPTURE_PICTURE; ///@brief 手动抓图扩展接口(支持返回图片时间,精确到毫秒), hPlayHandle为预览或回放句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CapturePictureEx2(LLONG lPlayHandle, NET_IN_CAPTURE_PICTURE *pstInParam, NET_OUT_CAPTURE_PICTURE *pstOutParam); ///@brief 设置实时预览数据回调 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRealDataCallBack(LLONG lRealHandle, fRealDataCallBack cbRealData, LDWORD dwUser); ///@brief 预览类型 typedef enum _PrerecordStreamType { Prerecord_RType_Realplay_0, // 实时预览-主码流 Prerecord_RType_Realplay_1, // 实时预览-从码流1 Prerecord_RType_Realplay_2, // 实时预览-从码流2 Prerecord_RType_Realplay_3, // 实时预览-从码流3 }EM_PRERECODE_STREAM_TYPE; ///@brief 预录 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PrerecordStream(LLONG lLoginID, int nChannelID,EM_PRERECODE_STREAM_TYPE emPreRecord, int nWaitTime); ///@brief 实时预览的实时数据标志, 对应 CLIENT_SetRealDataCallBackEx(Ex2) 中的 dwFlag 参数 // 支持 '|' 运算符, 如 dwFlag = REALDATA_FLAG_RAW_DATA | REALDATA_FLAG_YUV_DATA typedef enum tagEM_REALDATA_FLAG { REALDATA_FLAG_RAW_DATA = 0x01, // 原始数据标志, 对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为0, 0x01 = 0x01 << 0 REALDATA_FLAG_DATA_WITH_FRAME_INFO = 0x02, // 带有帧信息的数据标志, 对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为1, 0x02 = 0x01 << 1 REALDATA_FLAG_YUV_DATA = 0x04, // YUV 数据标志, 对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为2, 0x04 = 0x01 << 2 REALDATA_FLAG_PCM_AUDIO_DATA = 0x08, // PCM 音频数据标志, 对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为3, 0x08 = 0x01 << 3 } EM_REALDATA_FLAG; ///@brief 设置实时预览数据回调--扩展 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRealDataCallBackEx(LLONG lRealHandle, fRealDataCallBackEx cbRealData, LDWORD dwUser, DWORD dwFlag); ///@brief 设置实时预览加密数据回调 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetEncryptRealDataCallBack(LLONG lRealHandle, fEncryptRealDataCallBackEx cbRealData, LDWORD dwUser); ///@brief 设置实时预览数据回调--扩展Ex2 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRealDataCallBackEx2(LLONG lRealHandle, fRealDataCallBackEx2 cbRealData, LDWORD dwUser, DWORD dwFlag); ///@brief 设置实时预览原始码流数据回调 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetOriginalRealDataCallBack(LLONG lRealHandle, fOriginalRealDataCallBack cbRealData, LDWORD dwUser); ///@brief 设置VK信息回调:lPlayHandle 是拉流和回放接口返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetVKInfoCallBack(LLONG lPlayHandle, fVKInfoCallBack cbVKInfo, LDWORD dwUser); ///@brief 设置图象流畅性 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AdjustFluency(LLONG lRealHandle, int nLevel); ///@brief 保存数据为文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SaveRealData(LLONG lRealHandle, const char *pchFileName); ///@brief 结束保存数据为文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSaveRealData(LLONG lRealHandle); ///@brief 设置图像属性 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClientSetVideoEffect(LLONG lPlayHandle, unsigned char nBrightness, unsigned char nContrast, unsigned char nHue, unsigned char nSaturation); ///@brief 获取图像属性 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClientGetVideoEffect(LLONG lPlayHandle, unsigned char *nBrightness, unsigned char *nContrast, unsigned char *nHue, unsigned char *nSaturation); ///@brief 设置屏幕叠加回调 CLIENT_NET_API void CALL_METHOD CLIENT_RigisterDrawFun(fDrawCallBack cbDraw, LDWORD dwUser); ///@brief 打开声音 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OpenSound(LLONG hPlayHandle); ///@brief 设置音量;lPlayHandle为预览或回放句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetVolume(LLONG lPlayHandle, int nVolume); ///@brief 是否启用高清图像内部调整策略,默认启用。该策略启用时,在快放4倍速以上时,只播放I帧,不启用时,则每帧都播放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PlayEnableLargePicAdjustment(LLONG lPlayHandle, BOOL bEnable); ///@brief 关闭声音 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloseSound(); ///@brief 停止实时预览 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRealPlay(LLONG lRealHandle); ///@brief 停止实时预览--扩展 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRealPlayEx(LLONG lRealHandle); ///@brief 实时预览回调数据类型 typedef enum tagEM_REAL_DATA_TYPE { EM_REAL_DATA_TYPE_PRIVATE, // 私有码流 EM_REAL_DATA_TYPE_GBPS, // 国标PS码流,支持音频转码为G711A EM_REAL_DATA_TYPE_TS, // TS码流,支持音频转码为AAC,MP2 EM_REAL_DATA_TYPE_MP4, // MP4文件(从回调函数出来的是私有码流数据,参数dwDataType值为0),支持音频转码为MP2,AAC, G711A EM_REAL_DATA_TYPE_H264, // 裸视频流,h264与h265都能转码成功 EM_REAL_DATA_TYPE_FLV_STREAM, // 流式FLV,支持音频转码为AAC,G711A,G711U EM_REAL_DATA_TYPE_PS, // PS码流,支持音频转码为AAC,MP2 EM_REAL_DATA_TYPE_DHTS, // DHTS EM_REAL_DATA_TYPE_CDJFPS, // 定制PS-原始音频格式是G711A和G711U、MP2的,音频不转码,其他的,音频转码成AAC }EM_REAL_DATA_TYPE; ///@brief 异步拉流状态 typedef enum tagEM_ASYNC_REALPLAY_STATE { EM_ASYNC_REALPLAY_NORMAL, // 中间过程正常状态 EM_ASYNC_REALPLAY_SUCCESS, // 异步拉流成功, 异步任务结束 EM_ASYNC_REALPLAY_CHECK_ERROR, // 异步拉流检查出错 EM_ASYNC_REALPLAY_SPECIAL_CHANNEL_ERROR, // 获取特殊通道信息错误 EM_ASYNC_REALPLAY_INVALID_CHANNEL, // 异常 通道 EM_ASYNC_REALPLAY_SETUPSESSION_ERROR, // 建立会话失败 EM_ASYNC_REALPLAY_RENDER_ERROR, // 准备解码资源失败 EM_ASYNC_REALPLAY_OPENCHANNEL_ERROR, // 打开预览通道失败 EM_ASYNC_REALPLAY_GDPR_ERROR, // GDPR信息失败 } EM_ASYNC_REALPLAY_STATE; ///@brief: 异步实时预览回调函数 ///@param[out]: LLONG lAsyncTaskHandle // 异步实时预览任务句柄, 可通过CLIENT_StopAsynRealPlay 来停止异步拉流任务, // 若异步拉流任务状态返回成功, 则不需要手动去停止拉流任务,其自动会停止 ///@param[out]: LLONG lPlayHandle // 异步实时预览播放句柄, 异步拉流任务成功后返回的播放句柄, 通过CLIENT_StopRealPlayEx 来停止播放 ///@param[out]: LLONG lLoginID // 登陆句柄 ///@param[out]: int nChannelID // 通道号 ///@param[out]: HWND emState // 异步拉流状态 ///@param[out]: LDWORD dwUser // 用户数据 typedef void (CALLBACK *fAsynPlayCallBack)(LLONG lAsyncTaskHandle, LLONG lPlayHandle, LLONG lLoginID, int nChannelID, EM_ASYNC_REALPLAY_STATE emState, LDWORD dwUser); ///@brief CLIENT_StartAsynRealPlay 接口输入参数 typedef struct tagNET_IN_START_ASYN_REAL_PLAY { DWORD dwSize; // 结构体大小 int nChannel; // 拉流通道号 DH_RealPlayType emPlayType; // 预览类型 EM_REAL_DATA_TYPE emDataType; // 实时预览回调数据类型 HWND hPlayWnd; // 播放窗口句柄 fRealDataCallBackEx2 cbRealDataCallBack; // 实时数据回调 fOriginalRealDataCallBack cbOriginalRealDataCallBack; // 原始码流数据回调 fEncryptRealDataCallBackEx cbEncryptRealDataCallBack; // 加密码流数据回调 fRealPlayDisConnect cbDisconnect; // 断线回调 fVKInfoCallBack cbVKInfoCallBack; // VK信息回调 fAsynPlayCallBack cbAsynPlayCallBack; // 异步任务回调函数 LDWORD dwUser; // 用户数据 } NET_IN_START_ASYN_REAL_PLAY; ///@brief CLIENT_StartAsynRealPlay接口输出参数 typedef struct tagNET_OUT_START_ASYN_REAL_PLAY { DWORD dwSize; // 结构体大小 } NET_OUT_START_ASYN_REAL_PLAY; ///@brief:开启异步实时预览接口 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_START_ASYN_REAL_PLAY :pInParam // 接口输入参数 ///@param[out]: NET_OUT_START_ASYN_REAL_PLAY :pOutParam // 接口输出参数 ///@param[in]: DWORD :dwWaitTime // 等待时间 ///@return:BOOL:FALSE,wrong;TRUE :right CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartAsynRealPlay(LLONG lLoginID, NET_IN_START_ASYN_REAL_PLAY *pInParam, NET_OUT_START_ASYN_REAL_PLAY *pOutParam, DWORD dwWaitTime); ///@brief 停止异步实时预览任务, lAsyncTaskHandle 为CLIENT_StartAsynRealPlay 的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopAsynRealPlay(LLONG lAsyncTaskHandle); ///@brief 云台相对定位参数 typedef struct tagNET_IN_MOVERELATIVELY_INFO { DWORD dwSize; // 结构体大小 PTZ_SPACE_RELATIVELY_UNIT stuTranslation; // x, y, zoom 坐标归一化到 -1~1 PTZ_SPACE_RELATIVELY_UNIT stuSpeed; // x, y, zoom 坐标归一化到 0~1 }NET_IN_MOVERELATIVELY_INFO; ///@brief 云台方向 typedef enum tagNET_EM_PTZ_DIRECTION_TYPE { NET_EM_PTZ_DIRECTION_TYPE_UNKNOWN, // 未知 NET_EM_PTZ_DIRECTION_TYPE_EAST, // 东 NET_EM_PTZ_DIRECTION_TYPE_SOUTH, // 南 NET_EM_PTZ_DIRECTION_TYPE_WEST, // 西 NET_EM_PTZ_DIRECTION_TYPE_NORTH, // 北 }NET_EM_PTZ_DIRECTION_TYPE; ///@brief 设置云台方向 DH_EXTPTZ_SET_DIRECTION typedef struct tagNET_IN_SET_DIRECTION_INFO { DWORD dwSize; // 结构体大小 NET_EM_PTZ_DIRECTION_TYPE emDirection; // 云台方向 }NET_IN_SET_DIRECTION_INFO; ///@brief 设置云台方向 DH_EXTPTZ_BASE_MOVE_ABSOLUTELY typedef struct tagNET_IN_PTZBASE_MOVEABSOLUTELY_INFO { DWORD dwSize; // 结构体大小 int nZoomFlag; // 1表示显示倍率; 2保留,内部用; 3表示映射倍率值;如为0则默认映射倍率值 NET_PTZSPACE_UNNORMALIZED stuPosition; // 云台绝对移动位置云台绝对定位参数,扩大10倍 // 云台水平坐标(0~3600) // 云台垂直坐标(-1800~1800) // 倍率值,范围:nZoomFlag为1时(0~最大显示倍率*10),nZoomFlag为3时(0~16384) NET_PTZSPACE_UNNORMALIZED stuSpeed; // 若无speed则表示默认速度运动 P,T,以0.01度/秒为单位,扩大100倍显示,范围与PtzSpeedLevel中的范围保持一致[0,100000],水平和垂直分别最大不会超过PtzSpeedLevel中最大档位水平和垂直的最大值,zoom变倍速度为0~100。 BYTE byReserved[448]; // 预留字节 }NET_IN_PTZBASE_MOVEABSOLUTELY_INFO; ///@brief 绝对定位独立控制PT DH_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYPT typedef struct tagNET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO { DWORD dwSize; // 结构体大小 int nPositionP; // P轴坐标,范围0~36000(扩大100倍) int nPositionT; // T轴坐标,范围-18000~18000(扩大100倍) int nSpeedP; // P轴速度,以0.01度/秒为单位,扩大100倍显示,范围[0,100000] int nSpeedT; // T轴速度,以0.01度/秒为单位,扩大100倍显示,范围[0,100000] BYTE byReserved[1024]; // 预留字节 }NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO; ///@brief 绝对定位独立控制zoom DH_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYZOOM typedef struct tagNET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO { DWORD dwSize; // 结构体大小 int nZoomFlag; // 1表示显示倍率; 2保留,内部用; 3表示映射倍率值;如为0则默认映射倍率值 int nZoomValue; // 根据zoomFlag值确认Zoom位置范围: // 1:0~显示倍率最大值*100; // 3:映射倍率值(0~16384) int nZoomSpeed; // zoom变倍速度为0~100。 BYTE byReserved[1024]; // 预留字节 }NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO; ///@brief 云台连续运动参数 对应 DH_EXTPTZ_BASE_MOVE_CONTINUOUSLY 枚举 typedef struct tagNET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO { DWORD dwSize; // 结构体大小 int nSpeedX; // 水平移动速度,单位0.01度/秒,扩大100倍,范围[-10000, 10000],左为负,右为正 int nSpeedY; // 垂直移动速度,单位0.01度/秒,扩大100倍,范围[-10000, 10000],下为负,上为正 int nZoom; // 倍率,范围 [-100, 100],负数表示缩小 int nMoveTime; // 运动时间,单位秒 BYTE byReserved[1020]; // 预留字段 }NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO; ///@brief 设置当前位置聚焦值 对应 DH_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE 枚举 typedef struct tagNET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO { DWORD dwSize; // 结构体大小 int nfocusMapValue; // 聚焦映射值, 取值范围[0,28672] }NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO; ///@brief 云台移动停止,同时也停止巡航模式 对应DH_EXTPTZ_STOP_MOVE枚举 typedef struct tagNET_IN_STOP_MOVE_INFO { DWORD dwSize; // 结构体大小 }NET_IN_STOP_MOVE_INFO; ///@brief 开始云台控制 对应DH_EXTPTZ_START枚举 typedef struct tagNET_IN_PTZ_START_INFO { DWORD dwSize; // 结构体大小 char szCode[32]; // 命令码 int nArg1; // 控制参数1 int nArg2; // 控制参数2 int nArg3; // 控制参数3 int nArg4; // 控制参数4 }NET_IN_PTZ_START_INFO; ///@brief 结束云台控制 对应DH_EXTPTZ_STOP枚举 typedef struct tagNET_IN_PTZ_STOP_INFO { DWORD dwSize; // 结构体大小 char szCode[32]; // 命令码 int nArg1; // 控制参数1 int nArg2; // 控制参数2 int nArg3; // 控制参数3 int nArg4; // 控制参数4 }NET_IN_PTZ_STOP_INFO; ///@brief 开始模式记录 对应DH_EXTPTZ_START_PATTERN_RECORD枚举 typedef struct tagNET_IN_START_PATTERN_RECORD_INFO { DWORD dwSize; // 结构体大小 char szName[64]; // 模式名称 int nIndex; // 模式编号 }NET_IN_START_PATTERN_RECORD_INFO; ///@brief 停止模式记录 对应DH_EXTPTZ_STOP_PATTERN_RECORD枚举 typedef struct tagNET_IN_STOP_PATTERN_RECORD_INFO { DWORD dwSize; // 结构体大小 int nIndex; // 模式编号 }NET_IN_STOP_PATTERN_RECORD_INFO; ///@brief 开始模式回放 对应DH_EXTPTZ_START_PATTERN_REPLAY枚举 typedef struct tagNET_IN_START_PATTERN_REPLAY_INFO { DWORD dwSize; // 结构体大小 int nIndex; // 模式编号 }NET_IN_START_PATTERN_REPLAY_INFO; ///@brief 停止模式回放 对应DH_EXTPTZ_STOP_PATTERN_REPLAY枚举 typedef struct tagNET_IN_STOP_PATTERN_REPLAY_INFO { DWORD dwSize; // 结构体大小 int nIndex; // 模式编号 }NET_IN_STOP_PATTERN_REPLAY_INFO; ///@brief 云台三维定位, 对应DH_EXTPTZ_MOVE_DIRECTLY枚举 typedef struct tagNET_IN_MOVE_DIRECTLY_INFO { DWORD dwSize; // 结构体大小 PTZ_SPEED_UNIT stuScreen; // 屏幕坐标 PTZ_SPEED_UNIT stuSpeed; // 云台运行速度 }NET_IN_MOVE_DIRECTLY_INFO; ///@brief 通用云台控制 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZControl(LLONG lLoginID, int nChannelID, DWORD dwPTZCommand, DWORD dwStep, BOOL dwStop); ///@brief 私有云台控制,param4由用户申请释放内存,内存大小参照DH_EXTPTZ_ControlType对应的结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DHPTZControl(LLONG lLoginID, int nChannelID, DWORD dwPTZCommand, unsigned char param1, unsigned char param2, unsigned char param3, BOOL dwStop,void* param4=NULL); ///@brief 私有云台控制扩展接口,支持三维快速定位 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DHPTZControlEx(LLONG lLoginID, int nChannelID, DWORD dwPTZCommand, LONG lParam1, LONG lParam2, LONG lParam3, BOOL dwStop ); ///@brief 私有云台控制扩展接口,支持三维快速定位,鱼眼,param4由用户申请释放内存,内存大小参照DH_EXTPTZ_ControlType对应的结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DHPTZControlEx2(LLONG lLoginID, int nChannelID, DWORD dwPTZCommand, LONG lParam1, LONG lParam2, LONG lParam3, BOOL dwStop , void* param4 = NULL); ///@brief 区域扫描接口,获取和设置信息(NET_AREASCAN_EPTZ_CMD) CLIENT_NET_API BOOL CALL_METHOD CLIENT_DHPTZAreaScan(LLONG lLoginID ,DWORD dwPTZCommand, char* szInBuffer, DWORD dwInBufferSize,char* szOutBuffer = NULL, DWORD dwOutBufferSize = 0, int waittime=1000); ///@brief CLIENT_DHPTZCalibrateSingleDirection 入参 typedef struct tagNET_IN_CALIBRATE_SINGLEDIRECTION { DWORD dwSize; int nMode; // 校准模式,1:水平校准,2:垂直校准 }NET_IN_CALIBRATE_SINGLEDIRECTION; ///@brief 查询某月的各天是否存在录像文件, // nRecordFileType == EM_RECORD_TYPE_CARD,pchCardid输入卡号,限制字符长度59字节 // nRecordFileType == EM_RECORD_TYPE_FIELD,pchCardid输入自定义字段,限制字符长度256字节 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordStatus(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmMonth, char* pchCardid, LPNET_RECORD_STATUS pRecordStatus, int waittime=1000); ///@brief 查询时间段内是否有录像文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordTime(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char* pchCardid, BOOL *bResult, int waittime=1000); ///@brief 查询时间段内的所有录像文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordFile(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char* pchCardid, LPNET_RECORDFILE_INFO nriFileinfo, int maxlen, int *filecount, int waittime=1000, BOOL bTime = FALSE); ///@brief CLIENT_QueryRecordFileEx 接口输入参数 typedef struct tagNET_IN_QUERY_RECORD_FILE_EX { DWORD dwSize; // 结构体大小,必须赋值 int nChannelId; // 通道号 EM_QUERY_RECORD_TYPE emRecordFileType; // 查询的录像类型 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char* pszCardID; // 卡号 BOOL bTime; // 是否按照时间查询 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 NET_TIME stuEndTimeRealUTC; // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥 }NET_IN_QUERY_RECORD_FILE_EX; ///@brief CLIENT_QueryRecordFileEx 接口输出参数 typedef struct tagNET_OUT_QUERY_RECORD_FILE_EX { DWORD dwSize; // 结构体大小,必须赋值 NET_RECORDFILE_INFOEX* pstuFileinfo; // 录像文件信息,单个文件, 内存由上层申请 int nMaxlen; // 申请的内存大小,为NET_RECORDFILE_INFOEX 结构体大小的整数倍 int nFileCount; // 查询到的文件总数 }NET_OUT_QUERY_RECORD_FILE_EX; ///@brief 查询时间段内的所有录像文件 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordFileEx(LLONG lLoginID, NET_IN_QUERY_RECORD_FILE_EX* pstuInParam, NET_OUT_QUERY_RECORD_FILE_EX* pstuOutParam, int nWaitTime); ///@brief 异步查询时间段内的所有录像文件(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartQueryRecordFile(LLONG lLoginID, NET_IN_START_QUERY_RECORDFILE *pInParam, NET_OUT_START_QUERY_RECORDFILE *pOutParam); ///@brief 停止异步录像查询 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopQueryRecordFile(LLONG lQueryHandle); ///@brief 快速查询时间段内的录像文件,如果时间段内录像超过16条时,只返回时间最早的16段录像。 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QuickQueryRecordFile(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char* pchCardid, LPNET_RECORDFILE_INFO nriFileinfo, int maxlen, int *filecount, int waittime=1000, BOOL bTime = FALSE); ///@brief 查询最早录像时间(pFurthrestTime内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryFurthestRecordTime(LLONG lLoginID, int nRecordFileType, char *pchCardid, NET_FURTHEST_RECORD_TIME* pFurthrestTime, int nWaitTime); ///@brief 开始查找录像文件 CLIENT_NET_API LLONG CALL_METHOD CLIENT_FindFile(LLONG lLoginID, int nChannelId, int nRecordFileType, char* cardid, LPNET_TIME time_start, LPNET_TIME time_end, BOOL bTime, int waittime); ///@brief 查找录像文件(lpFindData内存由用户申请释放) CLIENT_NET_API int CALL_METHOD CLIENT_FindNextFile(LLONG lFindHandle,LPNET_RECORDFILE_INFO lpFindData); ///@brief 结束录像文件查找 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindClose(LLONG lFindHandle); ///@brief 按文件方式回放(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByRecordFile(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwUserData); ///@brief 按文件方式回放--扩展(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByRecordFileEx(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser); ///@brief 按文件录像回放入参信息 typedef struct tagNET_IN_PLAY_BACK_BY_FILE_INFO { LPNET_RECORDFILE_INFO pRecordFile; // 录像文件信息 HWND hWnd; // 播放窗格, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 LDWORD dwDataUser; // 数据回调用户信息 int nPlayDirection; // 播放方向, 0:正放; 1:倒放; int nWaittime; // 接口超时时间, 目前倒放使用 fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwVKInfoUser; // VK信息回调用户信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发LPNET_RECORDFILE_INFO中的starttime, endtime), 为FALSE表示仅下发LPNET_RECORDFILE_INFO中的starttime, endtime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // 录像的起始UTC时间(标准UTC时间) NET_TIME stuEndTimeRealUTC; // 录像的结束UTC时间(标准UTC时间) BYTE bReserved[964]; // 预留字节 }NET_IN_PLAY_BACK_BY_FILE_INFO; ///@brief 按文件录像回放出参信息 typedef struct tagNET_OUT_PLAY_BACK_BY_FILE_INFO { BYTE bReserved[1024]; // 预留字节 }NET_OUT_PLAY_BACK_BY_FILE_INFO; ///@brief 按文件方式回放--扩展 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByRecordFileEx2(LLONG lLoginID, const NET_IN_PLAY_BACK_BY_FILE_INFO *pstNetIn, NET_OUT_PLAY_BACK_BY_FILE_INFO *pstNetOut); ///@brief 按文件方式回放--回调回放中断事件(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartPlayBackByRecordFile(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, fRealPlayDisConnect fDisConnectCallBack, LDWORD dwDisUser, DWORD dwWaitTime = 10000); ///@brief 按文件方式回放--抽帧播放(带宽不够时可以使用)(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_FramCotrolPlayBackByRecordFile(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, unsigned int nCutFrameRate); ///@brief 按时间方式回放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByTime(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser); ///@brief 按时间方式回放--端到端加密方案 ///@param[in] lLoginID 登录句柄 ///@param[in] nChannelID 通道号 ///@param[in] lpStartTime 回放开始事件 ///@param[in] lpStopTime 回放结束事件 ///@param[in] hWnd 窗口句柄 ///@param[in] cbDownLoadPos 进度回调 ///@param[in] dwPosUser 进度回调用户数据 ///@param[in] fDownLoadDataCallBack 数据回调 ///@param[in] dwDataUser 数据回调用户数据 ///@return 非0表示句柄 0 表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByTimeForSpGdpr(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser); ///@brief 按时间方式回放--扩展 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByTimeEx(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser); ///@brief 按时间方式回放--扩展第二版,支持直接倒放,pstNetIn与pstNetOut需要用户申请内存 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByTimeEx2(LLONG lLoginID, int nChannelID, NET_IN_PLAY_BACK_BY_TIME_INFO *pstNetIn, NET_OUT_PLAY_BACK_BY_TIME_INFO *pstNetOut); ///@brief 按时间方式回放--回调回放中断事件 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartPlayBackByTime(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, fRealPlayDisConnect fDisConnectCallBack, LDWORD dwDisUser, DWORD dwWaitTime = 10000); ///@brief 按时间方式回放--抽帧播放(带宽不够时可以使用) CLIENT_NET_API LLONG CALL_METHOD CLIENT_FramCotrolPlayBackByTime(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, unsigned int nCutFrameRate); ///@brief 视频浓缩文件回放(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackBySynopsisFile(LLONG lLoginID, LPNET_SYNOPSISFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, LDWORD dwUser); ///@brief 多通道预览回放(pParam内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_MultiPlayBack(LLONG lLoginID, NET_MULTI_PLAYBACK_PARAM *pParam); ///@brief 定位录像回放起始点 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SeekPlayBack(LLONG lPlayHandle, unsigned int offsettime, unsigned int offsetbyte); ///@brief 按时间定位回放起始点 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SeekPlayBackByTime(LLONG lPlayHandle, LPNET_TIME lpSeekTime); ///@brief 暂停或恢复录像回放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PausePlayBack(LLONG lPlayHandle, BOOL bPause); ///@brief 快进录像回放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FastPlayBack(LLONG lPlayHandle); ///@brief 慢进录像回放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SlowPlayBack(LLONG lPlayHandle); ///@brief 设置录像回放速度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayBackSpeed(LLONG lPlayHandle, EM_PLAY_BACK_SPEED emSpeed); ///@brief 回放速度类型 typedef enum tagEM_PLAYBACK_SPEED_TYPE { EM_PLAYBACK_SPEED_FAST, // 快放 EM_PLAYBACK_SPEED_SLOW, // 慢放 } EM_PLAYBACK_SPEED_TYPE; ///@brief 回放方向 typedef enum tagEM_PLAYBACK_DIRECTION { EM_PLAYBACK_DIRECTION_FORWARD, // 正向 EM_PLAYBACK_DIRECTION_REVERSE, // 反向 } EM_PLAYBACK_DIRECTION; ///@brief CLIENT_SetPlayBackCustomSpeed 接口输入参数 typedef struct tagNET_IN_PLAYBACK_CUSTOM_SPEED { DWORD dwSize; // 结构体大小 EM_PLAYBACK_SPEED_TYPE emSpeedType; // 速度类型 EM_PLAYBACK_DIRECTION emDirection; // 播放方向 int nPlaySpeed; // 播放速度, 建议使用2的倍数 } NET_IN_PLAYBACK_CUSTOM_SPEED; ///@brief CLIENT_SetPlayBackCustomSpeed 接口输出参数 typedef struct tagNET_OUT_PLAYBACK_CUSTOM_SPEED { DWORD dwSize; // 结构体大小 } NET_OUT_PLAYBACK_CUSTOM_SPEED; ///@brief 设置录像回放速度, 支持自定义设置速度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayBackCustomSpeed(LLONG lPlayHandle, const NET_IN_PLAYBACK_CUSTOM_SPEED* pstInParam, NET_OUT_PLAYBACK_CUSTOM_SPEED* pstOutParam); ///@brief 步进录像回放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StepPlayBack(LLONG lPlayHandle, BOOL bStop); ///@brief 控制播放方向--正放或者倒放 ///@brief bBackward FLASE 正放,TRUE 倒放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PlayBackControlDirection(LLONG lPlayHandle, BOOL bBackward); ///@brief 设置回放帧速 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetFramePlayBack(LLONG lPlayHandle, int framerate); ///@brief 获取回放帧速 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFramePlayBack(LLONG lPlayHandle, int *fileframerate, int *playframerate); ///@brief 恢复正常回放速度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NormalPlayBack(LLONG lPlayHandle); ///@brief 智能检索回放(lpPlayBackParam内存用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SmartSearchPlayBack(LLONG lPlayHandle, LPIntelligentSearchPlay lpPlayBackParam); ///@brief 获取回放OSD时间 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPlayBackOsdTime(LLONG lPlayHandle, LPNET_TIME lpOsdTime, LPNET_TIME lpStartTime, LPNET_TIME lpEndTime); ///@brief 停止录像回放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopPlayBack(LLONG lPlayHandle); ///@brief 补录入参信息 typedef struct tagNET_IN_SUPPLEMENT_BY_TIME_INFO { int nChannelID; // 通道号 NET_TIME stStartTime; // 开始时间 NET_TIME stStopTime; // 结束时间 HWND hWnd; // 播放窗格, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 LDWORD dwDataUser; // 数据回调用户信息 fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwVKInfoUser; // VK信息回调用户信息 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stStopTime), 为FALSE表示仅下发stStartTime, stStopTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // 录像的起始UTC时间(标准UTC时间) NET_TIME stuEndTimeRealUTC; // 录像的结束UTC时间(标准UTC时间) char bReserved[972]; // 预留字段 }NET_IN_SUPPLEMENT_BY_TIME_INFO; ///@brief 补录出参信息 typedef struct tagNET_OUT_SUPPLEMENT_BY_TIME_INFO { char bReserved[1024]; // 预留字节 }NET_OUT_SUPPLEMENT_BY_TIME_INFO; ///@brief 按时间方式补录,pstIn与pstOut需要用户申请内存 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SupplementByTime(LLONG lLoginID, NET_IN_SUPPLEMENT_BY_TIME_INFO *pstIn, NET_OUT_SUPPLEMENT_BY_TIME_INFO *pstOut); ///@brief 停止补录 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSupplement(LLONG lSupplementHandle); ///@brief 下载录像文件(lpRecordFile内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByRecordFile(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, char *sSavedFileName, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwUserData, BOOL bUseUTCTime = FALSE); ///@brief 下载录像文件--扩展 ///@brief sSavedFileName不为空, 录像数据写入到该路径对应的文件; fDownLoadDataCallBack不为空, 录像数据通过回调函数返回 ///@brief pReserved 指加密录像的密码(长度不小于 8 的字符串) CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByRecordFileEx(LLONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, char *sSavedFileName, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwUserData, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, void* pReserved = NULL, BOOL bUseUTCTime = FALSE); ///@brief 通过时间下载录像 ///@brief nRecordFileType 的类型参见 枚举EM_QUERY_RECORD_TYPE CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByTime(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char *sSavedFileName, fTimeDownLoadPosCallBack cbTimeDownLoadPos, LDWORD dwUserData); ///@brief 通过时间下载录像--扩展 ///@brief sSavedFileName不为空, 录像数据写入到该路径对应的文件; fDownLoadDataCallBack不为空, 录像数据通过回调函数返回 ///@brief pReserved 指加密录像的密码(长度不小于 8 的字符串) CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByTimeEx(LLONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char *sSavedFileName, fTimeDownLoadPosCallBack cbTimeDownLoadPos, LDWORD dwUserData, fDataCallBack fDownLoadDataCallBack, LDWORD dwDataUser, void* pReserved = NULL); ///@brief 查询录像下载进度,单位KB CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDownloadPos(LLONG lFileHandle, int *nTotalSize, int *nDownLoadSize); ///@brief 停止录像下载 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopDownload(LLONG lFileHandle); ///@brief 暂停或恢复录像下载 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PauseDownload(LLONG lFileHandle, BOOL bPause); /***** ------------------------------------- 指定回调数据格式 预览、回放、下载 相关接口 ---------------------*/ #define NET_DATA_CALL_BACK_VALUE 1000 // 配合EM_REAL_DATA_TYPE使用,码流转换后的数据回调函数(fRealDataCallBackEx,fDataCallBack)中的参数dwDataType的值 // 为所转换的码流类型加上NET_DATA_CALL_BACK_VALUE. // 即,dwDataType = NET_DATA_CALL_BACK_VALUE + emDataType // 在回调函数中接受码流转换后的数据,必须要先判断 dwDataType 的值是否为 NET_DATA_CALL_BACK_VALUE和emDataType之和 // 另,EM_REAL_DATA_TYPE_PRIVATE不用做此判断 ///@brief 音频数据类型 typedef enum tagEM_AUDIO_DATA_TYPE { EM_AUDIO_DATA_TYPE_DEFAULT = 0, // 默认 EM_AUDIO_DATA_TYPE_AAC, // 音频强制转换为AAC EM_AUDIO_DATA_TYPE_G711A, // 音频强制转换为G711A EM_AUDIO_DATA_TYPE_G711U, // 音频强制转换为G711U EM_AUDIO_DATA_TYPE_MP2, // 音频强制转换为MP2 }EM_AUDIO_DATA_TYPE; ///@brief 时间戳 typedef struct tagNET_DATA_CALL_BACK_TIME { DWORD dwYear; // 年 DWORD dwMonth; // 月 DWORD dwDay; // 日 DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 DWORD dwMillisecond; // 毫秒 DWORD dwPTS; // pts 时间戳 DWORD dwDTS; // dts 时间戳 DWORD dwReserved[3]; // 预留字段 } NET_DATA_CALL_BACK_TIME; ///@brief 帧类型 typedef enum tagEM_DATA_CALL_BACK_FRAM_TYPE { EM_DATA_CALL_BACK_FRAM_TYPE_UNKNOWN = 0, // 帧类型不可知 EM_DATA_CALL_BACK_FRAM_TYPE_VIDEO, // 帧类型是视频帧 EM_DATA_CALL_BACK_FRAM_TYPE_AUDIO, // 帧类型是音频帧 EM_DATA_CALL_BACK_FRAM_TYPE_DATA, // 帧类型是数据帧 }EM_DATA_CALL_BACK_FRAM_TYPE; ///@brief 帧子类型 typedef enum tagEM_DATA_CALL_BACK_FRAM_SUB_TYPE { EM_DATA_CALL_BACK_FRAM_SUB_TYPE_INVALID = -1, //数据无效 EM_DATA_CALL_BACK_FRAM_SUB_TYPE_I_FRAME, //视频I帧 EM_DATA_CALL_BACK_FRAM_SUB_TYPE_P_FRAME, //视频P帧 EM_DATA_CALL_BACK_FRAM_SUB_TYPE_B_FRAME, //视频B帧 }EM_DATA_CALL_BACK_FRAM_SUB_TYPE; ///@brief 回放数据回调 typedef struct tagNET_DATA_CALL_BACK_INFO { DWORD dwSize; // 结构体大小 DWORD dwDataType; // 数据类型 unsigned char *pBuffer; // 数据 DWORD dwBufSize; // 数据长度 NET_DATA_CALL_BACK_TIME stuTime; // 时间戳 EM_DATA_CALL_BACK_FRAM_TYPE emFramType; // 帧类型 EM_DATA_CALL_BACK_FRAM_SUB_TYPE emFramSubType; // 帧子类型 }NET_DATA_CALL_BACK_INFO; ///@brief 回放数据回调函数原形(扩展) typedef int (CALLBACK *fDataCallBackEx)(LLONG lRealHandle, NET_DATA_CALL_BACK_INFO *pDataCallBack, LDWORD dwUser); ///@brief 开始实时预览并指定回调数据格式入参 typedef struct tagNET_IN_REALPLAY_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道编号 HWND hWnd; // 窗口句柄 DH_RealPlayType rType; // 码流类型 fRealDataCallBackEx cbRealData; // 数据回调函数 EM_REAL_DATA_TYPE emDataType; // 回调的数据类型 LDWORD dwUser; // 用户数据 const char* szSaveFileName; // 转换后的文件名 fRealDataCallBackEx2 cbRealDataEx; // 数据回调函数-扩展 EM_AUDIO_DATA_TYPE emAudioType; // 音频格式 fDataCallBackEx cbRealDataEx2; // 数据回调(扩展带时间戳,帧类型) }NET_IN_REALPLAY_BY_DATA_TYPE; ///@brief 开始实时预览并指定回调数据格式出参 typedef struct tagNET_OUT_REALPLAY_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 }NET_OUT_REALPLAY_BY_DATA_TYPE; ///@brief 指定回调数据类型 实施预览(预览), 数据回调函数 cbRealData 中得到的码流类型为 emDataType 所指定的类型 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealPlayByDataType(LLONG lLoginID, const NET_IN_REALPLAY_BY_DATA_TYPE* pstInParam, NET_OUT_REALPLAY_BY_DATA_TYPE* pstOutParam, DWORD dwWaitTime); ///@brief 开始回放并指定回调数据格式 入参 typedef struct tagNET_IN_PLAYBACK_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道编号 NET_TIME stStartTime; // 开始时间 NET_TIME stStopTime; // 结束时间 HWND hWnd; // 播放窗格, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 EM_REAL_DATA_TYPE emDataType; // 回调的数据类型 LDWORD dwDataUser; // 数据回调用户信息 int nPlayDirection; // 播放方向, 0:正放; 1:倒放; EM_AUDIO_DATA_TYPE emAudioType; // 音频类型 fDataCallBackEx fDownLoadDataCallBackEx;// 数据回调(扩展带时间戳,帧类型) }NET_IN_PLAYBACK_BY_DATA_TYPE; ///@brief 开始回放并指定回调数据格式 出参 typedef struct tagNET_OUT_PLAYBACK_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 }NET_OUT_PLAYBACK_BY_DATA_TYPE; ///@brief 指定回调数据格式 开始回放, 数据回调函数 fDownLoadDataCallBack 中得到的码流类型为 emDataType 所指定的类型 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackByDataType(LLONG lLoginID, const NET_IN_PLAYBACK_BY_DATA_TYPE* pstInParam, NET_OUT_PLAYBACK_BY_DATA_TYPE* pstOutParam, DWORD dwWaitTime); ///@brief 开始下载并指定回调数据格式 入参 typedef struct tagNET_IN_DOWNLOAD_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道编号 EM_QUERY_RECORD_TYPE emRecordType; // 录像类型 char* szSavedFileName; // 下载的文件路径 NET_TIME stStartTime; // 开始时间 NET_TIME stStopTime; // 结束时间 fTimeDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 EM_REAL_DATA_TYPE emDataType; // 回调的数据类型 LDWORD dwDataUser; // 数据回调用户信息 EM_AUDIO_DATA_TYPE emAudioType; // 音频类型 }NET_IN_DOWNLOAD_BY_DATA_TYPE; ///@brief 开始下载并指定回调数据格式 出参 typedef struct tagNET_OUT_DOWNLOAD_BY_DATA_TYPE { DWORD dwSize; // 结构体大小 }NET_OUT_DOWNLOAD_BY_DATA_TYPE; ///@brief 指定码流类型 开始下载, 下载得到的文件和数据回调函数 fDownLoadDataCallBack 中得到的码流类型均为 emDataType 所指定的类型 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByDataType(LLONG lLoginID, const NET_IN_DOWNLOAD_BY_DATA_TYPE* pstInParam, NET_OUT_DOWNLOAD_BY_DATA_TYPE* pstOutParam, DWORD dwWaitTime); ///@brief CLIENT_AdaptiveDownloadByTime 入参 typedef struct tagNET_IN_ADAPTIVE_DOWNLOAD_BY_TIME { DWORD dwSize; // 结构体大小 int nChannelID; // 通道编号 EM_QUERY_RECORD_TYPE emRecordType; // 录像类型 char* szSavedFileName; // 下载的文件路径 NET_TIME stStartTime; // 开始时间 NET_TIME stStopTime; // 结束时间 fTimeDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 EM_REAL_DATA_TYPE emDataType; // 回调的数据类型 LDWORD dwDataUser; // 数据回调用户信息 char szEncryptPasswd[64]; // 加密录像密码,密码长度不小于8 BOOL bOnlySupportRealUTC; // 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stStopTime), 为FALSE表示仅下发stStartTime, stStopTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC) NET_TIME stuStartTimeRealUTC; // 录像的起始UTC时间(标准UTC时间) NET_TIME stuEndTimeRealUTC; // 录像的结束UTC时间(标准UTC时间) fTimeDownLoadPosCallBackEx cbDownLoadPosEx; // 进度回调的扩展(若使用标准UTC时间进行下载,则使用该回调) fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwVKInfoUser; // VK信息回调用户信息 }NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME; ///@brief CLIENT_AdaptiveDownloadByTime 出参 typedef struct tagNET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME { DWORD dwSize; // 结构体大小 }NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME; ///@brief 自适应速度的下载 需要调用 CLIENT_StopDownload 来释放下载资源 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AdaptiveDownloadByTime( LLONG lLoginID, const NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME* pstInParam, NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME* pstOutParam, DWORD dwWaitTime ); ///@brief CLIENT_DownloadByFileSelfAdapt 入参 typedef struct tagNET_IN_DOWNLOAD_BYFILE_SELFADAPT { DWORD dwSize; // 结构体大小 int nChannelID; // 通道编号 EM_QUERY_RECORD_TYPE emRecordType; // 录像类型 char szFileName[MAX_PATH]; // 下载的文件路径 unsigned int size; // 文件长度, 单位为Kbyte fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 EM_REAL_DATA_TYPE emDataType; // 回调的数据类型 LDWORD dwDataUser; // 数据回调用户信息 /* 扩展字段 */ unsigned int nFrameNum; // 文件总帧数 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 unsigned int nDriveno; // 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像) unsigned int nStartCluster; // 起始簇号 BYTE bImportantRecID; // 0:普通录像 1:重要录像 BYTE bHint; // 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 ) BYTE bRecType; // 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像 char szEncryptPasswd[64]; // 加密录像密码,密码长度不小于8 fVKInfoCallBack pVKInfoCallBack; // VK信息回调 LDWORD dwVKInfoUser; // VK信息回调用户信息 }NET_IN_DOWNLOAD_BYFILE_SELFADAPT; ///@brief CLIENT_DownloadByFileSelfAdapt 出参 typedef struct tagNET_OUT_DOWNLOAD_BYFILE_SELFADAPT { DWORD dwSize; // 结构体大小 }NET_OUT_DOWNLOAD_BYFILE_SELFADAPT; ///@brief 自适应速度的按文件下载录像, pstInParam 和pstOutParam 资源由用户申请和释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadByFileSelfAdapt(LLONG lLoginID, const NET_IN_DOWNLOAD_BYFILE_SELFADAPT* pstInParam, NET_OUT_DOWNLOAD_BYFILE_SELFADAPT* pstOutParam, DWORD dwWaitTime); ///@brief 局部放大(pSrcRect内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDisplayRegion(LLONG lPlayHandle,DWORD nRegionNum, DH_DISPLAYRREGION *pSrcRect, HWND hDestWnd, BOOL bEnable); ///@brief 开始查找录像文件帧信息(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindFrameInfo(LLONG lLoginID, NET_IN_FIND_FRAMEINFO_PRAM *pInParam, NET_OUT_FIND_FRAMEINFO_PRAM* pOutParam, int nWaitTime); ///@brief 查找录像文件帧信息,按指定信息条数查询(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindNextFrameInfo(LLONG lFindHandle, NET_IN_FINDNEXT_FRAMEINFO_PRAM *pInParam, NET_OUT_FINDNEXT_FRAMEINFO_PRAM* pOutParam, int nWaitTime); ///@brief 设置标签信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamSetTags(LLONG lFindHandle, NET_IN_FILE_STREAM_TAGS_INFO *pInParam, NET_OUT_FILE_STREAM_TAGS_INFO *pOutParam, int nWaitTime); ///@brief 获取标签信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamGetTags(LLONG lFindHandle, NET_IN_FILE_STREAM_GET_TAGS_INFO *pInParam, NET_OUT_FILE_STREAM_GET_TAGS_INFO *pOutParam, int nWaitTime); ///@brief 清除标签信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamClearTags(LLONG lFindHandle, NET_IN_FILE_STREAM_TAGS_INFO *pInParam, NET_OUT_FILE_STREAM_TAGS_INFO *pOutParam, int nWaitTime); ///@brief 过滤查询标签信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamFilterTags(LLONG lFindHandle, NET_IN_FILE_STREAM_FILTER_TAGS_INFO *pInParam, NET_OUT_FILE_STREAM_GET_TAGS_INFO *pOutParam, int nWaitTime); ///@brief 结束录像文件查找 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindFrameInfoClose(LLONG lFindHandle); ///@brief pInParam, pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamMotionMatch(LLONG lLoginID, const NET_IN_MOTIONMATCH_PARAM *pInParam, NET_OUT_MOTIONMATCH_PARAM* pOutParam, int nWaitTime); ///@brief 查询标签信息, lFindHandle通过CLIENT_FindFrameInfo获取,查询到的标签是CLIENT_TagManagerStartTag/CLIENT_TagManagerSetSubTag/CLIENT_TagManagerStopTag设置的 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FileStreamFindTags(LLONG lFindHandle, NET_IN_FINDTAGS_INFO *pInParam, NET_OUT_FINDTAGS_INFO *pOutParam, int nWaitTime); ///@brief 获取标签状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerGetTagState(LLONG lLoginID, NET_IN_TAGMANAGER_GETTAGSTATE_INFO *pInParam, NET_OUT_TAGMANAGER_GETTAGSTATE_INFO *pOutParam, int nWaitTime); ///@brief 开始打标签 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerStartTag(LLONG lLoginID, NET_IN_TAGMANAGER_STARTTAG_INFO *pInParam, NET_OUT_TAGMANAGER_STARTTAG_INFO *pOutParam, int nWaitTime); ///@brief 打子标签, 子标签个数不应超过20,否则失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerSetSubTag(LLONG lLoginID, NET_IN_TAGMANAGER_SETSUBTAG_INFO *pInParam, NET_OUT_TAGMANAGER_SETSUBTAG_INFO *pOutParam, int nWaitTime); ///@brief 停止打标签 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerStopTag(LLONG lLoginID, NET_IN_TAGMANAGER_STOPTAG_INFO *pInParam, NET_OUT_TAGMANAGER_STOPTAG_INFO *pOutParam, int nWaitTime); ///@brief 获取标签查询能力 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerGetCaps(LLONG lLoginID, NET_IN_TAGMANAGER_GETCAPS_INFO *pInParam, NET_OUT_TAGMANAGER_GETCAPS_INFO *pOutParam, int nWaitTime); ///@brief 开始查询标签信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_TagManagerStartFind(LLONG lLoginID, NET_IN_TAGMANAGER_STARTFIND_INFO *pInParam, NET_OUT_TAGMANAGER_STARTFIND_INFO *pOutParam, int nWaitTime); ///@brief 获取标签查询结果信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerDoFind(LLONG lFindID, NET_IN_TAGMANAGER_DOFIND_INFO *pInParam, NET_OUT_TAGMANAGER_DOFIND_INFO *pOutParam, int nWaitTime); ///@brief 停止查询标签信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TagManagerStopFind(LLONG lFindID); ///@brief 设置报警回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetDVRMessCallBack(fMessCallBack cbMessage,LDWORD dwUser); ///@brief 设置报警回调函数扩展接口Ex1 CLIENT_NET_API void CALL_METHOD CLIENT_SetDVRMessCallBackEx1(fMessCallBackEx1 cbMessage, LDWORD dwUser); ///@brief 设置报警回调函数扩展接口Ex2 CLIENT_NET_API void CALL_METHOD CLIENT_SetDVRMessCallBackEx2(fMessCallBackEx2 cbMessage, LDWORD dwUser); ///@brief 向设备订阅报警 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartListen(LLONG lLoginID); ///@brief 向设备订阅报警--扩展 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartListenEx(LLONG lLoginID); ///@brief 停止订阅报警 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopListen(LLONG lLoginID); ///@brief 报警复位 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AlarmReset(LLONG lLoginID, DWORD dwAlarmType, int nChannel, void* pReserved = NULL, int nWaitTime = 1000); ///@brief CLIENT_SetServerParam 接口参数 typedef struct tagNET_ACTIVE_RIGST_PARAMS { DWORD dwSize; // 结构体大小 BOOL bManualLogout; // 是否手动登出(主动注册的设备断线后默认是SDK自动登出) } NET_ACTIVE_RIGST_PARAMS; ///@brief 设置主动注册的全局参数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetServerParam(NET_ACTIVE_RIGST_PARAMS* pParam); ///@brief 主动注册功能,启动服务;nTimeout参数已无效(默认为设备断线后SDK内部登出) CLIENT_NET_API LLONG CALL_METHOD CLIENT_ListenServer(char* ip, WORD port, int nTimeout, fServiceCallBack cbListen, LDWORD dwUserData); ///@brief 停止服务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopListenServer(LLONG lServerHandle); ///@brief 响应设备的注册请求 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ResponseDevReg(char *devSerial, char* ip, WORD port, BOOL bAccept); ///@brief 重定向服务器回调函数原形 ///@param[out] lDevHandle : 设备句柄 ///@param[out] pDevIp : 设备ip ///@param[out] wDevPort : 设备端口 ///@param[out] dwUserData : 用户参数 typedef int (CALLBACK *fRedirectServerCallBack)( LLONG lDevHandle, char *pDevIp, WORD wDevPort, LDWORD dwUserData); ///@brief fRedirectServerCallBackEx输入参数 typedef struct tagNET_CB_REDIRECT_SERVER_CALLBACK_INFO { char* szIP; // 主动注册重定向服务器接收到的设备IP UINT nPort; // 主动注册重定向服务器接收到的设备端口 char szDeviceID[256]; // 主动注册重定向服务器接收到的设备ID BYTE byReserved[1024]; // 预留字节 }NET_CB_REDIRECT_SERVER_CALLBACK_INFO; ///@brief 重定向服务器回调函数原形扩展 typedef int (CALLBACK *fRedirectServerCallBackEx)( LLONG lDevHandle, NET_CB_REDIRECT_SERVER_CALLBACK_INFO *pInParam, LDWORD dwUserData); ///@brief 开启重定向服务 // Ip : 开启服务的IP // port : 开启服务端口 // fRedirectServerCallBack : 设备重定向回调函数 // dwUserData : 用户参数, 与fRedirectServerCallBack绑定 // 返回值: 服务句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRedirectService(char* ip, WORD port,fRedirectServerCallBack cbListen, LDWORD dwUserData); ///@brief CLIENT_StartRedirectServiceEx接口输入参数 typedef struct tagNET_IN_START_REDIRECT_SERVICE { DWORD dwSize; // 结构体大小, 需要赋值为当前结构体所在大小 BYTE byReserved[4]; // 预留字节 char szIP[64]; // 主动注册重定向服务器IP WORD nPort; // 主动注册重定向服务器端口 BYTE byReserved1[6]; // 预留字节 fRedirectServerCallBackEx cbFuncEx; // 设备重定向回调函数(扩展) LDWORD dwUserData; // 用户参数, 与fRedirectServerCallBackEx绑定 }NET_IN_START_REDIRECT_SERVICE; ///@brief CLIENT_StartRedirectServiceEx接口输出参数 typedef struct tagNET_OUT_START_REDIRECT_SERVICE { DWORD dwSize; // 结构体大小, 需要赋值为当前结构体所在大小 }NET_OUT_START_REDIRECT_SERVICE; ///@brief 开启重定向服务扩展接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRedirectServiceEx(NET_IN_START_REDIRECT_SERVICE *pInParam, NET_OUT_START_REDIRECT_SERVICE *pOutParam); ///@brief 停止重定向服务 // lServerHandle : 服务句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRedirectService(LLONG lServerHandle); ///@brief 设置重定向服务器的IP和Port CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetAutoRegisterServerInfo(LLONG lDevHandle, char* ARSIP, WORD ARSPort,WORD nRetry); ///@brief 请求设备推流的码流类型 typedef enum tagEM_DEV_PUSH_STREAM_TYPE { EM_DEV_PUSH_STREAM_TYPE_MAJOR, // 主码流 EM_DEV_PUSH_STREAM_TYPE_MINOR1, // 辅码流1 EM_DEV_PUSH_STREAM_TYPE_MINOR2, // 辅码流2 }EM_DEV_PUSH_STREAM_TYPE; ///@brief 请求设备开始推流入参 typedef struct tagNET_IN_REQUEST_START_PUSH_STREAM_TYPE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 EM_DEV_PUSH_STREAM_TYPE emStreamType; // 码流类型 char szSSID[MAX_PUSH_STREAM_AUTH_SSID]; // 推流鉴权ID,64位长度 char szReciveServerIP[DH_MAX_IPADDR_LEN_EX]; // 收流服务器IP int nReciveServerPort; // 收流服务器端口 }NET_IN_REQUEST_START_PUSH_STREAM_TYPE; ///@brief 请求设备开始推流的出参 typedef struct tagNET_OUT_REQUEST_START_PUSH_STREAM_TYPE { DWORD dwSize; // 结构体大小 }NET_OUT_REQUEST_START_PUSH_STREAM_TYPE; ///@brief CLIENT_ReqDevStopPushStream入参 typedef struct tagNET_IN_REQUEST_STOP_PUSH_STREAM_TYPE { DWORD dwSize; // 结构体大小 char szSSID[MAX_PUSH_STREAM_AUTH_SSID]; // 推流鉴权ID,64位长度 }NET_IN_REQUEST_STOP_PUSH_STREAM_TYPE; ///@brief CLIENT_ReqDevStopPushStream出参 typedef struct tagNET_OUT_REQUEST_STOP_PUSH_STREAM_TYPE { DWORD dwSize; // 结构体大小 }NET_OUT_REQUEST_STOP_PUSH_STREAM_TYPE; ///@brief 查询设备的某一路推流信息入参 typedef struct tagNET_IN_QUERY_PUSH_STREAM_INFO { DWORD dwSize; // 结构体大小 char szSSID[MAX_PUSH_STREAM_AUTH_SSID]; // 推流鉴权ID,64位长度 }NET_IN_QUERY_PUSH_STREAM_INFO; ///@brief 查询设备的某一路推流信息出参 typedef struct tagNET_OUT_QUERY_PUSH_STREAM_INFO { DWORD dwSize; // 结构体大小 char szReciveServerIP[DH_MAX_IPADDR_LEN_EX]; // 收流服务器IP int nReciveServerPort; // 收流服务器端口 }NET_OUT_QUERY_PUSH_STREAM_INFO; ///@brief 请求设备推流到收流服务器 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ReqDevStartPushStream(LLONG lLoginID,const NET_IN_REQUEST_START_PUSH_STREAM_TYPE* pInParam, NET_OUT_REQUEST_START_PUSH_STREAM_TYPE* pOutParam, int nWaitTime); ///@brief 请求设备停止推流到收流服务器 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ReqDevStopPushStream(LLONG lLoginID,const NET_IN_REQUEST_STOP_PUSH_STREAM_TYPE* pInParam, NET_OUT_REQUEST_STOP_PUSH_STREAM_TYPE* pOutParam, int nWaitTime); ///@brief 查询设备推流信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDevPushStreamInfo(LLONG lLoginID, const NET_IN_QUERY_PUSH_STREAM_INFO* pInParam, NET_OUT_QUERY_PUSH_STREAM_INFO* pOutParam, int nWaitTime); ///@brief 推流设备的链接状态 typedef enum tagEM_PUSH_STREAM_CONNECT_STATE { EM_PUSH_STREAM_CONNECT_STATE_SETUP, // 推流客户端连接建立 EM_PUSH_STREAM_CONNECT_STATE_TEARDOWN, // 推流客户端连接关闭 }EM_PUSH_STREAM_CONNECT_STATE; ///@brief 推流设备的状态回调:链接建立,链接断开 // lClientHandle : 客户端链接句柄 // clientIP : 客户端链接IP // clientPort : 客户端链接端口 // clientConState : 客户端链接状态 // dwUserData : 用户参数 typedef void (CALLBACK *fStreamClientState)(LLONG lClientHandle, char* clientIP, int clientPort, EM_PUSH_STREAM_CONNECT_STATE clientConState, LDWORD dwUserData); ///@brief 推流数据信息回调 // lClientHandle : 客户端链接句柄 // pBuffer : 码流数据 // dwBufSize : 码流数据大小 // dwUserData : 用户参数 typedef void (CALLBACK *fStreamDataComing)(LLONG lClientHandle, BYTE *pBuffer, DWORD dwBufSize,LDWORD dwUserData); ///@brief 开启收流服务 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartReceiveStreamService(char *ip, WORD port,fStreamClientState cbClientState,LDWORD dwUserData1, fStreamDataComing cbLiveStreamData, LDWORD dwUserData2); ///@brief 关闭收流服务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopReceiveStreamService(LLONG lServerHandle); ///@brief 停止某一路设备的推流 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopStreamClient(LLONG lClientHandle); ///@brief 设置推流链接校验的SSID CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetStreamClientAuthID(LLONG lServerHandle, const char* pSSID); ///@brief 报警上传功能,启动服务;dwTimeOut参数已无效 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartService(WORD wPort, char *pIp = NULL, fServiceCallBack pfscb = NULL, DWORD dwTimeOut = 0xffffffff, LDWORD dwUserData = 0); ///@brief 停止服务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopService(LLONG lHandle); ///@brief 设置语音对讲模式,客户端方式还是服务器方式(pValue内存由用户申请释放,大小参照EM_USEDEV_MODE对应的结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDeviceMode(LLONG lLoginID, EM_USEDEV_MODE emType, void* pValue); ///@brief 打开语音对讲 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartTalkEx(LLONG lLoginID, pfAudioDataCallBack pfcb, LDWORD dwUser); ///@brief CLIENT_StartTalkByDataType接口 入参 typedef struct tagNET_IN_START_TALK_INFO { DWORD dwSize; // 结构体大小 fAudioDataCallBackEx pfAudioDataCallBackEx; // 音频数据回调函数 LDWORD dwUser; // pfAudioDataCallBackEx回调对应的用户指针 }NET_IN_START_TALK_INFO; ///@brief CLIENT_StartTalkByDataType接口 出参 typedef struct tagNET_OUT_START_TALK_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_START_TALK_INFO; ///@brief 打开语音对讲,这个接口可以从回调中得到音频裸数据,而CLIENT_StartTalkEx只能得到带音频头的数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartTalkByDataType(LLONG lLoginID, const NET_IN_START_TALK_INFO* pInParam, NET_OUT_START_TALK_INFO* pOutParam,int nWaittime); ///@brief 对讲方向 typedef enum EM_TALK_DIRECTION { EM_TALK_DIRECTION_UNKNOWN = 0, // 未知 EM_TALK_DIRECTION_UNI, // 单向对讲,包括喊话:客户端到设备 EM_TALK_DIRECTION_BILATERAL, // 双向对讲 EM_TALK_DIRECTION_LISTEN, // 单向监听:设备到客户端 }EM_TALK_DIRECTION; ///@brief 获取对讲方向:lTalkHandle 为 CLIENT_StartTalkEx返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetTalkDirection(LLONG lTalkHandle, EM_TALK_DIRECTION* pDirection); ///@brief 开始PC端录音 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordStart(); ///@brief 结束PC端录音 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordStop(); ///@brief 开始PC端录音(对CLIENT_RecordStart()扩展) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordStartEx(LLONG lLoginID); ///@brief 结束PC端录音(对CLIENT_RecordStop()扩展) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordStopEx(LLONG lLoginID); ///@brief 发送语音数据到设备(pSendBuf内存由用户申请释放) CLIENT_NET_API LONG CALL_METHOD CLIENT_TalkSendData(LLONG lTalkHandle, char *pSendBuf, DWORD dwBufSize); ///@brief 音频文件发送进度回调函数 typedef void (CALLBACK *fTalkSendPosCallBack) (LLONG lTalkHandle,DWORD dwTotalSize, DWORD dwSendSize, LDWORD dwUser); ///@brief CLIENT_TalkSendDataByFile接口 入参 typedef struct tagNET_IN_TALK_SEND_DATA_FILE { DWORD dwSize; // 结构体大小 char* pFilePath; // 音频文件全路径 fTalkSendPosCallBack cbSendPos; // 音频文件发送进度 LDWORD dwUser; // 用户参数 DWORD dwSendInterval; // 发送间隔百分比,0和100表示使用sdk默认计算的间隔, // 小于100发送更快,大于100,发送更慢 BOOL bNeedHead; // 是否需要加音频头。 // TRUE,表示需要SDK根据下面的音频信息加音频头; // FALSE,表示不需要SDK根据音频信息加音频头,直接发送pFilePath路径指向的数据给设备。 /* 音频信息 */ DH_TALK_CODING_TYPE emEncodeType; // 音频编码格式 int nAudioBit; // 位数,如8或16等 DWORD dwSampleRate; // 采样率,如8000或16000等 }NET_IN_TALK_SEND_DATA_FILE; ///@brief CLIENT_TalkSendDataByFile接口 出参 typedef struct tagNET_OUT_TALK_SEND_DATA_FILE { DWORD dwSize; // 结构体大小 }NET_OUT_TALK_SEND_DATA_FILE; ///@brief CLIENT_TalkSendDataByStream接口 入参 typedef struct tagNET_IN_TALK_SEND_DATA_STREAM { DWORD dwSize; // 结构体大小 BYTE* pBuf; // 音频流缓冲 DWORD dwBufSize; // 音频流缓冲大小 BOOL bNeedHead; // 是否需要加音频头。 // TRUE,表示需要SDK根据下面的音频信息加音频头; // FALSE,表示不需要SDK根据音频信息加音频头,直接发送pBuf指向的数据给设备。 /* 音频信息 */ DH_TALK_CODING_TYPE emEncodeType; // 音频编码格式 int nAudioBit; // 位数,如8或16等 DWORD dwSampleRate; // 采样率,如8000或16000等 }NET_IN_TALK_SEND_DATA_STREAM; ///@brief CLIENT_TalkSendDataByStream接口 出参 typedef struct tagNET_OUT_TALK_SEND_DATA_STREAM { DWORD dwSize; // 结构体大小 }NET_OUT_TALK_SEND_DATA_STREAM; ///@brief 发送语音数据到设备,数据源不带音频头,接口内部会根据音频格式加头发送。 // 返回值为发送给设备的音频流长度,-1表示接口调用失败 CLIENT_NET_API LONG CALL_METHOD CLIENT_TalkSendDataByStream(LLONG lTalkHandle, const NET_IN_TALK_SEND_DATA_STREAM *pInParam, NET_OUT_TALK_SEND_DATA_STREAM* pOutParam); ///@brief 发送语音文件中的音频数据到设备 // 成功返回 lTalkHandle, 失败返回 0 CLIENT_NET_API LLONG CALL_METHOD CLIENT_TalkSendDataByFile(LLONG lTalkHandle, const NET_IN_TALK_SEND_DATA_FILE *pInParam, NET_OUT_TALK_SEND_DATA_FILE* pOutParam); ///@brief 停止发送音频文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopTalkSendDataByFile(LLONG lTalkHandle); ///@brief 解码音频数据(pAudioDataBuf内存由用户申请释放) CLIENT_NET_API void CALL_METHOD CLIENT_AudioDec(char *pAudioDataBuf, DWORD dwBufSize); ///@brief 解码音频数据扩展(pAudioDataBuf内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_AudioDecEx(LLONG lTalkHandle, char *pAudioDataBuf, DWORD dwBufSize); ///@brief 设置语音对讲的音量 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetAudioClientVolume(LLONG lTalkHandle, WORD wVolume); ///@brief 停止语音对讲 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopTalkEx(LLONG lTalkHandle); ///@brief 添加设备到广播组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AudioBroadcastAddDev(LLONG lLoginID); ///@brief 从广播组中删除设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AudioBroadcastDelDev(LLONG lLoginID); ///@brief 音频编码--初始化(特定标准格式->私有格式) CLIENT_NET_API int CALL_METHOD CLIENT_InitAudioEncode(DH_AUDIO_FORMAT aft); ///@brief 音频编码--数据编码(lpInBuf, lpOutBuf内存由用户申请释放) CLIENT_NET_API int CALL_METHOD CLIENT_AudioEncode(LLONG lTalkHandle, BYTE *lpInBuf, DWORD *lpInLen, BYTE *lpOutBuf, DWORD *lpOutLen); ///@brief 音频编码--完成退出 CLIENT_NET_API int CALL_METHOD CLIENT_ReleaseAudioEncode(); ///@brief 查询设备日志(pLogBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryLog(LLONG lLoginID, char *pLogBuffer, int maxlen, int *nLogBufferlen, int waittime=3000); ///@brief 查询设备日志,以分页方式查询(pQueryParam, pLogBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDeviceLog(LLONG lLoginID, QUERY_DEVICE_LOG_PARAM *pQueryParam, char *pLogBuffer, int nLogBufferLen, int *pRecLogNum, int waittime=3000); ///@brief 查询设备日志条数(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDevLogCount(LLONG lLoginID, NET_IN_GETCOUNT_LOG_PARAM *pInParam, NET_OUT_GETCOUNT_LOG_PARAM* pOutParam , int waittime=3000); ///@brief 设置日志回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubscribeLogCallBack(fSubLogDataCallBack pLogDataCB, LDWORD dwUser); ///@brief 订阅设备日志 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartSubscribeLog(LLONG lLoginID, int nWaittime, void* pReserved); ///@brief 停止订阅设备日志 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSubscribeLog(LLONG lSubLogHandle); ///@brief 查道通道录像状态(pRSBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordState(LLONG lLoginID, char *pRSBuffer, int maxlen, int *nRSBufferlen, int waittime=1000); ///@brief 查道辅码流通道录像状态(返回字节数与通道数对应, 每个字节表示对应通道的辅码流录像控制状态,0-关闭,1-手动,2-自动,pRSBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryExtraRecordState(LLONG lLoginID, char *pRSBuffer, int maxlen, int *nRSBufferlen, void *pReserved, int waittime=1000); ///@brief 查询设备状态(pBuf内存由用户申请释放,根据nType类型确定相应结构体,至少需要申请结构体大小的内存) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDevState(LLONG lLoginID, int nType, char *pBuf, int nBufLen, int *pRetLen, int waittime=1000); ///@brief 查询远程设备状态,nType为DH_DEVSTATE_ALARM_FRONTDISCONNECT时,通道号从1开始(pBuf内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRemotDevState(LLONG lLoginID, int nType, int nChannelID, char *pBuf, int nBufLen, int *pRetLen, int waittime=1000); ///@brief 查询系统能力信息(pSysInfoBuffer内存由用户申请释放,大小参照DH_SYS_ABILITY对应的结构体,若nSystemType为 ABILITY_DYNAMIC_CONNECT ,内存大小至少为sizeof(BOOL),若nSystemType为ABILITY_TRIGGER_MODE,内存大小为sizeof(int)) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QuerySystemInfo(LLONG lLoginID, int nSystemType, char *pSysInfoBuffer, int maxlen, int *nSysInfolen, int waittime=1000); ///@brief 新系统能力查询接口,查询系统能力信息(以Json格式,具体见配置SDK)(szOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryNewSystemInfo(LLONG lLoginID, char* szCommand, int nChannelID, char* szOutBuffer, DWORD dwOutBufferSize, int *error, int waittime=1000); ///@brief 新系统能力查询接口扩展,查询系统能力信息,入参新增扩展数据(以Json格式,具体见配置SDK)(szOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryNewSystemInfoEx(LLONG lLoginID, char* szCommand, int nChannelID, char* szOutBuffer, DWORD dwOutBufferSize, int *error, void* pExtendInfo = NULL, int waittime=1000); ///@brief 获取通道码流 CLIENT_NET_API LONG CALL_METHOD CLIENT_GetStatiscFlux(LLONG lLoginID, LLONG lPlayHandle); ///@brief 获取云台信息(lpOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPtzOptAttr(LLONG lLoginID,DWORD dwProtocolIndex,LPVOID lpOutBuffer,DWORD dwBufLen,DWORD *lpBytesReturned,int waittime=500); ///@brief CLIENT_GetDevCaps 接口 NET_REMOTE_VIDEO_IN_ANALYSE_CAPS 入参 typedef struct tagNET_IN_REMOTE_VIDEO_IN_ANALYSE_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_REMOTE_VIDEO_IN_ANALYSE_CAPS; ///@brief CLIENT_GetDevCaps 接口 NET_REMOTE_VIDEO_IN_ANALYSE_CAPS 出参 typedef struct tagNET_OUT_REMOTE_VIDEO_IN_ANALYSE_CAPS { DWORD dwSize; // 结构体大小 int nSceneNum; // 支持的所有大类业务列表个数 EM_SCENE_CLASS_TYPE emSceneType[32]; // 支持的所有大类业务列表 }NET_OUT_REMOTE_VIDEO_IN_ANALYSE_CAPS; ///@brief CLIENT_GetDevCaps 接口 NET_SUPPORT_UTC_CAPS 入参 typedef struct tagNET_IN_UTC_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_UTC_CAPS; ///@brief CLIENT_GetDevCaps 接口 NET_SUPPORT_UTC_CAPS 出参 typedef struct tagNET_OUT_UTC_CAPS { DWORD dwSize; // 结构体大小 int nSupportUTCTimingCaps; // 设备是否支持UTC校时能力, 包括设置和获取, 0:不支持, 1:支持 int nSupportMediaFileFindGeneralUTCCaps; // 设备是否支持通用录像查询的UTC能力(此能力包括录像月历), 0:不支持, 1:支持 (相关涉及接口为: CLIENT_StartQueryRecordFile, CLIENT_QueryRecordFileEx, CLIENT_FindFileEx, CLIENT_FindNextFileEx, CLIENT_QueryRecordStatus(录像月历查询)) int nSupportPlayBackUTCCaps; // 设备是否支持录像回放的UTC能力, 包括设置和获取, 0:不支持, 1:支持 (相关涉及接口为: 按时间回放的接口(CLIENT_PlayBackByTimeProxy, CLIENT_PlayBackByTimeEx2), 按文件回放的接口(CLIENT_PlayBackByRecordFileEx2) ) int nSupportDownloadUTCCaps; // 设备是否支持录像下载的UTC能力, 0:不支持, 1:支持 (相关涉及接口为: CLIENT_AdaptiveDownloadByTime) int nSupportDownloadByAllSpeedUTCCaps; // 设备是否支持全速回放不抽帧(按时间方式补录)的UTC能力, 0:不支持, 1:支持 (相关涉及接口为: CLIENT_SupplementByTime) int nSupportMediaFileFindMobileEnforceUTCCaps; // 设备是否支持采集站和手持终端文件信息录像查询的UTC能力, 0:不支持, 1:支持 (相关涉及接口为: CLIENT_FindFileEx+DH_FILE_QUERY_MOBILE_ENFORCE+MEDIAFILE_MOBILE_ENFORCE_PARAM , CLIENT_FindNextFileEx+MEDIAFILE_MOBILE_ENFORCE_INFO) int nSupportAccessCardRecUTC; // 设备是否支持按真实UTC时间作为条件查询 int nSupportAnnouncementRecUTC; // 设备是否支持楼宇信息发布记录按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportVideoTalkLogRecUTC; // 设备是否支持对讲记录按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportFileStreamRecUTC; // 设备是否支持SMD的录像查询按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportLogRecUTC; // 设备是否支持日志查询按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportAccessControlAlarmRecordRecUTC; // 设备是否支持门禁报警记录按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportFaceDBServerRecUTC; // 设备是否支持人脸库以图搜图按真实UTC时间作为条件查询, 0:不支持, 1:支持 int nSupportPOSUTC; // 设备是否支持POS记录查询按真实UTC时间作为条件查询, 0:不支持, 1:支持 }NET_OUT_UTC_CAPS; // 设备能力类型, 对应CLIENT_GetDevCaps接口 #define NET_DEV_CAP_SEQPOWER 0x01 // 电源时序器能力, pInBuf=NET_IN_CAP_SEQPOWER*, pOutBuf=NET_OUT_CAP_SEQPOWER* #define NET_ENCODE_CFG_CAPS 0x02 // 设备编码配置对应能力, pInBuf=NET_IN_ENCODE_CFG_CAPS*, pOutBuf= NET_OUT_ENCODE_CFG_CAPS* #define NET_VIDEOIN_FISHEYE_CAPS 0x03 // 鱼眼能力, pInBuf=NET_IN_VIDEOIN_FISHEYE_CAPS*, pOutBuf=NET_OUT_VIDEOIN_FISHEYE_CAPS* #define NET_COMPOSITE_CAPS 0x04 // 根据指定的窗口号预先获取融合后的能力集, pInBuf=NET_IN_COMPOSITE_CAPS*, pOutBuf=NET_OUT_COMPOSITE_CAPS* #define NET_VIDEO_DETECT_CAPS 0x05 // 获取视频检测输入能力集,pInBuf=NET_IN_VIDEO_DETECT_CAPS* , pOutBuf=NET_OUT_VIDEO_DETECT_CAPS* #define NET_THERMO_GRAPHY_CAPS 0x06 // 热成像摄像头属性能力,pInBuf=NET_IN_THERMO_GETCAPS*, pOutBuf=NET_OUT_THERMO_GETCAPS* #define NET_RADIOMETRY_CAPS 0x07 // 热成像测温全局配置能力,pInBuf=NET_IN_RADIOMETRY_GETCAPS*, pOutBuf=NET_OUT_RADIOMETRY_GETCAPS* #define NET_POS_CAPS 0x08 // POS机能力,pInBuf = NET_IN_POS_GETCAPS *, pOutBuf = NET_OUT_POS_GETCAPS * #define NET_USER_MNG_CAPS 0x09 // 用户管理能力, pInBuf = NET_IN_USER_MNG_GETCAPS *, pOutBuf = NET_OUT_USER_MNG_GETCAPS * #define NET_MEDIAMANAGER_CAPS 0x0a // 获取 VideoInput 的各个能力项,pInBuf=NET_IN_MEDIAMANAGER_GETCAPS*, pOutBuf=NET_OUT_MEDIAMANAGER_GETCAPS* #define NET_VIDEO_MOSAIC_CAPS 0x0b // 获取通道马赛克叠加能力,pInBuf=NET_IN_MEDIA_VIDEOMOSAIC_GETCAPS*, pOutBuf=NET_OUT_MEDIA_VIDEOMOSAIC_GETCAPS* #define NET_SNAP_CFG_CAPS 0x0c // 设备抓图配置对应能力, pInBuf=NET_IN_SNAP_CFG_CAPS*, pOutBuf= NET_OUT_SNAP_CFG_CAPS* #define NET_VIDEOIN_CAPS 0x0d // 设备视频输出能力, pInBUf = NET_IN_VIDEOIN_CAPS*, pOutBuf = NET_OUT_VIDEOIN_CAPS* #define NET_FACE_BOARD_CAPS 0x0e // 面板设备能力集, pInBuf = NET_IN_FACEBOARD_CAPS*, pOutBuf = NET_OUT_FACEBOARD_CAPS* #define NET_EXTERNALSENSOR_CAPS 0x0f // 外部传感器管理能力集,pInBuf = NET_IN_EXTERNALSENSOR_CAPS*, pOutBuf = NET_OUT_EXTERNALSENSOR_CAPS* #define NET_VIDEO_IMAGECONTROL_CAPS 0x10 // 图像旋转设置能力, pInBuf = NET_IN_VIDEO_IMAGECONTROL_CAPS*, pOutBuf = NET_OUT_VIDEO_IMAGECONTROL_CAPS* #define NET_VIDEOIN_EXPOSURE_CAPS 0x11 // 曝光设置能力, pInBuf = NET_IN_VIDEOIN_EXPOSURE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_EXPOSURE_CAPS* #define NET_VIDEOIN_DENOISE_CAPS 0x12 // 降噪能力, pInBuf = NET_IN_VIDEOIN_DENOISE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_DENOISE_CAPS* #define NET_VIDEOIN_BACKLIGHT_CAPS 0x13 // 背光设置能力, pInBuf = NET_IN_VIDEOIN_BACKLIGHT_CAPS*, pOutBuf = NET_OUT_VIDEOIN_BACKLIGHT_CAPS* #define NET_VIDEOIN_WHITEBALANCE_CAPS 0x14 // 白平衡设置能力, pInBuf = NET_IN_VIDEOIN_WHITEBALANCE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_WHITEBALANCE_CAPS* #define NET_VIDEOIN_DAYNIGHT_CAPS 0x15 // 球机机芯日夜设置能力, pInBuf = NET_IN_VIDEOIN_DAYNIGHT_CAPS*, pOutBuf = NET_OUT_VIDEOIN_DAYNIGHT_CAPS* #define NET_VIDEOIN_ZOOM_CAPS 0x16 // 变倍设置能力, pInBuf = NET_IN_VIDEOIN_ZOOM_CAPS*, pOutBuf = NET_OUT_VIDEOIN_ZOOM_CAPS* #define NET_VIDEOIN_FOCUS_CAPS 0x17 // 聚焦设置能力, pInBuf = NET_IN_VIDEOIN_FOCUS_CAPS*, pOutBuf = NET_OUT_VIDEOIN_FOCUS_CAPS* #define NET_VIDEOIN_SHARPNESS_CAPS 0x18 // 锐度设置能力, pInBuf = NET_IN_VIDEOIN_SHARPNESS_CAPS*, pOutBuf = NET_OUT_VIDEOIN_SHARPNESS_CAPS* #define NET_VIDEOIN_COLOR_CAPS 0x19 // 图像设置能力, pInBuf = NET_IN_VIDEOIN_COLOR_CAPS*, pOutBuf = NET_OUT_VIDEOIN_COLOR_CAPS* #define NET_GET_MASTERSLAVEGROUP_CAPS 0x1a // 获取跟踪业务能力, pInBuf = NET_IN_GET_MASTERSLAVEGROUP_CAPS*, pOutBuf = NET_OUT_GET_MASTERSLAVEGROUP_CAPS* #define NET_FACERECOGNITIONSE_CAPS 0x1b // 目标识别服务器能力查询 pInBuf = NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY, pOutBuf = NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY * #define NET_STORAGE_CAPS 0x1c // 获取存储能力集, pInBuf = NET_IN_STORAGE_CAPS*, pOutBuf = NET_OUT_STORAGE_CAPS* #define NET_VIDEOIN_RAWFRAME_CAPS 0x1d // 获取视频输入扩展能力集, pInBuf = NET_IN_VIDEOIN_RAWFRAME_CAPS*, pOutBuf = NET_OUT_VIDEOIN_RAWFRAME_CAPS* #define NET_COAXIAL_CONTROL_IO_CAPS 0x1e // 获取同轴IO控制能力, pInBuf = NET_IN_GET_COAXIAL_CONTROL_IO_CAPS*, pOutBuf = NET_OUT_GET_COAXIAL_CONTROL_IO_CAPS* #define NET_FACEINFO_CAPS 0x1f // 获得目标门禁控制器能力集, pInBuf = NET_IN_GET_FACEINFO_CAPS*, pOutBuf = NET_OUT_GET_FACEINFO_CAPS* #define NET_ACCESSCONTROL_CAPS 0x20 // 获取门禁能力, pInBuf = NET_IN_AC_CAPS*, pOutBuf = NET_OUT_AC_CAPS* #define NET_COAXIAL_CONTROL_IO_STATUS 0x21 // 获取同轴IO白光灯和喇叭状态, pInBuf = NET_IN_GET_COAXIAL_CONTROL_IO_STATUS*, pOutBuf = NET_OUT_GET_COAXIAL_CONTROL_IO_STATUS* #define NET_LIGHTINGCONTROL_CAPS 0x22 // 获取补光灯能力(IPC/SD使用), pInBuf =NET_IN_LIGHTINGCONTROL_CAPS* ,pOutBuf=NET_OUT_LIGHTINGCONTROL_CAPS* #define NET_SUPPORT_GET_AUDIO_DECODE_CAPS 0x23 // 获取设备是否支持音频解码能力获取, pInBuf =NET_IN_SUPPORT_GET_AUDIO_DECODE_CAPS* ,pOutBuf=NET_OUT_SUPPORT_GET_AUDIO_DECODE_CAPS* #define NET_UNIFIEDINFOCOLLECT_CAPS 0x24 // 获取设备是否支持DMSS专用协议能力,pInBuf = NET_IN_UNIFIEDINFOCOLLECT_CAPS*, pOutBuf = NET_OUT_UNIFIEDINFOCOLLECT_CAPS* #define NET_EXALARMBOX_CAPS 0x25 // 获取某个扩展报警盒的能力集, pInBuf = NET_IN_EXALARMBOX_CAPS*, pOutBuf = NET_OUT_EXALARMBOX_CAPS* #define NET_ALARMBOXMANAGER_CAPS 0x26 // 获取报警盒子管理器能力集,pInBuf = NET_IN_ALARMBOXMANAGER_CAPS*, pOutBuf = NET_OUT_ALARMBOXMANAGER_CAPS* #define NET_GET_AUDIO_DETECT_CAPS 0x27 // 获取音频输入能力集, pInBuf = NET_IN_GET_AUDIO_DETECT_CAPS*, pOutBuf = NET_OUT_GET_AUDIO_DETECT_CAPS* #define NET_SUPPORT_FACEDB_DOWNLOAD 0x28 // 获取是否支持远程目标库下载, pInBuf = NET_IN_SUPPORT_FACEDB_DOWNLOAD_CAPS*, pOutBuf = NET_OUT_SUPPORT_FACEDB_DOWNLOAD_CAPS* #define NET_GET_LENS_FUNC_CAPS 0x29 // 获取角度调节能力集, pInBuf = NET_IN_GET_LENS_FUNC_CAPS*, pOutBuf = NET_OUT_GET_LENS_FUNC_CAPS* #define NET_VIDEO_TALK_MANAGER_CAPS 0x2a // 获取可视对讲能力 pInBuf = NET_IN_VIDEO_TALK_MANAGER_CAPS*, pOutBuf = NET_OUT_VIDEO_TALK_MANAGER_CAPS* #define NET_VIDEO_IN_DEFOG_CAPS 0x30 // 获取视频透雾能力集, pInBuf = NET_IN_VIDEO_IN_DEFOG_CAPS*, pOutBuf = NET_OUT_VIDEO_IN_DEFOG_CAPS* #define NET_DIAGNOSIS_CAPS 0x31 // 获取故障诊断能力,pInBuf = NET_IN_DIAGNOSIS_CAPS*, pOutBuf = NET_OUT_DIAGNOSIS_CAPS* #define NET_LOWRATEWPAN_CAPS 0x32 // 获取低功率WPAN能力集,pInBuf = NET_IN_LOWRATEWPAN_CAPS*, pOutBuf = NET_OUT_LOWRATEWPAN_CAPS* #define NET_GET_FILE_TRANSFER_CAPS 0x33 // 获取远程文件下载能力集, pInBuf = NET_IN_GET_FILE_TRANSFER_CAPS*, pOutBuf = NET_OUT_GET_FILE_TRANSFER_CAPS* #define NET_AUDIO_OUTPUT_CAPS 0x34 // 获取音频输出能力, pInBuf = NET_IN_AUDIO_OUTPUT_CAPS*, pOutBuf = NET_OUT_AUDIO_OUTPUT_CAPS* #define NET_REMOTE_FACE_RECOGNITION_CAPS 0x35 // 获取远程目标识别服务器能力 pInBuf = NET_IN_REMOTE_FACE_RECOGNITION_CAPS*, pOutBuf = NET_OUT_REMOTE_FACE_RECOGNITION_CAPS* #define NET_REMOTE_COLLECT_DEVINFO_CAPS 0x36 // 获取远程设备信息采集能力 pInBuf = NET_IN_REMOTE_COLLECT_DEVINFO_CAPS*, pOutBuf = NET_OUT_REMOTE_COLLECT_DEVINFO_CAPS* #define NET_MONITOR_WALL_CAPS 0x37 // 获取电视墙管理器实例能力集, pInBuf = NET_IN_MONITOR_WALL_CAPS_INFO*, pOutBuf = NET_OUT_MONITOR_WALL_CAPS_INFO* #define NET_REMOTE_SPEAK_CAPS 0x38 // 获取前端音频文件路径和能力集 pInBuf = NET_IN_REMOTE_SPEAK_CAPS*, pOutBuf = NET_OUT_REMOTE_SPEAK_CAPS* #define NET_WLAN_CAPS 0x39 // 获取WLAN能力集pInBuf = NET_IN_WLAN_CAPS_INFO*, pOutBuf = NET_OUT_WLAN_CAPS_INFO* #define NET_LOG_ONLINE_BACKUP_CAPS 0x3A // 获取日志在线备份能力集 pInBuf = NET_IN_LOG_ONLINE_BACKUP_CAPS_INFO*, pOutBuf = NET_OUT_LOG_ONLINE_BACKUP_CAPS_INFO* #define NET_RECEIPT_EVENT_CAPS 0x3B // 获取事件回执能力集 pInBuf = NET_IN_RECEIPT_EVENT_CAPS_INFO*, pOutBuf = NET_OUT_RECEIPT_EVENT_CAPS_INFO* #define NET_ANALYSE_TASK_MANAGER_CAPS 0x3C // 获取智能任务分析能力集 pInBuf = NET_IN_ANALYSE_TASK_MANAGER_CAPS_INFO*, pOutBuf = NET_OUT_ANALYSE_TASK_MANAGER_CAPS_INFO* #define NET_PERIPHERAL_CHIP_CAPS 0x3D // 获取设备从片能力 pInBuf = NET_IN_PERIPHERAL_CHIP_CAPS*, pOutBuf = NET_OUT_PERIPHERAL_CHIP_CAPS* #define NET_CITIZEN_IDENTITY_MANAGER_CAPS 0x3E // 获取人证设备能力集 pInBuf = NET_IN_CITIZEN_IDENTITY_MANAGER_CAPS*, pOutBuf = NET_OUT_CITIZEN_IDENTITY_MANAGER_CAPS* #define NET_AROUD_4G_PROBE_SEARCH_CAPS 0x3F // 获取电子围栏手机采集能力 pInBuf = NET_IN_AROUD_4G_PROBE_SEARCH_CAPS *, pOutBuf = NET_OUT_AROUD_4G_PROBE_SEARCH_CAPS * #define NET_GET_ADVERTIMENT_CAPS 0x4A // 获取设备广告投放能力(pInBuf = NET_IN_GET_ADVERTIMENT_CAPS*, pOutBuf = NET_OUT_GET_ADVERTIMENT_CAPS) #define NET_VIDEOIN_LIGHTING_MIX_SOLUTION_CAPS 0x40 // 混光灯补光方案能力 pInBuf = NET_IN_LIGHTING_MIX_SOLUTION_CAPS *, pOutBuf = NET_OUT_LIGHTING_MIX_SOLUTION_CAPS * #define NET_IXRAY_PACKAGE_MANAGER_CAPS 0x41 // 获取X光安检服务器能力 pInBuf = NET_IN_IXRAY_PACKAGE_MANAGER_CAPS *, pOutBuf = NET_OUT_IXRAY_PACKAGE_MANAGER_CAPS * #define NET_FLOW_STAT_CAPS 0x42 // 获取OSD展示能力 pInBuf = NET_IN_FLOW_STAT_CAPS *, pOutBuf = NET_OUT_FLOW_STAT_CAPS * #define NET_FIRE_CONTROL_MANAGER_CAPS 0x43 // 获取消防设备的能力 pInBuf = NET_IN_FIRE_CONTROL_MANAGER_CAPS *, pOutBuf = NET_OUT_FIRE_CONTROL_MANAGER_CAPS * #define NET_REMOTE_VIDEO_IN_ANALYSE_CAPS 0x44 // 获取前端视频输入通道可配置的智能分析能力, pInBuf = NET_IN_REMOTE_VIDEO_IN_ANALYSE_CAPS*, pOutBuf = NET_OUT_REMOTE_VIDEO_IN_ANALYSE_CAPS* #define NET_SUPPORT_UTC_CAPS 0x45 // 获取设备录像查询, 回放, 下载, 全速回放不抽帧(按时间方式补录)的UTC能力, pInBuf = NET_IN_UTC_CAPS*, pOutBuf = NET_OUT_UTC_CAPS* #define NET_VIDEOIN_MODE_ICR_CAPS 0x46 // 是否支持ICR方式切换日夜模式(即VideoInMode配置的Mode是否支持2 默认false,不支持) pInBuf = NET_IN_VIDEOIN_MODE_CAPS *, pOutBuf = NET_OUT_VIDEOIN_MODE_CAPS* ///@brief 获取设备能力(pInBuf, pOutBuf内存由用户申请释放,根据nType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevCaps(LLONG lLoginID, int nType, void* pInBuf, void* pOutBuf, int nWaitTime); // 设备信息类型,对应CLIENT_QueryDevInfo接口 #define NET_QUERY_DEV_STORAGE_NAMES 0x01 // 查询设备的存储模块名列表 , pInBuf=NET_IN_STORAGE_DEV_NAMES *, pOutBuf=NET_OUT_STORAGE_DEV_NAMES * #define NET_QUERY_DEV_STORAGE_INFOS 0x02 // 查询设备的存储模块信息列表, pInBuf=NET_IN_STORAGE_DEV_INFOS*, pOutBuf= NET_OUT_STORAGE_DEV_INFOS * #define NET_QUERY_RECENCY_JNNCTION_CAR_INFO 0x03 // 查询最近的卡口车辆信息接口, pInBuf=NET_IN_GET_RECENCY_JUNCTION_CAR_INFO*, pOutBuf=NET_OUT_GET_RECENCY_JUNCTION_CAR_INFO* #define NET_QUERY_LANES_STATE 0x04 // 查询车道信息,pInBuf = NET_IN_GET_LANES_STATE , pOutBuf = NET_OUT_GET_LANES_STATE #define NET_QUERY_DEV_FISHEYE_WININFO 0x05 // 查询鱼眼窗口信息 , pInBuf= NET_IN_FISHEYE_WININFO*, pOutBuf=NET_OUT_FISHEYE_WININFO * #define NET_QUERY_DEV_REMOTE_DEVICE_INFO 0x06 // 查询远程设备信息 , pInBuf= NET_IN_GET_DEVICE_INFO*, pOutBuf= NET_OUT_GET_DEVICE_INFO * #define NET_QUERY_SYSTEM_INFO 0x07 // 查询设备系统信息 , pInBuf= NET_IN_SYSTEM_INFO*, pOutBuf= NET_OUT_SYSTEM_INFO* #define NET_QUERY_REG_DEVICE_NET_INFO 0x08 // 查询主动注册设备的网络连接 , pInBuf=NET_IN_REGDEV_NET_INFO * , pOutBuf=NET_OUT_REGDEV_NET_INFO * #define NET_QUERY_DEV_THERMO_GRAPHY_PRESET 0x09 // 查询热成像预设信息 , pInBuf= NET_IN_THERMO_GET_PRESETINFO*, pOutBuf= NET_OUT_THERMO_GET_PRESETINFO * #define NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION 0x0a // 查询热成像感兴趣区域信息,pInBuf= NET_IN_THERMO_GET_OPTREGION*, pOutBuf= NET_OUT_THERMO_GET_OPTREGION * #define NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO 0x0b // 查询热成像外部系统信息, pInBuf= NET_IN_THERMO_GET_EXTSYSINFO*, pOutBuf= NET_OUT_THERMO_GET_EXTSYSINFO * #define NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 0x0c // 查询测温点的参数值, pInBuf= NET_IN_RADIOMETRY_GETPOINTTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETPOINTTEMPER * #define NET_QUERY_DEV_RADIOMETRY_TEMPER 0x0d // 查询测温项的参数值, pInBuf= NET_IN_RADIOMETRY_GETTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETTEMPER * #define NET_QUERY_GET_CAMERA_STATE 0x0e // 获取摄像机状态, pInBuf= NET_IN_GET_CAMERA_STATEINFO*, pOutBuf= NET_OUT_GET_CAMERA_STATEINFO * #define NET_QUERY_GET_REMOTE_CHANNEL_AUDIO_ENCODE 0x0f // 获取远程通道音频编码方式, pInBuf= NET_IN_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO*, pOutBuf= NET_OUT_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO * #define NET_QUERY_GET_COMM_PORT_INFO 0x10 // 获取设备串口信息, pInBuf=NET_IN_GET_COMM_PORT_INFO* , pOutBuf=NET_OUT_GET_COMM_PORT_INFO* #define NET_QUERY_GET_LINKCHANNELS 0x11 // 查询某视频通道的关联通道列表,pInBuf=NET_IN_GET_LINKCHANNELS* , pOutBuf=NET_OUT_GET_LINKCHANNELS* #define NET_QUERY_GET_VIDEOOUTPUTCHANNELS 0x12 // 获取解码通道数量统计信息, pInBuf=NET_IN_GET_VIDEOOUTPUTCHANNELS*, pOutBuf=NET_OUT_GET_VIDEOOUTPUTCHANNELS* #define NET_QUERY_GET_VIDEOINFO 0x13 // 获取解码通道信息, pInBuf=NET_IN_GET_VIDEOINFO*, pOutBuf=NET_OUT_GET_VIDEOINFO* #define NET_QUERY_GET_ALLLINKCHANNELS 0x14 // 查询全部视频关联通道列表,pInBuf=NET_IN_GET_ALLLINKCHANNELS* , pOutBuf=NET_OUT_GET_ALLLINKCHANNELS* #define NET_QUERY_VIDEOCHANNELSINFO 0x15 // 查询视频通道信息,pInBuf=NET_IN_GET_VIDEOCHANNELSINFO* , pOutBuf=NET_OUT_GET_VIDEOCHANNELSINFO* #define NET_QUERY_TRAFFICRADAR_VERSION 0x16 // 查询雷达设备版本,pInBuf=NET_IN_TRAFFICRADAR_VERSION* , pOutBuf=NET_OUT_TRAFFICRADAR_VERSION* #define NET_QUERY_WORKGROUP_NAMES 0x17 // 查询所有的工作目录组名,pInBuf=NET_IN_WORKGROUP_NAMES* , pOutBuf=NET_OUT_WORKGROUP_NAMES* #define NET_QUERY_WORKGROUP_INFO 0x18 // 查询工作组信息,pInBuf=NET_IN_WORKGROUP_INFO* , pOutBuf=NET_OUT_WORKGROUP_INFO* #define NET_QUERY_WLAN_ACCESSPOINT 0x19 // 查询无线网络接入点信息,pInBuf=NET_IN_WLAN_ACCESSPOINT* , pOutBuf=NET_OUT_WLAN_ACCESSPOINT* #define NET_QUERY_GPS_INFO 0x1a // 查询设备GPS信息,pInBuf=NET_IN_DEV_GPS_INFO* , pOutBuf=NET_OUT_DEV_GPS_INFO* #define NET_QUERY_IVS_REMOTE_DEVICE_INFO 0x1b // 查询IVS的前端设备所关联的远程设备信息, pInBuf = NET_IN_IVS_REMOTE_DEV_INFO*, pOutBuf = NET_OUT_IVS_REMOTE_DEV_INFO* #define NET_QUERY_SMART_SWITCH_INFO 0x1c // 查询智能插座信息, pInBuf = NET_IN_SMART_SWITCH_INFO*, pOutBuf = NET_OUT_SMART_SWITCH_INFO* #define NET_QUERY_UPGRADE_STATE 0x1d // 查询升级状态信息, pInBuf = NET_IN_UPGRADE_STATE*, pOutBuf = NET_OUT_UPGRADE_STATE* #define NET_QUERY_VIDEO_ENCODE_CAPS 0x1e // 获取视频编码能力集, pInBuf = NET_IN_VIDEO_ENCODE_CAPS*, pOutBuf = NET_OUT_VIDEO_ENCODE_CAPS* #define NET_QUERY_AUDIO_ENCODE_CAPS 0x1f // 获取音频编码能力集, pInBuf = NET_IN_AUDIO_ENCODE_CAPS*, pOutBuf = NET_OUT_AUDIO_ENCODE_CAPS* #define NET_QUERY_AUDIO_IN_CAPS 0x20 // 获取音频输入通道能力集, pInBuf = NET_IN_AUDIO_IN_CAPS*, pOutBuf = NET_OUT_AUDIO_IN_CAPS* #define NET_QUERY_SMART_ENCODE_CAPS 0x21 // 查询Smart编码能力集, pInBuf = NET_IN_SMART_ENCODE_CAPS*, pOutBuf = NET_OUT_SMART_ENCODE_CAPS* #define NET_QUERY_HARDDISK_TEMPERATURE 0x22 // 获取硬盘温度,pInBuf = NET_IN_HDD_TEMPERATURE*, pOutBuf = NET_OUT_HDD_TEMPERATURE* #define NET_QUERY_RAWFRAMEDATA 0x23 // 获取指定格式的YUV数据, pInBuf = NET_IN_RAWFRAMEDATA*, pOutBuf = NET_OUT_RAWFRAMEDARA* #define NET_QUERY_GETSPLICEDATA 0x24 // 获取设备拼接参数接口, pInBuf = NET_IN_GETSPLICEDATA*, pOutBuf = NET_OUT_GETSPLICEDATA* #define NET_QUERY_AUDIO_DECODE_CAPS 0x25 // 获取音频解码能力集, pInBuf = NET_IN_AUDIO_DECODE_CAPS*, pOutBuf = NET_OUT_AUDIO_DECODE_CAPS* #define NET_QUERY_DEVICE_ID 0x26 // 获取设备ID, pInBuf = NET_IN_DEVICE_ID*, pOutBuf = NET_OUT_DEVICE_ID* #define NET_QUERY_REMOTE_DEVICE_CAPS 0x27 // 获取远程设备管理能力集, pInBuf = NET_IN_REMOTEDEVICE_CAPS*, pOutBuf= NET_OUT_REMOTEDEVICE_CAPS #define NET_QUERY_TRAFFIC_SNAP_RADAR 0x28 // 获取智能交通雷达信息, pInfo = NET_IN_TRAFFIC_SNAP_RADAR_INFO*, pOutBuf = NET_OUT_TRAFFIC_SNAP_RADAR_INFO* #define NET_QUERY_TRAFFIC_SNAP_STROBE 0x29 // 获取智能交通道闸信息, pInfo = NET_IN_TRAFFIC_SNAP_STROBE_INFO*, pOutBuf = NET_OUT_TRAFFIC_SNAP_STROBE_INFO* #define NET_QUERY_DEV_VARIABLE_CAPS_MANAGER_CHECK_START 0x30 // 检查通道智能功能是否可以开启, pInBuf = NET_IN_DEV_VARIABLE_CAPS_MANAGER_CHECK_START_INFO*, pOutBuf = NET_OUT_DEV_VARIABLE_CAPS_MANAGER_CHECK_START_INFO* #define NET_QUERY_DEV_VARIABLE_CAPS_MANAGER_GET_FUNC_TYPE_LIST 0x31 // 获取设备所有冲突资源列表, pInBuf = NET_IN_DEV_VARIABLE_CAPS_MANAGER_GET_FUNC_TYPE_LIST_INFO*, pOutBuf = NET_OUT_DEV_VARIABLE_CAPS_MANAGER_GET_FUNC_TYPE_LIST_INFO* #define NET_QUERY_GET_ALL_PARKING_SPACE_STATUS 0x32 // 获取当前车位检测状态, pInBuf = NET_IN_GET_ALL_PARKING_SPACE_STATUS_INFO*, pOutBuf = NET_OUT_GET_ALL_PARKING_SPACE_STATUS_INFO* #define NET_QUERY_VEHICLE_STATE_INFO 0x33 // 获取车辆GPS状态信息, pInBuf = NET_IN_VEHICLE_STATE_INFO*, pOutBuf = NET_OUT_VEHICLE_STATE_INFO* #define NET_QUERY_HTTP_PROXY_PORT 0x34 // 获取虚拟主机的web代理端口, pInBuf = NET_IN_HTTP_PROXY_PORT*, pOutBuf = NET_OUT_HTTP_PROXY_PORT* #define NET_QUERY_TRAFFIC_RADAR_GET_OBJECT 0x35 // 获取雷达物体目标信息,pInBuf = NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO*,pOutBuf = NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO* #define NET_QUERY_PTZ_CURRENT_FOV_VALUE 0x36 // 获取镜头当前倍率下水平视场角参数,pInBuf = NET_IN_PTZ_CURRENT_FOV_VALUE*,pOutBuf = NET_OUT_PTZ_CURRENT_FOV_VALUE* #define NET_QUERY_DEV_IO_STATS 0x37 // 获取所有存储设备的io信息参数,pInBuf = NET_IN_DEV_IO_STATS*,pOutBuf = NET_OUT_DEV_IO_STAT* #define NET_QUERY_VIDEO_IN_STATUS 0x38 // 获取视频输入状态信息,pInBuf = NET_IN_VIDEO_IN_STATUS*,pOutBuf = NET_OUT_VIDEO_IN_STATUS* #define NET_QUERY_PTZBASE_GET_HFOV_VALUE 0x39 // 获取镜头不同倍率下水平视场角参数,pInBuf = NET_IN_PTZBASE_GET_HFOV_VALUE*,pOutBuf = NET_OUT_PTZBASE_GET_HFOV_VALUE* #define NET_QUERY_PTZBASE_GET_CENTER_GPS 0x3a // 获取中心位置GPS信息,pInBuf = NET_IN_PTZBASE_GET_CENTER_GPS*,pOutBuf = NET_OUT_PTZBASE_GET_CENTER_GPS* #define NET_QUERY_TRAFFIC_SNAP_PARK_SCREEN 0x3b // 获取智能交通道闸信息, pInfo = NET_IN_TRAFFIC_SNAP_PARK_SCREEN_INFO*, pOutBuf = NET_OUT_TRAFFIC_SNAP_PARK_SCREEN_INFO* #define NET_QUERY_HTTP_PROXY_INFO 0x3c // 获取虚拟主机的web代理信息, pInBuf = NET_IN_HTTP_PROXY_INFO*, pOutBuf = NET_OUT_HTTP_PROXY_INFO* #define NET_QUERY_TRAFFIC_RADAR_GET_OBJECT_EX 0x3d // 获取相机雷达物体目标信息, pInBuf = NET_IN_TRAFFIC_RADAR_GET_OBJECT_EX_INFO*,pOutBuf = NET_OUT_TRAFFIC_RADAR_GET_OBJECT_EX_INFO* #define NET_QUERY_PTZBASE_GET_FOCUS_VALUE 0x3e // 获取镜头焦距参数 pInBuf = NET_IN_PTZBASE_GET_FOCUS_VALUE*, pOutBuf = NET_OUT_PTZBASE_GET_FOCUS_VALUE* #define NET_QUERY_PTZBASE_GET_VFOV_VALUE 0x3f // 获取镜头不同倍率下垂直视场角参数,pInBuf = NET_IN_PTZBASE_GET_VFOV_VALUE*,pOutBuf = NET_OUT_PTZBASE_GET_VFOV_VALUE* ///@brief 查询设备信息(pInBuf, pOutBuf内存由用户申请释放,根据nQueryType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDevInfo(LLONG lLoginID, int nQueryType, void* pInBuf, void* pOutBuf, void *pReserved = NULL , int nWaitTime = 1000); ///@brief 重启设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RebootDev(LLONG lLoginID); ///@brief 关闭设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ShutDownDev(LLONG lLoginID); ///@brief 设备控制(param内存由用户申请释放,大小参照type类型对应的结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlDevice(LLONG lLoginID, CtrlType type, void *param, int waittime = 1000); ///@brief 异步设备控制(param内存由用户申请释放,大小参照type类型对应的结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartControlDevice(LLONG lLoginID, CtrlType type, void *param); ///@brief 设备控制扩展接口,兼容 CLIENT_ControlDevice (pInBuf, pOutBuf内存由用户申请释放,根据emType确定相应结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlDeviceEx(LLONG lLoginID, CtrlType emType, void* pInBuf, void* pOutBuf = NULL, int nWaitTime = 1000); ///@brief CLIENT_ManagerInstall接口的 EM_MANAGER_CTRL_UPDATELICENSE 命令入参 typedef struct tagNET_IN_MANAGER_UPDATELICENSE { DWORD dwSize; // 结构体大小 char szAppName[128]; // 被操作的第三方APP的名称 UINT nDataLen; // 证书发送的二进制长度 BYTE* pLicenseData; // license二进制数据 由用户申请释放 }NET_IN_MANAGER_UPDATELICENSE; ///@brief CLIENT_ManagerInstall接口的 EM_MANAGER_CTRL_UPDATELICENSE 命令出参 typedef struct tagNET_OUT_MANAGER_UPDATELICENSE { DWORD dwSize; // 结构体大小 }NET_OUT_MANAGER_UPDATELICENSE; ///@brief CLIENT_ManagerInstall接口的 EM_MANAGER_CTRL_GETCAPS 命令入参 typedef struct tagNET_IN_MANAGER_GETCAPS { DWORD dwSize; // 结构体大小 }NET_IN_MANAGER_GETCAPS; ///@brief CLIENT_ManagerInstall 接口的 EM_MANAGER_CTRL_GETCAPS 命令出参 typedef struct tagNET_OUT_MANAGER_GETCAPS { DWORD dwSize; // 结构体大小 BOOL bSupport; // 是否支持DHOP }NET_OUT_MANAGER_GETCAPS; ///@brief CLIENT_ManagerInstall接口的 EM_MANAGER_CTRL_GETDHOPBASICINFO 命令入参 typedef struct tagNET_IN_MANAGER_GETDHOPBASICINFO { DWORD dwSize; // 结构体大小 }NET_IN_MANAGER_GETDHOPBASICINFO; ///@brief 版本信息 typedef struct tagNET_MANAGER_VERSION { char szDhopOs[32]; // DHOP系统版本 char szDhopSdk[32]; // DHOP SDK版本 char szSocSdk[32]; // 芯片SDK系统版本 BYTE byReserved[256]; // 预留字节 }NET_MANAGER_VERSION; ///@brief 系统内存 typedef struct tagNET_MANAGER_SYSTEM { TP_U64 nTotal; // 系统总字节 TP_U64 nFree; // 系统空闲字节 BYTE byReserved[256]; // 预留字节 }NET_MANAGER_SYSTEM; ///@brief 智能内存 typedef struct tagNET_MANAGER_INTELLI { TP_U64 nTotal; // 智能总内存 TP_U64 nFree; // 智能空闲内存 BYTE byReserved[256]; // 预留字节 }NET_MANAGER_INTELLI; ///@brief 内存信息 typedef struct tagNET_MANAGER_MEMEORY { NET_MANAGER_SYSTEM stuSystem; // 系统内存 NET_MANAGER_INTELLI stuIntelli; // 智能内存 BYTE byReserved[128]; // 预留字节 }NET_MANAGER_MEMORY; ///@brief Flash信息 typedef struct tagNET_MANAGER_FLASH { TP_U64 nTotal; // 系统总Flash大小 TP_U64 nFree; // 系统空闲Flash大小 BYTE byReserved[128]; // 预留字节 }NET_MANAGER_FLASH; ///@brief 智算能力 typedef struct tagNET_MANAGER_WORKCAPS { double dTotal; // 智算算力 double dFree; // 智算空闲能力 BYTE byReserved[128]; // 预留字节 }NET_MANAGER_WORKCAPS; ///@brief 网卡类型 typedef enum tagEM_NET_NETWORK_CARD_TYPE { EM_NET_NETWORK_CARD_TYPE_UNKNOWN = 0, // 未知网卡类型 EM_NET_NETWORK_CARD_TYPE_NORMAL, // 普通有线网口 EM_NET_NETWORK_CARD_TYPE_FIBER, // 光口网络 EM_NET_NETWORK_CARD_TYPE_WIRELESS, // 无线网络 EM_NET_NETWORK_CARD_TYPE_TD_SCDMA, // TD EM_NET_NETWORK_CARD_TYPE_WCDMA, // WCDMA EM_NET_NETWORK_CARD_TYPE_CDMA1X, // CDMA1X EM_NET_NETWORK_CARD_TYPE_CDMA2000, // CDMA2000 EM_NET_NETWORK_CARD_TYPE_GSM, // GSM EM_NET_NETWORK_CARD_TYPE_GPRS, // GPRS EM_NET_NETWORK_CARD_TYPE_EDGE, // EDGE EM_NET_NETWORK_CARD_TYPE_LTE, // LTE EM_NET_NETWORK_CARD_TYPE_TD_LTE, // TD_LTE EM_NET_NETWORK_CARD_TYPE_FDD_LTE, // FDD-LTE EM_NET_NETWORK_CARD_TYPE_EVDO, // EVDO }EM_NET_NETWORK_CARD_TYPE; ///@brief 网卡信息 typedef struct tagNET_MANAGER_NETWORK { EM_NET_NETWORK_CARD_TYPE emNetWorkType; // 网卡类型 UINT nSpec; // 网卡规格 BYTE byReserved[128]; // 预留字节 }NET_MANAGER_NETWORK; ///@brief CLIENT_ManagerInstall接口的 MANAGER_CTRL_GETDHOPBASICINFO 命令出参 typedef struct tagNET_OUT_MANAGER_GETDHOPBASICINFO { DWORD dwSize; // 结构体大小 char szPlatform[32]; // 平台名称 NET_MANAGER_VERSION stuVersion; // 版本信息 NET_MANAGER_MEMORY stuMemory; // 内存信息 NET_MANAGER_FLASH stuFlash; // Flash信息 NET_MANAGER_WORKCAPS stuWorkCaps; // 智算能力 NET_MANAGER_NETWORK stuNetWork; // 网卡信息 }NET_OUT_MANAGER_GETDHOPBASICINFO; ///@brief CLIENT_ManagerInstall接口的 操作类型 typedef enum tagEM_NET_MANAGER_CTRL_TYPE { EM_MANAGER_CTRL_UPDATELICENSE, // 上传并更新第三方APP的证书 (对应结构体 NET_IN_MANAGER_UPDATELICENSE, NET_OUT_MANAGER_UPDATELICENSE) EM_MANAGER_CTRL_GETCAPS, // 获取DHOP能力相关 (对应结构体 NET_IN_MANAGER_GETCAPS, NET_OUT_MANAGER_GETCAPS) EM_MANAGER_CTRL_GETDHOPBASICINFO, // 获取DHOP设备的基础信息 (对应结构体 NET_IN_MANAGER_GETDHOPBASICINFO,NET_OUT_MANAGER_GETDHOPBASICINFO) }EM_NET_MANAGER_CTRL_TYPE; ///@brief 第三方APP的升级安装管理 (pInBuf, pOutBuf内存由用户申请释放,根据emType确定相应结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ManagerInstall(LLONG lLoginID, EM_NET_MANAGER_CTRL_TYPE emType, void* pInBuf, void* pOutBuf, int nWaittime); ///@brief 下一步的操作 typedef enum tagEM_NET_NEXT_OPERATE { EM_NET_NEXT_OPERATE_UNKNOWN = 0, // 未知操作 EM_NET_NEXT_OPERATE_INSTALL, // 安装App; EM_NET_NEXT_OPERATE_UPDATE, // 更新App; }EM_NET_NEXT_OPERATE; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_PREPAREEX命令入参 typedef struct tagNET_IN_INSTALL_PREPAREEX { DWORD dwSize; // 结构体大小 char szAppName[32]; // 升级的app名称 EM_NET_NEXT_OPERATE emNextOperate; // 接下来的操作 UINT nTotalLength; // 升级包大小 BOOL bReliable; // 升级可靠性 }NET_IN_INSTALL_PREPAREEX; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_PREPAREEX命令出参 typedef struct tagNET_OUT_INSTALL_PREPAREEX { DWORD dwSize; // 结构体大小 }NET_OUT_INSTALL_PREPAREEX; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_APPEND_DATA命令入参 typedef struct tagNET_IN_INSTALL_APPEND_DATA { DWORD dwSize; // 结构体大小 UINT nTotalLen; // 升级文件总大小 UINT nAppendLen; // 本次发送的二进制长度 BYTE* pAppendData; // 本次发送的二进制数据 由用户申请释放 }NET_IN_INSTALL_APPEND_DATA; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_APPEND_DATA命令出参 typedef struct tagNET_OUT_INSTALL_APPEND_DATA { DWORD dwSize; // 结构体大小 }NET_OUT_INSTALL_APPEND_DATA; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_EXECUTE命令入参 typedef struct tagNET_IN_INSTALL_EXECUTE { DWORD dwSize; // 结构体大小 BOOL bAutoReboot; // 升级后是否自动重启 }NET_IN_INSTALL_EXECUTE; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_EXECUTE命令出参 typedef struct tagNET_OUT_INSTALL_EXECUTE { DWORD dwSize; // 结构体大小 }NET_OUT_INSTALL_EXECUTE; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_GETSTATE命令入参 typedef struct tagNET_IN_INSTALL_GETSTATE { DWORD dwSize; // 结构体大小 }NET_IN_INSTALL_GETSTATE; ///@brief 升级状态 typedef enum tagEM_NET_UPGRADE_STATUS { EM_NET_UPGRADE_UNKNOWN = 0, // 未知状态 EM_NET_UPGRADE_PREPARING, // 准备升级; EM_NET_UPGRADE_DOWNLOADING, // 正在下载数据; EM_NET_UPGRADE_DOWNLOADFAILED, // 下载失败; EM_NET_UPGRADE_UPGRADING, // 正在升级; EM_NET_UPGRADE_INVALID, // 升级包不正确; EM_NET_UPGRADE_FAILED, // 升级失败; EM_NET_UPGRADE_SUCCEEDED, // 升级成功; EM_NET_UPGRADE_CANCELLED, // 取消升级; EM_NET_UPGRADE_NOTENOUGHMEMORY, // 内存不够; EM_NET_UPGRADE_FILEUNMATCH, // 应用程序包不匹配; EM_NET_UPGRADE_UNMATCHVERSION, // 版本不匹配; EM_NET_UPGRADE_SAMEASOLDAPP, // 应用程序版本相同; EM_NET_UPGRADE_APPEXIST, // 应用程序已存在; }EM_NET_UPGRADE_STATUS; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_GETSTATE命令出参 typedef struct tagNET_INSTALL_OUT_GETSTATE { DWORD dwSize; // 结构体大小 EM_NET_UPGRADE_STATUS emUpgradeStatus; // 升级状态 int nProgress; // 升级进度 char szFile[MAX_COMMON_STRING_256]; // 升级文件 }NET_OUT_INSTALL_GETSTATE; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_CANCEL命令入参 typedef struct tagNET_INSTALL_IN_CANCEL { DWORD dwSize; // 结构体大小 }NET_IN_INSTALL_CANCEL; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADE_INSTALL_CANCEL命令出参 typedef struct tagNET_OUT_INSTALL_CANCEL { DWORD dwSize; // 结构体大小 }NET_OUT_INSTALL_CANCEL; ///@brief 支持的操作 typedef enum tagEM_NET_UPGRADE_ACTION { EM_NET_UPGRADE_ACTION_UNKNOWN = 0, // 未知操作; EM_NET_UPGRADE_ACTION_INSTALLAPP, // 安装APP; EM_NET_UPGRADE_ACTION_UPDATEAPP, // 更新APP; EM_NET_UPGRADE_ACTION_UPDATEMAINFIRMWARE, // 安装主程序; EM_NET_UPGRADE_ACTION_UPDATELICENSE, // 更新证书; }EM_NET_UPGRADE_ACTION; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADER_INSTALL_FIRMWAREEX命令入参 typedef struct tagNET_IN_INSTALL_FIRMWAREEX { DWORD dwSize; // 结构体大小 EM_NET_UPGRADE_ACTION emUpgradeAction; // 支持的操作 char szUrlString[1024]; // 升级包的url路径 char szAppName[64]; // 被操作的第三方APP的名称 }NET_IN_INSTALL_FIRMWAREEX; ///@brief CLIENT_UpgraderInstall接口的 EM_UPGRADER_INSTALL_FIRMWAREEX命令出参 typedef struct tagNET_OUT_INSTALL_FIRMWAREEX { DWORD dwSize; // 结构体大小 }NET_OUT_INSTALL_FIRMWAREEX; ///@brief CLIENT_UpgraderInstall接口的 操作类型 typedef enum tag_EM_NET_UPGRADE_INSTALL_TYPE { EM_UPGRADER_INSTALL_PREPAREEX, // 升级准备 (对应结构体 NET_IN_INSTALL_PREPAREEX, NET_OUT_INSTALL_PREPAREEX) EM_UPGRADER_INSTALL_APPEND_DATA, // 升级数据 (对应结构体 NET_IN_INSTALL_APPEND_DATA, NET_OUT_INSTALL_APPEND_DATA) EM_UPGRADER_INSTALL_EXECUTE, // 执行升级 (对应结构体 NET_IN_INSTALL_EXECUTE, NET_OUT_INSTALL_EXECUTE) EM_UPGRADER_INSTALL_GETSTATE, // 获取升级状态 (对应结构体 NET_IN_INSTALL_GETSTATE, NET_OUT_INSTALL_GETSTATE) EM_UPGRADER_INSTALL_CANCEL, // 取消升级 (对应结构体 NET_IN_INSTALL_CANCEL, NET_OUT_INSTALL_CANCEL) EM_UPGRADER_INSTALL_FIRMWAREEX, // 指定升级包地址进行升级 (对应结构体 NET_IN_INSTALL_FIRMWAREEX, NET_OUT_INSTALL_FIRMWAREEX) }EM_NET_UPGRADE_INSTALL_TYPE; ///@brief 第三方APP升级进度和结果的实时上报 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderInstall(LLONG lLoginID, EM_NET_UPGRADE_INSTALL_TYPE emType, void* pInBuf, void* pOutBuf, int nWaittime); ///@brief EM_DHOPFILEMANAGER_START_UPLOADTOAPP 入参 typedef struct tagNET_IN_DHOP_START_UPLOADTOAPP { DWORD dwSize; // 结构体大小 char szAppName[128]; // 目标App INT64 nFileSize; // 本次上传的总大小,字节 char szMd5Sum[32]; // 本次上传数据的md5校验值 }NET_IN_DHOP_START_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_START_UPLOADTOAPP 出参 typedef struct tagNET_OUT_DHOP_START_UPLOADTOAPP { DWORD dwSize; // 结构体大小 char szToken[64]; // 本次上传的令牌,作为后续操作的唯一标识 }NET_OUT_DHOP_START_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_STOP_UPLOADTOAPP 入参 typedef struct tagNET_IN_DHOP_STOP_UPLOADTOAPP { DWORD dwSize; // 结构体大小 char szToken[64]; // 令牌 }NET_IN_DHOP_STOP_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_STOP_UPLOADTOAPP 出参 typedef struct tagNET_OUT_DHOP_STOP_UPLOADTOAPP { DWORD dwSize; // 结构体大小 }NET_OUT_DHOP_STOP_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_DO_UPLOADTOAPP 入参 typedef struct tagNET_IN_DHOP_DO_UPLOADTOAPP { DWORD dwSize; // 结构体大小 char szToken[64]; // 令牌 INT64 nOffset; // 本次数据在完整数据中的偏移量,单位字节 INT64 nLength; // 本次上传的数据大小, 单位字节 BYTE *pData; // 本次上传的数据内容 }NET_IN_DHOP_DO_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_DO_UPLOADTOAPP 出参 typedef struct tagNET_OUT_DHOP_DO_UPLOADTOAPP { DWORD dwSize; // 结构体大小 }NET_OUT_DHOP_DO_UPLOADTOAPP; ///@brief EM_DHOPFILEMANAGER_GET_UPLOADSTATE 入参 typedef struct tagNET_IN_DHOP_GET_UPLOADSTATE { DWORD dwSize; // 结构体大小 char szToken[64]; // 令牌 }NET_IN_DHOP_GET_UPLOADSTATE; ///@brief EM_DHOPFILEMANAGER_GET_UPLOADSTATE 出参 typedef struct tagNET_OUT_DHOP_GET_UPLOADSTATE { DWORD dwSize; // 结构体大小 char szType[64]; // 状态类型 char szUuid[64]; // 状态Id char szState[64]; // 状态描述 int nProgress; // 进度 0-100 }NET_OUT_DHOP_GET_UPLOADSTATE; ///@brief CLIENT_DhopFileManager 接口操作类型 typedef enum tagEM_DHOPFILEMANAGER_TYPE { EM_DHOPFILEMANAGER_START_UPLOADTOAPP, // 文件上传开始 (对应结构体 pInBuf = NET_IN_DHOP_START_UPLOADTOAPP, pOutBuf = NET_OUT_DHOP_START_UPLOADTOAPP) EM_DHOPFILEMANAGER_STOP_UPLOADTOAPP, // 文件上传结束 (对应结构体 pInBuf = NET_IN_DHOP_STOP_UPLOADTOAPP, pOutBuf = NET_OUT_DHOP_STOP_UPLOADTOAPP) EM_DHOPFILEMANAGER_DO_UPLOADTOAPP, // 文件上传到app (对应结构体 pInBuf = NET_IN_DHOP_DO_UPLOADTOAPP, pOutBuf = NET_OUT_DHOP_DO_UPLOADTOAPP) EM_DHOPFILEMANAGER_GET_UPLOADSTATE, // 获取上传状态 (对应结构体 pInBuf = NET_IN_DHOP_GET_UPLOADSTATE, pOutBuf = NET_OUT_DHOP_GET_UPLOADSTATE) }EM_DHOPFILEMANAGER_TYPE; ///@brief 上传模型数据或其他数据到App端 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DhopFileManager(LLONG lLoginID, EM_DHOPFILEMANAGER_TYPE emType, void* pInBuf, void* pOutBuf, int nWaitTime); #define DH_POS_EXCHANGE_GOODS_MAX 4 //查询时最多支持的商品数 #define DH_POS_EXCHANGE_FUSSY_KEY_MAX 4 //模糊查询最多支持的关键字数量 ///@brief POS获取交易信息模糊查询KEY值类型 typedef enum tagEM_NET_POS_EXCHANGE_FUSSY_KEY { EM_NET_POS_EXCHANGE_KEY_NULL = 0, // 不进行模糊查询,数组中只要有一个值为EM_NET_POS_EXCHANGE_KEY_NULL之外可用值(目前只有EM_NET_POS_EXCHANGE_KEY_GOODS),就会进行相应字段的模糊查询 EM_NET_POS_EXCHANGE_KEY_GOODS = 1, // 模糊查询的时候以 商品名 为KEY值(目前只支持模糊查询商品名) } EM_NET_POS_EXCHANGE_FUSSY_KEY; ///@brief CLIENT_StartFind 接口 NET_FIND_POS_EXCHANGE 命令入参 typedef struct tagNET_IN_POSEXCHANGE_STARTFIND { DWORD dwSize; //结构体大小 int nChannel; //需要锁定的通道号,从0开始,元素为-1时,表示全通道。 NET_TIME_EX stuStartTime; //开始时间,必填, 毫秒没用 NET_TIME_EX stuEndTime; //结束时间,不填表示至今为止, 毫秒没用 char szGoods[DH_POS_EXCHANGE_GOODS_MAX][DH_COMMON_STRING_32]; //商品名,可选,字符串 EM_NET_POS_EXCHANGE_FUSSY_KEY szFuzzyPattern[DH_POS_EXCHANGE_FUSSY_KEY_MAX]; //指定模糊查询的关键字,未指定关键字的使用精确查询, //必填,不需要模糊查询时填NULL int nPosId; //Pos唯一标识, -1标识全部 } NET_IN_POSEXCHANGE_STARTFIND; ///@brief CLIENT_StartFind 接口 NET_FIND_POS_EXCHANGE 命令出参 typedef struct tagNET_OUT_POSEXCHANGE_STARTFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 DWORD dwTotalCount; // 符合条件的总个数 }NET_OUT_POSEXCHANGE_STARTFIND; ///@brief CLIENT_DoFind 接口 NET_FIND_POS_EXCHANGE 命令入参 typedef struct tagNET_IN_POSEXCHANGE_DOFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 unsigned int nBeginNumber; // 起始序号 0<=dwBeginNumber<=dwTotalCount-1 unsigned int nCount; // 每次查询的POS交易信息条数 } NET_IN_POSEXCHANGE_DOFIND; ///@brief POS交易信息 typedef struct tagNET_POSEXCHANGE_INFO { NET_TIME stuExchangeTime; //交易发生时间 }NET_POSEXCHANGE_INFO; ///@brief POS交易信息扩展字段 typedef struct tagNET_POSEXCHANGE_INFO_EX { int nPosId; // Pos唯一标识 char cDetail[512]; // 交易的具体信息 int nDetailLen; // 交易的具体信息长度 BYTE reserved[1024]; // 预留 } NET_POSEXCHANGE_INFO_EX; ///@brief CLIENT_DoFind 接口 NET_FIND_POS_EXCHANGE 命令出参 typedef struct tagNET_OUT_POSEXCHANGE_DOFIND { DWORD dwSize; // 此结构体大小 DWORD dwFound; // 查询到的个数 NET_POSEXCHANGE_INFO arrPOSExchangeInfo[DH_MAX_POS_EXCHANGE_INFO]; // 查询到的交易信息列表 NET_POSEXCHANGE_INFO_EX stuInfoEx[DH_MAX_POS_EXCHANGE_INFO]; // 交易信息 }NET_OUT_POSEXCHANGE_DOFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_POS_EXCHANGE 命令入参 typedef struct tagNET_IN_POSEXCHANGE_STOPFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 } NET_IN_POSEXCHANGE_STOPFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_POS_EXCHANGE 命令出参 typedef struct tagNET_OUT_POSEXCHANGE_STOPFIND { DWORD dwSize; // 此结构体大小 } NET_OUT_POSEXCHANGE_STOPFIND; ///@brief 船只报表查询方向 typedef enum tagNET_EM_BOAT_STATISTICAL_DIRECTION { NET_EM_BOAT_STATISTICAL_DIRECTION_UNKNOWN, // 未知 NET_EM_BOAT_STATISTICAL_DIRECTION_LEFT_TO_RIGHT, // 进港 NET_EM_BOAT_STATISTICAL_DIRECTION_RIGHT_TO_LEFT, // 出港 NET_EM_BOAT_STATISTICAL_DIRECTION_ALL, // 全选 } NET_EM_BOAT_STATISTICAL_DIRECTION; ///@brief 查询时间类型 typedef enum tagNET_EM_BOAT_STATISTICAL_TIME_KEY { NET_EM_BOAT_STATISTICAL_TIME_KEY_UNKNOWN, // 未知 NET_EM_BOAT_STATISTICAL_TIME_KEY_MONTH, // 按月查询 NET_EM_BOAT_STATISTICAL_TIME_KEY_DAY, // 按日查询 NET_EM_BOAT_STATISTICAL_TIME_KEY_HOUR, // 按小时查询 } NET_EM_BOAT_STATISTICAL_TIME_KEY; ///@brief CLIENT_StartFind 接口 NET_FIND_BOAT_STATISTICAL 命令入参 typedef struct tagNET_IN_BOAT_STATISTICAL_STARTFIND { DWORD dwSize; // 结构体大小 int nChannelNum; // 查询通道个数 int nChannels[512]; // 查询通道 NET_TIME stuStartTime; // 查询开始时间 NET_TIME stuEndTime; // 查询结束时间 int nChannel; // 通道号, 从0开始, -1表示查询所有通道, Channel与Channels字段至少需要有一个, 一般不应该都存在, 如果都存在, 以Channels为准 NET_EM_BOAT_STATISTICAL_DIRECTION emDirection; // 查询方向 NET_EM_BOAT_STATISTICAL_TIME_KEY emTimeKey; // 查询时间类型 } NET_IN_BOAT_STATISTICAL_STARTFIND; ///@brief CLIENT_StartFind 接口 NET_FIND_BOAT_STATISTICAL 命令出参 typedef struct tagNET_OUT_BOAT_STATISTICAL_STARTFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 }NET_OUT_BOAT_STATISTICAL_STARTFIND; ///@brief CLIENT_DoFind 接口 NET_FIND_BOAT_STATISTICAL 命令入参 typedef struct tagNET_IN_BOAT_STATISTICAL_DOFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 } NET_IN_BOAT_STATISTICAL_DOFIND; ///@brief 船只报表信息 typedef struct tagNET_BOAT_STATISTICAL_INFO { NET_TIME_EX stuStartTime; // 开始时间 NET_TIME_EX stuEndTime; // 结束时间 int nLeftToRightTotal; // 进入数量 int nRightToLeftTotal; // 离开数量 char szReserved[512]; // 保留字节 } NET_BOAT_STATISTICAL_INFO; ///@brief CLIENT_DoFind 接口 NET_FIND_BOAT_STATISTICAL 命令出参 typedef struct tagNET_OUT_BOAT_STATISTICAL_DOFIND { DWORD dwSize; // 此结构体大小 int nCount; // 查询到的个数 NET_BOAT_STATISTICAL_INFO stuInfo[32]; // 船只报表记录列表 }NET_OUT_BOAT_STATISTICAL_DOFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_BOAT_STATISTICAL 命令入参 typedef struct tagNET_IN_BOAT_STATISTICAL_STOPFIND { DWORD dwSize; // 此结构体大小 unsigned int nToken; // 查询令牌 } NET_IN_BOAT_STATISTICAL_STOPFIND; ///@brief CLIENT_StopFind 接口 NET_FIND_BOAT_STATISTICAL 命令出参 typedef struct tagNET_OUT_BOAT_STATISTICAL_STOPFIND { DWORD dwSize; // 此结构体大小 } NET_OUT_BOAT_STATISTICAL_STOPFIND; ///@brief 设备信息类型,对应 CLIENT_StartFind CLIENT_DoFind CLIENT_StopFind 接口 typedef enum tagNET_FIND { NET_FIND_RADIOMETRY, // 热成像温度查询, pInBuf= NET_IN_RADIOMETRY_*FIND*, pOutBuf= NET_OUT_RADIOMETRY_*FIND* NET_FIND_POS_EXCHANGE, // POS交易信息查询,pInBuf = NET_IN_POSEXCHANGE_*FIND*,pOutBuf= NET_OUT_POSEXCHANGE_*FIND* NET_FIND_BOAT_STATISTICAL, // 船只报表信息查询, pInBuf = NET_IN_BOAT_STATISTICAL_*FIND*, pOutBuf = NET_OUT_BOAT_STATISTICAL_*FIND* } NET_FIND; ///@brief 解码回调格式 typedef enum tagNET_VIDEOSTREAM_TYPE { NET_VIDEOSTREAM_NORMAL, // 默认格式 NET_VIDEOSTREAM_YUV, // YUV格式 } NET_VIDEOSTREAM_TYPE; #define MAX_EVENT_LINK_QUERY_CODE_NUMBER 8 // 每次查询最多条数 #define MAX_EVENT_LINK_NAME_NUMBER 16 // 每个事件最多联动数量 ///@brief 查询联动事件列表 typedef enum tagEM_NET_QUERY_CODE { EM_NET_QUERY_CODE_UNKNOWN, // 未知 EM_NET_QUERY_CODE_CROSSLINEDETECTION, // 警戒线/绊线事件 CrossLineDetection EM_NET_QUERY_CODE_CROSSREGIONDETECTION, // 警戒区事件 CrossRegionDetection EM_NET_QUERY_CODE_TAKENAWAYDETECTION, // 物品搬移事件 TakenAwayDetection EM_NET_QUERY_CODE_LEFTDETECTION, // 物品遗留事件 LeftDetection EM_NET_QUERY_CODE_PARKINGDETECTION, // 非法停车事件 ParkingDetection EM_NET_QUERY_CODE_WANDERDETECTION, // 徘徊事件 WanderDetection EM_NET_QUERY_CODE_MOVEDETECTION, // 运动检测事件 MoveDetection EM_NET_QUERY_CODE_FACEDETECTION, // 目标检测事件 FaceDetection EM_NET_QUERY_CODE_RETROGRADEDETECTION, // 人员逆行事件 RetrogradeDetection EM_NET_QUERY_CODE_NUMBERSTAT, // 人数量/客流量统计事件 NumberStat EM_NET_QUERY_CODE_TRAFFICJUNCTION, // 新交通路口事件 TrafficJunction EM_NET_QUERY_CODE_RIOTERDETECTION, // 聚众事件 RioterDetection EM_NET_QUERY_CODE_ALARMLOCAL, // 本地外部报警事件 AlarmLocal EM_NET_QUERY_CODE_VIDEOMOTION, // 视频移动侦测事件 VideoMotion EM_NET_QUERY_CODE_VIDEOBLIND, // 视频遮挡事件 VideoBlind EM_NET_QUERY_CODE_AUDIODETECT, // 音量检测事件 AudioDetect EM_NET_QUERY_CODE_AUDIOANOMALY, // 声音异常事件 AudioAnomaly EM_NET_QUERY_CODE_AUDIOMUTATION, // 声强突变事件 AudioMutation EM_NET_QUERY_CODE_SCENECHANGE, // IPC场景变更事件 SceneChange EM_NET_QUERY_CODE_VIDEOUNFOCUS, // 视频虚焦事件 VideoUnFocus EM_NET_QUERY_CODE_STORAGELOWSPACE, // 硬盘空间低报警事件 StorageLowSpace EM_NET_QUERY_CODE_STORAGEFAILURE, // 存储错误事件 StorageFailure EM_NET_QUERY_CODE_LOGINFAILURE, // 登陆失败事件 LoginFailure EM_NET_QUERY_CODE_STORAGENOTEXIST, // 存储组不存在事件 StorageNotExist EM_NET_QUERY_CODE_IPCONFLICT, // IP冲突事件 IPConflict EM_NET_QUERY_CODE_NETABORT, // 设备自身断网事件 NetAbort EM_NET_QUERY_CODE_HOTPLUG, // 热插拔事件 HotPlug EM_NET_QUERY_CODE_STORAGEFORMAT, // 存储格式 StorageFormat EM_NET_QUERY_CODE_EMERGENCYRECORDPULL, // 紧急录像报警事件 EmergencyRecordPull } EM_NET_QUERY_CODE; ///@brief 联动项名称 typedef enum tagEM_NET_LINK_NAME { EM_NET_LINK_NAME_UNKNOWN, // 未知 EM_NET_LINK_NAME_DEFAULT, // 默认能力,即eventManager.getCaps获取的能力 default EM_NET_LINK_NAME_TIMESECTIONENABLE, // 时间事件响应 TimeSectionEnable EM_NET_LINK_NAME_RECORDENABLE, // 录像 RecordEnable EM_NET_LINK_NAME_RECORDCLOUDENABLE, // 录像云存储 RecordCloudEnable EM_NET_LINK_NAME_ALARMOUTENABLE, // 报警输出 AlarmOutEnable EM_NET_LINK_NAME_PTZLINKENABLE, // 云台联动 PtzLinkEnable EM_NET_LINK_NAME_SNAPSHOTENABLE, // 快照 SnapshotEnable EM_NET_LINK_NAME_SNAPSHOTCLOUDENABLE, // 抓图云存储 SnapshotCloudEnable EM_NET_LINK_NAME_MAILENABLE, // 发送邮件 MailEnable EM_NET_LINK_NAME_BEEPENABLE, // 蜂鸣 BeepEnable EM_NET_LINK_NAME_DEJITTERENABLE, // 去抖动 DejitterEnable EM_NET_LINK_NAME_TIPENABLE, // 本地消息框提示 TipEnable EM_NET_LINK_NAME_MONITORTOURENABLE, // 轮询联动配置 MonitorTourEnable EM_NET_LINK_NAME_MMSENABLE, // 短消息 MMSEnable EM_NET_LINK_NAME_SUPPORTALARMBELL, // 警号输出 SupportAlarmBell EM_NET_LINK_NAME_SUPPORTACCESSCONTROL, // 门禁控制 SupportAccessControl EM_NET_LINK_NAME_SIPCALLENABLE, // SIP呼叫 SipCallEnable EM_NET_LINK_NAME_SUPPORTALARMSERVER, // 上传至报警服务器 SupportAlarmServer EM_NET_LINK_NAME_SUPPORTPTZLINKDELAY, // 云台联动延迟 SupportPtzLinkDelay EM_NET_LINK_NAME_SUPPORTPSTNALARMSERVER,// 上传至电话报警中心 SupportPSTNAlarmServer EM_NET_LINK_NAME_SUPPORTICR, // ICR(双滤光片切换)切换 SupportICR EM_NET_LINK_NAME_BEEPTIME, // 蜂鸣时长设置 BeepTime EM_NET_LINK_NAME_DEJITTERRANGE, // 去抖动范围 DejitterRange EM_NET_LINK_NAME_ALARMOUTLATCH, // 报警输出延时 AlarmOutLatch EM_NET_LINK_NAME_RECORDLATCH, // 录像延时 RecordLatch EM_NET_LINK_NAME_VOICEENABLE, // 语音提示 VoiceEnable EM_NET_LINK_NAME_LOGENABLE, // 联动日志 LogEnable EM_NET_LINK_NAME_SUPPORTLIGHTCONTROL, // 联动灯光控制器 SupportLightControl EM_NET_LINK_NAME_SUPPORTVIDEOMATRIX, // 联动视频矩阵 SupportVideoMatrix } EM_NET_LINK_NAME; ///@brief CLIENT_getEventLink 接口入参 typedef struct tagNET_IN_EVENT_LINK { DWORD dwSize; // 此结构体大小 int nCodeNum; // 查询联动事件个数 EM_NET_QUERY_CODE szCodeName[MAX_EVENT_LINK_QUERY_CODE_NUMBER]; // 查询联动事件列表 } NET_IN_EVENT_LINK; ///@brief CLIENT_getEventLink 接口出参 typedef struct tagNET_OUT_EVENT_LINK { DWORD dwSize; // 此结构体大小 EM_NET_LINK_NAME szLinkName[MAX_EVENT_LINK_QUERY_CODE_NUMBER][MAX_EVENT_LINK_NAME_NUMBER]; // 联动项名称 } NET_OUT_EVENT_LINK; ///@brief CLIENT_GetEventChannels 接口入参 typedef struct tagNET_IN_EVENT_CHANNELS { DWORD dwSize; // 此结构体大小 unsigned int nEventCode; // 事件码章节定义的任意事件码 只支持IP冲突、MAC冲突、视频遮挡事件、视频丢失事件、网络预览中断事件 }NET_IN_EVENT_CHANNELS; ///@brief CLIENT_GetEventChannels 接口出参 typedef struct tagNET_OUT_EVENT_CHANNELS { DWORD dwSize; // 此结构体大小 int nChannelNum; // 通道个数 int nEventChannelList[1024]; // 存在对应事件的通道列表,每一个成员表示对应通道是否存在对应的事件 BYTE byReserved[64]; // 预留字节 }NET_OUT_EVENT_CHANNELS; ///@brief CLIENT_GetVideoInAnalyseEnableChannels 接口输入参数 typedef struct tagNET_IN_VIDEOINANALYSE_GET_ENABLECHANNELS { DWORD dwSize; // 此结构体大小 } NET_IN_VIDEOINANALYSE_GET_ENABLECHANNELS; ///@brief CLIENT_GetVideoInAnalyseEnableChannels 接口输出参数 typedef struct tagNET_OUT_VIDEOINANALYSE_GET_ENABLECHANNELS { DWORD dwSize; // 此结构体大小 int nLocalChnNum; // 已使能的后智能通道个数 int nLocalChannel[DH_MAX_CAMERA_CHANNEL_NUM]; // 后智能已使能的通道列表 int nRemoteChnNum; // 已使能的前智能通道个数 int nRemoteChannel[DH_MAX_CAMERA_CHANNEL_NUM]; // 前智能已使能的通道列表 } NET_OUT_VIDEOINANALYSE_GET_ENABLECHANNELS; ///@brief 开始查询信息(获取查询句柄)(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFind(LLONG lLoginID, NET_FIND emType, void* pInBuf, void* pOutBuf, int nWaitTime = 1000); ///@brief 查询信息(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFind(LLONG lLoginID, NET_FIND emType, void* pInBuf, void* pOutBuf, int nWaitTime = 1000); ///@brief 停止查询信息(销毁查询句柄)(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFind(LLONG lLoginID, NET_FIND emType, void* pInBuf, void* pOutBuf, int nWaitTime = 1000); ///@brief 设置通道录像状态(pRsBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupRecordState(LLONG lLoginID, char *pRSBuffer, int nRSBufferlen); ///@brief 设置通道辅码流录像状态(pRsBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupExtraRecordState(LLONG lLoginID, char *pRSBuffer, int nRSBufferlen, void* pReserved); ///@brief 查询IO状态(pState内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryIOControlState(LLONG lLoginID, DH_IOTYPE emType, void *pState, int maxlen, int *nIOCount, int waittime=1000); ///@brief IO控制(pState内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_IOControl(LLONG lLoginID, DH_IOTYPE emType, void *pState, int maxlen); ///@brief 强制I帧;nChannelID:通道号,nSubChannel:码流类型(0:主,1:子码流1) CLIENT_NET_API BOOL CALL_METHOD CLIENT_MakeKeyFrame(LLONG lLoginID, int nChannelID, int nSubChannel=0); ///@brief 公网代理注册 typedef void (CALLBACK *fConnectMessCallBack)(LLONG lConnectHandle, NET_CLOUDSERVICE_CONNECT_RESULT* pConnectResult, void* pReserved, LDWORD dwUser); ///@brief 公网代理注册,pConnectParm内存由用户申请释放,大小为sizeof(NET_CLOUDSERVICE_CONNECT_PARAM) CLIENT_NET_API LLONG CALL_METHOD CLIENT_ConnectCloudService(LLONG lLoginID, NET_CLOUDSERVICE_CONNECT_PARAM* pConnectParm, fConnectMessCallBack pConnectMessCB, LDWORD dwUser, void* pReserved); ///@brief 查询用户信息(info内存由用户申请释放,大小为sizeof(USER_MANAGE_INFO)) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryUserInfo(LLONG lLoginID, USER_MANAGE_INFO *info, int waittime=1000); ///@brief 查询用户信息--扩展(info内存由用户申请释放,大小为sizeof(USER_MANAGE_INFO_EX)) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryUserInfoEx(LLONG lLoginID, USER_MANAGE_INFO_EX *info, int waittime=1000); ///@brief 查询用户信息--最大支持64通道设备(info内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryUserInfoNew(LLONG lLoginID, USER_MANAGE_INFO_NEW *info, void* pReserved, int waittime = 1000); ///@brief 查询用户信息--权限列表扩展到3072(pstuInfo内存由用户申请释放) ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInfo 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pReserved 接口保留参数, 暂未使用,可填NULL ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryUserInfoNewEx(LLONG lLoginID, NET_USER_MANAGE_INFO_NEW_EX *pstuInfo, void* pReserved, int waittime = 3000); ///@brief 操作设备用户(opParam, subParam内存由用户申请释放,根据nOperateType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateUserInfo(LLONG lLoginID, int nOperateType, void *opParam, void *subParam, int waittime=1000); ///@brief 操作设备用户--扩展(opParam, subParam内存由用户申请释放,根据nOperateType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateUserInfoEx(LLONG lLoginID, int nOperateType, void *opParam, void *subParam, int waittime=1000); ///@brief 操作设备用户--最大支持64通道设备(opParam, subParam内存由用户申请释放,根据nOperateType对应的类型找到相应的结构体,进而确定申请内存大小) CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateUserInfoNew(LLONG lLoginID, int nOperateType, void *opParam, void *subParam, void* pRetParam, int waittime = 1000); ///@brief 创建透明串口通道,TransComType高2个字节表示串口序号,低2个字节表示串口类型,目前类型支持0:串口,1:485 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CreateTransComChannel(LLONG lLoginID, int TransComType, unsigned int baudrate, unsigned int databits, unsigned int stopbits, unsigned int parity, fTransComCallBack cbTransCom, LDWORD dwUser); ///@brief 透明串口发送数据(pBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendTransComData(LLONG lTransComChannel, char *pBuffer, DWORD dwBufSize); ///@brief 释放通明串口通道 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DestroyTransComChannel(LLONG lTransComChannel); ///@brief 查询透明串口状态(pCommState内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryTransComParams(LLONG lLoginID, int TransComType, DH_COMM_STATE* pCommState, int nWaitTime = 500); ///@brief 开始升级设备程序,pchFileName由用户申请释放内存,大小为MAX_PATH CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartUpgrade(LLONG lLoginID, char *pchFileName, fUpgradeCallBack cbUpgrade, LDWORD dwUser); ///@brief 开始升级设备程序--扩展,pchFileName由用户申请释放内存,大小为MAX_PATH CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartUpgradeEx(LLONG lLoginID, EM_UPGRADE_TYPE emType, char *pchFileName, fUpgradeCallBack cbUpgrade, LDWORD dwUser); ///@brief 开始升级设备程序--扩展支持G以上文件升级 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartUpgradeEx2(LLONG lLoginID, EM_UPGRADE_TYPE emType, char *pchFileName, fUpgradeCallBackEx cbUpgrade, LDWORD dwUser); ///@brief 发送数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendUpgrade(LLONG lUpgradeID); ///@brief 结束升级设备程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopUpgrade(LLONG lUpgradeID); ///@brief 远程升级回调类型 typedef enum tagEM_REMOTE_UPGRADE_CB_TYPE { EM_REMOTE_UPGRADE_CB_TYPE_APPENDING, // 推送回调 nParam1 文件总大小 nParam2 已发送大小 EM_REMOTE_UPGRADE_CB_TYPE_EXECUTE, // 完成回调 nParam1 错误码 EM_REMOTE_UPGRADE_CB_TYPE_FAILED, // 失败回调 nParam1 错误码 EM_REMOTE_UPGRADE_CB_TYPE_CANCEL, // 用户取消 }EM_REMOTE_UPGRADE_CB_TYPE; ///@brief 升级远程设备程序回调函数 typedef void (CALLBACK *fRemoteUpgradeCallBack) (LLONG lLoginID, LLONG lUpgradeID, EM_REMOTE_UPGRADE_CB_TYPE emState, INT64 nParam1, INT64 nParam2, LDWORD dwUser); ///@brief 连接远程设备协议 typedef enum tagEM_REMOTE_DEV_PROTOCOL_TYPE { EM_REMOTE_DEV_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_REMOTE_DEV_PROTOCOL_TYPE_DAHUA, // Dahua EM_REMOTE_DEV_PROTOCOL_TYPE_ONVIF, // Onvif接入设备 }EM_REMOTE_DEV_PROTOCOL_TYPE; ///@brief 远程通道信息 typedef struct tagNET_REMOTE_UPGRADE_CHNL_INFO { UINT nChannel; // 远程通道号 char szDeviceID[128]; // 远程设备ID, RemoteDevice 配置 EM_REMOTE_DEV_PROTOCOL_TYPE emProtocolType; // 连接远程设备协议 BYTE byReserved[380]; // 预留字段 }NET_REMOTE_UPGRADE_CHNL_INFO; ///@brief CLIENT_StartRemoteUpgrade-输入参数 typedef struct tagNET_IN_START_REMOTE_UPGRADE_INFO { DWORD dwSize; // 此结构体大小 UINT nListNum; // 需要升级的远程通道个数 NET_REMOTE_UPGRADE_CHNL_INFO *pstuList; // 需要升级的远程通道信息 void *pReserved; // 字节对齐 char szFileName[256]; // 升级文件名称 fRemoteUpgradeCallBack cbRemoteUpgrade; // 升级进度回调函数 LDWORD dwUser; // 用户数据 UINT nPacketSize; // 每次分包发送大小,为0默认为16K }NET_IN_START_REMOTE_UPGRADE_INFO; ///@brief CLIENT_StartRemoteUpgrade-输出参数 typedef struct tagNET_OUT_START_REMOTE_UPGRADE_INFO { DWORD dwSize; // 此结构体大小 }NET_OUT_START_REMOTE_UPGRADE_INFO; ///@brief CLIENT_SelectRemoteUpgraderDevList-输入参数 typedef struct tagNET_IN_SELECT_REMOTE_UPGRADE_DEVLIST_INFO { DWORD dwSize; // 此结构体大小 UINT nListNum; // 需要升级的远程通道个数 NET_REMOTE_UPGRADE_CHNL_INFO *pstuList; // 需要升级的远程通道信息 void *pReserved; // 仅用于字节对齐 char szFileName[256]; // 升级文件名称 }NET_IN_SELECT_REMOTE_UPGRADE_DEVLIST_INFO; ///@brief CLIENT_SelectRemoteUpgraderDevList-输出参数 typedef struct tagNET_OUT_SELECT_REMOTE_UPGRADE_DEVLIST_INFO { DWORD dwSize; // 此结构体大小 }NET_OUT_SELECT_REMOTE_UPGRADE_DEVLIST_INFO; ///@brief 选择远程升级设备列表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SelectRemoteUpgraderDevList(LLONG lLoginID, const NET_IN_SELECT_REMOTE_UPGRADE_DEVLIST_INFO* pInParam, NET_OUT_SELECT_REMOTE_UPGRADE_DEVLIST_INFO* pOutParam, int nWaitTime); ///@brief 远程设备升级状态 typedef enum tagEM_REMOTE_UPGRADE_STATE { EM_REMOTE_UPGRADE_STATE_UNKNOWN, // 未知 EM_REMOTE_UPGRADE_STATE_INIT, // 初始状态(未升级) EM_REMOTE_UPGRADE_STATE_DOWNLOADING, // 正在下载数据 EM_REMOTE_UPGRADE_STATE_UPGRADING, // 正在升级 EM_REMOTE_UPGRADE_STATE_FAILED, // 升级失败 EM_REMOTE_UPGRADE_STATE_SUCCEEDED, // 升级成功 EM_REMOTE_UPGRADE_STATE_CANCELLED, // 取消升级 EM_REMOTE_UPGRADE_STATE_PREPARING, // 准备升级 }EM_REMOTE_UPGRADE_STATE; ///@brief 远程设备升级状态 typedef struct tagNET_REMOTE_UPGRADER_STATE { int nChannel; // 通道号 EM_REMOTE_UPGRADE_STATE emState; // 状态 int nProgress; // 进度 char szDeviceID[128]; // 远程设备ID }NET_REMOTE_UPGRADER_STATE; ///@brief 远程设备升级消息上报 typedef struct tagNET_REMOTE_UPGRADER_NOTIFY_INFO { LDWORD nStateNum; // 状态数 NET_REMOTE_UPGRADER_STATE* pstuStates; // 状态列表 BYTE byReserved[1024]; // 预留 }NET_REMOTE_UPGRADER_NOTIFY_INFO; ///@brief 升级状态回调函数 typedef void (CALLBACK *fRemoteUpgraderStateCallback) (LLONG lLoginId, LLONG lAttachHandle, NET_REMOTE_UPGRADER_NOTIFY_INFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief CLIENT_AttachRemoteUpgradeState-输入参数 typedef struct tagNET_IN_ATTACH_REMOTEUPGRADE_STATE { DWORD dwSize; // 此结构体大小 fRemoteUpgraderStateCallback cbCallback; // 回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_REMOTEUPGRADE_STATE; ///@brief CLIENT_AttachRemoteUpgradeState-输出参数 typedef struct tagNET_OUT_ATTACH_REMOTEUPGRADE_STATE { DWORD dwSize; // 此结构体大小 }NET_OUT_ATTACH_REMOTEUPGRADE_STATE; ///@brief 设备制造商 typedef enum tagENUM_VENDOR_TYPE { ENUM_VENDOR_TYPE_UNKNOWN, //未知 ENUM_VENDOR_TYPE_GENERAL, //General ENUM_VENDOR_TYPE_DH, //DH ENUM_VENDOR_TYPE_OEM, //OEM ENUM_VENDOR_TYPE_LC, //LC ENUM_VENDOR_TYPE_EZIP, //EZIP }ENUM_VENDOR_TYPE; ///@brief 视频制式 typedef enum tagENUM_STANDARD_TYPE { ENUM_STANDARD_TYPE_UNKNOWN, //未知 ENUM_STANDARD_TYPE_PAL, //P-PAL ENUM_STANDARD_TYPE_NTSC, //N-NTSC ENUM_STANDARD_TYPE_PAL_NTSC, //PN-PAL/NTSC 默认P制 ENUM_STANDARD_TYPE_NTSC_PAL, //NP-NTSC/PAL 默认N制 ENUM_STANDARD_TYPE_SECAM, //S-SECAM }ENUM_STANDARD_TYPE; ///@brief 版本信息 typedef struct tagNET_UPGRADER_SERIAL_INFO_EX { ENUM_VENDOR_TYPE emVendor; // 厂商 ENUM_STANDARD_TYPE emStandard; // 视频制式 NET_TIME_EX stuBuild; // 发布日期 char szChip[DH_COMMON_STRING_16]; // 可升级的程序名 char szClass[DH_COMMON_STRING_64]; // 产品大类 char szSerial[DH_COMMON_STRING_256]; // 内部型号 char szLanguage[DH_COMMON_STRING_128]; // 语言 char szSn[DH_COMMON_STRING_64]; // 序列号 char szSWVersion[DH_COMMON_STRING_64]; // 软件版本 char szTag[DH_COMMON_STRING_256]; // 自定义标记 BYTE byReserved[1024]; // 保留字段 }NET_UPGRADER_SERIAL_INFO_EX; ///@brief CLIENT_GetRemoteUpdateSerialEx-输入参数 typedef struct tagNET_IN_GET_REMOTEUPDATE_SERIAL_EX { DWORD dwSize; // 此结构体大小 int nChannelId; // 请求的通道号 }NET_IN_GET_REMOTEUPDATE_SERIAL_EX; ///@brief CLIENT_GetRemoteUpdateSerialEx-输出参数 typedef struct tagNET_OUT_GET_REMOTEUPDATE_SERIAL_EX { DWORD dwSize; // 此结构体大小 int nRetNum; // 返回个数 NET_UPGRADER_SERIAL_INFO_EX stuSerialInfo[MAX_UPGRADER_SERIAL_INFO];// 设备当前版本信息 }NET_OUT_GET_REMOTEUPDATE_SERIAL_EX; ///@brief 升级包校验参数 typedef struct tagNET_REMOTEUPGRADE_DATA_PARAM { char szCheckSum[128]; // 升级包校验值 int nCheckType; // 升级包校验方式 0:传入MD5值校验 BYTE byReserved[892]; // 预留字段 }NET_REMOTEUPGRADE_DATA_PARAM; ///@brief CLIENT_SetRemoteUpgradeUrl-输入参数 typedef struct tagNET_IN_SET_REMOTEUPGRADE_URL { DWORD dwSize; // 此结构体大小 int nChannelNum; // 待升级通道个数 int nChannels[256]; // 待升级通道号 char szUrl[256]; // 升级包下载地址 NET_REMOTEUPGRADE_DATA_PARAM stuParam; // 升级包校验参数 char szSpareUrls[4][256]; // 备选URL int nSpareUrlNum; // 备选URL个数 }NET_IN_SET_REMOTEUPGRADE_URL; ///@brief CLIENT_SetRemoteUpgradeUrl-输出参数 typedef struct tagNET_OUT_SET_REMOTEUPGRADE_URL { DWORD dwSize; // 此结构体大小 }NET_OUT_SET_REMOTEUPGRADE_URL; ///@brief CLIENT_GetRemoteUpgradeState 入参 typedef struct tagNET_IN_GET_REMOTEUPGRADE_STATE { DWORD dwSize; }NET_IN_GET_REMOTEUPGRADE_STATE; ///@brief CLIENT_GetRemoteUpgradeState 出参 typedef struct tagNET_OUT_GET_REMOTEUPGRADE_STATE { DWORD dwSize; int nMaxStateNum; // 输入最大的状态数 LDWORD nRetStateNum; // 实际返回的状态数 NET_REMOTE_UPGRADER_STATE* pstuStates; // 状态列表 }NET_OUT_GET_REMOTEUPGRADE_STATE; ///@brief 开始升级远程设备程序 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRemoteUpgrade(LLONG lLoginID, const NET_IN_START_REMOTE_UPGRADE_INFO* pInParam, NET_OUT_START_REMOTE_UPGRADE_INFO* pOutParam, int nWaitTime = 500); ///@brief 结束升级远程设备程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRemoteUpgrade(LLONG lUpgradeID); ///@brief 订阅ipc升级状态观察接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRemoteUpgradeState( LLONG lLoginID, const NET_IN_ATTACH_REMOTEUPGRADE_STATE* pInParam, NET_OUT_ATTACH_REMOTEUPGRADE_STATE* pOutParam, int nWaitTime ); ///@brief 取消订阅升级状态接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRemoteUpgradeState( LLONG lAttachHandle ); ///@brief 获取远程升级前端设备版本信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteUpdateSerialEx(LLONG lLoginID, const NET_IN_GET_REMOTEUPDATE_SERIAL_EX* pInParam, NET_OUT_GET_REMOTEUPDATE_SERIAL_EX* pOutParam, int nWaitTime); ///@brief 通过URL升级前端设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRemoteUpgradeUrl(LLONG lLoginID, const NET_IN_SET_REMOTEUPGRADE_URL* pInParam, NET_OUT_SET_REMOTEUPGRADE_URL* pOutParam, int nWaitTime); ///@brief 获取远程升级状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteUpgradeState( LLONG lLoginID, const NET_IN_GET_REMOTEUPGRADE_STATE* pInParam, NET_OUT_GET_REMOTEUPGRADE_STATE* pOutParam, int nWaitTime ); ///@brief 查询配置信息(lpOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevConfig(LLONG lLoginID, DWORD dwCommand, LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned,int waittime=500); ///@brief 设置配置信息(lpInBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDevConfig(LLONG lLoginID, DWORD dwCommand, LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize, int waittime=500); ///@brief 新配置接口,查询配置信息(以Json格式,具体见配置SDK)(szOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNewDevConfig(LLONG lLoginID, char* szCommand, int nChannelID, char* szOutBuffer, DWORD dwOutBufferSize, int *error, int waittime=500); ///@brief 新配置接口,设置配置信息(以Json格式,具体见配置SDK)(szInBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetNewDevConfig(LLONG lLoginID, char* szCommand, int nChannelID, char* szInBuffer, DWORD dwInBufferSize, int *error, int *restart, int waittime=500); ///@brief 删除配置接口(Json格式)(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteDevConfig(LLONG lLoginID, NET_IN_DELETECFG* pInParam, NET_OUT_DELETECFG* pOutParam, int waittime=500); ///@brief 获取配置成员名称接口(Json格式)(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMemberNames(LLONG lLoginID, NET_IN_MEMBERNAME* pInParam, NET_OUT_MEMBERNAME* pOutParam, int waittime=500); ///@brief 获取网卡信息(lpInParam, lpOutParam内存由用户申请释放,大小参照emType对应的结构体) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryNetStat(LLONG lLoginID , EM_NET_QUERY_TYPE emType , void *lpInParam , int nInParamLen , void *lpOutParam , int nOutParamLen , int *pError = NULL , int nWaitTime=1000); ///@brief VideoInAnalyse操作(szOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoInAnalyse(LLONG lLoginID, char* szCommand, int nChannelID, EM_SCENE_CLASS_TYPE emClassType, char* szOutBuffer, DWORD dwOutBufferSize, int *error, int waittime); ///@brief 获取指定事件的联动能力集(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEventLink(LLONG lLoginID, NET_IN_EVENT_LINK* pInParam, NET_OUT_EVENT_LINK* pOutParam, int nWaitTime); ///@brief 得到某类事件的有效通道列表(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEventChannels(LLONG lLoginID, NET_IN_EVENT_CHANNELS* pInParam, NET_OUT_EVENT_CHANNELS* pOutParam, int nWaitTime); ///@brief 获取正在执行智能分析的通道列表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoInAnalyseEnableChannels(LLONG lLoginID, const NET_IN_VIDEOINANALYSE_GET_ENABLECHANNELS* pInParam, NET_OUT_VIDEOINANALYSE_GET_ENABLECHANNELS* pOutParam, int nWaitTime); ///@brief 查询设备通道名称(pChannelName内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryChannelName(LLONG lLoginID, char *pChannelName, int maxlen, int *nChannelCount, int waittime=1000); ///@brief 设置设备通道名称(pbuf 内存由用户申请释放,建议大小至少为512字节) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupChannelName(LLONG lLoginID,char *pbuf, int nbuflen); ///@brief 设置设备通道字符叠加(struOsdString内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupChannelOsdString(LLONG lLoginID, int nChannelNo, DH_CHANNEL_OSDSTRING* struOsdString, int nbuflen); ///@brief 查询设备当前时间 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDeviceTime(LLONG lLoginID, LPNET_TIME pDeviceTime, int waittime=1000); ///@brief 设置设备当前时间 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupDeviceTime(LLONG lLoginID, LPNET_TIME pDeviceTime); ///@brief 查询设备当前时间扩展接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDeviceTimeEx(LLONG lLoginID, LPNET_TIME_EX pDeviceTime, int waittime=1000); ///@brief 设置设备当前时间扩展接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupDeviceTimeEx(LLONG lLoginID, LPNET_TIME_EX pDeviceTime); ///@brief 查询设备当前UTC时间接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDeviceUTC(LLONG lLoginID, LPNET_UTCTIME pDeviceTime, int waittime=1000); ///@brief 设置设备当前UTC时间接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDeviceUTC(LLONG lLoginID, LPNET_UTCTIME pDeviceTime); ///@brief 设置设备限制码流 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetMaxFlux(LLONG lLoginID, WORD wFlux); ///@brief 导入配置文件,szFileName由用户申请释放内存,大小为MAX_PATH CLIENT_NET_API LLONG CALL_METHOD CLIENT_ImportConfigFile(LLONG lLoginID, char *szFileName, fDownLoadPosCallBack cbUploadPos, LDWORD dwUserData, DWORD param=0); ///@brief 停止导入配置文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopImportCfgFile(LLONG lImportHandle); ///@brief 导出配置文件,szSavedFilePath由用户申请释放内存,大小为MAX_PATH CLIENT_NET_API LLONG CALL_METHOD CLIENT_ExportConfigFile(LLONG lLoginID, DH_CONFIG_FILE_TYPE emConfigFileType, char *szSavedFilePath, fDownLoadPosCallBack cbDownLoadPos, LDWORD dwUserData); ///@brief 停止导出配置文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopExportCfgFile(LLONG lExportHandle); ///@brief 通过设备名字或者设备序列号向DDNS服务器查询设备IP CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDVRIPByResolveSvr(char *pchDVRIP, WORD wDVRPort, BYTE *sDVRName, WORD wDVRNameLen, BYTE *sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP); ///@brief 搜索局域网内IPC、NVS等设备(szBuf内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SearchDevices(char* szBuf, int nBufLen, int* pRetLen, DWORD dwSearchTime, char* szLocalIp=NULL); ///@brief 异步搜索局域网内IPC、NVS等设备,pUserData表示用户数据,不支持多线程调用, // 接口调用1次只发送搜索信令1次 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSearchDevices(fSearchDevicesCB cbSearchDevices, void* pUserData, char* szLocalIp=NULL); ///@brief 停止异步搜索局域网内IPC、NVS等设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSearchDevices(LLONG lSearchHandle); ///@brief 修改设备IP (pDevNetInfo内存由用户申请释放):不支持多线程调用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyDevice(DEVICE_NET_INFO_EX *pDevNetInfo, DWORD dwWaitTime, int *iError = NULL, char* szLocalIp = NULL, void *reserved = NULL); ///@brief 下发搜索类型 typedef enum tagEM_SEND_SEARCH_TYPE { EM_SEND_SEARCH_TYPE_MULTICAST_AND_BROADCAST, // 组播和广播搜索 EM_SEND_SEARCH_TYPE_MULTICAST, // 组播搜索 EM_SEND_SEARCH_TYPE_BROADCAST, // 广播搜索 }EM_SEND_SEARCH_TYPE; ///@brief 异步搜索设备入参 typedef struct tagNET_IN_STARTSERACH_DEVICE { DWORD dwSize; // 结构体大小 char szLocalIp[MAX_LOCAL_IP_LEN]; // 发起搜索的本地IP fSearchDevicesCBEx cbSearchDevices; // 设备信息回调函数 void* pUserData; // 用户自定义数据 EM_SEND_SEARCH_TYPE emSendType; // 下发搜索类型 }NET_IN_STARTSERACH_DEVICE; ///@brief // 异步搜索设备出参 typedef struct tagNET_OUT_STARTSERACH_DEVICE { DWORD dwSize; // 结构体大小 }NET_OUT_STARTSERACH_DEVICE; ///@brief 异步搜索设备 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSearchDevicesEx(NET_IN_STARTSERACH_DEVICE* pInBuf, NET_OUT_STARTSERACH_DEVICE* pOutBuf); ///@brief 修改IP入参 typedef struct tagNET_IN_MODIFY_IP { DWORD dwSize; // 结构体大小 DEVICE_NET_INFO_EX2 stuDevNetInfo; // 设备信息结构体 }NET_IN_MODIFY_IP; ///@brief 修改IP出参 typedef struct tagNET_OUT_MODIFY_IP { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_IP; ///@brief 修改设备IP (pDevNetInfo内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyDeviceEx(NET_IN_MODIFY_IP* pInBuf, NET_OUT_MODIFY_IP* pOutBuf, int nWaitTime); ///@brief 跨网段搜索设备IP (pIpSearchInfo内存由用户申请释放) // 接口调用1次只发送搜索信令1次 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SearchDevicesByIPs(DEVICE_IP_SEARCH_INFO* pIpSearchInfo, fSearchDevicesCB cbSearchDevices, LDWORD dwUserData, char* szLocalIp, DWORD dwWaitTime); ///@brief pstParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDeviceSearchParam(const NET_DEVICE_SEARCH_PARAM* pstParam); ///@brief 平台接入接口(lpOutBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPlatFormInfo(LLONG lLoginID, DWORD dwCommand, int nSubCommand, int nParam, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned,int waittime=500); ///@brief lpInBuffer内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlatFormInfo(LLONG lLoginID, DWORD dwCommand, int nSubCommand, int nParam, LPVOID lpInBuffer, DWORD dwInBufferSize, int waittime=500); ///@brief 镜头聚焦控制 // dwFocusCommand = 0为聚焦调节 // dwFocusCommand = 1为连续聚焦调节 // dwFocusCommand = 2为自动聚焦调节,调节焦点至最佳位置。nFocus和nZoom无效。 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FocusControl(LLONG lLoginID, int nChannelID, DWORD dwFocusCommand, double nFocus, double nZoom, void *reserved = NULL, int waittime=500); ///////////////////////////车载设备接口/////////////////////////////// ///@brief 设置抓图回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetSnapRevCallBack(fSnapRev OnSnapRevMessage, LDWORD dwUser); ///@brief 抓图请求 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPicture(LLONG lLoginID, SNAP_PARAMS par); ///@brief 抓图请求扩展接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPictureEx(LLONG lLoginID, SNAP_PARAMS *par, int *reserved = 0); ///@brief 抓图同步接口,将图片数据直接返回给用户,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPictureToFile(LLONG lLoginID, const NET_IN_SNAP_PIC_TO_FILE_PARAM* pInParam, NET_OUT_SNAP_PIC_TO_FILE_PARAM* pOutParam, int nWaitTime); ///@brief CLIENT_SnapPicFromRecord 接口入参 typedef struct tagNET_IN_SNAP_PIC_FROM_REC { DWORD dwSize; // 结构体大小 UINT nChannel; // 抓图通道号 int nStreamType; // 码流类型, 0-主码流 1-辅码流 BYTE byReserved[4]; // 保留字节,用于对齐 NET_TIME stuTime; // 回放抓图时间点 }NET_IN_SNAP_PIC_FROM_REC; ///@brief CLIENT_SnapPicFromRecord 接口出参 typedef struct tagNET_OUT_SNAP_PIC_FROM_REC { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 保留字节,用于对齐 BYTE* pPicBuf; // 图片缓存指针,需要用户分配内存 UINT nBufLen; // 图片缓存大小,需要用户填写 UINT nRetLen; // 设备返回的图片数据大小 }NET_OUT_SNAP_PIC_FROM_REC; ///@brief 回放抓图接口,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPicFromRecord(LLONG lLoginID, const NET_IN_SNAP_PIC_FROM_REC* pInParam,NET_OUT_SNAP_PIC_FROM_REC* pOutParam, int nWaitTime); ///@brief CLIENT_ManualSnap 接口输入参数 typedef struct tagNET_IN_MANUAL_SNAP { DWORD dwSize; // 结构体大小 UINT nChannel; // 抓图通道号 UINT nCmdSerial; // 请求序列号 char szFilePath[260]; // 抓图保存路径 } NET_IN_MANUAL_SNAP; ///@brief 抓图图片编码格式 typedef enum tagEM_SNAP_ENCODE_TYPE { EM_SNAP_ENCODE_TYPE_UNKNOWN, // 未知 EM_SNAP_ENCODE_TYPE_JPEG, // jpeg图片 EM_SNAP_ENCODE_TYPE_MPEG4_I, // mpeg4的i 帧 } EM_SNAP_ENCODE_TYPE; ///@brief CLIENT_ManualSnap 接口输出参数 typedef struct tagNET_OUT_MANUAL_SNAP { DWORD dwSize; // 结构体大小 UINT nMaxBufLen; // pRcvBuf的长度,由用户指定 char *pRcvBuf; // 接收图片缓冲, 用于存放抓图数据, 空间由用户申请和释放, 申请大小为nMaxBufLen UINT nRetBufLen; // 实际接收到的图片大小 EM_SNAP_ENCODE_TYPE emEncodeType; // 图片编码格式 UINT nCmdSerial; // 请求序列号 BYTE bReserved[4]; // 字节对齐 } NET_OUT_MANUAL_SNAP; ///@brief 手动抓图, 支持并发调用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ManualSnap(LLONG lLoginID, const NET_IN_MANUAL_SNAP *pInParam, NET_OUT_MANUAL_SNAP *pOutParam, const int nWaitTime); ///@brief 订阅抓图回调信息 typedef struct tagNET_CB_ATTACH_SNAP_INFO { char *pRcvBuf; // 接收到的图片数据 UINT nBufLen; // 图片数据长度 EM_SNAP_ENCODE_TYPE emEncodeType; // 图片编码格式 UINT nCmdSerial; // 抓图请求序列号 BYTE byReserved[1028]; // 保留字节 } NET_CB_ATTACH_SNAP_INFO; ///@brief 订阅抓图回调函数原形 typedef void (CALLBACK *fAttachSnapRev)(LLONG lAttachHandle, NET_CB_ATTACH_SNAP_INFO *pstAttachCbInfo, LDWORD dwUser); ///@brief CLIENT_AttachSnap 接口输入参数 typedef struct tagNET_IN_ATTACH_INTER_SNAP { DWORD dwSize; // 结构体大小 UINT nChannel; // 抓图通道号 UINT nCmdSerial; // 请求序列号 UINT nIntervalSnap; // 定时抓图时间间隔 fAttachSnapRev cbAttachSnapRev; // 回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_INTER_SNAP; ///@brief CLIENT_AttachSnap 接口输出参数 typedef struct tagNET_OUT_ATTACH_INTER_SNAP { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_INTER_SNAP; ///@brief 订阅抓图 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSnap(LLONG lLoginID, const NET_IN_ATTACH_INTER_SNAP *pInParam, NET_OUT_ATTACH_INTER_SNAP *pOutParam); ///@brief 取消订阅抓图 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSnap(LLONG lAttachHandle); ///@brief 设置GPS订阅回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubcribeGPSCallBack(fGPSRev OnGPSMessage, LDWORD dwUser); ///@brief 设置GPS订阅回调函数--扩展 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubcribeGPSCallBackEX(fGPSRevEx OnGPSMessage, LDWORD dwUser); ///@brief 设置GPS订阅回调函数--扩展2 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubcribeGPSCallBackEX2(fGPSRevEx2 OnGPSMessage, LDWORD dwUser); ///@brief:GPS信息订阅 ///@param[in]: LLONG :lLoginID //登陆句柄 ///@param[in]: BOOL :bStart //TRUE:订阅 FALSE:取消订阅 ///@param[in]: LONG :KeepTime //订阅持续时间(单位秒) 值为-1时,订阅时间为极大值,可视为永久订阅 ///@param[in]: LONG :InterTime //订阅时间内GPS发送频率(单位秒) ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_SubcribeGPS (LLONG lLoginID, BOOL bStart, LONG KeepTime, LONG InterTime); ///@brief CLIENT_SetGPSUuidInfo接口输入参数 typedef struct tagNET_IN_SET_GPS_UUID_INFO { DWORD dwSize; char szUUID[64]; // uuid,客户端唯一标识 }NET_IN_SET_GPS_UUID_INFO; ///@brief CLIENT_SetGPSUuidInfo接口输出参数 typedef struct tagNET_OUT_SET_GPS_UUID_INFO { DWORD dwSize; }NET_OUT_SET_GPS_UUID_INFO; ///@brief:设置GPS信息UUID ///@param[in]: LLONG :lLoginID //登陆句柄 ///@param[in]: NET_IN_SUBCRIBE_GPS_INFO :pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out]: NET_OUT_SET_GPS_UUID_INFO :pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetGPSUuidInfo(LLONG lLoginID, NET_IN_SET_GPS_UUID_INFO* pInParam, NET_OUT_SET_GPS_UUID_INFO* pOutParam); ///@brief 设置GPS温湿度订阅回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetSubcribeGPSTHCallBack(fGPSTempHumidityRev OnGPSMessage, LDWORD dwUser); ///@brief GPS温湿度信息订阅 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SubcribeGPSTempHumidity (LLONG lLoginID, BOOL bStart, int InterTime, void* Reserved); ///@brief GPS日志信息查询(pQueryParam, pLogBuffer内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryGPSLog(LLONG lLoginID,QUERY_GPS_LOG_PARAM *pQueryParam, char *pLogBuffer, int nLogBufferLen, int *pRecLogNum, BOOL *bContinue, int waittime); ///@brief 订阅任务(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_AttachMission(LLONG lLoginID, NET_IN_ATTACH_MISSION_PARAM *pInParam, NET_OUT_ATTACH_MISSION_PARAM *pOutParam, int nWaitTime); ///@brief 取消任务订阅 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachMission(LLONG lAttachHandle); ///@brief 车辆紧急报警确认(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_BusConfirmEvent(LLONG lLoginID, const NET_IN_BUS_CONFIRM_EVENT* pInParam, NET_OUT_BUS_CONFIRM_EVENT* pOutParam, int nWaitTime = 3000); ///@brief 设置设备地址信息(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDevicePosition(LLONG lLoginID, const NET_IN_SET_DEVICE_POSITION* pInParam, NET_OUT_SET_DEVICE_POSITION* pOutParam, int nWaitTime); ///@brief 获取设备地址信息(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevicePosition(LLONG lLoginID, const NET_IN_GET_DEVICE_POSITION* pInParam, NET_OUT_GET_DEVICE_POSITION* pOutParam, int nWaitTime); ///@brief 按照事件类型抓图(配合CLIENT_RealLoadPic()、CLIENT_RealLoadPicEx()接口使用, 按照手动抓拍模式(Manual)订阅,图片通过回调给用户)(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPictureByEvent(LLONG lLoginID, const NET_IN_SNAP_BY_EVENT* pInParam, NET_OUT_SNAP_BY_EVENT* pOutParam, int nWaitTime); //////////////////////////解码器设备接口////////////////////////////// ///@brief 查询解码器信息(lpDecInfo内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDecoderInfo(LLONG lLoginID, LPDEV_DECODER_INFO lpDecInfo, int waittime=1000); ///@brief 查询解码器当前TV信息(lpMonitorInfo内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDecoderTVInfo(LLONG lLoginID, int nMonitorID, LPDEV_DECODER_TV lpMonitorInfo, int waittime=1000); ///@brief 查询解码通道信息(lpEncoderInfo内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDecEncoderInfo(LLONG lLoginID, int nDecoderID, LPDEV_ENCODER_INFO lpEncoderInfo, int waittime=1000); ///@brief 设置解码器TV输出使能(pDecTVOutEnable内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDecTVOutEnable(LLONG lLoginID, BYTE *pDecTVOutEnable, int nBufLen, int waittime=1000); ///@brief 设置解码器显示叠加信息使能,通道号从0开始 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDecLayOutEnable(LLONG lLoginID, BYTE bDecLayOutEnable, int nChannel, int waittime=1000); ///@brief 获取解码器显示叠加信息使能,通道号从0开始 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDecLayOutEnable(LLONG lLoginID, BYTE *pDecLayOutEnable, int nChannel, int waittime=1000); ///@brief 设置异步回调函数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetOperateCallBack(LLONG lLoginID, fMessDataCallBack cbMessData, LDWORD dwUser); ///@brief 控制解码器TV画面分割,接口为异步方式 nSplitType=-1时,pEncoderChannel为结构体DH_CTRL_DECTV_SCREEN指针 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CtrlDecTVScreen(LLONG lLoginID, int nMonitorID, BOOL bEnable, int nSplitType, BYTE *pEncoderChannel, int nBufLen, void* userdata=NULL); ///@brief 解码器TV画面切换,接口为异步方式(lpEncoderInfo内存由用户申请释放) CLIENT_NET_API LLONG CALL_METHOD CLIENT_SwitchDecTVEncoder(LLONG lLoginID, int nDecoderID, LPDEV_ENCODER_INFO lpEncoderInfo, void* userdata=NULL); ///@brief 增加画面组合 CLIENT_NET_API int CALL_METHOD CLIENT_AddTourCombin(LLONG lLoginID, int nMonitorID, int nSplitType, BYTE *pEncoderChannnel, int nBufLen, int waittime=1000); ///@brief 删除画面组合 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelTourCombin(LLONG lLoginID, int nMonitorID, int nCombinID, int waittime=1000); ///@brief 修改画面组合 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetTourCombin(LLONG lLoginID, int nMonitorID, int nCombinID, int nSplitType, BYTE *pEncoderChannel, int nBufLen, int waittime=1000); ///@brief 查询画面组合,nCombinID范围0~32 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryTourCombin(LLONG lLoginID, int nMonitorID, int nCombinID, LPDEC_COMBIN_INFO lpDecCombinInfo, int waittime=1000); ///@brief 设置轮巡操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDecoderTour(LLONG lLoginID, int nMonitorID, LPDEC_TOUR_COMBIN lpDecTourInfo, int waittime=1000); ///@brief 查询轮巡操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDecoderTour(LLONG lLoginID, int nMonitorID, LPDEC_TOUR_COMBIN lpDecTourInfo, int waittime=1000); ///@brief 查询当前解码通道流信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDecChannelFlux(LLONG lLoginID, int nDecoderID, LPDEV_DECCHANNEL_STATE lpChannelStateInfo, int waittime=1000); ///@brief 解码器控制轮巡 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CtrlDecoderTour(LLONG lLoginID, int nMonitorID, DEC_CTRL_TOUR_TYPE emActionParam, int waittime = 1000); ///@brief 回调函数 typedef void (CALLBACK *fDecPlayBackPosCallBack)(LLONG lLoginID, int nEncoderID, DWORD dwTotalSize, DWORD dwPlaySize, LDWORD dwUser); ///@brief 设置回放进度回调函数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDecPlaybackPos(LLONG lLoginID, fDecPlayBackPosCallBack cbPlaybackPos, LDWORD dwUser); ///@brief 解码器TV画面回放,接口为异步方式 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DecTVPlayback(LLONG lLoginID, int nDecoderID, DEC_PLAYBACK_MODE emPlaybackMode, LPVOID lpInBuffer, DWORD dwInBufferSize, void* userdata=NULL); ///@brief 解码器TV画面回放控制 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CtrlDecPlayback(LLONG lLoginID, int nDecoderID, DEC_CTRL_PLAYBACK_TYPE emCtrlType, int nValue, int waittime=1000); ///////////////////////////智能设备接口/////////////////////////////// ///@brief 实时上传智能分析数据-图片 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealLoadPicture(LLONG lLoginID, int nChannelID, DWORD dwAlarmType, fAnalyzerDataCallBack cbAnalyzerData, LDWORD dwUser); ///@brief 实时上传智能分析数据-图片(扩展接口,bNeedPicFile表示是否订阅图片文件,Reserved类型为 RESERVED_PARA) CLIENT_NET_API LLONG CALL_METHOD CLIENT_RealLoadPictureEx(LLONG lLoginID, int nChannelID, DWORD dwAlarmType, BOOL bNeedPicFile, fAnalyzerDataCallBack cbAnalyzerData, LDWORD dwUser, void* Reserved); ///@brief 停止上传智能分析数据-图片 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopLoadPic(LLONG lAnalyzerHandle); ///@brief CLIENT_GetCustomInfoCaps 输入参数 typedef struct tagNET_IN_GET_CUSTOMINFO_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_CUSTOMINFO_CAPS; ///@brief CLIENT_GetCustomInfoCaps 输出参数 typedef struct tagNET_OUT_GET_CUSTOMINFO_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportXRaySubscribeRule; // 为true时,订阅参数是XRaySubscribeRule,类型是int // 格式如XRaySubscribeRule=1,取值范围:0表示取UploadPlatform配置,1表示取DangerPackageCondition配置 }NET_OUT_GET_CUSTOMINFO_CAPS; ///@brief 获取智能订阅参数CustomInfo的格式化字符串能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCustomInfoCaps(LLONG lLoginID, const NET_IN_GET_CUSTOMINFO_CAPS* pInParam, NET_OUT_GET_CUSTOMINFO_CAPS* pOutParam, int nWaitTime=3000); ///@brief 确认上传图片是否已完成-图片 // 该接口不宜与 CLIENT_RealLoadPictureEx/CLIENT_RealLoadPicture 的回调函数在同一线程,易造成阻塞,必须在另外的线程中调用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapManagerConfirmUpload(LLONG lLoginID, const NET_IN_SNAP_MANAGER_CONFIRM_UPLOAD* pstInParam, NET_OUT_SNAP_MANAGER_CONFIRM_UPLOAD* pstOutParam, int waittime=1000); ///@brief 获取抓图能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapManagerGetCaps(LLONG lLoginID, const NET_IN_SNAP_MANAGER_GET_CAPS* pstInParam, NET_OUT_SNAP_MANAGER_GET_CAPS* pstOutParam, int waittime=1000); ///@brief 平台配置事件大图存储到后端存储设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapManagerStoragePicture(LLONG lLoginID, const NET_IN_SNAP_MANAGER_STORAGE_PICTURE* pstInParam, NET_OUT_SNAP_MANAGER_STORAGE_PICTURE* pstOutParam, int waittime=1000); ///@brief 按查询条件查询文件,pQueryCondition由用户申请释放内存,大小参照emType对应的结构体 CLIENT_NET_API LLONG CALL_METHOD CLIENT_FindFileEx(LLONG lLoginID, EM_FILE_QUERY_TYPE emType, void* pQueryCondition, void *reserved, int waittime=1000); ///@brief 查找文件:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值0正向播放, <0方向播放 // 绝对值表示速度, =1正常速度, >1快放, <1慢放 }NET_OUT_PLAYER_GET_SPEED; ///@brief 设置播放速度输入参数, 对应 NET_PLAYER_OPERATE_SET_SPEED typedef struct tagNET_IN_PLAYER_SET_SPEED { DWORD dwSize; LLONG lPlayerID; // 播放实例ID float fSpeed; // 播放速度, >0正向播放, <0方向播放 // 绝对值表示速度, =1正常速度, >1快放, <1慢放 }NET_IN_PLAYER_SET_SPEED; ///@brief 设置播放速度输出参数, 对应 NET_PLAYER_OPERATE_SET_SPEED typedef struct tagNET_OUT_PLAYER_SET_SPPED { DWORD dwSize; }NET_OUT_PLAYER_SET_SPEED; ///@brief 获取播放音量输入参数, 对应 NET_PLAYER_OPERATE_GET_VOLUME typedef struct tagNET_IN_PLAYER_GET_VOLUME { DWORD dwSize; LLONG lPlayerID; // 播放实例ID }NET_IN_PLAYER_GET_VOLUME; ///@brief 获取播放音量输出参数, 对应 NET_PLAYER_OPERATE_GET_VOLUME typedef struct tagNET_OUT_PLAYER_GET_VOLUME { DWORD dwSize; int nVolume; // 播放音量, 0~100 }NET_OUT_PLAYER_GET_VOLUME; ///@brief 设置播放音量输入参数, 对应 NET_PLAYER_OPERATE_SET_VOLUME typedef struct tagNET_IN_PLAYER_SET_VOLUME { DWORD dwSize; LLONG lPlayerID; // 播放实例ID int nVolume; // 播放音量, 0~100 }NET_IN_PLAYER_SET_VOLUME; ///@brief 设置播放音量输出参数, 对应 NET_PLAYER_OPERATE_SET_VOLUME typedef struct tagNET_OUT_PLAYER_SET_VOLUME { DWORD dwSize; }NET_OUT_PLAYER_SET_VOLUME; ///@brief 播放列表信息 typedef struct tagNET_PLAYER_PLAYLIST { DWORD dwSize; char szFilePath[MAX_PATH]; // 文件路径, 与Url二者选一 char szUrl[MAX_PATH]; // URL, 与FilePath二者选一 DH_DEVICE_PROTOCOL emUrlProtocol; // URL协议类型 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 }NET_PLAYER_PLAYLIST; ///@brief 获取当前播放列表输入参数, 对应 NET_PLAYER_OPERATE_GET_PLAYLIST typedef struct tagNET_IN_PLAYER_GET_PLAYLIST { DWORD dwSize; LLONG lPlayerID; // 播放实例ID NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 int nLimit; // 查询的文件数上限, 0表示无上限 }NET_IN_PLAYER_GET_PLAYLIST; ///@brief 获取当前播放列表输出参数, 对应 NET_PLAYER_OPERATE_GET_PLAYLIST typedef struct tagNET_OUT_PLAYER_GET_PLAYLIST { DWORD dwSize; NET_PLAYER_PLAYLIST* pstuPlayLists; // 播放列表, 用户分配内存 int nMaxPlayListCount; // 最大播放列表数量, 用户填写 int nRetPlayListCount; // 返回播放列表数量 }NET_OUT_PLAYER_GET_PLAYLIST; ///@brief 获取当前文件列表全部时间段信息输入参数, 对应 NET_PLAYER_OPERATE_GET_PLAYLIST_TS typedef struct tagNET_IN_PLAYER_GET_PLAYLIST_TS { DWORD dwSize; LLONG lPlayerID; // 播放实例ID }NET_IN_PLAYER_GET_PLAYLIST_TS; ///@brief 当前回放列表的时间段信息 typedef struct tagNET_PLAYLIST_TIMESECTION { DWORD dwSize; int nEvent; // 录像事件类型, 目前有 // EVENT_ALARM_COMMON, EVENT_ALARM_VIDEOBLIND, EVENT_ALARM_VIDEOLOSS, // EVENT_ALARM_MOTIONDETECT, EVENT_ALARM_LOCALALARM LPDH_TSECT pstuTSs; // 时间段信息 DWORD unMaxTS; // 时间段最大个数 DWORD unRetTS; // 实际返回的时间段个数 }NET_PLAYLIST_TIMESECTION; ///@brief 获取当前文件列表全部时间段信息输出参数, 对应 NET_PLAYER_OPERATE_GET_PLAYLIST_TS typedef struct tagNET_OUT_PLAYER_GET_PLAYLIST_TS { DWORD dwSize; DWORD dwEventNum; // 录像类型数量 NET_PLAYLIST_TIMESECTION stuTS[MAX_IVS_EVENT_NUM]; // 当前回放列表的时间段信息 }NET_OUT_PLAYER_GET_PLAYLIST_TS; ///@brief 分割窗口播放操作,pInParam与pOutParam内存由用户申请释放,内存大小参照emType对应的结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateSplitPlayer(LLONG lLoginID, NET_PLAYER_OPERATE_TYPE emType, void* pInParam, void* pOutParam, int nWaitTime); ///@brief 分隔窗口播放器回放状态类型 typedef enum tagEM_SPLIT_PLAYER_STATUS { EM_SPLIT_PLAYER_STATUS_UNKNOWN, // 未知状态 EM_SPLIT_PLAYER_STATUS_FILE_CHANGED, // 码流源文件已切换 EM_SPLIT_PLAYER_STATUS_STATE_CHANGED, // 状态变更 EM_SPLIT_PLAYER_STATUS_FILELIST_CHANGED, // 码流文件列表已切换 }EM_SPLIT_PLAYER_STATUS; ///@brief 分隔窗口播放器回放状态 typedef struct tagNET_SPLIT_PLAYER_STATE { EM_SPLIT_PLAYER_STATUS emStatus; // 状态 char szReserved[508]; // 保留字节 } NET_SPLIT_PLAYER_STATE; ///@brief CLIENT_AttachSplitPlayerState()回调函数原形 typedef void (CALLBACK *fPlayerStateCallBack) (LLONG lLoginID, LLONG lAttachHandle, const NET_SPLIT_PLAYER_STATE *pInfo, int nInfoLen, LDWORD dwUser); ///@brief 订阅分隔窗口播放器回放状态输入参数 typedef struct tagNET_IN_ATTACH_PLAYER_STATE { DWORD dwSize; LLONG lPlayerID; // 播放实例ID fPlayerStateCallBack cbNotify; // 状态回调 LDWORD dwUser; }NET_IN_ATTACH_PLAYER_STATE; ///@brief 订阅分隔窗口播放器回放状态输出参数 typedef struct tagNET_OUT_ATTACH_PLAYER_STATE { DWORD dwSize; }NET_OUT_ATTACH_PLAYER_STATE; ///@brief 订阅分隔窗口播放器回放状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSplitPlayerState(LLONG lLoginID, const NET_IN_ATTACH_PLAYER_STATE* pInParam, NET_OUT_ATTACH_PLAYER_STATE* pOutParam, int nWaitTime); ///@brief 退订分隔窗口播放器回放状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSplitPlayerState(LLONG hAttachHandle); ///@brief 分隔窗口播放器回放进度 typedef struct tagNET_SPLIT_PLAYER_PROCESS { double dbProcess; // 进度 NET_TIME stuTime; // 正在回放的时间点 char szReserved[512]; // 保留字节 } NET_SPLIT_PLAYER_PROCESS; ///@brief CLIENT_AttachSplitPlayerProcess()回调函数原形 typedef void (CALLBACK *fPlayerProcessCallBack) (LLONG lLoginID, LLONG lAttachHandle, const NET_SPLIT_PLAYER_PROCESS *pInfo, int nInfoLen, LDWORD dwUser); ///@brief 订阅分隔窗口播放器回放进度输入参数 typedef struct tagNET_IN_ATTACH_PLAYER_PROCESS { DWORD dwSize; LLONG lPlayerID; // 播放实例ID fPlayerProcessCallBack cbNotify; // 进度回调 LDWORD dwUser; }NET_IN_ATTACH_PLAYER_PROCESS; ///@brief 订阅分隔窗口播放器回放进度输出参数 typedef struct tagNET_OUT_ATTACH_PLAYER_PROCESS { DWORD dwSize; }NET_OUT_ATTACH_PLAYER_PROCESS; ///@brief 订阅分隔窗口播放器回放进度 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSplitPlayerProcess(LLONG lLoginID, const NET_IN_ATTACH_PLAYER_PROCESS* pInParam, NET_OUT_ATTACH_PLAYER_PROCESS* pOutParam, int nWaitTime); ///@brief 退订分隔窗口播放器回放进度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSplitPlayerProcess(LLONG hAttachHandle); ///@brief NET_ACCESS_LOCK_VER 入参 typedef struct tagNET_ACCESS_LOCK_VER_IN { int nChannel; // 通道号 char reserved[128]; // 保留 } NET_ACCESS_LOCK_VER_IN; ///@brief NET_ACCESS_LOCK_VER 出参 typedef struct tagNET_ACCESS_LOCK_VER_OUT { char szVersion[32]; // 版本 NET_TIME stuTime; // 时间 char reserved[512]; // 保留 } NET_ACCESS_LOCK_VER_OUT; ///@brief 门锁版本号, CLIENT_QueryDevState 查询类型 DH_DEVSTATE_ACCESS_LOCK_VER typedef struct tagNET_ACCESS_LOCK_VER { DWORD dwSize; NET_ACCESS_LOCK_VER_IN stuIn; // 入参 NET_ACCESS_LOCK_VER_OUT stuOut; // 出参 } NET_ACCESS_LOCK_VER; //////////////////////////////// 电视墙控制 ////////////////////////////////////// ///@brief 电源控制,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PowerControl(LLONG lLoginID, const DH_IN_WM_POWER_CTRL* pInParam, DH_OUT_WM_POWER_CTRL* pOutParam, int nWaitTime = 1000); ///@brief 设置显示模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDisplayMode(LLONG lLoginID, const DH_IN_WM_SET_DISPLAY_MODE* pInParam, DH_OUT_WM_SET_DISPLAY_MODE* pOutParam, int nWaitTime = 1000); ///@brief 获取显示模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDisplayMode(LLONG lLoginID, const DH_IN_WM_GET_DISPLAY_MODE* pInParam, DH_OUT_WM_GET_DISPLAY_MODE* pOutParam, int nWaitTime = 1000); ///@brief 载入预案,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_LoadMonitorWallCollection(LLONG lLoginID, const DH_IN_WM_LOAD_COLLECTION* pInParam, DH_OUT_WM_LOAD_COLLECTION* pOutParam, int nWaitTime = 1000); ///@brief 保存预案,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SaveMonitorWallCollection(LLONG lLoginID, const DH_IN_WM_SAVE_COLLECTION* pInParam, DH_OUT_WM_SAVE_COLLECTION* pOutParam, int nWaitTime = 1000); ///@brief 获取电视墙预案,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMonitorWallCollections(LLONG lLoginID, const DH_IN_WM_GET_COLLECTIONS* pInParam, DH_OUT_WM_GET_COLLECTIONS* pOutParam, int nWaitTime = 1000); ///@brief 电视墙预案重命名,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RenameMonitorWallCollection(LLONG lLoginID, const DH_IN_WM_RENAME_COLLECTION* pInParam, DH_OUT_WM_RENAME_COLLECTION* pOutParam, int nWaitTime = 1000); ///@brief 获取电视墙场景,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetScene(LLONG lLoginID, const DH_IN_MONITORWALL_GET_SCENE* pInParam, DH_OUT_MONITORWALL_GET_SCENE* pOutParam, int nWaitTime = 1000); ///@brief 设置电视墙场景,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetScene(LLONG lLoginID, const DH_IN_MONITORWALL_SET_SCENE* pInParam, DH_OUT_MONITORWALL_SET_SCENE* pOutParam, int nWaitTime = 1000); ///@brief CLIENT_GetCountOfMonitorWallScene接口输入参数(获取电视墙场景的个数) typedef struct tagNET_IN_GET_COUNT_MONITORWALL_SCENE { DWORD dwSize; int nMonitorWallID; // 电视墙序号 } NET_IN_GET_COUNT_MONITORWALL_SCENE; ///@brief CLIENT_GetCountOfMonitorWallScene接口输出参数(获取电视墙场景的个数) typedef struct tagNET_OUT_GET_COUNT_MONITORWALL_SCENE { DWORD dwSize; unsigned int nSplitSceneCount; // 获取到拼接屏场景的个数 unsigned int nSplitWndCount[300]; // 窗口信息的数组,数组的每个元素表示每个拼接屏场景中的窗口信息的个数 } NET_OUT_GET_COUNT_MONITORWALL_SCENE; ///@brief 获取电视墙场景的个数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCountOfMonitorWallScene(LLONG lLoginID, const NET_IN_GET_COUNT_MONITORWALL_SCENE* pInParam, NET_OUT_GET_COUNT_MONITORWALL_SCENE* pOutParam, int nWaitTime); ///@brief 获取电视墙显示单元能力集,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetAttributeCaps(LLONG lLoginID, const DH_IN_MONITORWALL_GET_ARRT_CAPS* pInParam, DH_OUT_MONITORWALL_GET_ARRT_CAPS* pOutParam, int nWaitTime = 1000); ///@brief 电视墙显示单元自动调节,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallAutoAdjust(LLONG lLoginID, const DH_IN_MONITORWALL_AUTO_ADJUST* pInParam, DH_OUT_MONITORWALL_AUTO_ADJUST* pOutParam, int nWaitTime = 1000); ///@brief 设置电视墙显示单元属性,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetAttribute(LLONG lLoginID, const DH_IN_MONITORWALL_SET_ATTR* pInParam, DH_OUT_MONITORWALL_SET_ATTR* pOutParam, int nWaitTime = 1000); ///@brief 设置背光模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetBackLight(LLONG lLoginID, const DH_IN_MONITORWALL_SET_BACK_LIGHT* pInParam, DH_OUT_MONITORWALL_SET_BACK_LIGHT* pOutParam, int nWaitTime = 1000); ///@brief 查询屏幕开关计划,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetPowerSchedule(LLONG lLoginID, const NET_IN_MW_GET_POWER_SCHEDULE* pInParam, NET_OUT_MW_GET_POWER_SCHEDULE* pOutParam, int nWaitTime); ///@brief 设置屏幕开关计划,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetPowerSchedule(LLONG lLoginID, const NET_IN_MW_SET_POWER_SCHEDULE* pInParam, NET_OUT_MW_SET_POWER_SCHEDULE* pOutParam, int nWaitTime); ///@brief 查询屏幕控制参数,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetScrnCtrlParam(LLONG lLoginID, const NET_IN_MW_GET_SCRN_CTRL_PARAM* pInParam, NET_OUT_MW_GET_SCRN_CTRL_PARAM* pOutParam, int nWaitTime); ///@brief 设置屏幕控制参数,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetScrnCtrlParam(LLONG lLoginID, const NET_IN_MW_SET_SCRN_CTRL_PARAM* pInParam, NET_OUT_MW_SET_SCRN_CTRL_PARAM* pOutParam, int nWaitTime); ///@brief 查询屏幕和窗口背景颜色,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetBackgroudColor(LLONG lLoginID, const NET_IN_MW_GET_BACKGROUDND_COLOR* pInParam, NET_OUT_MW_GET_BACKGROUDND_COLOR* pOutParam, int nWaitTime); ///@brief 设置屏幕和窗口背景颜色,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSetBackgroudColor(LLONG lLoginID, const NET_IN_MW_SET_BACKGROUD_COLOR* pInParam, NET_OUT_MW_SET_BACKGROUD_COLOR* pOutParam, int nWaitTime); ///@brief 订阅预案轮巡状态,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_MonitorWallAttachTour(LLONG lLoginID, const NET_IN_WM_ATTACH_TOUR* pInParam, NET_OUT_WM_ATTACH_TOUR* pOutParam, int nWaitTime); ///@brief 取消订阅预案轮巡状态,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallDetachTour(LLONG lAttachHandle); ///@brief 电视墙操作,pInParam与pOutParam内存由用户申请释放,大小参照emType对应的结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateMonitorWall(LLONG lLoginID, NET_MONITORWALL_OPERATE_TYPE emType, void* pInParam, void* pOutParam, int nWaitTime); ///@brief 切换显示屏的输入信号类型,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallSwitchDisplaySignal(LLONG lLoginID, const NET_IN_MW_SWITCH_DISPLAY_SIGNAL* pInParam, NET_OUT_MW_SWITCH_DISPLAY_SIGNAL* pOutParam, int nWaitTime); ///@brief 获取屏幕窗口解码信息CLIENT_MonitorWallGetWindowInfo入参 typedef struct tagNET_IN_MW_GET_WINODW_INFO { DWORD dwSize; //结构体大小 int nMonitorWallID; //电视墙序号 const char* pszCompositeID; //拼接屏或者单屏ID }NET_IN_MW_GET_WINODW_INFO; ///@brief 码流的编码方式 typedef enum tagEM_NET_ENCODE_COMPRESSION { EM_NET_ENCODE_COMPRESSION_UNKNOWN, //未知 EM_NET_ENCODE_COMPRESSION_H264, //H264 EM_NET_ENCODE_COMPRESSION_MPEG4, //MPEG4 EM_NET_ENCODE_COMPRESSION_MJPEG, //MJPEG EM_NET_ENCODE_COMPRESSION_SVAC, //SVAC EM_NET_ENCODE_COMPRESSION_HIK, //HIK EM_NET_ENCODE_COMPRESSION_H265, //H265 }EM_NET_ENCODE_COMPRESSION; ///@brief 解码通道信息 typedef struct tagNET_MW_GET_WINDOW_INFO { BOOL bEnable; //窗口使能状态 NET_VIDEOCHANNEL_STATE emState; //窗口解码状态 UINT unNetflow; //网络流量(单位:kbps) UINT unBitrate; //码率(单位:kbps) UINT nFrame; //帧率 CAPTURE_SIZE emResolution; //分辨率 UINT unRealTimeFrame; //实时统计的帧率 EM_NET_ENCODE_COMPRESSION emCompression; //码流的编码方式 EM_CAPTURE_SIZE_EX emResolutionEx; //分辨率细分 BYTE byReserved[508]; //预留字节 }NET_MW_GET_WINDOW_INFO; ///@brief 获取屏幕窗口解码信息CLIENT_MonitorWallGetWindowInfo出参 typedef struct tagNET_OUT_MW_GET_WINDOW_INFO { DWORD dwSize; //用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_MW_GET_WINDOW_INFO) int nVideoInfoNum; //用户需要获取的解码通道信息个数,从0开始获取,用户指定 NET_MW_GET_WINDOW_INFO* pNetVideoChannelInfo; //解码通道信息列表,用户申请空间,用户申请列表个数和nVideoInfoNum一致,申请内存大小为sizeof(NET_MW_GET_WINDOW_INFO)*nVideoInfoNum int nRetVideoInfoNum; //返回实际获取到的解码通道信息个数,SDK返回 }NET_OUT_MW_GET_WINDOW_INFO; ///@brief 获取电视墙上屏幕窗口解码信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MonitorWallGetWindowInfo(LLONG lLoginID, const NET_IN_MW_GET_WINODW_INFO* pInParam, NET_OUT_MW_GET_WINDOW_INFO* pOutParam,int nWaitTime); /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////全景拼接服务器相关接口 start /////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////// ///@brief 全景拼接分组信息 typedef struct tagPANO_COMPOSITE_GROUP_INFO { char szGroupName[64]; // 全景拼接组名称 /*以下行数和列数的乘积需大于1小于65*/ int nRow; // 行数 int nColumn; // 列数 int nEncChannel; // 所关联的编码通道号, 可通过CLIENT_QueryMatrixCardInfo 接口获取 BYTE byReserved[1028]; //预留字节 } PANO_COMPOSITE_GROUP_INFO; ///@brief 创建全景拼接分组 输入参数 typedef struct tagNET_IN_ADD_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 PANO_COMPOSITE_GROUP_INFO stuPanoCompositeGroup; // 全景拼接组信息 } NET_IN_ADD_PANO_COMPOSITE_GROUP; ///@brief 创建全景拼接分组 输出参数 typedef struct tagNET_OUT_ADD_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 char szGroupID[32]; // 组ID } NET_OUT_ADD_PANO_COMPOSITE_GROUP; ///@brief 删除全景拼接分组 输入参数 typedef struct tagNET_IN_REMOVE_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 UINT nGroupNum; // 要删除的组个数 char szGroupIdList[16][32]; // 要删除的组ID列表 } NET_IN_REMOVE_PANO_COMPOSITE_GROUP; ///@brief 删除全景拼接分组 输出参数 typedef struct tagNET_OUT_REMOVE_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_REMOVE_PANO_COMPOSITE_GROUP; ///@brief 修改全景拼接分组输入参数 typedef struct tagNET_IN_MODIFY_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 char szGroupID[32]; // 组ID PANO_COMPOSITE_GROUP_INFO stuPanoCompositeGroup; // 全景拼接组信息 } NET_IN_MODIFY_PANO_COMPOSITE_GROUP; ///@brief 修改全景拼接分组输出参数 typedef struct tagNET_OUT_MODIFY_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFY_PANO_COMPOSITE_GROUP; ///@brief 获取所有全景拼接分组信息输入参数 typedef struct tagNET_IN_GET_ALL_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 } NET_IN_GET_ALL_PANO_COMPOSITE_GROUP; ///@brief 全景拼接分组列表 typedef struct tagPANO_COMPOSITE_GROUP_LIST_INFO { char szGroupID[32]; // 组ID PANO_COMPOSITE_GROUP_INFO stuPanoCompositeGroup; // 全景拼接组信息 BYTE byReserved[1024]; //预留字节 } PANO_COMPOSITE_GROUP_LIST_INFO; ///@brief 获取所有全景拼接分组信息输出参数 typedef struct tagNET_OUT_GET_ALL_PANO_COMPOSITE_GROUP { DWORD dwSize; // 结构体大小 UINT nGroupNum; // 全景拼接组个数 PANO_COMPOSITE_GROUP_LIST_INFO stuGroupInfoList[16]; // 全景拼接组列表 } NET_OUT_GET_ALL_PANO_COMPOSITE_GROUP; ///@brief 显示源视频码流类型 typedef enum tagEM_SOURCE_STREAM_TYPE { EM_SOURCE_STREAM_UNKNOWN = -1, // 未知 EM_SOURCE_STREAM_MAIN, // 主码流 EM_SOURCE_STREAM_EXTRA1, // 辅码流1 EM_SOURCE_STREAM_EXTRA2, // 辅码流2 EM_SOURCE_STREAM_EXTRA3, // 辅码流3 EM_SOURCE_STREAM_AUTO, // 自动选择合适码流 EM_SOURCE_STREAM_PREVIEW, // 预览码流 } EM_SOURCE_STREAM_TYPE; ///@brief 显示源设备信息 typedef struct tagNET_SOURCE_DEVICE_INFO { int nDefinition; // 清晰度, 0-标清, 1-高清 DH_DEVICE_PROTOCOL emProtocol; // 协议类型 char szIp[32]; // IP, 空表示没有设置 char szUser[64]; // 用户名 char szPwd[64]; // 密码 int nPort; // 端口 int nVideoInputChannelNum; // 视频输入通道数 int nAudioInputChannelNum; // 音频输入通道数 DWORD dwHttpPort; // Http端口号, 0-65535 DWORD dwRtspPort; // Rtsp端口号, 0-65535 int nHint; // 0-普通视频源, 1-报警视频源 char szDevClass[DH_DEV_TYPE_LEN]; // 设备类型, 如IPC, DVR, NVR等 char szDevType[DH_DEV_TYPE_LEN]; // 设备具体型号, 如IPC-HF3300 char szMainStreamUrl[MAX_PATH]; // 主码流url地址 BYTE byReserved[1028]; //预留字节 } NET_SOURCE_DEVICE_INFO; ///@brief 全景拼接分组视频源信息 typedef struct tagPANO_COMPOSITE_GROUP_SOURCE_INFO { UINT nChannelID; // 视频通道号 EM_SOURCE_STREAM_TYPE emStreamType; // 视频码流类型 char szDeviceID[64]; // 设备ID, 与stuDeviceInfo 互斥 NET_SOURCE_DEVICE_INFO stuDeviceInfo; // 显示源设备信息, szDeviceID 为空时有效 BYTE byReserved[1024]; //预留字节 } PANO_COMPOSITE_GROUP_SOURCE_INFO; ///@brief 设置全景拼接分组视频源输入参数 typedef struct tagNET_IN_SET_PANO_COMPOSITE_GROUP_SOURCE { DWORD dwSize; // 结构体大小 char szGroupID[32]; // 分组ID UINT nGroupSourceNum; // 分组视频源个数, 与PANO_COMPOSITE_GROUP_INFO中行列数乘积相同,布局从左到右,从上到下 PANO_COMPOSITE_GROUP_SOURCE_INFO *pstGroupSourceInfo; // 分组视频源信息, 资源由用户申请和释放, 申请大小为nGroupSourceNum * sizeof(PANO_COMPOSITE_GROUP_SOURCE_INFO) } NET_IN_SET_PANO_COMPOSITE_GROUP_SOURCE; ///@brief 设置全景拼接分组视频源输出参数 typedef struct tagNET_OUT_SET_PANO_COMPOSITE_GROUP_SOURCE { DWORD dwSize; // 结构体大小 } NET_OUT_SET_PANO_COMPOSITE_GROUP_SOURCE; ///@brief 获取全景拼接分组视频源输入参数 typedef struct tagNET_IN_GET_PANO_COMPOSITE_GROUP_SOURCE { DWORD dwSize; // 结构体大小 } NET_IN_GET_PANO_COMPOSITE_GROUP_SOURCE; ///@brief 全景拼接分组视频源信息列表 typedef struct tagNET_COMPOSITE_GROUP_SOURCE_LIST { char szGroupID[32]; // 分组ID UINT nMaxGroupSrcNum; // 分组视频源个数, 最大支持64个 UINT nGroupSourceNum; // 实际返回的分组视频源个数 PANO_COMPOSITE_GROUP_SOURCE_INFO *pstGroupSourceInfo; // 分组视频源信息 BYTE byReserved[1024]; //预留字节 } NET_COMPOSITE_GROUP_SOURCE_LIST; ///@brief 获取全景拼接分组视频源输出参数 typedef struct tagNET_OUT_GET_PANO_COMPOSITE_GROUP_SOURCE { DWORD dwSize; // 结构体大小 UINT nGroupSourceListNum; // 全景拼接分组视频源信息列表个数 NET_COMPOSITE_GROUP_SOURCE_LIST stuGroupSourceList[16]; // 全景拼接分组视频源信息列表 } NET_OUT_GET_PANO_COMPOSITE_GROUP_SOURCE; ///@brief 全景拼接分组操作类型 typedef enum tagEM_PANOCOMPOSITE_GROUP_OPERATE_TYPE { EM_PANOCOMPOSITE_GROUP_OPERATE_ADD, // 创建全景拼接分组, 对应NET_IN_ADD_PANO_COMPOSITE_GROUP 和 NET_OUT_ADD_PANO_COMPOSITE_GROUP EM_PANOCOMPOSITE_GROUP_OPERATE_REMOVE, // 删除全景拼接分组, 对应NET_IN_REMOVE_PANO_COMPOSITE_GROUP 和 NET_OUT_REMOVE_PANO_COMPOSITE_GROUP EM_PANOCOMPOSITE_GROUP_OPERATE_MODIFY, // 修改全景拼接分组, 对应NET_IN_MODIFY_PANO_COMPOSITE_GROUP 和 NET_OUT_MODIFY_PANO_COMPOSITE_GROUP EM_PANOCOMPOSITE_GROUP_OPERATE_GET_ALL, // 获取所有全景拼接分组信息, 对应NET_IN_GET_ALL_PANO_COMPOSITE_GROUP 和 NET_OUT_GET_ALL_PANO_COMPOSITE_GROUP EM_PANOCOMPOSITE_GROUP_OPERATE_SET_SOURCE, // 设置全景拼接分组视频源, 对应NET_IN_SET_PANO_COMPOSITE_GROUP_SOURCE 和 NET_OUT_SET_PANO_COMPOSITE_GROUP_SOURCE EM_PANOCOMPOSITE_GROUP_OPERATE_GET_SOURCE, // 获取全景拼接分组视频源, 对应NET_IN_GET_PANO_COMPOSITE_GROUP_SOURCE 和 NET_OUT_GET_PANO_COMPOSITE_GROUP_SOURCE } EM_PANOCOMPOSITE_GROUP_OPERATE_TYPE; ///@brief 全景拼接分组操作函数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperatePanoCompositeGroup(LLONG lLoginID, EM_PANOCOMPOSITE_GROUP_OPERATE_TYPE emOperateType, void* pInParam, void* pOutParam, int nWaitTime); /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////全景拼接服务器相关接口 end //////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// LED接口//////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// ///@brief 设置LED输出画面控制命令类型 typedef enum tagEM_LED_SET_CMD_TYPE { EM_LED_SET_CMD_DISPLAY_ENABLE, // 开关屏命令 EM_LED_SET_CMD_DISPLAY_LOCK, // 画面锁定命令 EM_LED_SET_CMD_DISPLAY_TEST, // 画面测试命令 } EM_LED_SET_CMD_TYPE; ///@brief LED输出画面类型 typedef enum tagEM_LED_IMAGE_TYPE { EM_LED_IMAGE_UNKNOWN = -1, // 未知 EM_LED_IMAGE_NORMAL, // 正常视频 EM_LED_IMAGE_RED, // 红色屏 EM_LED_IMAGE_GREEN, // 绿色屏 EM_LED_IMAGE_BLUE, // 蓝色屏 EM_LED_IMAGE_WHITE, // 白色屏 EM_LED_IMAGE_BLACK, // 黑色屏 EM_LED_IMAGE_TRANSVERSE, // 横条纹 EM_LED_IMAGE_VERTICAL, // 竖条纹 EM_LED_IMAGE_DIAGONAL, // 斜条纹 EM_LED_IMAGE_256GREY, // 256灰度屏 EM_LED_IMAGE_AGINGSCREEN, // 老化屏 } EM_LED_IMAGE_TYPE; ///@brief CLIENT_SetLedDisplayCtrlParams接口输入参数 typedef struct tagNET_IN_LED_SET_DISPLAY_CTRL_PARAMS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为该结构体大小 int nChannel; // 通道号 EM_LED_SET_CMD_TYPE emCmdType; // 设置LED输出画面控制命令类型 BOOL bDisplayEnable; // 开关屏使能,emCmdType为 EM_LED_SET_CMD_DISPLAY_ENABLE 时有效 BOOL bDisplayBlack; // 屏幕黑屏使能, emCmdType 为 EM_LED_SET_CMD_DISPLAY_ENABLE 时有效 BOOL bDisplayLock; // 画面锁定使能, emCmdType 为 EM_LED_SET_CMD_DISPLAY_LOCK 时有效 EM_LED_IMAGE_TYPE emImageType; // 输出画面类型, emCmdType 为 EM_LED_SET_CMD_DISPLAY_TEST 时有效 } NET_IN_LED_SET_DISPLAY_CTRL_PARAMS; ///@brief CLIENT_SetLedDisplayCtrlParams接口输出参数 typedef struct tagNET_OUT_LED_SET_DISPLAY_CTRL_PARAMS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为该结构体大小 } NET_OUT_LED_SET_DISPLAY_CTRL_PARAMS; ///@brief CLIENT_GetLedDisplayCtrlParams接口输入参数 typedef struct tagNET_IN_LED_GET_DISPLAY_CTRL_PARAMS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为该结构体大小 int nChannel; // 通道号 } NET_IN_LED_GET_DISPLAY_CTRL_PARAMS; ///@brief CLIENT_GetLedDisplayCtrlParams接口输出参数 typedef struct tagNET_OUT_LED_GET_DISPLAY_CTRL_PARAMS { DWORD dwSize; // 用户使用该结构体时,dwSize 需赋值为该结构体大小 BOOL bDisplayEnable; // 开关屏使能 BOOL bDisplayBlack; // 屏幕黑屏使能 BOOL bDisplayLock; // 画面锁定使能 EM_LED_IMAGE_TYPE emImageType; // 输出画面类型 } NET_OUT_LED_GET_DISPLAY_CTRL_PARAMS; ///@brief 设置LED输出画面控制参数 (pInParam和pOutParam资源由用户申请和释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetLedDisplayCtrlParams(LLONG lLoginID, const NET_IN_LED_SET_DISPLAY_CTRL_PARAMS* pInParam, NET_OUT_LED_SET_DISPLAY_CTRL_PARAMS* pOutParam,int nWaitTime); ///@brief 获取LED输出画面控制参数 (pInParam和pOutParam资源由用户申请和释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLedDisplayCtrlParams(LLONG lLoginID, const NET_IN_LED_GET_DISPLAY_CTRL_PARAMS* pInParam, NET_OUT_LED_GET_DISPLAY_CTRL_PARAMS* pOutParam,int nWaitTime); /////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// 诱导屏接口//////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// #define MAX_PLAYDATES_COUNT 32 // 最大日期个数 #define MAX_SCREENTIME_COUNT 8 // 诱导屏最大开关屏时间个数 #define MAX_WINDOWS_COUNT 16 // 诱导屏最大窗口个数 #define MAX_ELEMENTS_COUNT 8 // 诱导屏窗口支持的最大元素个数 #define MAX_ELEMENTTEXT_LENGTH 512 // 文本元素最大文本长度 #define MAX_NOTE_COUNT 4 // 诱导屏窗口元素注释信息最大个数 #define MAX_PROGRAMMES_COUNT 32 // 最多支持的节目个数 ///@brief 日期类型 typedef enum tagEM_SCREEN_DATE_TYPE { EM_SCREEN_DATE_UNKNOWN, // 未知 EM_SCREEN_DATE_MONTH, // 每月 EM_SCREEN_DATE_WEEK, // 每周 EM_SCREEN_DATE_DAY, // 每日 } EM_SCREEN_DATE_TYPE; ///@brief 节目时间信息 typedef struct tagNET_PROGRAMME_TIME_INFO { DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒 } NET_PROGRAMME_TIME_INFO; ///@brief 开关屏时间信息 typedef struct tagNET_SCREEN_TIME_INFO { BOOL bEnable; // 是否启用 EM_SCREEN_DATE_TYPE emDateType; // 开关屏日期类型 UINT nDateCount; // 开关屏日期个数' UINT nPlayDates[MAX_PLAYDATES_COUNT]; // 开关屏日期 NET_PROGRAMME_TIME_INFO stuOpenTime; // 开屏时间 NET_PROGRAMME_TIME_INFO stuCloseTime; // 关屏时间 BYTE byReserved[128]; // 保留 } NET_SCREEN_TIME_INFO; ///@brief 诱导屏窗口坐标信息 typedef struct NET_GUIDESCREEN_WINDOW_RECT_INFO { char szWindowID[MAX_COMMON_STRING_64]; // 窗口ID NET_RECT stuRect; // 窗口坐标 UINT nWindowBright; // 诱导屏窗口亮度,单独配置某个子屏的亮度,填0时以整屏亮度为准 BYTE byReserved[132]; // 保留 } NET_GUIDESCREEN_WINDOW_RECT_INFO; ///@brief 显示屏开关状态 typedef enum tagEM_SCREEN_STATUS_TYPE { EM_SCREEN_STATUS_UNKNOWN, // 未知 EM_SCREEN_STATUS_ON, // 开 EM_SCREEN_STATUS_OFF, // 关 } EM_SCREEN_STATUS_TYPE; #define MAX_MONTH_COUNT 12 // 一年中的月数 ///@brief 诱导屏配置日出日落时间 typedef struct tagNET_SUN_RISE_SET_TIME { /*日出日落时间采用24小时制, 当不配置, 即都为0 的情况时采用默认时间*/ UINT nSunrise; // 日出时间, 默认上午6 时 UINT nSunset; // 日落时间, 默认下午18 时 BYTE byReserved[32]; // 保留字节 } NET_SUN_RISE_SET_TIME; ///@brief 诱导屏自动调节屏幕亮度信息 typedef struct tagNET_GUIDESCREEN_AUTO_BRIGHT { BOOL bEnable; // 是否使能自动亮度配置 UINT nLightBright; // 白天的亮度 UINT nDarkBright; // 夜间的亮度 NET_SUN_RISE_SET_TIME stuSunTime[MAX_MONTH_COUNT]; // 日出日落时间 BYTE byReserved[128]; // 保留字节 } NET_GUIDESCREEN_AUTO_BRIGHT; ///@brief 诱导屏属性配置信息 typedef struct tagNET_GUIDESCREEN_ATTRIBUTE_INFO { DWORD dwSize; char szScreenID[MAX_COMMON_STRING_64]; // 屏ID EM_SCREEN_STATUS_TYPE emStatus; // 显示屏开关状态 BOOL bIsForeverOpen; // 是否永久开屏 UINT nScreenTime; // 开关屏时间个数 NET_SCREEN_TIME_INFO stuScreenTime[MAX_SCREENTIME_COUNT]; // 开关屏时间数组 UINT nBright; // 显示屏亮度, 1-100 UINT nContrast; // 显示屏对比度, 1-100 UINT nSaturation; // 显示屏饱和度, 1-100 UINT nVolume; // 屏幕整体音量 UINT nWidth; // 宽度 UINT nHeight; // 高度 UINT nWindowsCount; // 窗口个数 NET_GUIDESCREEN_WINDOW_RECT_INFO stuWindows[MAX_WINDOWS_COUNT]; // 窗口信息 NET_GUIDESCREEN_AUTO_BRIGHT stuAutoBright; // 诱导屏自动调节屏幕亮度信息 BYTE byReserved[512]; // 保留字节 } NET_GUIDESCREEN_ATTRIBUTE_INFO; ///@brief 设置诱导屏屏幕配置信息输入参数 typedef struct tagNET_IN_SET_GUIDESCREEN_CFG { DWORD dwSize; UINT nScreenCount; // 诱导屏属性配置信息个数, 值由用户指定 NET_GUIDESCREEN_ATTRIBUTE_INFO *pstGuideScreenCfg; // 诱导屏属性配置信息, 内存由用户维护, // 大小为nScreenCount 个NET_GUIDEESCREEN_ATTRIBUTE_INFO } NET_IN_SET_GUIDESCREEN_CFG; ///@brief 设置诱导屏屏幕配置信息输出参数 typedef struct tagNET_OUT_SET_GUIDESCREEN_CFG { DWORD dwSize; } NET_OUT_SET_GUIDESCREEN_CFG; ///@brief: 设置诱导屏配置信息接口 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_SET_GUIDESCREEN_CFG* :pInParam // 接口输入参数 ///@param[out]: NET_OUT_SET_GUIDESCREEN_CFG* :pstOutPqram // 接口输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetGuideScreenCfg(LLONG lLoginID, const NET_IN_SET_GUIDESCREEN_CFG* pInParam, NET_OUT_SET_GUIDESCREEN_CFG *pstOutPqram, const int nWaitTime); ///@brief 通过诱导屏ID 获取诱导屏配置信息输入参数 typedef struct tagNET_IN_GET_GUIDESCREEN_CFG_BYID { DWORD dwSize; char szScreenID[MAX_COMMON_STRING_64]; // 屏ID } NET_IN_GET_GUIDESCREEN_CFG_BYID; ///@brief 通过诱导屏ID 获取诱导屏配置信息输出参数 typedef struct tagNET_OUT_GET_GUIDESCREEN_CFG_BYID { DWORD dwSize; NET_GUIDESCREEN_ATTRIBUTE_INFO stuGuideScreenCfg; // 诱导屏属性信息 } NET_OUT_GET_GUIDESCREEN_CFG_BYID; ///@brief: 通过诱导屏ID 获取诱导屏配置信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_GUIDESCREEN_CFG_BYID* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_GUIDESCREEN_CFG_BYID* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetOneGuideScreenCfgById( LLONG lLoginID, const NET_IN_GET_GUIDESCREEN_CFG_BYID *pInParam, NET_OUT_GET_GUIDESCREEN_CFG_BYID* pOutParam, const int nWaitTime); ///@brief 获取所有诱导屏配置信息输入参数 typedef struct tagNET_IN_GET_ALL_GUIDESCREEN_CFG { DWORD dwSize; } NET_IN_GET_ALL_GUIDESCREEN_CFG; ///@brief 获取所有诱导屏配置信息输出参数 typedef struct tagNET_OUT_GET_ALL_GUIDESCREEN_CFG { DWORD dwSize; UINT nMaxScreen; // 最大诱导屏个数, 值由用户指定 UINT nRetScreen; // 实际返回的诱导屏个数 NET_GUIDESCREEN_ATTRIBUTE_INFO *pstGuideScreenCfg; // 用于存放获取到的诱导屏属性信息, 内存由用户维护 // 大小为nMaxScreen 个NET_GUIDESCREEN_ATTRIBUTE_INFO } NET_OUT_GET_ALL_GUIDESCREEN_CFG; ///@brief: 获取所有诱导屏配置信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_ALL_GUIDESCREEN_CFG* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_ALL_GUIDESCREEN_CFG* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAllGuideScreenCfg( LLONG lLoginID, const NET_IN_GET_ALL_GUIDESCREEN_CFG *pInParam, NET_OUT_GET_ALL_GUIDESCREEN_CFG* pOutParam, const int nWaitTime); ///@brief 水平对齐类型 typedef enum tagEM_HORI_ALIGN_TYPE { EM_HORI_ALIGN_UNKNOWN, // 未知 EM_HORI_ALIGN_LEFT, // 左对齐 EM_HORI_ALIGN_CENTER, // 居中 EM_HORI_ALIGN_RIGHT, // 右对齐 } EM_HORI_ALIGN_TYPE; ///@brief 垂直对齐类型 typedef enum tagEM_VERT_ALIGN_TYPE { EM_VERT_ALIGN_UNKNOWN, // 未知 EM_VERT_ALIGN_UP, // 上对齐 EM_VERT_ALIGN_CENTER, // 居中 EM_VERT_ALIGN_DOWN, // 下对齐 } EM_VERT_ALIGN_TYPE; ///@brief 切入(切出) 风格 typedef enum tagEM_PIC_STYLE_TYPE { EM_PIC_STYLE_UNKNOWN, // 未知 EM_PIC_STYLE_DEFAULT, // 默认 EM_PIC_STYLE_UP, // 上移 EM_PIC_STYLE_DOWN, // 下移 EM_PIC_STYLE_LEFT, // 左移 EM_PIC_STYLE_RIGHT, // 右移 } EM_PIC_STYLE_TYPE; ///@brief 文本信息 typedef struct tagNET_GUIDESCREEN_TEXT_INFO { char szContent[MAX_ELEMENTTEXT_LENGTH]; // 文本内容 UINT nFontSize; // 字体大小 NET_COLOR_RGBA stuFontColor; // 字体颜色 char szFontStyle[MAX_COMMON_STRING_32]; // 字体类型 double dbLineHeight; // 行高 EM_HORI_ALIGN_TYPE emHoriAlign; // 水平对齐方向 EM_VERT_ALIGN_TYPE emVertAlign; // 垂直对齐方向 UINT nPlayTime; // 播放时间, 单位秒 UINT nPlayCount; // 播放次数 UINT nStayTime; // 停留间隔(切入切出的间隔时间)单位:s EM_PIC_STYLE_TYPE emEnterStyle; // 切入风格 EM_PIC_STYLE_TYPE emExitStyle; // 切出风格 BYTE byReserved[128]; // 保留字节 } NET_GUIDESCREEN_TEXT_INFO; ///@brief 诱导屏窗口元素注释信息 typedef struct tagNET_GUIDESCREEN_NOTE_INFO { BOOL bEnable; // 是否有效 NET_GUIDESCREEN_TEXT_INFO stuTextInfo; // 文字注释信息 NET_RECT stuRect; // 文字注释的坐标 BYTE byReserved[128]; // 保留字节 } NET_GUIDESCREEN_NOTE_INFO; ///@brief 视频元素信息 typedef struct tagNET_VIDEO_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 char szPath[MAX_COMMON_STRING_128]; // 文件地址 UINT nPlayCount; // 播放次数 UINT nNote; // 注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 注释信息 BYTE byReserved[128]; // 保留字节 } NET_VIDEO_ELEMENT_INFO; ///@brief 图片类型 typedef enum tagEM_PICTURE_TYPE { EM_PICTURE_TYPE_UNKNOWN = -1, // 未知 EM_PICTURE_TYPE_ORIGINAL, // 原始图片 EM_PICTURE_TYPE_COMPOSITE, // 合成图片 } EM_PICTURE_TYPE; ///@brief 图片元素信息 typedef struct tagNET_PICTURE_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 char szPath[MAX_COMMON_STRING_128]; // 图片文件地址 UINT nPlayTime; // 播放时间, 单位秒 UINT nPlayCount; // 播放次数 UINT nDiaphaneity; // 透明度, 0-100 UINT nStayTime; // 停留时间, 单位秒 EM_PIC_STYLE_TYPE emEnterStyle; // 切入风格 EM_PIC_STYLE_TYPE emExitStyle; // 切出风格 UINT nNote; // 注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 注释信息 EM_PICTURE_TYPE emPictureType; // 图片类型 BYTE byReserved[124]; // 保留字节 } NET_PICTURE_ELEMENT_INFO; ///@brief 诱导屏窗口文本元素信息 typedef struct tagNET_TEXT_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 NET_GUIDESCREEN_TEXT_INFO stuElementsText; // 文本元素信息 UINT nNote; // 注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 注释信息 BYTE byReserved[128]; // 保留字节 } NET_TEXT_ELEMENT_INFO; ///@brief 诱导屏窗口占位符元素信息 typedef struct tagNET_PLACEHOLDER_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 UINT nNote; // 注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 注释信息 BYTE byReserved[128]; // 保留字节 } NET_PLACEHOLDER_ELEMENT_INFO; ///@brief 抓拍类型 typedef enum tagEM_CAPTURE_TYPE { EM_CAPTURE_UNKNOWN, // 未知 EM_CAPTURE_VIDEO, // 视频 EM_CAPTURE_PICTURE, // 图片 } EM_CAPTURE_TYPE; ///@brief osd叠加信息 typedef struct tagNET_CAPTURE_OSD_INFO { BOOL bEnable; // 叠加使能 NET_COLOR_RGBA stuFontColor; // 文字颜色 NET_COLOR_RGBA stuBackGroundColor; // 背景颜色 UINT nFontSize; // 字体大小 char szContent[MAX_COMMON_STRING_512]; // OSD内容 BYTE byReserved[1024]; // 保留字节 } NET_CAPTURE_OSD_INFO; ///@brief 抓拍元素信息 typedef struct tagNET_CAPTURE_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 char szUserName[DH_USER_NAME_LEN_EX]; // 用户名 char szPassWord[DH_USER_PSW_LEN_EX]; // 密码 char szIP[DH_MAX_IPADDR_LEN_EX]; // IP地址 UINT nPort; // 端口号 UINT nChannel; // 通道号 EM_CAPTURE_TYPE emCaptureType; // 抓拍类型 UINT nPlayTime; // 播放时间, 单位秒 UINT nNote; // 注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 注释信息 NET_CAPTURE_OSD_INFO *pstOsdInfo; // OSD叠加信息, 由用户申请和释放内存,若为NULL,则不下发(获取)OSD信息 BYTE byReserved[124]; // 保留字节 } NET_CAPTURE_ELEMENT_INFO; ///@brief PDF元素信息 typedef struct tagNET_PDF_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 char szPdfPath[MAX_COMMON_STRING_128]; // PDF文件路径 UINT nPlayTime; // 播放时间, 单位: 秒 UINT nPlayCount; // 播放次数 UINT nStayTime; // 停留间隔, 单位: 秒 EM_PIC_STYLE_TYPE emEnterStyle; // 切入风格 EM_PIC_STYLE_TYPE emExitStyle; // 切出风格 UINT nTextNote; // 文字注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 文字注释信息 BYTE byReserved[1024]; // 保留字节 } NET_PDF_ELEMENT_INFO; ///@brief 音频元素信息 typedef struct tagNET_AUDIO_ELEMENT_INFO { char szName[MAX_COMMON_STRING_64]; // 素材名称 BOOL bFillerState; // 是否垫片, 如果两个素材间有时间间隙,没有素材播放,如果设置了垫片则播放垫片 char szAudioPath[MAX_COMMON_STRING_128]; // 音频文件地址 UINT nPlayCount; // 播放次数 UINT nTextNote; // 文字注释信息个数 NET_GUIDESCREEN_NOTE_INFO stuNoteInfo[MAX_NOTE_COUNT]; // 文字注释信息 BYTE byReserved[1024]; // 保留字节 } NET_AUDIO_ELEMENT_INFO; ///@brief 诱导屏窗口元素类型 typedef enum tagEM_ELEMENTS_TYPE { EM_ELEMENTS_UNKNOWN, // 未知 EM_ELEMENTS_VIDEO, // 视频元素, 对应NET_VIDEO_ELEMENT_INFO EM_ELEMENTS_PICTURE, // 图片元素, 对应NET_PICTURE_ELEMENT_INFO EM_ELEMENTS_TEXT, // 文本元素, 对应NET_TEXT_ELEMENT_INFO EM_ELEMENTS_PLACEHOLDER, // 占位符元素, 对应NET_PLACEHOLDER_ELEMENT_INFO EM_ELEMENTS_CAPTURE, // 抓拍元素, 对应NET_CAPTURE_ELEMENT_INFO EM_ELEMENTS_PDF, // PDF文档元素, 对应NET_PDF_ELEMENT_INFO EM_ELEMENTS_AUDIO, // 音频元素, 对应NET_AUDIO_ELEMENT_INFO } EM_ELEMENTS_TYPE; ///@brief 窗口轮训周期类型 typedef enum tagEM_TOURPERIOD_TYPE { EM_TOURPERIOD_UNKNOWN, // 未知 EM_TOURPERIOD_PROGRAMME, // 节目周期 EM_TOURPERIOD_PLAN, // 计划周期 EM_TOURPERIOD_CUSTOM, // 自定义周期 } EM_TOURPERIOD_TYPE; ///@brief 窗口元素通有信息 typedef struct tagNET_ELEMENT_COMMON_INFO { EM_ELEMENTS_TYPE emElementsType; // 窗口元素类型 BYTE byReserved[128]; // 保留字节 } NET_ELEMENT_COMMON_INFO; ///@brief 诱导屏窗口信息 typedef struct tagNET_GUIDESCREEN_WINDOW_INFO { char szWindowID[MAX_COMMON_STRING_64]; // 窗口ID int nVolume; // 窗口音量,相对整屏音量的百分比 NET_COLOR_RGBA stuColor; // 窗口背景颜色 UINT nDiaphaneity; // 窗口背景透明度0-100 EM_TOURPERIOD_TYPE emTourPeriodType; // 窗口轮训类型 UINT nTourPeriodTime; // 自定义轮训时间,单位秒, 轮训类型为自定义轮训时有效 BOOL bAutoPlay; // 预览自动播放,Video元素有效 BOOL bLoopPlay; // 预览循环播放,Video元素有效 UINT nElementsCount; // 诱导屏窗口元素个数 char* pstElementsBuf; // 诱导屏窗口元素信息缓存区, 根据类型对应不同的结构体 // 填充多个元素信息, 每个元素信息内容为NET_ELEMENT_COMMON_INFO + 元素类型对应的结构体 UINT nBufLen; // 诱导屏窗口元素信息缓存区大小 BYTE byReserved[128]; // 保留字节 } NET_GUIDESCREEN_WINDOW_INFO; ///@brief 诱导屏普通节目信息 typedef struct tagNET_ORDINARY_INFO { BOOL bTempletState; // 节目是否保存为模板 char szDescription[MAX_COMMON_STRING_128]; // 节目描述信息 UINT nWhnCount; // 诱导屏窗口个数 NET_GUIDESCREEN_WINDOW_INFO stuWindowsInfo[MAX_WINDOWS_COUNT]; // 诱导屏窗口信息 BYTE byReserved[128]; // 保留字节 } NET_ORDINARY_INFO; ///@brief 诱导屏节目配置信息 typedef struct tagNET_PROGRAMME_INFO { char szProgrammeName[MAX_COMMON_STRING_64]; // 节目名称 char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID, 添加节目的时候无需填写, 由设备生成 BOOL bEnable; // 节目是否启用 NET_ORDINARY_INFO stuOrdinaryInfo; // 普通节目信息 BYTE byReserved[512]; // 保留字节 } NET_PROGRAMME_INFO; ///@brief 通过节目ID 获取节目信息输入参数 typedef struct tagNET_IN_GET_PROGRAMME_BYID { DWORD dwSize; char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID } NET_IN_GET_PROGRAMME_BYID; ///@brief 通过节目ID 获取节目信息输出参数 typedef struct tagNET_OUT_GET_PROGRAMME_BYID { DWORD dwSize; NET_PROGRAMME_INFO stuProgrammeInfo; // 节目配置信息 } NET_OUT_GET_PROGRAMME_BYID; ///@brief: 通过节目ID 获取节目信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_PROGRAMME_BYID* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_PROGRAMME_BYID* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetOneProgrammeById(LLONG lLoginID, const NET_IN_GET_PROGRAMME_BYID *pInParam, NET_OUT_GET_PROGRAMME_BYID *pOutParam, const int nWaitTime); ///@brief 获取所有节目信息输入参数 typedef struct tagNET_IN_GET_ALL_PROGRAMMES { DWORD dwSize; } NET_IN_GET_ALL_PROGRAMMES; ///@brief 获取所有节目信息输出参数 typedef struct tagNET_OUT_GET_ALL_PROGRAMMES { DWORD dwSize; UINT nMaxCnt; // pstProgrammeInfo最大NET_PROGRAMME_INFO 个数 UINT nRetCnt; // pstProgrammeInfo实际返回的 NET_PROGRAMME_INFO 个数 NET_PROGRAMME_INFO *pstProgrammeInfo; // 节目配置信息, 内存由用户维护 } NET_OUT_GET_ALL_PROGRAMMES; ///@brief: 获取所有节目信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_ALL_PROGRAMMES* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_ALL_PROGRAMMES* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAllProgrammes( LLONG lLoginID, const NET_IN_GET_ALL_PROGRAMMES* pInParam, NET_OUT_GET_ALL_PROGRAMMES* pOutParam, const int nWaitTime); ///@brief 简要节目信息类型 typedef enum tagEM_BRIEFLYPROGRAM_TYPE { EM_BRIEFLYPROGRAM_UNKNOWN, // 未知 EM_BRIEFLYPROGRAM_BAR, // 广告节目 EM_BRIEFLYPROGRAM_ORDINARY, // 普通节目 }EM_BRIEFLYPROGRAM_TYPE; ///@brief 节目简要信息 typedef struct tagNET_BRIEFLY_PROGRAMME_INFO { char szProgrammeName[MAX_COMMON_STRING_64]; // 节目名称 char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID EM_BRIEFLYPROGRAM_TYPE emProgrammeType; // 简要节目信息类型 BOOL bEnable; // 节目是否启用 BOOL bTempletState; // 节目是否保存为模板 BYTE byReserved[512]; // 保留字节 } NET_BRIEFLY_PROGRAMME_INFO; ///@brief 获取所有节目的简要信息输入参数 typedef struct tagNET_IN_GET_ALL_BRIEFLYPROGRAMMES { DWORD dwSize; } NET_IN_GET_ALL_BRIEFLYPROGRAMMES; ///@brief 获取所有节目的简要信息输出参数 typedef struct tagNET_OUT_GET_ALL_BRIEFLYPROGRAMMES { DWORD dwSize; UINT nRetCnt; // 实际返回的个数 NET_BRIEFLY_PROGRAMME_INFO stuBriProgrammes[MAX_PROGRAMMES_COUNT]; // 节目简要信息 } NET_OUT_GET_ALL_BRIEFLYPROGRAMMES; ///@brief: 获取所有节目的简要信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_ALL_BRIEFLYPROGRAMMES* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_ALL_BRIEFLYPROGRAMMES* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAllBrieflyProgrammes( LLONG lLoginID, const NET_IN_GET_ALL_BRIEFLYPROGRAMMES* pInParam, NET_OUT_GET_ALL_BRIEFLYPROGRAMMES* pOutParam, const int nWaitTime); ///@brief 添加节目信息接口输入参数 typedef struct tagNET_IN_ADD_ONE_PROGRAMME { DWORD dwSize; NET_PROGRAMME_INFO stuProgrammeInfo; // 节目信息 } NET_IN_ADD_ONE_PROGRAMME; ///@brief 添加节目信息接口输出参数 typedef struct tagNET_OUT_ADD_ONE_PROGRAMME { DWORD dwSize; char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID } NET_OUT_ADD_ONE_PROGRAMME; ///@brief: 添加一个节目信息到诱导屏 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_ADD_ONE_PROGRAMME* :pInParam // 输入参数 ///@param[out]: NET_OUT_ADD_ONE_PROGRAMME* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOneProgramme(LLONG lLoginID, const NET_IN_ADD_ONE_PROGRAMME* pInParam, NET_OUT_ADD_ONE_PROGRAMME *pOutParam, const int nWaitTime); ///@brief 修改节目信息接口输入参数 typedef struct tagNET_IN_MODIFY_ONE_PROGRAMME { DWORD dwSize; NET_PROGRAMME_INFO stuProgrammeInfo; // 节目信息 } NET_IN_MODIFY_ONE_PROGRAMME; ///@brief 修改节目信息接口输出参数 typedef struct tagNET_OUT_MODIFY_ONE_PROGRAMME { DWORD dwSize; } NET_OUT_MODIFY_ONE_PROGRAMME; ///@brief: 通过节目ID 修改节目 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_MODIFY_ONE_PROGRAMME* :pInParam // 输入参数 ///@param[out]: NET_OUT_MODIFY_ONE_PROGRAMME* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyOneProgrammeByID(LLONG lLoginID, const NET_IN_MODIFY_ONE_PROGRAMME* pInParam, NET_OUT_MODIFY_ONE_PROGRAMME* pOutParam, const int nWaitTime); ///@brief 批量删除节目信息接口输入参数 typedef struct tagNET_IN_DEL_PROGRAMMES { DWORD dwSize; UINT nProgrammeID; // 节目ID个数 char szProGrammeIdList[MAX_PROGRAMMES_COUNT][MAX_COMMON_STRING_64]; // 需要删除的节目ID列表, 第一个值填"all" 表示删除所有 } NET_IN_DEL_PROGRAMMES; ///@brief 批量删除节目信息接口输出参数 typedef struct tagNET_OUT_DEL_PROGRAMMES { DWORD dwSize; } NET_OUT_DEL_PROGRAMMES; ///@brief: 批量删除节目信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_DEL_PROGRAMMES* :pInParam // 输入参数 ///@param[out]: NET_OUT_DEL_PROGRAMMES* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelMultiProgrammesById( LLONG lLoginID, const NET_IN_DEL_PROGRAMMES* pInParam, NET_OUT_DEL_PROGRAMMES *pOutParam, const int nWaitTime); ///@brief 即时节目计划配置信息 typedef struct tagNET_IMMEDIATELY_PLAN_INFO { char szPlanName[MAX_COMMON_STRING_64]; // 节目计划名称 char szPlanID[MAX_COMMON_STRING_64]; // 节目计划ID, 添加计划时无需填写, 由设备生成 char szSplitScreenID[MAX_COMMON_STRING_64]; // 分屏ID BOOL bEnable; // 计划是否启用 UINT nPlayTime; // 播放时长, 单位 : 分钟 char szProgrammeName[MAX_COMMON_STRING_64]; // 即时发布的节目名称 char szProgrammeID[MAX_COMMON_STRING_64]; // 即时发布的节目ID char szTemplateType[MAX_COMMON_STRING_64]; // 模板类型, 该协议为解决福州行人闯红灯项目,为定制协议 BYTE byReserved[448]; // 保留字节 } NET_IMMEDIATELY_PLAN_INFO; ///@brief 节目日期格式 typedef struct tagNET_PROGRAMME_DATA { DWORD dwYear; // 年 DWORD dwMonth; // 月 DWORD dwDay; // 日 } NET_PROGRAMME_DATA; ///@brief 审核状态 typedef enum tagEM_REVIES_STATE { EM_REVIES_UNKNOWN, // 未知 EM_REVIES_PASS, // 通过 EM_REVIES_NOTPASS, // 不通过 } EM_REVIES_STATE; ///@brief 节目计划中的节目信息 typedef struct tagNET_PROGRAMME_OF_PLAN { char szProgrammeName[MAX_COMMON_STRING_64]; // 节目名称 char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID BOOL bIsBgProgramme; // 是否背景节目 NET_PROGRAMME_TIME_INFO stuSatrtTime; // 节目开始时间 NET_PROGRAMME_TIME_INFO stuEndTime; // 节目结束时间 BYTE byReserved[128]; // 保留字节 } NET_PROGRAMME_OF_PLAN; ///@brief 定时计划日期类型 typedef enum tagEM_TIMERPLAN_DATE_TYPE { EM_TIMERPLAN_DATE_UNKNOWN, // 未知 EM_TIMERPLAN_DATE_MONTH, // 每月 EM_TIMERPLAN_DATE_WEEK, // 每周 EM_TIMERPLAN_DATE_DAY, // 每日 EM_TIMERPLAN_DATE_CUSTOM, // 自定义 } EM_TIMERPLAN_DATE_TYPE; ///@brief 定时节目计划配置信息 typedef struct tagNET_TIMER_PLAN_INFO { char szPlanName[MAX_COMMON_STRING_64]; // 节目计划名称 char szPlanID[MAX_COMMON_STRING_64]; // 节目计划ID char szSplitScreenID[MAX_COMMON_STRING_64]; // 分屏ID EM_TIMERPLAN_DATE_TYPE emDataType; // 节目计划日期类型 UINT nDataCount; // 节目计划日期个数 UINT nPlayDates[MAX_PLAYDATES_COUNT]; // 节目播放日期列表 NET_PROGRAMME_DATA stuSatrtDate; // 节目开始日期 NET_PROGRAMME_DATA stuEndDate; // 节目结束日期 EM_REVIES_STATE emReviewState; // 审核状态 char szReviewOpinion[MAX_COMMON_STRING_64]; // 审核意见 BOOL bOverdue; // 计划是否过期 UINT nProgrammes; // 节目个数 NET_PROGRAMME_OF_PLAN stuProgrammes[MAX_PROGRAMMES_COUNT]; // 节目组信息 BYTE byReserved[512]; // 保留字节 } NET_TIMER_PLAN_INFO; ///@brief 获取所有节目计划输入参数 typedef struct tagNET_IN_GET_ALL_PROGRAMMEPLANS { DWORD dwSize; } NET_IN_GET_ALL_PROGRAMMEPLANS; ///@brief 获取所有节目计划输出参数 typedef struct tagNET_OUT_GET_ALL_PROGRAMMEPLANS { DWORD dwSize; UINT nMaxPlanCnt; // 即时节目和定时节目计划最大个数, 由用户指定 UINT nRetImmCnt; // 实际返回的即时节目计划个数 NET_IMMEDIATELY_PLAN_INFO* pstImmePlan; // 即时节目计划信息 UINT nRetTimerCnt; // 实际返回的定时节目计划个数 NET_TIMER_PLAN_INFO* pstTimerPlan; // 定时节目计划信息 } NET_OUT_GET_ALL_PROGRAMMEPLANS; ///@brief: 获取所有节目计划信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_ALL_PROGRAMMEPLANS* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_ALL_PROGRAMMEPLANS* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAllProgrammePlans( LLONG lLoginID, const NET_IN_GET_ALL_PROGRAMMEPLANS *pInParam, NET_OUT_GET_ALL_PROGRAMMEPLANS *pOutParam, const int nWaitTime); ///@brief 节目计划类型 typedef enum tagEM_PROGRAMMEPLAN_TYPE { EM_PROGRAMMEPLAN_UNKNOWN, // 未知 EM_PROGRAMMEPLAN_IMME, // 即时计划 EM_PROGRAMMEPLAN_TIMER, // 定时计划 } EM_PROGRAMMEPLAN_TYPE; ///@brief 通过节目计划ID 获取节目计划输入参数 typedef struct tagNET_IN_GET_PROGRAMMEPLAN_BYID { DWORD dwSize; char szPlanID[MAX_COMMON_STRING_64]; // 节目计划ID } NET_IN_GET_PROGRAMMEPLAN_BYID; ///@brief 通过节目计划ID 获取节目计划输出参数 typedef struct tagNET_OUT_GET_PROGRAMMEPLAN_BYID { DWORD dwSize; EM_PROGRAMMEPLAN_TYPE emPlanType; // 节目计划类型 NET_IMMEDIATELY_PLAN_INFO stuImmePlan; // 即时节目计划信息, emPlanType 为EM_PROGRAMMEPLAN_IMME时有效 NET_TIMER_PLAN_INFO stuTimerPlan; // 定时节目计划信息, emPlanType 为EM_PROGRAMMEPLAN_TIMER时有效 } NET_OUT_GET_PROGRAMMEPLAN_BYID; ///@brief: 通过节目计划ID 获取节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_GET_PROGRAMMEPLAN_BYID* :pInParam // 输入参数 ///@param[out]: NET_OUT_GET_PROGRAMMEPLAN_BYID* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetOneProgrammePlanByID( LLONG lLoginID, NET_IN_GET_PROGRAMMEPLAN_BYID *pInParam, NET_OUT_GET_PROGRAMMEPLAN_BYID* pOutParam, const int nWaitTime); ///@brief 增加即时节目计划输入参数 typedef struct tagNET_IN_ADD_IMME_PROGRAMMEPLAN { DWORD dwSize; NET_IMMEDIATELY_PLAN_INFO stuImmePlan; // 即时节目计划信息 } NET_IN_ADD_IMME_PROGRAMMEPLAN; ///@brief 增加定时节目计划输入参数 typedef struct tagNET_IN_ADD_TIMER_PROGRAMMEPLAN { DWORD dwSize; NET_TIMER_PLAN_INFO stuTimerPlan; // 定时节目计划信息 } NET_IN_ADD_TIMER_PROGRAMMEPLAN; ///@brief 增加节目计划输出参数 typedef struct tagNET_OUT_ADD_PROGRAMMEPLAN { DWORD dwSize; char szPlanID[MAX_COMMON_STRING_64]; // 节目计划ID } NET_OUT_ADD_PROGRAMMEPLAN; ///@brief: 增加一个即时节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_ADD_IMME_PROGRAMMEPLAN* :pInParam // 输入参数 ///@param[out]: NET_OUT_ADD_PROGRAMMEPLAN* :pstOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOneImmediProgrammePlan( LLONG lLoginID, const NET_IN_ADD_IMME_PROGRAMMEPLAN* pInParam, NET_OUT_ADD_PROGRAMMEPLAN* pOutParam, const int nWaitTime); ///@brief: 增加一个定时节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_ADD_TIMER_PROGRAMMEPLAN* :pInParam // 输入参数 ///@param[out]: NET_OUT_ADD_PROGRAMMEPLAN* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOneTimerProgrammePlan( LLONG lLoginID, const NET_IN_ADD_TIMER_PROGRAMMEPLAN* pInParam, NET_OUT_ADD_PROGRAMMEPLAN* pOutParam, const int nWaitTime); ///@brief 修改即时节目计划输入参数 typedef struct tagNET_IN_MODIFY_IMME_PROGRAMMEPLAN { DWORD dwSize; NET_IMMEDIATELY_PLAN_INFO stuImmePlan; // 即时节目计划信息 } NET_IN_MODIFY_IMME_PROGRAMMEPLAN; ///@brief 修改即时节目计划输出参数 typedef struct tagNET_OUT_MODIFY_IMME_PROGRAMMEPLAN { DWORD dwSize; } NET_OUT_MODIFY_IMME_PROGRAMMEPLAN; ///@brief: 修改一个即时节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_MODIFY_IMME_PROGRAMMEPLAN* :pInParam // 输入参数 ///@param[out]: NET_OUT_MODIFY_IMME_PROGRAMMEPLAN* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyOneImmediProgrammePlan( LLONG lLoginID, const NET_IN_MODIFY_IMME_PROGRAMMEPLAN* pInParam, NET_OUT_MODIFY_IMME_PROGRAMMEPLAN* pOutParam, const int nWaitTime); ///@brief 修改定时节目计划输入参数 typedef struct tagNET_IN_MODIFY_TIMER_PROGRAMMEPLAN { DWORD dwSize; NET_TIMER_PLAN_INFO stuTimerPlan; // 定时节目计划信息 } NET_IN_MODIFY_TIMER_PROGRAMMEPLAN; ///@brief 修改定时节目计划输出参数 typedef struct tagNET_OUT_MODIFY_TIMER_PROGRAMMEPLAN { DWORD dwSize; } NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN; ///@brief: 修改一个定时节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_MODIFY_TIMER_PROGRAMMEPLAN* :pInParam // 输入参数 ///@param[out]: NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyOneTimerProgrammePlan( LLONG lLoginID, const NET_IN_MODIFY_TIMER_PROGRAMMEPLAN* pInParam, NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN* pOutParam, const int nWaitTime); ///@brief 删除多个节目计划输入参数 typedef struct tagNET_IN_DEL_PROGRAMMEPLANS { DWORD dwSize; UINT nPlanIDNum; // 节目计划ID个数 char szPlanID[MAX_PROGRAMMES_COUNT][MAX_COMMON_STRING_64]; // 节目计划ID, 第一个值填"all" 表示删除所有 } NET_IN_DEL_PROGRAMMEPLANS; ///@brief 删除多个节目计划输出参数 typedef struct tagNET_OUT_DEL_PROGRAMMEPLANS { DWORD dwSize; } NET_OUT_DEL_PROGRAMMEPLANS; ///@brief: 删除多个节目计划 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_DEL_PROGRAMMEPLANS* :pInParam // 输入参数 ///@param[out]: NET_OUT_DEL_PROGRAMMEPLANS* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelMultiProgrammePlans( LLONG lLoginID, const NET_IN_DEL_PROGRAMMEPLANS* pInParam, NET_OUT_DEL_PROGRAMMEPLANS* pOutParam, const int nWaitTime); #define MAX_GD_COUNT 170 ///@brief 光带颜色类型 typedef enum tagEM_GD_COLOR_TYPE { EM_GD_COLOR_RED, // 红色 EM_GD_COLOR_GREEN, // 绿色 EM_GD_COLOR_YELLOW, // 黄色 } EM_GD_COLOR_TYPE; ///@brief 设置光带状态信息输入参数 typedef struct tagNET_IN_SET_GD_STATUS { DWORD dwSize; char szScreenID[MAX_COMMON_STRING_64]; // 分屏ID, 即窗口ID UINT nGDNum; // 光带总数 EM_GD_COLOR_TYPE emStatus[MAX_GD_COUNT]; // 光带信息 } NET_IN_SET_GD_STATUS; ///@brief 设置光带状态信息输出参数 typedef struct tagNET_OUT_SET_GD_STATUS { DWORD dwSize; } NET_OUT_SET_GD_STATUS; ///@brief: 设置光带状态信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_SET_GD_STATUS* :pInParam // 输入参数 ///@param[in]: NET_OUT_SET_GD_STATUS* :pOutParam // 输出参数 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: BOOL CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetGuideScreenGDStatus( LLONG lLoginID, const NET_IN_SET_GD_STATUS* pInParam, NET_OUT_SET_GD_STATUS* pOutParam, const int nWaitTime); ////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// 播放盒接口(节目计划相关接口与诱导屏接口下的节目计划相关接口一致)////////////////// ////////////// 获取所有节目简要信息与批量删除节目信息 同上方交通诱导屏中对应接口///////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// ///@brief LOGO节目信息 typedef struct tagNET_PROGRAM_LOGO_INFO { char szLogoPath[MAX_COMMON_STRING_128]; // Logo路径 NET_RECT stuBackgroundRect; // Logo位置 UINT nDiaphaneity; // 透明度, 0-100 BYTE byReserved[128]; // 保留字节 } NET_PROGRAM_LOGO_INFO; ///@brief 广告条节目信息 typedef struct tagNET_PROGRAM_BAR_INFO { char szContent[MAX_COMMON_STRING_512]; // 广告内容 NET_COLOR_RGBA stuFontColor; // 字体颜色 UINT nFontSize; // 字体大小 char szFontStyle[MAX_COMMON_STRING_32]; // 字体类型 UINT nPlaySpeed; // 播放速度 NET_RECT stuBackgroundRect; // 广告条位置 NET_COLOR_RGBA stuBackColor; // 广告条背景颜色 UINT nDiaphaneity; // 透明度, 0-100 BYTE byReserved[128]; // 保留字节 } NET_PROGRAM_BAR_INFO; ///@brief 播放盒上窗口信息 typedef struct tagNET_PLAYBOX_WINDOWS_INFO { NET_RECT stuRect; // 窗口位置 UINT nZorder; // 窗口Z轴序 int nVolume; // 窗口音量,相对整屏音量的百分比 NET_COLOR_RGBA stuBackColor; // 窗口背景颜色 UINT nDiaphaneity; // 窗口背景透明度0-100 EM_TOURPERIOD_TYPE emTourPeriodType; // 窗口轮训类型 UINT nTourPeriodTime; // 自定义轮训时间,单位秒, 轮训类型为自定义轮训时有效 BOOL bAutoPlay; // 预览自动播放,Video元素有效 BOOL bLoopPlay; // 预览循环播放,Video元素有效 UINT nElementsCount; // 播放盒窗口元素个数 char* pstElementsBuf; // 播放盒窗口元素信息缓存区, 根据类型对应不同的结构体 // 填充多个元素信息, 每个元素信息内容为NET_ELEMENT_COMMON_INFO + 元素类型对应的结构体 UINT nBufLen; // 诱导屏窗口元素信息缓存区大小 BYTE byReserved[128]; // 保留字节 } NET_PLAYBOX_WINDOWS_INFO; ///@brief 普通广告节目信息 typedef struct tagNET_PROGRAM_ORDINARY_INFO { BOOL bTempletState; // 节目是否保存为模板 char szDescription[MAX_COMMON_STRING_128]; // 节目描述信息 UINT nWidth; // 画布宽度 UINT nHeight; // 画布高度 int nWinCount; // 窗口数量 NET_PLAYBOX_WINDOWS_INFO stuWindowsInfo[MAX_WINDOWS_COUNT]; // 窗口信息 BYTE byReserved[128]; // 保留字节 } NET_PROGRAM_ORDINARY_INFO; ///@brief 播放盒节目类型 typedef enum tagEM_PLAYBOXPROGRAM_TYPE { EM_PROGRAM_ON_PLAYBOX_LOGO, // LOGO, 对应结构体 NET_PROGRAM_LOGO_INFO EM_PROGRAM_ON_PLAYBOX_BAR, // 广告条, 对应结构体 NET_PROGRAM_BAR_INFO EM_PROGRAM_ON_PLAYBOX_ORDINARY, // 普通节目, 对应结构体 NET_PROGRAM_ORDINARY_INFO }EM_PLAYBOXPROGRAM_TYPE; ///@brief 播放盒节目信息 typedef struct tagNET_PROGRAM_ON_PLAYBOX { char szProgrammeName[MAX_COMMON_STRING_64]; // 节目名称 char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID, 添加节目时不需要指定 BOOL bEnable; // 节目是否启用 EM_PLAYBOXPROGRAM_TYPE emProgramType; // 节目类型 NET_PROGRAM_LOGO_INFO stuLogoInfo; // LOGO节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_LOGO时有效 NET_PROGRAM_BAR_INFO stuBarInfo; // 广告条节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_BAR时有效 NET_PROGRAM_ORDINARY_INFO stuOrdinaryInfo; // 普通节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_ORDINARY时有效 BYTE byReserved[512]; // 保留字节 } NET_PROGRAM_ON_PLAYBOX; ///@brief 获取播放盒上全部节目信息接口输入参数 typedef struct tagNET_IN_GET_ALL_PLAYBOX_PROGRAM { DWORD dwSize; } NET_IN_GET_ALL_PLAYBOX_PROGRAM; ///@brief 获取播放盒上全部节目信息接口输出参数 typedef struct tagNET_OUT_GET_ALL_PLAYBOX_PROGRAM { DWORD dwSize; UINT nMaxProgramCount; // 节目信息最大个数,由用户指定 UINT nRetProgramCount; // 实际返回的节目信息个数 NET_PROGRAM_ON_PLAYBOX *pstProgramInfo; // 播放盒上的节目信息, 内存资源由用户维护 } NET_OUT_GET_ALL_PLAYBOX_PROGRAM; ///@brief 通过programme ID 获取播放盒上对应的节目信息输入参数 typedef struct tagNET_IN_GET_PLAYBOX_PROGRAM_BYID { DWORD dwSize; char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID } NET_IN_GET_PLAYBOX_PROGRAM_BYID; ///@brief 通过programme ID 获取播放盒上对应的节目信息输出参数 typedef struct tagNET_OUT_GET_PLAYBOX_PROGRAM_BYID { DWORD dwSize; NET_PROGRAM_ON_PLAYBOX stuPlayBoxProgram; // 播放盒节目信息 } NET_OUT_GET_PLAYBOX_PROGRAM_BYID; ///@brief 在播放盒上添加一个节目信息输入参数 typedef struct tagNET_IN_ADD_ONE_PLAYBOX_PRAGROM { DWORD dwSize; NET_PROGRAM_ON_PLAYBOX stuPlayBoxProgram; // 播放盒节目信息 } NET_IN_ADD_ONE_PLAYBOX_PRAGROM; ///@brief 在播放盒上添加一个节目信息输出参数 typedef struct tagNET_OUT_ADD_ONE_PLAYBOX_PRAGROM { DWORD dwSize; char szProgrammeID[MAX_COMMON_STRING_64]; // 节目ID } NET_OUT_ADD_ONE_PLAYBOX_PRAGROM; ///@brief 在播放盒上修改指定ID的节目信息输入参数 typedef struct tagNET_IN_MODIFY_PLAYBOX_PROGRAM_BYID { DWORD dwSize; NET_PROGRAM_ON_PLAYBOX stuPlayBoxProgram; // 播放盒节目信息 } NET_IN_MODIFY_PLAYBOX_PROGRAM_BYID; ///@brief 在播放盒上修改指定ID的节目信息输出参数 typedef struct tagNET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID { DWORD dwSize; } NET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID; ///@brief 获取播放盒上全部节目信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAllProgramOnPlayBox( LLONG lLoginID, const NET_IN_GET_ALL_PLAYBOX_PROGRAM* pInParam, NET_OUT_GET_ALL_PLAYBOX_PROGRAM* pOutParam, const int nWaitTime); ///@brief 通过programme ID 获取播放盒上对应的节目信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetOneProgramByIdOnPlayBox( LLONG lLoginID, const NET_IN_GET_PLAYBOX_PROGRAM_BYID* pInParam, NET_OUT_GET_PLAYBOX_PROGRAM_BYID* pOutParam, const int nWaitTime); ///@brief 在播放盒上添加一个节目 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOneProgramToPlayBox( LLONG lLoginID, const NET_IN_ADD_ONE_PLAYBOX_PRAGROM* pInParam, NET_OUT_ADD_ONE_PLAYBOX_PRAGROM* pOutParam, const int nWaitTime); ///@brief 在播放盒上修改指定ID的节目信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyProgramOnPlayBoxById( LLONG lLoginID, const NET_IN_MODIFY_PLAYBOX_PROGRAM_BYID* pInParam, NET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID* pOutParam, const int nWaitTime); ///////////////////////////// 组织目录管理 ///////////////////////////////////////// ///@brief 组织目录管理-添加节点,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OrganizationAddNodes(LLONG lLoginID, const DH_IN_ORGANIZATION_ADD_NODES* pInParam, DH_OUT_ORGANIZATION_ADD_NODES* pOutParam, int nWaitTime = 1000); ///@brief 组织目录管理-删除节点,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OrganizationDeleteNodes(LLONG lLoginID, const DH_IN_ORGANIZATION_DELETE_NODES* pInParam, DH_OUT_ORGANIZATION_DELETE_NODES* pOutParam, int nWaitTime = 1000); ///@brief 组织目录管理-获取节点信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OrganizationGetNodes(LLONG lLoginID, const DH_IN_ORGANIZATION_GET_NODES* pInParam, DH_OUT_ORGANIZATION_GET_NODES* pOutParam, int nWaitTime = 1000); ///@brief 组织目录管理-设置节点,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OrganizationSetNode(LLONG lLoginID, const DH_IN_ORGANIZATION_SET_NODE* pInParam, DH_OUT_ORGANIZATION_SET_NODE* pOutParam, int nWaitTime = 1000); //////////////////////////// 网络抓包 ///////////////////////////////// ///@brief 开始抓包,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSniffer(LLONG lLoginID, const DH_IN_START_SNIFFER* pInParam, DH_OUT_START_SNIFFER* pOutParam, int nWaitTime = 1000); ///@brief 停止抓包 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSniffer(LLONG lLoginID, LLONG lSnifferID); ///@brief 获取抓包状态,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSnifferInfo(LLONG lLoginID, const DH_IN_GET_SNIFFER_INFO* pInParam, DH_OUT_GET_SNIFFER_INFO* pOutParam, int nWaitTime = 1000); ///@brief 订阅抓包数据,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSniffer(LLONG lLoginID, const NET_IN_ATTACH_SNIFFER* pInParam, NET_OUT_ATTACH_SNIFFER* pOutParam, int nWaitTime); ///@brief 退订抓包数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSniffer(LLONG lAttachHandle); ///@brief 获取抓包能力,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSnifferCaps(LLONG lLoginID, const NET_IN_GET_SNIFFER_CAP* pInParam, NET_OUT_GET_SNIFFER_CAP* pOutParam, int nWaitTime); //////////////////////////// 播放库相关接口 ///////////////////////////////// ///@brief 抓取JPEG图像 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPicJPEG(LLONG lPlayHandle, BYTE* pJpegBuf, DWORD dwBufSize,DWORD *pJpegSize,int quality); //////////////////////////// 远程文件管理 ///////////////////////////////// ///@brief 新建文件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CreateRemoteFile(LLONG lLoginID, const DH_IN_CREATE_REMOTE_FILE* pInParam, DH_OUT_CREATE_REMOTE_FILE* pOutParam, int nWaitTime = 1000); ///@brief 删除文件或目录,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveRemoteFiles(LLONG lLoginID, const DH_IN_REMOVE_REMOTE_FILES* pInParam, DH_OUT_REMOVE_REMOTE_FILES* pOutParam, int nWaitTime = 1000); ///@brief 重命名,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RenameRemoteFile(LLONG lLoginID, const DH_IN_RENAME_REMOTE_FILE* pInParam, DH_OUT_RENAME_REMOTE_FILE* pOutParam, int nWaitTime = 1000); ///@brief 显示目录中文件和子目录,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ListRemoteFile(LLONG lLoginID, const DH_IN_LIST_REMOTE_FILE* pInParam, DH_OUT_LIST_REMOTE_FILE* pOutParam, int nWaitTime = 1000); ///@brief 同步文件上传, 只适用于小文件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UploadRemoteFile(LLONG lLoginID, const DH_IN_UPLOAD_REMOTE_FILE* pInParam, DH_OUT_UPLOAD_REMOTE_FILE* pOutParam, int nWaitTime = 1000); ///@brief 开始异步文件上传调函数原形,lUploadFileHandle 为 CLIENT_StartUploadRemoteFile 接口返回值 // nTotalSize = 0, nSendSize = -1 文件操作错误 // nTotalSize = 0, nSendSize = -2 发送文件失败 typedef void (CALLBACK *fUploadFileCallBack) (LLONG lUploadFileHandle, int nTotalSize, int nSendSize, LDWORD dwUser); ///@brief 开始异步文件上传,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartUploadRemoteFile(LLONG lLoginID, const DH_IN_UPLOAD_REMOTE_FILE* pInParam, DH_OUT_UPLOAD_REMOTE_FILE* pOutParam, fUploadFileCallBack cbUploadFile, LDWORD dwUser); ///@brief 停止异步文件上传 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopUploadRemoteFile(LLONG lUploadFileID); ///@brief 远程投放, 在设备端播放音频文件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PlayAudioFile(LLONG lLoginID, const NET_IN_PLAY_AUDIO_FILE* pInParam, NET_OUT_PLAY_AUDIO_FILE* pOutParam, int nWaitTime = 1000); ///@brief 文件下载, 只适用于小文件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DownloadRemoteFile(LLONG lLoginID, const DH_IN_DOWNLOAD_REMOTE_FILE* pInParam, DH_OUT_DOWNLOAD_REMOTE_FILE* pOutParam, int nWaitTime = 1000); ///@brief 设置指定文件的属性,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetFileAttribute(LLONG lLoginID, const DH_IN_SET_FILEATTRIBUTE* pInParam, DH_OUT_SET_FILEATTRIBUTE* pOutParam, int nWaitTime = 1000); ///@brief 文件下载,多次触发分包下载大文件,每次请求指定文件名和下载偏移,pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DownloadPieceFile(LLONG lLoginID, const NET_IN_DOWNLOAD_PIECE_FILE* pInParam, NET_OUT_DOWNLOAD_PIECE_FILE* pOutParam,int nWaitTime = 1000); ///@brief 获取媒体文件信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMediaFileInfo(LLONG lLoginID, const NET_IN_GET_NEDIA_FILE_INFO* pInParam, NET_OUT_GET_NEDIA_FILE_INFO* pOutParam, const int nWaitTime); ///@brief 开始分页查询指定目录下的所有子元素信息(含文件/子目录),pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartListMediaFileInfo(LLONG lLoginID, const NET_IN_START_LIST_FILE_INFO* pInParam, NET_OUT_START_LIST_FILE_INFO* pOutParam, const int nWaitTime); ///@brief 分页查询指定目录下的所有子元素信息(含文件/子目录),pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoListMediaFileInfo(LLONG lFindHandle, const NET_IN_DO_LIST_FILE_INFO* pInParam, NET_OUT_DO_LIST_FILE_INFO* pOutParam, const int nWaitTime); ///@brief 停止分页查询指定目录下的所有子元素信息(含文件/子目录), lFindHandle 为接口CLIENT_StartListMediaFileInfo 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopListMediaFileInfo(LLONG lFindHandle); ///@brief 文件上传进度通知接口, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NotifyFileUploadProgress(LLONG lLoginID, const NET_IN_NOTIFY_FILE_UPLOAD_PROGRESS_INFO* pstInParam, NET_OUT_NOTIFY_FILE_UPLOAD_PROGRESS_INFO* pstOutParam, const int nWaitTime); ///@brief 删除多个媒体文件(录像或图片) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveMediaFilesInfo(LLONG lLoginID, const NET_IN_REMOVE_MEDIA_FILES_INFO* pstInParam, NET_OUT_REMOVE_MEDIA_FILES_INFO* pstOutParam, const int nWaitTime); ////////////////////////////// 存储设备管理 //////////////////////////////////////// ///@brief 获取ISCSI Target列表, pInParam == NULL获取所有targets,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetISCSITargets(LLONG lLoginID, const DH_IN_ISCSI_TARGETS* pInParam, DH_OUT_ISCSI_TARGETS* pOutParam, int nWaitTime = 1000); ///@brief pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetBitmap(LLONG lLoginID , const DH_IN_BITMAP* pInParam, DH_OUT_BITMAP* pOutParam, int nWaitTime = 1000); ///@brief 获取存储设备名称列表,pstuNames内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStorageDeviceNames(LLONG lLoginID, DH_STORAGE_DEVICE_NAME* pstuNames, int nMaxCount, int* pnRetCount, int nWaitTime = 1000); ///@brief 获取存储设备信息,pDevice内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStorageDeviceInfo(LLONG lLoginID, const char* pszDevName, DH_STORAGE_DEVICE* pDevice, int nWaitTime = 1000); ///@brief 订阅录像文件更新信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRecordInfo(LLONG lLoginID, const NET_IN_ATTACH_RECORD_INFO* pInParam, NET_OUT_ATTACH_RECORD_INFO* pOutParam, int nWaitTime = 1000); ///@brief 取消订阅录像文件更新信息,lAttachHandle是CLIENT_AttachRecordInfo的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRecordInfo(LLONG lAttachHandle); ///@brief 订阅写入远程存储的信息状态,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_NetStorageAttachWriteInfo(LLONG lLoginID, const NET_IN_STORAGE_ATTACH_WRITE_INFO* pInParam, NET_OUT_STORAGE_ATTACH_WRITE_INFO* pOutParam, int nWaitTime); ///@brief 取消写入远程设备信息,lAttachHandle是CLIENT_NetStorageAttachWriteInfo的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NetStorageDetachWriteInfo(LLONG lAttachHandle); ///@brief 查询远程存储的写入信息状态,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NetStorageGetWriteInfo(LLONG lLoginID, const NET_IN_STORAGE_GET_WRITE_INFO* pInParam, NET_OUT_STORAGE_GET_WRITE_INFO* pOutParam, int nWaitTime); ///@brief RAID操作, 不同操作类型对应不同的结构体,pInBuf与pOutBuf内存由用户申请释放,大小参照emType对应的结构体 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateRaid(LLONG lLoginID, NET_RAID_OPERATE_TYPE emType, void* pInBuf, void* pOutBuf, int nWaitTime); ///@brief 异步格式化设备,格式化进度通过CLIENT_AttachDevStorageDevFormat接口的回调获取 pszDevName与CLIENT_GetStorageDeviceInfo中的pszDevName保持一致 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DevStorageFormatPartitionAsyn(LLONG lLoginID, const char* pszDevName, const NET_IN_DEVSTORAGE_FORMAT_PARTITION_ASYN* pInParam, NET_OUT_DEVSTORAGE_FORMAT_PARTITION_ASYN* pOutParam, const int nWaitTime); ///@brief 订阅异步格式化设备的状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDevStorageDevFormat(LLONG lLoginID, const NET_IN_DEVSTORAGE_ATTACH_DEV_FORMAT* pInParam, const int nWaitTime); ///@brief 取消订阅异步格式化设备的状态, lAttachHandle 为CLIENT_AttachDevStorageDevFormat 接口返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDevStorageDevFormat(LLONG lAttachHandle); /////////////////////////////// 级联设备 /////////////////////////////////////// ///@brief 搜索级联视频源,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MatrixSearch(LLONG lLoginID, const DH_IN_MATRIX_SEARCH* pInParam, DH_OUT_MATRIX_SEARCH* pOutParam, int nWaitTime = 1000); ///@brief 获取本级级联树列表,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMatrixTree(LLONG lLoginID, const DH_IN_GET_MATRIX_TREE* pInParam, DH_OUT_GET_MATRIX_TREE* pOutParam, int nWaitTime = 1000); ///@brief 获取级联上级设备列表信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSuperiorMatrixList(LLONG lLoginID, const DH_IN_GET_SUPERIOR_MATRIX_LIST* pInParam, DH_OUT_GET_SUPERIOR_MATRIX_LIST* pOutParam, int nWaitTime = 1000); /************************************************************************/ /* 录像备份回传 */ /************************************************************************/ ///@brief 开始录像备份恢复 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRecordBackupRestore(LLONG lLoginID); ///@brief 停止录像备份恢复 CLIENT_NET_API void CALL_METHOD CLIENT_StopRecordBackupRestore(LLONG lRestoreID); ///@brief 添加录像备份恢复任务,pInParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddRecordBackupRestoreTask(LLONG lRestoreID, const DH_IN_ADD_REC_BAK_RST_TASK* pInParam, int nWaitTime = 1000); ///@brief 增加远程录像备份任务, pInParam pOutParam 内存有用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddRecordBackupRestoreRemoteTask(LLONG lRestoreID, const DH_IN_ADD_REC_BAK_RST_REMOTE_TASK* pInParam, DH_OUT_ADD_REC_BAK_RST_REMOTE_TASK* pOutParam, int nWaitTime); ///@brief 删除录像备份恢复任务,pInParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveRecordBackupRestoreTask(LLONG lRestoreID, const DH_IN_REMOVE_REC_BAK_RST_TASK* pInParam, int nWaitTime = 1000); ///@brief 获取录像备份恢复任务信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryRecordBackupRestoreTask(LLONG lRestoreID, const DH_IN_QUERY_REC_BAK_RST_TASK* pInParam, DH_OUT_QUERY_REC_BAK_RST_TASK* pOutParam, int nWaitTime = 1000); ///@brief 根据查询条件返回录像备份任务的信息表,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindRecordBackupRestoreTaskInfos(LLONG lLoginID, const NET_IN_FIND_REC_BAK_RST_TASK* pInParam, NET_OUT_FIND_REC_BAK_RST_TASK* pOutParam, int nWaitTime = 3000); ///@brief 回传码流类型 typedef enum tagEM_RECORD_BACKUP_STREAM_TYPE { EM_RECORD_BACKUP_STREAM_TYPE_UNKNOWN, // 未知 EM_RECORD_BACKUP_STREAM_TYPE_JPG, // 图片流 EM_RECORD_BACKUP_STREAM_TYPE_MAIN, // 录像主码流 }EM_RECORD_BACKUP_STREAM_TYPE; ///@brief 当前备份状态 typedef enum tagEM_RECORD_BACKUP_STATE { EM_RECORD_BACKUP_STATE_UNKNOWN, // 未知 EM_RECORD_BACKUP_STATE_NORMAL, // 尚未开始 EM_RECORD_BACKUP_STATE_RUNNING, // 进行中 EM_RECORD_BACKUP_STATE_FINISHED, // 已完成 EM_RECORD_BACKUP_STATE_FAILED, // 失败 EM_RECORD_BACKUP_STATE_PAUSE, // 暂停 }EM_RECORD_BACKUP_STATE; ///@brief 录像备份任务信息表 typedef struct tagNET_RECORD_BACKUP_RESTORE_TASK_INFO { UINT nTaskID; // 任务ID char byReserved[4]; // 字节对齐 char szDevice[128]; // 备份源设备 int nChannelID; // 通道号 int nRemoteChannel; // 备份源通道 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 double dbLength; // 该任务的总长度,单位字节, -1表示未知 EM_RECORD_BACKUP_STREAM_TYPE emStreamType[32]; // 回传码流类型 int nStreamTypeNums; // 回传码流类型的个数 EM_RECORD_BACKUP_STATE emState; // 当前备份状态, 0-尚未开始, 1-进行中, 2-完成, 3-失败, 4-暂停 NET_RECORD_BACKUP_PROGRESS stuProgress; // 当前备份进度 EM_RECORD_BACKUP_FAIL_REASON emFailReason; // 失败的原因, 当emState字段为3的情况下有效 char szReserved[252]; // 保留字节 } NET_RECORD_BACKUP_RESTORE_TASK_INFO; ///@brief CLIENT_GetRecordBackupRestoreTaskInfoOffline 接口输入参数 typedef struct tagNET_IN_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE { DWORD dwSize; } NET_IN_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE; ///@brief CLIENT_GetRecordBackupRestoreTaskInfoOffline 接口输出参数 typedef struct tagNET_OUT_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE { DWORD dwSize; int nMaxCount; // 数组大小, 最大为2048个 int nReturnCount; // 返回的任务信息表数量, 最大为2048个 char byReserved[4]; // 字节对齐 NET_RECORD_BACKUP_RESTORE_TASK_INFO* pTasks; // 录像备份任务信息表,由用户申请内存,大小为sizeof(DH_RECORD_BACKUP_RESTORE_TASK_INFO)*nMaxCount } NET_OUT_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE; ///@brief 获取录像备份断网续传任务信息,lRestoreID由CLIENT_StartRecordBackupRestore获取, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRecordBackupRestoreTaskInfoOffline(LLONG lRestoreID, const NET_IN_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE* pInParam, NET_OUT_GET_RECORD_BACKUP_RESTORE_TASK_INFO_OFFLINE* pOutParam, int nWaitTime = 1000); //////////////////////////// Encode Manager //////////////////////////////// ///@brief 刻录中获取编码计划参数,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEncodePlan(LLONG lLoginID, const DH_IN_GET_ENCODE_PLAN* pInParam, DH_OUT_GET_ENCODE_PLAN* pOutParam, int nWaitTime = 1000); ///@brief 根据指定的光盘容量和分辨率码率计算业务时长, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEncodePlanByResolution(LLONG lLoginID, const NET_IN_GET_ENCODEPLANE_BY_RESOLUTION* pInParam, NET_OUT_GET_ENCODEPLANE_BY_RESOLUTION* pOutParam, int nWaitTime); /************************************************************************/ /* 数据库记录相关操作 */ /************************************************************************/ ///@brief 按查询条件查询记录,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindRecord(LLONG lLoginID, NET_IN_FIND_RECORD_PARAM* pInParam, NET_OUT_FIND_RECORD_PARAM* pOutParam, int waittime=1000); ///@brief 查找记录:nFilecount:需要查询的条数, 一般情况出参中nRetRecordNumdwSize == nBufLen typedef void (CALLBACK *fAttachAIOFileprocCB) (LLONG lAttachHandle, NET_CB_AIOFILEPROC* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_attachAIOFileProc()输入参数 typedef struct tagNET_IN_ATTACH_AIO { DWORD dwSize; fAttachAIOFileprocCB cbNotify; // 回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_AIO; ///@brief CLIENT_attachAIOFileProc 输出参数 typedef struct tagNET_OUT_ATTACH_AIO { DWORD dwSize; }NET_OUT_ATTACH_AIO; ///@brief 广告播放 typedef enum tagNET_EM_ADVERT_ACTION { NET_EM_ADVERT_ACTION_UNKNOWN = 0, NET_EM_ADVERT_ACTION_START, // start NET_EM_ADVERT_ACTION_STOP, // stop }NET_EM_ADVERT_ACTION; ///@brief 广告位置 typedef enum tagNET_EM_ADVERT_POSITION { NET_EM_ADVERT_POSITION_UNKNOWN = 0, NET_EM_ADVERT_POSITION_TOP, // top 顶部 NET_EM_ADVERT_POSITION_MIDDLE, // middle 中间 NET_EM_ADVERT_POSITION_BOTTOM, // bottom 底部 }NET_EM_ADVERT_POSITION; ///@brief CLIENT_SetAdvert 接口输入参数(设置NVR广告) typedef struct tagNET_IN_SET_ADVERT { DWORD dwSize; NET_EM_ADVERT_ACTION emAction; // 广告播放 int nSpeed; // 广告滚动速度 NET_EM_ADVERT_POSITION emPosition; // 广告位置 } NET_IN_SET_ADVERT; ///@brief CLIENT_SetAdvert 接口输出参数(设置NVR广告) typedef struct tagNET_OUT_SET_ADVERT { DWORD dwSize; } NET_OUT_SET_ADVERT; ///@brief CLIENT_AIOScreen 接口输入参数(NVR截屏) typedef struct tagNET_IN_AIO_SCREEN { DWORD dwSize; } NET_IN_AIO_SCREEN; ///@brief CLIENT_AIOScreen 接口输出参数(NVR截屏) typedef struct tagNET_OUT_AIO_SCREEN { DWORD dwSize; char szName[DH_COMMON_STRING_256]; // 截屏图片路径 } NET_OUT_AIO_SCREEN; ///@brief CLIENT_AIOandroidAdb 接口输入参数(控制安卓adb开启或关闭) typedef struct tagNET_IN_CONTROL_ANDROID_ADB { DWORD dwSize; BOOL bEnable; // 是否开启adb } NET_IN_CONTROL_ANDROID_ADB; ///@brief CLIENT_AIOandroidAdb 接口输出参数(控制安卓adb开启或关闭) typedef struct tagNET_OUT_CONTROL_ANDROID_ADB { DWORD dwSize; } NET_OUT_CONTROL_ANDROID_ADB; ///@brief 联动的布控组 typedef struct tagNET_CFG_LINKGROUP_INFO { BOOL bEnable; // 布控组是否启用 char szGroupID[64]; // 布控组ID BYTE bySimilarity; // 相似度阈值 BYTE bReserved1[3]; // 字节对齐 char szColorName[32]; // 事件触发时绘制目标框的颜色 BOOL bShowTitle; // 事件触发时规则框上是否显示报警标题 BOOL bShowPlate; // 事件触发时是否显示比对面板 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 BYTE bReserved[512]; // 保留字段 }NET_CFG_LINKGROUP_INFO; ///@brief 陌生人布防模式 typedef struct tagNET_CFG_STRANGERMODE_INFO { BOOL bEnable; // 模式是否启用 char szColorHex[8]; // 事件触发时绘制目标框的颜色 BOOL bShowTitle; // 事件触发时规则框上是否显示报警标题 BOOL bShowPlate; // 事件触发时是否显示比对面板 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 BYTE bReserved[512]; // 保留字段 }NET_CFG_STRANGERMODE_INFO; ///@brief 校准框信息 typedef struct tagNET_CFG_CALIBRATEBOX_INFO { POINTCOORDINATE stuCenterPoint; // 校准框中心点坐标(点的坐标归一化到[0,8191]区间) float fRatio; // 相对基准校准框的比率(比如1表示基准框大小,0.5表示基准框大小的一半) }NET_CFG_CALIBRATEBOX_INFO; ///@brief 物体尺寸 typedef struct tagNET_CFG_SIZE { union { float nWidth; // 宽 float nArea; // 面积 }; float nHeight; // 高 } NET_CFG_SIZE; ///@brief 尺寸过滤器 typedef struct tagNET_CFG_SIZEFILTER_INFO { int nCalibrateBoxNum; // 校准框个数 NET_CFG_CALIBRATEBOX_INFO stuCalibrateBoxs[10]; // 校准框(远端近端标定模式下有效) bool bMeasureModeEnable; // 计量方式参数是否有效 BYTE bMeasureMode; // 计量方式,0-像素,不需要远端、近端标定, 1-实际长度,单位:米, 2-远端近端标定后的像素 bool bFilterTypeEnable; // 过滤类型参数是否有效 /* ByArea,ByRatio仅作兼容,使用独立的ByArea和ByRatio选项代替 2012/03/06 */ BYTE bFilterType; // 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight" bool bFilterMinSizeEnable; // 物体最小尺寸参数是否有效 bool bFilterMaxSizeEnable; // 物体最大尺寸参数是否有效 bool abByArea; bool abMinArea; bool abMaxArea; bool abMinAreaSize; bool abMaxAreaSize; bool bByArea; // 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用 NET_CFG_SIZE stuFilterMinSize; // 物体最小尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。 NET_CFG_SIZE stuFilterMaxSize; // 物体最大尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。 float nMinArea; // 最小面积 float nMaxArea; // 最大面积 NET_CFG_SIZE stuMinAreaSize; // 最小面积矩形框尺寸 "计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸; NET_CFG_SIZE stuMaxAreaSize; // 最大面积矩形框尺寸, 同上 bool abByRatio; bool abMinRatio; bool abMaxRatio; bool abMinRatioSize; bool abMaxRatioSize; bool bByRatio; // 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用 bool bReserved1[2]; double dMinRatio; // 最小宽高比 double dMaxRatio; // 最大宽高比 NET_CFG_SIZE stuMinRatioSize; // 最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。 NET_CFG_SIZE stuMaxRatioSize; // 最大宽高比矩形框尺寸,同上 int nAreaCalibrateBoxNum; // 面积校准框个数 NET_CFG_CALIBRATEBOX_INFO stuAreaCalibrateBoxs[10]; // 面积校准框 int nRatioCalibrateBoxs; // 宽高校准框个数 NET_CFG_CALIBRATEBOX_INFO stuRatioCalibrateBoxs[10]; // 宽高校准框 bool abBySize; // 长宽过滤使能参数是否有效 bool bBySize; // 长宽过滤使能 BYTE bReserved[518]; // 保留字段 }NET_CFG_SIZEFILTER_INFO; ///@brief 传感器类型 typedef enum tagEM_SENSOR_TYPE { EM_SENSOR_TYPE_UNKNOWN, // 未知 EM_SENSOR_TYPE_NC, // 常闭 EM_SENSOR_TYPE_NO, // 常开 }EM_SENSOR_TYPE; ///@brief 报警盒子配置 typedef struct tagNET_LOCAL_EXT_ALARM_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能开关 char szName[MAX_LOCAL_EXT_ALARM_NAME_LEN]; // 报警通道名称 EM_SENSOR_TYPE emSensorType; // 传感器类型 NET_CFG_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 }NET_LOCAL_EXT_ALARM_INFO; ///@brief 火灾配置类型 typedef enum tagNET_EM_FIREWARNING_MODE_TYPE { NET_EM_FIREWARNING_TYPE_PTZPRESET, // 云台预置点模式(默认) NET_EM_FIREWARNING_TYPE_SPACEEXCLUDE, // 空间排除模式 } NET_EM_FIREWARNING_MODE_TYPE; ///@brief 火灾预警模式配置 NET_EM_CFG_FIRE_WARNINGMODE typedef struct tagNET_FIREWARNING_MODE_INFO { DWORD dwSize; // 结构体大小 NET_EM_FIREWARNING_MODE_TYPE emFireWarningMode; // 火灾预警模式 } NET_FIREWARNING_MODE_INFO; ///@brief 火警检测类型 typedef enum tagNET_EM_FIREWARNING_DETECTMODE_TYPE { NET_EM_FIREWARNING_DETECTMODE_TYPE_AUTO, // 自动(默认) NET_EM_FIREWARNING_DETECTMODE_TYPE_NORMAL, // 正常 } NET_EM_FIREWARNING_DETECTMODE_TYPE; ///@brief 检测目标 typedef enum tagNET_EM_FIREWARNING_DETECTTARGET_TYPE { NET_EM_FIREWARNING_DETECTTARGET_TYPE_FIRE, // 火点检测(默认) NET_EM_FIREWARNING_DETECTTARGET_TYPE_SMOKE, // 吸烟检测 } NET_EM_FIREWARNING_DETECTTARGET_TYPE; #define MAX_FIREWARNING_DETECTRGN_NUM 32 // 最大火警区域检测的个数 #define MAX_FIREWARNING_RULE_NUM 32 // 最大火警规则 #define MAX_FIREWARNING_DETECTWND_NUM 8 // 最大火警检测窗口个数 ///@brief 火灾预警联动项 typedef struct tagNET_FIREWARN_EVENTHANDLE_INFO { NET_CFG_TIME_SCHEDULE stuTimeSection; // 报警时间段 BOOL bRecordEnable; // 录像使能,必须同时有RecordChannels。使能为TRUE,且事件action为start开始录像,stop停止录像。如果FALSE,则不做录像 int nRecordChannelNum; // 录像通道个数 int nRecordChannels[32]; // 录像通道号列表 int nRecordLatch; // 录像延时时间(单位:秒)范围[10,300] BOOL bAlarmOutEnable; // 报警输出使能 int nAlarmOutChannelNum; // 报警输出通道个数 int nAlarmOutChannels[32]; // 报警输出通道号列表 int nAlarmOutLatch; // 报警输入停止后,输出延时时间(单位:秒)范围[10, 300] int nPtzLinkNum; // 云台配置数 DH_PTZ_LINK struPtzLink[16]; // 云台联动 BOOL bPtzLinkEnable; // 云台联动使能 BOOL bSnapshotEnable; // 快照使能 int nSnapshotChannelNum; // 快照通道个数 int nSnapshotChannels[32]; // 快照通道号列表 BOOL bMailEnable; // 发送邮件,如果有图片,作为附件 BYTE byReserved[1024]; // 保留字节 } NET_FIREWARN_EVENTHANDLE_INFO; ///@brief 火警检测窗口 typedef struct tagNET_FIREWARN_DETECTWND_INFO { int nRgnNum; // 检测区域的个数 BYTE byReservedAlign[4]; // 保留字节 INT64 nRegions[MAX_FIREWARNING_DETECTRGN_NUM]; // 检测区域 NET_POSTIONF stuPostion; // 空间排除信息 int nTargetSize; // 目标的尺寸(火警配置为:Normal有效,单位:像素) int nSensitivity; // 检测灵敏度(火警配置为:Normal有效) int nWindowsID; // 窗口ID char szName[32]; // 窗口名称 BYTE byReserved[256]; // 保留字节 } NET_FIREWARN_DETECTWND_INFO; ///@brief 火灾预警规则信息 typedef struct tagNET_FIREWARN_RULE_INFO { BOOL bEnable; // 火灾预警功能是否开启 int nPresetId; // 预置点编号,火灾预警模式为预置点模式生效 int nRow; // 火灾检测区域的行数 int nCol; // 火灾检测区域的列数 NET_EM_FIREWARNING_DETECTMODE_TYPE emFireWarningDetectMode; // 火警检测模式 NET_EM_FIREWARNING_DETECTTARGET_TYPE emFireWarningDetectTragetType; // 火警检测目标类型 BOOL bTimeDurationEnable; // 是否启用持续时间 int nFireDuration; // 观察火情持续时间,单位秒。水平旋转组检测火点时,为避免同一点重复检测, // 设置超时时间,超过此时间,跳过此点 NET_FIREWARN_EVENTHANDLE_INFO stuEventHandler; // 火警联动信息 int nDetectWindowNum; // 窗口个数 NET_FIREWARN_DETECTWND_INFO stuDetectWnd[MAX_FIREWARNING_DETECTWND_NUM]; // 火警检测窗口 BYTE byReserved[256]; // 保留字节 } NET_FIREWARN_RULE_INFO; ///@brief 火灾预警配置(结构体较大,建议用New分配内存) NET_EM_CFG_FIRE_WARNING typedef struct tagNET_FIRE_WARNING_INFO { DWORD dwSize; // 结构体大小 int nFireWarnRuleNum; // 火灾预警配置个数 NET_FIREWARN_RULE_INFO stuFireWarnRule[MAX_FIREWARNING_RULE_NUM]; // 火灾预警配置规则 } NET_FIRE_WARNING_INFO; ///@brief 热点报警条件 typedef enum tagEM_HOT_ALARM_CONDITION { EM_HOT_ALARM_CONDITION_UNKNOWN, // 未知 EM_HOT_ALARM_CONDITION_ABOVE_MAX, // 高于高温阈值 EM_HOT_ALARM_CONDITION_ABOVE_MAX_AND_BELOW_MIN, // 最低温低于低温阈值,最高温高于高温阈值(冷点报警条件也取此值时生效) } EM_HOT_ALARM_CONDITION; ///@brief 冷点报警条件 typedef enum tagEM_COLD_ALARM_CONDITION { EM_COLD_ALARM_CONDITION_UNKNOWN, // 未知 EM_COLD_ALARM_CONDITION_BELOW_MIN, // 低于低温阈值 EM_COLD_ALARM_CONDITION_ABOVE_MAX_AND_BELOW_MIN, // 最低温低于低温阈值,最高温高于高温阈值(热点报警条件也取此值时生效) } EM_COLD_ALARM_CONDITION; ///@brief 热冷点报警配置(结构体较大,建议用New分配内存) NET_EM_CFG_HOT_COLD_SPOT_WARNING typedef struct tagNET_HOT_COLD_SPOT_WARNING_INFO { DWORD dwSize; // 结构体大小 BOOL bHotAlarmEnable; // 热点报警使能 BOOL bColdAlarmEnable; // 冷点报警使能 EM_HOT_ALARM_CONDITION emHotAlarmCondition; // 热点报警条件 EM_COLD_ALARM_CONDITION emColdAlarmCondition; // 冷点报警条件 BYTE byReserved[4]; // 字节对齐 double dHotThreshold; // 热点报警温度阈值 double dColdThreshold; // 冷点报警温度阈值 BOOL bHotSpotLinkEnable; // 热点联动使能 BOOL bColdSpotLinkEnable; // 冷点联动使能 NET_CFG_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 } NET_HOT_COLD_SPOT_WARNING_INFO; ///@brief 报警输出模式 typedef enum tagEM_ALARM_OUT_MODE { EM_ALARM_OUT_MODE_UNKNOWN = -1, // 未知 EM_ALARM_OUT_MODE_AUTO, // 自动 EM_ALARM_OUT_MODE_FORCED, // 强制报警 EM_ALARM_OUT_MODE_CLOSE, // 关闭报警 } EM_ALARM_OUT_MODE; ///@brief 前端相机警号配置 (对应枚举 NET_EM_CFG_REMOTE_ALARM_BELL) typedef struct tagNET_CFG_REMOTE_ALARM_BELL_INFO { DWORD dwSize; // 结构体大小 EM_ALARM_OUT_MODE emMode; // 报警输出模式 } NET_CFG_REMOTE_ALARM_BELL_INFO; ///@brief 门禁禁止名单报警配置 typedef struct tagNET_CFG_ACCESSCTL_BLACKLIST { DWORD dwSize; BOOL bEnable; // 配置使能 }NET_CFG_ACCESSCTL_BLACKLIST; ///@brief 霍尼服务器配置 typedef struct tagNET_CFG_VSP_HONEYWELL_INFO { DWORD dwSize; //结构体大小 BOOL bEnable; //使能 char szIPAddress[64]; //服务器IP地址 int nPort; //服务器端口 char szUserName[128]; //用户名 char szPassword[128]; //密码 char szUserCode[8]; //用户码 }NET_CFG_VSP_HONEYWELL_INFO; ///@brief 日志打包方式 typedef struct tagNET_CFG_LOG_GROUP_INFO { UINT nSize; // 数据量大小,对大值:1400 UINT nBatch; // 日志条数,最大值:20 默认:1 UINT nDelay; // 队列中延时时间, 最大值:60000 默认:60000 单位:毫秒 BYTE byReserved[32]; // 保留字节 }NET_CFG_LOG_GROUP_INFO; ///@brief 服务器信息配置 typedef struct tagNET_CFG_LOG_SERVER_INFO { BOOL bEnable; // 服务器使能 char szIP[40]; // IP UINT nPort; // 端口 UINT nProtocol; // 协议类型 0: TCP 1: UDP UINT nSerial; // 关联串口号,最大值:0xFFFF。第1位(0x0001)对应串口1;第2位(0x0002)对应串口2;第3位(0x0004)对应串口3;依次类推 NET_CFG_LOG_GROUP_INFO stuLogGroup; // 日志打包方式 BYTE byReserved[256]; // 保留字节 }NET_CFG_LOG_SERVER_INFO; ///@brief 追加配置 typedef struct tagNET_CFG_LOG_APPEND_INFO { BOOL bSequence; // 自增序列号使能 BOOL bDate; // 日期字段使能 BOOL bTime; // 时间字段使能 char szCustom[32]; // 自定义字段 BYTE byReserved[32]; // 保留字节 }NET_CFG_LOG_APPEND_INFO; ///@brief 串口服务器日志推送服务(对应枚举 NET_EM_CFG_SERIAL_PUSH_LOG) typedef struct tagNET_CFG_SERIALPUSHLOG_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能 NET_CFG_LOG_SERVER_INFO stuServerInfo[16]; // 服务器信息 int nServerCount; // 服务器信息个数 NET_CFG_LOG_APPEND_INFO stuAppendInfo[16]; // 追加信息 int nAppendCount; // 追加信息格式 }NET_CFG_SERIALPUSHLOG_INFO; ///@brief CVI 外部报警信息 typedef struct tagNET_CFG_COAXIAL_ALARMLOCAL { BOOL bEnable; // 使能 char szName[64]; // 报警通道名 NET_SENSE_METHOD emSenseMethod; // 传感器类型 NET_ALARM_MSG_HANDLE stuEventHandler; // 事件联动信息 BYTE byReserved[1024]; // 预留字节 }NET_CFG_COAXIAL_ALARMLOCAL; ///@brief CVI外部报警配置 typedef struct tagNET_COAXIAL_ALARMLOCAL_INFO { DWORD dwSize; // 结构体大小 NET_CFG_COAXIAL_ALARMLOCAL* pstuAlaramCfg; // 配置信息 int nCount; // pstuAlaramCfg 个数 int nCountRet; // 实际返回的配置个数 }NET_COAXIAL_ALARMLOCAL_INFO; ///@brief 硬盘健康异常配置 typedef struct tagNET_CFG_STORAGE_HEALTH_ABNORMAL { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能开关 NET_ALARM_MSG_HANDLE stuEventHandler; // 事件联动信息 } NET_CFG_STORAGE_HEALTH_ABNORMAL; ///@brief 存储组件全局配置 typedef struct tagNET_CFG_STORAGE_GLOBAL { DWORD dwSize; // 结构体大小 UINT nFileHoldTime; // 设置文件的保留天数, 超过时间的将被删除. 0~31, 天为单位, 0表示永不过期 BOOL bLogRecordSearch; // 是否记录录像查询日志 BOOL bLogPictureSearch; // 是否记录图片查询日志 BOOL bShareStorageWizard; // 是否开启共享存储向导配置 UINT nDiskCheckTime; // 设置对硬盘进行检测的时间, 单位:小时 } NET_CFG_STORAGE_GLOBAL; ///@brief 共享类型枚举 typedef enum tagEM_CFG_NAS_DIRECTORY_PROTOCAL { EM_CFG_NAS_DIRECTORY_PROTOCAL_UNKNOWN, // 未知枚举 EM_CFG_NAS_DIRECTORY_PROTOCAL_NFS, // NFS EM_CFG_NAS_DIRECTORY_PROTOCAL_FTP, // FTP EM_CFG_NAS_DIRECTORY_PROTOCAL_SAMBA, // SAMBA EM_CFG_NAS_DIRECTORY_PROTOCAL_ISCSI, // ISCSI EM_CFG_NAS_DIRECTORY_PROTOCAL_NONE, // 表示裸的LV, 没有做共享文件夹 } EM_CFG_NAS_DIRECTORY_PROTOCAL; ///@brief 缓存类型枚举 typedef enum tagEM_CFG_NAS_DIRECTORY_CACHE_TYPE { EM_CFG_NAS_DIRECTORY_CACHE_TYPE_UNKNOWN, // 未知枚举 EM_CFG_NAS_DIRECTORY_CACHE_TYPE_DIRECT, // 直存 EM_CFG_NAS_DIRECTORY_CACHE_TYPE_INDIRECT, // 回存 } EM_CFG_NAS_DIRECTORY_CACHE_TYPE; ///@brief 存储组件全局配置 typedef struct tagNAS_DIRECTORY_CFG_INFO { DWORD dwSize; // 结构体大小 char szName[16]; // 名称 用于NASDirectory组件实例化的参数name char szGroupName[32]; // 存储池名称 char szUserName[64][32]; // 共享用户名 int nUserAuth[64]; // 共享用户的读写权限, 是一个数组, 下标与用户名对应:1 可读, 2 可新建, 4 可删除 char szMemo[1024]; // 说明 char szValidIP[16]; // 有效IP int nUserNameRealNum; // 共享用户名数组实际有效数量 int nUserAuthRealNum; // 共享用户的读写权限实际有效数量 UINT nTotalSpace; // 总容量(单位M), 总容量, 创建卷时要用到. 只在新增时可以添加, 后续不允许修改 UINT nBlockSize; // 设置虚拟磁盘最小的块大小, 仅限于IPSAN使用, 单位字节.默认4096字节,必须是512的整数倍 EM_CFG_NAS_DIRECTORY_PROTOCAL emProtocal; // 共享类型 EM_CFG_NAS_DIRECTORY_CACHE_TYPE emCacheType; // 缓存类型 } NAS_DIRECTORY_CFG_INFO; ///@brief 存储组件全局配置 NET_EM_CFG_NAS_DIRECTORY (该配置目前仅支持获取配置) typedef struct tagNET_CFG_NAS_DIRECTORY { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 int nNeedNASDirectoryInfoNum; // 用户申请去获取配置的数量, 实际返回配置个数为用户获取配置个数与实际获取配置个数的最小值 int nNASCfgRealNum; // 实际获取到的NAS共享目录配置数量 NAS_DIRECTORY_CFG_INFO* pNASDirectoryInfo; // 获取到的配置信息指针, 需用户申请内存 } NET_CFG_NAS_DIRECTORY; ///@brief 硬盘固件信息 typedef struct tagNET_DISK_FIRMWARE_INFO { char szModule[32]; // 硬盘型号 char szBUS[8]; // 硬盘总线类型 char szFirmware[32]; // 固件版本 char szReserved[512]; // 预留字节 } NET_DISK_FIRMWARE_INFO; ///@brief 硬盘固件信息配置 NET_EM_CFG_DISK_FIRMWARE_INFO typedef struct tagNET_CFG_DISK_FIRMWARE_INFO { DWORD dwSize; // 结构体大小 int nInfoCount; // 硬盘个数 NET_DISK_FIRMWARE_INFO stuInfo[16]; // 硬盘固件信息 } NET_CFG_DISK_FIRMWARE_INFO; ///@brief Lora网关设备基本配置 typedef struct tagNET_CFG_LORA_GATEWAY_BASIC { DWORD dwSize; // 结构体大小 UINT nKeepAliveInterval; // 保活间隔(秒) char szGatewayID[32]; // 网关ID UINT nStatusReportInterval; // 状态上报间隔(秒) UINT nPushTimeout; // 推送数据的回复超时(毫秒) } NET_CFG_LORA_GATEWAY_BASIC; ///@brief NS对接模式 typedef enum tagEM_LORA_GATEWAY_ACCESS_METHOD { EM_LORA_GATEWAY_ACCESS_METHOD_UNKNOWN, // 未知 EM_LORA_GATEWAY_ACCESS_METHOD_SEMTECHUDP, // SemtechUDP EM_LORA_GATEWAY_ACCESS_METHOD_MQTT, // MQTT } EM_LORA_GATEWAY_ACCESS_METHOD; ///@brief SemtechUDP接入参数 typedef struct tagNET_SEMTECHUDP_INFO { char szNSAddress[64]; // NS主机地址 UINT nNSUpPort; // NS上行端口 UINT nNSDownPort; // NS下行端口 BYTE byReserved[1024]; // 预留字节 } NET_SEMTECHUDP_INFO; ///@brief MQTT接入参数 typedef struct tagNET_MQTT_INFO { char szHost[64]; // NS mqtt主机地址 char szAccount[256]; // MQTT-Broker登录账户 char szPassword[256]; // MQTT-Broker登录密码 UINT nPort; // MQTT-Broker端口 BYTE byReserved[1024]; // 预留字节 } NET_MQTT_INFO; ///@brief Lora网关接入配置 typedef struct tagNET_CFG_LORA_GATEWAY_ACCESS { DWORD dwSize; // 结构体大小 EM_LORA_GATEWAY_ACCESS_METHOD emMethod; // NS对接模式 NET_SEMTECHUDP_INFO stuSemtechUDPInfo; // SemtechUDP接入参数 NET_MQTT_INFO stuMQTTInfo; // MQTT接入参数 } NET_CFG_LORA_GATEWAY_ACCESS; ///@brief Lora射频参数 typedef struct tagNET_LORAGATEWAYRADIO_INFO { BOOL bEnable; // 使能 UINT nFreqMin; // 最小频率(Hz) UINT nFreqMax; // 最大频率(Hz) BYTE byReserved[1024]; // 预留字节 } NET_LORAGATEWAYRADIO_INFO; ///@brief Lora网关射频参数 typedef struct tagNET_CFG_LORA_GATEWAY_RADIO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 射频参数总配置使能 NET_LORAGATEWAYRADIO_INFO stuRxInfo; // Lora接收射频参数 NET_LORAGATEWAYRADIO_INFO stuTxInfo; // Lora发送射频参数 } NET_CFG_LORA_GATEWAY_RADIO; ///@brief 管理机信息 typedef struct tagNET_CFG_VTS_DEVICE_INFO { char szDeviceName[64]; // 管理机名 char szAddress[40]; // 网络地址Ip地址 char szMachineAddress[64]; // 管理机位置或名称 char szUsername[36]; // 三代登陆用户 char szPassword[36]; // 三代登陆密码 BOOL bEnable; // 管理机使能 BYTE byReserved[508]; // 预留字节 } NET_CFG_VTS_DEVICE_INFO; ///@brief 管理机列表配置 typedef struct tagNET_CFG_VTS_INFO { DWORD dwSize; // 结构体大小 int nDeviceNum; // 管理机数量 NET_CFG_VTS_DEVICE_INFO stuVTSDeviceInfo[8]; // 管理机信息 } NET_CFG_VTS_INFO; ///@brief 楼宇相关信息 typedef struct tagNET_CFG_VTS_BUILDING_INFO { char szLocalNumber[16]; //本机号码 BOOL bEnableSection; //区号是否使能 BOOL bEnableBuilding; //楼号是否使能 BOOL bEnableUnit; //单元号是否使能 int nBuildingNumBit; //楼号长度 char szReserved[512]; // 预留字节 } NET_CFG_VTS_BUILDING_INFO; ///@brief VTS基本配置 typedef struct tagNET_CFG_VTS_BASIC_INFO { DWORD dwSize; // 结构体大小 int nRole; // 管理机角色,0-未知 1-基层管理Admin 2-上层管理Manager 3-普通User char szDevID[16]; // VTS设备ID号,目前为3位,与下级设备ID(4位)共同组成下级设备的DevID char szName[64]; // 管理机昵称 NET_CFG_VTS_BUILDING_INFO stuVTSBuildingInfo; // 楼宇相关信息 int nScene; // 程序的应用场景 0-未知 1-楼宇场景Building 2-行业场景Industry } NET_CFG_VTS_BASIC_INFO; ///@brief 常亮时间段 typedef struct tagNET_ALWAYS_ONTIME_SECTION { DH_TSECT stuTimeSection; // 常亮时间段 UINT nBacklightLevel; // 常亮时间段的亮度等级 char szReserved[256]; // 预留字节 }NET_ALWAYS_ONTIME_SECTION; ///@brief 管理机列表配置 typedef struct tagNET_CFG_HOSPITAL_BACKLIGHT_PLAN { DWORD dwSize; // 结构体大小 UINT nDefaultBacklightLevel; // 默认亮度等级,范围:[1,10] int nTimeSectionCount; // 常亮时间段个数 NET_ALWAYS_ONTIME_SECTION stuAlwaysOnTimeSection[5]; // 常亮时间段 } NET_CFG_HOSPITAL_BACKLIGHT_PLAN; ///@brief 医院/科室介绍信息配置, 对应 NET_EM_CFG_HOSPITAL_INTRODUCE typedef struct tagNET_CFG_HOSPITAL_INTRODUCE_INFO { DWORD dwSize; // 结构体大小 char szHospitalIntroURL[512]; // 医院介绍信息(http地址) char szSectionIntroURL[512]; // 科室介绍信息(http地址) char szHospitalIntroPic[512]; // 医院介绍信息(图片可下载链接) char szSectionIntroPic[512]; // 科室介绍信息(图片可下载链接) } NET_CFG_HOSPITAL_INTRODUCE_INFO; ///@brief 医院检查/费用病人清单配置, 对应 NET_EM_CFG_HOSPITAL_CHECKLIST typedef struct tagNET_CFG_HOSPITAL_CHECKLIST_INFO { DWORD dwSize; // 结构体大小 char szCheckInfoDoc[512]; // 病人检验检查信息----检验类型(PDF文件链接) char szExpenseInfoDoc[512]; // 病人一日清单信息----一日清单(PDF文件链接) char szCheckInfoPic[512]; // 病人检验检查信息----检验类型(图片可下载链接) char szExpenseInfoPic[512]; // 病人一日清单信息----一日清单(图片可下载链接) } NET_CFG_HOSPITAL_CHECKLIST_INFO; ///@brief 健康宣教视频列表 typedef struct tagNET_HOSPITAL_VIDEO_LIST { char szSnapURL[512]; // 视频缩略图地址 char szVideoURL[512]; // 视频地址 char szName[512]; // 视频名称 char szDuration[32]; // 视频时长, eg:"00:20:00" char szReserved[256]; // 保留字节 }NET_HOSPITAL_VIDEO_LIST; ///@brief 健康宣教视频信息 typedef struct tagNET_HOSPITAL_MEDIA_VIDEO_INFO { char szGroupName[256]; // 视频分组名称 int nRetVideoListCount; // 实际返回的视频个数 int nVideoListNum; // 视频个数 NET_HOSPITAL_VIDEO_LIST *pstuVideoList; // 视频列表, 由用户申请内存, 大小为sizeof(NET_HOSPITAL_VIDEO_LIST)*nVideoListNum char szReserved[256]; // 保留字节 }NET_HOSPITAL_MEDIA_VIDEO_INFO; ///@brief 医院健康宣教视频媒体点播协议配置, 对应 NET_EM_CFG_HOSPITAL_MEDIA_INFO typedef struct tagNET_CFG_HOSPITAL_MEDIA_INFO { DWORD dwSize; // 结构体大小 int nVideoNum; // 健康宣教视频个数 NET_HOSPITAL_MEDIA_VIDEO_INFO stuVideoInfo[50]; // 健康宣教视频信息 } NET_CFG_HOSPITAL_MEDIA_INFO; ///@brief 室内机云服务器配置 typedef struct tagNET_CFG_VTH_ALPA_CLOUD { DWORD dwSize; // 结构体大小 char szParam1[32]; // 云服务参数1 char szParam2[32]; // 云服务参数2 int nStatus; // 云服务状态 0表示不开启,1表示开启 BYTE byReserved[128]; // 预留字节 }NET_CFG_VTH_ALPA_CLOUD; ///@brief 室内机本地广告机配置 typedef struct tagNET_CFG_VTH_FETCHINFO { DWORD dwSize; // 结构体大小 char szFtp[32]; // FTP地址 char szUser[32]; // FTP用户名 char szPassword[32]; // FTP密码 int nPort; // FTP端口 BOOL bEnable; // 广告功能使能 char szFtpPath[256]; // 信息在FTP上的路径 BYTE byReserved[512]; // 预留字节 }NET_CFG_VTH_FETCHINFO; ///@brief 门禁定制提供客户设置的设备信息配置 typedef struct tagNET_CFG_CUSTOMER_DEVICEINFO { DWORD dwSize; // 结构体大小 char szAuthCheckCode[128]; // 设备鉴权字符串 char szOrgId[32]; // 设备组织id char szDeviceId[64]; // 设备id char szRegUrl[256]; // 设备激活服务地址 char szInformUrl[256]; // 考勤上报地址 }NET_CFG_CUSTOMER_DEVICEINFO; ///@brief 地址类型 typedef enum tagEM_ADDRESS_TYPE { EM_ADDRESS_TYPE_UNKNOWN = 0, // 未知地址类型 EM_ADDRESS_TYPE_PUBLIC, // 公共地址 EM_ADDRESS_TYPE_RANDOM, // 随机地址 }EM_ADDRESS_TYPE; ///@brief 绑定的蓝牙从设备信息 typedef struct tagNET_BLUETOOTH_INFO { char szName[64]; // 蓝牙从设备名称 char szMac[20]; // 从设备的Mac地址 char szPin[20]; // Pin码(配对钥匙) EM_ADDRESS_TYPE emAddressType; // 地址类型 BYTE byReserved[512]; // 预留字节 }NET_BLUETOOTH_INFO; ///@brief 定制蓝牙开门配置 typedef struct tagNET_CFG_BLUE_TOOTH { DWORD dwSize; // 结构体大小 BOOL bEnable; // 是否开启蓝牙功能 char szModulName[32]; // 设备模块名 int nBlueDeviceNum; // 绑定的蓝牙从设备个数 NET_BLUETOOTH_INFO stuBlueDeviceInfo[16]; // 绑定的蓝牙从设备信息 }NET_CFG_BLUE_TOOTH; ///@brief 音频压缩格式 typedef enum tagEM_AUDIO_COMPRESS_FORMAT { EM_AUDIO_COMPRESS_UNKNOWN = 0, // 未知格式 EM_AUDIO_COMPRESS_PCM, // PCM EM_AUDIO_COMPRESS_ADPCM, // ADPCM EM_AUDIO_COMPRESS_G711AM, // G.711A EM_AUDIO_COMPRESS_G711MU, // G.711Mu EM_AUDIO_COMPRESS_G726, // G.726 EM_AUDIO_COMPRESS_G729, // G.729 EM_AUDIO_COMPRESS_MPEG2, // MPEG2 EM_AUDIO_COMPRESS_AMR, // AMR }EM_AUDIO_COMPRESS_FORMAT; ///@brief 音频配置信息 typedef struct tagNET_TALKBACK_INFO { EM_AUDIO_COMPRESS_FORMAT emAudioCompresFormat; // 音频压缩格式 UINT nFrequency; // 音频采样频率 UINT nDepth; // 采样深度 UINT nPacketPeriod; // 打包周期 int nMode; // 编码模式 NET_EM_PACK_TYPE emPackFormat; // 打包模式 BYTE byReserved[512]; // 预留字节 }NET_TALKBACK_INFO; ///@brief 可视对讲音频配置 typedef struct tagNET_CFG_TALKBACK { DWORD dwSize; // 结构体大小 int nChannelNum; // 对讲通道个数 NET_TALKBACK_INFO stuTalkBackInfo[16]; // 音频配置信息 }NET_CFG_TALKBACK; ///@brief 人证设备工作模式 typedef enum tagEM_SYS_MODE { EM_SYS_MODE_UNKNOWN = 0, // 未知模式 EM_SYS_MODE_FACECOLLECT, // 目标采集模式(自助采集模式) EM_SYS_MODE_JOINCOLLECT, // 协同采集模式 EM_SYS_MODE_VISITORVERIFY, // 访客模式 EM_SYS_MODE_CITIZENCOMPARE, // 人证核验模式 EM_SYS_MODE_CITIZENIDCHECK, // 证件号核验模式 EM_SYS_MODE_OTHER, // 其他 }EM_SYS_MODE; ///@brief 待机封面文字提示信息配置 typedef struct tagNET_CFG_FORNT_COVER_DISPLAY_TEXT { DWORD dwSize; // 结构体大小 int nTextLineNum; // 待机封面文字提示行个数 char szTextLines[10][256]; // 待机封面文字提示行,当前设备显示支持最多10个 BYTE byReserved[512]; // 预留字节 }NET_CFG_FORNT_COVER_DISPLAY_TEXT; ///@brief 门禁目标识别相关配置 typedef struct tagNET_CFG_CITIZENPICTURECOMPARE { DWORD dwSize; // 结构体大小 int nThreshold; // 人证比对阈值 BOOL bUnlockEnable; // 开锁功能是否使能 BOOL bFuncEnable; // 人证功能使能标识 BOOL bCitizenIDCheck; // 证件号校验使能标识 EM_SYS_MODE emSysMode; // 人证设备工作模式 }NET_CFG_CITIZENPICTURECOMPARE; ///@brief 灯光类型 typedef enum tagEM_SIGNLIGHT_TYPE { EM_SIGNLIGHT_TYPE_UNKNOWN = 0, // 未知 EM_SIGNLIGHT_TYPE_AUTO, // 自动,按照sensor自动切换 EM_SIGNLIGHT_TYPE_TIMING, // 定时模式 EM_SIGNLIGHT_TYPE_OFF, // 常灭 EM_SIGNLIGHT_TYPE_ON, // 常亮模式 }EM_SIGNLIGHT_TYPE; ///@brief 签名灯信息 typedef struct tagNET_SIGNLIGHT_INFO { EM_SIGNLIGHT_TYPE emSignLightType; // 灯光类型 int nTimeSectionsNum; // 有效时间段个数 DH_TSECT stuTimeSection[6]; // 抓拍时间段 BYTE bReserved[64]; // 预留字节 }NET_VIDEOTALK_SIGNLIGHT_INFO; ///@brief 可视对讲签名灯设置 typedef struct tagNET_CFG_SIGNLIGHT { DWORD dwSize; // 结构体大小 int nSignLightNum; // 签名灯个数 NET_VIDEOTALK_SIGNLIGHT_INFO stuSignLightInfo[16]; // 签名灯信息 }NET_CFG_VIDEOTALK_SIGNLIGHT; ///@brief 启动方式 typedef enum tagEM_STARTCHECK_MODE { EM_STARTCHECK_MODE_UNKNOWN = 0, // 未知 EM_STARTCHECK_MODE_FACE, // 目标启动 EM_STARTCHECK_MODE_CARD, // 刷卡启动 }EM_STARTCHECK_MODE; ///@brief 手阻值范围 typedef struct tagNET_HAND_INFO { UINT nHighValue; // k欧姆(高) UINT nLowValue; // k欧姆(低) BYTE bReserved[64]; // 预留字节 }NET_HAND_INFO; ///@brief 左脚阻值范围 typedef struct tagNET_LEFT_FOOT_INFO { UINT nHighValue; // k欧姆(高) UINT nLowValue; // k欧姆(低) BYTE bReserved[64]; // 预留字节 }NET_LEFT_FOOT_INFO; ///@brief 右脚阻值范围 typedef struct tagNET_RIGHT_FOOT_INFO { UINT nHighValue; // k欧姆(高) UINT nLowValue; // k欧姆(低) BYTE bReserved[64]; // 预留字节 }NET_RIGHT_FOOT_INFO; ///@brief ESD静电仪设备通用配置设置 typedef struct tagNET_CFG_ESD_COMMSETTING { DWORD dwSize; // 结构体大小 EM_STARTCHECK_MODE emStartCheckMode; // 启动方式 NET_HAND_INFO stuHand; // 手阻值范围 NET_LEFT_FOOT_INFO stuLeftFoot; // 左脚阻值范围 NET_RIGHT_FOOT_INFO stuRightFoot; // 右脚阻值范围 }NET_CFG_ESD_COMMSETTING; ///@brief 界面图片状态 typedef enum tagEM_MAIN_PAGE_STATE { EM_MAIN_PAGE_STATE_UNKNOWN = 0, // 未知 EM_MAIN_PAGE_STATE_NORMAL, // 正常 EM_MAIN_PAGE_STATE_STANDBY, // 待机 EM_MAIN_PAGE_STATE_CHANNELCLOSED, // 通道关闭 EM_MAIN_PAGE_STATE_FORBIDENTER, // 禁止通行 EM_MAIN_PAGE_STATE_URGENTEVACUATE // 紧急疏散 }EM_MAIN_PAGE_STATE; ///@brief 门禁定制配置汇总 typedef struct tagNET_CFG_BSCCUSTOM { DWORD dwSize; // 结构体大小 UINT nSamePersonInterval; // 间隔时间.在n秒内,相同人员不能连续开门.(0表示无需限制) EM_MAIN_PAGE_STATE emMainPageState; // 设备界面图片所表示的状态 char szReserved[4]; // 字节对齐 }NET_CFG_BSCCUSTOM; ///@brief 目标识别成功后二次确认配置 typedef struct tagNET_CFG_ACCESS_FACE_RECOGNITION { DWORD dwSize; // 结构体大小 UINT nFaceRecogInterval; // 识别间隔,单位:s,取值范围[1,60] BOOL bSecondConfirm; // 目标识别成功是否做二次确认 UINT nSecondConfirmTimeout; // 目标识别成功,二次确认超时时间(定制添加),单位:s 取值范围[1,60] BOOL bIDAndFaceMode; // 是否使用ID+目标模式识别 BOOL bFaceCollectionEnable; // 目标采集使能。采集失败重复抓图上报平台的频率默认3s(false为不采集)默认关闭。 }NET_CFG_ACCESS_FACE_RECOGNITION; ///@brief 天气信息 typedef struct tagNET_CUSTOM_WEATHER_INFO { char szDate[20]; // 时间 char byReserved[4]; // 字节补齐 char szWeather[32]; // 天气 char szDayWeather[32]; // 白天天气 char szNightWeather[32]; // 晚上天气 double dbTemperature; // 温度。单位:摄氏度 double dbMinTemperature; // 温度。单位:摄氏度 double dbMaxTemperature; // 温度。单位:摄氏度 char szWindForce[32]; // 风力 char szDayWindForce[32]; // 白天风力 char szNightWindForce[32]; // 晚上风力 char szWindDirection[32]; // 风向 char szDayWindDirection[32]; // 白天风向 char szNightWindDirection[32]; // 晚上风向 char szWeatherImage[512]; // 天气图标 char szReserved[128]; // 保留字节 }NET_CUSTOM_WEATHER_INFO; ///@brief 外部下发设备的天气信息配置 typedef struct tagNET_CFG_CUSTOM_WEATHER_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 天气信息使能 UINT nWeatherDataNums; // 天气信息的个数 NET_CUSTOM_WEATHER_INFO stuWeatherData[32]; // 天气信息 }NET_CFG_CUSTOM_WEATHER_INFO; ///@brief 医院Logo配置 typedef struct tagNET_CFG_HOSPITAL_LOGO_INFO { DWORD dwSize; // 结构体大小 char szBitmap[10240]; // 医院的Logo图片, base64编码, 大小不超过10K char szName[256]; // 医院名字 }NET_CFG_HOSPITAL_LOGO_INFO; ///@brief 主页配置选项 typedef struct tagNET_HOME_PAGE { BOOL bButtonMainMenuVisible; // 主菜单按钮是否可见 BOOL bButtonPasswordVisible; // 密码按钮是否可见 BOOL bButtonQRCodeVisible; // 二维码按钮是否可见 BOOL bButtonCallVisible; // 对讲按钮是否可见 UINT nButtonCallType; // 对讲按钮呼叫类型, 1:呼叫房间 2:呼叫管理机 3:呼叫固定房间 4:呼叫门铃 }NET_HOME_PAGE; ///@brief 广告分屏模式设备广告显示配置 typedef struct tagNET_ADVERTISE_DISPLAY { UINT nAdvertiseVideoDisplay; // 广告分屏模式情况下视频广告如何显示 0:原比例播放,1:全屏播放模式 UINT nAdvertisePicDisplay; // 广告分屏模式情况下图片广告如何显示 0:原比例播放,1:全屏播放模式 char szReserved[128]; // 保留字节 }NET_ADVERTISE_DISPLAY; ///@brief 广告分屏模式列表 typedef struct tagNET_ADVERTISE_SPLITLIST { UINT nAdvertiseSplitID; // 广告分屏模式:0:不分屏1:广告显示在前(左边或者上边)2:广告显示在后(右边或者下边)3.预览模式,只展示上传的广告图片 char szAdvertiseSplitName[256]; // 广告分屏模式名称,设备和web通过显示广告模式类型 char szReserved[128]; // 保留字节 }NET_ADVERTISE_SPLITLIST; ///@brief 门禁设备显示配置 typedef struct tagNET_CFG_ACCESS_DISPLAY_INFO { DWORD dwSize; // 结构体大小 NET_HOME_PAGE stuHomePage; // 主页配置选项 UINT nAdvertiseSplitType; // 广告分屏模式:0:不分屏 1:广告显示在前(左边或者上边) 2:广告显示在后(右边或者下边) 3.预览模式,只展示上传的广告图片 UINT nAccessDisplayObject; // 门禁显示主题:0:显示广告内容 2:显示公告文字信息 NET_ADVERTISE_DISPLAY stuAdvertiseDisplay; // 广告分屏模式设备广告显示配置 NET_ADVERTISE_SPLITLIST stuAdvertiseSplitList[32]; // 广告分屏模式列表,最大32个 int nAdvertiseSplitListNum; // 广告分屏模式列表的个数 }NET_CFG_ACCESS_DISPLAY_INFO; ///@brief 门禁设备通用配置 typedef struct tagNET_CFG_ACCESS_CONFIG_INFO { DWORD dwSize; // 结构体大小 UINT nPhotoGraph; // 是否开启图片抓拍功能, 开启后每次会从系统抓拍一张背景图片保存下来. 0:不抓拍, 1:抓拍 UINT nFingerprintPic; // 表示设备是否显示每次开门时的信息图片, 0:不显示, 1:显示 UINT nPrivacyMask; // 设备界面中视频图像隐私遮挡功能,开启后视频界面会被模糊遮挡. 0:不遮挡, 1:低遮挡(对应的透明度为-30), 2:中遮挡(对应的透明度为-20), 3:高遮挡(对应的透明度为-10) }NET_CFG_ACCESS_CONFIG_INFO; ///@brief 声音配置 typedef struct tagNET_CFG_SOUND { DWORD dwSize; // 结构体大小 char szAlarmSoundPath[256]; // 报警语音提示文件路径 UINT nAlarmSoundDuration; // 报警持续时间,单位:秒 } NET_CFG_SOUND; ///@brief 语音时间预案配置 typedef struct tagNET_VOICE_PLAY_PLAN_INFO { BOOL bEnable; // 每个语音定时播放任务开关标志 int nPlayTimes; // 报警持续时间,单位:秒 char szVoicePath[128]; // 语音播放路径,绝对路径 NET_CFG_TIME_SCHEDULE stuTimeSchedule; // 工作时间段 char szReserved[512]; // 保留字节 } NET_VOICE_PLAY_PLAN_INFO; ///@brief 语音时间预案配置 (NET_EM_CFG_VOICE_PLAY_PLAN) typedef struct tagNET_CFG_VOICE_PLAY_PLAN_INFO { DWORD dwSize; // 结构体大小 unsigned int nVoicePlayPlanCount; // 平台语音时间预案个数 NET_VOICE_PLAY_PLAN_INFO stuVoicePlayPlan[32]; // 平台语音时间预案,一维数组,每个元素表示一个语音任务,对应一个语音时间预案配置 } NET_CFG_VOICE_PLAY_PLAN; ///@brief 声音检测配置信息 typedef struct tagSMART_SOUND_DETECT_INFO { BOOL bEnable; // 检测声音配置使能 int nAudioTypeValidNum; // 有效声音枚举数量 EM_AUDIO_MUTATION_ALARM_TYPE emSoundTypes[32]; // 声音类型枚举 UINT nSensitive; // 检测灵敏度, 范围[1,10] UINT nThreshold; // 声强阈值, 范围[1,100] NET_CFG_ALARM_MSG_HANDLE stuEventHandler; // 报警联动配置 char szReserved[512]; // 保留字节 } SMART_SOUND_DETECT_INFO; ///@brief 声音检测配置 (NET_EM_CFG_SMART_SOUND_DETECT) typedef struct tagNET_CFG_SMART_SOUND_DETECT_INFO { DWORD dwSize; // 结构体大小 UINT nSoundDetectChannelNum; // 配置通道数 SMART_SOUND_DETECT_INFO* pSmartSoundDetectInfo; // 声音检测配置信息数组, 对应数组下标为音频配置通道号, 需用户申请内存调用 } NET_CFG_SMART_SOUND_DETECT; ///@brief 显示动作 typedef enum tagEM_DISPLAY_MODE { EM_DISPLAY_MODE_UNKNOWN, // 未知 EM_DISPLAY_MODE_ROLL, // 滚动 EM_DISPLAY_MODE_INTERCEPT, // 截取 } EM_DISPLAY_MODE; ///@brief 显示颜色 typedef enum tagEM_DISPLAY_COLOR { EM_DISPLAY_COLOR_UNKNOWN, // 未知 EM_DISPLAY_COLOR_RED, // 红 EM_DISPLAY_COLOR_GREEN, // 绿 EM_DISPLAY_COLOR_YELLOW, // 黄 } EM_DISPLAY_COLOR; ///@brief 逻辑屏信息 typedef struct tagNET_LOGIC_SCREEN { NET_RECT stuRegion; // 逻辑屏区域, 实际点阵屏坐标 EM_DISPLAY_MODE emDisplayMode; // 显示动作 EM_DISPLAY_COLOR emDisplayColor; // 显示颜色 BYTE byReserved[512]; // 预留字节 } NET_LOGIC_SCREEN; ///@brief 点阵屏滚动速度级别 typedef enum tagEM_ROLL_SPEED_LEVEL { EM_ROLL_SPEED_LEVEL_UNKNOWN, // 未知 EM_ROLL_SPEED_LEVEL_SLOW, // 慢 EM_ROLL_SPEED_LEVEL_SLOWER, // 较慢 EM_ROLL_SPEED_LEVEL_MEDIUM, // 中等 EM_ROLL_SPEED_LEVEL_FASTER, // 较快 EM_ROLL_SPEED_LEVEL_FAST // 快 } EM_ROLL_SPEED_LEVEL; ///@brief 485串口点阵屏配置 typedef struct tagNET_CFG_LATTICE_SCREEN_CONFIG { UINT nAddress; // 配置对应设备的地址, 范围[1,31] EM_ROLL_SPEED_LEVEL emRollSpeedLevel; // 点阵屏滚动速度级别 int nLogicScreenNum; // 逻辑屏个数 NET_LOGIC_SCREEN stuLogicScreens[8]; // 逻辑屏信息, 划分物理屏的某一区域为逻辑屏 int nOutPutVoiceVolume; // 语音播报音量大小, 范围:[0, 100] int nOutPutVoiceSpeed; // 语音播报速度, 范围:[0, 100] BYTE byReserved[1024]; // 预留字段 } NET_CFG_LATTICE_SCREEN_CONFIG; ///@brief 串口设备类型 typedef enum tagEM_DHRS_DEVICE_TYPE { EM_DHRS_DEVICE_TYPE_UNKNOWN, // 未知 EM_DHRS_DEVICE_TYPE_STEADYLIGHT, // 常亮灯 EM_DHRS_DEVICE_TYPE_STROBELIGHT, // 可以通过485控制的频闪灯 EM_DHRS_DEVICE_TYPE_POWERMODULE, // 电源模块 EM_DHRS_DEVICE_TYPE_LATTICESCREEN, // 点阵屏 EM_DHRS_DEVICE_TYPE_INDICATORLIGHT, // 指示灯 EM_DHRS_DEVICE_TYPE_RAINBRUSH, // 雨刷洗涤模块 EM_DHRS_DEVICE_TYPE_FLASHLAMP, // 爆闪灯 EM_DHRS_DEVICE_TYPE_RFID, // 射频识别 EM_DHRS_DEVICE_TYPE_COMMON, // 通用485 } EM_DHRS_DEVICE_TYPE; ///@brief 串口设备信息 typedef struct tagNET_CFG_DHRS_DEVICE_INFO { BOOL bEnable; // 串口设备是否启用 EM_DHRS_DEVICE_TYPE emType; // 串口设备类型 NET_CFG_LATTICE_SCREEN_CONFIG stuLatticeScreenConfig; // 485串口点阵屏配置, 当emType为EM_DHRS_DEVICE_TYPE_LATTICESCREEN 有效 BYTE byReserved[4096]; // } NET_CFG_DHRS_DEVICE_INFO; ///@brief 485串口协议设备配置信息 typedef struct tagNET_CFG_DHRS_INFO { int nDeviceNum; // 串口设备个数 NET_CFG_DHRS_DEVICE_INFO stuDHRSDeviceInfo[32]; // 串口设备信息 } NET_CFG_DHRS_INFO; ///@brief 485串口协议设备配置 typedef struct tagNET_CFG_DHRS { DWORD dwSize; // 结构体大小 int nDHRSNum; // 串口个数 NET_CFG_DHRS_INFO stuDHRSInfo[32]; // 485串口协议设备配置信息, 数组下标为物理串口号 } NET_CFG_DHRS; ///@brief 广告播放的属性设置(NET_EM_CFG_ADVERT_PLAY_RULE) typedef struct tagNET_CFG_ADVERT_PLAY_RULE { DWORD dwSize; // 结构体大小 NET_CFG_TIME_SCHEDULE stPlayTimeSchedule; // 广告播放时间段 NET_CFG_TIME_SCHEDULE stSilentTimeSchedule; // 广告静音播放时间段 } NET_CFG_ADVERT_PLAY_RULE; ///@brief 当前生效类型 typedef enum tagEM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE { EM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE_UNKNOWN = -1, // 未知 EM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE_BY_DANGER_LEVEL, // 按危险等级 EM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE_BY_DANGER_GROUP, // 按违禁物品 } EM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE; ///@brief 按危险等级上报平台 typedef struct tagNET_XRAY_UPLOAD_PLATFORM_BY_DANGER_LEVEL { BOOL bHigh; // 高危 BOOL bWarning; // 警示 BOOL bSafety; // 安全 BOOL bUnknown; // 未分类 BYTE byReserved[512]; // 预留字段 } NET_XRAY_UPLOAD_PLATFORM_BY_DANGER_LEVEL; ///@brief X光机物品 typedef struct tagNET_XRAY_OBJECT_INFO { EM_INSIDE_OBJECT_TYPE emType; // 物体类型 BOOL bEnable; // 物体检测使能 UINT nDetectThreshold; // 物体检测阈值 0~100 char szType[32]; // 解析和下发自定义物体类型时使用 char szReserved[224]; // 预留 }NET_XRAY_OBJECT_INFO; ///@brief 按违禁物品上报平台 typedef struct tagNET_XRAY_UPLOAD_PLATFORM_BY_DANGER_GROUP { EM_INSIDE_OBJECT_TYPE emGroupType; // 分组类型 BOOL bGroupEnable; // 分组上报使能 NET_XRAY_OBJECT_INFO stuObjects[64]; // 物体 int nObjectsNum; // 物体个数 char szGroupType[32]; // 自定义分组类型 BYTE byReserved[480]; // 预留字段 } NET_XRAY_UPLOAD_PLATFORM_BY_DANGER_GROUP; ///@brief 安检服务器上传平台的物品类别设置(NET_EM_CFG_XRAY_UPLOAD_PLATFORM) typedef struct tagNET_CFG_XRAY_UPLOAD_PLATFORM { DWORD dwSize; // 结构体大小 EM_XRAY_UPLOAD_PLATFORM_CURRENT_TYPE emCurrentType; // 当前生效类型 NET_XRAY_UPLOAD_PLATFORM_BY_DANGER_LEVEL stuByDangerLevel; // 按危险等级上报平台 NET_XRAY_UPLOAD_PLATFORM_BY_DANGER_GROUP stuByDangerGroup[64]; // 按违禁物品上报平台 int nByDangerGroupNum; // 按违禁物品上报平台信息个数 } NET_CFG_XRAY_UPLOAD_PLATFORM; ///@brief X光机预览叠加配置信息 typedef struct tagNET_XRAY_OVERLAY_INFO { UINT nStyle; // 显示风格: 0-贴近跟随, 1-分离跟随, 2-中心点模式 UINT nxBackground; // 文字背景使能: 0-不显示, 1-显示 UINT nxConfidence; // 相似度使能: 0-不显示, 1-显示 UINT nxPackageBorder; // 包裹框使能: 0-不显示, 1-显示 UINT nxTrackEnable; // 叠加总使能: 0-不显示, 1-显示 UINT nxTrackName; // 物品名字使能: 0-不显示, 1-显示 UINT nObjectCenterPointRadius; // 物品中心点半径, 单位像素 UINT nObjectBorderWidth; // 物品框线宽, 单位像素 UINT nFontSize; // 字体大小 char szReserved[256]; // 预留字节 }NET_XRAY_OVERLAY_INFO; ///@brief X光机预览叠加配置(NET_EM_CFG_XRAY_OVERLAY) typedef struct tagNET_CFG_XRAY_OVERLAY_INFO { DWORD dwSize; // 结构体大小 int nXRayOverlayNum; // X光机预览叠加配置信息个数, 最大值为8 NET_XRAY_OVERLAY_INFO stuXRayOverlay[8]; // X光机预览叠加配置 } NET_CFG_XRAY_OVERLAY_INFO; ///@brief 注册升级文件处理 CLIENT_NET_API LLONG CALL_METHOD CLIENT_attachAIOFileProc(LLONG lLoginID, const NET_IN_ATTACH_AIO* pstInParam, NET_OUT_ATTACH_AIO *pstOutParam, int nWaitTime); ///@brief 注销文件处理,lAttachHandle是CLIENT_attachAIOFileProc返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_detachAIOFileproc(LLONG lAttachHandle); ///@brief 设置NVR广告 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SetAIOAdvert(LLONG lLoginID, const NET_IN_SET_ADVERT* pstInParam, NET_OUT_SET_ADVERT *pstOutParam, int nWaitTime); ///@brief NVR截屏 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AIOScreen(LLONG lLoginID, const NET_IN_AIO_SCREEN* pstInParam, NET_OUT_AIO_SCREEN *pstOutParam, int nWaitTime); ///@brief 开始异步文件上传调函数原形,lUploadFileHandle 为 CLIENT_StartUploadAIOFile 接口返回值, nError是失败的错误码 typedef void (CALLBACK *fUploadAIOFileCallBack) (LLONG lUploadFileHandle, int nTotalSize, int nSendSize, LDWORD dwUser, int nError); ///@brief 开始异步文件上传 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartUploadAIOFile(LLONG lLoginID, const NET_IN_UPLOAD_AIO_FILE* pInParam, NET_OUT_UPLOAD_AIO_FILE* pOutParam, fUploadAIOFileCallBack cbUploadFile, LDWORD dwUser); ///@brief 停止异步文件上传 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopUploadAIOFile(LLONG lUploadFileID); ///@brief 控制安卓adb开启或关闭 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ControlAndroidAdb(LLONG lLoginID, const NET_IN_CONTROL_ANDROID_ADB* pstInParam, NET_OUT_CONTROL_ANDROID_ADB *pstOutParam, int nWaitTime); /* 仅针对获取ChannelTitle通道名称配置(NET_EM_CFG_ENCODE_CHANNELTITLE)时支持:是否只获取本地缓存配置(速度快)的对应功能字段 当获取通道名称配置(NET_EM_CFG_ENCODE_CHANNELTITLE)时,保留字段(void *)reserve视为支持是否只获取本地缓存配置(速度快)的对应功能字段 (void *)reserve需指向BOOL类型的变量: 该变量为TRUE时表示: 只取本地缓存配置;(需要立即返回,不需要保证配置即时与正确性) 该变量为FALSE时表示: 取所有通道配置(含本地、远程等),需要同步等待所有远程通道值取到后才返回; 此项reserve无时(为NULL),默认为FALSE,同步取所有通道配置。 */ ///@brief 获取配置信息(szOutBuffer内存由用户申请释放, 具体见枚举类型说明) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetConfig(LLONG lLoginID, NET_EM_CFG_OPERATE_TYPE emCfgOpType, int nChannelID, void* szOutBuffer, DWORD dwOutBufferSize, int waittime=NET_INTERFACE_DEFAULT_TIMEOUT, void *reserve = NULL); ///@brief 设置配置信息(szInBuffer内存由用户申请释放, 具体见枚举类型说明) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetConfig(LLONG lLoginID, NET_EM_CFG_OPERATE_TYPE emCfgOpType, int nChannelID, void* szInBuffer, DWORD dwInBufferSize, int waittime=NET_INTERFACE_DEFAULT_TIMEOUT, int *restart = NULL, void *reserve = NULL); ///@brief 设置网络自适应编码缓冲策略入参 typedef struct tagNET_IN_BUFFER_POLICY { DWORD dwSize; DH_RealPlayType emRealPlayType; // 码流类型。只支持主码流,辅码流,自适应测试码流 UINT nPolicy; // 缓冲策略,0默认,1流畅,2实时 }NET_IN_BUFFER_POLICY; ///@brief 设置编码缓冲策略,pInBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRealplayBufferPolicy(LLONG lPlayHandle,NET_IN_BUFFER_POLICY* pInBuf,int nWaitTime); ////////////////////////////////////////////////////////////////////// ///@brief TestOSD 操作类型 typedef enum tagEM_TESTOSD_OPERATE_TYPE { EM_TESTOSD_ADD_TEXT, // 添加文字信息 对应 NET_IN_TESTOSD_ADD_TEXT 和 NET_OUT_TESTOSD_ADD_TEXT EM_TESTOSD_GET_TEXT, // 获取文字信息 对应 NET_IN_TESTOSD_GET_TEXT 和 NET_OUT_TESTOSD_GET_TEXT EM_TESTOSD_MODIFY_TEXT, // 修改文字信息 对应 NET_IN_TESTOSD_MODIFY_TEXT 和 NET_OUT_TESTOSD_MODIFY_TEXT EM_TESTOSD_DELETE_TEXT, // 删除文字信息 对应 NET_IN_TESTOSD_DELETE_TEXT 和 NET_OUT_TESTOSD_DELETE_TEXT EM_TESTOSD_ADD_PICTURE, // 增加图片信息 对应 NET_IN_TESTOSD_ADD_PIC 和 NET_OUT_TESTOSD_ADD_PIC EM_TESTOSD_GET_PICTURE, // 获取图片信息 对应 NET_IN_TESTOSD_GET_PIC 和 NET_OUT_TESTOSD_GET_PIC EM_TESTOSD_DELETE_PICTURE, // 删除图片信息 对应 NET_IN_TESTOSD_DELETE_PIC 和 NET_OUT_TESTOSD_DELETE_PIC }EM_TESTOSD_OPERATE_TYPE; ///@brief 文本信息 typedef struct tagNET_TEXT_OSD { char szText[DH_COMMON_STRING_256]; // 文本内容 DH_POINT stuPoint; // 文本位置 NET_COLOR_RGBA stuTextColor; // 文本颜色 int nFontSize; // 文本字体大小 0-正常大小 1-小字体 2-大号字体 BYTE byReserved[44]; // 保留字节 }NET_TEXT_OSD; ///@brief 图片类型 typedef enum tagEM_OSDPIC_TYPE { EM_OSDPIC_UNKNOWN, // 未知照片 EM_OSDPIC_HEADONFACE, // 正面照 EM_OSDPIC_SIDEFACE, // 侧面照 EM_OSDPIC_MAP, // 地图 }EM_OSDPIC_TYPE; ///@brief 图片信息 typedef struct tagNET_PICTURE_OSD { EM_OSDPIC_TYPE emPictureType; // 图片类型 NET_RECT stuPictureLocation; // 图片位置 BYTE byReserved[48]; // 保留字节 }NET_PICTURE_OSD; ///@brief 添加文字信息入参 typedef struct tagNET_IN_TESTOSD_ADD_TEXT { DWORD dwSize; int nMaxCount; // 输入最大有效个数 NET_TEXT_OSD *pstuTextInfo; // 文字信息, 用户申请, 个数为 nMaxCount }NET_IN_TESTOSD_ADD_TEXT; ///@brief 添加文字信息出参 typedef struct tagNET_OUT_TESTOSD_ADD_TEXT { DWORD dwSize; int nReturnCount; // 返回有效个数 int *pnTextID; // 文字信息对应的ID号, 用户申请, 个数为 nMaxCount int *pnReturnCode; // 操作返回码, 0-成功 1-失败, 用户申请, 个数为 nMaxCount }NET_OUT_TESTOSD_ADD_TEXT; ///@brief 获取文字信息入参 typedef struct tagNET_IN_TESTOSD_GET_TEXT { DWORD dwSize; int nMaxCount; // 输入最大有效个数 int *pnTextID; // 文字信息对应的ID号, 用户申请, 个数为 nMaxCount }NET_IN_TESTOSD_GET_TEXT; ///@brief 获取文字信息出参 typedef struct tagNET_OUT_TESTOSD_GET_TEXT { DWORD dwSize; int nReturnCount; // 返回有效个数 NET_TEXT_OSD *pstuTextInfo; // 文字信息, 用户申请, 个数为 nMaxCount }NET_OUT_TESTOSD_GET_TEXT; ///@brief 修改文字信息入参 typedef struct tagNET_IN_TESTOSD_MODIFY_TEXT { DWORD dwSize; int nMaxCount; // 输入最大有效个数 int *pnTextID; // 文字信息对应的ID号, 用户申请, 个数为 nMaxCount NET_TEXT_OSD *pstuTextInfo; // 文字信息, 用户申请, 个数为 nMaxCount }NET_IN_TESTOSD_MODIFY_TEXT; ///@brief 修改文字信息出参 typedef struct tagNET_OUT_TESTOSD_MODIFY_TEXT { DWORD dwSize; int nReturnCount; // 返回有效个数 int *pnReturnCode; // 操作返回码, 0-成功 1-失败 用户申请, 个数为入参的nValidCount }NET_OUT_TESTOSD_MODIFY_TEXT; ///@brief 删除文字信息入参 typedef struct tagNET_IN_TESTOSD_DELETE_TEXT { DWORD dwSize; int nMaxCount; // 输入最大有效个数 int *pnTextID; // 文字信息对应的ID号 }NET_IN_TESTOSD_DELETE_TEXT; ///@brief 删除文字信息出参 typedef struct tagNET_OUT_TESTOSD_DELETE_TEXT { DWORD dwSize; int nReturnCount; // 返回有效个数 int *pnReturnCode; // 操作返回码, 0-成功 1-失败 }NET_OUT_TESTOSD_DELETE_TEXT; ///@brief 添加图片入参 typedef struct tagNET_IN_TESTOSD_ADD_PIC { DWORD dwSize; int nMaxCount; // 输入最大有效个数 char (*pszFilePath)[MAX_PATH]; // 图片存储完整路径 NET_PICTURE_OSD *pstuPicture; }NET_IN_TESTOSD_ADD_PIC; ///@brief 添加图片出参 typedef struct tagNET_OUT_TESTOSD_ADD_PIC { DWORD dwSize; int nReturnCount; // 返回有效个数 int *pnReturnCode; // 操作返回码, 0-成功 1-失败 }NET_OUT_TESTOSD_ADD_PIC; ///@brief 获取图片入参 typedef struct tagNET_IN_TESTOSD_GET_PIC { DWORD dwSize; int nCount; // 获取图片张数 }NET_IN_TESTOSD_GET_PIC; ///@brief 获取图片出参 typedef struct tagNET_OUT_TESTOSD_GET_PIC { DWORD dwSize; int nReturnCount; // 返回有效个数 char (*pszFilePath)[MAX_PATH]; // 图片存储完整路径 NET_PICTURE_OSD *pstuPicture; }NET_OUT_TESTOSD_GET_PIC; ///@brief 删除图片入参 typedef struct tagNET_IN_TESTOSD_DELETE_PIC { DWORD dwSize; int nMaxCount; // 输入最大有效个数 char (*pszFilePath)[MAX_PATH]; // 图片存储完整路径 }NET_IN_TESTOSD_DELETE_PIC; ///@brief 删除图片 出参 typedef struct tagNET_OUT_TESTOSD_DELETE_PIC { DWORD dwSize; int nReturnCount; // 返回有效个数 int *pnReturnCode; // 操作返回码, 0-成功 1-失败 }NET_OUT_TESTOSD_DELETE_PIC; ///@brief 获取报警事件日志入参 typedef struct tagNET_IN_GET_ALARM_EVENT_LOG { DWORD dwSize; UINT nEventID; // 事件ID }NET_IN_GET_ALARM_EVENT_LOG; ///@brief 获取报警事件日志出参 typedef struct tagNET_OUT_GET_ALARM_EVENT_LOG { DWORD dwSize; DWORD dwAlarmType; // 报警事件类型 BYTE *byAlarmData; // 报警事件数据,由用户申请,最少申请2*1024字节 int nMaxDataLen; // 报警事件数据申请最大长度 int nRetDataLen; // 实际返回的事件长度 }NET_OUT_GET_ALARM_EVENT_LOG; ///@brief 获取报警事件日志 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEventLog(LLONG lLoginID, const NET_IN_GET_ALARM_EVENT_LOG *pstuInParam, NET_OUT_GET_ALARM_EVENT_LOG *pstuOutParam, int nWaitTime); ///@brief TestOSD操作接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateTestOSD(LLONG lLoginID, EM_TESTOSD_OPERATE_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); ///@brief 锁定和解锁组合通道和逻辑通道入参 typedef struct tagNET_IN_COURSECOMPOSITE_LOCK_CONTROL { DWORD dwSize; BOOL bLock; // TRUE锁定,FALSE 解锁 int nClassRoomID; // 教室ID号 int nLogicChannel; // 逻辑通道号 }NET_IN_COURSECOMPOSITE_LOCK_CONTROL; ///@brief 锁定和解锁组合通道和逻辑通道出参 typedef struct tagNET_OUT_COURSECOMPOSITE_LOCK_CONTROL { DWORD dwSize; }NET_OUT_COURSECOMPOSITE_LOCK_CONTROL; ///@brief 获取锁定状态入参 typedef struct tagNET_IN_COURSECOMPOSITE_GET_LOCKINFO { DWORD dwSize; int nClassRoomID; // 教室ID号 int nLogicChannel; // 逻辑通道号 }NET_IN_COURSECOMPOSITE_GET_LOCKINFO; ///@brief 获取锁定状态出参 typedef struct tagNET_OUT_COURSECOMPOSITE_GET_LOCKINFO { DWORD dwSize; BOOL bState; // 锁定状态 }NET_OUT_COURSECOMPOSITE_GET_LOCKINFO; ///@brief CLIENT_GetDevCaps NET_GET_ADVERTIMENT_CAPS 入参 typedef struct tagNET_IN_GET_ADVERTIMENT_CAPS { DWORD dwSize; //结构体大小 }NET_IN_GET_ADVERTIMENT_CAPS; ///@brief 广告文件存储方式类型集合 typedef enum tagEM_FILE_STORAGE_TYPE { EM_FILE_STORAGE_TYPE_UNKNOWN, // 未知 EM_FILE_STORAGE_TYPE_LOCAL, // 设备直接从本地存储路径去取文件(这个文件平台可以通过FileManager.uploadFile上传到设备本地) EM_FILE_STORAGE_TYPE_FTP, // 广告文件存储在FTP服务器上,需要设备去FTP服务器上下载(楼宇以前都走这种方式) EM_FILE_STORAGE_TYPE_HTTP, // 设备从云平台给的http的URL链接去下载 }EM_FILE_STORAGE_TYPE; ///@brief 文件存储信息 typedef struct tagNET_LOCAL_STORAGE_INFO { char szPath[256]; // 广告文件存储的设备本地路径,客户端上传广告文件到设备本地 BYTE byReserved[128]; // 预留字节 }NET_LOCAL_STORAGE_INFO; ///@brief 设备支持的编码格式集合 typedef enum tagEM_ADVERTISEMENT_STREAM_TYPE { EM_ADVERTISEMENT_STREAM_TYPE_UNKNOWN, // 未知 EM_ADVERTISEMENT_STREAM_TYPE_H264, // H264的格式 EM_ADVERTISEMENT_STREAM_TYPE_H264_PRIVATE, // H264编码的dav视频 EM_ADVERTISEMENT_STREAM_TYPE_H265, // H265的格式 EM_ADVERTISEMENT_STREAM_TYPE_H265_PRIVATE, // H265编码的dav视频 EM_ADVERTISEMENT_STREAM_TYPE_MPEG4, // MPEG4编码 EM_ADVERTISEMENT_STREAM_TYPE_MPEG4_PRIVATE, // MPEG4编码的dav格式 }EM_ADVERTISEMENT_STREAM_TYPE; ///@brief 广告视频文件包含的视频文件对应的格式能力 typedef struct tagNET_ADVERTISEMENT_VIDEO { BOOL bSupport; // 是否支持视频广告播放 int nStreamTypeNum; // 设备支持编码格式集合个数 EM_ADVERTISEMENT_STREAM_TYPE emAdvertiseMentType[32]; // 设备支持的编码格式集合 UINT nMinWidth; // 视频宽的最小像素点 UINT nMaxWidth; // 视频宽的最大像素点 UINT nMinHeight; // 视频高的最小像素点 UINT nMaxHeight; // 视频高的最大像素点 BYTE byReserved[128]; // 预留字节 }NET_ADVERTISEMENT_VIDEO; ///@brief 采样深度 typedef enum tagEM_DEPTH_NUM { EM_DEPTH_NUM_UNKNOWN, // 未知 EM_DEPTH_NUM_EIGHT = 8, // 8 EM_DEPTH_NUM_SIXTEEN = 16, // 16 EM_DEPTH_NUM_TWENTYFOUR = 24, // 24 }EM_DEPTH_NUM; ///@brief 支持音频解码格式列表 typedef struct tagNET_FORMATS_INFO { EM_SPEAK_AUDIO_TYPE emCompressionType; // 音频压缩格式 UINT nFrequency; // 音频采样频率,取值范围:8000-192000 EM_DEPTH_NUM emDepthNum; // 采样深度 int nPacketPeriod; // 打包周期,单位ms取值范围:[10, 250] BYTE byReserved[128]; // 预留字节 }NET_FORMATS_INFO; ///@brief 广告文件包含的音频文件对应的能力 typedef struct tagNET_AUDIO_INFO { BOOL bSupport; // 是否支持音频广告播放 int nFormatNum; // 支持音频解码格式个数 NET_FORMATS_INFO stuFormatInfo[64]; // 支持音频解码格式列表是一个数组,最多支持64个返回。每个成员表示一个解码参数的组合 }NET_AUDIO_INFO; ///@brief 图片广告文件编码格式能力集合 typedef enum tagEM_ADVETTISEMENT_PICTURE_TYPE { EM_PICTURE_ADVETTISEMENT_TYPE_UNKNOWN, // 未知 EM_PICTURE_ADVETTISEMENT_TYPE_PNG, // PNG格式 EM_PICTURE_ADVETTISEMENT_TYPE_JPG, // JPG格式 EM_PICTURE_ADVETTISEMENT_TYPE_BMP, // BMP格式 }EM_ADVETTISEMENT_PICTURE_TYPE; ///@brief 广告文件包含的图片文件对应的格式能力 typedef struct tagNET_PICTURE_INFO { BOOL bSupport; // 是否支持图片广告播放 int nPictureNum; // 图片广告文件编码格式能力个数 EM_ADVETTISEMENT_PICTURE_TYPE emAdPictureType[32]; // 图片广告文件编码格式能力集合 UINT nMinWidth; // 图片宽的最小像素点 UINT nMaxWidth; // 图片宽的最大像素点 UINT nMinHeight; // 图片高的最小像素点 UINT nMaxHeight; // 图片高的最大像素点 UINT nOnePicMaxSize; // 单张图片文件最大大小,单位为KB UINT nMaxPicNums; // 最大支持的图片张数 BYTE byReserved[128]; // 预留字节 }NET_PICTURE_INFO; ///@brief CLIENT_GetDevCaps NET_GET_ADVERTIMENT_CAPS 入参 typedef struct tagNET_OUT_GET_ADVERTIMENT_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupport; // 是否支持广告投放 int nFileStorageTypeNum; // 广告文件存储方式类型集合个数 EM_FILE_STORAGE_TYPE emFileStorageType[32]; // 广告文件存储方式类型集合 NET_LOCAL_STORAGE_INFO stuLocalStorage; // 当FileStorageType为EM_FILE_STORAGE_TYPE_LOCAL时候,则这个存在 NET_ADVERTISEMENT_VIDEO stuAdvertimentVideo; // 广告视频文件包含的视频文件对应的格式能力 NET_AUDIO_INFO stuAudio; // 广告文件包含的音频文件对应的能力 UINT nOneAVFileMaxSize; // 单个音视频广告文件大小,单位为KB UINT nMaxAVFileNums; // 最大支持的音视频广告文件个数 NET_PICTURE_INFO stuPicture; // 广告文件包含的图片文件对应的格式能力 }NET_OUT_GET_ADVERTIMENT_CAPS; ///@brief 查询设备中投放的图片和视频文件入参 typedef struct tagNET_IN_CTRL_QUERY_DELIVERYE_FILE { DWORD dwSize; //结构体大小 }NET_IN_CTRL_QUERY_DELIVERYE_FILE; ///@brief 查询设备中投放的图片和视频文件扩展入参 typedef struct tagNET_IN_CTRL_QUERY_DELIVERYE_FILE_EX { DWORD dwSize; //结构体大小 }NET_IN_CTRL_QUERY_DELIVERYE_FILE_EX; ///@brief 设备中广告机信息的相关配置 typedef struct tagNET_QUERY_DELIVERY_FILE_INFO { BOOL bDownloaded; //文件是否已经下载到设备中 EM_DELIVERY_FILE_TYPE emFileType; //文件类型 char szLocalPath[128]; //文件下载到设备中的路径 int nSustain; //每张图片停留多长时间,仅在FileType为Image时有效 char szURL[128]; //文件的资源地址 char szURLEx[512]; //文件的资源地址扩展字段 BYTE bReserved[512]; // 预留字节 }NET_QUERY_DELIVERY_FILE_INFO; ///@brief 设备中广告机信息的相关配置(扩展) typedef struct tagNET_QUERY_DELIVERY_FILE_INFOEX { BOOL bDownloaded; //文件是否已经下载到设备中 EM_DELIVERY_FILE_TYPE emFileType; //文件类型 char szLocalPath[128]; //文件下载到设备中的路径 int nSustain; //每张图片停留多长时间,仅在FileType为Image时有效 char szURL[128]; //文件的资源地址 char szURLEx[512]; //文件的资源地址扩展字段 NET_CFG_TIME_SCHEDULE stuTimeSection; //播放时间段。 int nSize; // 文件大小 int nID; // 文件编号 BYTE bReserved[1024]; // 预留字节 }NET_QUERY_DELIVERY_FILE_INFOEX; ///@brief 查询设备中投放的图片和视频文件出参 typedef struct tagNET_OUT_CTRL_QUERY_DELIVERYE_FILE { DWORD dwSize; // 结构体大小 BOOL bEnable; // 播放使能 NET_TIME stuStartPlayTime; // 开始播放的时间 NET_TIME stuStopPlayTime; // 结束播放的时间 char szMode[20]; // 播放模式 int nFileCount; // 设备中存在的文件个数 NET_QUERY_DELIVERY_FILE_INFO stuFileInfo[MAX_VIDEO_FILE_LIST_NUM]; // 视频文件列表(推荐使用stuFileInfoEx) EM_VIDEO_PLAY_MODE_TYPE emPlayMode; // 播放类型 int nFileCountEx; // 设备中存在的文件个数 NET_QUERY_DELIVERY_FILE_INFOEX stuFileInfoEx[MAX_VIDEO_FILE_LIST_NUM]; // 视频文件列表 char szName[128]; // 广告名称 int nNumber; // 当前广告计划编号 NET_CFG_TIME_SCHEDULE stuTimeSection; // 播放时间段 }NET_OUT_CTRL_QUERY_DELIVERYE_FILE; ///@brief 查询设备中投放的图片和视频文件扩展出参 typedef struct tagNET_OUT_CTRL_QUERY_DELIVERYE_FILE_EX { DWORD dwSize; // 结构体大小 int nFileNum; // 广告计划数量,用户填写 int nRetFileNum; // 广告计划数量,实际设备返回数 NET_OUT_CTRL_QUERY_DELIVERYE_FILE* pDeliveredFile; // 广告计划 }NET_OUT_CTRL_QUERY_DELIVERYE_FILE_EX; ///@brief 获取组合通道信息入参 typedef struct tagNET_IN_COURSECOMPOSITE_GET_INFO { DWORD dwSize; int nClassRoomId; // 教室ID号 }NET_IN_COURSECOMPOSITE_GET_INFO; ///@brief 录制模式 typedef enum tagEM_COMPOSITECHANNEL_MODE { EM_COMPOSITECHANNEL_CUSTOMER = -1, // 自定义 EM_COMPOSITECHANNEL_INVALID, // 无效 EM_COMPOSITECHANNEL_MOVIE, // 电影模式 EM_COMPOSITECHANNEL_NORMALCY, // 常态模式 EM_COMPOSITECHANNEL_PICK, // 精品模式 }EM_COMPOSITECHANNEL_MODE; ///@brief 组合通道信息 typedef struct tagNET_COMPOSITECHANNEL_INFO { char szCourseName[DH_COMMON_STRING_128]; // 课程名称 char szTeacherName[DH_COMMON_STRING_64]; // 教师名称 int nCompositeChannelMode; // 录制模式; 0:无效;1:电影模式; 2:常态模式; 3:精品模式; <0:用户自定义模式 int nChannelNum; // 逻辑通道数量 BOOL bCanStream[MAX_COURSE_LOGIC_CHANNEL]; // 是否能拉流,下标对应为逻辑通道号 BYTE byReserved[256]; }NET_COMPOSITECHANNEL_INFO; ///@brief 获取组合通道信息出参 typedef struct tagNET_OUT_COURSECOMPOSITE_GET_INFO { DWORD dwSize; NET_COMPOSITECHANNEL_INFO stuChannelInfo; // 组合通道信息 }NET_OUT_COURSECOMPOSITE_GET_INFO; ///@brief 设置组合通道信息入参 typedef struct tagNET_IN_COURSECOMPOSITE_SET_INFO { DWORD dwSize; int nClassRoomId; // 教室ID号 NET_COMPOSITECHANNEL_INFO stuChannelInfo; // 组合通道信息 }NET_IN_COURSECOMPOSITE_SET_INFO; ///@brief 设置组合通道信息出参 typedef struct tagNET_OUT_COURSECOMPOSITE_SET_INFO { DWORD dwSize; }NET_OUT_COURSECOMPOSITE_SET_INFO; ///@brief 组合通道信息更新到time入参 typedef struct tagNET_IN_COURSECOMPOSITE_UPDATE_INFO { DWORD dwSize; int nClassRoomId; // 教室ID号 NET_TIME stuTime; // 查询时间 }NET_IN_COURSECOMPOSITE_UPDATE_INFO; ///@brief 组合通道信息更新到time出参 typedef struct tagNET_OUT_COURSECOMPOSITE_UPDATE_INFO { DWORD dwSize; }NET_OUT_COURSECOMPOSITE_UPDATE_INFO; ///@brief 录播主机组合通道操作 typedef enum tagEM_COURSECOMPOSITE_OPERATE_TYPE { EM_COURSECOMPOSITE_TYPE_LOCK_CONTROL, //控制组合通道与逻辑通道,对应结构体pInParam = NET_IN_COURSECOMPOSITE_LOCK_CONTROL,pOutParam = NET_OUT_COURSECOMPOSITE_LOCK_CONTROL EM_COURSECOMPOSITE_TYPE_GET_LOCKINFO, //获取组合通道与逻辑通道的锁定信息,对应结构体pInParam = NET_IN_COURSECOMPOSITE_GET_LOCKINFO,pOutParam = NET_OUT_COURSECOMPOSITE_GET_LOCKINFO EM_COURSECOMPOSITE_TYPE_GET_INFO, //获取组合通道信息,对应结构体pInParam = NET_IN_COURSECOMPOSITE_GET_INFO,pOutParam = NET_OUT_COURSECOMPOSITE_GET_INFO EM_COURSECOMPOSITE_TYPE_SET_INFO, //设置组合通道信息,对应结构体pInParam = NET_IN_COURSECOMPOSITE_SET_INFO,pOutParam = NET_OUT_COURSECOMPOSITE_SET_INFO EM_COURSECOMPOSITE_TYPE_UPDATE_INFO, //将组合通道信息更新到time时的信息,对应结构体 pInParam = NET_IN_COURSECOMPOSITE_UPDATE_INFO, pOutParam = NET_OUT_COURSECOMPOSITE_UPDATE_INFO }EM_COURSECOMPOSITE_OPERATE_TYPE; ///@brief 录播主机组合通道操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateCourseCompositeChannel(LLONG lLoginID, EM_COURSECOMPOSITE_OPERATE_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); #define NET_MAX_WINDOWS_NUMBER 64 // 录播主机窗口最大个数 #define NET_MAX_MODE_NUMBER 64 // 录播主机模式最大个数 ///@brief 录播主机窗口信息 typedef struct tagNET_COMPOSITECHANNELMODE_WINDOWS { DH_RECT stRect; // 窗口坐标, 采用8192坐标体系 int nLogicChannel; // 逻辑通道号, 为-1表示此窗口没有绑定通道 int nZOrder; // Z序 BYTE byReserved[64]; // 保留字节 }NET_COMPOSITECHANNELMODE_WINDOWS; ///@brief 录播主机模式信息 typedef struct tagNET_COMPOSITECHANNELMODE_INFO { char szName[DH_COMMON_STRING_128]; // 模式名称 int nWindowNum; // 实际窗口个数 NET_COMPOSITECHANNELMODE_WINDOWS stWindows[NET_MAX_WINDOWS_NUMBER]; // 窗口信息 BYTE byReserved[64]; // 保留字节 }NET_COMPOSITECHANNELMODE_INFO; ///@brief 录播主机添加模式入参 typedef struct tagNET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD { DWORD dwSize; // 结构体大小 int nCount; // 要添加的模式数目 NET_COMPOSITECHANNELMODE_INFO stModeInfo[NET_MAX_MODE_NUMBER]; // 模式信息 }NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD; ///@brief 录播主机添加模式返回信息 typedef struct tagNET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT { int nMode; // 模式, 0 无效, 1 电影模式, 2 常态模式, 3 精品模式, 小于0 自定义模式 int nReturnCode; // 返回码, 1 成功, 2 失败, 3 已满, 4 资源不足 BYTE byReserved[64]; // 保留字节 }NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT; ///@brief 录播主机添加模式出参 typedef struct tagNET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD { DWORD dwSize; // 结构体大小 int nCount; // 实际返回个数 NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT stResult[NET_MAX_MODE_NUMBER]; // 返回数组 }NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD; ///@brief 录播主机删除模式入参 typedef struct tagNET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE { DWORD dwSize; // 结构体大小 int nModeNum; // 删除的模式个数 int nMode[NET_MAX_MODE_NUMBER]; // 删除的模式编号 }NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE; ///@brief 录播主机删除模式出参 typedef struct tagNET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE { DWORD dwSize; // 结构体大小 int nReturnNum; // 删除的模式个数 int nReturnCode[NET_MAX_MODE_NUMBER]; // 返回码: 1 成功, 2 失败 }NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE; ///@brief 录播主机修改模式入参 typedef struct tagNET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY { DWORD dwSize; // 结构体大小 int nModeNum; // 修改的模式个数 int nMode[NET_MAX_MODE_NUMBER]; // 模式编号 NET_COMPOSITECHANNELMODE_INFO stModeInfo[NET_MAX_MODE_NUMBER]; // 模式信息 }NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY; ///@brief 录播主机修改模式出参 typedef struct tagNET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY { DWORD dwSize; // 结构体大小 int nReturnNum; // 修改的模式个数, 和修改的模式个数相同 int nReturnCode[NET_MAX_MODE_NUMBER]; // 返回码: 1 成功, 2 失败, 3, 已满, 4 资源不足 }NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY; ///@brief 录播主机获取模式入参 typedef struct tagNET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET { DWORD dwSize; // 结构体大小 int nCount; // 要获取的模式个数 }NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET; ///@brief 录播主机获取模式出参 typedef struct tagNET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET { DWORD dwSize; // 结构体大小 int nReturnNum; // 实际获取的模式个数 int nMode[NET_MAX_MODE_NUMBER]; // 模式编号 NET_COMPOSITECHANNELMODE_INFO stModeInfo[NET_MAX_MODE_NUMBER]; // 模式信息 }NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET; ///@brief 录播主机组合通道模式操作 typedef enum tagNET_COURSECOMPOSITE_MODE_OPERATE_TYPE { NET_COURSECOMPOSITE_MODE_ADD, // 添加模式,对应结构体pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD, pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD NET_COURSECOMPOSITE_MODE_DELETE, // 删除模式,对应结构体pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE, pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE NET_COURSECOMPOSITE_MODE_MODIFY, // 修改模式,对应结构体pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY, pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY NET_COURSECOMPOSITE_MODE_GET, // 获取模式,对应结构体pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET, pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET }NET_COURSECOMPOSITE_MODE_OPERATE_TYPE; ///@brief 录播主机组合通道模式操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateCourseCompositeChannelMode(LLONG lLoginID, NET_COURSECOMPOSITE_MODE_OPERATE_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); /////////////////////////////////////////////////////////////////// #define NET_UPGRADE_COUNT_MAX 256 //最大升级个数 ///@brief 获取云升级信息入参 typedef struct tagNET_IN_UPGRADER_GETSERIAL { DWORD dwSize; // 此结构体大小 } NET_IN_UPGRADER_GETSERIAL; ///@brief 云升级信息 typedef struct tagNET_UPGRADER_SERIAL_INO { ENUM_VENDOR_TYPE emVendor; //厂商 ENUM_STANDARD_TYPE emStandard; //视频制式 NET_TIME_EX stuBuild; //发布日期 char szChip[DH_COMMON_STRING_16]; //可升级的程序名 char szSerial[DH_COMMON_STRING_256]; // 内部型号 char szLanguage[DH_COMMON_STRING_128]; //语言 char szSn[DH_COMMON_STRING_64]; // 序列号 char szSWVersion[DH_COMMON_STRING_64]; // 软件版本 char szTag[DH_COMMON_STRING_256]; //自定义标记 char szTag2[DH_COMMON_STRING_256]; //自定义标记2 char reserved[1024]; }NET_UPGRADER_SERIAL_INO; ///@brief 获取云升级信息出参 typedef struct tagNET_OUT_UPGRADER_GETSERIAL { DWORD dwSize; // 此结构体大小 NET_UPGRADER_SERIAL_INO stuSerialInfo[MAX_UPGRADER_SERIAL_INFO]; // 云升级信息 int nRetNum; // 返回个数 } NET_OUT_UPGRADER_GETSERIAL; ///@brief 从设备获取信息,用于向私有云确认是否有升级包 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetUpdateSerial(LLONG lLoginID, NET_IN_UPGRADER_GETSERIAL *pstuInGetSerial, NET_OUT_UPGRADER_GETSERIAL *pstuOutGetSerial, int nWaitTime); ///@brief 云升级软件检查入参 typedef struct tagNET_IN_CLOUD_UPGRADER_CHECK { DWORD dwSize; ENUM_VENDOR_TYPE emVendor; //厂商 ENUM_STANDARD_TYPE emStandard; //视频制式 NET_TIME_EX stuBuild; //编译时间,用于比较版本 char szUrl[DH_COMMON_STRING_1024]; // 云URL char szClass[DH_COMMON_STRING_64]; // 设备大类 char szSerial[DH_COMMON_STRING_256]; // 设备硬件信号系列 char szLanguage[DH_COMMON_STRING_128]; // 语言 char szSN[DH_COMMON_STRING_64]; // 设备序列号 char szSWVersion[DH_COMMON_STRING_64]; // 版本号,用于显示 char szTag1[DH_COMMON_STRING_256]; // 预留字段,可用于后续定制或扩展 char szTag2[DH_COMMON_STRING_256]; // 预留字段,可用于后续定制或扩展 char szAccessKeyId[DH_COMMON_STRING_128];//Access Key ID char szSecretAccessKey[DH_COMMON_STRING_128];//Secret Access Key }NET_IN_CLOUD_UPGRADER_CHECK; ///@brief 云升级软件检查出参 typedef struct tagNET_OUT_CLOUD_UPGRADER_CHECK { DWORD dwSize; BOOL bHasNewVersion; // 是否有可升级版本 char szVersion[DH_COMMON_STRING_64]; //版本信息 char szAttention[DH_COMMON_STRING_1024]; // 提醒设备升级的提示信息 char szPackageUrl[DH_COMMON_STRING_1024]; // 设备升级包的URL char szPackageId[DH_COMMON_STRING_64]; //升级包ID }NET_OUT_CLOUD_UPGRADER_CHECK; ///@brief 检查云端是否有可升级软件, 使用HTTP协议 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderCheck(NET_IN_CLOUD_UPGRADER_CHECK *pIn, NET_OUT_CLOUD_UPGRADER_CHECK *pOut, DWORD dwWaitTime); ///@brief 云下载状态 typedef enum tagemCloudDownloadState { emCloudDownloadState_Unknown, //未知 emCloudDownloadState_Success, //云下载成功(需要关闭句柄) emCloudDownloadState_Failed, //云下载失败(不需要关闭句柄,会不断尝试下载) emCloudDownloadState_Downloading, //正在下载中 emCloudDownloadState_NoEnoughDiskSpace, //磁盘空间不足 }emCloudDownloadState; ///@brief 云下载回调函数指针 typedef void (CALLBACK *fCloudDownload_Process_callback)(LLONG lDownHandle, emCloudDownloadState emState, double dwDownloadSpeed, DWORD dwProgressPercentage, LDWORD dwUser); ///@brief 云升级下载升级包入参 typedef struct tagNET_IN_CLOUD_UPGRADER_DOWN { DWORD dwSize; char szPackageUrl[DH_COMMON_STRING_1024]; // 设备升级包的URL char szSaveFile[DH_COMMON_STRING_1024]; //保存文件名 fCloudDownload_Process_callback pfProcessCallback; //进度回调 LDWORD dwUser; //回调用户数据 }NET_IN_CLOUD_UPGRADER_DOWN; ///@brief 云升级下载升级包出参 typedef struct tagNET_OUT_CLOUD_UPGRADER_DOWN { DWORD dwSize; }NET_OUT_CLOUD_UPGRADER_DOWN; ///@brief 云 下载升级软件, 使用HTTP协议 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CloudUpgraderDownLoad(NET_IN_CLOUD_UPGRADER_DOWN *pIn, NET_OUT_CLOUD_UPGRADER_DOWN *pOut); ///@brief 停止云下载, 使用HTTP协议 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderStop(LLONG lDownloadHandle); ///@brief 暂停云下载, 使用HTTP协议 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderPause(LLONG lDownloadHandle, BOOL bPause); ///@brief 升级结果 typedef enum tagNET_UPGRADE_REPORT_RESULT { NET_UPGRADE_REPORT_RESULT_UNKNWON, //未知 NET_UPGRADE_REPORT_RESULT_SUCCESS, //成功 NET_UPGRADE_REPORT_RESULT_FAILED, //失败 }NET_UPGRADE_REPORT_RESULT; ///@brief 上报升级结果结构体 typedef struct tagNET_UPGRADE_REPORT { int nDeviceNum; //设备个数 char szDevSerial[NET_UPGRADE_COUNT_MAX][MAX_COMMON_STRING_64]; // 序列号 char szPacketID[MAX_COMMON_STRING_128]; //升级包ID NET_UPGRADE_REPORT_RESULT emResult; //升级结果 char szCode[MAX_COMMON_STRING_128]; // 错误码信息 char reserved[256]; }NET_UPGRADE_REPORT; ///@brief 上报升级结果入参 typedef struct tagNET_IN_UPGRADE_REPORT { DWORD dwSize; int nCount; // 升级包个数 NET_UPGRADE_REPORT *pstuUpgradeReport; //升级结果信息 char szAccessKeyId[DH_COMMON_STRING_128]; //访问ID char szSecretAccessKey[DH_COMMON_STRING_128]; //访问秘钥 char szUrl[DH_COMMON_STRING_1024]; // 云URL }NET_IN_UPGRADE_REPORT; ///@brief 上报升级结果出参 typedef struct tagNET_OUT_UPGRADE_REPORT { DWORD dwSize; }NET_OUT_UPGRADE_REPORT; ///@brief 上报升级结果, 使用HTTP协议 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderReport(NET_IN_UPGRADE_REPORT *pIn, NET_OUT_UPGRADE_REPORT *pOut, DWORD dwWaitTime); ///@brief 升级状态回调结构体 typedef struct tagNET_CLOUD_UPGRADER_STATE { DWORD dwSize; EM_UPGRADE_STATE emState; // 升级状态 int nProgress; // 升级百分比 char szFileName[DH_COMMON_STRING_128]; // 升级文件 TP_U64 nTotalLen; // 升级文件总大小,单位字节 char szFileNameEx[256]; // 升级文件扩展 char szReserved[1024]; // 扩展字段 } NET_CLOUD_UPGRADER_STATE; ///@brief 升级状态回调函数 typedef void (CALLBACK *fUpgraderStateCallback) (LLONG lLoginId, LLONG lAttachHandle, NET_CLOUD_UPGRADER_STATE* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief 订阅升级状态入参 typedef struct tagNET_IN_CLOUD_UPGRADER_ATTACH_STATE { DWORD dwSize; fUpgraderStateCallback cbUpgraderState; LDWORD dwUser; } NET_IN_CLOUD_UPGRADER_ATTACH_STATE; ///@brief 订阅升级状态出参 typedef struct tagNET_OUT_CLOUD_UPGRADER_ATTACH_STATE { DWORD dwSize; } NET_OUT_CLOUD_UPGRADER_ATTACH_STATE; ///@brief 获取升级状态入参 typedef struct tagNET_IN_CLOUD_UPGRADER_GET_STATE { DWORD dwSize; } NET_IN_CLOUD_UPGRADER_GET_STATE; ///@brief 获取升级状态出参 typedef struct tagNET_OUT_CLOUD_UPGRADER_GET_STATE { DWORD dwSize; EM_UPGRADE_STATE emState; // 升级状态 int nProgress; // 升级进度 char szFileName[DH_COMMON_STRING_128]; // 升级文件 } NET_OUT_CLOUD_UPGRADER_GET_STATE; ///@brief 获取升级相关能力集入参 typedef struct tagNET_IN_UPGRADER_GET_CAPS { DWORD dwSize; } NET_IN_UPGRADER_GET_CAPS; ///@brief 支持给第三方升级 typedef enum tagEM_EXTERN_DEVICE_UPGRADE_TYPE { EM_EXTERN_DEVICE_UPGRADE_TYPE_UNKNOWN = -1, // 未知 EM_EXTERN_DEVICE_UPGRADE_TYPE_NO_SUPPORT, // 不支持 EM_EXTERN_DEVICE_UPGRADE_TYPE_SUPPORT, //.支持 }EM_EXTERN_DEVICE_UPGRADE_TYPE; ///@brief 具体能力集信息 typedef struct tagNET_UPGRADER_CAPS { UINT nOfflineTransfer; // 支持远程下载升级包断点续传,0 不支持,默认值; 1 支持 UINT nRemoteDownload; // 支持远程下载升级包并升级,0 不支持; 1 支持,默认值 UINT nProtocol; // 类型掩码 // bit1表示http协议, 0:不支持, 1:支持 EM_EXTERN_DEVICE_UPGRADE_TYPE emExternDeviceUpgrade; // 第三方设备升级 BYTE byReserved[120]; // 保留字节 }NET_UPGRADER_CAPS; ///@brief 获取升级相关能力集出参 typedef struct tagNET_OUT_UPGRADER_GET_CAPS { DWORD dwSize; NET_UPGRADER_CAPS stuCaps; // 能力集 } NET_OUT_UPGRADER_GET_CAPS; ///@brief 取消升级程序输入参数 typedef struct tagNET_IN_UPGRADER_CANCEL { DWORD dwSize; } NET_IN_UPGRADER_CANCEL; ///@brief 取消升级程序输出参数 typedef struct tagNET_OUT_UPGRADER_CANCEL { DWORD dwSize; } NET_OUT_UPGRADER_CANCEL; ///@brief 芯片类型 typedef enum tagEM_CHIP_TYPE { EM_CHIP_TYPE_UNKNOWN, // 未知 EM_CHIP_TYPE_MAIN, // 主程序 EM_CHIP_TYPE_SUB, // 从片 EM_CHIP_TYPE_GEOGRAPHY, // 地理位置芯片 EM_CHIP_TYPE_EXTEND_TANK_N, // N取1,2,3 表示扩展柜N EM_CHIP_TYPE_EXTERN_DEVICE, // 第三方设备 }EM_CHIP_TYPE; ///@brief 选择升级芯片,入参 typedef struct tagNET_IN_UPGRADER_CHOSE_CHIP_INFO { DWORD dwSize; // 结构体大小 EM_CHIP_TYPE emChipType; // 芯片类型 }NET_IN_UPGRADER_CHOSE_CHIP_INFO; ///@brief 选择升级芯片,出参 typedef struct tagNET_OUT_UPGRADER_CHOSE_CHIP_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_UPGRADER_CHOSE_CHIP_INFO; ///@brief 升级类型 typedef enum tagEM_UPGRADE_FILE_TYPE { EM_UPGRADE_FILE_TYPE_UNKNOWN, // 未知 EM_UPGRADE_FILE_TYPE_APPLICATION, // 应用 EM_UPGRADE_FILE_TYPE_SYSTEM, // 系统 EM_UPGRADE_FILE_TYPE_FIRMWARE, // 固件 }EM_UPGRADE_FILE_TYPE; ///@brief 文件校验类型 typedef enum tagEM_CHECK_SUM_TYPE { EM_CHECK_SUM_TYPE_UNKNOWN, // 未知 EM_CHECK_SUM_TYPE_MD5, // MD5 }EM_CHECK_SUM_TYPE; ///@brief 设置第三方设备升级文件信息,入参 typedef struct tagNET_IN_UPGRADER_SET_EXTERN_DEVICE_INFO { DWORD dwSize; // 结构体大小 EM_UPGRADE_FILE_TYPE emUpgradeType; // 升级类型 int nFileLength; // 升级文件总长度 EM_CHECK_SUM_TYPE emCheckSumType; // 文件校验类型 char szCheckSum[128];// 升级包校验值 int nSessionID; // 升级更新操作流水id }NET_IN_UPGRADER_SET_EXTERN_DEVICE_INFO; ///@brief 设置第三方设备升级文件信息,出参 typedef struct tagNET_OUT_UPGRADER_SET_EXTERN_DEVICE_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_UPGRADER_SET_EXTERN_DEVICE_INFO; ///@brief 订阅升级状态观察接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CloudUpgraderAttachState(LLONG lLoginID, const NET_IN_CLOUD_UPGRADER_ATTACH_STATE *pInParam, NET_OUT_CLOUD_UPGRADER_ATTACH_STATE *pOutParam, int nWaitTime); ///@brief 退订升级状态观察接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderDetachState(LLONG lAttachHandle); ///@brief 获取升级状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUpgraderGetState(LLONG lLoginID, const NET_IN_CLOUD_UPGRADER_GET_STATE *pInParam, NET_OUT_CLOUD_UPGRADER_GET_STATE *pOutParam, int nWaitTime); ///@brief 获取升级相关能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderGetCaps(LLONG lLoginID, const NET_IN_UPGRADER_GET_CAPS *pInParam, NET_OUT_UPGRADER_GET_CAPS *pOutParam, int nWaitTime); ///@brief 取消升级程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderCancel(LLONG lLoginID, const NET_IN_UPGRADER_CANCEL *pInParam, NET_OUT_UPGRADER_CANCEL *pOutParam, int nWaitTime); ///@brief 选择升级芯片 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderChooseChip(LLONG lLoginID, const NET_IN_UPGRADER_CHOSE_CHIP_INFO *pInParam, NET_OUT_UPGRADER_CHOSE_CHIP_INFO *pOutParam, int nWaitTime); ///@brief 设置第三方设备升级文件信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderSetExternDeviceInfo(LLONG lLoginID, const NET_IN_UPGRADER_SET_EXTERN_DEVICE_INFO *pInParam, NET_OUT_UPGRADER_SET_EXTERN_DEVICE_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_UpgraderGetChipList入参 typedef struct tagNET_IN_UPGRADER_GET_CHIPLIST_INFO { DWORD dwSize; // 结构体大小 }NET_IN_UPGRADER_GET_CHIPLIST_INFO; ///@brief CLIENT_UpgraderGetChipList出参 typedef struct tagNET_OUT_UPGRADER_GET_CHIPLIST_INFO { DWORD dwSize; // 结构体大小 int nListNum; // 可以升级的芯片数量 char szList[32][16]; // 可以升级的芯片列表 }NET_OUT_UPGRADER_GET_CHIPLIST_INFO; ///@brief 获取可以升级的芯片列表 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpgraderGetChipList(LLONG lLoginID, const NET_IN_UPGRADER_GET_CHIPLIST_INFO *pstuInParam, NET_OUT_UPGRADER_GET_CHIPLIST_INFO *pstuOutParam, int nWaitTime); ///@brief 获取上传能力集入参 typedef struct tagNET_IN_CLOUDUPLOAD_GETCAPS { DWORD dwSize; // 结构体大小 }NET_IN_CLOUDUPLOAD_GETCAPS; ///@brief 获取上传能力集出参 typedef struct tagNET_OUT_CLOUDUPLOAD_GETCAPS { DWORD dwSize; // 结构体大小 BOOL bAsyncUpload; // 是否支持异步上传,TRUE:支持,FALSE:不支持 }NET_OUT_CLOUDUPLOAD_GETCAPS; ///@brief 云上传图片入参 typedef struct tagNET_IN_CLOUD_UPLOAD_PICTURE { DWORD dwSize; int nChannelID; // 通道号 int nServerType; // 上传的服务器类型,0-云服务器 1-FTP服务器 int nPicType; // 图片类型 0-司机举手照片 1-12张连拍照片 2-一寸照片 char szFileName[256]; // Ocx存储的文件名称(web客户端使用) char szAccessKeyId[DH_COMMON_STRING_64]; // 服务器访问用户名 char szAccessKeySecret[DH_COMMON_STRING_64]; // 服务器访问密码 char szBucketName[DH_COMMON_STRING_32]; // 服务器存储空间名字 char szFileKey[256]; // 服务器上存储的文件名 char szEndPoint[DH_COMMON_STRING_64]; // 文件对外服务的访问域名 UINT nFileLength; // 文件长度,单位:字节 char* pFileData; // 文件数据 } NET_IN_CLOUD_UPLOAD_PICTURE; ///@brief 云上传图片出参 typedef struct tagNET_OUT_CLOUD_UPLOAD_PICTURE { DWORD dwSize; char szFileName[256]; // 本次上传成功的文件名 char szFileURL[DH_COMMON_STRING_2048]; // 访问上传文件的域名,供web显示使用 BOOL bAsyncUploadPic; // 上传图片是否为异步,TRUE:异步,FALSE:同步 } NET_OUT_CLOUD_UPLOAD_PICTURE; ///@brief 云上传图片到服务器 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUploadPicture(LLONG lLoginID, const NET_IN_CLOUD_UPLOAD_PICTURE *pInParam, NET_OUT_CLOUD_UPLOAD_PICTURE *pOutParam, int nWaitTime); ///@brief 云上传视频入参 typedef struct tagNET_IN_CLOUD_UPLOAD_VIDEO { DWORD dwSize; int nChannelID; // 通道号 int nServerType; // 上传的服务器类型,0-云服务器 1-FTP服务器 int nAction; // 手动录像状态,0-结束手动录像 1-开始手动录像 int nStrategy; // 上传录像的策略,0-实时上传 1-策略上传(在时间段内上传,即夜间空闲上传) char szAccessKeyId[DH_COMMON_STRING_64]; // 服务器访问用户名 char szAccessKeySecret[DH_COMMON_STRING_64]; // 服务器访问密码 char szBucketName[DH_COMMON_STRING_32]; // 服务器存储空间名字 char szFileKey[256]; // 服务器上存储的文件名 char szEndPoint[DH_COMMON_STRING_64]; // 文件对外服务的访问域名 } NET_IN_CLOUD_UPLOAD_VIDEO; ///@brief 云上传视频出参 typedef struct tagNET_OUT_CLOUD_UPLOAD_VIDEO { DWORD dwSize; BOOL bAsyncUploadVideo; // 上传视频是否为异步,TRUE:异步,FALSE:同步 } NET_OUT_CLOUD_UPLOAD_VIDEO; ///@brief 云上传视频到服务器 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CloudUploadVideo(LLONG lLoginID, const NET_IN_CLOUD_UPLOAD_VIDEO *pInParam, NET_OUT_CLOUD_UPLOAD_VIDEO *pOutParam, int nWaitTime); ///@brief 抓图图片上传状态信息 typedef struct tagNET_SNAPPIC_INFO { char szFileName[256]; // 存储的文件名称 BOOL bState; // 图片是否上传成功,FALSE:失败,TRUE:成功 char szUrl[2048]; // 上传服务器后,图片的访问URL BYTE byReserved[1024]; // 预留字节 }NET_SNAPPIC_INFO; ///@brief 录像上传状态信息 typedef struct tagNET_VIDEO_INFO { char szFileName[256]; // 录像上传到服务器的名称 unsigned int nChannel; // 通道号 NET_TIME stuStartTime; // 需要上传的录像段的开始时间 NET_TIME stuEndTime; // 需要上传的录像段的结束时间 BOOL bState; // 录像是否上传成功,FALSE:失败,TRUE:成功 BYTE byReserved[1024]; // 预留字节 }NET_VIDEO_INFO; ///@brief 上传录像或者图片的进度状态信息 typedef struct tagNET_CLOUDUPLOAD_STATE { NET_SNAPPIC_INFO stuSnapPicInfo; // 抓图图片上传状态信息 NET_VIDEO_INFO stuVideoInfo; // 录像上传状态信息 BYTE byReserved[2048]; // 预留字节 }NET_CLOUDUPLOAD_STATE; ///@brief 订阅订阅上传录像或者图片的进度状态 typedef void (CALLBACK *fCloudUploadStateCallBack)(LLONG lLoginID, LLONG lAttachHandle, NET_CLOUDUPLOAD_STATE* pBuf, int nBufLen, LDWORD dwUser); ///@brief CLIENT_AttachCloudUploadState接口入参 typedef struct tagNET_IN_ATTACH_CLOUDUPLOAD_STATE { DWORD dwSize; fCloudUploadStateCallBack cbCloudUploadState; // 回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_CLOUDUPLOAD_STATE; ///@brief CLIENT_AttachCloudUploadState接口出参 typedef struct tagNET_OUT_ATTACH_CLOUDUPLOAD_STATE { DWORD dwSize; }NET_OUT_ATTACH_CLOUDUPLOAD_STATE; ///@brief 订阅上传录像或者图片的进度状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachCloudUploadState(LLONG lLoginID, NET_IN_ATTACH_CLOUDUPLOAD_STATE *pInBuf,NET_OUT_ATTACH_CLOUDUPLOAD_STATE *pOutBuf, int nWaitTime); ///@brief 取消订阅上传录像或者图片的进度状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachCloudUploadState(LLONG lAttachHandle); //////////////////////////////////////////////////////// ///@brief CLIENT_GetRecordState 入参 typedef struct tagNET_IN_GET_RECORD_STATE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 } NET_IN_GET_RECORD_STATE; ///@brief CLIENT_GetRecordState 出参 typedef struct tagNET_OUT_GET_RECORD_STATE { DWORD dwSize; // 结构体大小 BOOL bState; // 是否在录像 } NET_OUT_GET_RECORD_STATE; ///@brief 获取录像状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRecordState(LLONG lLoginID, const NET_IN_GET_RECORD_STATE *pInParam, NET_OUT_GET_RECORD_STATE *pOutParam, int nWaitTime); ///@brief 录像删除条件 typedef struct tagNET_DELETE_CONDITION_INFO { NET_TIME stuStartTime; // 开始时间 NET_TIME stuStopTime; // 停止时间 int nChannels[64]; // 通道 int nChannelNum; // nChannel实际个数 EM_STREAM_TYPE emStreamType; // 码流类型 BYTE byReserved[1024]; // 保留字节 } NET_DELETE_CONDITION_INFO; ///@brief CLIENT_DeleteRecordFile 删除录像文件, 入参 typedef struct tagNET_IN_DELETE_RECORD_FILE_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 NET_DELETE_CONDITION_INFO stuDeleteCondition; // 删除条件 } NET_IN_DELETE_RECORD_FILE_INFO; ///@brief CLIENT_DeleteRecordFile 删除录像文件, 出参 typedef struct tagNET_OUT_DELETE_RECORD_FILE_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_RECORD_FILE_INFO; ///@brief 删除录像文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteRecordFile(LLONG lLoginID, const NET_IN_DELETE_RECORD_FILE_INFO *pInParam, NET_OUT_DELETE_RECORD_FILE_INFO *pOutParam, int nWaitTime); ///@brief 考试计划 typedef struct tagNET_EXAM_RECORDING_PLAN_INFO { char szName[64]; // 考生姓名,采用UTF8编码 char szNumber[64]; // 考号 int nCameraIPNum; // 摄像头IP个数 char szCameraIP[8][32]; // 摄像头IP数组 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szResvered[256]; // 保留字节 }NET_EXAM_RECORDING_PLAN_INFO; ///@brief CLIENT_SetExamRecordingPlans 接口入参 typedef struct tagNET_IN_SET_EXAM_RECORDING_PLANS { DWORD dwSize; // 结构体大小 int nPlansNum; // 考试计划个数 NET_EXAM_RECORDING_PLAN_INFO *pstuPlans; // 考试计划, 由用户申请和释放, 最大为1024个 } NET_IN_SET_EXAM_RECORDING_PLANS; ///@brief CLIENT_SetExamRecordingPlans 接口出参 typedef struct tagNET_OUT_SET_EXAM_RECORDING_PLANS { DWORD dwSize; // 结构体大小 } NET_OUT_SET_EXAM_RECORDING_PLANS; ///@brief 添加考试录像计划 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetExamRecordingPlans(LLONG lLoginID, const NET_IN_SET_EXAM_RECORDING_PLANS *pstuInParam, NET_OUT_SET_EXAM_RECORDING_PLANS *pstuOutParam, int nWaitTime); ///@brief 获取指定教室的录像信息入参 typedef struct tagNET_IN_COURSERECORD_GETINFO { DWORD dwSize; int nClassRoomID; // 教室ID,0为默认教室 }NET_IN_COURSERECORD_GETINFO; ///@brief 获取指定教室的录像信息出参 typedef struct tagNET_OUT_COURSERECORD_GETINFO { DWORD dwSize; int nChannelNum; // 逻辑通道数量 int nCanRecord[MAX_COURSE_LOGIC_CHANNEL]; // 0:无效,1:录像,2不录像,下标对应为逻辑通道号 }NET_OUT_COURSERECORD_GETINFO; ///@brief 设置指定教室的录像信息入参 typedef struct tagNET_IN_COURSERECORD_SETINFO { DWORD dwSize; int nClassRoomID; // 教室ID,0为默认教室 int nChannelNum; // 逻辑通道数量 int nCanRecord[MAX_COURSE_LOGIC_CHANNEL]; // 0:无效,1:录像,2不录像,下标对应为逻辑通道号 }NET_IN_COURSERECORD_SETINFO; ///@brief 设置指定教室的录像信息出参 typedef struct tagNET_OUT_COURSERECORD_SETINFO { DWORD dwSize; }NET_OUT_COURSERECORD_SETINFO; ///@brief 录像信息更新到time入参 typedef struct tagNET_IN_COURSERECORD_UPDATE_INFO { DWORD dwSize; int nClassRoomID; // 教室ID,0为默认教室 NET_TIME stuTime; // 查询时间 }NET_IN_COURSERECORD_UPDATE_INFO; ///@brief 录像信息更新到time出参 typedef struct tagNET_OUT_COURSERECORD_UPDATE_INFO { DWORD dwSize; }NET_OUT_COURSERECORD_UPDATE_INFO; ///@brief 获取当前课程已录制时间入参 typedef struct tagNET_IN_COURSERECORD_GET_TIME { DWORD dwSize; int nClassRoomID; // 教室ID,0为默认教室 }NET_IN_COURSERECORD_GET_TIME; ///@brief 获取当前课程已录制时间出参 typedef struct tagNET_OUT_COURSERECORD_GET_TIME { DWORD dwSize; UINT nTime; // 已录制时间,单位:秒 }NET_OUT_COURSERECORD_GET_TIME; ///@brief 录播主机录像信息操作 typedef enum tagEM_COURSERECORD_OPERATE_TYPE { EM_COURSERECORDE_TYPE_GET_INFO, //获取教室录像信息,对应结构体pInParam = NET_IN_COURSERECORD_GETINFO,pOutParam = NET_OUT_COURSERECORD_GETINFO EM_COURSERECORDE_TYPE_SET_INFO, //设置教室录像信息,对应结构体pInParam = NET_IN_COURSERECORD_SETINFO,pOutParam = NET_OUT_COURSERECORD_SETINFO EM_COURSERECORDE_TYPE_UPDATE_INFO, //将录像信息更新到time时的信息,对应结构体 pInParam = NET_IN_COURSERECORD_UPDATE_INFO, pOutParam = NET_OUT_COURSERECORD_UPDATE_INFO EM_COURSERECORDE_TYPE_GET_TIME, //获取当前课程教室已录制时间,对应结构体 pInParam = NET_IN_COURSERECORD_GET_TIME, pOutParam = NET_OUT_COURSERECORD_GET_TIME }EM_COURSERECORD_OPERATE_TYPE; ///@brief 录播主机录像信息操作接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateCourseRecordManager(LLONG lLoginID, EM_COURSERECORD_OPERATE_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); ///@brief 回调函数 typedef void(CALLBACK *fConfigChangeCallBack)(LLONG lAttachHandle, char* szCommand, char* szBuffer, LDWORD dwUser); ///@brief 订阅配置变化入参 typedef struct tagNET_IN_ATTACH_CONFIGCHANNGE { DWORD dwSize; char* szCfgName; // 配置名称,参见dhconfigsdk.h的CLIENT_GetNewDevConfig和CLIENT_SetNewDevConfig接口的配置命令 fConfigChangeCallBack cbNotify; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_CONFIGCHANNGE; ///@brief 订阅配置变化出参 typedef struct tagNET_OUT_ATTACH_CONFIGCHANNGE { DWORD dwSize; }NET_OUT_ATTACH_CONFIGCHANNGE; ///@brief 订阅配置变化接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachConfigChange(LLONG lLoginID, NET_IN_ATTACH_CONFIGCHANNGE *pInBuf,NET_OUT_ATTACH_CONFIGCHANNGE *pOutBuf, int nWaitTime); ///@brief 取消订阅配置变化 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachConfigChange(LLONG lAttachHandle); ///@brief CLIENT_GetRingFileList 入参 typedef struct tagNET_IN_GET_RINGFILELIST { DWORD dwSize; }NET_IN_GET_RINGFILELIST; ///@brief CLIENT_GetRingFileList 出参 typedef struct tagNET_OUT_GET_RINGFILELIST { DWORD dwSize; UINT nRingFileNum; // 返回音频文件个数 char szRingFileList[MAX_RINGFILE_NUM][DH_COMMON_STRING_64];// 音频文件列表 }NET_OUT_GET_RINGFILELIST; ///@brief 获取门铃音频文件列表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRingFileList(LLONG lLoginID, NET_IN_GET_RINGFILELIST *pstuInParam, NET_OUT_GET_RINGFILELIST *pstuOutParam, int nWaitTime); ///@brief CLIENT_GetConnetionStatus 入参 typedef struct tagNET_IN_GETCONNECTION_STATUS { DWORD dwSize; } NET_IN_GETCONNECTION_STATUS; ///@brief CLIENT_GetConnetionStatus 出参 typedef struct tagNET_OUT_GETCONNECTION_STATUS { DWORD dwSize; int nChannelNum; // 通道数量 int nStatus[MAX_ALARMEXT_MODULE_NUM]; // 下标表示报警通道号,取值含义0:未分配1:离线2:在线 } NET_OUT_GETCONNECTION_STATUS; ///@brief 报警主机获取扩展模块在线状态接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetConnectionStatus(LLONG lLoginID,const NET_IN_GETCONNECTION_STATUS* pstuInParam, NET_OUT_GETCONNECTION_STATUS *pstuOutParam, int nWaitTime); #define MAX_ALARM_BOX_VIDEO_NUM 16 ///@brief CLIENT_GetAlarmBoxVideoConnectionStatus 入参 typedef struct tagNET_IN_GETALARMBOXVIDEOCONNECTION_STATUS { DWORD dwSize; } NET_IN_GETALARMBOXVIDEOCONNECTION_STATUS; ///@brief CLIENT_GetAlarmBoxVideoConnectionStatus 出参 typedef struct tagNET_OUT_GETALARMBOXVIDEOCONNECTION_STATUS { DWORD dwSize; int nChannelNum; // 报警盒通道个数 int nStatus[MAX_ALARM_BOX_VIDEO_NUM]; // 下标表示报警盒通道号,取值含义 0:未接入报警盒 1:离线 2:上线 } NET_OUT_GETALARMBOXVIDEOCONNECTION_STATUS; ///@brief 报警主机获取获取报警盒上下线状态接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAlarmBoxVideoConnectionStatus(LLONG lLoginID,const NET_IN_GETALARMBOXVIDEOCONNECTION_STATUS* pstuInParam, NET_OUT_GETALARMBOXVIDEOCONNECTION_STATUS *pstuOutParam, int nWaitTime); ///@brief 码流类型 typedef enum tagEM_GETUSERINFOBYCONDITION_USER_TYPE { EM_GETUSERINFOBYCONDITION_USER_TYPE_UNKNOWN, // 未知 EM_GETUSERINFOBYCONDITION_USER_TYPE_KEYPAD, // 键盘用户 EM_GETUSERINFOBYCONDITION_USER_TYPE_ICCARD, // IC卡用户 EM_GETUSERINFOBYCONDITION_USER_TYPE_REMOTECONTROL, // 遥控器用户 EM_GETUSERINFOBYCONDITION_USER_TYPE_MOBILE, // 手机用户 EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY, // key用户 }EM_GETUSERINFOBYCONDITION_USER_TYPE; ///@brief 用户状态 typedef enum tagEM_GETUSERINFOBYCONDITION_USER_STATUS { EM_GETUSERINFOBYCONDITION_USER_STATUS_UNKNOWN, // 未知 EM_GETUSERINFOBYCONDITION_USER_STATUS_NOPRESENT, // 不存在,未配置过用户信息 EM_GETUSERINFOBYCONDITION_USER_STATUS_INACTIVATED, // 未激活,已经配置过用户信息,但是未使能 EM_GETUSERINFOBYCONDITION_USER_STATUS_ACTIVATED, // 已激活 }EM_GETUSERINFOBYCONDITION_USER_STATUS; ///@brief CLIENT_GetAlarmUserInfoByCondition 入参 typedef struct tagNET_IN_GETALARMUSERINFO_BY_CONDITION { DWORD dwSize; EM_GETUSERINFOBYCONDITION_USER_TYPE emUserType; // 用户类型 EM_GETUSERINFOBYCONDITION_USER_STATUS emUserStatus; // 用户状态 } NET_IN_GETALARMUSERINFO_BY_CONDITION; ///@brief 用户的权限列表 typedef enum tagEM_ALARM_USERAUTHORITY { EM_ALARM_USERAUTHORITY_UNKNOWN, // 未知 EM_ALARM_USERAUTHORITY_ARMING, // 布防 EM_ALARM_USERAUTHORITY_FORCEARMING, // 强制布防 EM_ALARM_USERAUTHORITY_DISARM, // 撤防 EM_ALARM_USERAUTHORITY_BYPASS, // 旁路 EM_ALARM_USERAUTHORITY_PERMANENTBYPASS, // 永久旁路 EM_ALARM_USERAUTHORITY_ALARMCONFIRM, // 消警 EM_ALARM_USERAUTHORITY_QUERYLOG, // 查询日志 EM_ALARM_USERAUTHORITY_DEBUGMODE, // 调试模式 EM_ALARM_USERAUTHORITY_UPGRADE, // 更改基本程序,如:升级程序 EM_ALARM_USERAUTHORITY_SYSTEMCONFIG, // 添加/更改配置参数 EM_ALARM_USERAUTHORITY_USERMANAGEMENT, // 用户管理 }EM_ALARM_USERAUTHORITY; ///@brief 用户所在组 typedef enum tagEM_ALARM_USER_GROUP { EM_ALARM_USER_GROUP_UNKNOWN, // 未知 EM_ALARM_USER_GROUP_ADMIN, // 管理员 EM_ALARM_USER_GROUP_INSTALLER, // 安装员 EM_ALARM_USER_GROUP_MANUFACTURER, // 制造商 EM_ALARM_USER_GROUP_OPERATOR, // 操作员 }EM_ALARM_USER_GROUP; ///@brief 功能 typedef enum tagEM_ALARM_ONECLICKARMING_FUNCTION { EM_ALARM_ONECLICKARMING_FUNCTION_UNKNOWN, // 未知 EM_ALARM_ONECLICKARMING_FUNCTION_ONOFF, // 开关 EM_ALARM_ONECLICKARMING_FUNCTION_ONONLY, // 只开 EM_ALARM_ONECLICKARMING_FUNCTION_OFFONLY, // 只关 }EM_ALARM_ONECLICKARMING_FUNCTION; ///@brief 触发类型 typedef enum tagEM_ALARM_ONECLICKARMING_TRIGGEROPTION { EM_ALARM_ONECLICKARMING_TRIGGEROPTION_UNKNOWN, // 未知 EM_ALARM_ONECLICKARMING_TRIGGEROPTION_IMPULSE, // 脉冲 EM_ALARM_ONECLICKARMING_TRIGGEROPTION_BISTABLE, // 双稳定 }EM_ALARM_ONECLICKARMING_TRIGGEROPTION; ///@brief 布撤防类型 typedef enum tagEM_ARM_TYPE { EM_ARM_TYPE_UNKNOWN, // 未知 EM_ARM_TYPE_TOTAL_ARMING, // Total布防 EM_ARM_TYPE_PARTIAL1_ARMING, // partial1布防 EM_ARM_TYPE_PARTIAL2_ARMING, // partial2布防 EM_ARM_TYPE_PARTIAL_ARMING, // partial1+2布防 EM_ARM_TYPE_DENFENCE_ARMING, // 强制布防 EM_ARM_TYPE_DISARMING, // 撤防 }EM_ARM_TYPE; ///@brief 布防的情景模式 typedef enum tagNET_EM_SCENE_MODE { NET_EM_SCENE_MODE_UNKNOWN, // 未知模式 NET_EM_SCENE_MODE_OUTDOOR, // 外出模式 NET_EM_SCENE_MODE_INDOOR, // 在家模式 NET_EM_SCENE_MODE_WHOLE , // 全局模式 NET_EM_SCENE_MODE_RIGHTNOW, // 立即模式 NET_EM_SCENE_MODE_AUTO, // 自动模式 NET_EM_SCENE_MODE_FORCE, // 强制模式 NET_EM_SCENE_MODE_CUSTOM, // 自定义模式 NET_EM_SCENE_MODE_SLEEPING, // 就寝模式 }NET_EM_SCENE_MODE; ///@brief 一键布防配置 typedef struct tagNET_ALARM_USER_ONECLICKARMING { BOOL bEnable; // 一键布防使能 EM_ALARM_ONECLICKARMING_FUNCTION emFunction; // 布防功能 EM_ALARM_ONECLICKARMING_TRIGGEROPTION emTriggerOption; // 触发类型 NET_EM_SCENE_MODE emArmProfile; // 一键布防类型 EM_ARM_TYPE emArmMode; // 布撤防模式 BYTE byReserved[256]; // 保留字节 } NET_ALARM_USER_ONECLICKARMING; ///@brief 报警产品本地用户扩展信息 typedef struct tagNET_ALARM_USER_EXTERN { char szDuressPassword[64]; //胁迫密码 char szCard[64][32]; // 关联卡片 int nCardNum; // 关联卡片数量 char szReserved[1020]; // 保留字节 } NET_ALARM_USER_EXTERN; ///@brief 报警产品本地用户信息 typedef struct tagNET_ALARM_USER { char szID[32]; // 用户编号 EM_GETUSERINFOBYCONDITION_USER_STATUS emUserStatus; // 用户状态 char szName[64]; // 用户名 char szPassword[64]; // 密码 int nAuthorityListNum; // 用户的权限列表个数 EM_ALARM_USERAUTHORITY emAuthorityList[32]; //用户的权限列表 EM_ALARM_USER_GROUP emGroup; // 用户所在组 BOOL bReserved; // 是否为保留用户,保留用户不可删除 EM_GETUSERINFOBYCONDITION_USER_TYPE emUserType; // 用户类型 UINT nInterval; // 相同短信时间间隔,间隔时间内若有连续相同的报告触发,则不上传。(当用户类型为Key时有效)单位:秒 NET_TIME stuAccessAllowTimeStart;// 允许访问的时间 开始时间 NET_TIME stuAccessAllowTimeEnd; // 允许访问的时间 结束时间 char szMemo[32]; // 用户备注信息 int nSubSystemNum; // 关联的子系统对应子系统号的个数 int nSubSystems[64]; // 关联的子系统,对应子系统号,用户只能操作其关联的子系统 int nZoneNum; // 关联防区的个数 int nZones[256]; // 关联防区,当emUserType=EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY时用来关联Key防区。不同的Key防区可以关联不同的Key用户。 NET_ALARM_USER_ONECLICKARMING stuOneClickArming; // 一键布防配置 NET_ALARM_USER_EXTERN* pstuAlarmUserExtern; // 用户信息扩展数据,需要用户申请内存 BYTE byReserved[256-POINTERSIZE]; // 保留字节 } NET_ALARM_USER; ///@brief CLIENT_GetAlarmUserInfoByCondition 出参 typedef struct tagNET_OUT_GETALARMUSERINFO_BY_CONDITION { DWORD dwSize; // 结构体大小 UINT nUserInfoNum; // 获取到的用户数量 NET_ALARM_USER stuUserInfo[512]; // 获取到的用户信息 } NET_OUT_GETALARMUSERINFO_BY_CONDITION; ///@brief 获取报警主机的报警用户数量 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAlarmUserInfoByCondition(LLONG lLoginID,const NET_IN_GETALARMUSERINFO_BY_CONDITION* pstuInParam, NET_OUT_GETALARMUSERINFO_BY_CONDITION *pstuOutParam, int nWaitTime); ///@brief 用户权限 typedef enum tagNET_ATTENDANCE_AUTHORITY { NET_ATTENDANCE_AUTHORITY_UNKNOWN = -1, NET_ATTENDANCE_AUTHORITY_CUSTOMER, //普通用户 NET_ATTENDANCE_AUTHORITY_ADMINISTRATORS, //管理员 }NET_ATTENDANCE_AUTHORITY; #define MAX_ATTENDANCE_USERNAME_LEN 36 ///@brief 考勤用户信息 typedef struct tagNET_ATTENDANCE_USERINFO { char szUserID[MAX_COMMON_STRING_32]; //用户编号ID char szUserName[MAX_ATTENDANCE_USERNAME_LEN]; //人员姓名 char szCardNo[MAX_COMMON_STRING_32]; // 卡号 NET_ATTENDANCE_AUTHORITY emAuthority; // 用户权限 char szPassword[MAX_COMMON_STRING_32]; // 密码 int nPhotoLength; // 照片数据长度 char szClassNumber[MAX_CLASS_NUMBER_LEN]; // 班级(肯尼亚定制) char szPhoneNumber[MAX_PHONENUMBER_LEN]; // 电话(肯尼亚定制) NET_ACCESSCTLCARD_TYPE emCardType; // 卡类型 BYTE byReserved[204]; // 保留字节 }NET_ATTENDANCE_USERINFO; ///@brief CLIENT_Attendance_InsertFingerByUserID 入参 typedef struct tagNET_IN_FINGERPRINT_INSERT_BY_USERID { DWORD dwSize; char szUserID[DH_COMMON_STRING_32]; // 用户ID int nSinglePacketLen; // 单个信息数据包长度 int nPacketCount; // 信息数据包的个数 char* szFingerPrintInfo; // 信息数据(数据总长度即nSinglePacketLen*nPacketCount) }NET_IN_FINGERPRINT_INSERT_BY_USERID; ///@brief CLIENT_Attendance_InsertFingerByUserID 出参 typedef struct tagNET_OUT_FINGERPRINT_INSERT_BY_USERID { DWORD dwSize; int nFingerPrintID[DH_MAX_FINGER_PRINT]; //信息ID数组 int nReturnedCount; //数组中实际返回的个数 int nFailedCode; //错误码 0:成功; 1:其他错误; 2:超过本用户下信息能力的限制. }NET_OUT_FINGERPRINT_INSERT_BY_USERID; ///@brief CLIENT_Attendance_RemoveFingerByUserID 入参(removeByUserID) typedef struct tagNET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID { DWORD dwSize; char szUserID[DH_COMMON_STRING_32]; // 用户ID }NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID; ///@brief CLIENT_Attendance_RemoveFingerByUserID 出参 typedef struct tagNET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID { DWORD dwSize; }NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID; ///@brief CLIENT_Attendance_RemoveFingerRecord 入参(remove) typedef struct tagNET_CTRL_IN_FINGERPRINT_REMOVE { DWORD dwSize; int nFingerPrintID; //信息编号 }NET_CTRL_IN_FINGERPRINT_REMOVE; ///@brief CLIENT_Attendance_RemoveFingerRecord 出参 typedef struct tagNET_CTRL_OUT_FINGERPRINT_REMOVE { DWORD dwSize; }NET_CTRL_OUT_FINGERPRINT_REMOVE; ///@brief CLIENT_Attendance_GetFingerRecord 入参 typedef struct tagNET_CTRL_IN_FINGERPRINT_GET { DWORD dwSize; int nFingerPrintID; //信息编号 }NET_CTRL_IN_FINGERPRINT_GET; ///@brief CLIENT_Attendance_GetFingerRecord 出参 typedef struct tagNET_CTRL_OUT_FINGERPRINT_GET { DWORD dwSize; char szUserID[DH_COMMON_STRING_32]; // 所属用户的用户ID char szFingerPrintName[DH_COMMON_STRING_32]; // 信息名称 int nFingerPrintID; // 信息ID int nRetLength; // 实际返回的二进制信息数据长度 int nMaxFingerDataLength; // 二进制信息数据的最大长度 char* szFingerPrintInfo; // 信息数据 }NET_CTRL_OUT_FINGERPRINT_GET; ///@brief CLIENT_Attendance_FindUser 入参 typedef struct tagNET_IN_ATTENDANCE_FINDUSER { DWORD dwSize; int nOffset; // 查询偏移 int nPagedQueryCount; // 查询个数,分页查询,最多不超过100 }NET_IN_ATTENDANCE_FINDUSER; ///@brief CLIENT_Attendance_FindUser 出参 typedef struct tagNET_OUT_ATTENDANCE_FINDUSER { DWORD dwSize; int nTotalUser; // 总的用户数 int nMaxUserCount; // 用户信息最大缓存数 NET_ATTENDANCE_USERINFO* stuUserInfo; // 用户信息,内存由用户申请,大小为(sizeof(NET_ATTENDANCE_USERINFO)*nMaxUserCount) int nRetUserCount; // 实际返回的用户个数 int nMaxPhotoDataLength; // 照片数据最大长度 int nRetPhoteLength; // 实际返回的照片数据长度 BYTE * pbyPhotoData; // 照片数据 }NET_OUT_ATTENDANCE_FINDUSER; ///@brief CLIENT_Attendance_GetFingerByUserID 入参 typedef struct tagNET_IN_FINGERPRINT_GETBYUSER { DWORD dwSize; char szUserID[MAX_COMMON_STRING_32]; // 用户ID }NET_IN_FINGERPRINT_GETBYUSER; ///@brief CLIENT_Attendance_GetFingerByUserID 出参 typedef struct tagNET_OUT_FINGERPRINT_GETBYUSER { DWORD dwSize; int nFingerPrintIDs[DH_MAX_FINGER_PRINT]; // 信息ID数组 int nRetFingerPrintCount; // 实际返回的信息ID个数,即数组中实际有效个数 int nSinglePacketLength; // 单个信息数据包长度 int nMaxFingerDataLength; // 接受信息数据的缓存的最大长度 int nRetFingerDataLength; // 实际返回的总的信息数据包的长度 BYTE* pbyFingerData; // 信息数据 }NET_OUT_FINGERPRINT_GETBYUSER; ///@brief CLIENT_Attendance_AddUser 入参 typedef struct tagNET_IN_ATTENDANCE_ADDUSER { DWORD dwSize; NET_ATTENDANCE_USERINFO stuUserInfo; //用户信息 BYTE *pbyPhotoData; // 照片数据 }NET_IN_ATTENDANCE_ADDUSER; ///@brief CLIENT_Attendance_AddUser出参 typedef struct tagNET_OUT_ATTENDANCE_ADDUSER { DWORD dwSize; }NET_OUT_ATTENDANCE_ADDUSER; ///@brief 考勤新增加用户 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_AddUser(LLONG lLoginID, NET_IN_ATTENDANCE_ADDUSER *pstuInAddUser, NET_OUT_ATTENDANCE_ADDUSER *pstuOutAddUser, int nWaitTime); ///@brief CLIENT_Attendance_DelUser 入参 typedef struct tagNET_IN_ATTENDANCE_DELUSER { DWORD dwSize; char szUserID[MAX_COMMON_STRING_32]; //用户ID }NET_IN_ATTENDANCE_DELUSER; ///@brief CLIENT_Attendance_DelUser出参 typedef struct tagNET_OUT_ATTENDANCE_DELUSER { DWORD dwSize; }NET_OUT_ATTENDANCE_DELUSER; ///@brief 考勤删除用户 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_DelUser(LLONG lLoginID, NET_IN_ATTENDANCE_DELUSER *pstuInDelUser, NET_OUT_ATTENDANCE_DELUSER *pstuOutDelUser, int nWaitTime); ///@brief CLIENT_Attendance_ModifyUser 入参 typedef struct tagNET_IN_ATTENDANCE_ModifyUSER { DWORD dwSize; NET_ATTENDANCE_USERINFO stuUserInfo; //用户信息 BYTE *pbyPhotoData; // 照片数据 }NET_IN_ATTENDANCE_ModifyUSER; ///@brief CLIENT_Attendance_ModifyUser出参 typedef struct tagNET_OUT_ATTENDANCE_ModifyUSER { DWORD dwSize; }NET_OUT_ATTENDANCE_ModifyUSER; ///@brief 考勤修改用户信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_ModifyUser(LLONG lLoginID, NET_IN_ATTENDANCE_ModifyUSER *pstuInModifyUser, NET_OUT_ATTENDANCE_ModifyUSER *pstuOutModifyUser, int nWaitTime); ///@brief CLIENT_Attendance_GetUser 入参 typedef struct tagNET_IN_ATTENDANCE_GetUSER { DWORD dwSize; char szUserID[MAX_COMMON_STRING_32]; //用户ID }NET_IN_ATTENDANCE_GetUSER; ///@brief CLIENT_Attendance_GetUser出参 typedef struct tagNET_OUT_ATTENDANCE_GetUSER { DWORD dwSize; NET_ATTENDANCE_USERINFO stuUserInfo; //用户信息 int nMaxLength; // 最大存放照片数据的长度 BYTE * pbyPhotoData; // 照片数据 }NET_OUT_ATTENDANCE_GetUSER; ///@brief 考勤机 获取用户信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_GetUser(LLONG lLoginID, NET_IN_ATTENDANCE_GetUSER *pstuInGetUser, NET_OUT_ATTENDANCE_GetUSER *pstuOutGetUser, int nWaitTime); ///@brief 考勤机 通过用户ID插入信息数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_InsertFingerByUserID(LLONG lLoginID, NET_IN_FINGERPRINT_INSERT_BY_USERID* pstuInInsert, NET_OUT_FINGERPRINT_INSERT_BY_USERID* pstuOutInsert, int nWaitTime); ///@brief 考勤机 删除单个用户下所有信息数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_RemoveFingerByUserID(LLONG lLoginID, NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID* pstuInRemove, NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID* pstuOutRemove, int nWaitTime); ///@brief 考勤机 通过信息ID获取信息数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_GetFingerRecord(LLONG lLoginID, NET_CTRL_IN_FINGERPRINT_GET* pstuInGet, NET_CTRL_OUT_FINGERPRINT_GET* pstuOutGet, int nWaitTime); ///@brief 考勤机 通过信息ID删除信息数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_RemoveFingerRecord(LLONG lLoginID, NET_CTRL_IN_FINGERPRINT_REMOVE* pstuInRemove, NET_CTRL_OUT_FINGERPRINT_REMOVE* pstuOutRemove, int nWaitTime); ///@brief 考勤机 查找用户 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_FindUser(LLONG lLoginID, NET_IN_ATTENDANCE_FINDUSER *pstuInFindUser, NET_OUT_ATTENDANCE_FINDUSER *pstuOutFindUser, int nWaitTime); ///@brief 考勤机 通过用户ID查找该用户下的所有信息数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Attendance_GetFingerByUserID(LLONG lLoginID, NET_IN_FINGERPRINT_GETBYUSER *pstuIn, NET_OUT_FINGERPRINT_GETBYUSER *pstuOut, int nWaitTime); ///@brief 搜索设备接口子类型 typedef enum tagEM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE { EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE_UNKNOWN = -1, // 未知 EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE_NONE = 0, // 私有标准规范 EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE_ONVIF, // Onvif标准规范 EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE_UPNP, // UPnP标准规范 }EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE; ///@brief fAttachDeviceDiscoveryCB 参数 typedef struct tagNET_DEVICE_DISCOVERY_INFO { DWORD dwSize; char szMachineName[DH_COMMON_STRING_32]; // 设备名称 char szDeviceClass[DH_COMMON_STRING_32]; // 设备类型 char szDeviceType[DH_COMMON_STRING_32]; // 设备型号 char szSerialNo[DH_COMMON_STRING_32]; // 设备序列号 char szVersion[DH_COMMON_STRING_32]; // 设备软件版本号 char szMac[DH_COMMON_STRING_32]; // 设备MAC地址 int nVideoInputChannels; // 设备视频输入通道号 int nRemoteVideoInputChannels; // 远程视频输入通道数 int nVideoOutputChannels; // 视频输出通道数 int nAlarmInputChannels; // 报警输入通道数 int nAlarmOutputChannels; // 报警输出通道数 int nAudioInputChannels; // 设备音频输入通道数 int nPort; // 登陆端口 char szVendor[DH_COMMON_STRING_32]; // 客户名称 int nInit; // 设备是否已初始化:0不具备初始化功能的设备,可以等同于已初始化 1未初始化 2已初始化 char szIPv4Address[DH_COMMON_STRING_32]; // IPv4地址 char szIPv4SubnetMask[DH_COMMON_STRING_32]; // IPv4子网掩码 char szIPv4DefaultGateway[DH_COMMON_STRING_32]; // IPv4默认网关 BOOL bIPv4DhcpEnable; // IPv4是否使能DHCP char szIPv6Address[DH_COMMON_STRING_32]; // IPv6地址 char szIPv6DefaultGateway[DH_COMMON_STRING_32]; // IPv6默认网关 char szIPv6LinkLocalAddress[DH_COMMON_STRING_32]; // IPv6本地链路地址,该地址只能直连,不需要Gateway BOOL bIPv6DhcpEnable; // IPv6是否使能Dhcp char szProtocol[DH_COMMON_STRING_32]; // 设备搜索标准 }NET_DEVICE_DISCOVERY_INFO; ///@brief 注册设备搜索处理回调函数原形,lAttachHandle是CLIENT_AttachDeviceDiscovery返回值, pDeviceInfo为设备信息, nDeviceNum为设备信息数组个数 typedef void (CALLBACK *fAttachDeviceDiscoveryCB) (LLONG lAttachHandle, NET_DEVICE_DISCOVERY_INFO* pDeviceInfo, int nDeviceNum, LDWORD dwUser); ///@brief CLIENT_AttachDeviceDiscovery 接口输入参数 typedef struct tagNET_IN_ATTACH_DEVICE_DISCOVERY { DWORD dwSize; EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE emSubClassID; // 接口子类型 fAttachDeviceDiscoveryCB cbNotify; // 回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_DEVICE_DISCOVERY; ///@brief CLIENT_AttachDeviceDiscovery 接口输出参数 typedef struct tagNET_OUT_ATTACH_DEVICE_DISCOVERY { DWORD dwSize; } NET_OUT_ATTACH_DEVICE_DISCOVERY; ///@brief CLIENT_StartDeviceDiscovery 接口输入参数 typedef struct tagNET_IN_START_DEVICE_DISCOVERY { DWORD dwSize; EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE emSubClassID; // 接口子类型 int nTimeOut; // 搜索超时,搜索结果上报时间,超过此时间后,不再上报设备信息. 单位秒 } NET_IN_START_DEVICE_DISCOVERY; ///@brief CLIENT_StartDeviceDiscovery 接口输出参数 typedef struct tagNET_OUT_START_DEVICE_DISCOVERY { DWORD dwSize; } NET_OUT_START_DEVICE_DISCOVERY; ///@brief CLIENT_StopDeviceDiscovery 接口输入参数 typedef struct tagNET_IN_STOP_DEVICE_DISCOVERY { DWORD dwSize; EM_NET_DEVICE_DISCOVERY_SUBCLASSID_TYPE emSubClassID; // 接口子类型 } NET_IN_STOP_DEVICE_DISCOVERY; ///@brief CLIENT_StopDeviceDiscovery 接口输出参数 typedef struct tagNET_OUT_STOP_DEVICE_DISCOVERY { DWORD dwSize; } NET_OUT_STOP_DEVICE_DISCOVERY; ///@brief 注册设备搜索 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDeviceDiscovery(LLONG lLoginID, const NET_IN_ATTACH_DEVICE_DISCOVERY *pInParam, NET_OUT_ATTACH_DEVICE_DISCOVERY *pOutParam, int nWaitTime); ///@brief 注销设备搜索, lAttachHandle为CLIENT_AttachDeviceDiscovery 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDeviceDiscovery(LLONG lAttachHandle); ///@brief 启动设备搜索 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartDeviceDiscovery(LLONG lLoginID, const NET_IN_START_DEVICE_DISCOVERY *pInParam, NET_OUT_START_DEVICE_DISCOVERY *pOutParam, int nWaitTime); ///@brief 停止设备搜索 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopDeviceDiscovery(LLONG lLoginID, const NET_IN_STOP_DEVICE_DISCOVERY *pInParam, NET_OUT_STOP_DEVICE_DISCOVERY *pOutParam, int nWaitTime); ///@brief 设置单防区布撤防接口,pInBuf与pOutBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDefenceArmMode(LLONG lLoginID, NET_IN_SET_DEFENCEMODE* pInBuf, NET_OUT_SET_DEFENCEMODE* pOutBuf = NULL, int nWaitTime = 1000); ///@brief 获取单防区布撤防状态接口,pInBuf与pOutBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDefenceArmMode(LLONG lLoginID, NET_IN_GET_DEFENCEMODE* pInBuf, NET_OUT_GET_DEFENCEMODE* pOutBuf, int nWaitTime = 1000); ///@brief 设置子系统布撤防接口,pInBuf与pOutBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetSubSystemArmMode(LLONG lLoginID, NET_IN_SET_SUBSYSTEMMODE* pInBuf, NET_OUT_SET_SUBSYSTEMMODE* pOutBuf = NULL, int nWaitTime = 1000); ///@brief 获取子系统布撤防状态接口,pInBuf与pOutBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSubSystemArmMode(LLONG lLoginID, NET_IN_GET_SUBSYSTEMMODE* pInBuf, NET_OUT_GET_SUBSYSTEMMODE* pOutBuf, int nWaitTime = 1000); ///@brief 获取主机布撤防状态接口,pInBuf与pOutBuf内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetArmMode(LLONG lLoginID, NET_IN_GET_ARM_MODE* pInBuf, NET_OUT_GET_ARM_MODE* pOutBuf, int nWaitTime); ///@brief 批量下发门禁控制卡 ///@brief nInsertCount: 下发卡片数量,不大于 20 ///@brief pInsertCards: 需要下发的卡片信息,指向用户分配并填充的 NET_RECORDSET_ACCESS_CTL_CARD 结构体缓存,个数为 nInsertCount ///@brief nRecNo: 下发后的记录编号,与 pInsertCards 一一对应,-1 表示该项插入失败,指向用户分配的 int 缓存,个数为 nInsertCount CLIENT_NET_API BOOL CALL_METHOD CLIENT_InsertAccessControlCards(LLONG lLoginID, int nInsertCount, const NET_RECORDSET_ACCESS_CTL_CARD* pInsertCards, int* pRecNo, void* reserved = NULL, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 目标图片比较信息 typedef struct tagNET_IMAGE_COMPARE_INFO { DWORD dwoffset; // 在二进制数据块中的偏移,单位:字节 DWORD dwLength; // 图片大小,单位:字节 DWORD dwWidth; // 图片宽度 DWORD dwHeight; // 图片高度 BYTE byReserved[128]; // 保留字节 } NET_IMAGE_COMPARE_INFO; ///@brief CLIENT_MatchTwoFace 输入参数 typedef struct tagNET_MATCH_TWO_FACE_IN { DWORD dwSize; NET_IMAGE_COMPARE_INFO stuOriginalImage; // 原图 NET_IMAGE_COMPARE_INFO stuCompareImage; // 比较图 char *pSendBuf; // 两张目标图片数据 DWORD dwSendBufLen; // 数据大小 } NET_MATCH_TWO_FACE_IN; ///@brief CLIENT_MatchTwoFace 输出参数 typedef struct tagNET_MATCH_TWO_FACE_OUT { DWORD dwSize; int nSimilarity; // 两张图片的相似度,范围0~100 } NET_MATCH_TWO_FACE_OUT; ///@brief 计算两张目标图片的相似度faceRecognitionServer.matchTwoFace,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MatchTwoFaceImage(LLONG lLoginID, const NET_MATCH_TWO_FACE_IN *pstInParam, NET_MATCH_TWO_FACE_OUT *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 解码帧类型 typedef enum tagEM_DECODE_FRAME_TYPE { EM_FRAME_TYPE_UNKNOWN = -1, // 未知的 EM_FRAME_TYPE_VIDEO = 0, // 视频帧 EM_FRAME_TYPE_AUDIO = 1, // 音频帧 }EM_DECODE_FRAME_TYPE; ///@brief 解码帧扩展信息 typedef struct tagNET_FRAME_INFO_EX { DWORD dwSize; EM_DECODE_FRAME_TYPE emFrameType; //视频帧类型,见上面定义 int nFrameSeq; //帧序号 int nStamp; //时标信息,单位毫秒 int nWidth; //画面宽,单位像素.如果是音频数据则为0. int nHeight; //画面高,如果是音频数据则为0 int nFrameRate; //编码时产生的图像帧率 int nChannels; //音频通道数 int nBitPerSample; //音频采样位数 int nSamplesPerSec; //音频采样频率 int nRemainData; //缓冲剩余数据量 NET_TIME_EX nDataTime; //时间 }NET_FRAME_INFO_EX; ///@brief 解码帧信息 typedef struct tagNET_FRAME_DECODE_INFO { DWORD dwSize; EM_DECODE_FRAME_TYPE emFrameType; //帧类型,定义见FRAME_INFO_EX里nFrameType字段 void* pAudioData; //音频数据,如果是音频帧 int nAudioDataLen; //音频数据长度 void* pVideoData[3]; //分别表示视频的YUV三个分量 int nStride[3]; //分别表示YUV三个分量的跨距 int nWidth[3]; //分别表示YUV三个分量的宽度 int nHeight[3]; //分别表示YUV三个分量的高度 }NET_FRAME_DECODE_INFO; ///@brief 解码回调函数 typedef void (CALLBACK *fDecCallBack)(LLONG lLoginID, LLONG lPlayHandle, NET_FRAME_DECODE_INFO* pFrameDecodeInfo, NET_FRAME_INFO_EX* pFrameInfo, LDWORD dwUserData, LLONG nReserved); ///@brief 设置解码回调函数 CLIENT_NET_API void CALL_METHOD CLIENT_SetDecCallBack(fDecCallBack cbDecCallBack, LDWORD dwUserData, LLONG nReserved = 0); ///@brief 设置解码回调函数----扩展 CLIENT_NET_API void CALL_METHOD CLIENT_SetDecCallBackEx(fDecCallBack cbDecCallBack, LDWORD dwUserData, NET_VIDEOSTREAM_TYPE emVideoStreamType, LLONG nReserved); ///@brief 获取默认配置(目前只实现了EncodePlane配置emCfgOpType == NET_EM_CFG_ENCODE_PLAN) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevDefaultConfig(LLONG lLoginID, NET_EM_CFG_OPERATE_TYPE emCfgOpType, int nChannelID, LPVOID lpOutBuffer, DWORD dwOutBufferSize, int nWaittime); #define NET_CUSTOM_PARKING_SPACE_NUMBER_MAX_LEN 32 // 自定义车位号最大长度 ///@brief 车位指示灯颜色 typedef enum tagEM_PARKINGSPACE_LIGHT_COLOR { EM_PARKINGSPACE_LIGHT_COLOR_UNKNOWN, // 未知 EM_PARKINGSPACE_LIGHT_COLOR_RED, // 红色 EM_PARKINGSPACE_LIGHT_COLOR_YELLOW, // 黄色 EM_PARKINGSPACE_LIGHT_COLOR_GREEN, // 绿色 EM_PARKINGSPACE_LIGHT_COLOR_BLUE, // 蓝色 EM_PARKINGSPACE_LIGHT_COLOR_PURPLE, // 紫色 EM_PARKINGSPACE_LIGHT_COLOR_WHITE, // 白色 EM_PARKINGSPACE_LIGHT_COLOR_PINK, // 粉色 }EM_PARKINGSPACE_LIGHT_COLOR; ///@brief 车位指示灯状态 typedef enum tagEM_PARKINGSPACE_LIGHT_STATE { EM_PARKINGSPACE_LIGHT_STATE_UNKNOWN = -1, // 未知 EM_PARKINGSPACE_LIGHT_STATE_OFF, // 灭 EM_PARKINGSPACE_LIGHT_STATE_ON, // 亮 EM_PARKINGSPACE_LIGHT_STATE_GLINT, // 闪烁 EM_PARKINGSPACE_LIGHT_STATE_LAST_STATE, // 上一个状态 }EM_PARKINGSPACE_LIGHT_STATE; ///@brief 停车场车位指示灯亮灯计划信息 typedef struct tagNET_PARKING_SPACE_LIGHT_PLAN_INFO { EM_PARKINGSPACE_LIGHT_COLOR emColor; // 颜色 EM_PARKINGSPACE_LIGHT_STATE emState; // 状态 int nKeepTime; // 持续时间,单位秒,-1表示常亮 BYTE byReserved[128]; // 保留字节 }NET_PARKING_SPACE_LIGHT_PLAN_INFO; ///@brief 设置车位指示灯亮灯计划入参 typedef struct tagNET_IN_SET_PARKING_SPACE_LIGHT_PLAN { DWORD dwSize; // 结构体大小 int nPhysicalLane; // 物理车位号,请优先使用此字段.值为负数时表示此字段无效 char szCustomParkNo[NET_CUSTOM_PARKING_SPACE_NUMBER_MAX_LEN]; // 自定义车位编号,物理车位号字段无效时,使用此字段 int nLightPlanNum; // 亮灯计划数目 NET_PARKING_SPACE_LIGHT_PLAN_INFO* pstuLightPlan; // 亮灯计划信息,由用户申请和释放内存 }NET_IN_SET_PARKING_SPACE_LIGHT_PLAN; ///@brief 设置车位指示灯亮灯计划出参 typedef struct tagNET_OUT_SET_PARKING_SPACE_LIGHT_PLAN { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PARKING_SPACE_LIGHT_PLAN; ///@brief 设置车位检测器车灯亮灯计划,pNetDataIn与pNetDataOut由用户申请内存 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetParkingSpaceLightPlan(LLONG lLoginID,const NET_IN_SET_PARKING_SPACE_LIGHT_PLAN* pNetDataIn,NET_OUT_SET_PARKING_SPACE_LIGHT_PLAN* pNetDataOut,int nWaitTime); ///@brief CLIENT_SyncParkingInfo 地磁车位同步上报车位信息入参 typedef struct tagNET_IN_SYNC_PARKING_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szParkingNum[32]; // 车位编号 DWORD dwPresetNum; // 预置点编号 BOOL bHaveCar; // 车位是否有车 BOOL bParkingFault; // 车位是否有故障 int nSnapTimes; // 补拍次数(取值范围:0-5) int nSnapIntervel; // 补拍间隔(取值范围:3-10) }NET_IN_SYNC_PARKING_INFO; ///@brief CLIENT_SyncParkingInfo 地磁车位同步上报车位信息出参 typedef struct tagNET_OUT_SYNC_PARKING_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SYNC_PARKING_INFO; ///@brief 球机定制,地磁车位同步上报车位信息,如有车停入、或车从车位开出 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SyncParkingInfo(LLONG lLoginID, const NET_IN_SYNC_PARKING_INFO* pNetIn, NET_OUT_SYNC_PARKING_INFO* pNetOut, int nWaitTime); /************************************************************************ ** 分布式车辆人员结构化查询协议 ***********************************************************************/ ///@brief 结构化事件中图片信息 typedef struct tagDEV_ALARM_OBJECTSTRUCTLIZE_PIC_INFO { char szCutPicPath[MAX_PATH]; // 此字段表示抠图的HTTP路径 DWORD dwWidth; // 图片宽度 DWORD dwHeight; // 图片高度 BYTE byReserved[256]; // 保留字节 } DEV_ALARM_OBJECTSTRUCTLIZE_PIC_INFO; ///@brief 人员结构化查找条件或者结果,人员信息 typedef struct tagDEV_PERSON_CONDITION_RESULT_FEATURE_INFO { EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex; // 性别 BYTE byAge; // 年龄 BYTE byCall; // 是否在打电话 , 0-未识别 1-不打电话 2-打电话 BYTE byHat; // 是否戴帽子 , 0-未识别 1-不戴帽子 2-戴帽子 BYTE byBag; // 是否背包 , 0-未识别 1-不背包 2-背包 BYTE byUmbrella; // 是否打伞 , 0-未识别 1-不打伞 2-打伞 BYTE byGlasses; // 是否戴眼镜 , 0-未识别 1-不戴眼镜 2-戴眼镜 BYTE byReserved1[2]; // 字节对齐 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion; // 表情:微笑,愤怒, 悲伤, 厌恶, 害怕, 惊讶, 正常, 大笑 NET_COLOR_RGBA stuUpperBodyColor; // 上半身颜色 NET_COLOR_RGBA stuLowerBodyColor; // 下半身颜色 BYTE byReserved[256]; // 保留字节 } DEV_PERSON_CONDITION_FEATURE_INFO,DEV_PERSON_RESULT_FEATURE_INFO; ///@brief 行人特征检测事件 EVENT_IVS_OBJECTSTRUCTLIZE_PERSON typedef struct tagDEV_EVENT_OBJECTSTRUCTLIZE_PERSON_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 BYTE bReserved1[4]; // 字节对齐 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szFilePath[MAX_PATH]; // 大图文件路径 DEV_PERSON_RESULT_FEATURE_INFO stuPersonFeatrue; // 行人特征 NET_RECT stuBoundingBoxRect; // 行人在大图中的包围盒坐标,Rect格式8192坐标系 DEV_ALARM_OBJECTSTRUCTLIZE_PIC_INFO stuImageInfo; // 大图中行人抠图图片信息 int nImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_OBJECTSTRUCTLIZE_PERSON_INFO; ///@brief 非机动车特征检测事件(三轮车、摩托车、自动车etc),由于非机动上一定有人,因此事件的内容和行人特征检测事件有重叠,但算法的检测主体是非机动车. typedef struct tagDEV_EVENT_OBJECTSTRUCTLIZE_NONMOTOR_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 BYTE bReserved1[4]; // 字节对齐 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 int nEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; char szFilePath[MAX_PATH]; // 大图文件路径 char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN];// 车牌号码 DEV_PERSON_RESULT_FEATURE_INFO stuPersonFeatrue; // 非机动车上人员特征 NET_RECT stuBoundingBoxRect; // 非机动车在大图中的包围盒坐标,Rect格式8192坐标系 DEV_ALARM_OBJECTSTRUCTLIZE_PIC_INFO stuImageInfo; // 大图中的非机动车抠图信息 int nImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见 NET_RESERVED_COMMON BYTE bReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_OBJECTSTRUCTLIZE_NONMOTOR_INFO; ///@brief 倒地报警事件信息,对应 DH_ALARM_TUMBLE_DETECTION 报警 typedef struct tagALARM_TUMBLE_DETECTION_INFO { int nAction; // 事件动作,1表示报警开始,2表示报警结束; int nChannelID; // 通道号 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int UTCMS; // UTC时间对应的毫秒数 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nObjectID; // 目标ID char szObjectType[DH_COMMON_STRING_16]; // 物体类型,支持以下: // "Unknown", "Human", "Vehicle", "Fire", "Smoke", "Plate", "HumanFace", // "Container", "Animal", "TrafficLight", "PastePaper", "HumanHead", "BulletHole", "Entity" NET_RECT stuBoundingBox; // 物体包围盒 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nTriggerType; // 触发类型 -1: 未知 0: 车检器 1: 雷达 2: 视频 int nSubType; // 倒地事件子类型 -1:未知 0: 普通倒地事件1: 跌倒检测事件2: 异常躺倒事件 char szMac[32]; // 事件触发源的Mac地址 BYTE byReserved[984]; // 保留字节 }ALARM_TUMBLE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_TUMBLE_DETECTION(倒地报警事件)对应数据块描述信息 typedef struct tagDEV_EVENT_TUMBLE_DETECTION_INFO { int nChannelID; // 通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 int nAction; // 事件动作,1表示持续性事件开始,2表示持续性事件结束; double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID int UTCMS; // UTC时间对应的毫秒数 EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nObjectID; // 目标ID char szObjectType[DH_COMMON_STRING_16]; // 物体类型,支持以下: //"Unknown", "Human", "Vehicle", "Fire", "Smoke", "Plate", "HumanFace", // "Container", "Animal", "TrafficLight", "PastePaper", "HumanHead", "BulletHole", "Entity" NET_RECT stuBoundingBox; // 物体包围盒 char szSerialUUID[22]; // 智能物体全局唯一物体标识 // 有效数据位21位,包含’\0’ // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他 // 中间14位YYYYMMDDhhmmss:年月日时分秒 // 后5位%u%u%u%u%u:物体ID,如00001 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 NET_IMAGE_INFO_EX2 *pstuImageInfo; // 图片信息数组 int nImageInfoNum; // 图片信息个数 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nDetectRegionNum; // 检测区个数 NET_POINT_EX stuDetectRegion[20]; // 检测区 BYTE bReserved[834]; // 保留字节 } DEV_EVENT_TUMBLE_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_SPILLEDMATERIAL_DETECTION (抛洒物检测事件)对应数据块描述信息 typedef struct tagDEV_EVENT_SPILLEDMATERIAL_DETECTION_INFO { int nChannelID; // 通道号 char szName[128]; // 事件名称 char bReserved[4]; // 字节对齐 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID DH_MSG_OBJECT_EX stuObjects[MAX_OBJECT_NUM_EX]; // 检测到的物体 int nObjectNum; // 检测到的物体数量 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 DH_POINT stuDetectLine[DH_MAX_DETECT_LINE_NUM]; // 规则检测线 int nDetectLineNum; // 规则检测线顶点数 DH_POINT stuTrackLine[DH_MAX_TRACK_LINE_NUM];// 物体运动轨迹 int nTrackLineNum; // 物体运动轨迹顶点数 BYTE bEventAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE bReserved1[3]; // 保留字节 NET_CROSSLINE_DIRECTION_INFO emDirection; // 表示入侵方向,(nObjectNum > 0时此字段无效,由stuObjects格式下emPersonDirection字段代替) int nImageIndex; // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESERVED_COMMON int nSourceIndex; // 事件源设备上的index,-1表示数据无效,-1表示数据无效 char szSourceDevice[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备 unsigned int nOccurrenceCount; // 事件触发累计次数 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 BYTE byReserved[1028]; // 保留字节,留待扩展. }DEV_EVENT_SPILLEDMATERIAL_DETECTION_INFO; ///@brief 人证对比图片信息 typedef struct tagCITIZEN_PICTURE_COMPARE_IMAGE_INFO { DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 WORD wWidth; // 图片宽度, 单位:像素 WORD wHeight; // 图片高度, 单位:像素 BYTE byReserved[256]; // 保留字节 }CITIZEN_PICTURE_COMPARE_IMAGE_INFO; ///@brief 图片类型 typedef enum tagCITIZEN_PICTURE_COMPARE_TYPE { CITIZEN_PICTURE_COMPARE_TYPE_UNKNOWN = -1, CITIZEN_PICTURE_COMPARE_TYPE_LOCAL, // 本地目标库图 CITIZEN_PICTURE_COMPARE_TYPE_FACEMAP, // 拍摄场景图 }CITIZEN_PICTURE_COMPARE_TYPE; ///@brief 人证对比扩展图片信息 typedef struct tagCITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX { CITIZEN_PICTURE_COMPARE_TYPE emType; // 图片类型 DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节 DWORD dwFileLenth; // 文件大小, 单位:字节 WORD wWidth; // 图片宽度, 单位:像素 WORD wHeight; // 图片高度, 单位:像素 BYTE byReserved[64]; // 保留字节 }CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX; ///@brief 卡号数组信息 typedef struct tagNET_CARDNOARRAY_INFO { int nCardNum; // 卡号个数 char szCardInfo[5][64]; // 卡号信息 BYTE byReserved[1024]; // 保留字节 }NET_CARDNOARRAY_INFO; ///@brief 信息数组信息 typedef struct tagNET_FINGERPRINT_INFO { int nFingerNum; // 信息个数 char szFingerInfo[8][2048]; // 信息信息 BYTE byReserved[1024]; // 保留字节 }NET_FINGERPRINT_INFO; ///@brief 卡类型 typedef enum tagEM_CARD_TYPE { EM_CARD_TYPE_UNKNOWN, // 未知 EM_CARD_TYPE_NORMAL, // 普通卡 EM_CARD_TYPE_ID, // ID卡 EM_CARD_TYPE_CPU, // CPU卡 EM_CARD_TYPE_IDENTITY, // 证件卡 EM_CARD_TYPE_ENCRYPTION_IC, // 加密IC卡 }EM_CARD_TYPE; ///@brief 人证比对事件,用实时拍摄的目标照片,和该人持有的证件照片进行比对,并上报检测结果 ///@brief 对应事件类型为 EVENT_IVS_CITIZEN_PICTURE_COMPARE typedef struct tagDEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO { /*公共字段*/ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲, -1表示未知 double dbPTS; // 时间戳(单位是毫秒) char szName[DH_EVENT_NAME_LEN]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /*事件对应字段*/ bool bCompareResult; // 人证比对结果,相似度大于等于阈值认为比对成功,true表示成功,false表示失败 BYTE nSimilarity; // 两张图片的相似度,单位百分比,范围[1,100] BYTE nThreshold; // 检测阈值,范围[1,100] EM_CITIZENIDCARD_SEX_TYPE emSex; // 性别 int nECType; // 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的nECType定义) char szCitizen[DH_COMMON_STRING_64]; // 居民姓名 char szAddress[DH_COMMON_STRING_256]; // 住址 char szNumber[DH_COMMON_STRING_64]; // 证件号 char szAuthority[DH_COMMON_STRING_256]; // 签发机关 NET_TIME stuBirth; // 出生日期(年月日) NET_TIME stuValidityStart; // 有效期限起始日期(年月日) BOOL bLongTimeValidFlag; // 该值为 TRUE, 截止日期 表示长期有效,此时 stuValidityEnd 值无意义 // 该值为 FALSE, 此时 截止日期 查看 stuValidityEnd 值 NET_TIME stuValidityEnd; // 有效期限结束日期(年月日) CITIZEN_PICTURE_COMPARE_IMAGE_INFO stuImageInfo[2]; // 图片信息,第一张为拍摄照片,第二张为证件照片 char szCardNo[DH_COMMON_STRING_32]; // IC卡号 char szCellPhone[DH_COMMON_STRING_20]; // 手机号(比对时先输入手机号) NET_EXTENSION_INFO stuExtensionInfo; // 扩展信息 CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX stuImageInfoEx[6]; // 图片扩展信息 char szCallNumber[20]; // 呼叫号码 NET_ACCESS_DOOROPEN_METHOD emDoorOpenMethod; // 开门方式(人证照片或者人证信息) UINT nEventGroupID; // 事件ID,用于不同事件进行关联 UINT nEventType; // 事件类型:0:人证比对结果 1:人证目标采集 2:访客登记 3:目标权限下发 4:人证目标底库查询 9:学工号采集-(针对无证件的学生,支持手动输入学工号进行采集) char szUserID[32]; // 人证目标采集时人员ID(定制) char szBuildingNo[16]; // 楼号(定制) char szBuildingUnitNo[16]; // 单元号(定制) char szBuildingRoomNo[16]; // 房间号(定制) UINT nFaceIndex; // 目标序号 EM_MASK_STATE_TYPE emMask; // 口罩状态 BOOL bManTemperature; // 人员温度信息是否有效 NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo; // 人员温度信息, bManTemperature 为TRUE 时有效 double dbBulkOilQuantity; // 散装油量 (定制) int nScore; // 目标质量评分 NET_CARDNOARRAY_INFO* pstuCardNoArray; // 卡号数组信息 NET_FINGERPRINT_INFO* pstuFingerPrint; // 信息数组信息 char szIDPhysicalNumber[20]; // 物理证件号(证件序列号) EM_CARD_TYPE emCardType; // 卡类型 int nCardTypeNum; // 卡类型数组个数 EM_CARD_TYPE arrCardTypeArray[5]; // 卡类型数组 UINT nVisitorNumber; // 访客人数 char szTrafficPlate[32]; // 访客车牌 char szRespondentsName[32]; // 被访者者姓名,人证登记场景使用 char szStudentNum[32]; // 用于记录学生学号默认”FFFFFF”,若为学工号上报,则填对应学工号信息 }DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO; ///@brief 事件类型 EVENT_IVS_TRAFFIC_PARKING_ON_RIGHT_TURN_ROUTE (右转道违停)对应的数据描述信息 typedef struct tagDEV_EVENT_TRAFFIC_PARKING_ON_RIGHT_TURN_ROUTE_INFO { int nChannelID; // 通道号,从0开始 int nAction; // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; double dbPTS; // 时间戳(单位是毫秒) char szName[DH_EVENT_NAME_LEN]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nRuleID; // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0 DH_MSG_OBJECT stuObject; // 检测到的物体 DH_MSG_OBJECT stuVehicle; // 车身信息 int nLane; // 对应车道号 DH_EVENT_FILE_INFO stuFileInfo; // 事件对应文件信息 NET_TIME_EX stuStartParkingTime; // 开始停车时间 int nTriggerType; // 触发类型,0车检器,1雷达,2视频 int nMark; // 用于标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效) int nAlarmIntervalTime; // 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了) int nParkingAllowedTime; // 允许停车时长,单位:秒。 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[DH_MAX_DETECT_REGION_NUM]; // 规则检测区域 DWORD dwSnapFlagMask; // 抓图标志(按位),具体见NET_RESEED_COMMON DH_RESOLUTION_INFO stuResolution; // 对应图片的分辨率 EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息 NET_GPS_INFO stuGPSInfo; // GPS信息 车载定制 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BOOL bHasNonMotor; // 是否有非机动车对象 VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象 UINT nParkingDuration; // 违停持续时间, 单位: 秒 BYTE byPreAlarm; // 是否为违章预警图片,0 违章停车事件1 预警事件(预警触发后一定时间,车辆还没有离开,才判定为违章)由于此字段会导致事件含义改变,必须和在平台识别预警事件后,才能有此字段, char szReserved[1024]; // 保留字节,留待扩展. } DEV_EVENT_TRAFFIC_PARKING_ON_RIGHT_TURN_ROUTE_INFO; ///@brief 事件类型 EVENT_IVS_COLLISION_CONFLICT (碰撞冲突事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_COLLISION_CONFLICT_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 NET_3DFLOAT_POINT stuPosition; // 碰撞位置 NET_GPS_POSITION stuGPSPosition; // 碰撞点GPS坐标 NET_VEHICLE_FUSED_OBJECT stuObjects[4]; // 参与碰撞的目标信息 int nObjectsCount; // 参与碰撞的目标个数 UINT nLeftTime; // 碰撞剩余时间TTC,单位s,0表示已经碰撞 UINT nType; // 碰撞类型: 0-未知 1-交叉 2-追尾 3-合流 float fConflictLevel; // 冲突程度,取值范围0-1,值越大越严重,<=0.5一般冲突, >0.5严重冲突 float fConfidence; // 置信度 char szReserved[1020]; // 预留字节 }NET_DEV_EVENT_COLLISION_CONFLICT_INFO; ///@brief 事件类型 EVENT_IVS_PHOTOGRAPH_DETECTION (拍摄行为检测事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 UINT nRuleID; // 智能事件规则编号 int nGroupID; // GroupID事件组ID int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 double dbPTS; // 相对事件时间戳,单位毫秒 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 UINT nPresetID; // 事件触发的预置点号 int nDetectRegionCount; // 规则区域个数 NET_POINT_EX stuDetectRegion[20]; // 表示配置的规则区域 char szResvered1[4]; // 字节对齐 int nObjectCount; // 检测目标的物体信息个数 DH_MSG_OBJECT *pstuObjects; // 检测目标的物体信息 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 char szDriverID[32]; // 司机ID NET_GPS_INFO stuGPSInfo; // GPS信息 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO; ///@brief 事件类型 EVENT_IVS_REFUELING_GUN_PERSON (提枪识别动作事件)对应的数据块描述信息 typedef struct tagNET_DEV_EVENT_REFUELING_GUN_PERSON_INFO { int nChannelID; // 通道号 int nAction; // 0:脉冲,1:开始, 2:停止 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 扩展协议字段 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 INT64 nGroupID; // GroupID事件组ID int nCountInGroup; // CountInGroup一个事件组内的抓拍张数 int nIndexInGroup; // IndexInGroup一个事件组内的抓拍序号 double dbPTS; // 相对事件时间戳,单位毫秒 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件编号,用来唯一标志一个事件 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 NET_VAOBJECT_ANIMAL_INFO stuObjects[8]; // 表示检测的动物信息 int nObjectCount; // 检测目标的动物信息个数 int nDetectRegionCount; // 规则区域个数 NET_POINT_EX stuDetectRegion[20]; // 表示配置的规则区域 char szUserName[32]; // 用户名称 UINT nPresetID; // 事件触发的预置点号 int nType; // 人员类型 0:未知 1:顾客 2:工作人员 int nSex; // 性别 0:未知 1:男 2:女 int nAgeSeg; // 年龄段 0:未知 2:婴儿 10:幼年 28:青年 50:中年 60:老年 char szReserved[1024]; // 预留字节 }NET_DEV_EVENT_REFUELING_GUN_PERSON_INFO; ///@brief 当前运行模式 typedef enum tagEM_CURRENT_OPERATE_MODE { EM_CURRENT_OPERATE_UNKNOWN, // 未知 EM_CURRENT_OPERATE_MULPERIOD, // 多时段控制 EM_CURRENT_OPERATE_MANUAL_CONTROL, // 手动控制 EM_CURRENT_OPERATE_TURNOFFLIGHT_CONTROL, // 关灯控制 EM_CURRENT_OPERATE_ALLRED_CONTROL, // 全红控制 EM_CURRENT_OPERATE_ADAPTFILTER_CONTROL, // 自适应滤波控制 EM_CURRENT_OPERATE_INDUCTION_CONTROL, // 感应控制 EM_CURRENT_OPERATE_YELLOWFLASH_CONTROL, // 黄闪控制 EM_CURRENT_OPERATE_SINGAL_ADAPTINVE, // 单点自适应模式 EM_CURRENT_OPERATE_TMPPLATFORM_PLAN, // 平台临时方案模式 EM_CURRENT_OPERATE_TEMP_HAND, // 临时手控模式 EM_CURRENT_OPERATE_REALTIME_CONTROL, // 实时控制模式 EM_CURRENT_OPERATE_LIGHT_OFF, // 灭灯模式 EM_CURRENT_OPERATE_RED_FLASH, // 红闪模式 EM_CURRENT_OPERATE_GREEN_FLASH, // 绿闪模式 EM_CURRENT_OPERATE_PEDESTRAIN_PRIORITY, // 行人优先控制模式 EM_CURRENT_OPERATE_CONFGOVERFLOW_CONTROL, // 拥堵溢出控制模式 EM_CURRENT_OPERATE_NIGHT_REQUEST, // 夜间请求模式 }EM_CURRENT_OPERATE_MODE; ///@brief 相机状态 typedef enum tagEM_CAMERA_STATUS { EM_CAMERA_UNKNOWN, // 未知 EM_CAMERA_RED, // 红灯 EM_CAMERA_YELLOW, // 黄灯 EM_CAMERA_GREEN, // 绿灯 EM_CAMERA_RED_FLASH, // 红闪 EM_CAMERA_YELLOW_FLASH, // 黄闪 EM_CAMERA_GREEN_FLASH, // 绿闪 EM_CAMERA_LIGHT_OFF, // 灭灯 }EM_CAMERA_STATUS; ///@brief 运行相位信息 typedef struct tagRUN_PHASE_INFO { int nPhaseNum; // 相位编号,A为1 int nPhaseOrder; // nt, 相位重复出现的次数,默认为1, A1为1,A2该字段为2 unsigned int nCarLamp; // 当前相位对应的车行灯通道,按位表示,低bit表示通道1 unsigned int nPsgLamp; // 当前相位对应的行人灯通道,按位表示,低bit表示通道1 EM_CAMERA_STATUS emCameraStatus; // 相机状态 int nCntDown; // 相位对应灯色倒计时 BYTE byReserved[512]; // 预留字节 }RUN_PHASE_INFO; ///@brief RTSC跑动暂停事件, 对应事件类型 DH_ALARM_RTSC_PHASE_RUNING typedef struct tagALARM_RTSC_PHASE_RUNNING_INFO { int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 EM_CURRENT_OPERATE_MODE emCurOperateMode; // 当前运行模式 int nRunPhaseNum; // 运行相位个数 RUN_PHASE_INFO stRunPhaseInfo[16]; // 运行相位信息 BYTE byReserved[512]; // 预留字节 }ALARM_RTSC_PHASE_RUNNING_INFO; ///@brief 运行灯组信息 typedef struct tagRUN_LAMP_INFO { int nLampNum; // 通道编号 EM_CAMERA_STATUS emCameraStatus; // 相机状态 int nCntDown; // 通道对应灯色倒计时 BYTE byReserved[256]; // 预留字节 }RUN_LAMP_INFO; ///@brief RTSC灯暂停事件, 对应事件类型 DH_ALARM_RTSC_LAMP_RUNING typedef struct tagALARM_RTSC_LAMP_RUNNING_INFO { int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 EM_CURRENT_OPERATE_MODE emCurOperateMode; // 当前运行模式 int nRunLampNum; // 运行灯组个数 RUN_LAMP_INFO stuRunLampInfo[16]; // 运行灯组信息 BYTE byReserved[512]; // 预留字节 }ALARM_RTSC_LAMP_RUNNING_INFO; ///@brief 设备状态 typedef enum tagEM_STATUS { EM_STATUS_UNKNOWN = -1, // 未知 EM_STATUS_INVALID, // 无效 EM_STATUS_NORMAL, // 工作正常 EM_STATUS_FAULT, // 故障状态 EM_STATUS_OTHER, // 其他 }EM_STATUS; ///@brief 灯组类型 typedef enum tagEM_LAMP_TYPE { EM_LAMP_TYPE_UNKNOWN, // 未知 EM_LAMP_TYPE_STRAIGHT, // 直行方向指示信号灯 EM_LAMP_TYPE_LEFT, // 左转方向指示信号灯 EM_LAMP_TYPE_RIGHT, // 右转方向指示信号灯 EM_LAMP_TYPE_MOTORVEHICLE, // 机动车信号灯 EM_LAMP_TYPE_LEFT_NOMOTOR, // 左转非机动车信号灯 EM_LAMP_TYPE_RIGHT_NOMOTOR, // 右转非机动车信号灯 EM_LAMP_TYPE_NOMOTOR, // 非机动车信号灯 EM_LAMP_TYPE_SIDEWALK, // 人行横道信号灯 EM_LAMP_TYPE_TURNAROUND, // 掉头信号灯 EM_LAMP_TYPE_LANE, // 车道信号灯 EM_LAMP_TYPE_CROSSING, // 道口信号灯 EM_LAMP_TYPE_FLASH_WARN, // 闪光警告信号灯 EM_LAMP_TYPE_TRAM_DEDICATED_STRAIGHT, // 有轨电车专用信号灯(直行) EM_LAMP_TYPE_TRAM_DEDICATED_LEFT, // 有轨电车专用信号灯(左转) EM_LAMP_TYPE_TRAM_DEDICATED_RIGHT, // 有轨电车专用信号灯(右转) }EM_LAMP_TYPE; ///@brief 色步时间序列信息 typedef struct tagSTEP_SEQUENCE_INFO { int nLampColorCount; // 灯色个数 int nLampColor[4]; // 灯色 当灯组类型EM_LAMP_TYPE为EM_LAMP_TYPE_STRAIGHT-EM_LAMP_TYPE_FLASH_WARN时,int[0]用于表示红色发光单元,int[1]用于表示黄色发光单元,int[2]用于表示绿色发光单元,int[3]保留 // 当灯组类型为EM_LAMP_TYPE_TRAM_DEDICATED_STRAIGHT-EM_LAMP_TYPE_TRAM_DEDICATED_RIGHT时,int[0]用于表示禁止通行信号发光单元,int[1]用于表示过渡信号发光单元,int[2]用于表示通行信号发光单元,int[3]保留 // 具体取值0:无灯1:灭灯2:亮灯3:闪烁 int nTime; // 时间长度,单位为秒(s) BYTE byReserved[128]; // 预留字节 }STEP_SEQUENCE_INFO; ///@brief 灯组/灯色公共信息 typedef struct tagLAMP_INFO { EM_LAMP_TYPE emLampType; // 灯组类型 int nLampNo; // 灯组编号 int nStepNumber; // 色步数 int nStepSequenceInfoNum; // 色步时间序列信息个数 STEP_SEQUENCE_INFO stuStepSequenceInfo[10]; // 色步时间序列信息 BYTE byReserved[256]; // 预留字节 }LAMP_INFO; ///@brief 灯组灯色信息 typedef struct tagLAMP_GROUP_INFO { int nLampNo; // 灯组编号 EM_LAMP_TYPE emLampType; // 灯组类型 int nRemainTime; // 信号灯组灯色剩余时间,整数,单位为秒(s) int nLampColorCount; // 灯组灯色个数 int nLampColor[4]; // 灯组灯色当灯组类型为1~12时,int[0]表示红色发光单元,int[1]表示黄色发光单元,int[2]表示绿色发光单元,int[3]保留 // 当灯组类型为13~15时,int[0]用于表示禁止通行信号发光单元,int[1]用于表示过渡信号发光单元,int[2]用于表示通行信号发光单元,int[3]保留 // 具体取值 0:无灯 1:灭灯 2:亮灯3:闪烁 BYTE byReserved[128]; // 预留字节 }LAMP_GROUP_INFO; ///@brief 进口灯色状态信息 typedef struct tagENTER_INFO { int nEnterDir; // 进口方向 int nLampNumber; // 进口灯组数量(0~48) int nLampGroupNum; // 灯组灯色信息个数 LAMP_GROUP_INFO stuLampGroupInfo[48]; // 灯组灯色信息,包含1到M(进口灯组数量)个灯组灯色信息 BYTE byReserved[64]; // 预留字节 }ENTER_INFO; ///@brief 灯色状态信息 typedef struct tagLAMP_STATE { int nEnterNumber; // 信号灯控制路口的进口数量(0~8) int nEnterInfoNum; // 进口灯色状态信息个数 ENTER_INFO stuEnterInfo[8]; // 进口灯色状态信息,包含1到N(路口进口数量)个进口灯色状态信息 BYTE byReserved[128]; // 预留字节 }LAMP_STATE; ///@brief 控制模式 typedef enum tagEM_CONTROL_MODE { EM_CONTROL_UNKNOWN, // 未知 EM_CONTROL_YELLOW_FLASH, // 黄闪控制 EM_CONTROL_MULITI_TIME, // 多时段控制 EM_CONTROL_MANUAL, // 手动控制 EM_CONTROL_INDUCTION, // 感应控制 EM_CONTROL_WIRELESS_COORDINATION, // 无电缆协调控制 EM_CONTROL_SINGLE_OPTIMIZATION, // 单点协调控制 EM_CONTROL_BUS_SINGAL, // 公交信号优先 EM_CONTROL_EMERGENCY_SINGAL, // 紧急信号优先 EM_CONTROL_OTHER, // 其他 }EM_CONTROL_MODE; ///@brief 车道信息 typedef struct tagLANE_INFO_EX { DWORD nLaneType; // 车道类型 BYTE byReserved[64]; // 预留字节 }LANE_INFO_EX; ///@brief 车道交通运行状态 typedef enum tagEM_LANE_RUNING_STATE { EM_LANE_RUNING_UNKNOWN, // 未知 EM_LANE_RUNING_UNBLOCKED, // 畅通 EM_LANE_RUNING_BASIC_UNBLOCKED, // 基本畅通 EM_LANE_RUNING_LIGHT_CONGESTION, // 轻度拥堵 EM_LANE_RUNING_MIDDLE_CONGESTION, // 中度拥堵 EM_LANE_RUNING_SERIOUS_CONGESTION, // 严重拥堵 }EM_LANE_RUNING_STATE; ///@brief 车道交通运行状态信息 typedef struct tagLANE_STATE_INFO { UINT nType; // 车道类型 // 按位表示,Bit0~Bit15分别为: Bit0:直行 Bit1:左转 Bit2:右转 Bit3:掉头 Bit4:可变功能 Bit5:潮汐 Bit6:非机动 Bit7:公交专用 Bit8:有轨电车 Bit9~ Bit15保留 取值1表示具有,0表示不具有 EM_LANE_RUNING_STATE emLaneRunState; // 车道交通运行状态 BYTE byReserved[128]; // 预留字节 }LANE_STATE_INFO; ///@brief 车道信息(0~8) typedef struct tagLANE_STATE_INFO_EX { UINT nType; // 车道类型 // 按位表示,Bit0~Bit15分别为: Bit0:直行 Bit1:左转 Bit2:右转 Bit3:掉头 Bit4:可变功能 Bit5:潮汐 Bit6:非机动 Bit7:公交专用 Bit8:有轨电车 Bit9~ Bit15保留 取值1表示具有,0表示不具有 BYTE byReserved[128]; // 预留字节 }LANE_STATE_INFO_EX; ///@brief 进口车道功能状态信息 typedef struct tagENTER_LANE_STATE { int nEnterDir; // 进口方向(0~359)以地理正北方向为起点的顺时针旋转角度,单位为度(°) int nLaneNumber; // 进口车道总数该进口车道总数,包含该进口所有车道 int nLaneInfoNum; // 车道信息个数 LANE_STATE_INFO_EX stuLaneInfoEx[8]; // 车道信息(0~8) BYTE byReserved[128]; // 预留字节 }ENTER_LANE_STATE; ///@brief 车道功能状态 typedef struct tagLANE_STATE { int nEnterNumber; // 功能可变车道进口数量路口具有功能可变车道进口的数量 int nEnterLaneStateNum; // 进口车道功能状态信息个数 ENTER_LANE_STATE stuEnterLaneStateInfo[8]; // 进口车道功能状态信息(0~8)包含1到N(功能可变车道进口数量)个进口车道功能状态信息 BYTE byReserved[128]; // 预留字节 }LANE_STATE; ///@brief 控制信息 typedef struct tagCTRL_INFO { DWORD nType; // 按位表示:Bit0:车道 Bit1:进口匝道 Bit2:出口匝道 Bit3~Bit7:保留 取值1表示具有,0表示不具有 int nNo; // 编号 int nDir; // 方向 整数,以地理正北方向为起点的顺时针旋转角度,单位为度(°) int nStatus; // 车道/匝道信号 1:开放 2:关闭 BYTE byReserved[128]; // 预留字节 }CTRL_INFO; ///@brief 车道/匝道控制状态 typedef struct tagLANE_CTRL_STATE { int nNumber; // 车道/匝道数量 int nCtrlNum; // 控制信息个数 CTRL_INFO stuCtrlInfo[64]; // 控制信息(0-64) BYTE byReserved[128]; // 预留字节 }LANE_CTRL_STATE; ///@brief 灯组色步信息 typedef struct tagSTEP_INFO { int nEnterDir; // 进口方向 int nEnterLampNumber; // 进口灯组数量 int nLampInfoNum; // 灯色信息个数 LAMP_INFO stuLampInfo[10]; // 灯色信息(0~10)包含1到M(进口灯组数量)个灯色信息 BYTE byReserved[128]; // 预留字节 }STEP_INFO; ///@brief 当前信号方案色步信息 typedef struct tagCUR_STEP_INFO { int nLampNumber; // 灯组总数量 int nEnterNumber; // 信号灯控制路口的进口数量 int nStepInfoNum; // 灯组色步信息个数 STEP_INFO stuStepInfo[8]; // 灯组色步信息(0~8)包含1到N(进口数量)个灯组色步信息 BYTE byReserved[128]; // 预留字节 }CUR_STEP_INFO; ///@brief 下一个周期信号方案色步信息 typedef struct tagNEXT_STEP_INFO { int nLampNumber; // 灯组总数量 int nEnterNumber; // 信号灯控制路口的进口数量 int nStepInfoNum; // 灯组色步信息个数 STEP_INFO stuStepInfo[8]; // 灯组色步信息(0~8)包含1到N(进口数量)个灯组色步信息 BYTE byReserved[128]; // 预留字节 }NEXT_STEP_INFO; ///@brief 信号机运行事件, 对应事件类型 DH_ALARM_RTSC_RUNING typedef struct tagALARM_RTSC_RUNNING_INFO { int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 DWORD dwReportState; // bit0:运行状态 // bit1:控制方式 // bit2:灯色状态信息 // bit3:车道功能状态 // bit4:车道/匝道控制状态信息 // bit5:当前信号方案色步信息 // bit6: 下一个周期信号方案色步信息 int nLongitudeNum; // 经度个数 double dbLongitude[3]; // 经度,格式:度,分,秒(秒为浮点数) int nLatitudeNum; // 纬度个数 double dbLatitude[3]; // 纬度,格式:度,分,秒(秒为浮点数) double dbAltitude; // 高度,单位为米 NET_TIME_EX UTC; // 事件发生时间,带时区偏差的UTC时间,单位秒 EM_STATUS emStatus; // 设备状态 EM_CONTROL_MODE emControlMode; // 控制模式 LAMP_STATE stuLampStateInfo; // 灯色状态信息 LANE_STATE stuLaneStateInfo; // 车道功能状态 LANE_CTRL_STATE stuLaneCtrlStateInfo; // 车道/匝道控制状态 CUR_STEP_INFO stuCurStepInfo; // 当前信号方案色步信息 NEXT_STEP_INFO stuNextStepInfo; // 下一个周期信号方案色步信息 BYTE byReserved[256]; // 预留字节 }ALARM_RTSC_RUNNING_INFO; ///@brief 车道交通流信息 typedef struct tagLAN_TRAFFIC_INFO { int nPeriod; // 统计周期(秒) int nLaneType; // 车道类型 int nTrafficFlux; // 交通流量统计周期内通过的车辆数 int nAverageSpeed; // 断面车辆平均速度单位为千米每小时(km/h) int nIntervalAverageSpeed; // 区间车辆平均速度单位为千米每小时(km/h) int nTimeOccupyRatio; // 时间占有率(0-100) int nSpaceOccupyRatio; // 空间占有率(0-100) int nQueueLen; // 排队长度 单位为米 BYTE byReserved[128]; // 预留字节 }LAN_TRAFFIC_INFO; ///@brief 进口方向交通流信息 typedef struct tagENTER_TRAFFIC_INFO { int nEnterDir; // 进口方向以地理正北方向为起点的顺时针旋转角度,单位为度(°) int nEnterLaneNumbner; // 进口车道数量 int nLanTrafficInfoNum; // 车道交通流信息个数 LAN_TRAFFIC_INFO stuLanTrafficInfo[8]; // 车道交通流信息(0~8),包含1到M(进口车道数量)个车道交通流信息 BYTE byReserved[128]; // 预留字节 }ENTER_TRAFFIC_INFO; ///@brief 交通流信息 typedef struct tagTRAFFIC_INFO { int nEnterNumber; // 进口数量 int nEnterTrafficInfoNum; // 进口方向交通流信息个数 ENTER_TRAFFIC_INFO stuEnterTrafficInfo[8]; // 进口方向交通流信息, 包含1到N(进口数量)个进口方向交通流信息 BYTE byReserved[128]; // 预留字节 }TRAFFIC_INFO; ///@brief 进口交通运行状态信息 typedef struct tagENTER_STATE_INFO { int nEnterDir; // 进口方向以地理正北方向为起点的顺时针旋转角度,单位为度(°) int nLaneNumber; // 车道数量 int nLaneStateInfoNum; // 车道交通运行状态信息个数 LANE_STATE_INFO stuLaneStateInfo[8]; // 车道交通运行状态信息(0~8), 包含1到N(车道数量)个车道交通运行状态信息 BYTE byReserved[128]; // 预留字节 }ENTER_STATE_INFO; ///@brief 交通运行状态信息 typedef struct tagTRAFFIC_STATE { int nEnterNumber; // 进口数量 int nEnterStateInfoNum; // 进口交通运行状态信息个数 ENTER_STATE_INFO stuEnterStateInfo[8]; // 进口交通运行状态信息(0~8), 包含1到N(进口数量)个进口交通运行状态信息 int nPeriod; // 统计分析周期,单位分钟1~255 BYTE byReserved[124]; // 预留字节 }TRAFFIC_STATE; ///@brief 交通事件类型 typedef enum tagEM_TRAFFIC_EVENT { EM_TRAFFIC_EVENT_UNKNOWN, // 未知 EM_TRAFFIC_EVENT_ACCIDENT, // 交通事故 EM_TRAFFIC_EVENT_ROAD_BARRIERS, // 道路障碍 EM_TRAFFIC_EVENT_ROAD_AREAWATER, // 路面积水 EM_TRAFFIC_EVENT_ROAD_SLIPPERY, // 路面湿滑 EM_TRAFFIC_EVENT_ROAD_ICY, // 路面结冰 EM_TRAFFIC_EVENT_ROAD_CONSTRUCTION, // 道路施工 }EM_TRAFFIC_EVENT; ///@brief 交通事件信息 typedef struct tagTRAFFIC_EVENT { char szCarId[128]; // 机动车电子标识序列号 char szPlateNumber[128]; // 车牌号码 int nDrivingDir; // 行驶方向以地理正北方向为起点的顺时针旋转角度,单位为度(°) EM_TRAFFIC_EVENT emTrafficEvent; // 交通事件 BYTE byReserved[128]; // 预留字节 }TRAFFIC_EVENT; ///@brief 车辆运行状态信息 typedef struct tagCAR_INFO { char szCarId[128]; // 机动车电子标识序列号 char szPlateNumber[128]; // 车牌号码 EM_CAR_TYPE emCarType; // 车辆类型 int nSpeed; // 速度单位为米每秒(m/s) int nAcceleration; // 加速度单位为米每平方秒(m/s2) int nHeadDirAngle; // 车头方向角以地理正北方向为起点的顺时针旋转角度,单位为度(°) int nAlarm; // 车辆故障报警自动驾驶汽车测试期间主动上报的故障信息,按位表示:Bit0:故障报警灯开启Bit1~Bit7:保留 BYTE byReserved[256]; // 预留字节 }CAR_INFO; ///@brief 信号机交通信息事件, 对应事件类型 DH_ALARM_RTSC_TRAFFIC typedef struct tagALARM_RTSC_TRAFFIC_INFO { int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 DWORD dwReportState; // bit0:运行状态 // bit1:控制方式 // bit2:灯色状态信息 // bit3:车道功能状态 // bit4:车道/匝道控制状态信息 // bit5:当前信号方案色步信息 int nLongitudeNum; // 经度个数 double dbLongitude[3]; // 经度,格式:度,分,秒(秒为浮点数) int nLatitudeNum; // 纬度个数 double dbLatitude[3]; // 纬度,格式:度,分,秒(秒为浮点数) double dbAltitude; // 高度,单位为米 NET_TIME_EX UTC; // 事件发生时间,带时区偏差的UTC时间,单位秒 TRAFFIC_INFO stuTrafficInfo; // 交通流信息 TRAFFIC_STATE stuTrafficState; // 交通运行状态信息 CAR_INFO stuCarInfo; // 车辆运行状态信息 TRAFFIC_EVENT stuTrafficEvent; // 交通事件信息 BYTE byReserved[256]; // 预留字节 }ALARM_RTSC_TRAFFIC_INFO; /*******************************消防类事件开始************************************************/ ///@brief 违章事件类型 typedef enum tagEM_HY_VIOLATION_TYPE { EM_HY_VIOLATION_TYPE_UNKNWON = -1, // 未知 EM_HY_VIOLATION_TYPE_MOTOR_ALARM, // 机动车违章报警 EM_HY_VIOLATION_TYPE_MOTOR_WARN, // 机动车违章预警 } EM_HY_VIOLATION_TYPE; ///@brief 消防类火焰检测带图事件, 对应事件类型 EVENT_HY_FIRE_DETECTION typedef struct tagDEV_EVENT_HY_FIRE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ EM_CLASS_TYPE emClassType; // 智能事件所属大类 EM_TRIGGER_TYPE emTriggerType; // 触发类型 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 检测到的物体 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 UINT nCount; // 规则被触发生次数 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 PTZ_POSITION_UNIT stuPtzPostion; // PTZ坐标和放大倍数 float fDistance[2]; // 火焰底部相对画面中心点坐标,单位:米 分别为相对中心点X、Y轴地面距离 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserve[1024]; // 预留字节 } DEV_EVENT_HY_FIRE_DETECTION_INFO; ///@brief 消防类火焰检测普通不带图事件, 对应事件类型 DH_ALARM_HY_FIRE_DETECTION typedef struct tagALARM_HY_FIRE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ EM_TRIGGER_TYPE emTriggerType; // 触发类型 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 检测到的物体 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 UINT nCount; // 规则被触发生次数 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 PTZ_POSITION_UNIT stuPtzPostion; // PTZ坐标和放大倍数 float fDistance[2]; // 火焰底部相对画面中心点坐标,单位:米 分别为相对中心点X、Y轴地面距离 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserve[1024]; // 预留字节 } ALARM_HY_FIRE_DETECTION_INFO; ///@brief 消防类烟雾检测带图事件, 对应事件类型 EVENT_HY_SMOG_DETECTION typedef struct tagDEV_EVENT_HY_SMOG_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ EM_CLASS_TYPE emClassType; // 智能事件所属大类 EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nRuleID; // 规则ID, 用于标示哪个规则触发的事件 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 UINT nCount; // 规则被触发生次数 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 SCENE_IMAGE_INFO_EX stuSceneImage; // 全景广角图 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_HY_SMOG_DETECTION_INFO; ///@brief 消防类烟雾检测普通不带图事件, 对应事件类型 DH_ALARM_HY_SMOG_DETECTION typedef struct tagALARM_HY_SMOG_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ EM_TRIGGER_TYPE emTriggerType; // 触发类型 int nRuleID; // 规则ID, 用于标示哪个规则触发的事件 DH_MSG_OBJECT stuVehicle; // 车辆信息 DH_MSG_OBJECT stuObject; // 检测到的物体信息 int nMark; // 标记抓拍帧 int nSource; // 视频分析的数据源地址 int nFrameSequence; // 视频分析帧序号 int nSequence; // 抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束 UINT nCount; // 规则被触发生次数 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; // 交通车辆信息 EVENT_COMM_INFO stuCommInfo; // 公共信息 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_SMOG_DETECTION_INFO; ///@brief 消防类疏散通道阻塞带图事件, 对应事件类型 EVENT_HY_INFIRE_PASSAGE_DETECTION typedef struct tagDEV_EVENT_HY_INFIRE_PASSAGE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 char szPresetName[64]; // 事件触发的预置点名称 /* 事件业务信息 */ EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nRuleID; // 规则ID, 用于标示哪个规则触发的事件 UINT nObjectNum; // 检测到的物体数量 DH_MSG_OBJECT stuObjects[64]; // 多个检测到的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 UINT nCount; // 规则被触发生次数 EM_EVENT_LEVEL emEventLevel; // 事件级别 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_HY_INFIRE_PASSAGE_DETECTION_INFO; ///@brief 消防类疏散通道阻塞普通不带图事件, 对应事件类型 DH_ALARM_HY_INFIRE_PASSAGE_DETECTION typedef struct tagALARM_HY_INFIRE_PASSAGE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 char szPresetName[64]; // 事件触发的预置点名称 /* 事件业务信息 */ int nRuleID; // 规则ID, 用于标示哪个规则触发的事件 UINT nObjectNum; // 检测到的物体数量 DH_MSG_OBJECT stuObjects[64]; // 多个检测到的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 UINT nCount; // 规则被触发生次数 EM_EVENT_LEVEL emEventLevel; // 事件级别 NET_GPS_STATUS_INFO stuGPSStatusInfo; // GPS信息 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_INFIRE_PASSAGE_DETECTION_INFO; ///@brief 消防类消防车通道占用/消防登高面占用带图事件, 对应事件类型 EVENT_HY_OUTFIRE_PASSAGE_DETECTION typedef struct tagDEV_EVENT_HY_OUTFIRE_PASSAGE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 char szPresetName[64]; // 事件触发的预置点名称 /* 事件业务信息 */ EM_CLASS_TYPE emClassType; // 智能事件所属大类 int nAlarmNum; // 报警阈值 int nNoMotorNum; // 非机动车实际数量 int nCount; // 规则被触发生次数 UINT nObjectNum; // 检测到的物体数量 DH_MSG_OBJECT stuObjects[64]; // 多个检测到的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 EM_HY_VIOLATION_TYPE emViolationAlarmType; // 违规事件类型 UINT nParkingDuration; // 违停持续时间,单位:秒, 0表示无意义 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 PTZ_POSITION_UNIT stuPtzPostion; // PTZ坐标和放大倍数 SCENE_IMAGE_INFO stuSceneImage; // 全景广角图 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_HY_OUTFIRE_PASSAGE_DETECTION_INFO; ///@brief 消防类消防车通道占用/消防登高面占用普通不带图事件, 对应事件类型 DH_ALARM_HY_OUTFIRE_PASSAGE_DETECTION typedef struct tagALARM_HY_OUTFIRE_PASSAGE_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号,从1开始 UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 char szPresetName[64]; // 事件触发的预置点名称 /* 事件业务信息 */ UINT nAlarmNum; // 报警阈值 UINT nNoMotorNum; // 非机动车实际数量 UINT nCount; // 规则被触发生次数 UINT nObjectNum; // 检测到的物体数量 DH_MSG_OBJECT stuObjects[64]; // 多个检测到的物体信息 int nDetectRegionNum; // 规则检测区域顶点数 DH_POINT DetectRegion[20]; // 规则检测区域 EM_HY_VIOLATION_TYPE emViolationAlarmType; // 违规事件类型 UINT nParkingDuration; // 违停持续时间,单位:秒, 0表示无意义 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 PTZ_POSITION_UNIT stuPtzPostion; // PTZ坐标和放大倍数 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_OUTFIRE_PASSAGE_DETECTION_INFO; ///@brief 消防类消控室人员离岗带图事件, 对应事件类型 EVENT_HY_MAN_LEAVING_DETECTION typedef struct tagDEV_EVENT_HY_MAN_LEAVING_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) BYTE byReserved1[4]; // 字节对齐 NET_TIME_EX stuUTC; // 事件发生的时间 UINT nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nAreaID; // 区域ID,该通道和PresetID下的某个区域, 为0,为单区域 int nDetectType; // 检测模式, -1:未知 0: 小于等于阈值报警 1: 大于等于阈值报警 2: 等于阀值报警 3: 不等于阀值报警 4: 人数变化报警 UINT nPrevNumber; // 变化前人数 UINT nCurrentNumber; // 当前人数 int nManListCount; // 区域人员数量 MAN_NUM_LIST_INFO stuManList[10]; // 区域内人员列表 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 BYTE byReserved[1024]; // 保留字节 } DEV_EVENT_HY_MAN_LEAVING_DETECTION_INFO; ///@brief 消防类消控室人员离岗普通不带图事件, 对应事件类型 DH_ALARM_HY_MAN_LEAVING_DETECTION typedef struct tagALARM_HY_MAN_LEAVING_DETECTION_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) BYTE byReserved1[4]; // 字节对齐 NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID UINT nPresetID; // 事件触发的预置点号, 若为0 则不关心该字段 /* 事件业务信息 */ UINT nAreaID; // 区域ID,该通道和PresetID下的某个区域, 为0,为单区域 int nDetectType; // 检测模式, -1:未知 0: 小于等于阈值报警 1: 大于等于阈值报警 2: 等于阀值报警 3: 不等于阀值报警 4: 人数变化报警 UINT nPrevNumber; // 变化前人数 UINT nCurrentNumber; // 当前人数 int nManListCount; // 区域人员数量 MAN_NUM_LIST_INFO stuManList[10]; // 区域内人员列表 char szSourceID[32]; // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_MAN_LEAVING_DETECTION_INFO; ///@brief 消防离线故障事件设备类型 typedef enum tagEM_HY_FIRE_CONTROL_DEVICE_TYPE { EM_HY_FIRE_CONTROL_DEVICE_TYPE_UNKNOWN, // 未知 EM_HY_FIRE_CONTROL_DEVICE_TYPE_WIRELESSALARMHOST, // 无线报警主机 EM_HY_FIRE_CONTROL_DEVICE_TYPE_INTELLIELECMONITORDEV, // 智能用电监控设备 EM_HY_FIRE_CONTROL_DEVICE_TYPE_IMAGETYPESMOKEDETECTOR, // 图像型烟感 EM_HY_FIRE_CONTROL_DEVICE_TYPE_FLAMERECOGNITIONCAMERA, // 火焰识别摄像机 EM_HY_FIRE_CONTROL_DEVICE_TYPE_SMOKEFIREDETECTOR, // 感烟火灾探测器 EM_HY_FIRE_CONTROL_DEVICE_TYPE_TEMPERATUREFIREDETECTOR, // 感温火灾探测器 EM_HY_FIRE_CONTROL_DEVICE_TYPE_COMBUSTIBLEGASDETECTOR, // 可燃气体探测器 EM_HY_FIRE_CONTROL_DEVICE_TYPE_HANDLEALARMBUTTON, // 手动报警按钮 EM_HY_FIRE_CONTROL_DEVICE_TYPE_SOUNDLIGHTALARM, // 声光报警器 EM_HY_FIRE_CONTROL_DEVICE_TYPE_FAULTELECTRICARCSENSOR, // 故障电弧传感器 }EM_HY_FIRE_CONTROL_DEVICE_TYPE; ///@brief 消防离线故障事件, 对应事件类型 DH_ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT typedef struct tagALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /* 事件业务信息 */ char szAddress[256]; // 主机地址 char szChildNodeName[128]; // 子节点名称 char szChildNodeSN[64]; // 子节点序列号,格式为主节点MAC-子节点ID EM_HY_FIRE_CONTROL_DEVICE_TYPE emDeviceType; // 设备类型 NET_TIME_EX stuTime; // 设备接收到事件的时间 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO; ///@brief 设备类型 typedef enum tagEM_HY_SMOKE_DEVICE_TYPE { EM_HY_SMOKE_DEVICE_TYPE_UNKNOWN, // 未知 EM_HY_SMOKE_DEVICE_TYPE_SURPLUS_ELECTRICITY, // 剩余电流传感器 EM_HY_SMOKE_DEVICE_TYPE_ELECTRICITY, // 电流传感器 EM_HY_SMOKE_DEVICE_TYPE_TEMPERATURE, // 测温传感器 }EM_HY_SMOKE_DEVICE_TYPE; ///@brief 消防传感器故障事件, 对应事件类型 DH_ALARM_HY_FIRE_CONTROL_SENSOR_FAULT typedef struct tagALARM_HY_FIRE_CONTROL_SENSOR_FAULT_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /* 事件业务信息 */ char szAddress[256]; // 主机地址 char szChildNodeName[128]; // 子节点名称 char szChildNodeSN[64]; // 子节点序列号,格式为主节点MAC-子节点ID EM_HY_SMOKE_DEVICE_TYPE emDeviceType; // 设备类型 NET_TIME_EX stuTime; // 设备接收到事件的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_FIRE_CONTROL_SENSOR_FAULT_INFO; ///@brief 消防设备拆除事件, 对应事件类型 DH_ALARM_HY_FIRE_CONTROL_DISMANTLE_FAULT typedef struct tagALARM_HY_FIRE_CONTROL_DISMANTLE_FAULT_INFO { /* 事件公共信息 */ int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知 char szName[128]; // 事件名称 double dbPTS; // 时间戳(单位是毫秒) NET_TIME_EX stuUTC; // 事件发生的时间 int nEventID; // 事件ID /* 事件业务信息 */ char szAddress[256]; // 主机地址 char szSN[64]; // 主机序列号 EM_HY_FIRE_CONTROL_DEVICE_TYPE emDeviceType; // 设备类型 NET_TIME_EX stuTime; // 设备接收到事件的时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 BYTE byReserved[1024]; // 保留字节 } ALARM_HY_FIRE_CONTROL_DISMANTLE_FAULT_INFO; /*******************************消防类事件结束************************************************/ ///@brief 物体查询范围 typedef struct tagDEV_OBJECT_FIND_SCOPE_INFO { BOOL bEnable; // 是否开启物体数量查询 int nMinValue; // 最小查询值 int nMaxValue; // 最大查询值 } DEV_OBJECT_FIND_SCOPE_INFO; ///@brief 遮阳板查询范围 typedef struct tagDEV_OBJECT_SUNSHIELD_FIND_SCOPE_INFO { BYTE byFindType; // 查找遮阳板方式:1 按数量查找 2 按座位查找(必填,其他值无效) int nMinSunShieldNum; // 遮阳板个数最小查询值(选填)byFindType 为1时使用 int nMaxSunShieldNum; // 遮阳板个数最大查询值(选填)byFindType 为1时使用 NET_SUNSHADE_STATE emMasterShield; // 主驾驶座位遮阳板状态(选填)byFindType 为2时使用 NET_SUNSHADE_STATE emSlaveShield; // 副驾驶座位遮阳板状态(选填)byFindType 为2时使用 } DEV_OBJECT_SUNSHIELD_FIND_SCOPE_INFO; ///@brief 车辆结构化查找条件 typedef struct tagDEV_VEHICLE_CONDITION_FEATURE_INFO { char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号码 EM_NET_PLATE_TYPE emPlateType; // 车牌类型 NET_COLOR_RGBA stuPlateColor; // 车牌颜色 EM_NET_VEHICLE_TYPE emVehicleType; // 车辆类型 NET_COLOR_RGBA stuVehicleColor; // 车身颜色 char szVehicleLogo[32]; // 车标 WORD wVehicleSubBrand; // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册 WORD wVehicleYearModel; // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册 EM_VEHICLE_DIRECTION emVehicleDirection; // 抓拍车的位置 NET_SAFEBELT_STATE emMainSeat; // 主驾驶座位安全带状态(选填) NET_SAFEBELT_STATE emSlaveSeat; // 副驾驶座位安全带状态(选填) DEV_OBJECT_SUNSHIELD_FIND_SCOPE_INFO stuSunShieldInfo; // 遮阳板查询信息(必填) DEV_OBJECT_FIND_SCOPE_INFO stuDropInfo; // 挂坠个数范围(选填) DEV_OBJECT_FIND_SCOPE_INFO stuPaperBoxInfo; // 纸巾盒个数范围(选填) DEV_OBJECT_FIND_SCOPE_INFO stuAnnualInspectionInfo; // 年检标个数范围(选填) BYTE byReserved[256]; // 保留字节 } DEV_VEHICLE_CONDITION_FEATURE_INFO; ///@brief 车辆结构化查询结果 typedef struct tagDEV_VEHICLE_RESULT_FEATURE_INFO { char szPlateNumber[DH_MAX_PLATE_NUMBER_LEN]; // 车牌号码 EM_NET_PLATE_TYPE emPlateType; // 车牌类型 NET_COLOR_RGBA stuPlateColor; // 车牌颜色 NET_COLOR_RGBA stuVehicleColor; // 车身颜色 char szVehicleLogo[32]; // 车标 WORD wVehicleSubBrand; // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册 WORD wVehicleYearModel; // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册 int nVehicleWindowNum; // 车窗个数 NET_RECT stuVehicleWindow[4]; // 车窗位置,下标0表示前车窗,下标1表示后车窗,其余表示侧车窗 EM_VEHICLE_DIRECTION emVehicleDirection; // 抓拍车的位置 NET_SAFEBELT_STATE emMainSeat; // 主驾驶座位安全带状态 NET_SAFEBELT_STATE emSlaveSeat; // 副驾驶座位安全带状态 NET_RECT stuMasterShield; // 主驾驶座位遮阳板位置 NET_RECT stuSlaveShield; // 副驾驶座位遮阳板位置 int nAnnualInspectionNum; // 年检标志个数 NET_RECT stuAnnualInspection[8]; // 年检标志 int nDropNum; // 挂坠个数 NET_RECT stuDrop[4]; // 挂坠位置 int nPaperBoxNum; // 纸巾盒个数 NET_RECT stuPaperBox[4]; // 纸巾盒位置 BYTE byReserved[256]; // 保留字节 } DEV_VEHICLE_RESULT_FEATURE_INFO; ///@brief 特征图片类型 typedef enum tagEM_PIC_FEATURE_TYPE { EM_PIC_FEATURE_TYPE_UNKOWN, // 未知类型 EM_PIC_FEATURE_TYPE_GLOBAL_SENCE, // 全景大图 EM_PIC_FEATURE_TYPE_SMALL, // 特写图 }EM_PIC_FEATURE_TYPE; ///@brief 图片请求信息, typedef struct tagDEV_IMAGE_REQUEST_FEATURE_INFO { EM_PIC_FEATURE_TYPE emPicType; // 图片类型(必填) DWORD dwoffset; // 在二进制数据块中的偏移,单位:字节 DWORD dwLength; // 图片大小,单位:字节 DWORD dwWidth; // 图片宽度 DWORD dwHeight; // 图片高度 BOOL bEnableRect; // 是否开启Rect查询 NET_RECT stuRect; // (选填)图片为GlobalScene时,标示大图中的物体坐标,使用绝对坐标,即像素点实际位置 BYTE byReserved[256]; // 保留字节 } DEV_IMAGE_REQUEST_FEATURE_INFO; ///@brief 图片结果信息 typedef struct tagDEV_IMAGE_RESULT_FEATURE_INFO { DWORD dwSimilarity; // 图片的相似度,范围0~100 NET_TIME stuTime; // 图片检测/入库时间 DWORD dwObjectOffset; // 特写图在二进制数据块中的偏移,单位字节(取决于请求的NeedData) DWORD dwObjectLength; // 特写图片大小,单位字节(取决于请求的NeedData) char szObjectFilePath[MAX_PATH]; // 特写图HTTP文件路径(取决于请求的NeedData) DWORD dwSceneOffset; // 全景图在二进制数据块中的偏移,单位字节(取决于请求的NeedData) DWORD dwSceneLength; // 全景图图片大小,单位字节(取决于请求的NeedData) char szSceneFilePath[MAX_PATH]; // 全景图HTTP文件路径(取决于请求的NeedData) NET_RECT stuObjectRect; // 小图在大图的位置,绝对像素点 BYTE byReserved[256]; // 保留字节 } DEV_IMAGE_RESULT_FEATURE_INFO; ///@brief CLIENT_DetectObjectStructlize 接口输入参数 typedef struct tagNET_IN_OBJECTSTRUCTLIZE_DETECT_PIC { DWORD dwSize; int nWidth; // 图片宽度 int nHeight; // 图片高度 char *pBuffer; // 图片二进制数据缓冲地址, 由用户申请 int nBufferLen; // 图片二进制数据缓冲数据长度 }NET_IN_OBJECTSTRUCTLIZE_DETECT_PIC; ///@brief 检测到的物体信息 typedef struct tagNET_OBJECT_DETECTED_INFO { DH_POINT stuPoint; // 小图左上角在大图的位置, 使用绝对坐标系 DWORD dwWidth; // 图片宽度 DWORD dwHeight; // 图片高度 char szObjectType[16]; // 物体类型, 参考 NET_OBJFILTER_INFO 的 szObjectType 说明 char szObjectSubType[32]; // 物体类型中的子类别, 参考 NET_OBJFILTER_INFO 的 szObjectSubType 说明 DEV_PERSON_RESULT_FEATURE_INFO stuPersonResult; // 人员结构化查询结果 DEV_VEHICLE_RESULT_FEATURE_INFO stuVehicleResult; // 车辆结构化查询结果 BYTE byReserved[512]; // 保留字节 } NET_OBJECT_DETECTED_INFO; ///@brief CLIENT_DetectObjectStructlize 接口输出参数 typedef struct tagNET_OUT_OBJECTSTRUCTLIZE_DETECT_PIC { DWORD dwSize; int nObjectNum; // 检测到的物体个数 NET_OBJECT_DETECTED_INFO stuObjectinfos[DH_MAX_OBJECT_LIST]; // 检测到的物体 }NET_OUT_OBJECTSTRUCTLIZE_DETECT_PIC; ///@brief 结构化查询状态信息回调函数, lAttachHandle是 CLIENT_AttachObjectStructlizeFindState 的返回值 typedef struct tagNET_CB_OBJECTSTRUCTLIZE_FIND_STATE { DWORD dwSize; int nToken; //查询令牌 int nProgress; //正常取值范围:0-100,-1,表示查询token不存在(当订阅一个不存在或结束的查询时) int nCurrentCount; //目前符合查询条件的数量 }NET_OBJECTSTRUCTLIZE_FIND_STATE; ///@brief 结构化查询订阅状态回调函数 // pstStates 的个数由 nStateNum 指出 typedef void (CALLBACK *fObjectStructlizeFindState)(LLONG lLoginID, LLONG lAttachHandle, NET_OBJECTSTRUCTLIZE_FIND_STATE* pstStates, int nStateNum, LDWORD dwUser); ///@brief CLIENT_AttachObjectStructlizeFindState 接口输入参数 typedef struct tagNET_IN_OBJECTSTRUCTLIZE_FIND_STATE { DWORD dwSize; //结构体大小,必须填写 int nTokenNum; //查询令牌数,为0时,表示订阅所有的查询任务 int nTokens[8]; //查询令牌 fObjectStructlizeFindState cbObjectSFindState; //回调函数 LDWORD dwUser; //用户数据 }NET_IN_OBJECTSTRUCTLIZE_FIND_STATE; ///@brief CLIENT_AttachObjectStructlizeFindState 接口输出参数 typedef struct tagNET_OUT_OBJECTSTRUCTLIZE_FIND_STATE { DWORD dwSize; }NET_OUT_OBJECTSTRUCTLIZE_FIND_STATE; ///@brief CLIENT_StartFindObjectStructlize 接口输入参数 typedef struct tagNET_IN_STARTFIND_OBJECTSTRUCTLIZE { DWORD dwSize; int nChannelNum; // 通道数量 int stuChannelID[16]; // 所有的通道号 BOOL bTimeEnable; // 启用时间段查询 NET_TIME stStartTime; // (选填)开始时间,查询抓拍库需要,注册库不需要 NET_TIME stEndTime; // (选填)结束时间,查询抓拍库需要,注册库不需要 /*以下为查询过滤条件*/ char szObjectType[16]; // (必填)物体类型, 同 NET_OBJFILTER_INFO 字段 char szObjectSubType[32]; // (选填)物体类型中的子类别,同 NET_OBJFILTER_INFO 字段 int nSimilarity; // (必填)和查询图片的相似度,百分比,范围0~100 DEV_PERSON_CONDITION_FEATURE_INFO stuPersonCondition; // 人员查找信息,可以只填部分,多个条件是AND关系 DEV_VEHICLE_CONDITION_FEATURE_INFO stuVehicleCondition; // 车辆查找条件,可以只填部分,多个条件是AND关系 DEV_IMAGE_REQUEST_FEATURE_INFO stuImageRequestInfo; // 图片信息 int nRectNum; // 有效的特征框坐标个数 NET_RECT stuRect[4]; // 特征框坐标 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址, 有用户申请 int nBufferLen; // 缓冲数据长度 }NET_IN_STARTFIND_OBJECTSTRUCTLIZE; ///@brief CLIENT_StartFindObjectStructlize 接口输出参数 typedef struct tagNET_OUT_STARTFIND_OBJECTSTRUCTLIZE { DWORD dwSize; int nTotalCount; // 返回的符合查询条件的记录个数 // -1表示总条数未生成,要推迟获取 // 使用 CLIENT_AttachObjectStructlizeFindState 接口状态 LLONG lFindHandle; // 查询句柄 int nToken; // 获取到的查询令牌 }NET_OUT_STARTFIND_OBJECTSTRUCTLIZE; ///@brief CLIENT_DoFindObjectStructlize 接口输入参数 typedef struct tagNET_IN_DOFIND_OBJECTSTRUCTLIZE { DWORD dwSize; LLONG lFindHandle; // (必填)查询句柄 int nBeginNum; // (必填)查询起始序号,0<=beginNumber<= totalCount-1 int nCount; // (必填)当前想查询的记录条数 EM_NEEDED_PIC_RETURN_TYPE emNeededData; // (必填)查询结果返回图片格式 }NET_IN_DOFIND_OBJECTSTRUCTLIZE; ///@brief doFind检测到的物体信息 typedef struct tagNET_DODBFIND_OBJECT_DETECTED_INFO { int nChannelID; // 通道号 char szObjectType[16]; // 物体类型, 同 NET_OBJFILTER_INFO 字段 char szObjectSubType[32]; // 物体类型中的子类别, 同 NET_OBJFILTER_INFO 字段 DEV_PERSON_RESULT_FEATURE_INFO stuPersonResult; // 人员结构化查询结果 DEV_VEHICLE_RESULT_FEATURE_INFO stuVehicleResult; // 车辆结构化查询结果 int nImageNum; // 检测到的图片个数,查询抓拍库数组长度1;注册库数组长度可能大于1 DEV_IMAGE_RESULT_FEATURE_INFO stuImageResults[4]; // 检测到的图片信息结果 BYTE byReserved[512]; // 保留字节 } NET_DODBFIND_OBJECT_DETECTED_INFO; ///@brief CLIENT_DoFindObjectStructlize 接口输出参数 typedef struct tagNET_OUT_DOFIND_OBJECTSTRUCTLIZE { DWORD dwSize; int nfoundNum; // 查询到的条数 int nObjectNum; // 检测到的物体个数 NET_DODBFIND_OBJECT_DETECTED_INFO stuObjectinfos[DH_MAX_OBJECT_LIST]; // 检测到的物体 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址, 有用户申请 int nBufferLen; // 缓冲数据长度 int nBufRet; // 实际返回的长度 }NET_OUT_DOFIND_OBJECTSTRUCTLIZE; ///@brief 进行特征值提取, 以图搜图 pstInParam 与 pstOutPara m内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetectObjectStructlize(LLONG lLoginID, const NET_IN_OBJECTSTRUCTLIZE_DETECT_PIC* pstInParam, NET_OUT_OBJECTSTRUCTLIZE_DETECT_PIC *pstOutParam, int nWaitTime ); ///@brief 订阅结构化查询状态 pstInParam 与 pstOutParam 内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachObjectStructlizeFindState(LLONG lLoginID, const NET_IN_OBJECTSTRUCTLIZE_FIND_STATE* pstInParam, NET_OUT_OBJECTSTRUCTLIZE_FIND_STATE *pstOutParam, int nWaitTime ); ///@brief 取消结构化查询状态 lAttachHandle 为 CLIENT_AttachObjectStructlizeFindState 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachObjectStructlizeFindState(LLONG lAttachHandle); ///@brief 按条件查询结构化识别结果 pstInParam 与 pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindObjectStructlize(LLONG lLoginID, const NET_IN_STARTFIND_OBJECTSTRUCTLIZE* pstInParam, NET_OUT_STARTFIND_OBJECTSTRUCTLIZE *pstOutParam, int nWaitTime ); ///@brief 查找结构化识别结果:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值1时,对应emTemperatureType为ALL NET_TEMPERATUREEX_VALUE stuTemperatureEx[MAX_TEMPERATUREEX_POINT_NUM]; // 监测点温度 }NET_OUT_GET_TEMPERATUREEX; ///@brief 获取温度值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FaceBoard_GetTemperatureEx(LLONG lLoginID, const NET_IN_GET_TEMPERATUREEX *pInParam, NET_OUT_GET_TEMPERATUREEX *pOutParam, int nWaitTime); ///@brief CLIENT_GetAlarmOutState 入参 typedef struct tagNET_IN_GET_ALARM_OUT_STATE { DWORD dwSize; // 结构体大小 } NET_IN_GET_ALARM_OUT_STATE; #define MAX_OUT_STATE_COUNT 32 ///@brief CLIENT_GetAlarmOutState 出参 typedef struct tagNET_OUT_GET_ALARM_OUT_STATE { DWORD dwSize; // 结构体大小 int nState[MAX_OUT_STATE_COUNT]; // 输出端口状态, 0表示没有, 1表示有 } NET_OUT_GET_ALARM_OUT_STATE; ///@brief 获得每个报警输出端口的状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAlarmOutState(LLONG lLoginID, const NET_IN_GET_ALARM_OUT_STATE *pInParam, NET_OUT_GET_ALARM_OUT_STATE *pOutParam, int nWaitTime); ///@brief 二维码类型 typedef enum tagNET_EM_2DCODE_TYPE { NET_EM_2DCODE_TYPE_OZVISION, // P2P功能 NET_EM_2DCODE_TYPE_LCWEBSITE, // LC手机客户端 NET_EM_2DCODE_TYPE_EASY4IP, // easy4ip手机客户端 NET_EM_2DCODE_TYPE_DMSS, // i/gDMSS手机客户端 NET_EM_2DCODE_TYPE_VIDEOTALK, // 可视对讲客户端 NET_EM_2DCODE_TYPE_APPREGISTER, // app注册信息二维码 NET_EM_2DCODE_TYPE_DEVAUTH, // H500平台向MD平台获取授权 }NET_EM_2DCODE_TYPE; ///@brief 获取工作目录实例 入参 typedef struct tagNET_IN_WORKDIRECTORY_GETGROUP_INFO { DWORD dwSize; char szDirectoryName[DH_COMMON_STRING_256]; // 磁盘目录名称 }NET_IN_WORKDIRECTORY_GETGROUP_INFO; ///@brief 获取工作目录实例 出参 typedef struct tagNET_OUT_WORKDIRECTORY_GETGROUP_INFO { DWORD dwSize; char szGroupName[DH_COMMON_STRING_256]; // 工作目录组名 }NET_OUT_WORKDIRECTORY_GETGROUP_INFO; ///@brief 获取工作目录组名 CLIENT_NET_API BOOL CALL_METHOD CLIENT_WorkDirectoryGetGroup(LLONG lLoginID, const NET_IN_WORKDIRECTORY_GETGROUP_INFO *pInParam, NET_OUT_WORKDIRECTORY_GETGROUP_INFO *pOutParam, int nWaitTime); ///@brief 设置工作目录组名 入参 typedef struct tagNET_IN_WORKDIRECTORY_SETGROUP_INFO { DWORD dwSize; char szGroupName[DH_COMMON_STRING_256]; // 工作目录组名 char szDirectoryName[DH_COMMON_STRING_256]; // 磁盘目录名称 }NET_IN_WORKDIRECTORY_SETGROUP_INFO; ///@brief 设置工作目录组名 出参 typedef struct tagNET_OUT_WORKDIRECTORY_SETGROUP_INFO { DWORD dwSize; }NET_OUT_WORKDIRECTORY_SETGROUP_INFO; ///@brief 设置工作目录组名 CLIENT_NET_API BOOL CALL_METHOD CLIENT_WorkDirectorySetGroup(LLONG lLoginID, const NET_IN_WORKDIRECTORY_SETGROUP_INFO *pInParam, NET_OUT_WORKDIRECTORY_SETGROUP_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_Get2DCode 入参 typedef struct tagNET_IN_GET_2DCODE { DWORD dwSize; // 结构体大小 NET_EM_2DCODE_TYPE em2DCodeType; // 二维码类型 }NET_IN_GET_2DCODE; ///@brief CLIENT_Get2DCode 出参 typedef struct tagNET_OUT_GET_2DCODE { DWORD dwSize; // 结构体大小 char sz2DCode[DH_COMMON_STRING_512]; // 二维码信息 }NET_OUT_GET_2DCODE; ///@brief 获取二维码信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Get2DCode(LLONG lLoginID, const NET_IN_GET_2DCODE *pInParam, NET_OUT_GET_2DCODE *pOutParam, int nWaitTime); ///@brief CLIENT_Set2DCode 入参 typedef struct tagNET_IN_SET_2DCODE { DWORD dwSize; // 结构体大小 NET_EM_2DCODE_TYPE em2DCodeType; // 二维码类型 char sz2DCode[DH_COMMON_STRING_512]; // 二维码信息 }NET_IN_SET_2DCODE; ///@brief CLIENT_Set2DCode 出参 typedef struct tagNET_OUT_SET_2DCODE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_2DCODE; ///@brief 设置二维码信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Set2DCode(LLONG lLoginID, const NET_IN_SET_2DCODE *pInParam, NET_OUT_SET_2DCODE *pOutParam, int nWaitTime); ///@brief 目标库导入状态 typedef enum tagEM_IMPORT_FACEDB_STATE { EM_IMPORT_FACEDB_UNKNOWN, // 未知 EM_IMPORT_FACEDB_ONGING, // 导入中 EM_IMPORT_FACEDB_END, // 导入结束, 开始生成数据库 EM_IMPORT_FACEDB_BUSY, // 系统忙,已经有导入任务 EM_IMPORT_FACEDB_DATAERROR, // 数据包检验失败 EM_IMPORT_FACEDB_INVALID, // 数据包非法 EM_IMPORT_FACEDB_SYNC_SUCCESS, // 同步成功, 数据库已生成 EM_IMPORT_FACEDB_SYNC_FALIED, // 同步失败, 数据库无法生成 EM_IMPORT_FACEDB_DBFULL, // 数据库已满无法导入 EM_IMPORT_FACEDB_SDFULL, // 存储空间满无法导入 EM_IMPORT_FACEDB_CIPHER_ERROR, // 导入压缩包密码不对 EM_IMPORT_FACEDB_SEND_FAIL, // 发送目标库数据失败 EM_IMPORT_FACEDB_UPLOAD_FAIL, // 上传失败 EM_IMPORT_FACEDB_UPLOAD_NO_PERMISSION, // 无权上传数据 } EM_IMPORT_FACEDB_STATE; ///@brief 目标对比库进度类型 typedef enum tagEM_FACEDB_PROGRESS_TYPE { EM_FACEDB_PROGRESS_IMPORT, // 目标库导入进度 EM_FACEDB_PROGRESS_DEPLOY, // 目标库部署进度 } EM_FACEDB_PROGRESS_TYPE; ///@brief 导入目标库状态信息 typedef struct tagNET_IMPORT_FACEDB_STATE { unsigned int nProgress; // 进度, 百分比 EM_FACEDB_PROGRESS_TYPE emType; // 进度类型 EM_IMPORT_FACEDB_STATE emState; // 状态信息 int nLogicChannel; // 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推 int nDeploySuccessNum; // 当前已部署成功人员数量 int nTotalNum; // 人员总数 BYTE byReserved[500]; // 保留字节 } NET_IMPORT_FACEDB_STATE; ///@brief 导入目标库回调函数原形 typedef void (CALLBACK *fImportFaceDbCallBack) (LLONG lImportFaceDbHandle, NET_IMPORT_FACEDB_STATE *pstFaceDbState, LDWORD dwUser); ///@brief CLIENT_ImportFaceDB 接口输入参数 typedef struct tagNET_IN_IMPORT_FACE_DB { DWORD dwSize; // 结构体大小 char szGroupId[DH_COMMON_STRING_64]; // 人员组ID char szPassWord[DH_COMMON_STRING_64]; // 压缩密码 char *pszFaceDBPath; // 目标库路径, 由用户指定, 后续优先使用szFaceDBFilePath fImportFaceDbCallBack cbImportState; // 上传状态回调函数 LDWORD dwUser; // 用户数据 int nWaitTime; // 超时时间 UINT nFaceDBFileNum; // 目标库文件个数 char szFaceDBFilePath[32][256]; // 目标库文件路径列表, 由用户指定 // 文件列表并不是指多个目标库, 所有的文件都是指向同一个目标库 int nLogicChannelNum; // 逻辑通道号数 int nLogicChannels[10]; // 逻辑通道号数组, -1表示所有通道, 0表示本地通道, 1表示远程通道0, 以此类推 } NET_IN_IMPORT_FACE_DB; ///@brief CLIENT_ImportFaceDB 接口输出参数 typedef struct tagNET_OUT_IMPORT_FACE_DB { DWORD dwSize; // 结构体大小 } NET_OUT_IMPORT_FACE_DB; ///@brief 目标库导入接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ImportFaceDB(LLONG lLoginID, const NET_IN_IMPORT_FACE_DB *pInParam, NET_OUT_IMPORT_FACE_DB *pOutParam); ///@brief 停止目标库导入 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopImportFaceDB(LLONG lImportFaceDbHandle); ///@brief 导出目标对比库错误码 typedef enum tagEM_EXPORT_FACEDB_ERRORCODE { EM_EXPORT_FACEDB_REQUEST_SUCCESS = 1, // 目标库导出请求成功 EM_EXPORT_FACEDB_NO_AUTHORITY = 2, // 无权限 EM_EXPORT_FACEDB_NO_THIS_FILE = 3, // 文件不存在 EM_EXPORT_FACEDB_EXPORT_END = 4, // 导出结束 EM_EXPORT_FACEDB_EXPORTING = 5, // 导出中 EM_EXPORT_FACEDB_FILE_READY = 8, // 文件准备完成 EM_EXPORT_FACEDB_FILE_FAILED = 9, // 文件准备失败 EM_EXPORT_FACEDB_WAIT_FILE = 10, // 目标库导出请求成功, 需要等待设备准备数据 EM_EXPORT_FACEDB_SYSTEM_BUSY = 11, // 系统忙, 暂时无法导出数据 EM_EXPORT_FACEDB_NO_PASSWORD = 12, // 目标库数据未定义密码, 不允许导出 } EM_EXPORT_FACEDB_ERRORCODE; ///@brief 导出目标库状态信息 typedef struct tagNET_EXPORT_FACEDB_STATE { unsigned int nProgress; // 进度, 百分比 EM_EXPORT_FACEDB_ERRORCODE emErrorCode; // 错误码 char *pDataBuf; // 目标库导出数据 DWORD dwDataLen; // 数据长度 int nLogicChannel; // 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推 BYTE byReserved[508]; // 保留字节 } NET_EXPORT_FACEDB_STATE; ///@brief 导出目标库回调函数原形 typedef void (CALLBACK *fExportStateCallBack)(LLONG lExportFaceDbHandle, NET_EXPORT_FACEDB_STATE *pstFaceDbState, LDWORD dwUser); ///@brief CLIENT_ExportFaceDB 接口输入参数 typedef struct tagNET_IN_EXPORT_FACE_DB { DWORD dwSize; // 结构体大小 char szGroupId[DH_COMMON_STRING_64]; // 人员组ID char szPassWord[DH_COMMON_STRING_64]; // 压缩密码 fExportStateCallBack cbExportFaceDbCallBack; // 导出目标库回调函数 LDWORD dwUser; // 用户数据 int nWaitTime; // 超时时间 int nLogicChannel; // 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推 } NET_IN_EXPORT_FACE_DB; ///@brief CLIENT_ExportFaceDB 接口输出参数 typedef struct tagNET_OUT_EXPORT_FACE_DB { DWORD dwSize; // 结构体大小 } NET_OUT_EXPORT_FACE_DB; ///@brief 目标库导出接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ExportFaceDB(LLONG lLoginID, const NET_IN_EXPORT_FACE_DB *pInParam, NET_OUT_EXPORT_FACE_DB *pOutParam); ///@brief 停止目标库导出 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopExportFaceDB(LLONG lExportFaceDbHandle); ///@brief PIR检测区域信息 typedef struct tagNET_DETECT_WINDOW_IFNO { int nRegionID; // 动态窗口ID char szRegionName[DH_COMMON_STRING_128]; // 动态窗口名称 int nThreshold; // 面积阀值, 取值[0, 100] int nSensitive; // 灵敏度, 取值[0, 100] int nRegionRow; // 动态检测区域的行数 int nRegionCol; // 动态检测区域的列数 BYTE byRegion[DH_MOTION_ROW][DH_MOTION_COL]; // 检测区域, 最多32*32块区域 int nLevel; // 灵敏度,取值[1,6] BYTE byReserved[508]; // 保留字节 } NET_DETECT_WINDOW_IFNO; ///@brief 灯光联动方式 typedef enum tagEM_PIR_LIGHT_LINK_TYPE { EM_PIR_LIGHT_LINK_TYPE_UNKNOWN, // 未知 EM_PIR_LIGHT_LINK_TYPE_FILCKER, // 闪烁 EM_PIR_LIGHT_LINK_TYPE_KEEPLIGHTING, // 常亮 } EM_PIR_LIGHT_LINK_TYPE; ///@brief 联动白光灯威慑 typedef struct tagNET_LIGHTINGLINK_INFO { BOOL bEnable; // 是否联动 EM_PIR_LIGHT_LINK_TYPE emLightLinkType; // 灯光联动方式 int nFilckerIntevalTime; // 闪烁间隔时间, 单位为0.1s int nLightDuration; // 灯光闪烁或常亮持续时间, 单位秒 DH_TSECT stuWhiteLightTimeSection[DH_TSCHE_DAY_NUM][DH_TSCHE_SEC_NUM]; // 联动白光灯威慑时间段 BYTE byReserved[512]; // 保留字节 } NET_LIGHTINGLINK_INFO ; ///@brief 报警联动信息 typedef struct tagNET_PIR_LINK_INFO { BOOL bRecordEnable; // 录像使能 BOOL bAlarmOutEnable; // 报警输出使能 BOOL bSnapshotEnable; // 快照使能 BOOL bMailEnable; // 发送邮件,如果有图片,作为附件 BOOL bAlarmBellEnable; // 警号输出使能 BOOL bLogEnable; // 是否记录报警日志 int nRecordChannelNum; // 录像通道个数 int nRecordChannels[DH_COMMON_STRING_64]; // 录像通道号列表 int nRecordLatch; // 录像延时时间, 范围[10,300] int nAlarmOutChannelNum; // 报警输出通道个数 int AlarmOutChannels[DH_COMMON_STRING_32]; // 报警输出通道号列表 int nAlarmOutLatch; // 报警输入停止后,输出延时时间,范围[1,300] int nSnapshotChannelNum; // 快照通道个数 int SnapshotChannels[DH_COMMON_STRING_32]; // 快照通道号列表 int nAlarmBellLatch; // 警号输出延时时间,10~300 int nDejitter; // 去抖动时间 NET_LIGHTINGLINK_INFO stLightingLink; // 联动白光灯威慑 NET_CFG_TIME_SCHEDULE stTimeShecule; // 报警时间段 BYTE byReserved1[512]; // 保留字段 }NET_PIR_LINK_INFO; // PIR检测区域最大个数 #define MAX_DETECT_WINDOW 4 ///@brief PIR配置信息 typedef struct tagNET_PIR_ALARM_INFO { BOOL bEnable; int nDetectWindowCount; // PIR检测区域个数 NET_DETECT_WINDOW_IFNO stDetectWindow[MAX_DETECT_WINDOW]; // PIR检测区域 NET_PIR_LINK_INFO stPirLink; // 报警联动信息 } NET_PIR_ALARM_INFO; ///@brief CLIENT_GetPirAlarmParam 入参 typedef struct tagNET_IN_GET_PIR_ALARM_PARAM { DWORD dwSize; int nChannel; // 视频通道号 } NET_IN_GET_PIR_ALARM_PARAM; ///@brief CLIENT_GetPirAlarmParam 出参 typedef struct tagNET_OUT_GET_PIR_ALARM_PARAM { DWORD dwSize; NET_PIR_ALARM_INFO stPirAlarmInfo; // PIR配置信息 int nPirAlarmNum; // 实际获取到的个数 NET_PIR_ALARM_INFO stPirAlarmInfoEx[MAX_PIRPARAM_NUM]; // 用于有多个pir的设备,最大10 } NET_OUT_GET_PIR_ALARM_PARAM; ///@brief CLIENT_SetPirAlarmParam 入参 typedef struct tagNET_IN_SET_PIR_ALARM_PARAM { DWORD dwSize; int nChannel; // 视频通道号 NET_PIR_ALARM_INFO stPirAlarmInfo; // PIR配置信息 int nPirAlarmNum; // 需要设置的个数 NET_PIR_ALARM_INFO stPirAlarmInfoEx[MAX_PIRPARAM_NUM]; // 用于有多个pir的设备 } NET_IN_SET_PIR_ALARM_PARAM; ///@brief CLIENT_SetPirAlarmParam 出参 typedef struct tagNET_OUT_SET_PIR_ALARM_PARAM { DWORD dwSize; } NET_OUT_SET_PIR_ALARM_PARAM; ///@brief 获取PIR配置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPirAlarmParam(LLONG lLoginID, const NET_IN_GET_PIR_ALARM_PARAM *pstInParam, NET_OUT_GET_PIR_ALARM_PARAM *pstOutParam, int nWaitTime); ///@brief 设置PIR配置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPirAlarmParam(LLONG lLoginID, const NET_IN_SET_PIR_ALARM_PARAM *pstInParam, NET_OUT_SET_PIR_ALARM_PARAM *pstOutParam, int nWaitTime); ///@brief Onvif 用户所在组 typedef enum tagEM_GROUP_TYPE { EM_GROUP_TYPE_UNKNOWN, // UnKnown EM_GROUP_TYPE_ADMIN, // admin EM_GROUP_TYPE_OPERATOR, // operator EM_GROUP_TYPE_USER, // user EM_GROUP_TYPE_ANONYMOUS, // anonymous } EM_GROUP_TYPE; ///@brief 动检数据 typedef struct tagNET_MOTION_DATA { int nRegionID; // 动态窗口ID int nThreshold; // 面积阀值, 取值[0, 100] BYTE byReserved[512]; // 保留字节 } NET_MOTION_DATA; ///@brief Onvif 新用户信息 typedef struct tagNET_ONVIF_USER_INFO { char szName[DH_COMMON_STRING_128]; // 用户名 char szPassword[DH_COMMON_STRING_128]; // 密码 NET_TIME stuPasswordModifiedTime; // 最近修改密码的时间 EM_GROUP_TYPE emGroupType; // 用户所在的组 BOOL bReserved; // 用户是否为保留用户,保留用户不可删除 BYTE byReserved[512]; // 保留字节 } NET_ONVIF_USER_INFO; ///@brief 添加Onvif用户,CLIENT_AddOnvifUser 入参 typedef struct tagNET_IN_ADD_ONVIF_USER_INFO { DWORD dwSize; // 结构体大小 char szName[128]; // 用户名 char szPassword[128]; // 密码 EM_GROUP_TYPE emGroupType; // 用户所在的组 } NET_IN_ADD_ONVIF_USER_INFO; ///@brief 添加Onvif用户,CLIENT_AddOnvifUser 出参 typedef struct tagNET_OUT_ADD_ONVIF_USER_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_ADD_ONVIF_USER_INFO; ///@brief 修改 Onvif用户,CLIENT_ModifyOnvifUser 入参 typedef struct tagNET_IN_MODIFYONVIF_USER_INFO { DWORD dwSize; // 结构体大小 char szName[DH_COMMON_STRING_128]; // 需要修改的用户名称 NET_ONVIF_USER_INFO stUserInfo; // 新用户信息 } NET_IN_MODIFYONVIF_USER_INFO; ///@brief 修改 Onvif用户,CLIENT_ModifyOnvifUser 出参 typedef struct tagNET_OUT_MODIFYONVIF_USER_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFYONVIF_USER_INFO; ///@brief 获取所有 Onvif 用户信息,CLIENT_GetOnvifUserInfoAll 入参 typedef struct tagNET_IN_GETONVIF_USERINFO_ALL_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GETONVIF_USERINFO_ALL_INFO; ///@brief 获取所有 Onvif 用户信息, CLIENT_GetOnvifUserInfoAll 出参 typedef struct tagNET_OUT_GETONVIF_USERINFO_ALL_INFO { DWORD dwSize; // 结构体大小 int nRetUserInfoNumber; // 本次已查询到的个数 NET_ONVIF_USER_INFO stuUserInfo[MAX_ONVIF_USER_NUM]; // 用户信息列表(无法获取到密码信息) } NET_OUT_GETONVIF_USERINFO_ALL_INFO; ///@brief 修改 Onvif 用户密码, CLIENT_ModifyOnvifUserPassword 入参 typedef struct tagNET_IN_MODIFYONVIF_PASSWORD_INFO { DWORD dwSize; // 结构体大小 char szName[DH_COMMON_STRING_128]; // 用户名称 char szPwd[DH_COMMON_STRING_128]; // 用户密码 char szPwdOld[DH_COMMON_STRING_128]; // 旧密码 } NET_IN_MODIFYONVIF_PASSWORD_INFO; ///@brief 修改 Onvif 用户密码,CLIENT_ModifyOnvifUserPassword 出参 typedef struct tagNET_OUT_MODIFYONVIF_PASSWORD_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFYONVIF_PASSWORD_INFO; ///@brief 添加Onvif用户, pstInParam、pstOutParam 内存由用户申请、释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOnvifUser(LLONG lLoginID, const NET_IN_ADD_ONVIF_USER_INFO *pstuInParam, NET_OUT_ADD_ONVIF_USER_INFO *pstuOutParam, int nWaitTime); ///@brief 修改 Onvif 用户(只能修改非 admin用户)pstInParam、pstOutParam 内存由用户申请、释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyOnvifUser(LLONG lLoginID, const NET_IN_MODIFYONVIF_USER_INFO *pstInParam, NET_OUT_MODIFYONVIF_USER_INFO *pstOutParam, int nWaitTime); ///@brief 获取所有 Onvif 用户信息,pstInParam、pstOutParam 内存由用户申请、释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetOnvifUserInfoAll(LLONG lLoginID, const NET_IN_GETONVIF_USERINFO_ALL_INFO *pstInParam, NET_OUT_GETONVIF_USERINFO_ALL_INFO *pstOutParam, int nWaitTime); ///@brief 修改 Onvif 用户密码, pstInParam、pstOutParam 内存由用户申请、释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyOnvifUserPassword(LLONG lLoginID, const NET_IN_MODIFYONVIF_PASSWORD_INFO *pstInParam, NET_OUT_MODIFYONVIF_PASSWORD_INFO *pstOutParam, int nWaitTime); #define MAX_MOTION_DATA_COUNT 4 // 动检窗口最大个数 ///@brief 回调元数据消息 typedef struct tagNET_CB_MOTION_DATA { DWORD dwSize; int nMotionDataCount; // 动检窗口个数 NET_MOTION_DATA stMotionData[MAX_MOTION_DATA_COUNT]; // 动检数据 int nRegionRow; // 动态检测区域的行数 int nRegionCol; // 动态检测区域的列数 BYTE byRegion[DH_MOTION_ROW][DH_MOTION_COL]; // 检测区域, 最多32*32块区域 } NET_CB_MOTION_DATA; ///@brief 订阅动检元数据处理回调函数原形,lAttachHandle是CLIENT_attachMotionData返回值, 每次1条 typedef void (CALLBACK *fAttachMotionDataCB) (LLONG lAttachHandle, NET_CB_MOTION_DATA* pBuf, LDWORD dwUser); ///@brief CLIENT_AttachMotionData 输入参数 typedef struct tagNET_IN_ATTACH_MOTION_DATA { DWORD dwSize; int nChannel; // 通道号 fAttachMotionDataCB cbNotify; // 回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_MOTION_DATA; ///@brief CLIENT_AttachMotionData 输出参数 typedef struct tagNET_OUT_ATTACH_MOTION_DATA { DWORD dwSize; } NET_OUT_ATTACH_MOTION_DATA; ///@brief 订阅动检元数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachMotionData(LLONG lLoginID, const NET_IN_ATTACH_MOTION_DATA* pstInParam, NET_OUT_ATTACH_MOTION_DATA *pstOutParam, int nWaitTime); ///@brief 退订事件元数据,lAttachHandle是CLIENT_attachMotionData返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachMotionData(LLONG lAttachHandle); ///@brief 指令源 typedef enum tagEM_SRC_INSRUCTION { EM_SRC_INSRUCTION_VTO_CALL, // 门口机呼叫 EM_SRC_INSRUCTION_VTO_CARD, // 门口机刷卡 EM_SRC_INSRUCTION_LIFT_CARD, // 梯控机刷卡 EM_SRC_INSRUCTION_VTH_CALL, // 室内机招梯 EM_SRC_INSRUCTION_VTO_FINGERPRINT, // 门口机刷信息 EM_SRC_INSRUCTION_VTO_PSW, // 门口机刷密码 }EM_SRC_INSRUCTION; ///@brief CLIENT_CallLift 入参 typedef struct tagNET_IN_LIFTCONTROL_CALLLIFT_INFO { DWORD dwSize; char szFloorNo[4]; // 楼层号 char szRoomNo[12]; // 房间号 char szUserID[8]; // 用户ID char szCardNo[32]; // 卡号 EM_SRC_INSRUCTION emSrcInstruction; // 指令源 }NET_IN_LIFTCONTROL_CALLLIFT_INFO; ///@brief CLIENT_CallLift 出参 typedef struct tagNET_OUT_LIFTCONTROL_CALLLIFT_INFO { DWORD dwSize; }NET_OUT_LIFTCONTROL_CALLLIFT_INFO; ///@brief 招梯控制。点亮上下行按钮 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CallLift(LLONG lLoginID, const NET_IN_LIFTCONTROL_CALLLIFT_INFO *pstInParam, NET_OUT_LIFTCONTROL_CALLLIFT_INFO *pstOutParam, int nWaitTime); ///@brief CLIENT_ControlLift 入参 typedef struct tagNET_IN_LIFTCONTROL_CONTROLLIFT_INFO { DWORD dwSize; int nFloorNum; // 楼层数量 char szFloorNo[32][4]; // 楼层号 char szRoomNo[12]; // 房间号 char szUserID[8]; // 用户ID char szCardNo[32]; // 卡号 EM_SRC_INSRUCTION emSrcInstruction; // 指令源 }NET_IN_LIFTCONTROL_CONTROLLIFT_INFO; ///@brief CLIENT_ControlLift 出参 typedef struct tagNET_OUT_LIFTCONTROL_CONTROLLIFT_INFO { DWORD dwSize; }NET_OUT_LIFTCONTROL_CONTROLLIFT_INFO; ///@brief 梯控控制。使用场景:门口机刷卡招梯,那么点亮电梯里有权限的楼层按钮 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlLift(LLONG lLoginID, const NET_IN_LIFTCONTROL_CONTROLLIFT_INFO *pstInParam, NET_OUT_LIFTCONTROL_CONTROLLIFT_INFO *pstOutParam, int nWaitTime); ///@brief CLIENT_GetFloorInfo入参 typedef struct tagNET_IN_GET_FLOOR_INFO { DWORD dwSize; // 结构体大小 int nFloorNum; // 楼层号个数 char szFloors[128][8]; // 楼层号 }NET_IN_GET_FLOOR_INFO; ///@brief 楼层号信息 typedef struct tagNET_FLOOR_INFO { char szFloor[16]; // 楼层号 UINT nControlModuleToken; // 楼层号对应梯控模块地址 UINT nControlModulePort; // 楼层号对应梯控模块端口 UINT nCallLiftModuleToken; // 楼层号对应呼梯模块令牌 UINT nCallLiftModulePort; // 楼层号对应呼梯模块端口 BYTE byReserved[256]; // 保留字节 }NET_FLOOR_INFO; ///@brief CLIENT_GetFloorInfo出参 typedef struct tagNET_OUT_GET_FLOOR_INFO { DWORD dwSize; // 结构体大小 int nFloorInfoNum; // 楼层号信息个数 NET_FLOOR_INFO stuFloorInfo[128]; // 楼层号信息 }NET_OUT_GET_FLOOR_INFO; ///@brief 根据楼层号获取对应梯控模块映射关系 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFloorInfo(LLONG lLoginID, const NET_IN_GET_FLOOR_INFO *pstInParam, NET_OUT_GET_FLOOR_INFO *pstOutParam, int nWaitTime); ///@brief CLIENT_GetElevatorWorkInfo 接口入参 typedef struct tagNET_IN_GET_ELEVATOR_WORK_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道号 char szReserved[256]; // 保留字节 }NET_IN_GET_ELEVATOR_WORK_INFO; ///@brief CLIENT_GetElevatorWorkInfo 接口出参 typedef struct tagNET_OUT_GET_ELEVATOR_WORK_INFO { DWORD dwSize; // 结构体大小 UINT nElevatorWorkState; // 电梯运行状态, 0 电梯停止, 1 电梯上行, 2 电梯下行 char szElevatorFloor[32]; // 电梯所在的楼层 UINT nElevatorWorkSpeed; // 电梯运行速度, 单位mm/s BOOL bIsCheckFloor; // 基准楼层是否已校准(梯控传感器重启需要重新校准) char szReserved[256]; // 保留字节 }NET_OUT_GET_ELEVATOR_WORK_INFO; ///@brief 获取当前电梯运行信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetElevatorWorkInfo(LLONG lLoginID, const NET_IN_GET_ELEVATOR_WORK_INFO* pstuInParam, NET_OUT_GET_ELEVATOR_WORK_INFO* pstuOutParam, int nWaitTime); ///@brief 无线配置类型 typedef enum tagNET_ENUM_LOWRATEWPAN_CONFIG { NET_ENUM_LOWRATEWPAN_ACCESS_WORKMODE, // 工作模式配置,对应结构体 NET_LOWRATEWPAN_WORKMODE }NET_ENUM_LOWRATEWPAN_CONFIG; ///@brief 工作模式 typedef enum tagNET_ENUM_LOWRATEWPAN_WORKMODE { NET_ENUM_LOWRATEWPAN_WORKMODE_UNKNOWN, // 未知 NET_ENUM_LOWRATEWPAN_WORKMODE_NORMAL, // 正常 NET_ENUM_LOWRATEWPAN_WORKMODE_CLEAN, // 打扫 NET_ENUM_LOWRATEWPAN_WORKMODE_DECORATION, // 装修 NET_ENUM_LOWRATEWPAN_WORKMODE_UNUSED, // 停用 NET_ENUM_LOWRATEWPAN_WORKMODE_OUTSTANDING, // 欠费 }NET_ENUM_LOWRATEWPAN_WORKMODE; ///@brief 工作模式配置 typedef struct tagNET_LOWRATEWPAN_WORKMODE { DWORD dwSize; NET_ENUM_LOWRATEWPAN_WORKMODE emWorkMode; // 工作模式 }NET_LOWRATEWPAN_WORKMODE; ///@brief 无线配置获取接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLowRateWPANConfig(LLONG lLoginID,NET_ENUM_LOWRATEWPAN_CONFIG emType,char* SN,void* szOutBuffer, DWORD dwOutBufferSize, int nWaitTime, void *reserve); ///@brief 无线配置设置接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetLowRateWPANConfig(LLONG lLoginID,NET_ENUM_LOWRATEWPAN_CONFIG emType,char* SN,void* szInBuffer, DWORD dwInBufferSize, int nWaitTime, int *restart, void *reserve); ///@brief CLIENT_GetVideoDiagnosisState 入参 typedef struct tagNET_IN_GET_VIDEODIAGNOSIS_STATE { DWORD dwSize; // 结构体大小 char szProject[128]; // 计划名,为空表示所有执行的计划 }NET_IN_GET_VIDEODIAGNOSIS_STATE; ///@brief 诊断状态 typedef struct tagVIDEODIAGNOSIS_STATE { BOOL bEnable; // 是否使能 BOOL bRunning; // 是否正在运行 使能开启,并且当前有工作任务正在进行,没有错误发生。 char szCurrentProject[MAX_PATH]; // 当前计划名称 char szCurrentTask[MAX_PATH]; // 当前任务名称 char szCurrentProfile[MAX_PATH]; // 当前任务配置参数表名称 int nCurrentSourceCount; // 当前任务轮训视频源个数 int nCurrentSourceIndex; // 当前任务当前视频源序号 从0开始 DH_TSECT stCurrentTimeSection; // 当前计划时间段 int nTaskCountOfProject; // 当前计划总任务数 int nIndexOfCurrentTask; // 当前任务序号 从0开始 int nIncompleteCause; // 只有当任务状态为TaskState=2时生效,返回未完成原因 0:指定时间内没有完成巡检,1:授权路数超限,2:加密到期 int nTaskState; // 任务运行状态 -1:未知 0表示未开始,1表示运行中,2表示未完成,3表示已完成 BYTE byReserved[504]; // 保留字节 }VIDEODIAGNOSIS_STATE; ///@brief CLIENT_GetVideoDiagnosisState 出参 typedef struct tagNET_OUT_GET_VIDEODIAGNOSIS_STATE { DWORD dwSize; // 结构体大小 VIDEODIAGNOSIS_STATE stuState[2]; // 工作状态,数组下标0:Tour,1:RealTime }NET_OUT_GET_VIDEODIAGNOSIS_STATE; ///@brief 获取视频诊断进行状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoDiagnosisState(LLONG lLoginID, const NET_IN_GET_VIDEODIAGNOSIS_STATE *pstInParam, NET_OUT_GET_VIDEODIAGNOSIS_STATE *pstOutParam, int nWaitTime); #define LOGIN_TYPE_DEVICE_NOT_SUPPORT 100 // 设备不支持此种登录 ///@brief CLIENT_PostLoginTask 输入参数 typedef struct tagNET_POST_LOGIN_TASK { LLONG lLoginID; //登录句柄 char* pchDVRIP; //设备IP LONG nDVRPort; //设备端口 BOOL bOnline; //设备状态 bOnline为TRUE表示登录成功,为FALSE时表示登录失败。 NET_DEVICEINFO_Ex stuDeviceInfo; //设备信息扩展 int nError; //当登陆失败时(bOnline为FALSE),nError 的错误码含义说明参考 CLIENT_Login 中的 error 说明,同时,当nError为 LOGIN_TYPE_DEVICE_NOT_SUPPORT 时,表示设备不支持此种登录方式 char szReserve[1024]; //保留字段 }NET_POST_LOGIN_TASK; ///@brief CLIENT_PostLoginTask 登录结果回调 typedef void (CALLBACK *fPostLoginTask)(DWORD dwTaskID, NET_POST_LOGIN_TASK* pOutParam, LDWORD dwUser); ///@brief 连接类型 typedef enum tagEM_TCP_LOGIN_CONFIG_TYPE { EM_TCP_LOGIN_CONFIG_TYPE_UNKNOWN = 0, // 未知配置 EM_TCP_LOGIN_CONFIG_TYPE_MULTICAST, // 组播配置 }EM_TCP_LOGIN_CONFIG_TYPE; ///@brief CLIENT_PostLoginTask 输入参数 typedef struct tagNET_IN_POST_LOGIN_TASK { DWORD dwSize; // 赋值为结构体大小 char szReserve1[4]; // 保留字段1 char* szIp; // 设备ip unsigned int nPort; // 登陆端口 char szReserve2[4]; // 保留字段2 char* szName; // 用户名 char* szPwd; // 密码 EM_LOGIN_SPAC_CAP_TYPE emSpecCap; // 登录方式,目前只支持 EM_LOGIN_SPEC_CAP_TCP、 // EM_LOGIN_SPEC_CAP_MAIN_CONN_ONLY、EM_LOGIN_SPEC_CAP_P2P EM_TCP_LOGIN_CONFIG_TYPE emConfigType; // 当emSpecCap为EM_LOGIN_SPEC_CAP_TCP时,需要获取的配置类型,此时获取的配置和拉流相关 // 当为EM_TCP_LOGIN_CONFIG_TYPE_UNKNOWN时,码流通过TCP传输,为EM_TCP_LOGIN_CONFIG_TYPE_MULTICAST时,码流通过组播传输 fPostLoginTask cbLogin; // 登陆结果回调 void* pUser; // 回调用户参数 BOOL bHighLevelSecurity; // 是否高安全等级登陆 EM_LOGIN_TLS_TYPE emTLSCap; // 登录的TLS模式,目前仅支持EM_LOGIN_SPEC_CAP_TCP模式下的 tls登陆(TLS加密优先使用该选项) char byReserved[128]; // 预留字段 }NET_IN_POST_LOGIN_TASK; ///@brief CLIENT_PostLoginTask 输出参数 typedef struct tagNET_OUT_POST_LOGIN_TASK { DWORD dwSize; // 赋值为结构体大小 }NET_OUT_POST_LOGIN_TASK; ///@brief 投递异步登录任务 CLIENT_NET_API DWORD CALL_METHOD CLIENT_PostLoginTask(const NET_IN_POST_LOGIN_TASK* pInParam, NET_OUT_POST_LOGIN_TASK* pOutParam); ///@brief 取消 CLIENT_PostLoginTask 接口的异步登录任务,dwTaskID 为 CLIENT_PostLoginTask 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CancelLoginTask(DWORD dwTaskID); /****************************** start 报警主机接口 与老报警主机不兼容***************************************/ ///@brief 获取能力 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALARMCAPS typedef struct tagNET_IN_GET_ALARMCAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_ALARMCAPS; ///@brief Partial Arm的配置信息 typedef struct tagNET_PARTIAL_ARM { BOOL bEnable; // 是否支持Partial Arm。当bSupportArmProfile不使能时,才支持显示Partial布防。 int nIndex; // 指示Partial N布防,比如Index为1时,支持Partial1布防 BYTE byReserved[64]; // 预留字节 }NET_PARTIAL_ARM; ///@brief 布撤防模式信息 typedef struct tagNET_AREA_ARM_MODE { BOOL bOutDoor; // 是否支持显示外出布防,当bSupportArmProfile使能时,才支持显示外出布防。执行setArmMode接口的布防模式参数为"T" BOOL bAtHome; // 是否支持显示留守布防,当bSupportArmProfile使能时,才支持显示留守布防。执行setArmMode接口的布防模式参数为"p1" BOOL bTotalArm; // 是否支持Total布防。当bSupportArmProfile不使能时,才支持显示Total布防。 int nPartialArmNum; // 是否支持Partial Arm的个数 NET_PARTIAL_ARM stuPartialArm[4]; // 是否支持Partial Arm,最多支持4个 BOOL bDisArm; // 是否支持撤防。一般默认都需要显示撤防 BYTE byReserved[516]; // 预留字节 }NET_AREA_ARM_MODE; ///@brief 支持的SIM卡信息 typedef struct tagNET_SUPPORT_MULITSIM_CARDS { int nIndex; // sim卡标识 BOOL bEnable; // 是否启用 BYTE bReserved[64]; // 预留字节 }NET_SUPPORT_MULITSIM_CARDS; ///@brief 旁路模式类型 typedef enum tagEM_BYPASSMODE_TYPE { EM_BYPASSMODE_TYPE_UNKNOWN, // 未知 EM_BYPASSMODE_TYPE_OFF, // 不使用 EM_BYPASSMODE_TYPE_ACTIVE, // 正常 EM_BYPASSMODE_TYPE_BYPASSED, // 旁路 EM_BYPASSMODE_TYPE_ISOLATED, // 隔离 EM_BYPASSMODE_TYPE_TEST, // 测试 }EM_BYPASSMODE_TYPE; ///@brief 获取能力 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALARMCAPS typedef struct tagNET_OUT_GET_ALARMCAPS { DWORD dwSize; // 结构体大小 int nSiren; // 支持的警号数量 int nAlarmIn; // 支持的报警输入数量 int nAlarmOut; // 支持的报警输出数量, 最多82个 int nRemoteControl; // 支持的遥控器数量 int nICCard; // 支持的IC卡数量 int nKeypad; // 支持的键盘数量 int nTelephoneNumber; // 支持的电话号码数量 int nKeypadUserCount; // 支持的键盘用户数量 int nAlarmAreas; // 支持的Area(也可称为子系统)数量 BOOL bSupportOneClickArmMode; // 是否支持主机一键布撤防 BOOL bSupportDefenceArmMode; // 是否支持单防区布撤防 BOOL bSupportArmProfile; // 是否启用布防的情景模式 NET_AREA_ARM_MODE stuAreaArmMode; // 布撤防模式 int nZoomNum; // 防区工作模式个数 EM_BYPASSMODE_TYPE emZoomMode[16]; // 支持的防区工作模式 BOOL bSupportAlarmClear; // 是否支持消警命令 int nNetworkUserCount; // 支持的网络用户数量 int nSupportMultiSIMCardsNum; // 支持的SIM个数 NET_SUPPORT_MULITSIM_CARDS stuSupportMultiSIMCards[8]; //支持的SIM卡信息 }NET_OUT_GET_ALARMCAPS; ///@brief 获取布防模式 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE typedef struct tagNET_IN_GET_ALARMMODE { DWORD dwSize; // 结构体大小 }NET_IN_GET_ALARMMODE; ///@brief 布撤防信息 typedef struct tagNET_ARMMODE_INFO { EM_ARM_STATE emArmState; // 布撤防状态 BYTE byReserved[1024]; // 保留字节 }NET_ARMMODE_INFO; ///@brief 获取布防模式 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE typedef struct tagNET_OUT_GET_ALARMMODE { DWORD dwSize; // 结构体大小 int nArmModeRet; // 布撤防状态个数 NET_ARMMODE_INFO stuArmMode[MAX_AREA_NUMBER]; // 布撤防信息 int nArmModeRetEx; // 布撤防状态个数扩展 超过8个请使用这个字段 NET_ARMMODE_INFO stuArmModeEx[MAX_AREA_NUMBER_EX]; // 布撤防信息 }NET_OUT_GET_ALARMMODE; ///@brief 布撤防详细信息 typedef struct tagNET_ARM_OPTIONS { NET_EM_SCENE_MODE emSceneMode; // 情景模式 EM_AREAARM_TRIGGERMODE emAreaarmTriggerMode; // 触发方式 int nId; // 触发者编号,如用户编号、键盘地址、遥控器编号、定时器编号或key类型防区号 char szName[64]; // 触发者名称,如用户名称,键盘名称等 char szClientAddress[64]; // 网络用户IP地址或网络地址,对于TriggerMode为Remote时,需要填写此项 BYTE bReserved[132]; // 预留字节 }NET_ARM_OPTIONS; ///@brief 执行布撤防时的附加信息 typedef struct tagNET_DETAIL_INFO { NET_ARM_OPTIONS stuArmOption; // 布撤防详细信息 BYTE byReserved[128]; // 预留字节 }NET_DETAIL_INFO; ///@brief 设置布防模式 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE typedef struct tagNET_IN_SET_ALARMMODE { DWORD dwSize; // 结构体大小 EM_ARM_TYPE emArmType; // 布撤防类型 char szPwd[256]; // 密码 int nAreaNum; // 区域的个数 int arrAreas[MAX_AREA_NUMBER]; // 区域号 NET_DETAIL_INFO stuDetail; // 执行布撤防时的附加信息 int nAreaNumEx; // 区域的扩展个数 int arrAreasEx[MAX_AREA_NUMBER_EX]; // 区域号扩展 个数超过8个使用这个字段 }NET_IN_SET_ALARMMODE; ///@brief 布防失败细节 typedef struct tagARM_FAILED_DETAIL { int nArea; //布防失败的区域号 int nAlarmSourceRet; // 报警源输入返回个数 int arrAlarmSource[MAX_ZONE_NUMBER]; // 区域下包含的有源输入的防区 BYTE byReserved[1024]; // 保留字节 }ARM_FAILED_DETAIL; ///@brief 异常防区信息 typedef struct tagNET_ZONE_ABNORMAL_INFO { int nIndex; // 防区号 char szName[32]; // 防区名称 char szReason[32]; // 异常原因,异常原因,平台直接取值做显示即可 BYTE byReserved[188]; // 保留字节 }NET_ZONE_ABNORMAL_INFO; ///@brief 布防失败细节扩展字段 typedef struct tagARM_FAILED_DETAIL_EX { int nArea; // 布防失败的区域号 int nAlarmSourceRetEx; // 报警源输入返回个数 int arrAlarmSourceEx[256]; // 区域下包含的有源输入的防区 int nZoneAbnormalNum; // 异常防区信息个数 NET_ZONE_ABNORMAL_INFO stuZoneAbnormal[1024]; // 异常防区信息,最大有1024个 }ARM_FAILED_DETAIL_EX; ///@brief 设备异常信息 typedef struct tagNET_DEVICE_FAULT_INFO { char szName[32]; // 设备名称 char szReason[32]; // 异常原因,平台直接取值做显示即可 BYTE byReserved[512]; // 保留字节 }NET_DEVICE_FAULT_INFO; ///@brief 设置布防模式 输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE typedef struct tagNET_OUT_SET_ALARMMODE { DWORD dwSize; // 结构体大小 int nArmResult; // 布防结果 0:成功 1:失败 int nFailedAreaRet; // 布防失败的区域个数 ARM_FAILED_DETAIL stuFailedDetail[MAX_AREA_NUMBER]; // 布防失败的细节 int nFailedDetailNum; // 布防失败个数, 最大值为64 ARM_FAILED_DETAIL_EX* pstuFailedDetailEx; // 布防失败的细节扩展字段 布防个数大于8个使用此字段 int nDeviceFaultNum; // 异常设备信息个数 NET_DEVICE_FAULT_INFO stuDeviceFault[256]; // 设备异常信息,最大支持256个 }NET_OUT_SET_ALARMMODE; ///@brief 设置旁路状态 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE typedef struct tagNET_IN_SET_BYPASSMODE { DWORD dwSize; // 结构体大小 char szPwd[256]; // 密码 EM_BYPASSMODE_TYPE emType; // 旁路模式 int nZoneNum; // 防区个数 int arrZones[MAX_ZONE_NUMBER]; // 防区号 int nZoneNumEx; // 防区个数扩展 int arrZonesEx[MAX_ZONE_NUMBER_EX]; // 防区号扩展,超过72时使用此字段 }NET_IN_SET_BYPASSMODE; ///@brief 设置旁路状态 输出参数,此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE typedef struct tagNET_OUT_SET_BYPASSMODE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_BYPASSMODE; ///@brief 获取旁路状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE typedef struct tagNET_IN_GET_BYPASSMODE { DWORD dwSize; // 结构体大小 int nZoneNum; // 防区个数 int arrZones[MAX_ZONE_NUMBER]; // 防区号, 从1开始 int nZoneNumEx; // 防区个数扩展 int arrZonesEx[MAX_ZONE_NUMBER_EX]; // 防区号扩展 超过72使用这个字段 }NET_IN_GET_BYPASSMODE; ///@brief 获取旁路状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE typedef struct tagNET_OUT_GET_BYPASSMODE { DWORD dwSize; // 结构体大小 int nZoneRet; // 防区个数 EM_BYPASSMODE_TYPE arrModes[MAX_ZONE_NUMBER]; // 防区工作模式 int nZoneRetEx; // 防区个数扩展 EM_BYPASSMODE_TYPE arrModesEx[MAX_ZONE_NUMBER_EX]; // 防区号扩展 超过72使用这个字段 }NET_OUT_GET_BYPASSMODE; ///@brief 获取区域防区信息 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_AREAZONES typedef struct tagNET_IN_GET_AREAZONES { DWORD dwSize; // 结构体大小 int nAreaNum; // 区域个数 int arrArea[MAX_AREA_NUMBER]; // 区域号 int nAreaNumEx; // 区域个数 int arrAreaEx[MAX_AREA_NUMBER_EX]; // 区域号扩展 区域个数超过8使用这个字段 }NET_IN_GET_AREAZONES; ///@brief 区域信息 typedef struct tagNET_AREA_INFO { int nArea; //区域号 int nZoneRet; // 区域下的防区个数 int arrZones[MAX_ZONE_NUMBER]; //区域下的防区号 BYTE byReserved[1024]; // 保留字段 }NET_AREA_INFO; ///@brief 防区信息 typedef struct tagNET_ZONES_INFO { int nIndex; // 防区号 char szName[128]; // 防区名称 UINT nSupPartial; // 第0位为1,表示支持Partial1 第1位为1,表示支持Partial2 BYTE byReserved[512]; // 保留字段 }NET_ZONES_INFO; ///@brief 区域信息扩展字段 typedef struct tagNET_AREA_INFO_EX { int nArea; // 区域号 int nZoneRetEx; // 区域下的防区个数扩展 int arrZonesEx[MAX_ZONE_NUMBER_EX]; //区域下的防区号 BYTE byReserved[1024]; // 保留字段 }NET_AREA_INFO_EX; ///@brief 区域信息扩展字段补充字段 与 NET_AREA_INFO_EX 的合集表示区域信息 typedef struct tagNET_AREA_INFO_EX_SUPPLEMENT { NET_ZONES_INFO stuZonesInfo[MAX_ZONE_NUMBER_EX]; // 防区信息 char szAreaName[128]; // 区域名称 BYTE byReserved[1024]; // 保留字段 }NET_AREA_INFO_EX_SUPPLEMENT; ///@brief 获取区域防区信息 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_AREAZONES typedef struct tagNET_OUT_GET_AREAZONES { DWORD dwSize; // 结构体大小 int nAreaRet; // 区域个数 NET_AREA_INFO stuAreaInfo[MAX_AREA_NUMBER]; // 区域信息 int nAreaRetEx; // 区域个数 NET_AREA_INFO_EX stuAreaInfoEx[MAX_AREA_NUMBER_EX]; // 区域信息扩展 超过8个防区使用此字段 NET_AREA_INFO_EX_SUPPLEMENT stuAreaInfoExSupplement[MAX_AREA_NUMBER_EX]; // 区域信息扩展补充字段 }NET_OUT_GET_AREAZONES; ///@brief 获取所有报警防区 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALLINSLOTS typedef struct tagNET_IN_GET_ALLINSLOTS { DWORD dwSize; // 结构体大小 }NET_IN_GET_ALLINSLOTS; ///@brief 获取所有报警防区 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALLINSLOTS typedef struct tagNET_OUT_GET_ALLINSLOTS { DWORD dwSize; // 结构体大小 int nLocol; // 本地防区数量, 最多8个 int nWired; // 有线防区数量, 最多64个 int nWireless; // 无线防区数量, 最多64个 }NET_OUT_GET_ALLINSLOTS; ///@brief 获取所有报警输出 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALLOUTSLOTS typedef struct tagNET_IN_GET_ALLOUTSLOTS { DWORD dwSize; // 结构体大小 }NET_IN_GET_ALLOUTSLOTS; ///@brief 获取所有报警输出 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ALLOUTSLOTS typedef struct tagNET_OUT_GET_ALLOUTSLOTS { DWORD dwSize; // 结构体大小 int nLocol; // 本地报警输出数量, 最多2个 int nWired; // 扩展有线报警输出数量, 最多80个 int nWireless; // 扩展无线报警输出数量, 最多80个 }NET_OUT_GET_ALLOUTSLOTS; ///@brief 获取防区练连接状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ZONECONNECTIONSSTATUS typedef struct tagNET_IN_GET_CONNECTIONSTATUS { DWORD dwSize; // 结构体大小 }NET_IN_GET_CONNECTIONSTATUS; ///@brief 获取防区连接状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ZONECONNECTIONSSTATUS typedef struct tagNET_OUT_GET_CONNECTIONSTATUS { DWORD dwSize; // 结构体大小 int nZoneRet; // 防区个数 bool arrZoneStates[MAX_ZONE_NUMBER];// 防区在线状态false:离线 true:在线 int nZoonRetEx; // 防区个数扩展 BOOL arrZoneStatesEx[MAX_ZONE_NUMBER_EX];// 防区在线状态扩展FALSE:离线 TRUE:在线,防区个数超过72使用这个字段 }NET_OUT_GET_CONNECTIONSTATUS; ///@brief 获取异常防区类型 typedef enum tagEM_GET_AREASSTATUS_TYPE { EM_GET_AREASSTATUS_TYPE_UNKNOWN, // 未知 EM_GET_AREASSTATUS_TYPE_ACTIVE, // 激活 EM_GET_AREASSTATUS_TYPE_OPEN, // 打开 }EM_GET_AREASSTATUS_TYPE; ///@brief 获取区域状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_AREASTATUS typedef struct tagNET_IN_GET_AREAS_STATUS { DWORD dwSize; // 结构体大小 EM_GET_AREASSTATUS_TYPE emType; // 获取异常防区类型 }NET_IN_GET_AREAS_STATUS; ///@brief 防区异常状态 typedef enum tagEM_ZONE_STATUS { EM_ZONE_STATUS_UNKNOWN, // 未知 EM_ZONE_STATUS_ALARM, // 防区报警/打开 EM_ZONE_STATUS_TAMPER, // 防区防拆 EM_ZONE_STATUS_MASK, // 防区防遮挡 EM_ZONE_STATUS_SHORT, // 防区短路 EM_ZONE_STATUS_NORMAL, // 防区正常 }EM_ZONE_STATUS; ///@brief 防区异常信息 typedef struct tagNET_ZONE_STATUS { int nIndex; // 防区号 EM_ZONE_STATUS emStatus; // 防区异常状态 BYTE byReserved[1024]; // 保留字节 }NET_ZONE_STATUS; ///@brief 区域异常防区信息 typedef struct tagNET_AREA_STATUS { int nArea; // 区域号 int nZoneRet; // 防区个数 NET_ZONE_STATUS stuZoneStatus[MAX_ZONE_NUMBER]; // 防区异常状态 BYTE byReserved[1024]; // 保留字节 }NET_AREA_STATUS; ///@brief 区域异常防区信息扩展 typedef struct tagNET_AREA_STATUS_EX { int nArea; // 区域号 int nZoneRetEx; // 防区个数扩展 NET_ZONE_STATUS stuZoneStatusEx[MAX_ZONE_NUMBER_EX]; // 防区异常状态 BYTE byReserved[1024]; // 保留字节 }NET_AREA_STATUS_EX; ///@brief 获取区域状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_AREASTATUS typedef struct tagNET_OUT_GET_AREAS_STATUS { DWORD dwSize; // 结构体大小 int nAreaRet; // 区域个数 NET_AREA_STATUS stuAreaStatus[MAX_AREA_NUMBER]; //区域防区异常状态信息 int nAreaRetEx; // 区域个数扩展 NET_AREA_STATUS_EX stuAreaStatusEx[MAX_AREA_NUMBER_EX]; //区域防区异常状态信息扩展,区域个数超过8个使用这个字段 }NET_OUT_GET_AREAS_STATUS; ///@brief 输出通道类型 typedef enum tagEM_OUTPUT_TYPE { EM_OUTPUT_TYPE_UNKNOWN, // 未知 EM_OUTPUT_TYPE_SIREN, // 警号 EM_OUTPUT_TYPE_ALARMOUT, // 输出通道 }EM_OUTPUT_TYPE; ///@brief 获取输出状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE typedef struct tagNET_IN_GET_OUTPUT_STATE { DWORD dwSize; // 结构体大小 EM_OUTPUT_TYPE emType; // 通道类型 }NET_IN_GET_OUTPUT_STATE; ///@brief 获取输出状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE typedef struct tagNET_OUT_GET_OUTPUT_STATE { DWORD dwSize; // 结构体大小 int nStateRet; // 状态个数 bool arrStates[82]; // 状态false:关闭true打开 BYTE byReserved[6]; // 对齐 int nStateRetEx; // 状态个数扩展 超过82个使用这个字段 BOOL arrStatesEx[MAX_ZONE_NUMBER_EX]; // 状态FLASE:关闭TRUE打开 BYTE byReserved1[4]; // 对齐 }NET_OUT_GET_OUTPUT_STATE; ///@brief 设置输出状态 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE typedef struct tagNET_IN_SET_OUTPUT_STATE { DWORD dwSize; // 结构体大小 EM_OUTPUT_TYPE emType; // 输出类型 int nChannel; // emType= EM_OUTPUT_TYPE_SIREN时表示警号号 // emType= EM_OUTPUT_TYPE_ALARMOUT时表示通道号 bool action; // 输出动作false:关闭true:打开 BYTE byReserved[3]; // 字节对齐 }NET_IN_SET_OUTPUT_STATE; ///@brief 设置输出状态输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE typedef struct tagNET_OUT_SET_OUTPUT_STATE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_OUTPUT_STATE; ///@brief 获取防区故障 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ZONESTROUBLE typedef struct tagNET_IN_GET_ZONES_TROUBLE { DWORD dwSize; // 结构体大小 }NET_IN_GET_ZONES_TROUBLE; ///@brief 防区故障类型 typedef enum tagEM_ZONE_TROUBLE_TYPE { EM_ZONE_TROUBLE_TYPE_UNKNOWN, // 未知 EM_ZONE_TROUBLE_TYPE_TAMPER, // 通道防拆 EM_ZONE_TROUBLE_TYPE_MASK, // 通道遮挡 EM_ZONE_TROUBLE_TYPE_SHORT, // 通道防短 EM_ZONE_TROUBLE_TYPE_ALARM, // 通道报警/打开 EM_ZONE_TROUBLE_TYPE_NORMAL, // 通道正常 }EM_ZONE_TROUBLE_TYPE; ///@brief 防区故障信息 typedef struct tagNET_ZONE_TROUBLE_INFO { int nIndex; // 防区号 EM_ZONE_TROUBLE_TYPE emTroubleType; // 故障类型 BYTE byReserved[1024]; // 保留字节 }NET_ZONE_TROUBLE_INFO; ///@brief 获取防区故障 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ZONESTROUBLE typedef struct tagNET_OUT_GET_ZONES_TROUBLE { DWORD dwSize; // 结构体大小 int nZoneRet; //故障防区个数 NET_ZONE_TROUBLE_INFO stuTroubleInfo[MAX_ZONE_NUMBER]; //防区故障信息 int nZoneRetEx; // 故障防区个数扩展 NET_ZONE_TROUBLE_INFO stuTroubleInfoEx[MAX_ZONE_NUMBER_EX]; //防区故障信息扩展个数超过72使用这字段 }NET_OUT_GET_ZONES_TROUBLE; ///@brief 通道类型 typedef enum tagEM_CHANNELS_STATE_TYPE { EM_CHANNELS_STATE_TYPE_UNKNOWN, // 未知 EM_CHANNELS_STATE_TYPE_ALL, // 所有通道 EM_CHANNELS_STATE_TYPE_ALARMIN, // 报警输入通道 EM_CHANNELS_STATE_TYPE_ALARMOUT, // 报警输出通道 EM_CHANNELS_STATE_TYPE_SIREN, // 警号通道 }EM_CHANNELS_STATE_TYPE; ///@brief 获取通道状态查询条件 typedef struct tagNET_GET_CHANNELS_STATE_CONDITION { EM_CHANNELS_STATE_TYPE emType; // 通道类型 BYTE byReserved[1020]; // 保留字节 }NET_CHANNELS_STATE_CONDITION; ///@brief 获取通道状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE typedef struct tagNET_IN_GET_CHANNELS_STATE { DWORD dwSize; // 结构体大小 NET_CHANNELS_STATE_CONDITION stuCondition; // 获取通道状态查询条件 }NET_IN_GET_CHANNELS_STATE; ///@brief 设备状态 typedef enum tagEM_DEV_STATUS { EM_DEV_STATUS_UNKNOWN = -1, // 未知 EM_DEV_STATUS_OFFLINE, // 离线 EM_DEV_STATUS_ONLINE, // 在线 }EM_DEV_STATUS; ///@brief 输出状态 typedef enum tagEM_OUTPUT_STATE { EM_OUTPUT_STATE_UNKNOWN = -1, // 未知 EM_OUTPUT_STATE_CLOSE, // 关闭 EM_OUTPUT_STATE_OPEN, // 打开 }EM_OUTPUT_STATE; ///@brief 探测器状态信息 typedef struct tagNET_SENSOR_STATE { int nExPowerState; // 外接电源连接状态 : 0:正常, 1:未连接 int nTamper; // 配件防拆状态 : 0:正常, 1:打开 int nLowPowerState; // 电池电量状态 : 0:正常, 1:低电量, 2:掉电 char szReserved[244]; // 保留字节 } NET_SENSOR_STATE; ///@brief 通道状态 typedef struct tagNET_CHANNELS_STATE { EM_CHANNELS_STATE_TYPE emType; // 通道类型 UINT nIndex; // 通道号 EM_DEV_STATUS emOnlineState; // 在线状态 EM_ZONE_STATUS emAlarmState; // 报警状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMIN时有效 EM_OUTPUT_STATE emOutputState; // 输出状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMOUT,EM_CHANNELS_STATE_TYPE_SIREN时有效 char szName[64]; // 通道对应名称 char szSN[32]; // 通道对应SN号 NET_SENSOR_STATE stuSensorState; // 探测器状态信息 BYTE byReserved[60]; // 保留字节 }NET_CHANNELS_STATE; ///@brief 获取通道状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE typedef struct tagNET_OUT_GET_CHANNELS_STATE { DWORD dwSize; // 结构体大小 UINT nChannelsStatesCount; // 通道状态个数 NET_CHANNELS_STATE stuChannelsStates[1024]; // 通道状态 }NET_OUT_GET_CHANNELS_STATE; ///@brief 配件类型 typedef enum tagNET_EM_ACCESSORY_TYPE { NET_EM_ACCESSORY_TYPE_UNKNOWN, //未知 NET_EM_ACCESSORY_TYPE_Keypad, //键盘 NET_EM_ACCESSORY_TYPE_MBUSExpansionModule, //MBUS扩展报警输入/输出模块 NET_EM_ACCESSORY_TYPE_RS485ExpansionModule, //RS485扩展报警输入/输出模块 NET_EM_ACCESSORY_TYPE_MBUSMotherBoard, //MBUS主板 }NET_EM_ACCESSORY_TYPE; ///@brief 获取配件信息 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ACCESSORY typedef struct tagNET_IN_GET_ACCESSORY_INFO { DWORD dwSize; // 结构体大小 NET_EM_ACCESSORY_TYPE emAccessoryType; // 配件类型 }NET_IN_GET_ACCESSORY_INFO; ///@brief 配件能力集 typedef struct tagNET_ACCESSORY_GAPS { BYTE bySupportSensitivity; // 是否支持灵敏度修改( 0-不支持, 1-支持) BYTE byReserved[63]; // 保留字节 }NET_ACCESSORY_GAPS; ///@brief 配件信息 typedef struct tagNET_ACCESSORY_INFO { NET_EM_ACCESSORY_TYPE emType; // 配件类型 int nChannel; // 总线号 UINT nAddr; // 配件地址 UINT nAlarmInCount; // 配件的报警输入总数 int nAlarmInChannels[16]; // 配件报警输入对应的通道号,没有映射到报警输入的为0 BYTE byReserved[4]; // 保留字节 UINT nAlarmOutCount; // 配件的报警输出总数 int nAlarmOutChannels[16]; // 配件报警输出对应的通道号,没有映射到报警输入的为0 char szModel[32]; // 配件型号 char szName[64]; // 配件名称 char szVersion[64]; // 配件版本信息 NET_ACCESSORY_GAPS stuAccessoryCaps; // 配件支持的能力集 BYTE byReserved1[232]; // 保留字节 }NET_ACCESSORY_INFO; ///@brief 获取配件信息 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ACCESSORY typedef struct tagNET_OUT_GET_ACCESSORY_INFO { DWORD dwSize; // 结构体大小 UINT nMaxAccessoryInfo; // 申请的配件个数 NET_ACCESSORY_INFO* pstuAccessoryInfos; // 配件信息指针,由调用者分配内存,分配的大小为 nMaxAccessoryInfo*sizeof(NET_ACCESSORY_INFO) UINT nRetAccessoryInfo; // 返回的配件个数 }NET_OUT_GET_ACCESSORY_INFO; ///@brief 获取的操作类型 typedef enum tagNET_EM_GET_ALARMREGION_INFO { NET_EM_GET_ALARMREGION_INFO_UNKNOWN, //未知 NET_EM_GET_ALARMREGION_INFO_ALARMCAPS, //获取防区能力, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMCAPS, pstuOutParam类型为NET_OUT_GET_ALARMCAPS NET_EM_GET_ALARMREGION_INFO_ARMMODE, //获取布防状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMMODE, pstuOutParam类型为NET_OUT_GET_ALARMMODE NET_EM_GET_ALARMREGION_INFO_BYPASSMODE, //获取旁路状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_BYPASSMODE, pstuOutParam类型为NET_OUT_GET_BYPASSMODE NET_EM_GET_ALARMREGION_INFO_AREAZONES, //获取区域防区, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAZONES, pstuOutParam类型为NET_OUT_GET_AREAZONES NET_EM_GET_ALARMREGION_INFO_ALLINSLOTS, //获取所有的报警防区, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLINSLOTS, pstuOutParam类型为NET_OUT_GET_ALLINSLOTS NET_EM_GET_ALARMREGION_INFO_ALLOUTSLOTS, //获取所有的报警输出, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLOUTSLOTS, pstuOutParam类型为NET_OUT_GET_ALLOUTSLOTS NET_EM_GET_ALARMREGION_INFO_ZONECONNECTIONSSTATUS, //获取防区连接状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CONNECTIONSTATUS, pstuOutParam类型为NET_OUT_GET_CONNECTIONSTATUS NET_EM_GET_ALARMREGION_INFO_AREASTATUS, //获取区域状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAS_STATUS, pstuOutParam类型为NET_OUT_GET_AREAS_STATUS NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE, //获取输出状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_OUTPUT_STATE, pstuOutParam类型为NET_OUT_GET_OUTPUT_STATE NET_EM_GET_ALARMREGION_INFO_ZONESTROUBLE, //获取防区故障信息, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ZONES_TROUBLE, pstuOutParam类型为NET_OUT_GET_ZONES_TROUBLE NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE, //获取通道状态, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CHANNELS_STATE, pstuOutParam类型为NET_OUT_GET_CHANNELS_STATE NET_EM_GET_ALARMREGION_INFO_ACCESSORY, //获取配件信息, 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ACCESSORY_INFO, pstuOutParam类型为NET_OUT_GET_ACCESSORY_INFO }NET_EM_GET_ALARMREGION_INFO; ///@brief 报警主机获取操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAlarmRegionInfo(LLONG lLoginID, NET_EM_GET_ALARMREGION_INFO emType, const void *pstuInParam, void *pstuOutParam, int nWaitTime); ///@brief 设置的操作类型 typedef enum tagNET_EM_SET_ALARMREGION_INFO { NET_EM_SET_ALARMREGION_INFO_UNKNOWN, //未知 NET_EM_SET_ALARMREGION_INFO_ARMMODE, //设置布防模式, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_ALARMMODE, pstuOutParam类型为NET_OUT_SET_ALARMMODE NET_EM_SET_ALARMREGION_INFO_BYPASSMODE, //设置旁路模式, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_BYPASSMODE, pstuOutParam类型为NET_OUT_SET_BYPASSMODE NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE, //设置输出状态, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_OUTPUT_STATE, pstuOutParam类型为NET_OUT_SET_OUTPUT_STATE }NET_EM_SET_ALARMREGION_INFO; ///@brief 报警主机设置操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetAlarmRegionInfo(LLONG lLoginID, NET_EM_SET_ALARMREGION_INFO emType, const void *pstuInParam, void *pstuOutParam, int nWaitTime); /****************************** end 报警主机接口 与老报警主机不兼容***************************************/ ///@brief 设备通知类型 typedef enum tagEM_DEVICE_NOTIFY_TYPE { EM_DEVICE_NOTIFY_TYPE_UNKNOWN, // 未知 EM_DEVICE_NOTIFY_TYPE_NEW, // 新设备添加 EM_DEVICE_NOTIFY_TYPE_UPDATE, // 设备信息更新 EM_DEVICE_NOTIFY_TYPE_REMOVE, // 设备删除 EM_DEVICE_NOTIFY_TYPE_CONNECT, // 设备有通道上下线 } EM_DEVICE_NOTIFY_TYPE; ///@brief 向设备注册的回调返回信息 typedef struct tagNET_CB_ATTACH_DEVICE_STATE { EM_DEVICE_NOTIFY_TYPE emNotifyType; // 通知类型 int nRetCount; // 设备个数 char szDeviceIDs[MAX_LINK_DEVICE_NUM][DH_DEV_ID_LEN_EX]; // 设备列表 BYTE byReserved[512]; // 保留字节 }NET_CB_ATTACH_DEVICE_STATE; ///@brief 向设备注册的回调函数原型 typedef void (CALLBACK *fDeviceStateCallBack)(LLONG lAttachHandle, NET_CB_ATTACH_DEVICE_STATE* pstDeviceState, LDWORD dwUser); ///@brief CLIENT_AttachDeviceState 接口输入参数 typedef struct tagNET_IN_ATTACH_DEVICE_STATE { DWORD dwSize; fDeviceStateCallBack cbDeviceState; //回调函数 LDWORD dwUser; //用户数据 }NET_IN_ATTACH_DEVICE_STATE; ///@brief CLIENT_AttachDeviceState 接口输出参数 typedef struct tagNET_OUT_ATTACH_DEVICE_STATE { DWORD dwSize; }NET_OUT_ATTACH_DEVICE_STATE; ///@brief CLIENT_AsyncAddDevice 接口输入参数 typedef struct tagNET_IN_ASYNC_ADD_DEVICE { DWORD dwSize; int nCount; //URL个数 char szUrls[MAX_ADD_DEVICE_NUM][MAX_COMMON_STRING_512]; //URL格式:协议名://用户名:密码@IP:端口 端口不填则用协议默认端口 }NET_IN_ASYNC_ADD_DEVICE; ///@brief CLIENT_AsyncAddDevice 接口输出参数 typedef struct tagNET_OUT_ASYNC_ADD_DEVICE { DWORD dwSize; UINT nTaskID; //任务ID }NET_OUT_ASYNC_ADD_DEVICE; ///@brief 接入设备协议类型 typedef enum tagEM_CUSTOM_DEV_PROTOCOL_TYPE { EM_CUSTOM_DEV_PROTOCOL_TYPE_PRIVATE, // Private EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA2, // Dahua2 EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA3, // Dahua3 EM_CUSTOM_DEV_PROTOCOL_TYPE_GENERAL, // 以URL形式添加的设备 EM_CUSTOM_DEV_PROTOCOL_TYPE_ONVIF, // Onvif接入 EM_CUSTOM_DEV_PROTOCOL_TYPE_ONVIFS, // Onvif加密形式接入 EM_CUSTOM_DEV_PROTOCOL_TYPE_GB28181, // 国标28181接入 EM_CUSTOM_DEV_PROTOCOL_TYPE_EHOME, // HKEhome协议 EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA_REG, // 主动注册 }EM_CUSTOM_DEV_PROTOCOL_TYPE; ///@brief 服务类型 typedef enum tagEM_VIDEOINPUTS_SERVICE_TYPE { EM_VIDEOINPUTS_SERVICE_TYPE_AUTO, // 自动 EM_VIDEOINPUTS_SERVICE_TYPE_TCP, // TCP EM_VIDEOINPUTS_SERVICE_TYPE_UDP, // UDP EM_VIDEOINPUTS_SERVICE_TYPE_MULTICAST, // 组播 }EM_VIDEOINPUTS_SERVICE_TYPE; ///@brief 视频输入信息 typedef struct tagNET_CUSTOM_DEV_VIDEO_INPUTS { char szMainStreamUrl[256]; // 主码流URL地址(注:接入设备协议类型为General时有效,此时主辅码流URL不能同时为空) char szExtraStreamUrl[256]; // 辅码流URL地址(注:接入设备协议类型为General时有效,此时主辅码流URL不能同时为空) EM_VIDEOINPUTS_SERVICE_TYPE emServiceType; // 服务类型 BYTE byReserved[508]; // 预留字节 }NET_CUSTOM_DEV_VIDEO_INPUTS; ///@brief CLIENT_AsyncAddCustomDevice 接口输入参数 typedef struct tagNET_IN_ASYNC_ADD_CUSTOM_DEVICE { DWORD dwSize; int nPort; // 端口号 char szAddress[128]; // 设备地址或者域名 char szUserName[128]; // 用户名 char szPassword[128]; // 密码 EM_CUSTOM_DEV_PROTOCOL_TYPE emProtocolType; // 接入设备协议类型 int nRemoteChannelNum; // 上述列表实际填写的有效通道数 int nRemoteChannels[512]; // 远程通道号数组,如果是IPC就数组大小为1 BOOL bSetLogicChannelStart; // 是否设置逻辑起始通道,FALSE代表随机通道作为起始通道 int nLogicChannelStart; // 逻辑通道起始通道,设置bSetLogicChannelStart为TRUE时生效 NET_CUSTOM_DEV_VIDEO_INPUTS stuVideoInput; // 视频输入信息 }NET_IN_ASYNC_ADD_CUSTOM_DEVICE; ///@brief CLIENT_AsyncAddCustomDevice 接口输出参数 typedef struct tagNET_OUT_ASYNC_ADD_CUSTOM_DEVICE { DWORD dwSize; int nLogicChannelNum; // 分配的逻辑通道个数 int nLogicChannels[128]; // 分配的逻辑通道号列表 char szDeviceID[128]; // 设备ID }NET_OUT_ASYNC_ADD_CUSTOM_DEVICE; ///@brief 设备的添加状态 typedef enum tagEM_DEVICE_ADD_STATE { EM_DEVICE_ADD_STATE_UNKNOWN, // 未知 EM_DEVICE_ADD_STATE_WAIT, // 等待添加 EM_DEVICE_ADD_STATE_CONNECT, // 连接中 EM_DEVICE_ADD_STATE_FAILURE, // 添加失败 EM_DEVICE_ADD_STATE_SUCCESS, // 添加成功 EM_DEVICE_ADD_STATE_STOP, // 停止添加 } EM_DEVICE_ADD_STATE; ///@brief 注册添加设备的回调返回信息 typedef struct tagNET_CB_ATTACH_ADD_DEVICE { UINT nTaskID; // 任务ID EM_DEVICE_ADD_STATE emAddState; // 添加设备结果 UINT nIndex; // 任务中设备序号(从0开始) BYTE byReserved[512]; // 保留字节 }NET_CB_ATTACH_ADD_DEVICE; ///@brief 注册添加设备的回调函数原型 typedef void (CALLBACK *fAddDeviceCallBack)(LLONG lAttachHandle, NET_CB_ATTACH_ADD_DEVICE* pstAddDevice, LDWORD dwUser); ///@brief CLIENT_AttachAddDevice 接口输入参数 typedef struct tagNET_IN_ATTACH_ADD_DEVICE { DWORD dwSize; fAddDeviceCallBack cbAddDevice; //回调函数 LDWORD dwUser; //用户数据 }NET_IN_ATTACH_ADD_DEVICE; ///@brief CLIENT_AttachAddDevice 接口输出参数 typedef struct tagNET_OUT_ATTACH_ADD_DEVICE { DWORD dwSize; }NET_OUT_ATTACH_ADD_DEVICE; ///@brief CLIENT_GetAddDeviceInfo 接口输入参数 typedef struct tagNET_IN_GET_ADD_DEVICE_LIST_INFO { DWORD dwSize; UINT nTaskID; // 任务ID int nCount; // 设备个数 UINT nIndex[MAX_ADD_DEVICE_NUM]; // 设备序号列表(NET_IN_ADD_DEVICE中szUrls的序号,从0开始) }NET_IN_GET_ADD_DEVICE_LIST_INFO; ///@brief 添加中设备的结果信息 typedef struct tagNET_GET_ADD_DEVICE_INFO { char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID char szUrl[DH_COMMON_STRING_512]; // url EM_DEVICE_ADD_STATE emAddState; // 当前添加状态 UINT nErrorCode; // 错误码 BYTE byReserved[512]; // 保留字节 }NET_GET_ADD_DEVICE_INFO; ///@brief CLIENT_GetAddDeviceInfo 接口输出参数 typedef struct tagNET_OUT_GET_ADD_DEVICE_LIST_INFO { DWORD dwSize; int nRetCount; // 设备个数 NET_GET_ADD_DEVICE_INFO stuDeviceInfo[MAX_ADD_DEVICE_NUM]; // 设备信息列表 }NET_OUT_GET_ADD_DEVICE_LIST_INFO; ///@brief CLIENT_GetDeviceInfo 接口输入参数 typedef struct tagNET_IN_GET_DEVICE_LIST_INFO { DWORD dwSize; int nCount; // 设备个数 char szDeviceIDs[MAX_LINK_DEVICE_NUM][DH_DEV_ID_LEN_EX]; // 设备信息列表 }NET_IN_GET_DEVICE_LIST_INFO; ///@brief 已添加设备的结果信息 typedef struct tagNET_GET_DEVICE_INFO { char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID char szUrl[DH_COMMON_STRING_512]; // url char szSerialNo[DH_COMMON_STRING_32]; // 设备序列号 char szDeviceType[DH_COMMON_STRING_64]; // 设备类型 char szDeviceClass[DH_DEV_CLASS_LEN]; // 设备大类 int nMacCount; // 设备mac个数 char szMacs[MAX_MACADDR_NUM][DH_MACADDR_LEN]; // 设备mac地址组 char szDevSoftVersion[DH_COMMON_STRING_128]; // 设备软件版本号 char szDeviceName[DH_DEV_NAME_LEN]; // 设备名称 char szDetail[DH_COMMON_STRING_512]; // 设备详细信息 UINT nVideoInputCh; // 视频输入通道数 UINT nVideoOutputCh; // 视频输出通道数 UINT nAudioInputCh; // 音频输入通道数 UINT nAudioOutputCh; // 音频输出通道数 UINT nAlarmInputCh; // 报警输入通道数 UINT nAlarmOutputCh; // 报警输出通道数 UINT nErrorCode; // 设备离线错误码 UINT nVtoDoors; // 门禁设备可控制的门的总数 BYTE byOnline; // 设备是否在线 0:离线 1:在线 BYTE byReserved[511]; // 保留字节 }NET_GET_DEVICE_INFO; ///@brief CLIENT_GetDeviceInfo 接口输出参数 typedef struct tagNET_OUT_GET_DEVICE_LIST_INFO { DWORD dwSize; int nMaxCount; // 用户申请的设备个数 int nRetCount; // 实际返回的设备个数 NET_GET_DEVICE_INFO* pstuDeviceInfo; // 设备信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_DEVICE_INFO)*nMaxCount }NET_OUT_GET_DEVICE_LIST_INFO; ///@brief CLIENT_SetConnectChannel 接口输入参数 typedef struct tagNET_IN_SET_CONNECT_CHANNEL { DWORD dwSize; char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID int nCount; // 通道个数 UINT nChannels[MAX_DEVICE_CHANNEL_NUM]; // 通道列表 }NET_IN_SET_CONNECT_CHANNEL; ///@brief CLIENT_SetConnectChannel 接口输出参数 typedef struct tagNET_OUT_SET_CONNECT_CHANNEL { DWORD dwSize; }NET_OUT_SET_CONNECT_CHANNEL; ///@brief CLIENT_GetChannelInfo 接口输入参数 typedef struct tagNET_IN_GET_CHANNEL_INFO { DWORD dwSize; char szDeviceID[DH_DEV_ID_LEN_EX]; // 设备ID }NET_IN_GET_CHANNEL_INFO; ///@brief 获取设备通道信息结果信息 typedef struct tagNET_GET_CHANNEL_INFO { UINT nRemoteChannel; // 远程通道号 int nLogicChannel; // 分配的逻辑通道,-1表示未分配 char szName[DH_DEV_NAME_LEN]; // 名称 char szDetail[DH_COMMON_STRING_512]; // 设备详细信息 char szDeviceType[DH_COMMON_STRING_64]; // 设备类型 char szDeviceClass[DH_DEV_CLASS_LEN]; // 设备大类 char szIP[DH_MAX_IPADDR_LEN]; // ip地址 char szMac[DH_MACADDR_LEN]; // 设备mac地址 char szSerialNo[DH_DEV_SERIALNO_LEN]; // 设备序列号 char szDevSoftVersion[DH_COMMON_STRING_128]; // 设备软件版本号 UINT nVideoInputCh; // 视频输入通道数 UINT nVideoOutputCh; // 视频输出通道数 UINT nAudioInputCh; // 音频输入通道数 UINT nAudioOutputCh; // 音频输出通道数 UINT nAlarmInputCh; // 报警输入通道数 UINT nAlarmOutputCh; // 报警输出通道数 BYTE byOnline; // 通道是否在线0:离线 1:在线 BYTE byUsed; // 该通道是否被本地设备使用 0:未使用 1:使用 BYTE byReserved[510]; // 保留字节 }NET_GET_CHANNEL_INFO; ///@brief CLIENT_GetChannelInfo 接口输出参数 typedef struct tagNET_OUT_GET_CHANNEL_INFO { DWORD dwSize; int nMaxCount; // 用户申请的通道个数 int nRetCount; // 实际返回的通道个数 NET_GET_CHANNEL_INFO* pstuChannelInfo; // 通道信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_CHANNEL_INFO)*nMaxCount }NET_OUT_GET_CHANNEL_INFO; ///@brief CLIENT_RemoveDevice 接口输入参数 typedef struct tagNET_IN_REMOVE_DEVICE { DWORD dwSize; int nCount; // 设备个数 char szDeviceIDs[MAX_LINK_DEVICE_NUM][DH_DEV_ID_LEN_EX]; // 设备信息列表 }NET_IN_REMOVE_DEVICE; ///@brief CLIENT_RemoveDevice 接口输出参数 typedef struct tagNET_OUT_REMOVE_DEVICE { DWORD dwSize; }NET_OUT_REMOVE_DEVICE; ///@brief CLIENT_CancelAddDeviceTask 接口输入参数 typedef struct tagNET_IN_CANCEL_ADD_TASK { DWORD dwSize; UINT nTaskID; // 任务ID }NET_IN_CANCEL_ADD_TASK; ///@brief CLIENT_CancelAddDeviceTask 接口输出参数 typedef struct tagNET_OUT_CANCEL_ADD_TASK { DWORD dwSize; }NET_OUT_CANCEL_ADD_TASK; ///@brief CLIENT_ConfirmAddDeviceTask 接口输入参数 typedef struct tagNET_IN_CONFIRM_ADD_TASK { DWORD dwSize; UINT nTaskID; // 任务ID }NET_IN_CONFIRM_ADD_TASK; ///@brief CLIENT_ConfirmAddDeviceTask 接口输出参数 typedef struct tagNET_OUT_CONFIRM_ADD_TASK { DWORD dwSize; }NET_OUT_CONFIRM_ADD_TASK; ///@brief CLIENT_GetNMPDevInfo 接口输入参数 typedef struct tagNET_IN_GET_NMPDEV_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_NMPDEV_INFO; ///@brief 交换机下挂的设备信息 typedef struct tagNET_NEM_CONNECT_DEVICE_INFO { char szAddress[40]; // 设备地址或者域名 char szProtocolType[32]; // 连接设备的协议类型 char szDeviceType[64]; // 设备型号 char szMac[18]; // 设备mac地址,冒号+大写 char szName[64]; // 设备名称 char szVendor[32]; // 设备厂商 BYTE byReserved[126]; // 保留字节 }NET_NEM_CONNECT_DEVICE_INFO; ///@brief 邻居设备数组 typedef struct tagNET_NEIGHBORS_INFO { char szRemotePortId[64]; // 邻居设备连接端口描述 char szRemoteDevice[128]; // 邻居设备的唯一值 NET_NEM_CONNECT_DEVICE_INFO stuDeviceInfo; // 设备信息 BYTE byReserved[128]; // 保留字节 }NET_NEIGHBORS_INFO; ///@brief 端口连接状态 typedef enum tagEM_PORT_STATUS { EM_PORT_STATUS_UNKNOWN = -1, // 未知 EM_PORT_STATUS_DOWN, // 未连接 EM_PORT_STATUS_UP, // 连接 }EM_PORT_STATUS; ///@brief 端口传输介质 typedef enum tagEM_MEDIA_TYPE { EM_MEDIA_TYPE_UNKNOWN, // 未知 EM_MEDIA_TYPE_COPPER, // 电口 EM_MEDIA_TYPE_FIBER, // 光口 }EM_MEDIA_TYPE; ///@brief 端口双工状态 typedef enum tagEM_DUPLEX_MODE { EM_DUPLEX_MODE_UNKNOWN, // 未知 EM_DUPLEX_MODE_HALFDUPLEX, // 半双工 EM_DUPLEX_MODE_FULLDUPLEX, // 全双工 }EM_DUPLEX_MODE; ///@brief PoE状态 typedef enum tagEM_POE_STATUS { EM_POE_STATUS_UNKNOWN = -1, // 未知 EM_POE_STATUS_NONENABLE, // 非使能状态 EM_POE_STATUS_ENABLE, // 使能状态 EM_POE_STATUS_UNSUPPORTED, // 不支持 }EM_POE_STATUS; ///@brief 端口流量状态 typedef enum tagEM_FLOW_STATUS { EM_FLOW_STATUS_UNKNOWN = -1, // 未知 EM_FLOW_STATUS_NORMAL, // 正常 EM_FLOW_STATUS_ABNORMAL, // 异常 }EM_FLOW_STATUS; ///@brief 端口开光状态 typedef enum tagEM_PORT_ENABLE_STATUS { EM_PORT_ENABLE_STATUS_UNKONWON = -1, // 未知 EM_PORT_ENABLE_STATUS_OFF, // 关 EM_PORT_ENABLE_STATUS_ON, // 开 }EM_PORT_ENABLE_STATUS; ///@brief 端口双工模式 typedef enum tagEM_PORT_DUPLEX_MODE { EM_PORT_DUPLEX_MODE_UNKNOWN, // 未知 EM_PORT_DUPLEX_MODE_AUTO, // 自协商 EM_PORT_DUPLEX_MODE_HALF, // 半双工 EM_PORT_DUPLEX_MODE_FULL, // 双工 } EM_PORT_DUPLEX_MODE; ///@brief 端口远距离传输开关状态 typedef enum tagEM_PORT_DISTANCE_STATUS { EM_PORT_DISTANCE_STATUS_UNKNOWN = -1, // 未知 EM_PORT_DISTANCE_STATUS_OFF, // 关 EM_PORT_DISTANCE_STATUS_ON, // 开 EM_PORT_DISTANCE_STATUS_UNSUPPORT, // 不支持 } EM_PORT_DISTANCE_STATUS; ///@brief 端口流控状态 typedef enum tagEM_PORT_FLOW_STATUS { EM_PORT_FLOW_STATUS_UNKNOWN = -1, // 未知 EM_PORT_FLOW_STATUS_OFF, // 关 EM_PORT_FLOW_STATUS_ON, // 开 } EM_PORT_FLOW_STATUS; ///@brief 端口流控使能状态 typedef enum tagEM_PORT_FLOW_ENABLE_STATUS { EM_PORT_FLOW_ENABLE_STATUS_UNKNOWN = -1, // 未知 EM_PORT_FLOW_ENABLE_STATUS_OFF, // 关 EM_PORT_FLOW_ENABLE_STATUS_ON, // 开 } EM_PORT_FLOW_ENABLE_STATUS; ///@brief 看门狗开光状态 typedef enum tagEM_PDALIVE_ENABLE_STATUS { EM_PDALIVE_ENABLE_STATUS_UNKNOWN = -1, // 未知 EM_PDALIVE_ENABLE_STATUS_OFF, // 关 EM_PDALIVE_ENABLE_STATUS_ON, // 开 } EM_PDALIVE_ENABLE_STATUS; ///@brief 带宽双工能力集 typedef struct tagNET_SPEED_DUPLEX_CAP { UINT nSpeedCap; // 端口带宽能力项, 0 表示自协商, 单位:Mbps UINT nPortDuplexModeNum; // 实际有效的端口双工模式个数, 即emPortDuplexMode数组有效元素的个数 EM_PORT_DUPLEX_MODE emPortDuplexMode[4]; // 端口双工模式 } NET_SPEED_DUPLEX_CAP; ///@brief 设备端口信息 typedef struct tagNET_NMPDEVPORT_INFO { DWORD dwLocalPortId; // 设备连接端口号 EM_POE_STATUS emPoEStatus; // PoE状态 char szLocalPortDescr[64]; // 设备连接端口描述 int nChassisId; // 端口所在框ID int nSlotId; // 端口所在槽ID char szAliasName[64]; // 设备端口别名 DWORD dwAggregationId; // 聚合ID(0表示不属于聚合) DWORD dwSpeed; // 端口协商速率,单位:mbps EM_PORT_STATUS emStatus; // 端口连接状态 EM_MEDIA_TYPE emMedia; // 端口传输介质 EM_DUPLEX_MODE emDuplexMode; // 端口双工状态 float fPoEPower; // PoE功耗 TP_U64 dwInUcastPkts; // 单播接收报文数 TP_U64 dwOutUcastPkts; // 单播发送报文数 TP_U64 dwInBroadcastPkts; // 广播接收报文数 TP_U64 dwOutBroadcastPkts; // 广播发送报文数 TP_U64 dwInMulticastPkts; // 组播接收报文数 TP_U64 dwOutMulticastPkts; // 组播发送报文数 TP_U64 dwInDiscardPkts; // 接收丢包数 TP_U64 dwOutDiscardPkts; // 发送丢包数 INT64 nInPausePkts; // 接收Pause帧总数(-1表示非法值) INT64 nOutPausePkts; // 发送Pause帧总数(-1表示非法值) INT64 nInFilterPkts; // 接收包过滤总包数(-1表示非法值) TP_U64 dwInOctets; // 接收包字节总数 TP_U64 dwOutOctets; // 发送包字节总数 TP_U64 dwInRate; // 接收实时速率,单位:Byte TP_U64 dwOutRate; // 发送实时速率,单位:Byte EM_FLOW_STATUS emFlowStatus; // 端口流量状态 int nRetNeighborsNum; // 邻居设备数组个数 NET_NEIGHBORS_INFO stuNeighbors[255]; // 邻居设备数组 EM_PORT_ENABLE_STATUS emPortEnableStatus; // 端口开关状态 UINT nPortSpeedStatus; // 端口带宽配置状态, 0 表示自协商 EM_PORT_DUPLEX_MODE emPortDuplexMode; // 端口双工配置模式 EM_PORT_DISTANCE_STATUS emPortDistanceStatus; // 端口远距离传输开关状态 EM_PORT_FLOW_STATUS emPortFlowStatus; // 端口流控状态 EM_PORT_FLOW_ENABLE_STATUS emPortFlowEnable; // 端口流控使能状态 EM_PDALIVE_ENABLE_STATUS emPDaliveEnable; // 看门狗开关状态 UINT nInPortUsage; // 端口接收利用率,单位% UINT nOutPortUsage; // 端口发送利用率,单位% UINT nInThreshold; // 端口接收利用率阈值,单位% UINT nOutThreshold; // 端口发送利用率阈值,单位% UINT nRetSpeedDuplexCap; // 带宽双工能力个数, 即stuSpeedDuplexCap 数组的有效元素个数 NET_SPEED_DUPLEX_CAP stuSpeedDuplexCap[32]; // 带宽双工能力集 TP_U64 nInTopRate; // 端口七天峰值接收速率,单位:Byte TP_U64 nOutTopRate; // 端口七天峰值发送速率,单位:Byte int nMediaCap; // 端口传输介质能力集,按位运算 Bit0:电口 Bit1:光口 字段不存在时,仅支持Media字段描述的类型 例如:0x03 = 0x01 | 0x02 表示光电复合口,此时需要对于一个PortID,绘制光口和电口 BYTE byReserved[188]; // 保留字节 }NET_NMPDEVPORT_INFO; ///@brief 设备信息 typedef struct tagNET_NMPDEV_INFO { char szAddress[40]; // 设备地址或者域名 char szDeviceClass[64]; // 设备类型 char szDeviceType[64]; // 设备型号 char szMac[18]; // 设备mac地址,冒号+大写 BYTE byReserved2[6]; // 字节对齐 char szProtocolType[32]; // 连接设备的协议类型 char szVersion[32]; // 设备版本号 char szSerialNo[64]; // 设备序列号 char szName[64]; // 设备名称 DWORD dwRetPortNum; // 设备返回端口个数 int nPortListMaxNum; // 用户分配端口信息个数 NET_NMPDEVPORT_INFO *pstuPorList; // 端口信息组 BOOL bPoESupport; // 是否支持Poe float fPoETotalPower; // PoE总功耗 float fPoERemainPower; // PoE剩余功耗 DWORD dwUptime; // 本次上电运行时间(单位:分钟) int nCPUUsage; // CPU使用率(百分比),-1为非法值 EM_DEV_STATUS emStatus; // 设备状态 char szSubnetMask[40]; // 子网掩码 char szParent[128]; // 父亲设备的唯一值 char szVendor[32]; // 设备厂商 DWORD dwPortNumber; // 设备总端口数 float fPoETopPower; // Poe七天功率峰值,单位W int nMemUsage; // 内存利用率,单位%, -1: 非法值 BYTE byReserved[1012]; // 保留字节 }NET_NMPDEV_INFO; ///@brief CLIENT_GetNMPDevInfo 接口输出参数 typedef struct tagNET_OUT_GET_NMPDEV_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 NET_NMPDEV_INFO stuNMPDevInfo; // 设备信息 }NET_OUT_GET_NMPDEV_INFO; ///@brief CLIENT_GetNMPDevCaps 接口输入参数 typedef struct tagNET_IN_GET_NMPDEV_CAPS { DWORD dwSize; // 结构体大小 } NET_IN_GET_NMPDEV_CAPS; ///@brief CLIENT_GetNMPDevCaps 接口输出参数 typedef struct tagNET_OUT_GET_NMPDEV_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportPage; // 是否支持分页查找 } NET_OUT_GET_NMPDEV_CAPS; ///@brief CLIENT_GetNMPPortInfoByPage 接口输入参数 typedef struct tagNET_IN_GET_NMPPORT_BY_PAGE { DWORD dwSize; // 结构体大小 UINT nOffset; // 端口信息列表的起始端口偏移量 UINT nPortNum; // 本次需要获取的端口数量, 若为0, 则返回端口总数量, 但没有端口的具体信息 } NET_IN_GET_NMPPORT_BY_PAGE; ///@brief CLIENT_GetNMPPortInfoByPage 接口输出参数 typedef struct tagNET_OUT_GET_NMPPORT_BY_PAGE { DWORD dwSize; // 结构体大小 UINT nTotalSize; // 设备端口总数 UINT nMaxPortCount; // pstPortList数组的最大元素个数值, 由用户指定 UINT nRetPortCount; // 实际获取到的端口数量, 即pstPortList 数组中有效值的个数 NET_NMPDEVPORT_INFO *pstPortList; // 设备端口信息列表, 内存由用户申请和释放, 申请大小为nMaxPortCount*sizeof(NET_NMPDEVPORT_INFO) } NET_OUT_GET_NMPPORT_BY_PAGE; ///@brief 本地端口信息 typedef struct tagNET_LOCAL_PORT_INFO { UINT nLocalPortId; // 设备端口号 char szLocalPortDescr[64]; // 设备端口描述 UINT nRetNeighborsNum; // 实际的邻居设备个数, 即stuNeighbors 数组的有效元素个数 NET_NEIGHBORS_INFO stuNeighbors[256]; // 邻居设备数组 } NET_LOCAL_PORT_INFO; ///@brief CLIENT_GetNMPNeighborInfoByPage 接口输入参数 typedef struct tagNET_IN_GET_NMPNEIGHBOR_BY_PAGE { DWORD dwSize; // 结构体大小 UINT nOffset; // 设备邻居列表列表的起始偏移量 UINT nNeighborNum; // 本次需要获取的邻居设备数量, 若为0, 则返回总数量, 但没有具体的设备信息 } NET_IN_GET_NMPNEIGHBOR_BY_PAGE; ///@brief CLIENT_GetNMPNeighborInfoByPage 接口输出参数 typedef struct tagNET_OUT_GET_NMPNEIGHBOR_BY_PAGE { DWORD dwSize; // 结构体大小 UINT nTotalSize; // 设备端口邻居总数 UINT nMatchSize; // 本次查询匹配到的邻居总数 UINT nMaxLocalPortNum; // 邻居设备的本地端口个数最大值 NET_LOCAL_PORT_INFO *pstLocalPortList; // 存在邻居设备的本地端口列表 UINT nRetLocalPortNum; // 存在邻居设备的本地端口个数, 即pstLocalPortList 数组的有效个数 } NET_OUT_GET_NMPNEIGHBOR_BY_PAGE; ///@brief NMP 设备端口状态信息 typedef struct tagNET_NMP_PORT_STATUS { UINT nLocalPortId; // 端口号 EM_PORT_STATUS emPortStatus; // 端口连接状态 BYTE byReserved[1024]; // 保留字节 } NET_NMP_PORT_STATUS; ///@brief NMP 设备端口状态回调信息 typedef struct tagNET_CB_NMP_PORT_STATUS_INFO { char szAddress[64]; // ip 地址 char szMAC[24]; // MAC地址 NET_NMP_PORT_STATUS *pstPortStatusList; // 端口状态信息列表, 内存由sdk 内部申请和释放 UINT nRetPortNum; // 实际返回的端口数量, 即pstPortStatusList 数组中有效的元素个数 BYTE byReserved[1020]; // 保留字节 } NET_CB_NMP_PORT_STATUS_INFO; ///@brief NMP 设备端口状态订阅函数原型, lAttachHandle 是 CLIENT_AttachNMPPortStatus接口的返回值 typedef void (CALLBACK *fNMPPortStatusCallBack)(LLONG lAttachHandle, NET_CB_NMP_PORT_STATUS_INFO *pstNMPPortStatus, LDWORD dwUser); ///@brief CLIENT_AttachNMPPortStatus 接口输入参数 typedef struct tagNET_IN_ATTACH_NMP_PORT_STATUS { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 对齐 fNMPPortStatusCallBack cbNMPPortStatusCallBac; // 端口状态订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_NMP_PORT_STATUS; ///@brief CLIENT_ClearPortStatisticsInfo 接口输入参数 typedef struct tagNET_IN_CLEAR_PORT_STATISTICS_INFO { DWORD dwSize; // 结构体大小 UINT nPortID; // 真实物理端口ID, 0表示清楚所有端口统计信息 } NET_IN_CLEAR_PORT_STATISTICS_INFO; ///@brief CLIENT_ClearPortStatisticsInfo 接口输出参数 typedef struct tagNET_OUT_CLEAR_PORT_STATISTICS_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_CLEAR_PORT_STATISTICS_INFO; ///@brief 端口双工状态 typedef enum tagEM_DUPLEX_STATE { EM_DUPLEX_STATE_UNKNOWN = -1, // 未知 EM_DUPLEX_STATE_DOWN, // 关闭 EM_DUPLEX_STATE_AUTO, // 自动 EM_DUPLEX_STATE_10M_HALF, // 10M 半双工 EM_DUPLEX_STATE_10M_FULL, // 10M全双工 EM_DUPLEX_STATE_100M_HALF, // 100M 半双工 EM_DUPLEX_STATE_100M_FULL, // 100M全双工 EM_DUPLEX_STATE_1000M_FULL, // 1000M全双工 EM_DUPLEX_STATE_2_5G_FULL, // 2.5G全双工 EM_DUPLEX_STATE_5G_FULL, // 5G全双工 EM_DUPLEX_STATE_10G_FULL, // 10G全双工 EM_DUPLEX_STATE_25G_FULL, // 25G全双工 EM_DUPLEX_STATE_40G_FULL, // 40G全双工 EM_DUPLEX_STATE_100G_FULL, // 100G全双工 } EM_DUPLEX_STATE; ///@brief POE开光状态 typedef enum tagEM_POE_ENABLE_STATUS { EM_POE_ENABLE_STATUS_UNKNOWN = -1, // 未知 EM_POE_ENABLE_STATUS_OFF, // 关 EM_POE_ENABLE_STATUS_ON, // 开 }EM_POE_ENABLE_STATUS; ///@brief 端口配置信息 typedef struct tagNET_PORT_CFG_INFO { char szPortDescribe[64]; // 端口描述,支持英文、数字、特殊字符(只支持"."、"-"和"_") UINT nPortID; // 真实物理端口ID, 从1 开始 EM_DUPLEX_STATE emDuplexState; // 端口双工状态 EM_PORT_FLOW_ENABLE_STATUS emFlowEnableCfg; // 流控使能配置 EM_POE_ENABLE_STATUS emPoeEnableCfg; // PoE开关配置 EM_PORT_ENABLE_STATUS emPortEnableCfg; // 端口开关配置 UINT nSpeedCfg; // 端口带宽配置, 单位:Mbps, 0表示自协商 EM_PORT_DUPLEX_MODE emDuplexModeCfg; // 端口双工模式配置 EM_PORT_DISTANCE_STATUS emLongDistanceCfg; // 端口远距离传输开关配置 EM_PDALIVE_ENABLE_STATUS emPDAliveCfg; // PDalivePOE看门狗开关配置 BYTE byReserved[2044]; // 保留字节 } NET_PORT_CFG_INFO; ///@brief CLIENT_PortManagerSetPortInfo 接口输入参数 typedef struct tagNET_IN_PORTMANAGER_SET_PORT_INFO { DWORD dwSize; // 结构体大小 UINT nPortCfgNum; // 实际需要配置的端口数量, 由用户指定 NET_PORT_CFG_INFO *pstPortCfgInfo; // 端口配置信息, 内存信息由用户申请和释放, 申请大小:nPortCfgNum * sizeof(NET_PORT_CFG_INFO) } NET_IN_PORTMANAGER_SET_PORT_INFO; ///@brief CLIENT_PortManagerSetPortInfo 接口输出参数 typedef struct tagNET_OUT_PORTMANAGER_SET_PORT_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_PORTMANAGER_SET_PORT_INFO; ///@brief 端口拥塞状态 typedef enum tagEM_PORT_CONGESTION_STATUS { EM_PORT_CONGESTION_UNKNOWN, // 未知 EM_PORT_CONGESTION_NO, // 无拥塞/链路通畅 EM_PORT_CONGESTION_IN, // 接收方向信道拥塞 EM_PORT_CONGESTION_OUT, // 发送方向信道拥塞 EM_PORT_CONGESTION_ALL, // 全信道拥塞/单工/不区分方向 } EM_PORT_CONGESTION_STATUS; ///@brief 端口拥塞信息 typedef struct tagNET_PORT_CONGESTION_INFO { UINT nLocalPortId; // 设备端口号 EM_PORT_CONGESTION_STATUS emCongestionStatus; // 端口拥塞状态 TP_U64 nInRate; // 接收实时速率,单位:Byte TP_U64 nOutRate; // 发送实时速率,单位:Byte BYTE byReserved[1024]; // 保留字节 } NET_PORT_CONGESTION_INFO; ///@brief NMP 设备端口拥塞状态回调信息 typedef struct tagNET_CB_NMP_PORT_CONGESTION_INFO { char szMAC[24]; // MAC地址 NET_PORT_CONGESTION_INFO stuPortCongestionInfo[256]; // 端口拥塞状态信息列表 UINT nRetPortNum; // 实际返回的端口数量, 即stuPortCongestionInfo 数组中有效的元素个数 BYTE byReserved[1020]; // 保留字节 } NET_CB_NMP_PORT_CONGESTION_INFO; ///@brief NMP 设备端口拥塞状态订阅回调函数原型, lAttachHandle 是 CLIENT_AttachNMPPortCongestion接口的返回值 typedef void (CALLBACK *fNMPPortCongestionCallBack)(LLONG lAttachHandle, NET_CB_NMP_PORT_CONGESTION_INFO *pstNMPCongestion, LDWORD dwUser); ///@brief CLIENT_AttachNMPPortCongestion 接口输入参数 typedef struct tagNET_IN_ATTACH_NMP_PORT_CONGESTION { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 对齐 fNMPPortCongestionCallBack cbNMPPortCongestion; // 端口拥塞状态订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_NMP_PORT_CONGESTION; ///@brief IP 冲突告警信息 typedef struct tagNET_IP_CONFICT_ALARM_INFO { char szAddress[64]; // 冲突的ip UINT nMacNum; // 产生冲突的设备mac地址个数 char szMac[128][24]; // 产生冲突的设备mac地址 UINT nVlanId; // 检测到ip冲突的交换机vlanid char szVlanIP[64]; // 检测到ip冲突的交换机vlanid对应的ip BYTE byReserved[1024]; // 保留字节 } NET_IP_CONFICT_ALARM_INFO; ///@brief NMP 环路告警信息 typedef struct tagNET_NMP_LOOP_DETECT_INFO { UINT nLoopNum; // 环路端口数量 UINT nLoopGroup[256]; // 环路组, 即本设备中 端口所在环路中的所有端口 BYTE byReserved[1020]; // 保留字节 } NET_NMP_LOOP_DETECT_INFO; ///@brief NMP设备 网络告警信息 typedef struct tagNET_NMP_ALARM_INFO { NET_NMP_LOOP_DETECT_INFO stuLoopDetect[128]; // NMP 环路告警信息 UINT nLoopDetectNum; // NMP 环路告警信息个数 UINT nIPConfictAlarmNum; // IP 冲突告警信息个数 NET_IP_CONFICT_ALARM_INFO stuIPConfictAlarm[128]; // IP 冲突告警信息 BYTE byReserved[1024]; // 保留字节 } NET_NMP_ALARM_INFO; ///@brief NMP设备 网络告警事件上报信息 typedef struct tagNET_CB_NMP_ALARM_INFO { char szMAC[24]; // MAC地址 NET_NMP_ALARM_INFO stuNmpAlarmInfo; // NMP设备 网络告警信息 BYTE byReserved[1024]; // 保留字节 } NET_CB_NMP_ALARM_INFO; ///@brief NMP设备 网络告警事件上报回调函数原型, lAttachHandle 是 CLIENT_AttachNMPAlarmInfo接口的返回值 typedef void (CALLBACK *fNMPAlarmInfoCallBack)(LLONG lAttachHandle, NET_CB_NMP_ALARM_INFO *pstNMPAlarmInfo, LDWORD dwUser); ///@brief CLIENT_AttachNMPAlarmInfo 接口输入参数 typedef struct tagNET_IN_ATTACH_NMP_ALARM_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 对齐 fNMPAlarmInfoCallBack cbNMPAlarmInfo; // NMP设备 网络告警事件上报回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_NMP_ALARM_INFO; ///@brief CLIENT_GetDeviceInfoEx 接口输入参数 typedef struct tagNET_IN_GET_DEVICE_INFO_EX { DWORD dwSize; // 结构体大小 int nCount; // 设备个数 char szDeviceIDs[32][128]; // 设备信息列表 }NET_IN_GET_DEVICE_INFO_EX; ///@brief 设备属性 typedef enum tagEM_DEVICE_ATTRIBUTE { EM_DEVICE_ATTRIBUTE_UNKNOWN, // 未知 EM_DEVICE_ATTRIBUTE_MASTER, // 主属性 EM_DEVICE_ATTRIBUTE_ASSISTANT, // 辅属性 }EM_DEVICE_ATTRIBUTE; ///@brief 设备接入网络服务类型 typedef enum tagEM_NET_SERVER_TYPE { EM_NET_SERVER_TYPE_UNKNOWN = -1, // 未知 EM_NET_SERVER_TYPE_AUTO, // 自动 EM_NET_SERVER_TYPE_TCP, // TCP EM_NET_SERVER_TYPE_UDP, // UDP EM_NET_SERVER_TYPE_MULTICAST, // 组播 }EM_NET_SERVER_TYPE; ///@brief 跟设备对接时的拉流协议类型 typedef enum tagEM_CHANNEL_PROTOCOL_TYPE { EM_CHANNEL_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_CHANNEL_PROTOCOL_TYPE_ONVIF, // Onvif接入 EM_CHANNEL_PROTOCOL_TYPE_GB28181, // 国标协议接入 EM_CHANNEL_PROTOCOL_TYPE_RTSP, // Rtsp协议接入 EM_CHANNEL_PROTOCOL_TYPE_GB35114, // GB35114协议接入 }EM_CHANNEL_PROTOCOL_TYPE; ///@brief 通道信息 typedef struct tagNET_DEVICE_CHANNEL_INFO { UINT nRemoteChannel; // 远程通道号 int nLogicChannel; // 分配的逻辑通道, -1表示未分配 char szChannelID[32]; // 通道编码 char szGbCode[32]; // 通道国标编码 char szName[128]; // 显示在设备树的名称 char szDetail[512]; // 设备详细信息 char szDeviceType[64]; // 设备型号 char szDeviceClass[16]; // 设备大类 UINT nOnline; // 通道是否在线, 0:离线 1:在线 UINT nUsed; // 该通道是否被本地设备使用 0:未使用 1:使用 char szIP[40]; // ip地址 char szMac[18]; // mac地址 char szReserved1[6]; // 字节对齐 char szSN[32]; // 序列号 char szSoftwareVersion[128]; // 软件版本 UINT nVideoInChannels; // 视频输入通道数 UINT nVideoOutChannels; // 视频输出通道数 UINT nAudioInChannels; // 音频输入通道数 UINT nAudioOutChannels; // 音频输出通道数 UINT nAlarmInChannels; // 报警输入通道数 UINT nAlarmOutChannels; // 报警输出通道数 UINT nMaxExtraStream; // 支持最大辅码流路数(0~3路) EM_NET_SERVER_TYPE emNetServerType; // 设备接入网络服务类型 EM_CHANNEL_PROTOCOL_TYPE emProtocolType; // 跟设备对接时的拉流协议类型 char szReserved2[4]; // 字节对齐 double dbTemperature; // 温度值,摄氏度 NET_TIME stuStateChangeTime; // 通道在离线状态改变时的时间 char szVideoImageChannelID[32]; // 视图库通道编码 char szPlatformDoID[32]; // 平台对接编号 char szReserved[1024]; // 保留字节 }NET_DEVICE_CHANNEL_INFO; ///@brief 已添加设备的结果信息 typedef struct tagNET_GET_DEVICE_INFO_EX { char szDeviceID[128]; // 设备ID char szUrl[512]; // url char szSerialNo[64]; // 设备序列号 char szGBCode[32]; // 设备国标编码 char szOrgCode[64]; // 设备所属组织编码 char szDeviceType[64]; // 设备类型 char szDeviceClass[16]; // 设备大类 int nMacCount; // 设备mac个数 char szMacs[8][18]; // 设备mac地址组 char szDevSoftVersion[128]; // 设备软件版本号 char szDeviceName[128]; // 设备名称 char szDetail[512]; // 设备详细信息 UINT nVideoInChannel; // 视频输入通道数 UINT nVideoOutChannel; // 视频输出通道数 UINT nAudioInChannel; // 音频输入通道数 UINT nAudioOutChannel; // 音频输出通道数 UINT nAlarmIn; // 报警输入通道数 UINT nAlarmOut; // 报警输出通道数 UINT nOnline; // 设备是否在线 0:离线 1:在线 UINT nErrorCode; // 设备离线错误码 UINT nVtoDoors; // 门禁设备可控制的门的总数 UINT nIsPoeDevice; // 是否是POE设备, 0不是, 1是POE设备 UINT nPoePort; // Poe端口号, 取值范围>= 0; isPoeDevice字段为真时有效 BOOL bSupportedFR; // 是否支持目标比对 BOOL bControlSpeaker; // 是否支持语音联动 EM_DEVICE_ATTRIBUTE emDeviceAttribute; // 设备属性 BOOL bSupportedStatistic; // 是否具备统计功能 BOOL bIsMainProtocolExist; // 主协议是否存在 BOOL bIsVideoImageEnable; // 视图库是否使能 UINT nVideoImageOnline; // 视图库是否在线 0:离线 1:在线 UINT nVideoImageErrorCode; // 视图库离线错误码 char szVideoImageRegID[32]; // 视图库注册编号 int nMaxChannelCount; // 用户申请的通道个数 int nRetChannelCount; // 实际返回的通道个数 NET_DEVICE_CHANNEL_INFO *pstuChannelsInfo; // 通道信息, 由用户申请和释放内存, 申请大小为sizeof(NET_DEVICE_CHANNEL_INFO)*nMaxChannelCount BOOL bControlLighter; // 是否支持白光灯控制 char szReserved[1024]; // 保留字节 }NET_GET_DEVICE_INFO_EX; ///@brief CLIENT_GetDeviceInfoEx 接口输出参数 typedef struct tagNET_OUT_GET_DEVICE_INFO_EX { DWORD dwSize; // 结构体大小 int nMaxCount; // 用户申请的设备个数 int nRetCount; // 实际返回的设备个数 NET_GET_DEVICE_INFO_EX* pstuDeviceInfo; // 设备信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_DEVICE_INFO)*nMaxCount }NET_OUT_GET_DEVICE_INFO_EX; ///@brief CLIENT_SetDeviceChannelInfo 接口输入参数 typedef struct tagNET_IN_SET_DEVICE_CHANNEL_INFO { DWORD dwSize; // 结构体大小 char szDeviceID[128]; // 设备ID UINT nRemoteChannel; // 远程通道号 char szName[128]; // 显示在设备树的名称 char szDetail[512]; // 设备详细信息 char szMainStreamUrl[256]; // 主码流url char szChannelID[32]; // 通道编码 char szVideoImageChannelID[32]; // 视图库通道编码 } NET_IN_SET_DEVICE_CHANNEL_INFO; ///@brief CLIENT_SetDeviceChannelInfo 接口输出参数 typedef struct tagNET_OUT_SET_DEVICE_CHANNEL_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_DEVICE_CHANNEL_INFO; ///@brief 注册设备状态回调 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDeviceState(LLONG lLoginID, const NET_IN_ATTACH_DEVICE_STATE *pInParam, NET_OUT_ATTACH_DEVICE_STATE *pOutParam, int nWaitTime); ///@brief 注销设备状态回调 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDeviceState(LLONG lAttachHandle); ///@brief 异步添加设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AsyncAddDevice(LLONG lLoginID, const NET_IN_ASYNC_ADD_DEVICE *pInParam, NET_OUT_ASYNC_ADD_DEVICE *pOutParam, int nWaitTime); ///@brief 异步添加自定义设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AsyncAddCustomDevice(LLONG lLoginID, const NET_IN_ASYNC_ADD_CUSTOM_DEVICE *pInParam, NET_OUT_ASYNC_ADD_CUSTOM_DEVICE *pOutParam, int nWaitTime); ///@brief 注册添加设备回调 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachAddDevice(LLONG lLoginID, const NET_IN_ATTACH_ADD_DEVICE *pInParam, NET_OUT_ATTACH_ADD_DEVICE *pOutParam, int nWaitTime); ///@brief 注销添加设备回调 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachAddDevice(LLONG lAttachHandle); ///@brief 获取添加中的设备状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAddDeviceInfo(LLONG lLoginID, const NET_IN_GET_ADD_DEVICE_LIST_INFO *pInParam, NET_OUT_GET_ADD_DEVICE_LIST_INFO *pOutParam, int nWaitTime); ///@brief 获取已添加的设备状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDeviceInfo(LLONG lLoginID, const NET_IN_GET_DEVICE_LIST_INFO *pInParam, NET_OUT_GET_DEVICE_LIST_INFO *pOutParam, int nWaitTime); ///@brief 设置连接通道 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetConnectChannel(LLONG lLoginID, const NET_IN_SET_CONNECT_CHANNEL *pInParam, NET_OUT_SET_CONNECT_CHANNEL *pOutParam, int nWaitTime); ///@brief 获取设备通道信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChannelInfo(LLONG lLoginID, const NET_IN_GET_CHANNEL_INFO *pInParam, NET_OUT_GET_CHANNEL_INFO *pOutParam, int nWaitTime); ///@brief 删除设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveDevice(LLONG lLoginID, const NET_IN_REMOVE_DEVICE *pInParam, NET_OUT_REMOVE_DEVICE *pOutParam, int nWaitTime); ///@brief 中止添加设备任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CancelAddDeviceTask(LLONG lLoginID, const NET_IN_CANCEL_ADD_TASK *pInParam, NET_OUT_CANCEL_ADD_TASK *pOutParam, int nWaitTime); ///@brief 确认添加设备任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ConfirmAddDeviceTask(LLONG lLoginID, const NET_IN_CONFIRM_ADD_TASK *pInParam, NET_OUT_CONFIRM_ADD_TASK *pOutParam, int nWaitTime); ///@brief 获取NMP设备信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNMPDevInfo(LLONG lLoginID, const NET_IN_GET_NMPDEV_INFO *pInParam, NET_OUT_GET_NMPDEV_INFO *pOutParam, int nWaitTime); ///@brief 获取NMP 设备能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNMPDevCaps(LLONG lLoginID, const NET_IN_GET_NMPDEV_CAPS *pInParam, NET_OUT_GET_NMPDEV_CAPS *pOutParam, int nWaitTime); ///@brief 分页获取NMP 设备端口信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNMPPortInfoByPage(LLONG lLoginID, const NET_IN_GET_NMPPORT_BY_PAGE *pInParam, NET_OUT_GET_NMPPORT_BY_PAGE *pOutParam, int nWaitTime); ///@brief 分页获取NMP 设备邻居信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNMPNeighborInfoByPage(LLONG lLoginID, const NET_IN_GET_NMPNEIGHBOR_BY_PAGE *pInParam, NET_OUT_GET_NMPNEIGHBOR_BY_PAGE *pOutParam, int nWaitTime); ///@brief 订阅NMP 设备端口状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNMPPortStatus(LLONG lLoginID, const NET_IN_ATTACH_NMP_PORT_STATUS *pInParam, int nWaitTime); ///@brief 取消订阅NMP 设备端口状态, lAttachHandle 为 CLIENT_AttachNMPPortStatus 接口返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNMPPortStatus(LLONG lAttachHandle); ///@brief 清除指定端口数据统计信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClearPortStatisticsInfo(LLONG lLoginID, const NET_IN_CLEAR_PORT_STATISTICS_INFO *pInParam, NET_OUT_CLEAR_PORT_STATISTICS_INFO *pOutParam, int nWaitTime); ///@brief 设置端口信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PortManagerSetPortInfo(LLONG lLoginID, const NET_IN_PORTMANAGER_SET_PORT_INFO *pInParam, NET_OUT_PORTMANAGER_SET_PORT_INFO *pOutParam, int nWaitTime); ///@brief 订阅端口拥塞状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNMPPortCongestion(LLONG lLoginID, const NET_IN_ATTACH_NMP_PORT_CONGESTION *pInParam, int nWaitTime); ///@brief 取消订阅端口拥塞状态, lAttachHandle 为 CLIENT_AttachNMPPortCongestion 接口返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNMPPortCongestion(LLONG lAttachHandle); ///@brief 订阅NMP设备 网络告警事件上报 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNMPAlarmInfo(LLONG lLoginID, const NET_IN_ATTACH_NMP_ALARM_INFO *pInParam, int nWaitTime); ///@brief 取消订阅NMP设备 网络告警事件上报, lAttachHandle 为 CLIENT_AttachNMPAlarmInfo 接口返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNMPAlarmInfo(LLONG lAttachHandle); ///@brief 获取已添加的设备状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDeviceInfoEx(LLONG lLoginID, const NET_IN_GET_DEVICE_INFO_EX *pstuInParam, NET_OUT_GET_DEVICE_INFO_EX *pstuOutParam, int nWaitTime); ///@brief 设置设备通道信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDeviceChannelInfo(LLONG lLoginID, const NET_IN_SET_DEVICE_CHANNEL_INFO *pstuInParam, NET_OUT_SET_DEVICE_CHANNEL_INFO *pstuOutParam, int nWaitTime); #define MAX_BOARD_NUM 2 // 工作板最大个数 ///@brief 工作板状态 typedef enum tagNET_EM_BOARD_STATE { NET_EM_BOARD_STATE_UNKNOWN = 0, // 未知 NET_EM_BOARD_STATE_MASTER, // 主板 NET_EM_BOARD_STATE_SLAVE // 备板 }NET_EM_BOARD_STATE; ///@brief 工作板信息 typedef struct tagNET_BOARD_STATE_INFO { char szTarget[DH_COMMON_STRING_64]; // 工作板名称 NET_EM_BOARD_STATE emState; // 工作板当前状态 int nBoardSlot; // 工作板卡槽序号 BYTE byReserved[1024]; // 保留字节 }NET_BOARD_STATE_INFO; ///@brief CLIENT_GetDCSDoubleDevBoardState输入参数 typedef struct tagNET_IN_GET_BOARD_STATE { DWORD dwSize; // 结构体大小 }NET_IN_GET_BOARD_STATE; ///@brief CLIENT_GetDCSDoubleDevBoardState输出参数 typedef struct tagNET_OUT_GET_BOARD_STATE { DWORD dwSize; // 结构体大小 int nBoardRet; // 返回的工作板个数 NET_BOARD_STATE_INFO stuBoardStateList[MAX_BOARD_NUM]; // 工作板列表 }NET_OUT_GET_BOARD_STATE; ///@brief 获取双控工作板的状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDCSDoubleDevBoardState(LLONG lLoginID, const NET_IN_GET_BOARD_STATE* pInParam, NET_OUT_GET_BOARD_STATE* pOutParam, int waittime); ///@brief CLIENT_GetDiagnosisEncryptSystemInfo输入参数 typedef struct tagNET_IN_GET_ENCRYPT_SYSTEM_INFO { DWORD dwSize; }NET_IN_GET_ENCRYPT_SYSTEM_INFO; ///@brief CLIENT_GetDiagnosisEncryptSystemInfo输出参数 typedef struct tagNET_OUT_GET_ENCRYPT_SYSTEM_INFO { DWORD dwSize; char szEncryptContent[MAX_ENCRYPT_SYSTEM_INFO_CONTENT_LEN]; // 系统信息内容(密文) }NET_OUT_GET_ENCRYPT_SYSTEM_INFO; ///@brief 用于故障分析,获取加密系统信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDiagnosisEncryptSystemInfo(LLONG lLoginID, const NET_IN_GET_ENCRYPT_SYSTEM_INFO* pInParam, NET_OUT_GET_ENCRYPT_SYSTEM_INFO* pOutParam, int nWaitTime); // 设备日志最大个数 #define MAX_LOG_LIST_COUNT 100 ///@brief 报警事件类型 typedef enum tagEM_QUERY_EVENT_LOG_TYPE { EM_QUERY_EVENT_LOG_TYPE_UNKNOWN, // 未知 EM_QUERY_EVENT_LOG_TYPE_MOTION_DETECT, // 动检报警事件 EM_QUERY_EVENT_LOG_TYPE_INPUT_ALARM, // 报警输入事件 EM_QUERY_EVENT_LOG_TYPE_VIDEO_LOSS, // 视频丢失事件 EM_QUERY_EVENT_LOG_TYPE_NO_DISK, // 无硬盘事件 EM_QUERY_EVENT_LOG_TYPE_DISK_ERROR, // 硬盘出错事件 EM_QUERY_EVENT_LOG_TYPE_DISK_FULL, // 硬盘满事件 EM_QUERY_EVENT_LOG_TYPE_NET_ABORT, // 网络中断事件 EM_QUERY_EVENT_LOG_TYPE_IP_CONFLICT, // IP冲突事件 EM_QUERY_EVENT_LOG_TYPE_TEMPERATURE_ALARM, // 温度报警事件 EM_QUERY_EVENT_LOG_TYPE_POWER_FAULT, // 电源故障事件 } EM_QUERY_EVENT_LOG_TYPE; ///@brief 设备报警信息 typedef struct tagNET_LOG_LIST_INFO { EM_QUERY_EVENT_LOG_TYPE emEventType; // 报警事件 int nChannel; // 事件发生的通道号, -1表示该报警与通道无关 NET_TIME stStartTime; // 开始时间 BYTE byReserved[1024]; // 保留字节 } NET_LOG_LIST_INFO; ///@brief CLIENT_QueryEventLog 输入参数 typedef struct tagNET_IN_QUERY_EVENT_LOG { DWORD dwSize; // 结构体大小 char szUUID[MAX_COMMON_STRING_128]; // 手机ID } NET_IN_QUERY_EVENT_LOG; ///@brief CLIENT_QueryEventLog 输出参数 typedef struct tagNET_OUT_QUERY_EVENT_LOG { DWORD dwSize; // 结构体大小 int nLogListCount; // 日志个数 NET_LOG_LIST_INFO stLogList[MAX_LOG_LIST_COUNT]; // 日志列表 char szDeviceName[MAX_COMMON_STRING_64]; // 设备名称 int nQueryID; // 查询ID } NET_OUT_QUERY_EVENT_LOG; ///@brief 获取设备报警日志(pInParam和pOutParam资源由用户申请和释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryEventLog(LLONG lLoginID, const NET_IN_QUERY_EVENT_LOG* pInParam, NET_OUT_QUERY_EVENT_LOG* pOutParam, int nWaitTime); ///@brief CLIENT_ConfirmEventLog 输入参数 typedef struct tagNET_IN_CONFIRM_EVENT_LOG { DWORD dwSize; // 结构体大小 char szUUID[MAX_COMMON_STRING_64]; // 手机ID int nQueryID; // 查询ID } NET_IN_CONFIRM_EVENT_LOG; ///@brief CLIENT_ConfirmEventLog 输出参数 typedef struct tagNET_OUT_CONFIRM_EVENT_LOG { DWORD dwSize; // 结构体大小 } NET_OUT_CONFIRM_EVENT_LOG; ///@brief 确认已经获取到设备报警日志(pInParam和pOutParam资源由用户申请和释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ConfirmEventLog(LLONG lLoginID, const NET_IN_CONFIRM_EVENT_LOG* pInParam, NET_OUT_CONFIRM_EVENT_LOG* pOutParam, int nWaitTime); #define DH_MAX_DISKLISK_NUM 1024 // 磁盘号最大值 ///@brief CLIENT_GetStorageBoundTimeEx 入参 typedef struct tagNET_IN_GET_BOUND_TIMEEX { DWORD dwSize; // 结构体大小 int nDiskCount; // 磁盘数量 int nDiskList[DH_MAX_DISKLISK_NUM]; // 磁盘号列表 }NET_IN_GET_BOUND_TIMEEX; ///@brief 硬盘录像时间信息 typedef struct tagNET_BOUND_TIME_INFO { UINT nDiskNO; // 磁盘号 NET_TIME_EX stuStartTime; // 开始时间 NET_TIME_EX stuEndTime; // 结束时间 BYTE byReserved[1024]; // 保留字节 }NET_BOUND_TIME_INFO; ///@brief CLIENT_GetStorageBoundTimeEx 出参 typedef struct tagNET_OUT_GET_BOUND_TIMEEX { DWORD dwSize; // 结构体大小 int nRetDiskCount; // 返回的磁盘数量 NET_BOUND_TIME_INFO stuBoundTime[DH_MAX_DISKLISK_NUM]; // 硬盘录像时间信息 }NET_OUT_GET_BOUND_TIMEEX; ///@brief 获取录像时间范围 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStorageBoundTimeEx(LLONG lLoginID, const NET_IN_GET_BOUND_TIMEEX* pInParam, NET_OUT_GET_BOUND_TIMEEX* pOutParam, int waittime); ///@brief CLIENT_GetStoragePortInfo 入参 typedef struct tagNET_IN_GET_PORTINFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_PORTINFO; ///@brief CLIENT_GetStoragePortInfo 出参 typedef struct tagNET_OUT_GET_PORTINFO { DWORD dwSize; // 结构体大小 UINT nTotal; // 总线的接口数目,包括扩展的总线 UINT nPlug; // 已挂载的硬盘的数量, 不包括坏盘 UINT nMask; // 指示各个总线通道上是否挂载硬盘,包括坏盘 UINT nBadDisk; // 指示各个通道上是否挂载了坏的硬盘 UINT nIDEDisk; // 已挂载的IDE硬盘数 UINT nESATA; // eSATA的接口总数 UINT nUSB2; // 工作在USB2.0模式下的USB设备个数 UINT nUSB3; // 工作在USB3.0模式下的USB设备个数 }NET_OUT_GET_PORTINFO; ///@brief 获取存储端口信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStoragePortInfo(LLONG lLoginID, const NET_IN_GET_PORTINFO* pInParam, NET_OUT_GET_PORTINFO* pOutParam, int waittime); // NAS文件操作最大数量 #define MAX_NASFILE_COUNT 1024 ///@brief NAS文件操作类型 typedef enum tagEM_NAS_FILE_OPERATE_TYPE { EM_NAS_FILE_OPERATE_TYPE_COPY, // 复制, 对应结构体pInParam = NET_IN_COPY_NAS_FILE,pOutParam = NET_OUT_COPY_NAS_FILE EM_NAS_FILE_OPERATE_TYPE_MOVE, // 移动, 对应结构体pInParam = NET_IN_MOVE_NAS_FILE,pOutParam = NET_OUT_MOVE_NAS_FILE EM_NAS_FILE_OPERATE_TYPE_REMOVE, // 删除, 对应结构体pInParam = NET_IN_REMOVE_NAS_FILE,pOutParam = NET_OUT_REMOVE_NAS_FILE } EM_NAS_FILE_OPERATE_TYPE; ///@brief NAS文件复制移动方式 typedef enum tagEM_NAS_FILE_OPTION { EM_NAS_FILE_OPTION_UNKNOWN, // 未知 EM_NAS_FILE_OPTION_U, // 表示源目标比目标文件新或目标文件不存在才拷贝 EM_NAS_FILE_OPTION_F, // 表示直接使用源文件覆盖目标文件 } EM_NAS_FILE_OPTION; ///@brief NAS文件复制输入参数 typedef struct tagNET_IN_COPY_NAS_FILE { DWORD dwSize; char szID[MAX_COMMON_STRING_128]; // 客户端分配任务ID int nSrcNum; // 源文件(夹)名数量 char szSrcList[MAX_NASFILE_COUNT][MAX_COMMON_STRING_128]; // 源文件(夹)名列表 char szDstPath[MAX_COMMON_STRING_128]; // 目的路径 EM_NAS_FILE_OPTION emOption; // 拷贝选项 } NET_IN_COPY_NAS_FILE ; ///@brief NAS文件复制输出参数 typedef struct tagNET_OUT_COPY_NAS_FILE { DWORD dwSize; } NET_OUT_COPY_NAS_FILE; ///@brief NAS文件移动输入参数 typedef struct tagNET_IN_MOVE_NAS_FILE { DWORD dwSize; char szID[MAX_COMMON_STRING_128]; // 客户端分配任务ID int nSrcNum; // 源文件(夹)名数量 char szSrcList[MAX_NASFILE_COUNT][MAX_COMMON_STRING_128]; // 源文件(夹)名列表 char szDstPath[MAX_COMMON_STRING_128]; // 目的路径 EM_NAS_FILE_OPTION emOption; // 移动选项 } NET_IN_MOVE_NAS_FILE; ///@brief NAS文件移动输出参数 typedef struct tagNET_OUT_MOVE_NAS_FILE { DWORD dwSize; } NET_OUT_MOVE_NAS_FILE; ///@brief NAS文件删除输入参数 typedef struct tagNET_IN_REMOVE_NAS_FILE { DWORD dwSize; char szID[MAX_COMMON_STRING_128]; // 任务ID int nFileNum; // 删除文件数量 char szFileName[MAX_NASFILE_COUNT][MAX_COMMON_STRING_128]; // 源删除文件列表 } NET_IN_REMOVE_NAS_FILE; ///@brief NAS文件删除输出参数 typedef struct tagNET_OUT_REMOVE_NAS_FILE { DWORD dwSize; } NET_OUT_REMOVE_NAS_FILE; ///@brief NAS文件操作接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateNASFile(LLONG lLoginID, EM_NAS_FILE_OPERATE_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); #define MAX_FILE_COMPRESS_COUNT 8 // 文件压缩最大个数 ///@brief 文件压缩格式 typedef enum tagEM_COMPRESS_TYPE { EM_COMPRESS_TYPE_UNKNWON, // 未知 EM_COMPRESS_TYPE_ZIP, // zip格式 } EM_COMPRESS_TYPE; ///@brief 压缩文件操作输入参数 typedef struct tagNET_IN_COMPRESS_FILE { DWORD dwSize; char szID[MAX_COMMON_STRING_128]; // 任务ID int nSrcNum; // 源文件(夹)名数量 char szSrcFileList[MAX_FILE_COMPRESS_COUNT][MAX_COMMON_STRING_128]; // 源文件(夹)名列表 char szDstFile[MAX_COMMON_STRING_128]; // 目的文件 char szPassword[MAX_COMMON_STRING_64]; // 密码 EM_COMPRESS_TYPE emCompressType; // 压缩格式 } NET_IN_COMPRESS_FILE; ///@brief 压缩文件操作输出参数 typedef struct tagNET_OUT_COMPRESS_FILE { DWORD dwSize; } NET_OUT_COMPRESS_FILE; ///@brief 压缩文件操作输入参数 typedef struct tagNET_IN_DECOMPRESS_FILE { DWORD dwSize; char szID[MAX_COMMON_STRING_128]; // 任务ID char szSrcFile[MAX_COMMON_STRING_128]; // 源文件名 char szDstPath[MAX_COMMON_STRING_128]; // 解压到指定目录 char szPassword[MAX_COMMON_STRING_64]; // 密码 } NET_IN_DECOMPRESS_FILE; ///@brief 压缩文件操作输出参数 typedef struct tagNET_OUT_DECOMPRESS_FILE { DWORD dwSize; } NET_OUT_DECOMPRESS_FILE; ///@brief 文件压缩解压操作接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateFileCompress(LLONG lLoginID, EM_FILE_COMPRESS_TYPE emOperateType, void *pInParam, void *pOutParam, int nWaitTime); ///////////////////////////////////////分组流量统计////////////////////////////////////////////////////////////////// #define MAX_GROUP_CHANNEL_NUM 1024 // 一个组最大关联的通道个数 #define MAX_GROUPID_LEN 64 // 组ID的最大字符长度 #define MAX_GROUPNAME_LEN 128 // 组名称的最大字符长度 ///@brief 统计小计信息 typedef struct tagNET_NUMBERSTATGROUP_SUBTOTAL { int nTotal; // 设备运行后人数统计总数 int nHour; // 小时内的总人数 int nToday; // 当天的总人数, 不可手动清除 int nTotalInTimeSection; // IPC专用,如果不执行clearSectionStat操作,等同于Today人数 BYTE byReserved[252]; } NET_NUMBERSTATGROUP_SUBTOTAL; ///@brief 分组客流统计数据 typedef struct tagNET_NUMBERSTATGROUP_SUMMARY { char szGroupID[MAX_GROUPID_LEN]; // 组ID char szGroupName[MAX_GROUPNAME_LEN]; // 组名 int nChannelNum; // 通道号数 int arChannelList[MAX_GROUP_CHANNEL_NUM]; // 通道号列表 NET_TIME_EX stuUTC; // 统计时间秒数,已包含时区偏移 int nTimeZone; // 时区索引号 NET_NUMBERSTATGROUP_SUBTOTAL stuEnteredSubtotal; // 进入小计 NET_NUMBERSTATGROUP_SUBTOTAL stuExitedSubtotal; // 出去小计 int nInsideSubtotal; // 区域内人数 BYTE byReserved[1024]; // 保留 } NET_NUMBERSTATGROUP_SUMMARY; ///@brief 分组客流统计数据回调函数原形,lAttachHandle 是 CLIENT_AttachNumberStatGroupSummary 返回值 typedef void (CALLBACK *fNumberStatGroupSumCallBack) (LLONG lAttachHandle, NET_NUMBERSTATGROUP_SUMMARY* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief 订阅分组客流量统计数据--输入参数 typedef struct tagNET_IN_ATTACH_NUMBERSTATGROUP_SUM { DWORD dwSize; // 结构体大小 fNumberStatGroupSumCallBack cbNumberStatGroupSum; // 分组客流量统计数据回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_NUMBERSTATGROUP_SUM; ///@brief 订阅分组客流量统计数据--输出参数 typedef struct tagNET_OUT_ATTACH_NUMBERSTATGROUP_SUM { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_NUMBERSTATGROUP_SUM; ///@brief 订阅分组客流量统计数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNumberStatGroupSummary(LLONG lLoginID, const NET_IN_ATTACH_NUMBERSTATGROUP_SUM* pInParam, NET_OUT_ATTACH_NUMBERSTATGROUP_SUM* pOutParam, int waittime); ///@brief 取消订阅分组客流量统计数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNumberStatGroupSummary(LLONG lAttachHandle); ///@brief 分组人员统计--添加组 输入参数 typedef struct tagNET_IN_ADD_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 char szGroupName[MAX_GROUPNAME_LEN]; // 组名 int nChannelNum; // 通道数 int arChannelList[MAX_GROUP_CHANNEL_NUM]; // 通道列表 }NET_IN_ADD_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--添加组 输出参数 typedef struct tagNET_OUT_ADD_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 char szGroupID[MAX_GROUPID_LEN]; // GroupID }NET_OUT_ADD_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--添加组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddNumberStatGroup(LLONG lLoginID, const NET_IN_ADD_NUMBERSTATGROUP_INFO* pInParam, NET_OUT_ADD_NUMBERSTATGROUP_INFO* pOutParam, int waittime); ///@brief 分组人员统计--删除组 输入参数 typedef struct tagNET_IN_DEL_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 char szGroupID[MAX_GROUPID_LEN]; // GroupID }NET_IN_DEL_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--删除组 输入参数 typedef struct tagNET_OUT_DEL_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_DEL_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--删除组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelNumberStatGroup(LLONG lLoginID, const NET_IN_DEL_NUMBERSTATGROUP_INFO* pInParam, NET_OUT_DEL_NUMBERSTATGROUP_INFO* pOutParam, int waittime); ///@brief 组信息 typedef struct tagNET_NUMBERSTATGROUP_INFO { char szGroupID[MAX_GROUPID_LEN]; // GroupID char szGroupName[MAX_GROUPNAME_LEN]; // 组名称 int nChannelNum; // 通道个数 int arChannelList[MAX_GROUP_CHANNEL_NUM]; // 通道号列表 BYTE byReserved[512]; // 保留 }NET_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--修改组 输入参数 typedef struct tagNET_IN_MODIFY_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 NET_NUMBERSTATGROUP_INFO stuGroupInfo; }NET_IN_MODIFY_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--修改组 输出参数 typedef struct tagNET_OUT_MODIFY_NUMBERSTATGROUP_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_NUMBERSTATGROUP_INFO; ///@brief 分组人员统计--修改组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyNumberStatGroup(LLONG lLoginID, const NET_IN_MODIFY_NUMBERSTATGROUP_INFO* pInParam, NET_OUT_MODIFY_NUMBERSTATGROUP_INFO* pOutParam, int waittime); ///@brief 分组人员统计--获取组 输入参数 typedef struct tagNET_IN_NUMBERSTATGROUPS_INFO { DWORD dwSize; // 结构体大小 char szGroupID[MAX_GROUPID_LEN]; // GroupID }NET_IN_NUMBERSTATGROUPS_INFO; ///@brief 分组人员统计--获取组 输出参数 typedef struct tagNET_OUT_NUMBERSTATGROUPS_INFO { DWORD dwSize; // 结构体大小 int nGroupsRetNum; // 返回的组个数 int nGroupsMaxNum; // 用户分配的数组个数 NET_NUMBERSTATGROUP_INFO* pstuGroupList; // 组列表, 由用户分配,大小为sizeof(NET_NUMBERSTATGROUP_INFO) * nGroupsMaxNum }NET_OUT_NUMBERSTATGROUPS_INFO; ///@brief 分组人员统计--获取组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNumberStatGroups(LLONG lLoginID, const NET_IN_NUMBERSTATGROUPS_INFO* pInParam, NET_OUT_NUMBERSTATGROUPS_INFO* pOutParam, int waittime); ///@brief 分组人员统计--获取摘要信息 输入参数 typedef struct tagNET_IN_NUMBERSTATGROUPSUMMARY_INFO { DWORD dwSize; // 结构体大小 char szGroupID[MAX_GROUPID_LEN]; // GroupID }NET_IN_NUMBERSTATGROUPSUMMARY_INFO; ///@brief 分组人员统计--获取摘要信息 输出参数 typedef struct tagNET_OUT_NUMBERSTATGROUPSUMMARY_INFO { DWORD dwSize; // 结构体大小 NET_NUMBERSTATGROUP_SUMMARY stuSummary; // 摘要信息 }NET_OUT_NUMBERSTATGROUPSUMMARY_INFO; ///@brief 分组人员统计--获取摘要信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNumberStatGroupSummary(LLONG lLoginID, const NET_IN_NUMBERSTATGROUPSUMMARY_INFO* pInParam, NET_OUT_NUMBERSTATGROUPSUMMARY_INFO* pOutParam, int waittime); ///@brief 待查询数据的规则类型 typedef enum tagEM_NUMBERSTATGROUP_RULE_TYPE { EM_NUMBERSTATGROUP_RULE_UNKNOWN = 0, EM_NUMBERSTATGROUP_RULE_NUMBERSTAT, // 返回Entered和Exited EM_NUMBERSTATGROUP_RULE_MANNUMBERDETECTION, // 返回Inside统计 }EM_NUMBERSTATGROUP_RULE_TYPE; ///@brief 统计信息粒度 typedef enum tagEM_GRANULARITY_TYPE { EM_GRANULARITY_UNKNOWN = 0, EM_GRANULARITY_MINUTE, // 按分钟 EM_GRANULARITY_HOUR, // 按小时 EM_GRANULARITY_DAY, // 按天 EM_GRANULARITY_WEEK, // 按周 EM_GRANULARITY_MONTH, // 按月 EM_GRANULARITY_SEASON, // 按季 EM_GRANULARITY_YEAR // 按年 }EM_GRANULARITY_TYPE; ///@brief 查询条件 typedef struct tagNET_IN_NUMBERSTATGROUP_START_FIND_INFO { DWORD dwSize; // 结构体大小 char szGroupID[MAX_GROUPID_LEN]; // 组ID,为""则查询所有组 NET_TIME stStartTime; // 开始时间 NET_TIME stEndTime; // 结束时间 EM_NUMBERSTATGROUP_RULE_TYPE emRuleType; // 待查询数据的规则类型 EM_GRANULARITY_TYPE emGranularity; // 查询粒度 UINT nPlanID; // 计划ID,仅球机有效,从1开始 }NET_IN_NUMBERSTATGROUP_START_FIND_INFO; ///@brief 查询输出 typedef struct tagNET_OUT_NUMBERSTATGROUP_START_FIND_INFO { DWORD dwSize; // 结构体大小 UINT nTotalCount; // 符合查询条件的总数 }NET_OUT_NUMBERSTATGROUP_START_FIND_INFO; ///@brief 分组人员统计--开始查找 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindNumberStatGroup(LLONG lLoginID, const NET_IN_NUMBERSTATGROUP_START_FIND_INFO* pInParam, NET_OUT_NUMBERSTATGROUP_START_FIND_INFO* pOutParam, int nWaitTime); ///@brief 分组客流统计记录 typedef struct tagNET_NUMBERSTATGROUP_RECORD { char szGroupID[MAX_GROUPID_LEN]; // 组ID char szGroupName[MAX_GROUPNAME_LEN]; // 组名 int nChannelNum; // 通道号数 int arChannelList[MAX_GROUP_CHANNEL_NUM]; // 通道号列表 EM_NUMBERSTATGROUP_RULE_TYPE emRuleName; // 规则类型 NET_TIME_EX stuStartTime; // 统计开始时间 NET_TIME_EX stuEndTime; // 统计结束时间,和开始时间一样表示统计人数是个瞬时值 UINT nEnteredSubtotal; // 进入小计 UINT nExitedSubtotal; // 出去小计 UINT nInsideSubtotal; // 区域内人数 BYTE byReserved[1024]; // 保留 } NET_NUMBERSTATGROUP_RECORD; ///@brief CLIENT_DoFindNumberStatGroup输入参数 typedef struct tagNET_IN_NUMBERSTATGROUP_DO_FIND_INFO { DWORD dwSize; int nStartNo; // 起始序号 int nCount; // 本次欲获得结果的个数 }NET_IN_NUMBERSTATGROUP_DO_FIND_INFO; ///@brief CLIENT_DoFindNumberStatGroup输出参数 typedef struct tagNET_OUT_NUMBERSTATGROUP_DO_FIND_INFO { DWORD dwSize; int nRetNum; // 本次查询到的个数 int nMaxNum; // 用户分配内存的个数 NET_NUMBERSTATGROUP_RECORD* pstuInfo; // 查询结果, 用户分配内存,大小为sizeof(NET_NUMBERSTATGROUP_RECORD)*nMaxNum }NET_OUT_NUMBERSTATGROUP_DO_FIND_INFO; ///@brief 分组人员统计--查找 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindNumberStatGroup(LLONG lFindHandle, const NET_IN_NUMBERSTATGROUP_DO_FIND_INFO* pInParam, NET_OUT_NUMBERSTATGROUP_DO_FIND_INFO* pOutParam, int nWaitTime); ///@brief 分组人员统计--停止查找 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindNumberStatGroup(LLONG lFindHandle); /**************************录像二次分析接口*************************/ #define MAX_SECONDARY_ANALYSE_TASK_NUM 32 // 二次分析任务支持的最大个数 #define MAX_SECONDARY_ANALYSE_RULE_NUM 8 // 二次分析规则支持的最大个数 #define MAX_SECONDARY_ANALYSE_EVENT_NUM 8 // 二次分析事件支持的最大个数 ///@brief 录像二次分析任务状态 typedef enum tagEM_SECONDARY_ANALYSE_STATE { EM_SECONDARY_ANALYSE_UNKNOWN, // 未知 EM_SECONDARY_ANALYSE_WAIT_DOWNLOAD, // 等待下载 EM_SECONDARY_ANALYSE_DOWNLOADING, // 下载中 EM_SECONDARY_ANALYSE_WAIT_ANALYSE, // 等待分析 EM_SECONDARY_ANALYSE_ANALYSING, // 分析中 EM_SECONDARY_ANALYSE_FINISH_ANALYSE, // 完成分析 EM_SECONDARY_ANALYSE_DOWNLOAD_FAILED, // 下载失败 EM_SECONDARY_ANALYSE_CANCELLED, // 任务取消 EM_SECONDARY_ANALYSE_NOTENOUGH_ANALYSER, // 分析器不够 EM_SECONDARY_ANALYSE_ANALYSER_ERROR, // 分析器异常 EM_SECONDARY_ANALYSE_PAUSE_DOWNLOAD, // 下载暂停 EM_SECONDARY_ANALYSE_PAUSE_ANALYSE, // 分析暂停 } EM_SECONDARY_ANALYSE_STATE; ///@brief 录像二次分析任务状态信息 typedef struct tagNET_ANALYSE_TASK_INFO { UINT nTaskID; // 任务ID EM_SECONDARY_ANALYSE_STATE emAnalyseState; // 当前任务状态 char szTaskName[DH_COMMON_STRING_128]; // 当前任务名称 UINT nProgress; // 当前分析进度 BYTE byReserved[516]; // 保留字节 } NET_ANALYSE_TASK_INFO; ///@brief 录像二次分析状态订阅回调函数出参 typedef struct tagNET_CB_SECONDARY_ANALYSE_INFO { int nRetAnalyseTaskCount; // 实际返回的二次分析任务个数 BYTE byReserved1[4]; // 字节对齐 NET_ANALYSE_TASK_INFO stuAnalyseTaskInfo[MAX_SECONDARY_ANALYSE_TASK_NUM];// 二次分析任务信息 LDWORD dwUser; // 用户数据 BYTE byReserved[512]; // 保留字节 } NET_CB_SECONDARY_ANALYSE_INFO; ///@brief 录像二次分析状态订阅回调函数原型 typedef int (CALLBACK *fSecondaryAnalyseCallBack)(LLONG lAnalyseHandle, NET_CB_SECONDARY_ANALYSE_INFO *pstSecondaryAnalyseInfo); ///@brief 订阅录像二次分析进度输入参数 typedef struct tagNET_IN_ATTACH_SECONDARY_ANALYSE_STATE { DWORD dwSize; // 赋值为结构体大小 BYTE byReserved[4]; // 字节对齐 fSecondaryAnalyseCallBack cbSecondaryAnalyse; // 回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_SECONDARY_ANALYSE_STATE; ///@brief 订阅录像二次分析进度输出参数 typedef struct tagNET_OUT_ATTACH_SECONDARY_ANALYSE_STATE { DWORD dwSize; // 赋值为结构体大小 } NET_OUT_ATTACH_SECONDARY_ANALYSE_STATE; ///@brief 目标分析规则信息 typedef struct tagNET_ANALYSE_RULE_FACE_ANALYSIS_INFO { UINT nSimilarity; // 相似度 UINT nGroupNum; // 目标组个数 char szGroupID[MAX_FACE_DB_NUM][DH_COMMON_STRING_64]; // 目标组ID BYTE byReserved[1024]; // 保留字节 } NET_ANALYSE_RULE_FACE_ANALYSIS_INFO; ///@brief 规则类型 typedef enum tagEM_ANALYSE_RULE_TYPE { EM_ANALYSE_RULE_UNKNOWN, // 未知 EM_ANALYSE_RULE_FACE_ANALYSIS, // 目标分析, 对应结构体 NET_ANALYSE_RULE_FACE_ANALYSIS_INFO EM_ANALYSE_RULE_FACE_ATTRIBUTE, // 目标检测, 无配置结构体 } EM_ANALYSE_RULE_TYPE; ///@brief 事件类型 typedef enum tagEM_ANALYSE_EVENT_TYPE { EM_ANALYSE_EVENT_UNKNOWN, // 未知 EM_ANALYSE_EVENT_ALL, // 所有事件 EM_ANALYSE_EVENT_FACE_DETECTION, // 目标检测事件, 对应结构体 DEV_EVENT_FACEDETECT_INFO EM_ANALYSE_EVENT_FACE_RECOGNITION, // 目标识别事件, 对应结构体 DEV_EVENT_FACERECOGNITION_INFO EM_ANALYSE_EVENT_TRAFFICJUNCTION, // 交通路口事件, 对应结构体 DEV_EVENT_TRAFFICJUNCTION_INFO EM_ANALYSE_EVENT_HUMANTRAIT, // 人体特征事件, 对应结构体 DEV_EVENT_HUMANTRAIT_INFO EM_ANALYSE_EVENT_XRAY_DETECTION, // X光机检测事件, 对应结构体 DEV_EVENT_XRAY_DETECTION_INFO EM_ANALYSE_EVENT_WORKCLOTHESDETECT, // 工装(安全帽/工作服等)检测事件, 对应结构体 DEV_EVENT_WORKCLOTHES_DETECT_INFO EM_ANALYSE_EVENT_WORKSTATDETECTION, // 作业检测事件, 对应结构体 DEV_EVENT_WORKSTATDETECTION_INFO EM_ANALYSE_EVENT_CORSSLINEDETECTION, // 警戒线事件, 对应结构体 DEV_EVENT_CROSSLINE_INFO EM_ANALYSE_EVENT_CROSSREGIONDETECTION, // 警戒区事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO EM_ANALYSE_EVENT_FEATURE_ABSTRACT, // 特征提取事件 DEV_EVENT_FEATURE_ABSTRACT_INFO EM_ANALYSE_EVENT_ELECTRIC_GLOVE_DETECT, // 电力检测手套检测事件, 对应结构体 DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO EM_ANALYSE_EVENT_ELECTRIC_LADDER_DETECT, // 电力检测梯子检测事件, 对应结构体 DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO EM_ANALYSE_EVENT_ELECTRIC_CURTAIN_DETECT, // 电力检测布幔检测事件, 对应结构体 DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO EM_ANALYSE_EVENT_ELECTRIC_FENCE_DETECT, // 电力检测围栏检测事件, 对应结构体 DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO EM_ANALYSE_EVENT_ELECTRIC_SIGNBOARD_DETECT, // 电力检测标识牌检测事件, 对应结构体 DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO EM_ANALYSE_EVENT_ELECTRIC_BELT_DETECT, // 电力检测安全带检测事件, 对应结构体 DEV_EVENT_ELECTRIC_BELT_DETECT_INFO EM_ANALYSE_EVENT_BANNER_DETECTION, // 拉横幅检测事件, 对应的结构体 DEV_EVENT_BANNER_DETECTION_INFO EM_ANALYSE_EVENT_SMART_KITCHEN_CLOTHES_DETECTION, // 智慧厨房穿着检测事件, 对应结构体 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO EM_ANALYSE_EVENT_WATER_STAGE_MONITOR, // 水位监测事件, 对应结构体DEV_EVENT_WATER_STAGE_MONITOR_INFO EM_ANALYSE_EVENT_FLOATINGOBJECT_DETECTION, // 漂浮物检测事件, 对应结构体 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO EM_ANALYSE_EVENT_IVS_RIOTERDETECTION, // 人群聚集 对应结构体 DEV_EVENT_RIOTERL_INFO) EM_ANALYSE_EVENT_IVS_LEFTDETECTION, // 物品遗留事件 对应结构体 DEV_EVENT_LEFT_INFO EM_ANALYSE_EVENT_IVS_PARKINGDETECTION, // 非法停车事件 对应结构体 DEV_EVENT_PARKINGDETECTION_INFO EM_ANALYSE_EVENT_IVS_WANDERDETECTION, // 徘徊事件对应结构体 DEV_EVENT_WANDER_INFO EM_ANALYSE_EVENT_IVS_VIDEOABNORMALDETECTION,// 视频异常对应结构体 DEV_EVENT_VIDEOABNORMALDETECTION_INFO EM_ANALYSE_EVENT_MOVEDETECTION, // 运动检测事件, 对应结构体 DEV_EVENT_MOVE_INFO EM_ANALYSE_EVENT_VIDEO_NORMAL_DETECTION, // 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件,对应结构体 DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO EM_ANALYSE_EVENT_CONVEYER_BELT_BULK, // 传送带大块异物检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_BULK_INFO EM_ANALYSE_EVENT_CONVEYER_BELT_NONLOAD, // 传送带空载检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO EM_ANALYSE_EVENT_CONVEYER_BELT_RUNOFF, // 传送带跑偏检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO EM_ANALYSE_EVENT_CONVEYER_BELT_BLOCK, // 传送带阻塞检测事件, 对应结构体 DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO EM_ANALYSE_EVENT_NUMBER_STAT, // 数量统计事件, 对应 结构体 DEV_EVENT_NUMBERSTAT_INFO EM_ANALYSE_EVENT_FIGHTDETECTION, // 斗殴事件, 对应结构体 DEV_EVENT_FIGHT_INFO EM_ANALYSE_EVENT_SMOKEDETECTION, // 烟雾报警检测事件, 对应结构体 DEV_EVENT_SMOKE_INFO EM_ANALYSE_EVENT_FIREDETECTION, // 火警检测事件, 对应结构体 DEV_EVENT_FIRE_INFO EM_ANALYSE_EVENT_PHONECALL_DETECT, // 打电话检测事件, 对应结构体 DEV_EVENT_PHONECALL_DETECT_INFO EM_ANALYSE_EVENT_SMOKING_DETECT, // 吸烟检测事件, 对应结构体 DEV_EVENT_SMOKING_DETECT_INFO EM_ANALYSE_EVENT_TUMBLE_DETECTION, // 跌倒检测事件, 对应结构体 DEV_EVENT_TUMBLE_DETECTION_INFO EM_ANALYSE_EVENT_WATER_LEVEL_DETECTION, // 水位尺检测事件, 对应结构体 DEV_EVENT_WATER_LEVEL_DETECTION_INFO EM_ANALYSE_EVENT_CLIMBDETECTION, // 攀高检测事件, 对应结构体 DEV_EVENT_IVS_CLIMB_INFO EM_ANALYSE_EVENT_MAN_NUM_DETECTION, // 立体视觉区域内人数统计事件, 对应结构体DEV_EVENT_MANNUM_DETECTION_INFO EM_ANALYSE_EVENT_DIALRECOGNITION, // 仪表检测事件, 对应结构体DEV_EVENT_DIALRECOGNITION_INFO EM_ANALYSE_EVENT_ELECTRICFAULT_DETECT, // 仪表类缺陷检测事件, 对应结构体DEV_EVENT_ELECTRICFAULTDETECT_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_ROAD_BLOCK, // 交通路障检测事件,对应结构体 DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION, //交通道路施工检测事件,对应结构体 DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_FLOWSTATE, // 交通流量统计事件,对应结构体 DEV_EVENT_TRAFFIC_FLOW_STATE EM_ANALYSE_EVENT_IVS_TRAFFIC_OVERSPEED, // 超速事件,对应结构体 DEV_EVENT_TRAFFIC_OVERSPEED_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_UNDERSPEED, // 欠速事件,对应结构体 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_OVERYELLOWLINE,// 压黄线事件,对应结构体 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_CROSSLANE, // 违章变道事件, 对应结构体 DEV_EVENT_TRAFFIC_CROSSLANE_INFO EM_ANALYSE_EVENT_IVS_TRAFFICJAM, // 交通拥堵事件, 对应结构体 DEV_EVENT_TRAFFICJAM_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_PEDESTRAIN, // 交通行人事件, 对应结构体 DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_THROW, // 抛洒物事件, 对应结构体 DEV_EVENT_TRAFFIC_THROW_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_RETROGRADE, // 交通逆行事件, 对应结构体 DEV_EVENT_TRAFFIC_RETROGRADE_INFO EM_ANALYSE_EVENT_IVS_TRAFFICACCIDENT, // 交通事故事件, 对应结构体 DEV_EVENT_TRAFFICACCIDENT_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_BACKING, // 倒车事件, 对应结构体 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO EM_ANALYSE_EVENT_IVS_FOG_DETECTION, // 起雾检测事件, 对应结构体 DEV_EVENT_FOG_DETECTION EM_ANALYSE_EVENT_IVS_CROSSREGIONDETECTION, // 警戒区事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO EM_ANALYSE_EVENT_IVS_TRAFFIC_PARKING, // 交通违章停车事件,对应结构体 DEV_EVENT_TRAFFIC_PARKING_INFO EM_ANALYSE_EVENT_IVS_FINANCE_CASH_TRANSACTION,//智慧金融现金交易检测事件,对应结构体 DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO EM_ANALYSE_EVENT_IVS_LEAVEDETECTION, // 离岗检测事件,对应结构体 DEV_EVENT_IVS_LEAVE_INFO EM_ANALYSE_EVENT_IVS_LADLE_NO_DETECTION, // 钢包编号识别事件,对应结构体 DEV_EVENT_LADLE_NO_DETECTION_INFO EM_ANALYSE_EVENT_IVS_STAYDETECTION, // 停留事件,对应结构体 DEV_EVENT_STAY_INFO EM_ANALYSE_EVENT_IVS_NEAR_OBJECT_DETECT, // 近物体检测事件,对应结构体 DEV_EVENT_NEAR_OBJECT_DETECT_INFO EM_ANALYSE_EVENT_IVS_CRANE_LOAD_STAY_DETECTION, // 天车吊物滞留事件,对应结构体 DEV_EVENT_CRANE_LOAD_STAY_DETECTION_INFO EM_ANALYSE_EVENT_IVS_PIC_COMPARE_DETECTION, // 图片比对不上事件,对应结构体 NET_DEV_EVENT_PIC_COMPARE_DETECTION_INFO EM_ANALYSE_EVENT_CONVEYOR_ARTICLE_TYPE, // 传送带异物检测事件, 对应结构体 DEV_EVENT_CONVEYOR_ARTICLE_TYPE_INFO EM_ANALYSE_EVENT_CROSSLINEDETECTION_EX = 2000, // 警戒线事件(扩展), 对应结构体 DEV_EVENT_CROSSLINE_INFO_EX } EM_ANALYSE_EVENT_TYPE; ///@brief 录像二次分析规则信息 typedef struct tagNET_ANALYSE_INFO { EM_ANALYSE_RULE_TYPE emAnalyseType; // 规则类型 BYTE byReserved1[4]; // 字节对齐 void *pRuleInfo; // 规则具体信息, 根据emAnalyseType来确定具体的结构体 BYTE byReserved[512]; // 保留字节 } NET_ANALYSE_INFO; ///@brief 需要添加的录像二次分析任务信息 typedef struct tagNET_SECONDARY_ANALYSE_TASK_INFO { char szRecordPath[DH_COMMON_STRING_256]; // 录像文件路径 int nAnalyseCount; // 录像二次分析的规则个数 NET_ANALYSE_INFO stuAnalyseInfo[MAX_SECONDARY_ANALYSE_RULE_NUM]; // 录像二次分析的规则信息 char szTaskName[DH_COMMON_STRING_128]; // 任务名称 BOOL bNeedSave; // 录像是否保存到设备端 BYTE byReserved[1024]; // 保留字节 } NET_SECONDARY_ANALYSE_TASK_INFO; ///@brief 添加录像二次分析任务输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_ADDTASK { DWORD dwSize; // 赋值为结构体大小 int nAnalyseTaskCount; // 实际的二次分析任务个数 NET_SECONDARY_ANALYSE_TASK_INFO stuAnalyseTaskInfo[MAX_SECONDARY_ANALYSE_TASK_NUM];// 二次分析任务信息 } NET_IN_SECONDARY_ANALYSE_ADDTASK; ///@brief 添加任务返回的信息 typedef struct tagNET_TASK_ADD_RESULT_INFO { UINT nTaskID; // 任务ID, 大于0。失败返回0,与文件列表一一对应 char szLocalPath[DH_COMMON_STRING_256]; // 将要保存在设备端的录像文件路径 BYTE byReserved[1024]; // 保留字节 } NET_TASK_ADD_RESULT_INFO; ///@brief 添加录像二次分析任务输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_ADDTASK { DWORD dwSize; // 赋值为结构体大小 UINT nRetTaskResultNum; // 实际返回的任务添加结果信息 NET_TASK_ADD_RESULT_INFO stuResultInfo[MAX_SECONDARY_ANALYSE_TASK_NUM];// 添加任务返回的结果信息 } NET_OUT_SECONDARY_ANALYSE_ADDTASK; ///@brief 开始录像二次分析任务输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_STARTTASK { DWORD dwSize; // 赋值为结构体大小 UINT nTaskIdNum; // 任务ID个数, 为0表示全部 UINT nTaskID[MAX_SECONDARY_ANALYSE_TASK_NUM];// 任务ID,0表示全部 } NET_IN_SECONDARY_ANALYSE_STARTTASK; ///@brief 开始录像二次分析任务输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_STARTTASK { DWORD dwSize; // 赋值为结构体大小 } NET_OUT_SECONDARY_ANALYSE_STARTTASK; ///@brief 暂停录像二次分析任务输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_PAUSETASK { DWORD dwSize; // 赋值为结构体大小 UINT nTaskIdNum; // 任务数量 UINT nTaskID[MAX_SECONDARY_ANALYSE_TASK_NUM];// 任务ID } NET_IN_SECONDARY_ANALYSE_PAUSETASK; ///@brief 暂停录像二次分析任务输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_PAUSETASK { DWORD dwSize; // 赋值为结构体大小 } NET_OUT_SECONDARY_ANALYSE_PAUSETASK; ///@brief 删除录像二次分析任务输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_REMOVETASK { DWORD dwSize; // 赋值为结构体大小 UINT nTaskIdNum; // 任务数量, 0表示删除全部 UINT nTaskID[MAX_SECONDARY_ANALYSE_TASK_NUM];// 任务ID } NET_IN_SECONDARY_ANALYSE_REMOVETASK; ///@brief 删除录像二次分析任务输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_REMOVETASK { DWORD dwSize; // 赋值为结构体大小 } NET_OUT_SECONDARY_ANALYSE_REMOVETASK; ///@brief 开始查询录像二次分析任务信息输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_STARTFIND_TASK { DWORD dwSize; // 赋值为结构体大小 UINT nTaskNum; // 任务个数, 为0表示查找全部 UINT nTaskID[MAX_SECONDARY_ANALYSE_TASK_NUM];// 任务ID } NET_IN_SECONDARY_ANALYSE_STARTFIND_TASK; ///@brief 开始查询录像二次分析任务信息输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_STARTFIND_TASK { DWORD dwSize; // 赋值为结构体大小 UINT nTotalCount; // 符合条件的任务总数 } NET_OUT_SECONDARY_ANALYSE_STARTFIND_TASK; ///@brief 录像二次分析任务状态信息 typedef struct tagNET_SECONDARY_ANALYSE_TASK_STATE_INFO { UINT nTaskID; // 任务ID char szTaskName[DH_COMMON_STRING_256]; // 任务名称 char szRecordPath[DH_COMMON_STRING_256]; // 录像文件路径 BOOL bNeedSave; // 录像是否保存到设备端 char szLoaclPath[DH_COMMON_STRING_256]; // 将要保存在设备端的录像文件路径 EM_SECONDARY_ANALYSE_STATE emAnalyseState; // 当前任务状态 NET_TIME stuStartTime; // 任务开始时间 NET_TIME stuFinishTime; // 任务结束时间 UINT nProgress; // 当前分析进度 int nAnalyseCount; // 录像二次分析的规则个数 NET_ANALYSE_INFO stuAnalyseInfo[MAX_SECONDARY_ANALYSE_RULE_NUM]; // 录像二次分析的规则信息 BYTE byReserved[1024]; // 保留字节 } NET_SECONDARY_ANALYSE_TASK_STATE_INFO; ///@brief 执行查询录像二次分析任务信息输入参数 typedef struct tagNET_IN_SECONDARY_ANALYSE_DOFIND_TASK { DWORD dwSize; // 赋值为结构体大小 UINT nBeginNumber; // 开始查询的起始编号 UINT nCount; // 本次要查询的任务条数 } NET_IN_SECONDARY_ANALYSE_DOFIND_TASK; ///@brief 执行查询录像二次分析任务信息输出参数 typedef struct tagNET_OUT_SECONDARY_ANALYSE_DOFIND_TASK { DWORD dwSize; // 赋值为结构体大小 UINT nFoundCount; // 查询到的任务数量 NET_SECONDARY_ANALYSE_TASK_STATE_INFO stuAnalyseTaskInfo[MAX_SECONDARY_ANALYSE_TASK_NUM]; // 录像二次分析任务状态信息 } NET_OUT_SECONDARY_ANALYSE_DOFIND_TASK; ///@brief 二次录像分析事件信息 typedef struct tagNET_SECONDARY_ANALYSE_EVENT_INFO { EM_ANALYSE_EVENT_TYPE emEventType; // 事件类型 BYTE byReserved1[4]; // 字节对齐 void *pstEventInfo; // 事件信息, 根据emEventType确定不同的结构体 BYTE byReserved[1024]; // 保留字节 } NET_SECONDARY_ANALYSE_EVENT_INFO; ///@brief 二次录像分析实时结果订阅回调结果结构体 typedef struct tagNET_CB_ANALYSE_RESULT_INFO { UINT nTaskID; // 任务ID NET_TIME stuPicTime; // 图片时间 int nRetEventCount; // 实际的事件个数 NET_SECONDARY_ANALYSE_EVENT_INFO stuEventInfo[MAX_SECONDARY_ANALYSE_EVENT_NUM];// 录像二次分析事件信息 LDWORD dwUser; // 用户数据 char szUserData[64]; // 视频源数据 标示视频源信息 对应addPollingTask中UserData字段。 BYTE byReserved[960]; // 保留字节 } NET_CB_ANALYSE_RESULT_INFO; ///@brief 二次录像分析实时结果订阅函数原型 typedef int (CALLBACK *fAnalyseResultCallBack)(LLONG lAnalyseHandle, NET_CB_ANALYSE_RESULT_INFO *pstAnalyseResultInfo, BYTE *pBuffer, DWORD dwBufSize); ///@brief 订阅二次录像分析实时结果输入参数 typedef struct tagNET_IN_ATTACH_SECONDARY_ANALYSE_RESULT { DWORD dwSize; // 赋值为结构体大小 int nTaskNum; // 需要订阅的任务个数, 0表示订阅全部 UINT nTaskID[MAX_SECONDARY_ANALYSE_TASK_NUM]; // 任务ID int nEventCount; // 需要订阅的事件个数 EM_ANALYSE_EVENT_TYPE emEventType[MAX_SECONDARY_ANALYSE_TASK_NUM];// 需要订阅的事件 BOOL bNeedPicData; // 是否需要图片数据 fAnalyseResultCallBack cbAnalyseResult; // 二次录像分析实时结果订阅函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_SECONDARY_ANALYSE_RESULT; ///@brief 订阅二次录像分析实时结果输出参数 typedef struct tagNET_OUT_ATTACH_SECONDARY_ANALYSE_RESULT { DWORD dwSize; // 赋值为结构体大小 } NET_OUT_ATTACH_SECONDARY_ANALYSE_RESULT; ///@brief 订阅录像二次分析任务进度, pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRecordSecondaryAnalyseTaskState(LLONG lLoginID, NET_IN_ATTACH_SECONDARY_ANALYSE_STATE *pstInParam, NET_OUT_ATTACH_SECONDARY_ANALYSE_STATE *pstOutParam, int nWaitTime); ///@brief 取消订阅录像二次分析进度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRecordSecondaryAnalyseState(LLONG lAnalyseHandle); ///@brief 添加录像二次分析任务 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalyseAddTask(LLONG lLoginID, NET_IN_SECONDARY_ANALYSE_ADDTASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_ADDTASK *pstOutParam, int nWaitTime); ///@brief 开始录像二次分析任务 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalyseStartTask(LLONG lLoginID, NET_IN_SECONDARY_ANALYSE_STARTTASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_STARTTASK *pstOutParam, int nWaitTime); ///@brief 暂停录像二次分析任务 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalysePauseTask(LLONG lLoginID, NET_IN_SECONDARY_ANALYSE_PAUSETASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_PAUSETASK *pstOutParam, int nWaitTime); ///@brief 删除录像二次分析任务 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalyseRemoveTask(LLONG lLoginID, NET_IN_SECONDARY_ANALYSE_REMOVETASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_REMOVETASK *pstOutParam, int nWaitTime); ///@brief 开始查询录像二次分为任务信息 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RecordSecondaryAnalyseStartFindTask(LLONG lLoginID, NET_IN_SECONDARY_ANALYSE_STARTFIND_TASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_STARTFIND_TASK *pstOutParam, int nWaitTime); ///@brief 执行查询录像二次分为任务信息 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalyseDoFindTask(LLONG lFindHandle, NET_IN_SECONDARY_ANALYSE_DOFIND_TASK *pstInParam, NET_OUT_SECONDARY_ANALYSE_DOFIND_TASK *pstOutParam, int nWaitTime); ///@brief 停止查询录像二次分为任务信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecordSecondaryAnalyseStopFindTask(LLONG lFindHandle); ///@brief 订阅录像二次分析实时结果 pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRecordSecondaryAnalyseResult(LLONG lLoginID, NET_IN_ATTACH_SECONDARY_ANALYSE_RESULT *pstInParam, NET_OUT_ATTACH_SECONDARY_ANALYSE_RESULT *pstOutParam, int nWaitTime); ///@brief 取消订阅录像二次分析实时结果 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRecordSecondaryAnalyseResult(LLONG lAttachHandle); ///@brief 比对结果 typedef enum tagEM_COMPARE_RESULT { EM_COMPARE_RESULT_UNKNOWN=-1, // 未知 EM_COMPARE_RESULT_SUCCESS, // 成功 EM_COMPARE_RESULT_OTHERERROR, // 其他错误 EM_COMPARE_RESULT_NOTINDATABASE, // 不在目标库中 EM_COMPARE_RESULT_EXCEED_SINGLE_DAY_ENTER_TIMES, // 超过单日进门次数限制 EM_COMPARE_RESULT_NO_ENTER_RECORD_LEAVE_FAIL, // 无进门记录,离开失败 EM_COMPARE_RESULT_AREA_FULL, // 区域人员已满 EM_COMPARE_RESULT_REPEATENTER_CHECK_FAIL, // 防反潜验证失败(没有正常出门记录再次进门) }EM_COMPARE_RESULT; ///@brief 开门方式 typedef enum tagEM_FACE_OPEN_DOOR_TYPE { EM_FACE_OPEN_DOOR_TYPE_UNKNOWN = 0, // 未知 EM_FACE_OPEN_DOOR_TYPE_REMOTEFACE, // 远程目标识别 EM_FACE_OPEN_DOOR_TYPE_REMOTEQRCODE // 远程二维码 }EM_FACE_OPEN_DOOR_TYPE; ///@brief 信息类型 typedef enum tagEM_EDUCATION_INFO_TYPE { EM_EDUCATION_INFO_TYPE_UNKNOWN, // 未知 EM_EDUCATION_INFO_TYPE_CHECK_IN, // 签到 EM_EDUCATION_INFO_TYPE_SIGN_BACK, // 签退 EM_EDUCATION_INFO_TYPE_ROLL_CALL, // 点名 EM_EDUCATION_INFO_TYPE_LEARNING_ABNORMAL, // 学习异常 EM_EDUCATION_INFO_TYPE_EXAMINATION, // 考试 EM_EDUCATION_INFO_TYPE_END_OF_STUDY, // 结束学习 EM_EDUCATION_INFO_TYPE_EXPERIENCE_LEARNING, // 体验学习 EM_EDUCATION_INFO_TYPE_NOT_LEARNING, // 未学习 EM_EDUCATION_INFO_TYPE_MIDWAY_IN, // 中途进入 EM_EDUCATION_INFO_TYPE_MIDWAY_LEAVE, // 中途离开 EM_EDUCATION_INFO_TYPE_CAMPUS_TIPS, // 校园提示信息 EM_EDUCATION_INFO_TYPE_PHOTO_REPEAT, // 照片重复,请重新采集 EM_EDUCATION_INFO_TYPE_LOW_FACE_QUALITY, // 目标质量低,请重新采集 EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_TOO_LOW, // 目标亮度过低,请重新采集 EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_TOO_HIGH, // 目标亮度过高:请重新采集 EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_UNEVEN, // 目标亮度不均匀,请重新采集 EM_EDUCATION_INFO_TYPE_PROVIDE_FRONT_FACE_PHOTO, // 请提供正脸照片 EM_EDUCATION_INFO_TYPE_UNCLEAR_FACE, // 目标不清晰,请重新采集 EM_EDUCATION_INFO_TYPE_EYE_BEEN_COVERED, // 眼部有遮挡,请重新采集 EM_EDUCATION_INFO_TYPE_FACE_TOO_SMALL, // 目标过小,请重新采集 EM_EDUCATION_INFO_TYPE_PROVIDE_COLOR_PHOTO, // 请提供彩色照片 EM_EDUCATION_INFO_TYPE_ABSENCE_OF_FACE, // 脸部缺失,请重新采集 EM_EDUCATION_INFO_TYPE_NOT_WEAR_MASK, // 禁止戴口罩,请重新采集 EM_EDUCATION_INFO_TYPE_PHOTO_TOO_BIG, // 上传照片过大,请重新采集 EM_EDUCATION_INFO_TYPE_PHOTO_TOO_SAMLL, // 上传照片过小,请重新采集 } EM_EDUCATION_INFO_TYPE; ///@brief 语音类型 typedef enum tagEM_CUSTOM_EDUCATION_VOICE_TYPE { EM_CUSTOM_EDUCATION_VOICE_TYPE_UNKNOWN, // 未知 EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL_TIMEOUT, // 超时出校 EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_TIMEOUT, // 超时进校 EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL, // 出校 EM_CUSTOM_EDUCATION_VOICE_TYPE_CARD_NOT_BIND, // 此卡未绑定 EM_CUSTOM_EDUCATION_VOICE_TYPE_BOARDER, // 寄宿生 EM_CUSTOM_EDUCATION_VOICE_TYPE_PARENT_CARD_REPORT_LOST, // 家长卡已挂失 EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_OVERDUE, // 进校已过期 EM_CUSTOM_EDUCATION_VOICE_TYPE_PACKAGE_TO_PICKUP, // 您有包裹待领取 EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE, // 请假 EM_CUSTOM_EDUCATION_VOICE_TYPE_RETURN_SCHOOL_TIMEOUT_WHEN_ASKFORLEAVE, // 请假返校超时 EM_CUSTOM_EDUCATION_VOICE_TYPE_INANDOUT_SCHOOL_TIMENOTUP_WHEN_ASKFORLEAVE, // 请假进出校时间未到 EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_LEAVE_SCHOOL_WHEN_ASKFORLEAVE, // 请假拒绝出校 EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_ENTER_SCHOOL_WHEN_ASKFORLEAVE, // 请假拒绝进校 EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_IN_REVIEW, // 请假审核中 EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_EXPIRED, // 请假已过期 EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_APPROVED, // 请假已批准 EM_CUSTOM_EDUCATION_VOICE_TYPE_FORBID_LEAVE_SCHOOL_WITH_LEAVE_INVALID, // 请假已失效禁止重复出校 EM_CUSTOM_EDUCATION_VOICE_TYPE_TIME_ISNOT_UP, // 时间未到 EM_CUSTOM_EDUCATION_VOICE_TYPE_NOT_APPOINT, // 未预约 EM_CUSTOM_EDUCATION_VOICE_TYPE_NO_PASSAGE_IN_NONPERMIT_TIMESECTION, // 未在允许时段内禁止通行 EM_CUSTOM_EDUCATION_VOICE_TYPE_INVALID_CARD, // 无效卡 EM_CUSTOM_EDUCATION_VOICE_TYPE_ALREADY_APPOINTED, // 已预约 EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_BACK_SCHOOL, // 允许返校 EM_CUSTOM_EDUCATION_VOICE_TYPE_GOODBYE, // 再见 EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_NORMALLY, // 正常进校 EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_LEAVE_SCHOOLL, // 重复出校 EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_ENTER_SCHOOLL, // 重复进校 EM_CUSTOM_EDUCATION_VOICE_TYPE_DAY_STUDENT, // 走读生 EM_CUSTOM_EDUCATION_VOICE_TYPE_WELCOME, // 欢迎光临 EM_CUSTOM_EDUCATION_VOICE_TYPE_FACULTY, // 教职工 EM_CUSTOM_EDUCATION_VOICE_TYPE_TEACHER, // 老师 EM_CUSTOM_EDUCATION_VOICE_TYPE_HELLO_TEACHER, // 老师好 EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_ACCESS = 33, // 允许访问 EM_CUSTOM_EDUCATION_VOICE_TYPE_TTS_TEXT_VOICE_OUTPUT = 50, // tts文字语音输出 }EM_CUSTOM_EDUCATION_VOICE_TYPE; ///@brief 教育信息 typedef struct tagNET_CUSTOM_EDUCATION_INFO { EM_EDUCATION_INFO_TYPE emInfoType; // 信息类型 int nStudentSeatNumber; // 座位号,最小值为1 char szInfoContent[128]; // 消息内容 EM_CUSTOM_EDUCATION_VOICE_TYPE emVoiceType; // 语音类型 } NET_CUSTOM_EDUCATION_INFO; ///@brief 经历信息 typedef struct tagNET_EPIDEMIC_AREA_EXPERIENCE { char szAddress[128]; // 地址 NET_TIME stuTime; // 时间 BYTE byReserved[256]; // 预留字段 }NET_EPIDEMIC_AREA_EXPERIENCE; ///@brief 健康码状态 typedef enum tagEM_HEALTH_CODE_STATUS { EM_HEALTH_CODE_STATUS_UNKNOWN = 0, // 未知 EM_HEALTH_CODE_STATUS_RED, // 红码 EM_HEALTH_CODE_STATUS_GREEN, // 绿码 EM_HEALTH_CODE_STATUS_YELLOW, // 黄码 EM_HEALTH_CODE_STATUS_INVALID, // 无效 EM_HEALTH_CODE_STATUS_GREY, // 灰码 EM_HEALTH_CODE_STATUS_ORANGE, // 橙码 EM_HEALTH_CODE_STATUS_PURPLE, // 紫码 }EM_HEALTH_CODE_STATUS; ///@brief 健康码信息 typedef struct tagNET_HEALTH_CODE_INFO { char szCitizenID[32]; // 证件号 char szCitizenName[128]; // 证件姓名 char szPermanentAddr[128]; // 常驻地 char szCurrentAddr[128]; // 当前地址 EM_HEALTH_CODE_STATUS emHealthCodeStatus; // 健康码状态 char szPhoneNumber[32]; // 手机号 char szAbnormalCodeReason[256]; // 异常原因 NET_TIME stuQueryTime; // 查询时间戳 int nEpidemicAreaExperience; // stuEpidemicAreaExperience 个数 NET_EPIDEMIC_AREA_EXPERIENCE stuEpidemicAreaExperience[10]; // 疫区经历 BYTE byReserved[512]; // 预留字段 }NET_HEALTH_CODE_INFO; ///@brief 证件消息类型 typedef enum tagEM_IDCARD_MSG_TYPE { EM_IDCARD_MSG_TYP_UNKNOWN = 0, // 未知 EM_IDCARD_MSG_TYP_QUERY, // 证件查询信息 EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION, // 证件权限下发 }EM_IDCARD_MSG_TYPE; ///@brief 证件信息 typedef struct tagNET_IDCARD_INFO { EM_IDCARD_MSG_TYPE emIDCardMsgType; // 证件消息类型 // EM_IDCARD_MSG_TYP_QUERY:除 nEventGroupID 和 szRoomNo (在上一层)字段不用填,其余必填 // EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION:nEventGroupID 、szRoomNo(在上一层)及 szCitizenName 字段必填,其余可为空 char szCitizenName[32]; // 姓名 EM_CITIZENIDCARD_SEX_TYPE emSexType; // 性别 int nMZ; NET_TIME stuBirthday; // 生日(年月日有效) char szAddress[128]; // 住址 char szCitizenID[32]; // 证件号 char szAuthority[48]; // 签发机关 NET_TIME stuBeginValidTime; // 有效期限起始日期(年月日有效) NET_TIME stuEndValidTime; // 有效期限截止日期(年月日有效) int nEventGroupID; // 事件组ID ,用于标示不同事件的对同一动作的关联 BYTE byReserved[1024]; // 预留字段 }NET_IDCARD_INFO; ///@brief 酒精状态 typedef enum tagEM_ALCOHOL_STATE { EM_ALCOHOL_STATE_UNKNOWN, // 未知 EM_ALCOHOL_STATE_NORMAL, // 正常 EM_ALCOHOL_STATE_DRINK, // 饮酒 }EM_ALCOHOL_STATE; ///@brief 车修理状态 typedef enum tagEM_BUS_REPAIR_STATE { EM_BUS_REPAIR_STATE_UNKNOWN, // 未知 EM_BUS_REPAIR_STATE_NOT_REPAIR, // 未修理 EM_BUS_REPAIR_STATE_REPAIRING, // 修理中 }EM_BUS_REPAIR_STATE; ///@brief 车加油状态 typedef enum tagEM_BUS_OIL_STATE { EM_BUS_OIL_STATE_UNKNOWN, // 未知 EM_BUS_OIL_STATE_REFUELED, // 已加油 EM_BUS_OIL_STATE_NOT_REFUEL, // 未加油 }EM_BUS_OIL_STATE; ///@brief 洗车状态 typedef enum tagEM_BUS_WASH_STATE { EM_BUS_WASH_STATE_UNKNOWN, // 未知 EM_BUS_WASH_STATE_WASHED, // 已洗车 EM_BUS_WASH_STATE_NOT_WASH, // 未洗车 }EM_BUS_WASH_STATE; ///@brief 收银状态 typedef enum tagEM_BUS_CASH_STATE { EM_BUS_CASH_STATE_UNKNOWN, // 未知 EM_BUS_CASH_STATE_COLLECTED, // 已收银 EM_BUS_CASH_STATE_UNCOLLECT, // 未收银 }EM_BUS_CASH_STATE; ///@brief 排班状态 typedef enum tagEM_SCHEDULE_STATE { EM_SCHEDULE_STATE_UNKNOWN, // 未知 EM_SCHEDULE_STATE_SCHEDULED, // 已排班 EM_SCHEDULE_STATE_NOT_SCHEDULE, // 未排班 }EM_SCHEDULE_STATE; ///@brief 公交站信息(定制) typedef struct tagNET_BUS_STATION_INFO { char szBusNo[64]; // 车号 char szParkPosition[64]; // 泊位 EM_ALCOHOL_STATE emAlcoholState; // 酒精状态 EM_BUS_REPAIR_STATE emRepairState; // 修理状态 EM_BUS_OIL_STATE emOilState; // 加油状态 EM_BUS_WASH_STATE emWashState; // 洗车状态 EM_BUS_CASH_STATE emCashState; // 收银状态 EM_SCHEDULE_STATE emScheduleState; // 排班状态 BYTE byReserved[1024]; // 预留字段 }NET_BUS_STATION_INFO; ///@brief 工人信息(定制) typedef struct tagNET_CUSTOM_WORKER_INFO { char szSex[8]; // 性别 char szRole[32]; // 角色 char szProjNo[32]; // 项目ID char szProjName[64]; // 项目名称 char szBuilderName[64]; // 施工单位全称 char szBuilderID[32]; // 施工单位ID char szBuilderType[32]; // 施工单位类型 char szBuliderTypeID[8]; // 施工单位类别ID char szPictureID[64]; // 人员照片ID char szContractID[16]; // 原合同系统合同编号 char szWorkerTypeID[8]; // 工种ID char szWorkerTypeName[32]; // 工种名称 BOOL bPersonStatus; // 人员状态 BOOL bProjNameEx; // szProjNameEx 是否有效,为TRUE时,szProjNameEx 有效 char szProjNameEx[256]; // 项目名称扩展字段 BYTE bReserved[1388]; // 预留字节 }NET_CUSTOM_WORKER_INFO; ///@brief 访客信息(定制) typedef struct tagNET_CUSTOM_VISITOR_INFO { char szVisitorName[128]; // 访客姓名 char szVisitorTel[32]; // 访客电话 char szVisitorStartTime[32]; // 访问开始时间 char szVisitorEndTime[32]; // 访问结束时间 char szVisitorAccessFor[256]; // 访客事由 char szVisitorCitizenID[32]; // 访客证件号 char szRespondentName[128]; // 被访者姓名 char szRespondentTel[32]; // 被访者电话 char szRespondentCompany[128]; // 被访者单位 char szRespondentSection[64]; // 被访者部门 char szReserved[1024]; // 保留字节 }NET_CUSTOM_VISITOR_INFO; ///@brief 语音类型 typedef enum tagEM_CUSTOM_MEDICAL_VOICE_TYPE { EM_CUSTOM_MEDICAL_VOICE_TYPE_UNKNOWN, // 未知 EM_CUSTOM_MEDICAL_VOICE_TYPE_1, // 门已打开,可以进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_2, // 不是本科室,不能进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_3, // 已出院,不能进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_4, // 核酸检测超期,不能进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_5, // 体温不正常,不能进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_6, // 证件信息缺失,不能进入 EM_CUSTOM_MEDICAL_VOICE_TYPE_7, // 其他问题,不能进入 }EM_CUSTOM_MEDICAL_VOICE_TYPE; ///@brief 匹配信息扩展字段 typedef struct tagNET_OPENDOOR_MATCHINFO_EX { char szUserNameEx[128]; // 扩展用户名 EM_CUSTOM_MEDICAL_VOICE_TYPE emVoiceType; // 语音类型 (医疗定制使用) NET_ANTIGEN_INFO stuAntigenInfo; // 抗原检测信息 char szVoiceTTSMessage[128]; // tts语音输出 UINT nCheckLocal; // 鉴权方式,1:设备端鉴权, 在emCompareResult为0后端鉴权成功的情况下,设备还需要二次验证, 2:后端鉴权,根据emCompareResult进行开门与否的判定条件, 255:默认鉴权,兼容历史设备 BYTE bReserved[1616]; // 预留字节 }NET_OPENDOOR_MATCHINFO_EX; ///@brief 匹配信息 typedef struct tagNET_OPENDOOR_MATCHINFO { char szUserID[32]; // 远程用户ID char szUserName[32]; // 用户名 EM_USER_TYPE emUserType; // 用户类型 char szName[64]; // 门禁名称 UINT nMatchRate; // 匹配度,范围为0-100 EM_FACE_OPEN_DOOR_TYPE emOpenDoorType; // 开门方式 NET_TIME stuActivationTime; // (卡、头像)生效日期 NET_TIME stuExpiryTime; // (卡、头像)截止日期 int nScore; // 信用积分 char szCompanyName[MAX_COMPANY_NAME_LEN]; // 单位名称 char szCompanionName[120]; // 陪同人员姓名 char szCompanionCompany[MAX_COMPANY_NAME_LEN]; // 陪同人员单位名称 char szPermissibleArea[MAX_COMMON_STRING_128]; // 准许通行区域 char szSection[200]; // 部门名称 NET_CUSTOM_EDUCATION_INFO* pstuCustomEducationInfo; // 教育信息 NET_HEALTH_CODE_INFO* pstuHealthCodeInfo; // 健康码信息 char szRoomNo[32]; // 房间号 NET_IDCARD_INFO* pstuIDCardInfo; // 证件信息 NET_BUS_STATION_INFO* pstuBusStationInfo; // 公交站信息 NET_CUSTOM_WORKER_INFO* pstuCustomWorkerInfo; // 工地工人信息 BOOL bUseMatchInfoEx; // 是否使用匹配信息扩展字段 NET_OPENDOOR_MATCHINFO_EX* pstuMatchInfoEx; // 匹配信息扩展字段 NET_HSJC_INFO* pstuHSJCInfo; // 核酸检测信息 NET_VACCINE_INFO* pstuVaccineInfo; // 接种信息 NET_TRAVEL_INFO* pstuTravelInfo; // 行程码信息 NET_CUSTOM_VISITOR_INFO* pstuCustomVisitorInfo; // 访客信息 BYTE byReserved[8]; // 预留字段 }NET_OPENDOOR_MATCHINFO; ///@brief 图片信息 typedef struct tagNET_OPENDOOR_IMAGEINFO { int nLibImageLen; // 目标库照片长度,限制为150k int nSnapImageLen; // 抓拍照片长度,限制为150k char* pLibImage; // 目标库照片,内存由用户申请 char* pSnapImage; // 抓拍照片,内存由用户申请 BYTE byReserved[1024]; // 预留字段 }NET_OPENDOOR_IMAGEINFO; ///@brief 目标识别开门输入参数 typedef struct tagNET_IN_FACE_OPEN_DOOR { DWORD dwSize; UINT nChannel; // 门通道号 EM_COMPARE_RESULT emCompareResult; // 比对结果 NET_OPENDOOR_MATCHINFO stuMatchInfo; // 匹配信息 NET_OPENDOOR_IMAGEINFO stuImageInfo; // 图片信息 }NET_IN_FACE_OPEN_DOOR; ///@brief 目标识别开门输出参数 typedef struct tagNET_OUT_FACE_OPEN_DOOR { DWORD dwSize; }NET_OUT_FACE_OPEN_DOOR; ///@brief 远程认证开门(闸机) CLIENT_NET_API BOOL CALL_METHOD CLIENT_FaceOpenDoor(LLONG lLoginID, NET_IN_FACE_OPEN_DOOR* pInParam, NET_OUT_FACE_OPEN_DOOR* pOutParam,int nWaitTime); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///@brief 分区状态 typedef enum tagEM_LOGIC_VOLUME_STATUS { EM_LOGIC_VOLUME_STATUS_UNKNOWN = -1, // 未知 EM_LOGIC_VOLUME_STATUS_NOT_NEED_REPAIR, // 没有分区需要修复 EM_LOGIC_VOLUME_STATUS_LV_NEED_REPAIR, // 有分区需要修复 EM_LOGIC_VOLUME_STATUS_LV_REPAIRING, // 分区正在修复 EM_LOGIC_VOLUME_STATUS_LV_REPAIR_COMPLETE, // 分区已经修复完成 }EM_LOGIC_VOLUME_STATUS; ///@brief CLIENT_NASGetLogicVolumeStatus接口入参 typedef struct tagNET_IN_NAS_GETLOGICVOLUMESTATUS { DWORD dwSize; // 结构体大小 }NET_IN_NAS_GETLOGICVOLUMESTATUS; ///@brief CLIENT_NASGetLogicVolumeStatus接口出参 typedef struct tagNET_OUT_NAS_GETLOGICVOLUMESTATUS { DWORD dwSize; // 结构体大小 EM_LOGIC_VOLUME_STATUS emLVStatus; // 分区状态 char szLvName[MAX_LV_NAME_NUM][MAX_LV_NAME_LEN]; // 分区名称,当emLVStatus为EM_LOGIC_VOLUME_STATUS_LV_NEED_REPAIR或EM_LOGIC_VOLUME_STATUS_LV_REPAIRING时有效 int nRetLvNameNum; // 返回的分区名称个数 }NET_OUT_NAS_GETLOGICVOLUMESTATUS; ///@brief 获取分区状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NASGetLogicVolumeStatus(LLONG lLoginID, const NET_IN_NAS_GETLOGICVOLUMESTATUS *pInParam, NET_OUT_NAS_GETLOGICVOLUMESTATUS *pOutParam, int nWaitTime); ///@brief 分区修复状态 typedef enum tagEM_LOGIC_VOLUME_REPAIR_STATUS { EM_LOGIC_VOLUME_REPAIR_STATUS_UNKNOWN = -1, // 未知 EM_LOGIC_VOLUME_REPAIR_STATUS_FAILED, // 修复失败 EM_LOGIC_VOLUME_REPAIR_STATUS_SUCCESS, // 修复成功 }EM_LOGIC_VOLUME_REPAIR_STATUS; ///@brief 分区信息 typedef struct tagNET_LV_STATE { EM_LOGIC_VOLUME_REPAIR_STATUS emLVRepairStatus; // 修复状态 char szLvName[MAX_LV_NAME_NUM][MAX_LV_NAME_LEN]; // 分区名称 int nRetLvNameNum; // 返回的分区名称个数 BYTE byReserved[1024]; // 保留 }NET_LV_STATE; ///@brief 分区修复状态回调函数原形,lAttachHandle 是 CLIENT_AttachNASRepairState 返回值 typedef void (CALLBACK *fLVRepairStateCallBack) (LLONG lAttachHandle, NET_LV_STATE* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief CLIENT_AttachNASRepairState接口入参 typedef struct tagNET_IN_ATTACH_NAS_REPAIRSTATE { DWORD dwSize; // 结构体大小 fLVRepairStateCallBack cbLVRepairState; // 分区修复状态回调 BYTE byReserved[4]; // 预留对齐字节 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_NAS_REPAIRSTATE; ///@brief CLIENT_AttachNASRepairState接口出参 typedef struct tagNET_OUT_ATTACH_NAS_REPAIRSTATE { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_NAS_REPAIRSTATE; ///@brief 订阅分区修复状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNASRepairState(LLONG lLoginID, const NET_IN_ATTACH_NAS_REPAIRSTATE* pInParam, NET_OUT_ATTACH_NAS_REPAIRSTATE* pOutParam, int nWaitTime); ///@brief 取消订阅分区修复状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNASRepairState(LLONG lAttachHandle); ///@brief 文件查询结果 typedef struct tagNET_FILE_FINEDER { unsigned int nRetFileListsCount; // 实际返回的文件名条数 char szFileLists[MAX_FILE_LIST_NUM][MAX_FILE_LIST_LEN]; // 查找结果文件名列表 BOOL bFindFinished; // 是否查找完成,TRUE表示查找完成,FALSE表示正在查找 BYTE byReserved[1024]; // 保留字节 }NET_FILE_FINEDER; ///@brief 异步查找文件回调函数原形,lAttachHandle 是 CLIENT_AttachNASFileFinder 返回值 typedef void (CALLBACK *fNasFileFinderCallback) (LLONG lAttachHandle, NET_FILE_FINEDER* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief CLIENT_AttachNASFileFinder接口入参 typedef struct tagNET_IN_ATTACHNASFILEFINDER { DWORD dwSize; // 结构体大小 int nFindPathsNum; // 请求的查找路径个数 char szFindPaths[MAX_FILE_FINDER_PATH_NUM][MAX_FILE_FINDER_PATH_LEN]; // 查找路径名列表 char szKey[MAX_KEY_LEN]; // 查找的关键字 unsigned int nOffset; // 查找偏移量 unsigned int nCount; // 查找数量 fNasFileFinderCallback cbNasFileFinder; // 查找文件结果回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACHNASFILEFINDER; ///@brief CLIENT_AttachNASFileFinder接口出参 typedef struct tagNET_OUT_ATTACHNASFILEFINDER { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACHNASFILEFINDER; ///@brief 异步查找文件 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachNASFileFinder(LLONG lLoginID, const NET_IN_ATTACHNASFILEFINDER* pInParam, NET_OUT_ATTACHNASFILEFINDER* pOutParam, int nWaitTime); ///@brief 取消异步查找文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachNASFileFinder(LLONG lAttachHandle); ///@brief 回放回调码流类型 typedef enum tagEM_PLAYBACK_STREAM_TYPE { EM_PLAYBACK_STREAM_TYPE_UNKNOWN = -1, // 未知 EM_PLAYBACK_STREAM_TYPE_ORIGINAL_STREAM, // 只回调原始码流 EM_PLAYBACK_STREAM_TYPE_MAX, // 最大值 }EM_PLAYBACK_STREAM_TYPE; ///@brief 设置回放回调码流类型 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayBackStreamType(LLONG lLoginID, EM_PLAYBACK_STREAM_TYPE emStreamType); ///@brief CLIENT_GetFingerprintCaps接口入参 typedef struct tagNET_IN_GET_FINGERPRINTCAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_FINGERPRINTCAPS; ///@brief CLIENT_GetFingerprintCaps接口出参 typedef struct tagNET_OUT_GET_FINGERPRINTCAPS { DWORD dwSize; // 结构体大小 BOOL bSupportFingerprint; // 是否支持信息, TRUE:支持; FALSE:不支持 }NET_OUT_GET_FINGERPRINTCAPS; ///@brief 获取信息能力 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFingerprintCaps(LLONG lLoginID, NET_IN_GET_FINGERPRINTCAPS* pInParam, NET_OUT_GET_FINGERPRINTCAPS* pOutParam, int nWaitTime); ///@brief 设备程序所在的市场区域 typedef enum tagEM_DEVICE_MARKET_AREA { EM_DEVICE_MARKET_AREA_UNKNOWN, // 未知 EM_DEVICE_MARKET_AREA_MAINLAND, // 国内 EM_DEVICE_MARKET_AREA_OVERSEA, // 海外 }EM_DEVICE_MARKET_AREA; ///@brief CLIENT_GetMarketArea接口入参 typedef struct tagNET_IN_GET_MARKET_AREA { DWORD dwSize; // 结构体大小 }NET_IN_GET_MARKET_AREA; ///@brief CLIENT_GetMarketArea接口出参 typedef struct tagNET_OUT_GET_MARKET_AREA { DWORD dwSize; // 结构体大小 EM_DEVICE_MARKET_AREA emMarketArea; // 市场区域 }NET_OUT_GET_MARKET_AREA; ///@brief 得到市场区域 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMarketArea(LLONG lLoginID, const NET_IN_GET_MARKET_AREA* pInParam, NET_OUT_GET_MARKET_AREA* pOutParam, int nWaitTime); /////////////////////////////雷球联动接口 start////////////////////////////// ///@brief 雷达开始升级通知入参(对应 EM_RADAR_OPERATE_TYPE_STARTUPGRADE) typedef struct tagNET_IN_RADAR_STARTUPGRADE { DWORD dwSize; // 结构体大小 }NET_IN_RADAR_STARTUPGRADE; ///@brief 雷达开始升级通知出参(对应 EM_RADAR_OPERATE_TYPE_STARTUPGRADE) typedef struct tagNET_OUT_RADAR_STARTUPGRADE { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_STARTUPGRADE; ///@brief 获取雷达能力入参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS) typedef struct tagNET_IN_RADAR_GETCAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szRadarIP[32]; // 雷达ip }NET_IN_RADAR_GETCAPS; ///@brief 雷达功率配置能力 typedef struct tagNET_RADAR_CAPACITY_CAP { BOOL bSupport; // 是否支持该能力 int nListNum; // 探测距离列表的有效数据个数 int nDistanceList[24]; // 配置时可选的探测距离列表 BYTE byReserved[224]; // 预留 }NET_RADAR_CAPACITY_CAP; ///@brief 雷达场景配置能力 typedef struct tagNET_RADAR_SCENE_CAP { BOOL bSupport; // 是否支持该能力 BYTE byReserved[252]; // 预留 }NET_RADAR_SCENE_CAP; ///@brief 雷达信道配置能力 typedef struct tagNET_RADAR_CHANNEL_CAP { BOOL bSupport; // 是否支持该能力 int nListNum; // 信道号列表的有效数据个数 int nChannelList[24]; // 配置时可选的信道号列表 BYTE byReserved[224]; // 预留 }NET_RADAR_CHANNEL_CAP; ///@brief 雷达场景变更能力 typedef struct tagNET_RADAR_MOVEDDETECT_CAP { BOOL bSupport; // 是否支持该能力 BYTE byReserved[252]; // 预留 }NET_RADAR_MOVEDDETECT_CAP; ///@brief 雷达控制盒支持的协议能力信息 typedef struct tagNET_RADAR_PROTOCAL_CAP { BOOL bSupport; // 是否支持切换协议能力 UINT nProtocalNum; // 支持的协议类型个数, 即szPtotoList 数组的有效元素个数 char szPtotoList[10][32]; // 雷达控制盒支持的协议列表 int nLongitude; // 经度,用整型传输,放大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 int nLatitude; // 纬度,用整型传输,放大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 int nAngle; // 雷达地图朝向角,放大100倍,例如112897,实际是128.97度 BYTE byReserved[1020]; // 预留字节 } NET_RADAR_PROTOCAL_CAP; ///@brief 设备程序所在的雷达区域 typedef enum tagEM_RADAR_GETCAPS_AREASUB_TYPE { EM_RADAR_GETCAPS_AREASUB_TYPE_UNKNOWN, // 未知 EM_RADAR_GETCAPS_AREASUB_TYPE_SECTOR, // 扇形 EM_RADAR_GETCAPS_AREASUB_TYPE_ELLIPSE, // 椭圆 }EM_RADAR_GETCAPS_AREASUB_TYPE; ///@brief 雷达类型 typedef enum tagEM_RADAR_GETCAPS_RADAR_TYPE { EM_RADAR_GETCAPS_RADAR_TYPE_UNKNOWN, // 未知 EM_RADAR_GETCAPS_RADAR_TYPE1, // 单IP雷达 EM_RADAR_GETCAPS_RADAR_TYPE2, // 雷达控制盒 EM_RADAR_GETCAPS_RADAR_TYPE3, // 端站一体机 EM_RADAR_GETCAPS_RADAR_TYPE4, // 室内雷达 EM_RADAR_GETCAPS_RADAR_TYPE5, // 体征雷达 }EM_RADAR_GETCAPS_RADAR_TYPE; ///@brief 获取雷达能力出参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS) typedef struct tagNET_OUT_RADAR_GETCAPS { DWORD dwSize; // 结构体大小 int nDetectionRange; // 雷达探测距离,实际距离扩大100倍,单位米 int nDetectionAngle; // 雷达探测角度,实际角度扩大100倍,单位度 int nDetectionHuman; // 雷达人探测距离,实际距离扩大100倍,单位米 BOOL bExValid; // 下列扩展能力是否有效(老设备不支持获取下列能力,从而无法用于判断是否支持下列能力) NET_RADAR_CAPACITY_CAP stuCapacityCap; // 雷达功率配置能力 NET_RADAR_SCENE_CAP stuSceneCap; // 雷达场景配置能力 NET_RADAR_CHANNEL_CAP stuChannelCap; // 雷达信道配置能力 NET_RADAR_MOVEDDETECT_CAP stuMovedDetectCap; // 雷达场景变更能力 NET_RADAR_PROTOCAL_CAP stuProtocalCap; // 雷达控制盒支持的协议能力 EM_RADAR_GETCAPS_AREASUB_TYPE emAreaSubType; // 雷达探测范围形状 EM_RADAR_GETCAPS_RADAR_TYPE emRadarType; // 雷达类型 }NET_OUT_RADAR_GETCAPS; ///@brief 获取雷达状态入参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS) typedef struct tagNET_IN_RADAR_GETSTATUS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_RADAR_GETSTATUS; ///@brief 雷达状态 typedef enum tagEM_RADAR_STATUS { EM_RADAR_STATUS_UNKNOWN, // 未知 EM_RADAR_STATUS_NORMAL, // 正常 EM_RADAR_STATUS_ABNORMAL, // 异常 }EM_RADAR_STATUS; ///@brief 获取雷达状态出参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS) typedef struct tagNET_OUT_RADAR_GETSTATUS { DWORD dwSize; // 结构体大小 EM_RADAR_STATUS emRadarStatus; // 雷达状态 }NET_OUT_RADAR_GETSTATUS; ///@brief 图片中线段的像素坐标 typedef struct tagNET_RADAR_PIXELLINE { int nLeftX; // 左顶点的X坐标 int nLeftY; // 左顶点的Y坐标 int nRightX; // 右顶点的X坐标 int nRightY; // 右顶点的Y坐标 BYTE byReserved[64]; // 保留字节 }NET_RADAR_PIXELLINE; ///@brief 计算图片对应的地图实际长度入参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE) typedef struct tagNET_IN_RADAR_CALCULATEREALSIZE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 NET_RADAR_PIXELLINE stuPixelLine; // 图片中线段的像素坐标 double dDistance; // 图片中线段代表的实际长度,单位米 }NET_IN_RADAR_CALCULATEREALSIZE; ///@brief 计算图片对应的地图实际长度出参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE) typedef struct tagNET_OUT_RADAR_CALCULATEREALSIZE { DWORD dwSize; // 结构体大小 int nRealMapLength; // 实际地图的高度,单位米(实际长度扩大100倍表示) int nRealMapWidth; // 实际地图的宽度,单位米(实际宽度扩大100倍表示) }NET_OUT_RADAR_CALCULATEREALSIZE; ///@brief 图片中校准点的像素坐标 typedef struct tagNET_RADAR_PIXELPOINT { int nPixelPointX; // X像素坐标区间[0,8191] int nPixelPointY; // Y像素坐标区间[0,8191] }NET_RADAR_PIXELPOINT; ///@brief 雷球校准配置入参(对应 EM_RADAR_OPERATE_TYPE_SETCALIBRATION) typedef struct tagNET_IN_RADAR_SETCALIBRATION { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 保留字节 NET_RADAR_PIXELPOINT stuPixelPoint; // 图片中校准点的像素坐标 double dInstallHeigt; // 球机的安装高度,单位米 }NET_IN_RADAR_SETCALIBRATION; ///@brief 雷球校准配置出参(对应 EM_RADAR_OPERATE_TYPE_SETCALIBRATION) typedef struct tagNET_OUT_RADAR_SETCALIBRATION { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_SETCALIBRATION; ///@brief 雷达操作类型 typedef enum tagEM_RADAR_OPERATE_TYPE { EM_RADAR_OPERATE_TYPE_STARTUPGRADE = 0, // 雷达开始升级通知,入参:NET_IN_RADAR_STARTUPGRADE,出参:NET_OUT_RADAR_STARTUPGRADE EM_RADAR_OPERATE_TYPE_GETCAPS = 1, // 获取雷达能力,入参:NET_IN_RADAR_GETCAPS,出参:NET_OUT_RADAR_GETCAPS EM_RADAR_OPERATE_TYPE_GETSTATUS = 2, // 获取雷达状态,入参:NET_IN_RADAR_GETSTATUS,出参:NET_OUT_RADAR_GETSTATUS EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE = 3, // 计算图片对应的地图实际长度,入参:NET_IN_RADAR_CALCULATEREALSIZE,出参:NET_OUT_RADAR_CALCULATEREALSIZE EM_RADAR_OPERATE_TYPE_SETCALIBRATION = 4, // 雷球校准配置下发,入参:NET_IN_RADAR_SETCALIBRATION,出参:NET_OUT_RADAR_SETCALIBRATION }EM_RADAR_OPERATE_TYPE; ///@brief 雷达操作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadarOperate(LLONG lLoginID, EM_RADAR_OPERATE_TYPE emType, void* pInBuf, void* pOutBuf, int nWaitTime); #define NET_RADAR_MAX_NUM_ALARMPOINT 64 // 雷达报警点的最大数量 ///@brief 点类型的掩码 typedef enum tagEM_RADAR_POINTTYPE { EM_RADAR_POINTTYPE_UNKNOWN, // 未知 EM_RADAR_POINTTYPE_ALARMPOINT, // 当前点是报警区的报警点 EM_RADAR_POINTTYPE_LINKMONITORPOINT, // 当前点是正在被联动监控的点 EM_RADAR_POINTTYPE_DISAPPEARTRACKPOINT, // 当前点是消失的轨迹点 }EM_RADAR_POINTTYPE; ///@brief 点所指对象的类型的掩码 typedef enum tagEM_RADAR_OBJECTTYPE { EM_RADAR_OBJECTTYPE_UNKNOWN, // 未识别目标 EM_RADAR_OBJECTTYPE_PERSON, // 目标为人 EM_RADAR_OBJECTTYPE_VEHICLE, // 目标为交通工具 EM_RADAR_OBJECTTYPE_TREE, // 目标为树 EM_RADAR_OBJECTTYPE_BUILIDING, // 目标为建筑物 EM_RADAR_OBJECTTYPE_SCREEN, // 目标为屏幕 EM_RADAR_OBJECTTYPE_ANIMAL, // 目标为动物 EM_RADAR_OBJECTTYPE_BIG_SHIP, // 目标为大船 EM_RADAR_OBJECTTYPE_MID_SHIP, // 目标为中船 EM_RADAR_OBJECTTYPE_SMALL_SHIP, // 目标为小船 EM_RADAR_OBJECTTYPE_STATIONARY_TARGET_TYPE, // 目标为静止目标类型 }EM_RADAR_OBJECTTYPE; ///@brief 单个雷达报警点信息 typedef struct tagNET_RADAR_ALARMPOINT_INFO { EM_RADAR_POINTTYPE emPointType; // 点类型的掩码,该字段废弃,请不要使用,请使用nPointType int nPointType; // 点类型的掩码 //bit0:无效 //bit1:当前点是消失的轨迹点 //bit2:当前点是正在被联动监控的点 //bit3:当前点是报警区的报警点 //备注:点的状态可能有多个,例如值为0xC时,表示当前的点既是正在被联动监控的点,又是报警区的报警点 int nRegionNumber; // 当前点所属的防区编号,范围[0,10]([1,10]为防区编号,0表示当前点不属于任何一个防区) EM_RADAR_OBJECTTYPE emObjectType; // 点所指对象的类型的掩码 int nTrackID; // 点所属的轨迹号,范围[0,63] int nDistance; // 当前点像素极坐标值-距离,实际长度扩大100倍的结果,单位米 int nAngle; // 当前点像素极坐标值-角度,实际角度扩大100倍的结果,单位度 int nSpeed; // 当前点速度,扩大100倍的结果,单位米/秒 int nLongitude; // 经度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 int nLatitude; // 纬度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 char szTrackerIP[16]; // 正在跟踪目标的球机的IP地址 BYTE byReserved[488]; // 保留字节 }NET_RADAR_ALARMPOINT_INFO; ///@brief 雷达规则信息 typedef struct tagNET_RADAR_RULE_INFO { int nRuleID; // 规则编号 int nPointNumber; // 规则内轨迹数量 UINT nTrackerIP; // 正在跟踪目标的球机, 0 为无效值 char byReserved[60]; // 保留字节 } NET_RADAR_RULE_INFO; ///@brief 上报的雷达报警点信息 typedef struct tagNET_RADAR_NOTIFY_ALARMPOINTINFO { int nNumAlarmPoint; // 雷达报警点的数量 NET_RADAR_ALARMPOINT_INFO stuAlarmPoint[NET_RADAR_MAX_NUM_ALARMPOINT]; // 雷达报警点信息 int nChannel; // 通道号 UINT nRuleNum; // 规则数量 NET_RADAR_RULE_INFO stuRuleInfo[10]; // 雷达规则信息 NET_TIME stuRealUTC; // 雷达设备识别到目标上报的时间,时间是标准UTC时间 BYTE byReserved[272]; // 保留字节 }NET_RADAR_NOTIFY_ALARMPOINTINFO; ///@brief 雷达报警点信息回调函数指针 typedef void (CALLBACK *fRadarAlarmPointInfoCallBack) (LLONG lLoginId, LLONG lAttachHandle, const NET_RADAR_NOTIFY_ALARMPOINTINFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief 订阅雷达的报警点信息入参(对应接口 CLIENT_AttachRadarAlarmPointInfo) typedef struct tagNET_IN_RADAR_ALARMPOINTINFO { DWORD dwSize; // 结构体大小 fRadarAlarmPointInfoCallBack cbAlarmPointInfo; // 雷达报警点信息回调 LDWORD dwUser; // 用户数据 int nChannel; // 通道号 }NET_IN_RADAR_ALARMPOINTINFO; ///@brief 订阅雷达的报警点信息出参(对应接口 CLIENT_AttachRadarAlarmPointInfo) typedef struct tagNET_OUT_RADAR_ALARMPOINTINFO { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_ALARMPOINTINFO; ///@brief 订阅雷达的报警点信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRadarAlarmPointInfo(LLONG lLoginID, const NET_IN_RADAR_ALARMPOINTINFO * pstInParam, NET_OUT_RADAR_ALARMPOINTINFO* pstOutParam, int nWaitTime); ///@brief 取消订阅雷达的报警点信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRadarAlarmPointInfo(LLONG lAttachHandle); ///@brief mini雷达报警点信息 typedef struct tagNET_MINI_RADAR_ALARMPOINT_INFO { UINT nHeartRate; // 心率值(生命体征雷达使用) UINT nBreathe; // 呼吸值(生命体征雷达使用) BOOL bGetUpStatus; // 起身状态(生命体征雷达使用) BOOL bAFBStatus; // 离床状态(生命体征雷达使用) BOOL bTurnOverStatus; // 翻身状态(生命体征雷达使用) UINT nSleepQuality; // 睡眠质量(生命体征雷达使用) BOOL bPosture; // 摔倒状态(室内雷达) UINT nNum; // 人数(室内雷达) int nId; // 目标ID,0-31,室内雷达使用 int nXPosNum; // 位置信息x个数 int nXPos[32]; // 位置信息x,单位米。扩大100倍,最多32人 int nYPosNum; // 位置信息y个数 int nYPos[32]; // 位置信息y,单位米。扩大100倍,最多32人 int nSpeedNum; // 速度个数 int nSpeed[32]; // 速度 m/s,100倍,最多32人 int nTypeNum; // 人员类型个数 int nType[32]; // 人员类型:大人、小孩 UINT nHeartRateLevel; // 广告机专用;1-5,最多支持5个等级 UINT nDistance; // 广告机专用;人与广告机的距离,单位米,扩大100倍 int nGetUpTimes; // 人员在床时的起身次数, 人员离床时为0(生命体征雷达使用) int nTurnTimes; // 人员在床时的翻身次数, 人员离床时为0(生命体征雷达使用) char szReserved[248]; // 保留字节 }NET_MINI_RADAR_ALARMPOINT_INFO; ///@brief 防区信息 typedef struct tagNET_RADAR_REGION_INFO { int nRegionID; // 防区ID 1:设备右前方; 2:设备左前方; 3:设备左后方; 4:设备右后方 BOOL bAction; // TRUE:开始 FALSE:停止 char byReserved[24]; // 保留字节 } NET_RADAR_REGION_INFO; ///@brief 上报的mini雷达报警点信息 typedef struct tagNET_MINI_RADAR_NOTIFY_ALARMPOINTINFO { UINT nSID; // 订阅的SID int nAlarmPointNum; // mini雷达报警点的数量 NET_MINI_RADAR_ALARMPOINT_INFO stuAlarmPoint[64]; // mini雷达报警点信息 int nRegionRealNum; // 防区信息真实数量 NET_RADAR_REGION_INFO stuRegionInfo[4]; // 防区信息 char szReserved[124]; // 保留字节 }NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO; ///@brief mini雷达报警点信息回调函数指针 typedef void (CALLBACK *fMiniRadarAlarmPointInfoCallBack) (LLONG lLoginId, LLONG lAttachHandle, const NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief 订阅mini雷达的报警点信息入参(对应接口 CLIENT_AttachMiniRadarAlarmPointInfo) typedef struct tagNET_IN_MINI_RADAR_ALARMPOINTINFO { DWORD dwSize; // 结构体大小 fMiniRadarAlarmPointInfoCallBack cbAlarmPointInfo; // 雷达报警点信息回调 LDWORD dwUser; // 用户数据 }NET_IN_MINI_RADAR_ALARMPOINTINFO; ///@brief 订阅mini雷达的报警点信息出参(对应接口 CLIENT_AttachMiniRadarAlarmPointInfo) typedef struct tagNET_OUT_MINI_RADAR_ALARMPOINTINFO { DWORD dwSize; // 结构体大小 UINT nSID; // 订阅的SID }NET_OUT_MINI_RADAR_ALARMPOINTINFO; ///@brief 订阅mini雷达的报警点信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachMiniRadarAlarmPointInfo(LLONG lLoginID, const NET_IN_MINI_RADAR_ALARMPOINTINFO * pstuInParam, NET_OUT_MINI_RADAR_ALARMPOINTINFO* pstuOutParam, int nWaitTime); ///@brief 取消订阅mini雷达的报警点信息 ///@param[in] lAttachHandle 订阅接口返回句柄 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachMiniRadarAlarmPointInfo(LLONG lAttachHandle); ///@brief 获取雷达联动的远程球机状态输入参数 typedef struct tagNET_IN_RADAR_GET_LINKSTATE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nSDLinkNum; // 待查的联动设备ip个数(当个数为0时,会返回当前设备所有的联动设备状态) char szSDLinkIP[MAX_RADAR_SD_NUM][32];//待查联动设备ip数组 }NET_IN_RADAR_GET_LINKSTATE; ///@brief 联动设备状态 typedef enum tagNET_EM_RADAR_LINK_SD_STATE { NET_EM_RADAR_LINK_SD_STATE_UNKNOWN = -1, // 未知 NET_EM_RADAR_LINK_SD_STATE_NORMAL, // 正常 NET_EM_RADAR_LINK_SD_STATE_TIMEOUT, // 超时 NET_EM_RADAR_LINK_SD_STATE_OFFLINE, // 离线 NET_EM_RADAR_LINK_SD_STATE_NOT_LINK, // 未连接 }NET_EM_RADAR_LINK_SD_STATE; ///@brief 联动设备状态信息 typedef struct tagNET_LINKSTATE_INFO { char szSDLinkIP[32]; // 联动设备ip NET_EM_RADAR_LINK_SD_STATE emState; // 联动设备状态 int nVirtualChannel; // 虚拟视频通道号,用于雷达控多球,通道号1开始 BYTE byReserved[1020]; // 保留 }NET_LINKSTATE_INFO; ///@brief 获取雷达联动的远程球机状态输出参数 typedef struct tagNET_OUT_RADAR_GET_LINKSTATE { DWORD dwSize; // 结构体大小 int nSDLinkNum; // 联动设备个数 NET_LINKSTATE_INFO stuSDLinkState[MAX_RADAR_SD_NUM];// 联动设备状态信息 }NET_OUT_RADAR_GET_LINKSTATE; ///@brief 待添加的远程联动设备连接信息 typedef struct tagNET_RADARLINKDEVICE_ADD_INFO { char szSDLinkIP[32]; // 被控制的设备ip char szUserName[128]; // 用户名 char szPassword[32]; // 密码 int nPort; // 服务端口 BYTE byReserved[316]; // 保留 }NET_RADARLINKDEVICE_ADD_INFO; ///@brief CLIENT_AddRadarLinkSD接口入参 typedef struct tagNET_IN_RADAR_ADD_RADARLINKSD { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_RADARLINKDEVICE_ADD_INFO stuDevices[MAX_RADAR_SD_NUM]; // 联动球机数组 int nDevicesNum; // 有效数据个数 }NET_IN_RADAR_ADD_RADARLINKSD; ///@brief 错误码 typedef enum tagNET_EM_RADARLINKDEVICE_ADD_ERRORCODE { EM_EM_RADARLINKDEVICE_ADD_UNKNOWN = -1, // 未知 EM_EM_RADARLINKDEVICE_ADD_SUCCESS = 0, // 正常 EM_EM_RADARLINKDEVICE_ADD_TIMEOUT, // 超时 EM_EM_RADARLINKDEVICE_ADD_ACCOUNTERROR, // 用户名或者密码错误 EM_EM_RADARLINKDEVICE_ADD_NOTSUPPORT, // 设备不支持联动 }NET_EM_RADARLINKDEVICE_ADD_ERRORCODE; ///@brief 添加联动球机接口返回的结果 typedef struct tagNET_RADARLINKDEVICE_ADD_RESULT { NET_EM_RADARLINKDEVICE_ADD_ERRORCODE emErrorCode; // 错误码 BYTE byReserved[252]; // 保留 }NET_RADARLINKDEVICE_ADD_RESULT; ///@brief CLIENT_AddRadarLinkSD接口出参 typedef struct tagNET_OUT_RADAR_ADD_RADARLINKSD { DWORD dwSize; // 结构体大小 int nRetResultNum; // 有效数据个数 NET_RADARLINKDEVICE_ADD_RESULT stuAddResult[MAX_RADAR_SD_NUM]; // 添加结果,下标对应入参中的设备信息 }NET_OUT_RADAR_ADD_RADARLINKSD; ///@brief 待删除的远程联动设备信息 typedef struct tagNET_RADARLINKDEVICE_DEL_INFO { char szSDLinkIP[32]; // 被控制的设备ip BYTE byReserved[224]; // 保留 }NET_RADARLINKDEVICE_DEL_INFO; ///@brief CLIENT_DelRadarLinkSD接口入参 typedef struct tagNET_IN_RADAR_DEL_RADARLINKSD { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_RADARLINKDEVICE_DEL_INFO stuDevices[MAX_RADAR_SD_NUM]; // 联动球机数组 int nDevicesNum; // 有效数据个数,为0表示删除所有联动设备 }NET_IN_RADAR_DEL_RADARLINKSD; ///@brief CLIENT_DelRadarLinkSD接口出参 typedef struct tagNET_OUT_RADAR_DEL_RADARLINKSD { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_DEL_RADARLINKSD; ///@brief CLIENT_RadarManualLocate接口入参 typedef struct tagNET_IN_RADAR_MANUAL_LOCATE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 NET_POINT stuLocatePoint; // 定位点的像素坐标 }NET_IN_RADAR_MANUAL_LOCATE; ///@brief CLIENT_RadarManualLocate接口出参 typedef struct tagNET_OUT_RADAR_MANUAL_LOCATE { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_MANUAL_LOCATE; ///@brief 卡片行为 typedef enum tagNET_EM_RADAR_RFIDCARD_ACTION { EM_RADAR_RFIDCARD_ACTION_UNKNOWN = 0, // 未知 EM_RADAR_RFIDCARD_ACTION_LEAVE, // 卡片离开 EM_RADAR_RFIDCARD_ACTION_ENTER, // 卡片进入 }NET_EM_RADAR_RFIDCARD_ACTION; ///@brief RFID卡片信息 typedef struct tagNET_RADAR_RFIDCARD_INFO { char szCardID[24]; // 卡片ID NET_EM_RADAR_RFIDCARD_ACTION emCardAction; // 卡片行为 UINT nCardEntryTime; // 卡片进入时间的UTC时间戳 UINT nCardQuitTime; // 卡片离开时间的UTC时间戳,卡片未离开则为0 BYTE byReserved[116]; // 保留字节 }NET_RADAR_RFIDCARD_INFO; ///@brief 上报的雷达RFID信息 typedef struct tagNET_RADAR_NOTIFY_RFIDCARD_INFO { int nChannel; int nCardNum; NET_RADAR_RFIDCARD_INFO stuCardInfo[256]; // RFID卡片信息 BYTE byReserved[1024]; // 保留字节 }NET_RADAR_NOTIFY_RFIDCARD_INFO; ///@brief 雷达RFID信息回调函数指针 typedef void (CALLBACK *fRadarRFIDCardInfoCallBack) (LLONG lLoginId, LLONG lAttachHandle, const NET_RADAR_NOTIFY_RFIDCARD_INFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief CLIENT_AttachRadarRFIDCardInfo接口入参 typedef struct tagNET_IN_ATTACH_RADAR_RFIDCARD_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 fRadarRFIDCardInfoCallBack cbRFIDCardInfo; // 雷达RFIDCard信息回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_RADAR_RFIDCARD_INFO; ///@brief CLIENT_AttachRadarRFIDCardInfo接口出参 typedef struct tagNET_OUT_ATTACH_RADAR_RFIDCARD_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_RADAR_RFIDCARD_INFO; ///@brief CLIENT_GetRadarRFIDMode接口入参 typedef struct tagNET_IN_RADAR_GET_RFID_MODE { DWORD dwSize; // 结构体大小 }NET_IN_RADAR_GET_RFID_MODE; ///@brief CLIENT_GetRadarRFIDMode接口出参 typedef struct tagNET_OUT_RADAR_GET_RFID_MODE { DWORD dwSize; // 结构体大小 int nMode; // RFID规则模式,0:设备单独工作时使用,全部为有效卡;1:平台接入时使用,区分RFID卡片有效性 }NET_OUT_RADAR_GET_RFID_MODE; ///@brief CLIENT_SetRadarRFIDMode接口入参 typedef struct tagNET_IN_RADAR_SET_RFID_MODE { DWORD dwSize; // 结构体大小 int nMode; // RFID规则模式,0:设备单独工作时使用,全部为有效卡;1:平台接入时使用,区分RFID卡片有效性 }NET_IN_RADAR_SET_RFID_MODE; ///@brief CLIENT_SetRadarRFIDMode接口出参 typedef struct tagNET_OUT_RADAR_SET_RFID_MODE { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_SET_RFID_MODE; ///@brief 地图构建设备返回信息 typedef struct tagNET_MAP_BUILDING_INFO { char szRadarIP[32]; // 设备IP NET_EM_RADAR_LINK_SD_STATE emState; // 设备状态 char szReserved[252]; // 保留字节 } NET_MAP_BUILDING_INFO ; ///@brief CLIENT_MapRadarBuilding接口入参 typedef struct tagNET_IN_RADAR_MAP_BUILDING { DWORD dwSize; // 结构体大小 int nCount; // 激光雷达设备个数 char szRadarIP[24][32]; // 激光雷达设备IP, 如果数组为空或字段不存在, 默认所有激光雷达都地图构建 int nAction[24]; // 地图构建的操作类型,大小跟szRadarIP保持一致,0表示开始地图构建,1表示取消地图构建 }NET_IN_RADAR_MAP_BUILDING; ///@brief CLIENT_MapRadarBuilding接口出参 typedef struct tagNET_OUT_RADAR_MAP_BUILDING { DWORD dwSize; // 结构体大小 int nCount; // 返回设备信息个数 NET_MAP_BUILDING_INFO stuMapInfo[24]; // 设备信息 }NET_OUT_RADAR_MAP_BUILDING; ///@brief CLIENT_RadarManualTrack接口入参 typedef struct tagNET_IN_RADAR_MANUAL_TRACK { DWORD dwSize; // 结构体大小 char szSDIP[32]; // 需要跟踪的球机 int nTrackID; // 需要跟踪目标的轨迹号 int nTime; // 跟踪时间,单位为s int nAction; // 跟踪动作, 0:停止手动跟踪, 1:开始手动跟踪 int arrCoordinate[2]; // 经纬度坐标,用整型传输,扩大1000000倍,小数点后6位有效,数组0表示经度,数组1表示纬度 int nAlarmType; // 手动跟踪的原因, bit0表示超速 bit1表示是否AIS匹配 bit2表示是否禁行 bit3表示是否逆行 (bit位置1表示需要手动跟踪,全0表示普通跟踪命令) int nSpeed; // 航速:要跟踪目标的速度,单位km/h 扩大10000 倍下发(精度0.0001) int nAzimuth; // 航向:正北方向为0° 顺时针为正 0-360°,扩大100倍下发 } NET_IN_RADAR_MANUAL_TRACK; ///@brief CLIENT_RadarManualTrack接口出参 typedef struct tagNET_OUT_RADAR_MANUAL_TRACK { DWORD dwSize; // 结构体大小 char szSDIP[32]; // 返回被跟踪轨迹对应的球机ip int nEventID; // 返回被跟踪目标的一个全局唯一id }NET_OUT_RADAR_MANUAL_TRACK; ///@brief 上报的雷达AIS信息 typedef struct tagNET_RADAR_NOTIFY_AIS_INFO { int nDataLength; // AIS数据大小 UINT nData[512]; // AIS数据数组 int nSID; // 订阅ID BYTE byReserved[1024]; // 保留字节 }NET_RADAR_NOTIFY_AIS_INFO; ///@brief 雷达AIS信息回调函数指针 typedef void (CALLBACK *fRadarAISInfoCallBack) (LLONG lLoginId, LLONG lAttachHandle, const NET_RADAR_NOTIFY_AIS_INFO* pBuf, DWORD dwBufLen, void* pReserved, LDWORD dwUser); ///@brief CLIENT_AttachRadarAISInfo接口入参 typedef struct tagNET_IN_ATTACH_RADAR_AIS_INFO { DWORD dwSize; // 结构体大小 fRadarAISInfoCallBack cbAISInfo; // 雷达AIS信息回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_RADAR_AIS_INFO; ///@brief CLIENT_AttachRadarAISInfo接口出参 typedef struct tagNET_OUT_ATTACH_RADAR_AIS_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_RADAR_AIS_INFO; ///@brief 轨迹信息 typedef struct tagNET_RADAR_SET_TRACK_INFO { int nTrackID; // 轨迹ID int nAISMatch; // 是否AIS匹配,0表示不匹配,1表示匹配 char szReserved[64]; // 预留字节 }NET_RADAR_SET_TRACK_INFO; ///@brief CLIENT_SetRadarTrackInfo 接口入参 typedef struct tagNET_IN_RADAR_SET_TRACK_INFO { DWORD dwSize; // 结构体大小 int nInfoNum; // 轨迹信息个数 NET_RADAR_SET_TRACK_INFO stuInfo[128]; // 轨迹信息 }NET_IN_RADAR_SET_TRACK_INFO; ///@brief CLIENT_SetRadarTrackInfo 接口出参 typedef struct tagNET_OUT_RADAR_SET_TRACK_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_SET_TRACK_INFO; ///@brief CLIENT_SetDevicePower 接口入参 typedef struct tagNET_IN_RADAR_SET_DEVICE_POWER { DWORD dwSize; // 结构体大小 int nType; // 0 : 表示设备断电, 断电就只能手动去把空开合闸 // 1 : 表示设备重启, 重启是空开会自动合闸 }NET_IN_RADAR_SET_DEVICE_POWER; ///@brief CLIENT_SetDevicePower 接口出参 typedef struct tagNET_OUT_RADAR_SET_DEVICE_POWER { DWORD dwSize; // 结构体大小 }NET_OUT_RADAR_SET_DEVICE_POWER; ///@brief 获取雷达联动的远程球机状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRadarLinkSDState(LLONG lLoginID, const NET_IN_RADAR_GET_LINKSTATE * pstInParam, NET_OUT_RADAR_GET_LINKSTATE* pstOutParam, int nWaitTime); ///@brief 用于雷达联动球机添加 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddRadarLinkSD(LLONG lLoginID, const NET_IN_RADAR_ADD_RADARLINKSD * pstInParam, NET_OUT_RADAR_ADD_RADARLINKSD* pstOutParam, int nWaitTime); ///@brief 用于雷达联动球机删除 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelRadarLinkSD(LLONG lLoginID, const NET_IN_RADAR_DEL_RADARLINKSD * pstInParam, NET_OUT_RADAR_DEL_RADARLINKSD* pstOutParam, int nWaitTime); ///@brief 手动定位功能,用于雷达控制球机云台转动用于定位 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadarManualLocate(LLONG lLoginID, const NET_IN_RADAR_MANUAL_LOCATE * pstInParam, NET_OUT_RADAR_MANUAL_LOCATE* pstOutParam, int nWaitTime); ///@brief 雷达订阅RFID卡片信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRadarRFIDCardInfo(LLONG lLoginID, const NET_IN_ATTACH_RADAR_RFIDCARD_INFO * pstInParam, NET_OUT_ATTACH_RADAR_RFIDCARD_INFO* pstOutParam, int nWaitTime); ///@brief 雷达取消订阅RFID卡片信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRadarRFIDCardInfo(LLONG lAttachHandle); ///@brief 查询RFID的工作模式 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRadarRFIDMode(LLONG lLoginID, const NET_IN_RADAR_GET_RFID_MODE * pstInParam, NET_OUT_RADAR_GET_RFID_MODE* pstOutParam, int nWaitTime); ///@brief 设置RFID的工作模式 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRadarRFIDMode(LLONG lLoginID, const NET_IN_RADAR_SET_RFID_MODE * pstInParam, NET_OUT_RADAR_SET_RFID_MODE* pstOutParam, int nWaitTime); ///@brief 支持调用激光雷达的地图自动构建 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MapRadarBuilding(LLONG lLoginID, const NET_IN_RADAR_MAP_BUILDING * pstInParam, NET_OUT_RADAR_MAP_BUILDING* pstOutParam, int nWaitTime); ///@brief 手动选择轨迹目标让球机跟踪 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadarManualTrack(LLONG lLoginID, const NET_IN_RADAR_MANUAL_TRACK* pstInParam, NET_OUT_RADAR_MANUAL_TRACK* pstOutParam, int nWaitTime); ///@brief 雷达订阅AIS信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRadarAISInfo(LLONG lLoginID, const NET_IN_ATTACH_RADAR_AIS_INFO * pstInParam, NET_OUT_ATTACH_RADAR_AIS_INFO* pstOutParam, int nWaitTime); ///@brief 雷达取消订阅AIS信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRadarAISInfo(LLONG lAttachHandle); ///@brief 下发的雷达轨迹信息,用作AIS报警判断与球机联动 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRadarTrackInfo(LLONG lLoginID, const NET_IN_RADAR_SET_TRACK_INFO* pstInParam, NET_OUT_RADAR_SET_TRACK_INFO* pstOutParam, int nWaitTime); ///@brief 设备断电和重启接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDevicePower(LLONG lLoginID, const NET_IN_RADAR_SET_DEVICE_POWER* pstInParam, NET_OUT_RADAR_SET_DEVICE_POWER* pstOutParam, int nWaitTime); ///@brief CLIENT_GetWaterRadarCaps 输入参数 typedef struct tagNET_IN_GET_WATERRADAR_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_WATERRADAR_CAPS; ///@brief CLIENT_GetWaterRadarCaps 输出参数 typedef struct tagNET_OUT_GET_WATERRADAR_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupport; // 当前是否支持水利雷达功能 FALSE: 不支持 TRUE: 支持 }NET_OUT_GET_WATERRADAR_CAPS; ///@brief CLIENT_GetWaterRadarObjectInfo 输入参数 typedef struct tagNET_IN_GET_WATERRADAR_OBJECTINFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_WATERRADAR_OBJECTINFO; ///@brief CLIENT_GetWaterRadarObjectInfo 输出参数 typedef struct tagNET_OUT_GET_WATERRADAR_OBJECTINFO { DWORD dwSize; // 结构体大小 float fWaterLevel; // 水位 单位 cm }NET_OUT_GET_WATERRADAR_OBJECTINFO; ///@brief 获取水利雷达能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWaterRadarCaps(LLONG lLoginID, const NET_IN_GET_WATERRADAR_CAPS* pInParam, NET_OUT_GET_WATERRADAR_CAPS* pOutParam, int nWaitTime); ///@brief 获取雷达检测目标数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWaterRadarObjectInfo(LLONG lLoginID, const NET_IN_GET_WATERRADAR_OBJECTINFO* pInParam, NET_OUT_GET_WATERRADAR_OBJECTINFO* pOutParam, int nWaitTime); ///@brief 雷达区域检测事件的RFID卡片信息 typedef struct tagNET_RADAR_REGIONDETECTION_RFIDCARD_INFO { char szCardID[24]; // 卡片ID char byReserved[256]; // 保留字节 }NET_RADAR_REGIONDETECTION_RFIDCARD_INFO; ///@brief 雷达区域检测事件(对应 DH_ALARM_RADAR_REGIONDETECTION) typedef struct tagALARM_RADAR_REGIONDETECTION_INFO { int nAction; // 事件动作1:Start 2:Stop NET_TIME_EX stuTime; // 事件发生的时间 int nChannelID; // 通道号 int nObjectNum; // 检测到的对象个数 NET_RADAR_DETECT_OBJECT stuObjects[100]; // 雷达检测对象列表 char szName[128]; // 事件名称 int nPresetID; // 事件触发的预置点号 int nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] EM_RADAR_ALARM_TYPE emAlarmType; // 报警类型 int nLongitude; // 经度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 int nLatitude; // 纬度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 UINT nRuleID; // 智能事件规则编号,用于表示哪个规则触发的事件。 int nCardNum; // RFID卡片数量 NET_RADAR_REGIONDETECTION_RFIDCARD_INFO stuCardInfo[256]; // RFID卡片信息 UINT nAlarmLevel; // 报警等级,0 表示未知, 1表示预警警告,2表示报警 int nAlarmFlag; // 报警标志位,bit0表示是否超速,bit1表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行 int nAlarmChannel; // 报警输入通道号 UINT nEventID; // 事件编号,用来唯一标志一个事件 int nSpeed; // 触发事件目标的速度,用整型传输,扩大100倍 单位m/s int nTrackID; // 触发事件目标的id,范围[0,63] int nObjectType; // 触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船 int nUpDownGoing; // 车道/航道方向 -1:未知 0:无效 1:上行 2:下行 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 int nDistance; // 当前触发事件目标的像素极坐标值--距离,扩大100倍的结果,单位米 int nAngle; // 当前触发事件目标的极坐标值--角度,扩大100倍的结果,单位度 char byReserved[992]; // 预留字节 }ALARM_RADAR_REGIONDETECTION_INFO; ///@brief 雷达警戒线/绊线检测事件(对应事件DH_ALARM_RADAR_LINEDETECTION) typedef struct tagALARM_RADAR_LINEDETECTION_INFO { int nChannelID; // 通道号 int nAction; // 事件动作1:Start 2:Stop char szName[128]; // 事件名称 NET_TIME_EX stuTime; // 事件发生的时间 int nObjectNum; // 检测到的对象个数 NET_RADAR_DETECT_OBJECT stuObjects[100]; // 雷达检测对象列表 int nPresetID; // 事件触发的预置点号 int nDetectRegionNum; // 检测区域顶点数 NET_POINT stuDetectRegion[20]; // 检测区域,[0,8191] int nLongitude; // 经度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 int nLatitude; // 纬度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254 UINT nAlarmLevel; // 报警等级,0 表示未知, 1表示预警警告,2表示报警 int nAlarmFlag; // 报警标志位,bit0表示是否超速,bit1表示是否AIS匹配 EM_RADAR_ALARM_TYPE emAlarmType; // 报警类型 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char byReserved[1012]; // 预留字节 } ALARM_RADAR_LINEDETECTION_INFO; ///@brief 雷达在地图上的位置信息 typedef struct tagNET_RADAR_PLACE_INFO { int nRadarPixel[2]; // 雷达在地图上的像素坐标 double dbRadarAngle; // 雷达朝向配置,单位度 char byReserved[512]; // 预留字节 } NET_RADAR_PLACE_INFO; ///@brief 雷达地图尺寸配置(对应 NET_EM_CFG_RADAR_MAPPARA) typedef struct tagNET_CFG_RADAR_MAPPARA_INFO { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 NET_RADAR_PIXELLINE stuPixelLine; // 图片中线段的像素坐标 double dDistance; // 图片中线段代表的实际长度,单位米 NET_RADAR_PIXELPOINT stuPixelPoint; // 雷达在地图上的像素坐标 double dRadarDirectionAngle; // 雷达朝向配置,单位度 UINT nLongitudeNum; // 经度个数 int nLongitude[4]; // 经度, 最多4组, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 UINT nLatitudeNum; // 纬度个数 int nLatitude[4]; // 纬度, 最多4组, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 char byReserved1[4]; // 字节对齐 UINT nRadarPlaceNum; // 雷达在地图上的位置个数 NET_RADAR_PLACE_INFO stuRadarPlaceInfo[4]; // 雷达在地图上的位置参数 }NET_CFG_RADAR_MAPPARA_INFO; ///@brief 校准点 typedef struct tagNET_RADAR_CALIBRATIONPOS { NET_RADAR_PIXELPOINT stuPixelPoint; // 校准点的像素坐标 double dPositionX; // 水平角度,归一化到-1~1 double dPositionY; // 垂直角度,归一化到-1~1 double dZoom; // 放大倍数,归一化到 0~1 BYTE byReserved[512]; // 保留字节 }NET_RADAR_CALIBRATIONPOS; ///@brief 校准参数 typedef struct tagNET_RADAR_CALIBRATION_PARAS { int nCalibrationPosNum; // 校准点个数 BYTE byReserved1[4]; // 字节对齐 NET_RADAR_CALIBRATIONPOS stuCalibrationPos[4]; // 校准点数组 char szSDLinkIP[32]; // 被控制的设备ip double dLinkSDHeight; // 联动的球机安装高度,单位米 double dTiltRecoupAngle; // 联动球机垂直补偿角 BYTE byReserved[1024]; // 保留字节 }NET_RADAR_CALIBRATION_PARAS; ///@brief 雷球校准配置(对应 NET_EM_CFG_RADAR_CALIBRATION) typedef struct tagNET_CFG_RADAR_CALIBRATION_INFO { DWORD dwSize; // 结构体大小 int nCalibrationParasNum; // 校准参数组数 NET_RADAR_CALIBRATION_PARAS stuCalibrationParas[MAX_RADAR_SD_NUM]; // 校准参数 double dInstallHeight; // 安装高度,单位米 double dSlopeAngle; // 斜坡补偿角度 }NET_CFG_RADAR_CALIBRATION_INFO; ///@brief 雷达联动球机使能配置(对应 NET_EM_CFG_RADAR_LINKSD) typedef struct tagNET_CFG_RADAR_LINKSD_INFO { DWORD dwSize; // 结构体大小 BOOL bRadarLink; // 雷达联动球机使能 }NET_CFG_RADAR_LINKSD_INFO; #define NET_RADAR_MAX_NUM_RULELINE 10 // 规则线的最大数量 #define NET_RADAR_MAX_NUM_POLYGON 24 // 规则线顶点的最大数量 ///@brief 雷达规则类型 typedef enum tagEM_RADAR_RULETYPE { EM_RADAR_RULETYPE_UNKNOWN, // 未知 EM_RADAR_RULETYPE_ALARM, // 预警 EM_RADAR_RULETYPE_SHIELD, // 屏蔽 EM_RADAR_RULETYPE_HIGHALARM, // 报警,高级别 }EM_RADAR_RULETYPE; #define RADAR_TARGET_FILTER_HUMAN 0x01 // 人 #define RADAR_TARGET_FILTER_CAR 0x02 // 车 #define RADAR_TARGET_FILTER_ANIMAL 0x04 // 动物 ///@brief 规则线 typedef struct tagNET_RADAR_RULELINE { char szName[DH_COMMON_STRING_128];// 规则名称,不能重名 int nRegionNumber; // 规则线编号,范围[1,10] BOOL bEnable; // 规则是否使能 EM_RADAR_RULETYPE emRuleType; // 规则类型,告警或者屏蔽类型 DH_POINT stuPolygon[DH_MAX_POLYGON_NUM]; // 规则点,每个点依次表示规则线的顶点坐标 int nPolygonPointNum; // 规则线顶点的个数,点的个数范围[3, 24] int nTargetFilter; // 目标过滤 bit1:人, bit2:车, bit3:动物 配置使用|,校验使用& int nAlarmOutNumber; // 关联的报警输出配置的编号,对应NET_RADAR_ANALYSERULE配置nAlarmOutNumber字段 int nLongitudeNum; // 经度个数, 即nLongitude 数组的有效元素个数 int nLongitude[21]; // 规则点的经度,用整型传输, 放大1000000倍, 小数点后6位有效,例如120125400代表120.1254 int nLatitudeNum; // 维度个数, 即nLatitude 数组的有效元素个数 int nLatitude[21]; // 规则点的维度,用整型传输, 放大1000000倍, 小数点后6位有效,例如120125400代表120.1254 int nRadarPolygonNum; // 雷达坐标系下的防区规则数组实际有效个数 int nRadarPolygon[20][2]; // 雷达坐标系下的防区规则。雷达法线为极轴,逆时针方向为正方向。int[][0u]:距离 单位:米,扩大100倍;int[][1u] :角度 单位:度 扩大100倍 BYTE byReserved[164]; // 保留字节 }NET_RADAR_RULELINE; ///@brief 雷达规则线配置(对应 NET_EM_CFG_RADAR_RULELINE) typedef struct tagNET_CFG_RADAR_RULELINE_INFO { DWORD dwSize; // 结构体大小 int nNumRuleLine; // 要配置的规则线数量 NET_RADAR_RULELINE stuRuleLine[NET_RADAR_MAX_NUM_RULELINE]; //规则线 BOOL bUseEx; // nNumRuleLineEx/stuRuleLineEx 是否有效 int nNumRuleLineEx; // 要配置的规则线数量 NET_RADAR_RULELINE stuRuleLineEx[25]; // 规则线 }NET_CFG_RADAR_RULELINE_INFO; ///@brief 报警联动配置 typedef struct tagNET_RADAR_ANALYSERULE { char szSDLinkIP[32]; // 被控制的球机IP int nAlarmOutNumber; // 报警配置编号,编号唯一 BOOL bEnable; // 报警使能 NET_CFG_ALARM_MSG_HANDLE stuEventHandler; // 报警联动配置 BYTE byReserved[1024]; // 保留字节 }NET_RADAR_ANALYSERULE; ///@brief 雷达报警联动配置(对应 NET_EM_CFG_RADAR_ANALYSERULE) typedef struct tagNET_CFG_RADAR_ANALYSERULE_INFO { DWORD dwSize; // 结构体大小 int nAnalyseRuleNum; // 报警联动配置个数 NET_RADAR_ANALYSERULE stuAnalyseRules[MAX_RADAR_SD_NUM]; // 报警联动配置数组 }NET_CFG_RADAR_ANALYSERULE_INFO; ///@brief 跟踪切换模式 typedef enum tagEM_RADAR_TRACKSWITCHMODE { EM_RADAR_TRACKSWITCHMODE_UNKNOWN, // 未知 EM_RADAR_TRACKSWITCHMODE_ROTATION, // 轮巡 EM_RADAR_TRACKSWITCHMODE_TIMEFIRST, // 时间优先 EM_RADAR_TRACKSWITCHMODE_DISTANCEFIRST, // 距离优先 }EM_RADAR_TRACKSWITCHMODE; ///@brief 雷达跟踪全局配置(对应 NET_EM_CFG_RADAR_TRACKGLOBALCONFIG) typedef struct tagNET_CFG_RADAR_TRACKGLOBALCONFIG_INFO { DWORD dwSize; // 结构体大小 BOOL bSectorDisable; // 防区隐藏使能 int nTrajectoryTime; // 轨迹时长,单位秒,范围[3,30] int nTrackSwitchTime; // 跟踪切换时间,单位秒,范围[1,15] EM_RADAR_TRACKSWITCHMODE emTrackSwitchMode; // 跟踪切换模式 }NET_CFG_RADAR_TRACKGLOBALCONFIG_INFO; ///@brief 雷达场景类型 typedef enum tagNET_EM_RADAR_SCENE_TYPE { NET_EM_RADAR_SCENE_UNKNOWN = 0, // 未知 NET_EM_RADAR_SCENE_DEFAULT, // 默认 NET_EM_RADAR_SCENE_SHRUB, // 灌木 NET_EM_RADAR_SCENE_ROOMY, // 宽敞 NET_EM_RADAR_SCENE_CUSTOM, // 自定义 }NET_EM_RADAR_SCENE_TYPE; ///@brief 雷达场景 typedef struct tagNET_RADAR_SCENE { NET_EM_RADAR_SCENE_TYPE emType; // 雷达场景类型 BYTE byReserved[508]; // 保留 }NET_RADAR_SCENE; ///@brief 结构信息配置 typedef struct tagNET_RADAR_STRUCTURED { BOOL bEnable; // 结构信息显示使能 BYTE byReserved[508]; // 保留 }NET_RADAR_STRUCTURED; ///@brief 雷达发射功率 typedef struct tagNET_RADAR_CAPACITY { int nPower; // 功率 1:50米; 2:100米; 3:150米 BYTE byReserved[508]; // 保留 }NET_RADAR_CAPACITY; ///@brief 雷达信道设置 typedef struct tagNET_RADAR_RADARCHANNEL { int nRoute; // 信道选择, 1: 信道1 2:信道2 BYTE byReserved[508]; // 保留 }NET_RADAR_RADARCHANNEL; ///@brief 雷达控球跟踪画面占比 typedef struct tagNET_RADAR_TARGETRATIO { int nRatio; // 画面占比比例倒数 BYTE byReserved[60]; // 保留 }NET_RADAR_TARGETRATIO; ///@brief 雷达功能设置(对应 NET_EM_CFG_RADAR_RADARPARA) typedef struct tagNET_CFG_RADAR_RADARPARA_INFO { DWORD dwSize; // 结构体大小 NET_RADAR_SCENE stuScene; // 雷达场景 NET_RADAR_STRUCTURED stuStructured; // 结构信息配置 NET_RADAR_CAPACITY stuCapacity; // 雷达发射功率 NET_RADAR_RADARCHANNEL stuRadarChannel; // 雷达信道设置 NET_RADAR_TARGETRATIO stuTargetRatio; // 雷达控球跟踪画面占比 }NET_CFG_RADAR_RADARPARA_INFO; ///@brief 远程球机联动使能信息 typedef struct tagNET_REMOTESDLINK_INFO { char szSDLinkIP[32]; // 被控制的设备ip BOOL bRadarLink; // 联动使能 BYTE byReserved[476]; // 保留 }NET_REMOTESDLINK_INFO; ///@brief 雷达远程球机联动使能配置(对应 NET_EM_CFG_RADAR_REMOTESDLINK) typedef struct tagNET_CFG_RADAR_REMOTESDLINK_INFO { DWORD dwSize; // 结构体大小 int nLinkNum; // 联动个数 NET_REMOTESDLINK_INFO stuLinkInfos[MAX_RADAR_SD_NUM];// 远程球机联动使能信息 }NET_CFG_RADAR_REMOTESDLINK_INFO; ///@brief 远程联动设备信息 typedef struct tagNET_RADARLINKDEVICE_INFO { char szSDLinkIP[32]; // 设备ip char szVendor[32]; // 设备来源 int nPort; // 服务端口(已废弃,请使用CLIENT_AddRadarLinkSD) char szUserName[128]; // 用户名(已废弃,请使用CLIENT_AddRadarLinkSD) char szPassword[32]; // 密码(已废弃,请使用CLIENT_AddRadarLinkSD) char szDeviceType[32]; // 设备类型 char szDeviceName[128]; // 设备名称 BYTE byReserved[124]; // 保留 }NET_RADARLINKDEVICE_INFO; ///@brief 雷达远程联动设备配置(对应 NET_EM_CFG_RADAR_RADARLINKDEVICE) typedef struct tagNET_CFG_RADAR_RADARLINKDEVICE_INFO { DWORD dwSize; // 结构体大小 int nDevNum; // 球机个数 NET_RADARLINKDEVICE_INFO stuDevInfo[MAX_RADAR_SD_NUM]; // 远程设备信息 }NET_CFG_RADAR_RADARLINKDEVICE_INFO; ///@brief OSD 叠加位置 typedef enum tagNET_EM_OSD_AREA { NET_EM_OSD_AREA_UNKNOWN, // 未知 NET_EM_OSD_AREA_LEFT_TOP, // 左上 NET_EM_OSD_AREA_MID_TOP, // 中上 NET_EM_OSD_AREA_RIGHT_TOP, // 右上 NET_EM_OSD_AREA_MID_LEFT, // 中左 NET_EM_OSD_AREA_MID_RIGHT, // 中右 NET_EM_OSD_AREA_LEFT_BOTTOM, // 左下 NET_EM_OSD_AREA_MID_BOTTOM, // 中下 NET_EM_OSD_AREA_RIGHT_BOTTOM, // 右下 }NET_EM_OSD_AREA; ///@brief 雷达地图OSD叠加配置(对应 NET_EM_CFG_RADAR_MAPOSDPARA) typedef struct tagNET_CFG_RADAR_MAPOSDPARA_INFO { DWORD dwSize; // 结构体大小 NET_EM_OSD_AREA emOSDArea; // 叠加位置 }NET_CFG_RADAR_MAPOSDPARA_INFO; ///@brief 雷达设备信息 typedef struct tagNET_RADAR_DEVICE_INFO { char szProtocalType[32]; // 协议类型 char szRadarIP[32]; // 雷达设备IP char szDeviceType[32]; // 设备类型 char szDeviceName[32]; // 设备名称 char szRadarVer[16]; // Radar模块版本号 char szUserName[128]; // 用户名 char szPassWord[32]; // 密码 int nPort; // 服务端口号 int nLongitude; // 经度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 int nLatitude; // 纬度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254 int nAngle; // 雷达地图朝向角, 放大100倍, 例如112897, 实际是128.97度 int nDectAngle; // 雷达检测角度,放大100倍显示,例如12897,实际是128.97度 int nDectDistance; // 雷达检测距离,放大100倍显示,例如16000,表示检测距离是160米 BYTE bReserved[1016]; // 保留字节 } NET_RADAR_DEVICE_INFO; ///@brief 雷达设备列表配置, 对应配置项NET_EM_CFG_RADAR_DEVLIST typedef struct tagNET_CFG_RADAR_DEVLIST_INFO { DWORD dwSize; // 结构体大小 UINT nRadarDevNum; // 雷达设备个数, 即stuRadarDevList 数组有效元素个数 NET_RADAR_DEVICE_INFO stuRadarDevList[10]; // 雷达设备列表信息 } NET_CFG_RADAR_DEVLIST_INFO; ///@brief 雷达规则与球机绑定关系 typedef struct tagNET_RADAR_RULE_BIND_SD_RELATION { char szSDIP[32]; // 规则绑定的球机IP int nRuleId; // 规则ID BYTE bReserved[1020]; // 保留字节 } NET_RADAR_RULE_BIND_SD_RELATION; ///@brief 雷达规则绑定球机配置, 对应配置项NET_EM_CFG_RADAR_RULE_BIND_SD typedef struct tagNET_CFG_RADAR_RULE_BIND_SD_INFO { DWORD dwSize; // 结构体大小 UINT nRuleSdRelationNum; // 雷达规则与球机绑定个数, 即stuRuleSdRelation 数组的有效元素个数 NET_RADAR_RULE_BIND_SD_RELATION stuRuleSdRelation[10]; // 雷达规则与球机绑定关系 } NET_CFG_RADAR_RULE_BIND_SD_INFO; ///@brief 雷达屏幕显示规则 typedef struct tagNET_RADAR_SCREEN_RULE { char szRuleName[512]; // 屏幕显示的规则名字 int nDisplayColor; // 屏幕文字颜色,0:红色,1:绿色,2:黄色 int nDisplayMode; // 屏幕文字显示方式,0:立即显示;1:滚动显示 int nDisplaySpeed; // 屏幕文字滚动速度,当显示方式为立即显示时速度为0,速度范围在0-9 char szDisplayText[512]; // 屏幕显示的文本内容 int nRuleID; // 屏幕显示的规则编号 char szReserved[1024]; // 保留字节 } NET_RADAR_SCREEN_RULE; ///@brief 雷达屏幕显示规则配置, 对应配置项NET_EM_CFG_RADAR_SCREEN_RULE typedef struct tagNET_CFG_RADAR_SCREEN_RULE_INFO { DWORD dwSize; // 结构体大小 UINT nScreenRuleNum; // 雷达屏幕显示规则个数, stuScreenRule 数组的有效元素个数 NET_RADAR_SCREEN_RULE stuScreenRule[10]; // 雷达屏幕显示规则 } NET_CFG_RADAR_SCREEN_RULE_INFO; ///@brief 雷达模块算法参数 typedef struct tagNET_RADAR_ALGORITHM_PARAM { char szName[64]; // 参数名 int nValue; // 参数值, 扩大100倍使用 }NET_RADAR_ALGORITHM_PARAM; ///@brief 雷达模块算法参数配置, 对应配置项 NET_EM_CFG_RADAR_ALGORITHM_PARAM typedef struct tagNET_CFG_RADAR_ALGORITHM_PARAM_INFO { DWORD dwSize; // 结构体大小 UINT nRadarAlgorithmParamNum; // 雷达模块算法参数个数, stuRadarAlgorithmParam 数组的有效元素个数 NET_RADAR_ALGORITHM_PARAM stuRadarAlgorithmParam[20]; // 雷达模块算法参数 } NET_CFG_RADAR_ALGORITHM_PARAM_INFO; ///@brief 雷达轨迹上报频率 typedef struct tagNET_RADAR_TRACK_FREQUENCY { int nFrequency; // 雷达轨迹上报频率,扩大100倍,单位秒/帧 }NET_RADAR_TRACK_FREQUENCY; ///@brief 雷达轨迹上报频率配置, 对应配置项 NET_EM_CFG_RADAR_TRACK_FREQUENCY typedef struct tagNET_CFG_RADAR_TRACK_FREQUENCY_INFO { DWORD dwSize; // 结构体大小 NET_RADAR_TRACK_FREQUENCY stuRadarTrackFrequency; // 雷达轨迹上报频率 } NET_CFG_RADAR_TRACK_FREQUENCY_INFO; ///@brief 按时间段来 四个模式总时间段需要等于24小时 typedef struct tagNET_TRACK_MOVE_MODE_TIMESECTION { BOOL bEnable; // 该时间段是否生效 char szTime[32]; // 00:00-00:00 小时:分钟(开始时间)-小时:分钟(结束时间) char szReserved[252]; // 保留字节 }NET_TRACK_MOVE_MODE_TIMESECTION; ///@brief 雷球联动跟踪模式选择 typedef struct tagNET_RADAR_TRACK_MOVE_MODE_INFO { int nMode; // -1:未知 0:默认 1:智能开启(事件上报、抓图、目标检测) 2:智能关闭(只抓图) 3:时间段 4:距离 BOOL bAllDayUse; // TRUE:全天使用该模式 FALSE:全天不使用该模式 NET_TRACK_MOVE_MODE_TIMESECTION stuTimeSection; // 按时间段来 四个模式总时间段需要等于24小时 int nDayDistance; // 距离模式下,白天生效距离,单位米 int nNightDistance; // 距离模式下,晚上生效距离,单位米 BOOL bEnable; // 雷球联动跟踪模式选择使能 BOOL bRelayTrack; // 接力跟踪使能 char szReserved[1024]; // 保留字节 }NET_RADAR_TRACK_MOVE_MODE_INFO; ///@brief 雷球联动跟踪模式选择配置, 对应配置项 NET_EM_CFG_RADAR_TRACK_MOVE_MODE typedef struct tagNET_CFG_CFG_RADAR_TRACK_MOVE_MODE_INFO { DWORD dwSize; // 结构体大小 int nTrackMoveModeNum; // 雷球联动跟踪模式选择个数 NET_RADAR_TRACK_MOVE_MODE_INFO stuTrackMoveMode[10]; // 雷球联动跟踪模式选择 } NET_CFG_CFG_RADAR_TRACK_MOVE_MODE_INFO; ///@brief Mini雷达探测参数配置, 对应配置项 NET_EM_CFG_MINIRADAR_DECT_PARAM typedef struct tagNET_CFG_MINIRADAR_DECT_PARAM_INFO { DWORD dwSize; // 结构体大小 UINT nSensitivity; // 灵敏度 UINT nReportInterval; // 上报间隔,单位秒 }NET_CFG_MINIRADAR_DECT_PARAM_INFO; ///@brief 呼吸异常报警配置 typedef struct tagNET_CFG_MINIRADAR_BREATHE { BOOL bEnable; // 使能开关 UINT nMax; // 合理范围的上限值,大于这个值报警 UINT nMin; // 合理范围的下限值,小于这个值报警 UINT nDelay; // 单位秒,报警延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1020]; // 保留字节 }NET_CFG_MINIRADAR_BREATHE; ///@brief 心率呼吸异常报警 typedef struct tagNET_CFG_MINIRADAR_HEATERATE { BOOL bEnable; // 使能开关 UINT nMax; // 合理范围的上限值,大于这个值报警 UINT nMin; // 合理范围的下限值,小于这个值报警 UINT nDelay; // 单位秒, 报警延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1020]; // 保留字节 }NET_CFG_MINIRADAR_HEATERATE; ///@brief 在/离床报警 typedef struct tagNET_CFG_MINIRADAR_AFBSTATUS { BOOL bEnable; // 使能开关 UINT nAFBFlag; // 0表示离床报警 1表示在床报警 UINT nDelay; // 单位秒, 报警延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1024]; // 保留字节 }NET_CFG_MINIRADAR_AFBSTATUS; ///@brief 跌倒异常报警 typedef struct tagNET_CFG_MINIRADAR_FALLALARM { BOOL bEnable; // 使能开关 UINT nDelay; // 单位秒, 报警延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1020]; // 保留字节 }NET_CFG_MINIRADAR_FALLALARM; ///@brief 人数异常报警 typedef struct tagNET_CFG_MINIRADAR_NUMALARM { BOOL bEnable; // 使能开关 UINT nMax; // 合理范围的上限值,大于这个值报警 UINT nMin; // 合理范围的下限值,小于这个值报警 UINT nDelay; // 单位秒,报警延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1020]; // 保留字节 }NET_CFG_MINIRADAR_NUMALARM; ///@brief 驻留报警 typedef struct tagNET_CFG_MINIRADAR_RESIDENTALARM { BOOL bEnable; // 使能开关 UINT nTime; // 单位秒,驻留时间,超过该时间就报警 UINT nDelay; // 单位秒,报警输出延迟时间 UINT nAlarmOutMask; // 关联报警输出端口,每一bit代表一路报警输出 char szReserved[1024]; // 保留字节 }NET_CFG_MINIRADAR_RESIDENTALARM; ///@brief Mini雷达报警配置, 对应配置项 NET_EM_CFG_MINIRADAR_INDOOR_ALARM typedef struct tagNET_CFG_MINIRADAR_INDOOR_ALARM_INFO { DWORD dwSize; // 结构体大小 NET_CFG_MINIRADAR_BREATHE stuBreathe; // 呼吸异常报警配置 NET_CFG_MINIRADAR_HEATERATE stuHeateRate; // 心率呼吸异常报警 NET_CFG_MINIRADAR_AFBSTATUS stuAFBStatus; // 在/离床报警 NET_CFG_MINIRADAR_FALLALARM stuFallAlarm; // 跌倒异常报警 NET_CFG_MINIRADAR_NUMALARM stuNumAlarm; // 人数异常报警 NET_CFG_MINIRADAR_RESIDENTALARM stuResidentAlarm; // 驻留报警 }NET_CFG_MINIRADAR_INDOOR_ALARM_INFO; ///@brief Mini雷达角度补偿配置, 对应配置项 NET_EM_CFG_MINIRADAR_COMP_INFO typedef struct tagNET_CFG_MINIRADAR_COMP_INFO { DWORD dwSize; // 结构体大小 int nRollAngle; // 横滚角,单位度,扩大100倍 int nPitchAngle; // 俯仰角,单位度,扩大100倍 int nYawAngle; // 横滚角,单位度,扩大100倍 }NET_CFG_MINIRADAR_COMP_INFO; ///@brief Mini雷达安装信息配置, 对应配置项 NET_EM_CFG_MINIRADAR_INSTALL_INFO typedef struct tagNET_CFG_MINIRADAR_INSTALL_INFO { DWORD dwSize; // 结构体大小 UINT nInstallType; // 安装方式(室内雷达使用) 0:未知, 1:壁装, 2:墙角装 UINT nInstallHeigh; // 安装高度;单位米,扩大100倍 int nInstallAngle; // 安装角度;单位度,扩大100倍 }NET_CFG_MINIRADAR_INSTALL_INFO; ///@brief Mini雷达探测区域配置, 对应配置项 NET_EM_CFG_MINIRADAR_REGION_DETECT typedef struct tagNET_CFG_MINIRADAR_REGION_DETECT_INFO { DWORD dwSize; // 结构体大小 UINT nFrontDecDis; // 前方探测距离,单位米,扩大100倍 UINT nBehindDecDis; // 前方探测距离,单位米,扩大100倍 UINT nLeftDecDis; // 左侧探测距离,单位米,扩大100倍 UINT nRightDecDis; // 右侧探测距离,单位米,扩大100倍 }NET_CFG_MINIRADAR_REGION_DETECT_INFO; ///@brief 外接广告机配置信息 typedef struct tagNET_MINIRADAR_SCREEN_CONFIG { char szStatus[64]; // 状态名称 char szUIPrompts[1024]; // UI提示语 UINT nMax; // 当前区间最大值 UINT nMin; // 当前区间最小值 char szResvered[1024]; // 保留字段 }NET_MINIRADAR_SCREEN_CONFIG; ///@brief Mini雷达外接广告机专配置, 对应配置项 NET_EM_CFG_MINIRADAR_SCREEN_CONFIG typedef struct tagNET_CFG_MINIRADAR_SCREEN_CONFIG_INFO { DWORD dwSize; // 结构体大小 int nConfigNum; // 广告机配置个数 NET_MINIRADAR_SCREEN_CONFIG stuConfig[6]; // 广告机配置 }NET_CFG_MINIRADAR_SCREEN_CONFIG_INFO; /////////////////////////////雷球联动接口 end//////////////////////////////// /////////////////////////////客流统计服务接口 start///////////////////////////// #define MAX_ACTIVITY_ANALYSE_GROUP 128 // 统计横坐标个数数据分组的最大个数 ///@brief 业务类型 typedef enum tagNET_EM_VS_TYPE { NET_EM_VS_TYPE_ACTIVITY_ANALYSE = 0, // 活跃度分析实时数据,对应 NET_VIDEOSTAT_SUMMARY_STEREO NET_EM_VS_TYPE_CROWD_DISTRI_MAP = 1, // 人群分布图报表实时数据,对应 NET_VIDEOSTAT_CROWD_DISTRI_MAP NET_EM_VS_TYPE_INTELLIG_PARKING = 3, // 智能停车实时数据,对应 NET_VIDEOSTAT_SUMMARY_INTELLIPARKING NET_EM_VS_TYPE_HEAD_LIFT_DETECTION = 4, // 抬头检测周期上报数据, 对应 NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION NET_EM_VS_TYPE_TANK_CAPACITY_DETECTION = 5, // 贮柜储量检测实时上报数据, 对应 NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION }NET_EM_VS_TYPE; ///@brief 数据类型 typedef enum tagNET_EM_VS_DATA_TYPE { NET_EM_VS_DATA_TYPE_X = 0, // 数据是当前人数的横坐标 }NET_EM_VS_DATA_TYPE; ///@brief 目标实时检测位置统计 typedef struct tagNET_VIDEOSTAT_INSIDESUBTOTAL_INFO { int nPosXs[32]; // 当前时间点上报人数的横坐标集,坐标体系是1024体系,数组每个元素的范围为[0, 1023] int nPoxXsNum; // nPoxXs数组有效数据个数 BYTE byReserved[988]; // 预留 }NET_VIDEOSTAT_INSIDESUBTOTAL_INFO; ///@brief 立体行为-视频统计摘要信息 typedef struct tagNET_VIDEOSTAT_SUMMARY_STEREO { NET_TIME_EX UTC; // 时间 int nChannelID; // 通道号 int nPtzPresetId; // 预置点编号 NET_EM_VS_DATA_TYPE emType; // 数据类型 NET_VIDEOSTAT_INSIDESUBTOTAL_INFO stuInsideSubtotal; // 目标实时检测位置统计 BYTE reserved[1024]; // 保留字节 } NET_VIDEOSTAT_SUMMARY_STEREO; ///@brief 统计区报表数据列表 typedef struct tagNET_PEOPLE_REGION_INFO { char szRegionName[128]; // 区域名称 UINT nRegionPeopleNum; // 当前时间点统计区内人数 BYTE reserved[1020]; // 保留字节 }NET_PEOPLE_REGION_INFO; ///@brief 人群分布图报表实时数据 typedef struct tagNET_VIDEOSTAT_CROWD_DISTRI_MAP { NET_TIME_EX UTC; // 时间 UINT nChannelID; // 通道号 UINT nPtzPresetId; // 预置点编号 UINT nRegionNum; // 统计区个数 NET_PEOPLE_REGION_INFO stuRegionList[16]; // 统计区列表, 实际个数和nRegionNum保持一致 BYTE reserved[1024]; // 保留字节 }NET_VIDEOSTAT_CROWD_DISTRI_MAP; ///@brief 智能停车数据类型 typedef enum tagNET_EM_INTELLIPARKING_DATA_TYPE { NET_EM_INTELLIPARKING_DATA_TYPE_PLANAREA = 0, // 数据是规划式停车场车位ID的使用情况,PlanArea字段有效 NET_EM_INTELLIPARKING_DATA_TYPE_OPENAREA, // 数据是开放式停车场停车信息,OpenArea字段有效 }NET_EM_INTELLIPARKING_DATA_TYPE; ///@brief 当前时间点上报车位ID的使用情况 typedef struct tagNET_INTELLIPARKING_PLANAREA_IDINFO { int nID; // 车位对应的ID UINT nIsUsed; // 车位ID对应的使用情况 BYTE reserved[512]; // 保留字节 } NET_INTELLIPARKING_PLANAREA_IDINFO; ///@brief 规划式停车场车位信息统计 typedef struct tagNET_INTELLIPARKING_PLANAREA_INFO { int nIDInfoNum; // 当前时间点上报车位ID的使用情况个数 NET_INTELLIPARKING_PLANAREA_IDINFO stIDInfo[32]; // 当前时间点上报车位ID的使用情况集 BYTE reserved[512]; // 保留字节 } NET_INTELLIPARKING_PLANAREA_INFO; ///@brief 规划式停车场车位信息统计 typedef struct tagNET_INTELLIPARKING_OPENAREA_INFO { int nID; // 车位对应的ID int nParkingNum; // 停车场中停车数 BYTE reserved[512]; // 保留字节 } NET_INTELLIPARKING_OPENAREA_INFO; ///@brief 立体行为-智能停车实时数据 typedef struct tagNET_VIDEOSTAT_SUMMARY_INTELLIPARKING { NET_TIME_EX UTC; // 时间 int nChannelID; // 通道号 int nPtzPresetId; // 预置点编号 NET_EM_INTELLIPARKING_DATA_TYPE emType; // 数据类型 NET_INTELLIPARKING_PLANAREA_INFO stPlanArea; // 规划式停车场车位信息统计,当emType为NET_EM_INTELLIPARKING_DATA_TYPE_PLANAREA时有效 NET_INTELLIPARKING_OPENAREA_INFO stOpenArea; // 开放式停车场信息统计,当emType为NET_EM_INTELLIPARKING_DATA_TYPE_OPENAREA时有效 BYTE reserved[1024]; // 保留字节 } NET_VIDEOSTAT_SUMMARY_INTELLIPARKING; ///@brief 抬头检测周期上报的回调 typedef struct tagNET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION { int nChannelID; // 通道号 int nPtzPresetId; // 预置点编号 NET_TIME_EX UTC; // 时间 UINT nFaceCount; // 检测到的抬头人数 UINT nHumanCount; // 检测到的总人数 char szReserved[1024]; // 保留字节 } NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION; ///@brief 贮柜储量检测实时上报的回调 typedef struct tagNET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION { int nChannelID; // 通道号 EM_TANK_STATUS emTankStatus; // 贮柜当前状态 NET_TIME_EX stuUTC; // 时间 UINT nCurrentRatio; // 用料当前占比(百分比) char szReserved[1024]; // 保留字节 } NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION; ///@brief 立体行为-视频统计信息回调函数原形,lAttachHandle 是 CLIENT_AttachVideoStatistics返回值 typedef void (CALLBACK *fVideoStatisticsInfoCallBack) (LLONG lAttachHandle, NET_EM_VS_TYPE emType, void* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief CLIENT_AttachVideoStatistics 输入参数 typedef struct tagNET_IN_ATTACH_VIDEO_STATISTICS { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 fVideoStatisticsInfoCallBack cbCallBack; // 用户回调函数 LDWORD dwUser; // 用户数据 NET_EM_VS_TYPE emType; // 业务类型 }NET_IN_ATTACH_VIDEO_STATISTICS; ///@brief CLIENT_AttachVideoStatistics 输出参数 typedef struct tagNET_OUT_ATTACH_VIDEO_STATISTICS { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_VIDEO_STATISTICS; ///@brief 活跃度分析数据 typedef struct tagNET_ACTIVITY_ANALYSE_DATA { BYTE byVersion; // 版本号 BYTE byChannelID; // 通道号 BYTE byPtzPresetID; // 预置点 BYTE byReserved; // 预留 DWORD dwNumOfBranches; // 此次查询数据归纳的总分割数 DWORD dwDatas[MAX_ACTIVITY_ANALYSE_GROUP]; // 统计横坐标个数数据, BYTE byReserved1[1024]; // 预留字段 }NET_ACTIVITY_ANALYSE_DATA; ///@brief 活跃度数据查询条件 typedef struct tagNET_VIDEOSTAT_DATA_INFO { int nType; // 0:查询教师活跃区域图 int nPartitionNum; // 查询结果分割的区域数,最大128 BYTE byReserved[1024]; // 预留字段 }NET_VIDEOSTAT_DATA_INFO; ///@brief 视频统计数据查询条件 typedef struct tagNET_GET_VIDEO_STATISTICS_DATA_CONDITION { int nChannelID; // 通道号 int nPtzPresetId; // 预置点编号 NET_TIME stuStartTime; // 起始时间 NET_TIME stuEndTime; // 结束时间 NET_VIDEOSTAT_DATA_INFO stuVideoStatDataInfo; // 业务相关条件 }NET_GET_VIDEO_STATISTICS_DATA_CONDITION; ///@brief CLIENT_GetVideoStatisticsData 输入参数 typedef struct tagNET_IN_GET_VIDEO_STATISTICS_DATA { DWORD dwSize; // 结构体大小 NET_GET_VIDEO_STATISTICS_DATA_CONDITION stuCondition; // 查询条件 }NET_IN_GET_VIDEO_STATISTICS_DATA; ///@brief CLIENT_GetVideoStatisticsData 输出参数 typedef struct tagNET_OUT_GET_VIDEO_STATISTICS_DATA { DWORD dwSize; // 结构体大小 NET_ACTIVITY_ANALYSE_DATA stuData; // 数据内容 }NET_OUT_GET_VIDEO_STATISTICS_DATA; ///@brief 抬头检测数据查询条件 typedef struct tagNET_GET_HEAD_LIFT_DATA_CONDITION { int nChannelID; // 通道号 int nPtzPresetId; // 预置点编号 char szReserved[1024]; // 保留字节 }NET_GET_HEAD_LIFT_DATA_CONDITION; ///@brief CLIENT_GetVideoStatisticsHeadLiftData 输入参数 typedef struct tagNET_IN_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA { DWORD dwSize; // 结构体大小 NET_GET_HEAD_LIFT_DATA_CONDITION stuCondition; // 查询条件 }NET_IN_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA; ///@brief CLIENT_GetVideoStatisticsHeadLiftData 输出参数 typedef struct tagNET_OUT_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA { DWORD dwSize; // 结构体大小 UINT nFaceCount; // 检测到的抬头人数 UINT nHumanCount; // 检测到的总人数 }NET_OUT_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA; ///@brief 订阅客流统计服务实时数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachVideoStatistics(LLONG lLoginID, const NET_IN_ATTACH_VIDEO_STATISTICS* pstInParam, NET_OUT_ATTACH_VIDEO_STATISTICS* pstOutParam, int nWaitTime); ///@brief 取消订阅客流统计服务实时数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachVideoStatistics(LLONG lAttachHandle); ///@brief 查询活跃度统计数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoStatisticsData(LLONG lLoginID, const NET_IN_GET_VIDEO_STATISTICS_DATA* pstInParam, NET_OUT_GET_VIDEO_STATISTICS_DATA* pstOutParam, int nWaitTime); ///@brief 查询抬头检测数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoStatisticsHeadLiftData(LLONG lLoginID, const NET_IN_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA* pstuInParam, NET_OUT_GET_VIDEO_STATISTICS_HEAD_LIFT_DATA* pstuOutParam, int nWaitTime); /////////////////////////////客流统计服务接口 end///////////////////////////// #define NET_CFG_MAX_CTRLTYPE_NUM 16 // 最大道闸控制方式 #define NET_MAX_ALL_SNAP_CAR_COUNT 32 // 所有车开闸种类个数 ///@brief 道闸控制方式枚举 typedef enum tagNET_EM_CFG_TRAFFICSTROBE_CTRTYPE { NET_EM_CFG_CTRTYPE_UNKNOWN = 0, // 未定义 NET_EM_CFG_CTRTYPE_TRAFFICTRUSTLIST, // 通过允许名单控制是否开闸;只有允许名单内车辆才开闸 NET_EM_CFG_CTRTYPE_ALLSNAPCAR, // 针对所有抓拍车辆都开闸 NET_EM_CFG_CTRTYPE_ORDER, // 通过上层下发的命令开闸 } NET_EM_CFG_TRAFFICSTROBE_CTRTYPE; ///@brief 所有车开闸种类 typedef enum tagNET_EM_CFG_ALL_SNAP_CAR { NET_EM_CFG_ALL_SNAP_CAR_UNKNOWN, // 未知开闸种类 NET_EM_CFG_ALL_SNAP_CAR_PLATE, // 所有有牌车车辆 NET_EM_CFG_ALL_SNAP_CAR_NOPLATE, // 所有无牌车车辆 }NET_EM_CFG_ALL_SNAP_CAR; ///@brief 道闸常开配置 typedef struct tagNET_CFG_STATIONARY_OPEN { BOOL bEnable; // 使能 NET_CFG_TIME_SCHEDULE stTimeShecule; // 常开模式执行时间段 }NET_CFG_STATIONARY_OPEN; ///@brief 道闸配置信息(对应 NET_EM_CFG_TRAFFICSTROBE 命令) typedef struct tagNET_CFG_TRAFFICSTROBE_INFO { DWORD dwSize; // 结构体大小 BOOL bEnable; // 使能 int nCtrlTypeCount; // 道闸控制方式个数 NET_EM_CFG_TRAFFICSTROBE_CTRTYPE emCtrlType[NET_CFG_MAX_CTRLTYPE_NUM]; // 道闸控制方式 int nAllSnapCarCount; // 所有车开闸种类个数 NET_EM_CFG_ALL_SNAP_CAR emAllSnapCar[NET_MAX_ALL_SNAP_CAR_COUNT]; // 所有车开闸种类 NET_ALARM_MSG_HANDLE stuEventHandler; // 开启道闸联动参数 NET_ALARM_MSG_HANDLE stuEventHandlerClose; // 关闭道闸联动参数 char szOrderIP[DH_MAX_IPADDR_EX_LEN]; // 负责命令开闸的平台IP NET_EM_CFG_TRAFFICSTROBE_CTRTYPE emCtrlTypeOnDisconnect; // 平台IP与设备断开连接后,设备采用的开闸方式 NET_CFG_STATIONARY_OPEN stuStationaryOpen; // 道闸常开配置 }NET_CFG_TRAFFICSTROBE_INFO; ///@brief CLIENT_DialRecognitionAddTask接口入参 typedef struct tagNET_IN_DIALRECOGNITION_ADD_TASK { DWORD dwSize; // 结构体大小 unsigned int nChannel; // 通道号 unsigned int nPresetID; // 预置点ID,如果是普通IPC,只能设置为0,否则添加任务会失败 }NET_IN_DIALRECOGNITION_ADD_TASK; ///@brief 添加结果 typedef enum tagEM_ADD_RESULT { EM_ADD_RESULT_UNKNOWN, // 未知错误 EM_ADD_RESULT_SUCCESS, // 添加成功 EM_ADD_RESULT_PRESET_ERROR, // 预置点错误 }EM_ADD_RESULT; ///@brief CLIENT_DialRecognitionAddTask接口出参 typedef struct tagNET_OUT_DIALRECOGNITION_ADD_TASK { DWORD dwSize; // 结构体大小 EM_ADD_RESULT emAddResult; // 添加结果 char szTaskID[MAX_TASK_ID_LEN]; // 任务ID,只有在emAddResult为EM_ADD_RESULT_SUCCESS时有效 }NET_OUT_DIALRECOGNITION_ADD_TASK; ///@brief 添加仪表识别任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DialRecognitionAddTask(LLONG lLoginID, const NET_IN_DIALRECOGNITION_ADD_TASK* pInParam, NET_OUT_DIALRECOGNITION_ADD_TASK* pOutParam, int nWaitTime); ///@brief 任务业务类型 typedef enum tagEM_DIAL_RECOGNITION_TASK_TYPE { EM_DIAL_RECOGNITION_TASK_TYPE_UNKNOWN, // 未知 EM_DIAL_RECOGNITION_TASK_TYPE_DIALCHECK, // 仪表识别 EM_DIAL_RECOGNITION_TASK_TYPE_QRCODECHECK, // 二维码识别 } EM_DIAL_RECOGNITION_TASK_TYPE; ///@brief CLIENT_DialRecognitionAddTaskEx接口入参 typedef struct tagNET_IN_DIALRECOGNITION_ADD_TASK_EX { DWORD dwSize; // 结构体大小 unsigned int nChannel; // 通道号 unsigned int nPresetID; // 预置点ID,如果是普通IPC,只能设置为0,否则添加任务会失败 EM_DIAL_RECOGNITION_TASK_TYPE emType; // 任务业务类型 }NET_IN_DIALRECOGNITION_ADD_TASK_EX; ///@brief CLIENT_DialRecognitionAddTaskEx接口出参 typedef struct tagNET_OUT_DIALRECOGNITION_ADD_TASK_EX { DWORD dwSize; // 结构体大小 EM_ADD_RESULT emAddResult; // 添加结果 char szTaskID[MAX_TASK_ID_LEN]; // 任务ID,只有在emAddResult为EM_ADD_RESULT_SUCCESS时有效 }NET_OUT_DIALRECOGNITION_ADD_TASK_EX; ///@brief 按任务类型添加仪表识别任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DialRecognitionAddTaskEx(LLONG lLoginID, const NET_IN_DIALRECOGNITION_ADD_TASK_EX* pInParam, NET_OUT_DIALRECOGNITION_ADD_TASK_EX* pOutParam, int nWaitTime); ///@brief 当前任务处理状态 typedef enum tagEM_CURRENT_TASK_STATE { EM_CURRENT_TASK_STATE_UNKNWON, // 未知 EM_CURRENT_TASK_STATE_FAILED, // 任务处理失败 EM_CURRENT_TASK_STATE_SUCCEEDED, // 任务处理成功 }EM_CURRENT_TASK_STATE; ///@brief 错误码 typedef enum tagEM_ERROR_CODE_TYPE { EM_ERROR_CODE_TYPE_UNKNOWN, // 未知错误 EM_ERROR_CODE_TYPE_NORMAL, // 正常 EM_ERROR_CODE_TYPE_GET_PICTURE_ERROR, // 图片获取失败 EM_ERROR_CODE_TYPE_ALGO_ERROR, // 算法错误 }EM_ERROR_CODE_TYPE; ///@brief 节点信息 typedef struct tagNET_NODE_INFO { unsigned int nChannel; // 视频通道号 unsigned int nPresetID; // 预置点ID EM_INSTRUMENT_TYPE emInstrumentType; // 仪表类型 NET_IMAGE_INFO stuImgaeInfo[MAX_IMAGE_INFO_NUM]; // 图片信息 int nRetImageInfoNum; // 返回的图片信息个数 char szDialResult[MAX_DIAL_RESULT_LEN]; // 分析结果字符串 }NET_NODE_INFO; ///@brief 节点类型 typedef enum tagEM_NODE_INFO_TYPE { EM_NODE_INFO_TYPE_UNKNOWN, // 未知 EM_NODE_INFO_TYPE_DIAL_RECOGNITION, // 仪表识别 EM_NODE_INFO_TYPE_ELECTRIC_FAULT_DETECT, // 仪表类缺陷检测 EM_NODE_INFO_TYPE_QRCODE_CHECK, // 二维码检测 } EM_NODE_INFO_TYPE; ///@brief 仪表类缺陷检测 typedef struct tagNET_ELECTRIC_FAULT_DETECT_INFO { EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nChannel; // 视频通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nPresetID; // 预置点ID int nEnableRulesNum; // 设备所使能的检测规则个数 ELECTRIC_FAULT_ENABLE_RULES emEnableRules[16]; // 对应设备所使能的检测规则 int nAirborneDetectNum; // 挂空悬浮物检测异常输出结果个数 NET_AIRBORNE_DETECT stuAirborneDetectInfo[8]; // 挂空悬浮物检测异常输出结果 int nNestDetectNum; // 鸟巢检测结果个数 NET_NEST_DETECT stuNestDetectInfo[8]; // 鸟巢检测结果 int nDialDetectNum; // 表盘检测结果个数 NET_DIAL_DETECT stuDialDetectInfo[8]; // 表盘检测结果 int nLeakageDetectNum; // 渗漏检测结果个数 NET_LEAKAGE_DETECT stuLeakageDetectInfo[8]; // 渗漏检测结果 int nDoorDetectNum; // 箱门检测结果个数 NET_DOOR_DETECT stuDoorDetectInfo[8]; // 箱门检测结果 int nRespiratorDetectNum; // 呼吸器检测个数 NET_RESPIRATOR_DETECT stuRespiratorDetectInfo[8]; // 呼吸器检测结果 SCENE_IMAGE_INFO stuSceneImageInfo; // 大图 int nSmokingDetectNum; // 吸烟检测结果个数 NET_SMOKING_DETECT stuSmokingDetectInfo[8]; // 吸烟检测结果 int nInsulatorDetectNum; // 绝缘子检测结果个数 NET_INSULATOR_DETECT stuInsulatorDetectInfo[8]; // 绝缘子检测结果 int nCoverPlateDetectNum; // 盖板检测结果个数 NET_COVER_PLATE_DETECT stuCoverPlateDetectInfo[8]; // 盖板检测结果 int nPressingPlateDetectNum; // 压板检测结果个数 NET_PRESSING_PLATE_DETECT stuPressingPlateDetectInfo[8]; // 压板检测结果 BYTE bReserved[1024]; // 预留字段 } NET_ELECTRIC_FAULT_DETECT_INFO; ///@brief 二维码检测信息 typedef struct tagNET_QRCODE_CHECK_INFO { EM_CLASS_TYPE emClassType; // 智能事件所属大类 UINT nChannel; // 视频通道号 char szName[DH_EVENT_NAME_LEN]; // 事件名称 double PTS; // 时间戳(单位是毫秒) NET_TIME_EX UTC; // 事件发生的时间 int nEventID; // 事件ID UINT nPresetID; // 预置点ID BYTE byReserved1[4]; // 对齐 char szQRCode[512]; // 二维码字符串 BYTE byReserved[1024]; // 预留字节 } NET_QRCODE_CHECK_INFO; ///@brief 任务状态结果 typedef struct tagNET_TASK_STATE { char szTaskID[MAX_TASK_ID_LEN]; // 任务ID EM_CURRENT_TASK_STATE emTaskState; // 当前任务处理状态 EM_ERROR_CODE_TYPE emErrorCode; // 错误码 NET_NODE_INFO stuNodeInfo; // 节点信息,节点类型仅仅为EM_NODE_INFO_TYPE_DIAL_RECOGNITION, 此字段有效,且与pstuNodeInfo的内容相同 // 用此字段为旧平台软件使用, 新的平台软件统一用pstuNodeInfo EM_NODE_INFO_TYPE emNodeInfoType; // 节点类型 void* pstuNodeInfo; // 节点类型为EM_NODE_INFO_TYPE_DIAL_RECOGNITION, 用NET_NODE_INFO // 节点类型为EM_NODE_INFO_TYPE_ELECTRIC_FAULT_DETECT, 用NET_ELECTRIC_FAULT_DETECT_INFO // 节点类型为EM_NODE_INFO_TYPE_QRCODE_CHECK, 用NET_QRCODE_CHECK_INFO }NET_TASK_STATE; ///@brief 任务状态结果回调函数原形,lAttachHandle 是 CLIENT_AttachDialRecognitionTaskProc 返回值 typedef void (CALLBACK *fTaskStateCallback) (LLONG lAttachHandle, NET_TASK_STATE* pBuf, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser); ///@brief CLIENT_AttachDialRecognitionTaskProc接口入参 typedef struct tagNET_IN_ATTACH_TASK_PROC { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 预留对齐字节 fTaskStateCallback cbTaskState; // 任务状态结果回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_TASK_PROC; ///@brief CLIENT_AttachDialRecognitionTaskProc接口出参 typedef struct tagNET_OUT_ATTACH_TASK_PROC { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_TASK_PROC; ///@brief 注册仪表任务状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDialRecognitionTaskProc(LLONG lLoginID, const NET_IN_ATTACH_TASK_PROC* pInParam, NET_OUT_ATTACH_TASK_PROC* pOutParam, int nWaitTime); ///@brief 取消注册仪表任务状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDialRecognitionTaskProc(LLONG lAttachHandle); ///@brief 本地实体证书类型 typedef enum tagEM_LOCAL_CERTIFICATE_TYPE { EM_LOCAL_CERTIFICATE_TYPE_UNKNOWN, // 未知 EM_LOCAL_CERTIFICATE_TYPE_IDENTITY_AUTH_CERT, // 供身份认证使用的本地实体证书 EM_LOCAL_CERTIFICATE_TYPE_DATA_AUTH_CERT, // 供信令及码流数据签名使用的本地实体证书 }EM_LOCAL_CERTIFICATE_TYPE; ///@brief 国密特定网络类型 typedef enum tagEM_NETWORK_TYPE { EM_NETWORK_TYPE_PUBLIC_SECURITY_INFO_NETWORK, // 公安信息网 EM_NETWORK_TYPE_VIDEO_PRIVATE_NETWORK, // 视频专网 }EM_NETWORK_TYPE; ///@brief 证书管理类型 typedef enum tagEM_DIGITAL_CERTIFICATE_TYPE { EM_DIGITAL_CERTIFICATE_TYPE_UNKNOWN, // 未知 EM_DIGITAL_CERTIFICATE_TYPE_GM, // 国密类型 EM_DIGITAL_CERTIFICATE_TYPE_GENERAL, // 通用类型 EM_DIGITAL_CERTIFICATE_TYPE_MAX, // 枚举最大值,若增加枚举,则在这之前增加 }EM_DIGITAL_CERTIFICATE_TYPE; ///@brief CLIENT_GetCertReqInfo接口入参 typedef struct tagNET_IN_GET_CERT_REQINFO { DWORD dwSize; // 结构体大小 EM_LOCAL_CERTIFICATE_TYPE emLocalCertType; // 本地实体证书类型 int nForm; // 请求文件的类型,0表示PKCS#10,默认为0 char szCountry[MAX_COUNTRY_CODE_LEN]; // 证书持有者所在国家代号 char szProvince[MAX_PROVINCE_CODE_LEN]; // 证书持有者所在省份代号 char szCity[MAX_CITY_CODE_LEN]; // 证书持有者所在城市代号 char szArea[MAX_AREA_CODE_LEN]; // 证书持有者所在区域代号 EM_NETWORK_TYPE emSpecificNetworkType; // 国密特定网络类型 EM_DIGITAL_CERTIFICATE_TYPE emDigitalCertificateType; // 证书管理类型 char szCommonName[160]; // 使用者名称 char szOrganization[64]; // 组织名称 char szOrganizationUnit[64]; // 组织单元 int nPubKeyType; // 生成证书请求的公钥类型, 0:未知, 1:RSA2048, 2:SM2 }NET_IN_GET_CERT_REQINFO; ///@brief CLIENT_GetCertReqInfo接口出参 typedef struct tagNET_OUT_GET_CERT_REQINFO { DWORD dwSize; // 结构体大小 int nReqInfoLen; // 返回的请求文件实际大小 char szReqInfo[MAX_REQ_INFO_LEN]; // 返回的请求文件 char szSigInfo[1024]; // 证书文件签名 char szSigAlg[64]; // 签名算法 char szCACertSN[40]; // 证书SN号 char szIssuer[512]; // 颁发者信息 }NET_OUT_GET_CERT_REQINFO; ///@brief 获取制作证书时的请求文件,pstInParam和pstOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCertReqInfo(LLONG lLoginID, NET_IN_GET_CERT_REQINFO *pstInParam, NET_OUT_GET_CERT_REQINFO *pstOutParam, int nWaitTime); ///@brief 证书类型 typedef enum tagEM_CERT_TYPE { EM_CERT_TYPE_UNKNWON, // 未知 EM_CERT_TYPE_CA_CERT, // 根级CA证书 EM_CERT_TYPE_ADMIN_CERT, // 本地管理员登录证书IdentityAuthCert EM_CERT_TYPE_IDENTITY_AUTH_CERT, // 本地实体证书, 身份认证使用 EM_CERT_TYPE_DATA_AUTH_CERT, // 本地实体证书,信令及码流数据签名使用 EM_CERT_TYPE_REMOTE_IDENTITY_AUTH_CERT, // 远端实体证书, 身份认证使用(仅过检时使用) EM_CERT_TYPE_REMOTE_DATA_AUTH_CERT, // 远端实体证书,信令及码流数据签名使用(仅过检时使用) EM_CERT_TYPE_MAX, // 枚举最大值,以后再增加枚举往EM_CERT_TYPE_MAX前加 }EM_CERT_TYPE; ///@brief 证书使用的服务列表 typedef enum tagEM_CERT_SERVER_NAME { EM_CERT_SERVER_NAME_GENERAL, // General EM_CERT_SERVER_NAME_802_1X, // 802.1x EM_CERT_SERVER_NAME_HTTPS, // HTTP over ssl/tls EM_CERT_SERVER_NAME_MAX, // 枚举最大值,以后再增加枚举往EM_SERVER_NAME_MAX前增加 }EM_CERT_SERVER_NAME; ///@brief CLIENT_ImportCert 接口入参 typedef struct tagNET_IN_IMPORT_CERT { DWORD dwSize; // 结构体大小 EM_CERT_TYPE emCertType; // 证书类型 char* pszCert; // 证书内容,由用户申请内存,大小为nCertLen int nCertLen; // 证书内容实际长度,不能超过5300个字节 BOOL bActiveCert; // 是否有激活证书,当emDigitalCertificateType为EM_DIGITAL_CERTIFICATE_TYPE_GENERAL时有效 char szUserName[64]; // 管理员用户,当emCertType为EM_CERT_TYPE_ADMIN_CERT时有效 EM_DIGITAL_CERTIFICATE_TYPE emDigitalCertificateType; // 证书管理类型 int nKeyLen; // 与证书对应的私钥的实际长度,不能超过8192个字节 char* pszKey; // 与证书对应的私钥,由用户申请内存,大小为nKeyLen,当emDigitalCertificateType为EM_DIGITAL_CERTIFICATE_TYPE_GENERAL时有效 char szKeyPassword[64]; // 密钥文件加密密钥,当emDigitalCertificateType为EM_DIGITAL_CERTIFICATE_TYPE_GENERAL时有效 int nKeyPasswordLen; // 密钥文件加密密钥的实际长度 EM_CERT_SERVER_NAME emServerNames[8]; // 证书使用的服务列表,当emDigitalCertificateType为EM_DIGITAL_CERTIFICATE_TYPE_GENERAL时有效 // General和其他服务互斥,如果需要下发General,则nServerNameNum为1,emServerNames[0]=EM_CERT_SERVER_NAME_GENERAL int nServerNameNum; // 实际的证书使用的服务列表个数 }NET_IN_IMPORT_CERT; ///@brief 支持证书链信息 typedef struct tagNET_SUPPORT_CERT_LIST_INFO { EM_CERT_TYPE emCertType; // 证书类型 NET_TIME stuEffectiveDate; // 证书生效日期 NET_TIME stuExpirationDate; // 证书失效日期 char szCertSN[40]; // 证书序列号 char szDeviceIdentifier[160]; // 设备标识 char szRealCertSN[80]; // 证书真实序列号 int nPubKeyType; // 生成证书请求的公钥类型, 0:未知, 1:RSA2048, 2:SM2 int nCertUse; // 国密证书用途(仅nPubKeyType为2时有效), 0: 未知用途, 1: 签名, 2: 加密 BYTE byReserved[936]; // 预留字节 }NET_SUPPORT_CERT_LIST_INFO; ///@brief CLIENT_ImportCert 接口出参 typedef struct tagNET_OUT_IMPORT_CERT { DWORD dwSize; // 结构体大小 int nRetSupportCertListNum; // 返回的支持证书链个数 NET_SUPPORT_CERT_LIST_INFO stuSupportCertList[8]; // 支持证书链信息 }NET_OUT_IMPORT_CERT; ///@brief 导入已制作的数字证书,pstInParam和pstOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ImportCert(LLONG lLoginID, NET_IN_IMPORT_CERT *pstInParam, NET_OUT_IMPORT_CERT *pstOutParam, int nWaitTime); ///@brief CLIENT_ImportCRL接口入参 typedef struct tagNET_IN_IMPORT_CRL { DWORD dwSize; // 结构体大小 int nCRLLen; // CRL内容实际长度,大小不能超过5300个字节 char* pszCRL; // CRL内容,由用户申请内存,大小为nCRLLen EM_DIGITAL_CERTIFICATE_TYPE emDigitalCertificateType; // 证书管理类型 BYTE byReserved[4]; // 预留对齐字节 }NET_IN_IMPORT_CRL; ///@brief CLIENT_ImportCRL接口出参 typedef struct tagNET_OUT_IMPORT_CRL { DWORD dwSize; // 结构体大小 }NET_OUT_IMPORT_CRL; ///@brief 导入已制作的证书吊销列表,pstInParam和pstOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ImportCRL(LLONG lLoginID, NET_IN_IMPORT_CRL *pstInParam, NET_OUT_IMPORT_CRL *pstOutParam, int nWaitTime); ///@brief 协议名称 typedef enum tagEM_PROTOCOL_NAME { EM_PROTOCOL_NAME_UNKNOWN, // 未知 EM_PROTOCOL_NAME_GB28181, // Gb28181 EM_PROTOCOL_NAME_MAX, // 最大值 }EM_PROTOCOL_NAME; ///@brief CLIENT_IntervideoManagerGetVersion接口入参 typedef struct tagNET_IN_GET_VERSION { DWORD dwSize; // 结构体大小 EM_PROTOCOL_NAME emProtocolName; // 协议名称 }NET_IN_GET_VERSION; ///@brief CLIENT_IntervideoManagerGetVersion接口出参 typedef struct tagNET_OUT_GET_VERSION { DWORD dwSize; // 结构体大小 char szGB28181Version[MAX_GB28181_PROTOCOL_VERSION]; // GB28181协议版本 }NET_OUT_GET_VERSION; ///@brief 获取协议版本,pstInParam和pstOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_IntervideoManagerGetVersion(LLONG lLoginID, NET_IN_GET_VERSION *pstInParam, NET_OUT_GET_VERSION *pstOutParam, int nWaitTime); ///@brief CLIENT_NASFileSetUserAuthInfo接口入参 typedef struct tagNET_IN_SET_USER_AUTH_INFO { DWORD dwSize; // 结构体大小 char szPassword[DH_COMMON_STRING_128]; // 密码 char szPasswordHint[DH_COMMON_STRING_128]; // 密码提示问题 char szPhoneNo[DH_COMMON_STRING_32]; // 手机号,可选 char szEmail[DH_COMMON_STRING_128]; // 邮箱,可选 }NET_IN_SET_USER_AUTH_INFO; ///@brief CLIENT_NASFileSetUserAuthInfo接口出参 typedef struct tagNET_OUT_SET_USER_AUTH_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_USER_AUTH_INFO; ///@brief 配置隐私空间信息,pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NASFileSetUserAuthInfo(LLONG lLoginID, const NET_IN_SET_USER_AUTH_INFO* pInParam, NET_OUT_SET_USER_AUTH_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_NASFileModifyPassword接口入参 typedef struct tagNET_IN_MODIFY_PASSWORD { DWORD dwSize; // 结构体大小 char szOldPassword[DH_COMMON_STRING_128]; // 旧密码 char szNewPassword[DH_COMMON_STRING_128]; // 新密码 char szPasswordHint[DH_COMMON_STRING_128]; // 密码提示问题 }NET_IN_MODIFY_PASSWORD; ///@brief CLIENT_NASFileModifyPassword接口出参 typedef struct tagNET_OUT_MODIFY_PASSWORD { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_PASSWORD; ///@brief 修改隐私空间密码,pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NASFileModifyPassword(LLONG lLoginID, const NET_IN_MODIFY_PASSWORD* pInParam, NET_OUT_MODIFY_PASSWORD* pOutParam, int nWaitTime); ///@brief CLIENT_NASFileAuthenticate接口入参 typedef struct tagNET_IN_AUTHENTICATE { DWORD dwSize; // 结构体大小 char szPassword[DH_COMMON_STRING_128]; // 验证密码 }NET_IN_AUTHENTICATE; ///@brief CLIENT_NASFileAuthenticate接口出参 typedef struct tagNET_OUT_AUTHENTICATE { DWORD dwSize; // 结构体大小 }NET_OUT_AUTHENTICATE; ///@brief 鉴权密码功能,pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NASFileAuthenticate(LLONG lLoginID, const NET_IN_AUTHENTICATE* pInParam, NET_OUT_AUTHENTICATE* pOutParam, int nWaitTime); ///@brief 扩展模块类型 typedef enum tagEM_EXMODULE_TYPE { EM_EXMODULE_TYPE_UNKNOWN, //未知 EM_EXMODULE_TYPE_M_BUS, //M-BUS EM_EXMODULE_TYPE_RS_485, //RS-485 }EM_EXMODULE_TYPE; ///@brief CLIENT_GetExModuleInfo接口入参(对应枚举NET_EM_GET_EXMODULE_INFO_DETAIL) typedef struct tagNET_IN_GETEXMODULEDETAIL { DWORD dwSize; //结构体大小 EM_EXMODULE_TYPE emType; //扩展模块类型 int nAddr; //扩展模块编号 }NET_IN_GETEXMODULEDETAIL; ///@brief CLIENT_GetExModuleInfo接口出参(对应枚举NET_EM_GET_EXMODULE_INFO_DETAIL) typedef struct tagNET_OUT_GETEXMODULEDETAIL { DWORD dwSize; //结构体大小 int nAlarmInChannelCount; //报警输入通道号数量 int alarmInChannels[16]; //报警输入对应的通道号。模块报警输入对应的通道号,没有映射时为-1 int nAlarmOutChannelCount; //报警输出通道号数量 int alarmOutChannels[16]; //报警输出对应的通道号。模块报警输出对应的通道号,没有映射时为-1 }NET_OUT_GETEXMODULEDETAIL; ///@brief 扩展模块类型 typedef enum tagNET_EM_GET_EXMODULE_INFO { NET_EM_GET_EXMODULE_INFO_UNKNOWN, //未知 NET_EM_GET_EXMODULE_INFO_DETAIL, //获取扩展模块详细信息。(入参NET_IN_GETEXMODULEDETAIL,出参NET_OUT_GETEXMODULEDETAIL) NET_EM_GET_EXMODULE_INFO_STATE, //获取扩展模块状态。(入参NET_IN_EXMODULE_INFO,出参NET_OUT_EXMODULE_INFO_ALL) }NET_EM_GET_EXMODULE_INFO; ///@brief 获取扩展模块信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetExModuleInfo(LLONG lLoginID, NET_EM_GET_EXMODULE_INFO emType,const void *pstuInParam, void *pstuOutParam, int nWaitTime); ///@brief CLIENT_GetNationInfo 入参 typedef struct tagNET_IN_GET_NATIONINFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_NATIONINFO; #define NET_COUNTRYZONE_LENGTH 64 // 国家/地区名称长度 #define NET_COUNTRYABBR_LENGTH 4 // 国家/地区简称长度 #define NET_LANGUAGE_LENGTH 12 // 默认语言长度 #define NET_TIMEZONE_LENGTH 80 // 默认时区值描述长度 ///@brief 国家/地区相关信息 typedef struct tagNET_NATION_INFO{ char szCountry[NET_COUNTRYZONE_LENGTH]; // 国家/地区名称,符合ISO3166标准 char szAbbreviation[NET_COUNTRYABBR_LENGTH]; // 国家/地区简称,符合ISO3166标准 char szLanguage[NET_LANGUAGE_LENGTH]; // 默认语言, 由于协议扩展,请使用szLanguageEx EM_VIDEO_STANDARD emVideoStandard; // 默认视频制式 char szTimeZoneDesc[NET_TIMEZONE_LENGTH]; // 默认时区值描述 char szLanguageEx[32]; // 默认语言扩展 BYTE byReserved[96]; // 保留字节 }NET_NATION_INFO; ///@brief CLIENT_GetNationInfo 出参 typedef struct tagNET_OUT_GET_NATIONINFO { DWORD dwSize; // 结构体大小 int nNationInfoCnt; // 国家的个数 NET_NATION_INFO arrNationInfo[300]; // 国家/地区相关信息,是个数组 }NET_OUT_GET_NATIONINFO; ///@brief 获取设备国家语言制式等对应表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNationInfo(LLONG lLoginID, NET_IN_GET_NATIONINFO* pInParam, NET_OUT_GET_NATIONINFO* pOutParam, int waittime); ///@brief CLIENT_GetLanguageList 入参 typedef struct tagNET_IN_GET_LANGUAGELIST { DWORD dwSize; // 结构体大小 }NET_IN_GET_LANGUAGELIST; #define NET_LANGUAGELIST_LENGTH 12 // 语言列表的长度 ///@brief CLIENT_GetLanguageList 出参 typedef struct tagNET_OUT_GET_LANGUAGELIST { DWORD dwSize; // 结构体大小 int nLangueListCnt; // 语言列表的个数,该字段废弃,请使用nLangueListCntEx char arrLanguageList[50][NET_LANGUAGELIST_LENGTH]; // 语言列表是个数组,该字段废弃,请使用arrLanguageListEx int nLangueListCntEx; // 语言列表的个数扩展 char arrLanguageListEx[50][24]; // 语言列表扩展 }NET_OUT_GET_LANGUAGELIST; ///@brief 获取设备支持的语言列表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLanguageList(LLONG lLoginID, NET_IN_GET_LANGUAGELIST* pInParam, NET_OUT_GET_LANGUAGELIST* pOutParam, int waittime); #define MAX_SCENEID_LEN 32 //场景ID最大长度 ///@brief CLIENT_ConfirmSceneChangeResult 输入参数 typedef struct tagNET_IN_CONFIRMSCENECHANGERESULT_INFO { DWORD dwSize; // 结构体大小 char szSceneID[MAX_SCENEID_LEN]; // 场景ID BOOL bResult; // 处理结果: TRUE表示成功 FALSE表示失败 }NET_IN_CONFIRMSCENECHANGERESULT_INFO; ///@brief CLIENT_ConfirmSceneChangeResult 输出参数 typedef struct tagNET_OUT_CONFIRMSCENECHANGERESULT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CONFIRMSCENECHANGERESULT_INFO; ///@brief 确认智能家居场景切换结果 pstuInParam和pstuOutParam内存由用户分配和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ConfirmSceneChangeResult(LLONG lLoginID, const NET_IN_CONFIRMSCENECHANGERESULT_INFO *pstuInParam, NET_OUT_CONFIRMSCENECHANGERESULT_INFO *pstuOutParam, int nWaitTime); ///@brief CLIENT_ConfirmAuthorizedResult 输入参数 typedef struct tagNET_IN_CONFIRM_AUTHORIZED_RESULT { DWORD dwSize; // 结构体大小 int nResult; // 0:二维码信息有效,非0:错误码 // 0x01: 业务人员未在管理后台配置信息/云端未找到该家庭的配置信息 // 0x02: APP账号未绑定智能家居设备 char* pszQRCode; // 二维码信息,base64编码 BOOL bIsTest; // 下发的是否为体验二维码; TRUE:下发的是体验二维码, FALSE:下发的是正式二维码 UINT nTimeout; // 二维码有效时间, 单位:秒, 仅下发体验二维码时有效 UINT nExpiryTime; // 用户体验时间, 单位:秒, 仅下发体验二维码时有效 }NET_IN_CONFIRM_AUTHORIZED_RESULT; ///@brief CLIENT_ConfirmAuthorizedResult 输出参数 typedef struct tagNET_OUT_CONFIRM_AUTHORIZED_RESULT { DWORD dwSize; // 结构体大小 }NET_OUT_CONFIRM_AUTHORIZED_RESULT; ///@brief 确认智能家居授权二维码信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ConfirmAuthorizedResult(LLONG lLoginID, const NET_IN_CONFIRM_AUTHORIZED_RESULT* pstInParam, NET_OUT_CONFIRM_AUTHORIZED_RESULT* pstOutParam, int nWaitTime); ///@brief CLIENT_GetSensorCollectSupportList接口入参 typedef struct tagNET_IN_GET_SENSOR_COLLECT_SUPPORT_LIST { DWORD dwSize; // 结构体大小 } NET_IN_GET_SENSOR_COLLECT_SUPPORT_LIST; ///@brief 传感器传输介质 typedef enum tagEM_SENSOR_MEDIA_TYPE { EM_SENSOR_MEDIA_TYPE_UNKNOWN, // 未知 EM_SENSOR_MEDIA_TYPE_COAXIAL, // 同轴接入的传感器 EM_SENSOR_MEDIA_TYPE_433, // 通过433接入的传感器 } EM_SENSOR_MEDIA_TYPE; ///@brief 无线传感器类型 typedef enum tagEM_WIRELESS_SENSOR_TYPE { EM_WIRELESS_SENSOR_TYPE_UNKNOWN, // 未知类型 EM_WIRELESS_SENSOR_TYPE_HUMIDITY_SENSOR, // 湿度传感器 EM_WIRELESS_SENSOR_TYPE_TEMP_SENSOR, // 温度传感器 EM_WIRELESS_SENSOR_TYPE_DOOR_MAGNETISM, // 门磁传感器 EM_WIRELESS_SENSOR_TYPE_URGENCY_BUTTON, // 紧急按钮 EM_WIRELESS_SENSOR_TYPE_PASSIVE_INFRARED, // 被动红外 EM_WIRELESS_SENSOR_TYPE_CURTAIN_SENSOR, // 幕帘 EM_WIRELESS_SENSOR_TYPE_WATER_SENSOR, // 水浸传感 EM_WIRELESS_SENSOR_TYPE_SMOKING_SENSOR, // 烟雾传感 EM_WIRELESS_SENSOR_TYPE_COAXIAL_EXTALARM, // 同轴外部报警 } EM_WIRELESS_SENSOR_TYPE; ///@brief 传感器ID信息 typedef struct tagNET_SENSOR_ID_INFO { EM_SENSOR_MEDIA_TYPE emMediaType; // 传感器传输介质 DWORD nAPIndex; // 接入点序号 DWORD nAlarmChannel; // 报警通道号 NET_WIRELESS_DEVICE_TYPE emDeviceType; // 无线设备类型 EM_WIRELESS_SENSOR_TYPE emSensorType; // 传感器类型 BYTE byReserved[128]; // 保留字节 } NET_SENSOR_ID_INFO; // 传感器ID数组最大个数 #define MAX_SENSOR_ID_COUNT 256 ///@brief CLIENT_GetSensorCollectSupportList接口出参 typedef struct tagNET_OUT_GET_SENSOR_COLLECT_SUPPORT_LIST { DWORD dwSize; // 结构体大小 int nCount; // 传感器ID数量 NET_SENSOR_ID_INFO stInfo[MAX_SENSOR_ID_COUNT];// 传感器ID数组 } NET_OUT_GET_SENSOR_COLLECT_SUPPORT_LIST; ///@brief 获取可采集的传感器列表, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSensorCollectSupportList(LLONG lLoginID, const NET_IN_GET_SENSOR_COLLECT_SUPPORT_LIST* pInParam, NET_OUT_GET_SENSOR_COLLECT_SUPPORT_LIST* pOutParam, int nWaitTime); ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_REMOTELOWRATEWPAN_ALARMBELL命令参数 typedef struct tagNET_IN_START_REMOTELOWRATEWPAN_ALARMBELL { DWORD dwSize; // 结构体大小 int nChannelID; // 视频通道号(-1表示全通道) } NET_IN_START_REMOTELOWRATEWPAN_ALARMBELL; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_START_REMOTELOWRATEWPAN_ALARMBELL命令参数 typedef struct tagNET_OUT_START_REMOTELOWRATEWPAN_ALARMBELL { DWORD dwSize; // 结构体大小 } NET_OUT_START_REMOTELOWRATEWPAN_ALARMBELL; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_STOP_REMOTELOWRATEWPAN_ALARMBELL命令参数 typedef struct tagNET_IN_STOP_REMOTELOWRATEWPAN_ALARMBELL { DWORD dwSize; // 结构体大小 int nChannelID; // 视频通道号(-1表示全通道) } NET_IN_STOP_REMOTELOWRATEWPAN_ALARMBELL; ///@brief CLIENT_ControlDevice接口的 DH_CTRL_STOP_REMOTELOWRATEWPAN_ALARMBELL命令参数 typedef struct tagNET_OUT_STOP_REMOTELOWRATEWPAN_ALARMBELL { DWORD dwSize; // 结构体大小 } NET_OUT_STOP_REMOTELOWRATEWPAN_ALARMBELL; ///@brief 门禁对讲状态 typedef enum tagEM_CALL_STATUS { EM_CALL_STATUS_UNKNOWN, EM_CALL_STATUS_TRYING, // 通话请求正在处理事件 EM_CALL_STATUS_RINGING, // 主叫时,被叫回铃事件 EM_CALL_STATUS_PREPARECONNECTED, // 收到对端通话接通 EM_CALL_STATUS_CONNECTED, // 双方通话已经正式建立 EM_CALL_STATUS_CALLED, // 被叫来电事件 EM_CALL_STATUS_PREPARELEAVINGMESSAGE, // 收到留言请求事件 EM_CALL_STATUS_LEAVINGMESSAGECONNECTED, // 留言通话接通事件 EM_CALL_STATUS_CALLEND, // 呼叫结束事件 EM_CALL_STATUS_CALLTRANSFER, // 转移呼叫到其他设备 EM_CALL_STATUS_CALLTRANSFERCONNECTED, // 呼叫转移接通 EM_CALL_STATUS_HELD, // 呼叫保持 EM_CALL_STATUS_RESUME, // 呼叫召回 EM_CALL_STATUS_DND, // 免打扰 EM_CALL_STATUS_REMOTESDPCHANGE, // 远端SDP改变 EM_CALL_STATUS_REFUSE, // 拒接 }EM_CALL_STATUS; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_SET_THIRD_CALLSTATUS 命令参数入参 typedef struct tagNET_IN_VTP_THIRDCALL_STATUS { DWORD dwSize; EM_CALL_STATUS emCallStatus; // 门禁对讲状态 }NET_IN_VTP_THIRDCALL_STATUS; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_SET_THIRD_CALLSTATUS 命令参数出参 typedef struct tagNET_OUT_VTP_THIRDCALL_STATUS { DWORD dwSize; char szCallID[64]; // 对讲id }NET_OUT_VTP_THIRDCALL_STATUS; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_ACCESS_CLEAR_STATUS 命令参数入参 typedef struct tagNET_IN_ACCESS_CLEAR_STATUS { DWORD dwSize; }NET_IN_ACCESS_CLEAR_STATUS; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_ACCESS_CLEAR_STATUS 命令参数出参 typedef struct tagNET_OUT_ACCESS_CLEAR_STATUS { DWORD dwSize; BOOL bClearResult; // 清除指令执行结果 }NET_OUT_ACCESS_CLEAR_STATUS; ///@brief 操作状态 typedef enum tagEM_ACCESS_DEAL_RECORD_STATUS { EM_ACCESS_DEAL_RECORD_STATUS_NO, // 无状态 EM_ACCESS_DEAL_RECORD_STATUS_ENTRY, // 进门 EM_ACCESS_DEAL_RECORD_STATUS_EXIT, // 出门 }EM_ACCESS_DEAL_RECORD_STATUS; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_ACCESS_DEAL_RECORD 命令参数入参 typedef struct tagNET_IN_ACCESS_DEAL_RECORD { DWORD dwSize; char szUserID[32]; // 用户ID int nType; // 0-查询, 1-设置 EM_ACCESS_DEAL_RECORD_STATUS emStatus; // 设置状态 }NET_IN_ACCESS_DEAL_RECORD; ///@brief CLIENT_ControlDeviceEx接口的 DH_CTRL_ACCESS_DEAL_RECORD 命令参数出参 typedef struct tagNET_OUT_ACCESS_DEAL_RECORD { DWORD dwSize; BOOL bDealResult; // 操作结果 EM_ACCESS_DEAL_RECORD_STATUS emStatus; // 查询状态 }NET_OUT_ACCESS_DEAL_RECORD; ///@brief 代理服务器地址 typedef struct tagNET_PROXY_SERVER_INFO { char szIP[DH_MAX_IPADDR_LEN_EX]; // IP地址 UINT nPort; // 端口 BYTE byReserved[84]; } NET_PROXY_SERVER_INFO ; ///@brief CLIENT_CheckCloudUpgrader 入参 typedef struct tagNET_IN_CHECK_CLOUD_UPGRADER { DWORD dwSize; // 结构体大小 UINT nWay; // 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测, 2-获取缓存的检测结果 NET_PROXY_SERVER_INFO stProxy; // 代理服务器地址, way==1时有意义 } NET_IN_CHECK_CLOUD_UPGRADER; ///@brief 云升级状态 typedef enum tagEM_CLOUD_UPGRADER_CHECK_STATE { EM_CLOUD_UPGRADER_CHECK_STATE_UNKNOWN, // 未知 EM_CLOUD_UPGRADER_CHECK_STATE_NONE, // 没有检测到更新 EM_CLOUD_UPGRADER_CHECK_STATE_REGULAR, // 一般升级 (需要用户确认, 只能向高版本) EM_CLOUD_UPGRADER_CHECK_STATE_EMERGENCY, // 强制升级 (设备自动检测执行, 可以向低版本) EM_CLOUD_UPGRADER_CHECK_STATE_AUTOMATIC, // 自动升级 (有新升级包, 自动升级, 需使能页面自动升级选项) } EM_CLOUD_UPGRADER_CHECK_STATE; ///@brief 云升级新版本升级包类型 typedef enum tagEM_CLOUD_UPGRADER_PACKAGE_TYPE { EM_CLOUD_UPGRADER_PACKAGE_TYPE_UNKNOWN, // 未知 EM_CLOUD_UPGRADER_PACKAGE_TYPE_ALL, // 整包 EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ, // 云台主控包 EM_CLOUD_UPGRADER_PACKAGE_TYPE_WEB, // Web EM_CLOUD_UPGRADER_PACKAGE_TYPE_LOGO, // Logo EM_CLOUD_UPGRADER_PACKAGE_TYPE_CUSTOM, // Custom EM_CLOUD_UPGRADER_PACKAGE_TYPE_GUI, // Gui EM_CLOUD_UPGRADER_PACKAGE_TYPE_PD, // PD EM_CLOUD_UPGRADER_PACKAGE_TYPE_DATA, // Data EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_POWER, // 云台电源 EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_LIGHT, // 云台灯光 EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_HEATER, // 云台加热器 } EM_CLOUD_UPGRADER_PACKAGE_TYPE; ///@brief CLIENT_CheckCloudUpgrader 出参 typedef struct tagNET_OUT_CHECK_CLOUD_UPGRADER { DWORD dwSize; // 结构体大小 EM_CLOUD_UPGRADER_CHECK_STATE emState; // 升级状态 EM_CLOUD_UPGRADER_PACKAGE_TYPE emPackageType; // 新版本升级包类型, State不为None需要返回 char szOldVersion[MAX_COMMON_STRING_64]; // 旧版本号, State不为None需要返回 char szNewVersion[MAX_COMMON_STRING_64]; // 新版本号,State不为None需要返回 char szAttention[MAX_COMMON_STRING_2048]; // 新的升级包更新内容 char szPackageURL[MAX_COMMON_STRING_256]; // 升级包下载地址(代理升级需要) char szPackageID[MAX_COMMON_STRING_64]; // 升级包ID char szCheckSum[MAX_COMMON_STRING_64]; // 升级包的SHA-256校验和 char szBuildTime[MAX_COMMON_STRING_32]; // 升级包构建时间 } NET_OUT_CHECK_CLOUD_UPGRADER; ///@brief 在线升级检查是否有可用升级包, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CheckCloudUpgrader(LLONG lLoginID, const NET_IN_CHECK_CLOUD_UPGRADER* pInParam, NET_OUT_CHECK_CLOUD_UPGRADER* pOutParam, int nWaitTime); ///@brief 升级包信息 typedef struct tagNET_CLOUD_UPGRADER_INFO { char szPackageURL[MAX_COMMON_STRING_256]; // 升级包下载地址(代理升级需要) char szPackageID[MAX_COMMON_STRING_64]; // 升级包ID char szCheckSum[MAX_COMMON_STRING_64]; // 升级包的SHA-256校验和 BYTE byReserved[1024]; // 保留字节 } NET_CLOUD_UPGRADER_INFO; ///@brief CLIENT_ExecuteCloudUpgrader 入参 typedef struct tagNET_IN_EXECUTE_CLOUD_UPGRADER { DWORD dwSize; // 结构体大小 char szNewVersion[MAX_COMMON_STRING_64]; // 上一次check得到的新版本号 UINT nWay; // 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测 NET_PROXY_SERVER_INFO stProxy; // 代理服务器地址, nWay==1时有意义 NET_CLOUD_UPGRADER_INFO stInfo; // 升级包信息 } NET_IN_EXECUTE_CLOUD_UPGRADER; ///@brief CLIENT_ExecuteCloudUpgrader 出参 typedef struct tagNET_OUT_EXECUTE_CLOUD_UPGRADER { DWORD dwSize; // 结构体大小 } NET_OUT_EXECUTE_CLOUD_UPGRADER; ///@brief 执行在线云升级, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ExecuteCloudUpgrader(LLONG lLoginID, const NET_IN_EXECUTE_CLOUD_UPGRADER* pInParam, NET_OUT_EXECUTE_CLOUD_UPGRADER* pOutParam, int nWaitTime); ///@brief CLIENT_GetCloudUpgraderState 入参 typedef struct tagNET_IN_GET_CLOUD_UPGRADER_STATE { DWORD dwSize; // 结构体大小 } NET_IN_GET_CLOUD_UPGRADER_STATE; ///@brief 在线升级状态 typedef enum tagEM_CLOUD_UPGRADER_STATE { EM_CLOUD_UPGRADER_STATE_UNKNOWN, // 未知 EM_CLOUD_UPGRADER_STATE_NOUPGRADE, // "Noupgrade"-未进行升级 EM_CLOUD_UPGRADER_STATE_PREPARING, // "Preparing"-准备升级 EM_CLOUD_UPGRADER_STATE_DOWNLOADING, // "Downloading"-正在下载数据 EM_CLOUD_UPGRADER_STATE_DOWNLOADFAILED, // "DownloadFailed"-下载失败 EM_CLOUD_UPGRADER_STATE_UPGRADING, // "Upgrading"-正在升级 EM_CLOUD_UPGRADER_STATE_INVALID, // "Invalid"-升级包不正确 EM_CLOUD_UPGRADER_STATE_FAILED, // "Failed"-升级包写入Flash失败 EM_CLOUD_UPGRADER_STATE_SUCCEEDED, // "Succeeded"-升级包写入Flash成功 } EM_CLOUD_UPGRADER_STATE; ///@brief CLIENT_GetCloudUpgraderState 出参 typedef struct tagNET_OUT_GET_CLOUD_UPGRADER_STATE { DWORD dwSize; // 结构体大小 EM_CLOUD_UPGRADER_STATE emState; // 升级状态 UINT nProgress; // 升级进度, 状态是Downloading/Upgrading时有意义 } NET_OUT_GET_CLOUD_UPGRADER_STATE; ///@brief 获取云升级在线升级状态, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCloudUpgraderState(LLONG lLoginID, const NET_IN_GET_CLOUD_UPGRADER_STATE* pInParam, NET_OUT_GET_CLOUD_UPGRADER_STATE* pOutParam, int nWaitTime); ///@brief CLIENT_GetCloudUpgraderAutoCheck 输入参数 typedef struct tagNET_IN_GET_CLOUD_UPGRADER_AUTO_CHECK { DWORD dwSize; // 结构体大小, 必须赋值 } NET_IN_GET_CLOUD_UPGRADER_AUTO_CHECK; ///@brief CLIENT_GetCloudUpgraderAutoCheck 输出参数 typedef struct tagNET_OUT_GET_CLOUD_UPGRADER_AUTO_CHECK { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bFlag; // 检测标记, TRUE-打开定时检测 FALSE-关闭定时检测 } NET_OUT_GET_CLOUD_UPGRADER_AUTO_CHECK; ///@brief 获取是否开启了云升级周期检测 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCloudUpgraderAutoCheck(LLONG lLoginID, const NET_IN_GET_CLOUD_UPGRADER_AUTO_CHECK* pstuInParam, NET_OUT_GET_CLOUD_UPGRADER_AUTO_CHECK* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetCloudUpgraderAutoCheck 输入参数 typedef struct tagNET_IN_SET_CLOUD_UPGRADER_AUTO_CHECK { DWORD dwSize; // 结构体大小, 必须赋值 BOOL bFlag; // 检测标记, TRUE-打开定时检测 FALSE-关闭定时检测 } NET_IN_SET_CLOUD_UPGRADER_AUTO_CHECK; ///@brief CLIENT_SetCloudUpgraderAutoCheck 输出参数 typedef struct tagNET_OUT_SET_CLOUD_UPGRADER_AUTO_CHECK { DWORD dwSize; // 结构体大小, 必须赋值 } NET_OUT_SET_CLOUD_UPGRADER_AUTO_CHECK; ///@brief 设置是否开启云升级周期检测 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetCloudUpgraderAutoCheck(LLONG lLoginID, const NET_IN_SET_CLOUD_UPGRADER_AUTO_CHECK* pstuInParam, NET_OUT_SET_CLOUD_UPGRADER_AUTO_CHECK* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetVideoDiagnosisChannelNumber 接口入参 typedef struct tagNET_IN_GET_SUPPORT_CHANNEL_NUM { DWORD dwSize; // 结构体大小 }NET_IN_GET_SUPPORT_CHANNEL_NUM; ///@brief CLIENT_GetVideoDiagnosisChannelNumber 接口出参 typedef struct tagNET_OUT_GET_SUPPORT_CHANNEL_NUM { DWORD dwSize; // 结构体大小 int nCount; // IVS-V支持的检测通道数目 }NET_OUT_GET_SUPPORT_CHANNEL_NUM; ///@brief 获取IVS-V支持的检测通道数目 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoDiagnosisChannelNumber(LLONG lLoginID, const NET_IN_GET_SUPPORT_CHANNEL_NUM* pInParam, NET_OUT_GET_SUPPORT_CHANNEL_NUM* pOutParam, int nWaitTime); #define MAX_VIDEO_CHANNEL_COUNT 128 // 最大视频通道号 ///@brief CLIENT_GetRemoteLowRateWPANCaps 入参 typedef struct tagNET_IN_GET_REMOTELOWRATEWPAN_CAPS { DWORD dwSize; // 结构体大小 int nChannelCount; // 实际要获取的视频通道个数 int stChannels[MAX_VIDEO_CHANNEL_COUNT]; // 视频通道号, 每一项对应单个通道的结果 } NET_IN_GET_REMOTELOWRATEWPAN_CAPS; ///@brief 设备能力 typedef struct tagNET_REMOTE_LOW_RATE_WPAN_CAPS { BOOL bSupportWirelessGateway; // 设备是否支持无线网关 BYTE byRevserved[256]; // 保留字节 } NET_REMOTE_LOW_RATE_WPAN_CAPS; ///@brief 返回结果 typedef enum tagEM_RETURN_CODE_TYPE { EM_RETURN_CODE_TYPE_UNKNOWN, // 未知 EM_RETURN_CODE_TYPE_OK, // 返回成功 EM_RETURN_CODE_TYPE_FAILED, // 返回失败 EM_RETURN_CODE_TYPE_TIMEOUT, // 返回超时 } EM_RETURN_CODE_TYPE; ///@brief CLIENT_GetRemoteLowRateWPANCaps 出参 typedef struct tagNET_OUT_GET_REMOTELOWRATEWPAN_CAPS { DWORD dwSize; // 结构体大小 int nRetChannelCount; // 实际返回的通道个数 NET_REMOTE_LOW_RATE_WPAN_CAPS stCaps[MAX_VIDEO_CHANNEL_COUNT]; // 每个视频通道对应的设备能力 int nRetCodeCount; // 实际返回的结果个数 EM_RETURN_CODE_TYPE stReturnCode[MAX_VIDEO_CHANNEL_COUNT]; // 每个视频通道对应的返回结果 } NET_OUT_GET_REMOTELOWRATEWPAN_CAPS; ///@brief 获取对应视频通道的设备能力, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteLowRateWPANCaps(LLONG lLoginID, const NET_IN_GET_REMOTELOWRATEWPAN_CAPS* pInParam, NET_OUT_GET_REMOTELOWRATEWPAN_CAPS* pOutParam, int nWaitTime); ///@brief CLIENT_GetCoaxialSensorInfo 入参 typedef struct tagNET_IN_GET_COAXIAL_SENSOR_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道, -1表示全部通道 } NET_IN_GET_COAXIAL_SENSOR_INFO; ///@brief 传感器大类 typedef enum tagEM_SENSOR_CLASS_TYPE { EM_SENSOR_CLASS_TYPE_UNKOWN, // 未知 EM_SENSOR_CLASS_TYPE_ALARM_IN, // 开关量报警输入类 EM_SENSOR_CLASS_TYPE_ALARM_OUT, // 报警输出类 EM_SENSOR_CLASS_TYPE_ANALOGALARM, // 模拟量输入 } EM_SENSOR_CLASS_TYPE; #define MAX_COAXIAL_SENSOR_INFO_COUNT 256 // 传感器信息最大个数 ///@brief 传感器信息 typedef struct tagNET_COAXIAL_SENSOR_INFO { NET_SENSOR_ID_INFO stSensorID; // 传感器ID信息 BOOL bIsOnLine; // 传感器是否在线 char szAlarmName[MAX_COMMON_STRING_128]; // 报警通道名称 EM_SENSOR_CLASS_TYPE emSensorClass; // 传感器大类 char szSN[MAX_COMMON_STRING_32]; // 传感器序列号 BYTE byRevserved[256]; // 保留字节 } NET_COAXIAL_SENSOR_INFO; ///@brief CLIENT_GetCoaxialSensorInfo 出参 typedef struct tagNET_OUT_GET_COAXIAL_SENSOR_INFO { DWORD dwSize; // 结构体大小 int nRetCount; // 返回的传感器ID数量 NET_COAXIAL_SENSOR_INFO stSensorInfo[MAX_COAXIAL_SENSOR_INFO_COUNT]; // 传感器信息数组 } NET_OUT_GET_COAXIAL_SENSOR_INFO; ///@brief 获取接入的传感器信息, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCoaxialSensorInfo(LLONG lLoginID, const NET_IN_GET_COAXIAL_SENSOR_INFO* pInParam, NET_OUT_GET_COAXIAL_SENSOR_INFO* pOutParam, int nWaitTime); #define MAX_VIDEO_URL_LEN 256 // 视频源URL地址长度 ///@brief 视频源信息 typedef struct tagNET_VIDEO_SOURCE_INFO { EM_DEV_PROTOCOL_TYPE emProtocolType; // 设备协议类型 char szIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // 前端设备IP 地址 int nPort; // 前端设备端口号 char szUser[DH_NEW_USER_NAME_LENGTH]; // 前端设备用户名 char szPwd[DH_NEW_USER_PSW_LENGTH]; // 前端设备密码 int nChannelID; // 前端设备通道号 char szStreamUrl[512]; // 视频源url地址, emProtocolType为EM_DEV_PROTOCOL_GENERAL 时有效 BYTE byReserved[256]; // 保留字节 } NET_VIDEO_SOURCE_INFO; ///@brief 图像质量 typedef enum tagEM_TRANSCODE_IMAGE_QUALITY { EM_TRANSCODE_IMAGE_QUALITY_SELFADAPT, // 自适应 EM_TRANSCODE_IMAGE_QUALITY_Q10, // 10% EM_TRANSCODE_IMAGE_QUALITY_Q30, // 30% EM_TRANSCODE_IMAGE_QUALITY_Q50, // 50% EM_TRANSCODE_IMAGE_QUALITY_Q60, // 60% EM_TRANSCODE_IMAGE_QUALITY_Q80, // 80% EM_TRANSCODE_IMAGE_QUALITY_Q100, // 100% } EM_TRANSCODE_IMAGE_QUALITY; ///@brief 虚拟转码视频压缩格式 typedef enum tagEM_TRANSCODE_VIDEO_COMPRESSION { EM_TRANSCODE_VIDEO_AUTO, // auto EM_TRANSCODE_VIDEO_MPEG4, // MPEG4 EM_TRANSCODE_VIDEO_MPEG2, // MPEG2 EM_TRANSCODE_VIDEO_MPEG1, // MPEG1 EM_TRANSCODE_VIDEO_MJPG, // MJPG EM_TRANSCODE_VIDEO_H263, // H.263 EM_TRANSCODE_VIDEO_H264, // H.264 EM_TRANSCODE_VIDEO_H265, // H.265 } EM_TRANSCODE_VIDEO_COMPRESSION; ///@brief 转码视频格式 typedef struct tagNET_TRANSCODE_VIDEO_FORMAT { EM_TRANSCODE_VIDEO_COMPRESSION emCompression; // 视频压缩格式 UINT nWidth; // 视频宽度 UINT nHeight; // 视频高度 NET_EM_BITRATE_CONTROL emBitRateControl; // 码流控制模式 UINT nBitRate; // 视频码流(kbps) float fFrameRate; // 视频帧率 UINT nIFrameInterval; // I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。 EM_TRANSCODE_IMAGE_QUALITY emImageQuality; // 图像质量 BYTE byReserved[512]; // 保留字节 } NET_TRANSCODE_VIDEO_FORMAT; ///@brief 转码音频格式 typedef struct tagNET_TRANSCODE_AUDIO_FORMAT { NET_EM_AUDIO_FORMAT emCompression; // 音频压缩模式 UINT nFrequency; // 音频采样频率 BYTE byReserved[512]; // 保留字节 } NET_TRANSCODE_AUDIO_FORMAT; ///@brief 转码抓图格式参数 typedef struct tagNET_TRANSCODE_SNAP_FORMAT { UINT nWidth; // 抓图宽度 UINT nHeight; // 抓图高度 BYTE byReserved[128]; // 保留字节 } NET_TRANSCODE_SNAP_FORMAT; ///@brief 转码水印参数 typedef struct tagNET_TRANSCODE_WATER_MARK { char szText[256]; // 水印文本信息 BYTE byReserved[512]; // 保留字节 } NET_TRANSCODE_WATER_MARK; ///@brief 虚拟通道转码策略 typedef struct tagNET_VIRTUALCHANNEL_POLICY { BOOL bDeleteByCaller; // 虚拟通道是否由调用者销毁 // 能力接口CLIENT_GetCapsOfTransCode出参NET_OUT_TRANSCODE_GET_CAPS.bSupportDelByCaller为TRUE时有效 BOOL bContinuous; // 是否持续转码 // 能力接口CLIENT_GetCapsOfTransCode出参NET_OUT_TRANSCODE_GET_CAPS.bSupportContinuous为TRUE时有效 UINT nVirtualChannel; // 虚拟通道号。当大于0时表示虚拟通道号由客户端指定和管理,范围处于 CLIENT_GetCapsOfTransCode返回的nMinVirtualChannel~nMaxVirtualChannel两值中间。否则由压缩设备管理 BYTE byReserved[508]; // 保留字节 } NET_VIRTUALCHANNEL_POLICY; ///@brief CLIENT_GetVirtualChannelOfTransCode 接口输入参数 typedef struct tagNET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE { DWORD dwSize; // 结构体大小 NET_VIDEO_SOURCE_INFO stuVideoSourceInfo; // 视频源信息 NET_TRANSCODE_VIDEO_FORMAT stuTransVideoFormat; // 转码视频格式 NET_TRANSCODE_AUDIO_FORMAT stuTransAudioFormat; // 转码音频格式 NET_VIRTUALCHANNEL_POLICY stuVirtualChnPolicy; // 虚拟通道转码策略 NET_TRANSCODE_SNAP_FORMAT stuSnapFormat; // 转码抓图格式参数 NET_TRANSCODE_WATER_MARK stuWaterMark[4]; // 水印配置 } NET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE; ///@brief CLIENT_GetVirtualChannelOfTransCode 接口输出参数 typedef struct tagNET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE { DWORD dwSize; // 结构体大小 UINT nVirtualChannel; // 虚拟通道号 } NET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE; ///@brief CLIENT_DelVirtualChannelOfTransCode 接口输入参数 typedef struct tagNET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE { DWORD dwSize; // 结构体大小 int nVirtualChannel; // 虚拟通道号, -1 表示删除所有虚拟通道号 } NET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE; ///@brief CLIENT_DelVirtualChannelOfTransCode 接口输出参数 typedef struct tagNET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE { DWORD dwSize; // 结构体大小 } NET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE; ///@brief CLIENT_GetCapsOfTransCode 接口输入参数 typedef struct tagNET_IN_TRANDCODE_GET_CAPS { DWORD dwSize; // 结构体大小 } NET_IN_TRANDCODE_GET_CAPS; ///@brief CLIENT_GetCapsOfTransCode 接口输出参数 typedef struct tagNET_OUT_TRANSCODE_GET_CAPS { DWORD dwSize; // 结构体大小 int nMinVirtualChannel; // 最小虚拟通道号 int nMaxVirtualChannel; // 最大虚拟通道号 BOOL bSupportErrorCode; // 是否支持压缩错误码实时上报 BOOL bSupportContinuous; // 是否支持从创建虚拟通道后持续转码直至虚拟通道被删除 BOOL bSupportDelByCaller; // 是否支持由调用者删除该虚拟通道 BOOL bSupportSpecifyVirtualChannel; // 是否支持由调用者指定虚拟通道号, // 此项为true时,调用CLIENT_GetVirtualChannelOfTransCode时指定虚拟通道nVirtualChannel,虚拟通道号必须在nMinVirtualChannel~nMaxVirtualChannel的范围内; // 当此项为false时,不支持客户端指定虚拟通道号。 float fMaxDownLoadSpeed; // 支持最大的压缩下载倍速 UINT nSupportCompressMaxChannel; // 设备当前支持的最多压缩通道数 char szSupportCompressResolutionRangeMin[32]; // 支持压缩的分辨率 最小值 char szSupportCompressResolutionRangeMax[32]; // 支持压缩的分辨率 最大值 int nSupportCompressFpsRangeMin; // 支持压缩的帧率 最小值 int nSupportCompressFpsRangeMax; // 支持压缩的帧率 最大值 char szSupportCompressAudioTypes[64][32]; // 支持的音频格式 int nSupportCompressAudioTypesNum; // 支持的音频格式个数 int nSupportCompressCompressionTypesNum; // 支持的视频压缩格式个数 char szSupportCompressCompressionTypes[64][32]; // 支持的视频压缩格式 } NET_OUT_TRANSCODE_GET_CAPS; ///@brief 虚拟转码通道状态 typedef enum tagEM_VIRCHANNEL_STATUS { EM_VIRCHANNEL_STATUS_UNKNOWN = -1, // 未知 EM_VIRCHANNEL_STATUS_OVER_DECODE, // 超出解码 EM_VIRCHANNEL_STATUS_OVER_COMPRESS, // 超出压缩 EM_VIRCHANNEL_STATUS_NO_ORIGI_STREAM, // 无原始码流 EM_VIRCHANNEL_STATUS_SLAVE_OFFLINE, // 压缩通道所在的从片掉线 EM_VIRCHANNEL_STATUS_UNKNOWN_FAILURE = 255, // 未知的失败原因 } EM_VIRCHANNEL_STATUS; ///@brief 虚拟转码通道状态信息 typedef struct tagNET_CB_VIRTUALCHANNEL_STATUS_INFO { UINT nVirChannelID; // 虚拟转码通道号 EM_VIRCHANNEL_STATUS emVirChannelStatus; // 虚拟转码通道状态 BYTE byReserved[1024]; // 保留字节 } NET_CB_VIRTUALCHANNEL_STATUS_INFO; ///@brief 虚拟转码通道状态订阅函数原型, lAttachHandle 为 CLIENT_AttachVirtualChannelStatus 函数的返回值 typedef int (CALLBACK *fVirtualChannelStatusCallBack)(const LLONG lAttachHandle, const NET_CB_VIRTUALCHANNEL_STATUS_INFO *pstVirChnStatusInfo, const LDWORD dwUser); ///@brief CLIENT_AttachVirtualChannelStatus 接口输入参数 typedef struct tagNET_IN_ATTACH_VIRTUALCHANNEL_STATUS { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 用于字节对齐 fVirtualChannelStatusCallBack cbVirtualChannelStatus; // 虚拟转码通道状态订阅函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_VIRTUALCHANNEL_STATUS; ///@brief CLIENT_GetRemoteCompressStatus 接口输入参数 typedef struct tagNET_IN_REMOTE_COMPRESS_STATUS { DWORD dwSize; // 结构体大小 } NET_IN_REMOTE_COMPRESS_STATUS; ///@brief 业务类型 typedef enum tagEM_REMOTE_COMPRESS_TRADE_TYPE { EM_REMOTE_COMPRESS_TRADE_UNKNOWN = -1, // 未知 EM_REMOTE_COMPRESS_TRADE_PLAY, // 压缩预览 EM_REMOTE_COMPRESS_TRADE_PLAYBACK, // 压缩回放 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_X2, // 压缩回放X2 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_X4, // 压缩回放X4 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_X8, // 压缩回放X8 EM_REMOTE_COMPRESS_TRADE_DOWNLOAD, // 压缩下载 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_HALF, // 压缩回放X1/2 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_QUARTER, // 压缩回放X1/4 EM_REMOTE_COMPRESS_TRADE_PLAYBACK_EIGHTH, // 压缩回放X1/8 } EM_REMOTE_COMPRESS_TRADE_TYPE; ///@brief 压缩状态 typedef enum tagEM_REMOTE_COMPRESS_STATUS { EM_REMOTE_COMPRESS_STATUS_UNKNOWN = -1, // 未知 EM_REMOTE_COMPRESS_STATUS_OVERDECODE, // 超出解码能力 EM_REMOTE_COMPRESS_STATUS_OVERCOMPRESS, // 超出压缩能力 EM_REMOTE_COMPRESS_STATUS_ABNORMALCHANNEL, // 远程通道异常 EM_REMOTE_COMPRESS_STATUS_OFFLINE, // 子卡掉线 EM_REMOTE_COMPRESS_STATUS_ABNORMALSTREAM, // 异常码流 EM_REMOTE_COMPRESS_STATUS_NORMAL, // 正常 EM_REMOTE_COMPRESS_STATUS_OTHER = 255, // 其他 } EM_REMOTE_COMPRESS_STATUS; ///@brief 远程通道的压缩状态信息 typedef struct tagNET_REMOTE_COMPRESS_STATUS_INFO { UINT nChannel; // 设备通道号, 可以表示本地通道或压缩任务虚拟通道号 UINT nRemoteChannel; // 远程设备通道号 char szIPAddr[64]; // 源始码流的IP地址 EM_DEV_PROTOCOL_TYPE emProtocolType; // 连接设备的协议类型 UINT nPort; // 端口号 EM_REMOTE_COMPRESS_TRADE_TYPE emTradeType; // 业务类型 EM_REMOTE_COMPRESS_STATUS emRemoteCompressStatus; // 压缩状态 CAPTURE_SIZE emOriginResolution; // 原始码流分辨率, 固定分辨率用字符串表示,和实际分辨率的对应关系如下。如果在分辨率列表中不存在、或者无法区分N制P制时,统一采用"WWxHH"的格式表示 UINT nOriginBitrate; // 当前获取的原始码流实时比特率, 单位 Kbps UINT nCompressBitrate; // 当前获取的压缩码流实时比特率, 单位 Kbps CAPTURE_SIZE emCompressResolution; // 压缩码流分辨率, 固定分辨率用字符串表示,和实际分辨率的对应关系如下。如果在分辨率列表中不存在、或者无法区分N制P制时,统一采用"WWxHH"的格式表示, INT64 nStartStreamTime; // 视频流开始压缩时间戳,调度任务下发的时间戳,按设备时间为准 char szOriginCompressionType[32]; // 原始码流视频格式,默认值是H.264 char szCompressCompressionType[32]; // 压缩后码流视频格式,默认值是H.264 BYTE byReserved[952]; // 保留字节 } NET_REMOTE_COMPRESS_STATUS_INFO; ///@brief CLIENT_GetRemoteCompressStatus 接口输出参数 typedef struct tagNET_OUT_REMOTE_COMPRESS_STATUS { DWORD dwSize; // 结构体大小 NET_REMOTE_COMPRESS_STATUS_INFO stuInfo[1024]; // 远程通道的压缩状态信息 int nstuInfoNum; // 远程通道的压缩状态信息数量 } NET_OUT_REMOTE_COMPRESS_STATUS; ///@brief 编码参数 typedef struct tagNET_REMOTE_COMPRESS_REMAIN_ENCODE { UINT nWidth; // 视频宽度,单位: 像素 UINT nHeight; // 视频高度,单位: 像素 UINT nFPS; // 视频帧率, 单位: 帧/秒 BYTE byReserved[126]; // 保留字节 } NET_REMOTE_COMPRESS_REMAIN_ENCODE; ///@brief CLIENT_GetRemoteCompressRemain 接口输出参数 typedef struct tagNET_IN_REMOTE_COMPRESS_REMAIN { DWORD dwSize; // 结构体大小 NET_REMOTE_COMPRESS_REMAIN_ENCODE stuEncode; // 编码参数 } NET_IN_REMOTE_COMPRESS_REMAIN; ///@brief CLIENT_GetRemoteCompressRemain 接口输出参数 typedef struct tagNET_OUT_REMOTE_COMPRESS_REMAIN { DWORD dwSize; // 结构体大小 UINT nChannelNum; // 剩余压缩路数 } NET_OUT_REMOTE_COMPRESS_REMAIN; ///@brief 获取转码虚拟通道号(虚拟通道号用于预览与回放), pInParam 和pOutParam 由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVirtualChannelOfTransCode(LLONG lLoginID, const NET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE* pInParam, NET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE* pOutParam, int nWaitTime); ///@brief 删除转码虚拟通道号, pInParam 和pOutParam 由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelVirtualChannelOfTransCode(LLONG lLoginID, const NET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE* pInParam, NET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE* pOutParam, int nWaitTime); ///@brief 获取转码能力集, pInParam 和pOutParam 由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCapsOfTransCode(LLONG lLoginID, const NET_IN_TRANDCODE_GET_CAPS* pInParam, NET_OUT_TRANSCODE_GET_CAPS* pOutParam, int nWaitTime); ///@brief 订阅虚拟转码通道状态, pInParam 由用户申请和释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachVirtualChannelStatus(LLONG lLoginID, const NET_IN_ATTACH_VIRTUALCHANNEL_STATUS* pInParam, const int nWaitTime); ///@brief 取消订阅虚拟转码通道状态, lAttachHandle 为 CLIENT_AttachVirtualChannelStatus 函数的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachVirtualChannelStatus(LLONG lAttachHandle); ///@brief 获取远程通道的压缩状态, pInParam 由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteCompressStatus(LLONG lLoginID, const NET_IN_REMOTE_COMPRESS_STATUS* pInParam, NET_OUT_REMOTE_COMPRESS_STATUS* pOutParam, int nWaitTime); ///@brief 获取压缩转码剩余能力, pInParam 由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteCompressRemain(LLONG lLoginID, const NET_IN_REMOTE_COMPRESS_REMAIN* pInParam, NET_OUT_REMOTE_COMPRESS_REMAIN* pOutParam, int nWaitTime); ////////////////////////////////////远程设备信息采集接口 start///////////////////////////////////////// ///@brief 远程设备信息采集能力入参,对应 NET_REMOTE_COLLECT_DEVINFO_CAPS typedef struct tagNET_IN_REMOTE_COLLECT_DEVINFO_CAPS { DWORD dwSize; // 结构体大小 UINT nChannel; // 远程设备通道号,若为IPC,请填0 }NET_IN_REMOTE_COLLECT_DEVINFO_CAPS; ///@brief 远程设备信息采集能力出参,对应 NET_REMOTE_COLLECT_DEVINFO_CAPS typedef struct tagNET_OUT_REMOTE_COLLECT_DEVINFO_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportRemoteCollectSniffer; // 是否支持远程采集抓包 BOOL bSupportRemoteCollectLog; // 是否支持远程采集串口日志 }NET_OUT_REMOTE_COLLECT_DEVINFO_CAPS; ///@brief 远程采集类型 typedef enum tagNET_EM_REMOTE_COLLECT_TYPE { NET_EM_REMOTE_COLLECT_TYPE_UNKNOWN = 0, // 未知 NET_EM_REMOTE_COLLECT_TYPE_CAPTURE, // 抓包 NET_EM_REMOTE_COLLECT_TYPE_LOG, // 日志 }NET_EM_REMOTE_COLLECT_TYPE; ///@brief 当前采集状态 typedef enum tagNET_EM_REMOTE_COLLECT_STATUS { NET_EM_REMOTE_COLLECT_STATUS_UNKNOWN = 0, // 未知 NET_EM_REMOTE_COLLECT_STATUS_IDLE, // 空闲 NET_EM_REMOTE_COLLECT_STATUS_COLLECTING, // 正在采集 }NET_EM_REMOTE_COLLECT_STATUS; ///@brief 日志级别 typedef enum tagNET_EM_REMOTE_COLLECT_LOG_LEVEL { NET_EM_REMOTE_COLLECT_LOG_LEVEL_NO_PRINT = 0, // 不打印 NET_EM_REMOTE_COLLECT_LOG_LEVEL_FATAL, // 致命 NET_EM_REMOTE_COLLECT_LOG_LEVEL_ERROR, // 错误 NET_EM_REMOTE_COLLECT_LOG_LEVEL_WARN, // 警告 NET_EM_REMOTE_COLLECT_LOG_LEVEL_INFO, // 提示 NET_EM_REMOTE_COLLECT_LOG_LEVEL_TRACE, // 跟踪 NET_EM_REMOTE_COLLECT_LOG_LEVEL_DEBUG, // 调试 }NET_EM_REMOTE_COLLECT_LOG_LEVEL; ///@brief 远程采集文件信息 typedef struct tagNET_REMOTE_COLLECT_FILE_INFO { char szFilePath[260]; // 文件路径 UINT nFileSize; // 文件大小,单位Byte BYTE byReserved[248]; // 预留 }NET_REMOTE_COLLECT_FILE_INFO; ///@brief 设备远程采集信息 typedef struct tagNET_REMOTE_COLLECT_DEV_INFO { NET_EM_REMOTE_COLLECT_TYPE emType; // 采集类型 NET_EM_REMOTE_COLLECT_STATUS emStatus; // 采集状态 NET_REMOTE_COLLECT_FILE_INFO stuFileInfos[128]; // 文件信息 int nFileInfoNum; // 文件个数 BYTE byReserved[1020]; // 预留 }NET_REMOTE_COLLECT_DEV_INFO; ///@brief 获取设备远程采集信息输入参数 typedef struct tagNET_IN_GET_REMOTE_COLLECT_DEV_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道号 }NET_IN_GET_REMOTE_COLLECT_DEV_INFO; ///@brief 获取设备远程采集信息输出参数 typedef struct tagNET_OUT_GET_REMOTE_COLLECT_DEV_INFO { DWORD dwSize; // 结构体大小 int nInfoNum; // 返回的信息个数 NET_REMOTE_COLLECT_DEV_INFO stuInfos[8]; // 采集信息列表 }NET_OUT_GET_REMOTE_COLLECT_DEV_INFO; ///@brief 抓包端口过滤方式 typedef enum tagNET_EM_PROT_FILTER_TYPE { NET_EM_PROT_FILTER_TYPE_NOUSE, // 不使用 NET_EM_PROT_FILTER_TYPE_INCLUDE, // 包含 NET_EM_PROT_FILTER_TYPE_EXCLUDE, // 排除 }NET_EM_PROT_FILTER_TYPE; ///@brief 文件采集规则信息 typedef struct tagNET_REMOTE_COLLECT_TO_FILE_RULE { NET_EM_REMOTE_COLLECT_TYPE emType; // 采集类型 NET_EM_REMOTE_COLLECT_LOG_LEVEL emLevel; // 日志级别,采集类型为日志时生效 char szNetworkCard[128]; // 网卡名称,采集类型为抓包时生效 NET_EM_PROT_FILTER_TYPE emSrcPortFilter; // 源端口过滤方式 int nSrcPortNum; // 源端口过滤列表个数 unsigned short nSrcPorts[16]; // 源端口过滤列表,采集类型为抓包时生效 NET_EM_PROT_FILTER_TYPE emDstPortFilter; // 目标端口过滤方式 int nDstPortNum; // 目标端口过滤列表个数 unsigned short nDstPorts[16]; // 目标端口过滤列表,采集类型为抓包时生效 BYTE byReserved[1024]; // 保留字节 }NET_REMOTE_COLLECT_TO_FILE_RULE; ///@brief CLIENT_StartRemoteCollectToFile 入参 typedef struct tagNET_IN_START_REMOTE_COLLECT_TO_FILE { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道号 NET_REMOTE_COLLECT_TO_FILE_RULE stuRules[8]; // 设备采集规则信息 int nRuleNum; // 设备采集规则数量 }NET_IN_START_REMOTE_COLLECT_TO_FILE; ///@brief CLIENT_StartRemoteCollectToFile 出参 typedef struct tagNET_OUT_START_REMOTE_COLLECT_TO_FILE { DWORD dwSize; // 结构体大小 }NET_OUT_START_REMOTE_COLLECT_TO_FILE; ///@brief 获取远程采集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteCollectDevInfo(LLONG lLoginID, NET_IN_GET_REMOTE_COLLECT_DEV_INFO* pstInParam, NET_OUT_GET_REMOTE_COLLECT_DEV_INFO* pstOutParam, int nWaitTime); ///@brief 开始文件方式远程采集设备信息接口 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRemoteCollectToFile(LLONG lLoginID, const NET_IN_START_REMOTE_COLLECT_TO_FILE* pInParam, NET_OUT_START_REMOTE_COLLECT_TO_FILE* pOutParam, const int nWaitTime); ///@brief 停止文件方式远程采集设备信息接口,lCollectID为 CLIENT_StartRemoteCollectToFile 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRemoteCollectToFile(LLONG lCollectID); ////////////////////////////////////远程设备信息采集接口 end///////////////////////////// /////////////////////////////手机报警推送订阅新协议 Start///////////////////////////////// ///@brief CLIENT_GetMobilePusherCaps 入参 typedef struct tagNET_IN_GET_MOBILE_PUSHER_CAPS { DWORD dwSize; // 结构体大小 } NET_IN_GET_MOBILE_PUSHER_CAPS; ///@brief 设备新增支持按通道订阅的事件集合 typedef struct tagNET_SUPPORT_CHANNEL_SUBSCRIBE_EVENT { BOOL bIsSupportProfileAlarmTransmit; // 是否支持 ProfileAlarmTransmit事件 BOOL bIsSupportCallNoAnswered; // 是否支持 CallNoAnswered 事件 BYTE byReserved[56]; // 保留字节 }NET_SUPPORT_CHANNEL_SUBSCRIBE_EVENT; ///@brief CLIENT_GetMobilePusherCaps 出参 typedef struct tagNET_OUT_GET_MOBILE_PUSHER_CAPS { DWORD dwSize; // 结构体大小 BOOL bEnablePush; // 设备是否支持设置手机报警推送使能 BOOL bAddNotification; // 设备是否支持添加推送订阅 BOOL bDelNotification; // 设备是否支持取消推送订阅 BOOL bSupportPriority; // DMSS手机推送,是否支持优先级,手机APP需要根据此字段来判断下发的主服务器配置 BOOL bPushEventSchedule; // 是否支持订制时间段内推送 BOOL bVTOPushErrorCode; // 是否支持VTO推送错误码上报 BOOL bSupportGetPushConfig; // 是否支持获取设备订阅配置 NET_SUPPORT_CHANNEL_SUBSCRIBE_EVENT stuChannelSubscribeEvent; // 设备新增支持按通道订阅的事件集合 } NET_OUT_GET_MOBILE_PUSHER_CAPS; ///@brief 获取手机推送支持能力, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMobilePusherCaps(LLONG lLoginID, NET_IN_GET_MOBILE_PUSHER_CAPS *pInParam, NET_OUT_GET_MOBILE_PUSHER_CAPS *pOutParam, int nWaitTime); ///@brief CLIENT_EnablePushMobilePusher 入参 typedef struct tagNET_IN_ENABLE_PUSH_MOBILE_PUSHER { DWORD dwSize; // 结构体大小 BOOL bEnablePush; // 是否开启手机推送 } NET_IN_ENABLE_PUSH_MOBILE_PUSHER; ///@brief CLIENT_EnablePushMobilePusher 出参 typedef struct tagNET_OUT_ENABLE_PUSH_MOBILE_PUSHER { DWORD dwSize; // 结构体大小 } NET_OUT_ENABLE_PUSH_MOBILE_PUSHER; ///@brief 设置手机报警推送使能, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_EnablePushMobilePusher(LLONG lLoginID, NET_IN_ENABLE_PUSH_MOBILE_PUSHER *pInParam, NET_OUT_ENABLE_PUSH_MOBILE_PUSHER *pOutParam, int nWaitTime); ///@brief 推送服务器配置 typedef struct tagNET_PUSH_SERVER_INFO_EX { char szAddress[MAX_URL_LEN]; // 地址 int nPort; // 端口 BYTE byReserved[512]; // 保留字节 } NET_PUSH_SERVER_INFO_EX; ///@brief 订阅组 typedef struct tagNET_REGISTER_GROUP { int nIndex; // 通道号,-1表示按库订阅,不区分通道,为MobilePushNotification 中indexs的子集 int nGroupCount; // 目标库ID集合的数量 char szGroup[64][64]; // 目标库ID集合 BYTE byReserved[128]; // 保留字节 } NET_REGISTER_GROUP; ///@brief 目标比对事件过滤器 typedef struct tagNET_CUSTOM_TILTER_OF_FACE_COMPARISION { int nRegisterGroupCount; // 订阅组数量 NET_REGISTER_GROUP stuRegisterGroup[256]; // 订阅组 BYTE byReserved[1028]; // 保留字节 } NET_CUSTOM_TILTER_OF_FACE_COMPARISION; ///@brief CLIENT_AddMobilePusherNotification 入参 typedef struct tagNET_IN_ADD_MOBILE_PUSHER_NOTIFICATION { DWORD dwSize; // 结构体大小 char szRegisterID[MAX_REGISTER_ID_LEN]; // RegisterID, 机向Appple/Android服务器注册返回的, 每次不同 char szAppID[MAX_APP_ID_LEN]; // AppID EM_MOBILE_SERVER_TYPE emServerType; // 平台类型 EM_PUSH_GATEWAY_TYPE emPushGatewayType; // 推送网关类型, emServerType为EM_MOBILE_SERVER_TYPE_SDKCLOUD时有效 int nPeriodOfValidity; // 有效时间,单位为秒 char szAuthServerAddr[MAX_URL_LEN]; // Android验证服务器地址 int nAuthServerPort; // Android验证服务器端口 NET_PUSH_SERVER_INFO_EX stuPushServerMain; // 推送服务器配置, 官方。首选服务器,如果推送失败,再尝试重定向或代理服务器 char szPushServerAddr[MAX_URL_LEN]; // 推送服务器地址 // 按官方服务器要求,选用最新的加密算法再转发给官方服务器 int nPushServerPort; // 推送服务器端口 char szDevName[MAX_COMMON_STRING_64]; // 设备别名,手机端设置显示 char szDevID[MAX_COMMON_STRING_64]; // 设备标识,手机端设置使用 char szUser[MAX_COMMON_STRING_64]; // google的GCM/C2DM推送验证用户名 char szCertificate[MAX_IOS_CERTIFICATE_LEN]; // 证书信息,base64之后的字符串,需要采用TLS加密时有效, iOS需要 char szSecretKey[MAX_IOS_SECRET_KEY_LEN]; // 极光(Jpush)推送密钥, 明文字符串, Android极光Jpush推送需要 int nSubScribeNum; // 实际的订阅类型个数, 获取配置有效 NET_SUBSCRIBE_INFO_EX* pstuSubscribes; // 订阅类型,由用户申请内存,大小为sizeof(NET_SUBSCRIBE_INFO)*nSubScribeMax DH_TSECT stuAllEventPushTime[DH_N_WEEKS][DH_N_TSECT]; // 设备推送时间段,为一个7*6的二维数组,7个元素对应每周7天(第一个为星期日),每天内最多6个单独时间段。 // 每个时间段的第一个数字1代表该时间段使能,0为非使能状态。 // 当bIsTimeEnable为TRUE时,必须设置有效推送时间段; bIsTimeEnable为FALSE时,设备推送不受时间限制 BOOL bIsTimeEnable; // 设备推送时间段(stuAllEventPushTime)字段是否有效,默认为FALSE BOOL bUserEx; // 登陆用户名的扩展是否有效 char szUserEx[256]; // 登陆用户名的扩展 char szBindingUserName[64]; // APP配置所绑定的用户名(当删除该用户时候,需要同时把该条配置删除,实现不再推送到APP) } NET_IN_ADD_MOBILE_PUSHER_NOTIFICATION; ///@brief CLIENT_AddMobilePusherNotification 出参 typedef struct tagNET_OUT_ADD_MOBILE_PUSHER_NOTIFICATION { DWORD dwSize; // 结构体大小 } NET_OUT_ADD_MOBILE_PUSHER_NOTIFICATION; ///@brief 手机APP向设备添加一个推送订阅, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddMobilePusherNotification(LLONG lLoginID, NET_IN_ADD_MOBILE_PUSHER_NOTIFICATION *pInParam, NET_OUT_ADD_MOBILE_PUSHER_NOTIFICATION *pOutParam, int nWaitTime); ///@brief CLIENT_DelMobilePusherNotification 入参 typedef struct tagNET_IN_DEL_MOBILE_PUSHER_NOTIFICATION { DWORD dwSize; // 结构体大小 char szRegisterID[MAX_REGISTER_ID_LEN]; // RegisterID, 手机向Appple/Android服务器注册返回的,每次不同; char szAppID[MAX_APP_ID_LEN]; // AppID(手机每开一个客户端,会产生一个) } NET_IN_DEL_MOBILE_PUSHER_NOTIFICATION; ///@brief CLIENT_DelMobilePusherNotification 出参 typedef struct tagNET_OUT_DEL_MOBILE_PUSHER_NOTIFICATION { DWORD dwSize; // 结构体大小 } NET_OUT_DEL_MOBILE_PUSHER_NOTIFICATION; ///@brief 手机APP向设备删除一个推送订阅, pInParam和pOutParam内存由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelMobilePusherNotification(LLONG lLoginID, NET_IN_DEL_MOBILE_PUSHER_NOTIFICATION *pInParam, NET_OUT_DEL_MOBILE_PUSHER_NOTIFICATION *pOutParam, int nWaitTime); ///@brief 手机APP指定配置名称查询模式 typedef enum tagEM_MOBILE_PUSHER_NOTIFICATION_TYPE { EM_MOBILE_PUSHER_NOTIFICATION_TYPE_UNKNOWN, // 未知 EM_MOBILE_PUSHER_NOTIFICATION_TYPE_ALL, // 全部 EM_MOBILE_PUSHER_NOTIFICATION_TYPE_SINGLE, // 单个 }EM_MOBILE_PUSHER_NOTIFICATION_TYPE; ///@brief 手机APP向设备查询当前使用的配置名称,以及设备的订阅配置(CLIENT_GetMobilePusherNotification)入参 typedef struct tagNET_IN_GET_MOBILE_PUSHER_NOTIFICATION_INFO { DWORD dwSize; // 结构体大小 EM_MOBILE_PUSHER_NOTIFICATION_TYPE emFindMode; // 查询模式 char szRegisterID[256]; // App注册ID char szAppID[256]; // AppID } NET_IN_GET_MOBILE_PUSHER_NOTIFICATION_INFO; ///@brief 设备使用的推送配置名称 typedef enum tagEM_MOBILE_PUSHER_NAME_TYPE { EM_MOBILE_PUSHER_NAME_TYPE_UNKNOWN, // 未知 EM_MOBILE_PUSHER_NAME_TYPE_NOTIFICATION, // 通知 EM_MOBILE_PUSHER_NAME_TYPE_NOTIFICATIONCFG, // 通知配置 }EM_MOBILE_PUSHER_NAME_TYPE; ///@brief 手机APP向设备查询当前使用的配置名称,以及设备的订阅配置(CLIENT_GetMobilePusherNotification) 出参 typedef struct tagNET_OUT_GET_MOBILE_PUSHER_NOTIFICATION_INFO { DWORD dwSize; // 结构体大小 EM_MOBILE_PUSHER_NAME_TYPE emMobilePusherName; // 配置名称 int nMaxNotificationNum; // 用户分配最大接收查询配置消息个数 int nRetNotificationNum; // 实际返回接收查询配置消息个数 NET_MOBILE_PUSH_NOTIFICATION_GENERAL_INFO *pstuMobilePusherNotificationCfg;// 订阅配置 }NET_OUT_GET_MOBILE_PUSHER_NOTIFICATION_INFO; ///@brief 手机APP向设备查询当前使用的配置名称,以及设备的订阅配置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMobilePusherNotificationCfg(LLONG lLoginID, const NET_IN_GET_MOBILE_PUSHER_NOTIFICATION_INFO *pInParam, NET_OUT_GET_MOBILE_PUSHER_NOTIFICATION_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetMobilePusherEventList 入参 typedef struct tagNET_IN_GET_MOBILE_PUSHER_EVNET_LIST { DWORD dwSize; // 结构体大小 UINT nChannelNum; // 通道号的数量 int nChannel[1024]; // 通道号,每个元素表示一个通道,-1 表示全通道 } NET_IN_GET_MOBILE_PUSHER_EVNET_LIST; ///@brief 事件的组推送能力集,目前只有目标比对事件(EVENT_IVS_FACE_COMPARISION)支持该能力 typedef enum tagEM_PUSH_BY_GROUP_TYPE { EM_PUSH_BY_GROUP_NOT_INVOLVE, // 不涉及该能力 EM_PUSH_BY_GROUP_SUPPORT, // 支持组推送能力 EM_PUSH_BY_GROUP_NOT_SUPPORT, // 不支持组推送能力 }EM_PUSH_BY_GROUP_TYPE; ///@brief 单个事件信息 typedef struct tagNET_MOBILE_PUSHER_EVNET { char szCode[64]; // 事件码 int nEventType; // 事件类型 EM_PUSH_BY_GROUP_TYPE emPushByGroupType; // 事件的组推送能力集 BYTE byReserved[128]; // 保留字节 } NET_MOBILE_PUSHER_EVNET; ///@brief 事件列表信息 typedef struct tagNET_MOBILE_PUSHER_EVNET_LIST_INFO { int nCount; // 所支持的事件数量 BYTE byReserved[4]; // 保留字节 NET_MOBILE_PUSHER_EVNET stuMobilePusherEvent[1024]; // 事件信息数组 }NET_MOBILE_PUSHER_EVNET_LIST_INFO; ///@brief CLIENT_GetMobilePusherEventList 出参 typedef struct tagNET_OUT_GET_MOBILE_PUSHER_EVNET_LIST { DWORD dwSize; // 结构体大小 UINT nMaxEventlistNum; // 事件列表最大的数量 UINT nRetEventlistNum; // 返回的事件列表数量 NET_MOBILE_PUSHER_EVNET_LIST_INFO* pMobilePusherEventlist; // 事件列表的指针,需要用户申请 } NET_OUT_GET_MOBILE_PUSHER_EVNET_LIST; ///@brief 获取手机推送事件能力 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMobilePusherEventList(LLONG lLoginID, const NET_IN_GET_MOBILE_PUSHER_EVNET_LIST* pInParam, NET_OUT_GET_MOBILE_PUSHER_EVNET_LIST* pOutParam, int nWaitTime); /////////////////////////////手机报警推送订阅新协议 End///////////////////////////////// ///@brief 凭证信息 typedef struct tagNET_CREDENTIAL_INFO { char CredentialHolder[16]; // 身份拥有者 NET_TIME stuValidDateStart; // 开始有效期 NET_TIME stuValidDateEnd; // 截止有效期 NET_ACCESS_METHOD emType; // 开门类型 DWORD nIndex; // 索引号 char szCardNo[DH_MAX_CARDINFO_LEN]; // 卡号 BYTE byReserved[1024]; // 保留字节 }NET_CREDENTIAL_INFO; ///@brief 上报的离线授权信息 typedef struct tagNET_SMARTLOCK_NOTIFY_OFFLINEAUTH { char szSerialNumber[32]; // 无线设备序列号(智能锁) DWORD nACK; // 确认号 NET_CREDENTIAL_INFO stCredentialInfo; // 凭证信息 BYTE byReserved[1024]; // 保留字节 }NET_SMARTLOCK_NOTIFY_OFFLINEAUTH; ///@brief 离线授权信息回调函数指针 typedef void (CALLBACK *fSmartLockOfflineAuthCallBack) (LLONG lLoginId, LLONG lAttachHandle, const NET_SMARTLOCK_NOTIFY_OFFLINEAUTH* pBuf, LDWORD dwUser); ///@brief 智能锁离线授权订阅入参(对应接口 CLIENT_AttachSmartLockOfflineAuth) typedef struct tagNET_IN_SMARTLOCK_OFFLINEAUTH { DWORD dwSize; // 结构体大小 char szUUID[36]; // 客户端惟一标识 fSmartLockOfflineAuthCallBack cbOfflineAuth; // 离线授权信息回调 LDWORD dwUser; // 用户数据 }NET_IN_SMARTLOCK_OFFLINEAUTH; ///@brief 智能锁离线授权订阅出参(对应接口 CLIENT_AttachSmartLockOfflineAuth) typedef struct tagNET_OUT_SMARTLOCK_OFFLINEAUTH { DWORD dwSize; // 结构体大小 }NET_OUT_SMARTLOCK_OFFLINEAUTH; ///@brief 智能锁离线授权订阅 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSmartLockOfflineAuth(LLONG lLoginID, const NET_IN_SMARTLOCK_OFFLINEAUTH* pstInParam, NET_OUT_SMARTLOCK_OFFLINEAUTH* pstOutParam, int nWaitTime); ///@brief 智能锁退订事件重传 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSmartLockOfflineAuth(LLONG lAttachHandle); ///@brief 智能锁确认离线授权入参(对应接口 CLIENT_AckSmartLockOfflineAuth) typedef struct tagNET_IN_SMARTLOCK_ACK_OFFLINEAUTH { DWORD dwSize; // 结构体大小 char szUUID[36]; // 客户端惟一标识 char szSerialNumber[32]; // 无线设备序列号(智能锁) DWORD nACK; // 事件的确认ID }NET_IN_SMARTLOCK_ACK_OFFLINEAUTH; ///@brief 智能锁确认离线授权出参(对应接口 CLIENT_AckSmartLockOfflineAuth) typedef struct tagNET_OUT_SMARTLOCK_ACK_OFFLINEAUTH { DWORD dwSize; // 结构体大小 }NET_OUT_SMARTLOCK_ACK_OFFLINEAUTH; ///@brief 智能锁确认离线授权 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AckSmartLockOfflineAuth(LLONG lLoginID, NET_IN_SMARTLOCK_ACK_OFFLINEAUTH* pstInParam, NET_OUT_SMARTLOCK_ACK_OFFLINEAUTH* pstOutParam, int nWaitTime); ///@brief CLIENT_EncryptString 接口入参 typedef struct tagNET_IN_ENCRYPT_STRING { DWORD dwSize; // 结构体大小 char szCard[33]; // 卡号 BYTE byReserved1[3]; // 字节对齐 char szKey[33]; // 秘钥 BYTE byReserved2[3]; // 字节对齐 } NET_IN_ENCRYPT_STRING; ///@brief CLIENT_EncryptString 接口出参 typedef struct tagNET_OUT_ENCRYPT_STRING { DWORD dwSize; // 结构体大小 char szEncryptString[1024]; // 加密后字符串 } NET_OUT_ENCRYPT_STRING; ///@brief 字符串加密接口 (pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_EncryptString(const NET_IN_ENCRYPT_STRING *pInParam, NET_OUT_ENCRYPT_STRING *pOutParam, int nWaitTime); ///@brief CLIENT_PreUploadRemoteFile 接口输入参数(设置文件长度) typedef struct tagNET_IN_PRE_UPLOAD_REMOTE_FILE { DWORD dwSize; // 结构体大小 char* pszFileSrc; // 源文件路径 char* pszFileDst; // 保存在设备端的文件路径 } NET_IN_PRE_UPLOAD_REMOTE_FILE; ///@brief 错误原因类型 typedef enum tagEM_REASON_TYPE { EM_REASON_TYPE_UNKNOWN, // 未知原因 EM_REASON_TYPE_OVERNUMBER, // 文件个数超出 EM_REASON_TYPE_FULLSTORAGE, // 文件存储空间已满 EM_REASON_TYPE_TOOLARGE_FILE, // 该文件太大 EM_REASON_TYPE_INVALID_FILETYPE, // 无效的文件类型 EM_REASON_TYPE_UNAUTH_UPLOAD, // 没有上传权限 EM_REASON_TYPE_EXCEPTION_NAME, // 文件命名异常 EM_REASON_TYPE_TOOLONG_NAME, // 文件名太长 EM_REASON_TYPE_EXIST_NAME, // 文件名已存在 } EM_REASON_TYPE; ///@brief CLIENT_PreUploadRemoteFile 接口输出参数(设置文件长度) typedef struct tagNET_OUT_PRE_UPLOAD_REMOTE_FILE { DWORD dwSize; // 结构体大小 BOOL bContinue2Upload; // 标志是否继续上传该文件, true:上传 false:不上传 EM_REASON_TYPE emType; // 错误原因, 当bContinue2Upload为false时emType有效 } NET_OUT_PRE_UPLOAD_REMOTE_FILE; ///@brief 设置文件长度, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PreUploadRemoteFile(LLONG lLoginID, const NET_IN_PRE_UPLOAD_REMOTE_FILE* pInParam, NET_OUT_PRE_UPLOAD_REMOTE_FILE* pOutParam, int nWaitTime); ///@brief CLIENT_GetInstallDiagnosticStatCaps入参 typedef struct tagNET_IN_GET_CAPS_INSTALL_DIAGNOSTIC_STAT { DWORD dwSize; }NET_IN_GET_CAPS_INSTALL_DIAGNOSTIC_STAT; ///@brief 通道信息 typedef struct tagNET_INSTALL_DIAGNOSTIC_STAT_CAPS_INFO { int nChannel; //视频通道号 int nEventNum; //事件数量 int nEventsCode[32]; //事件列表 BYTE bReserved[256]; //保留字节 }NET_INSTALL_DIAGNOSTIC_STAT_CAPS_INFO; ///@brief CLIENT_GetInstallDiagnosticStatCaps出参 typedef struct tagNET_OUT_GET_CAPS_INSTALL_DIAGNOSTIC_STAT { DWORD dwSize; //结构体大小 int nCapsNum; //通道数量 NET_INSTALL_DIAGNOSTIC_STAT_CAPS_INFO stuCaps[16]; //通道信息数组 }NET_OUT_GET_CAPS_INSTALL_DIAGNOSTIC_STAT; ///@brief 获取设备能提供诊断的事件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetInstallDiagnosticStatCaps(LLONG lLoginID, const NET_IN_GET_CAPS_INSTALL_DIAGNOSTIC_STAT* pInParam, NET_OUT_GET_CAPS_INSTALL_DIAGNOSTIC_STAT* pOutParam, int nWaitTime); ///@brief 数据结构体 typedef struct tagNET_INSTALL_DIAGNOSTIC_STAT_DATALIST { int nPitchAngle; //俯仰角(抬头,低头)。范围[-90,90],0为正脸 180为无效值 int nYawAngle; //偏航角(左右转头)。范围[-90,90],0为正脸 180为无效值 int nRollAngle; //侧滚角(平面左偏右偏)。范围[-90,90],0为正脸 180为无效值 int nQuality; //目标质量分值。范围[1,100],0为无效值 int nWidth; //像素点宽度 int nHeight; //像素点高度 BYTE byReserved[64]; //保留字节 }NET_INSTALL_DIAGNOSTIC_STAT_DATALIST; ///@brief 安装数据信息 typedef struct tagNET_INSTALL_DIAGNOSTIC_STAT_RESULT { int nEventCode; // 事件码 int nDatalistLen; // 数据个数 NET_INSTALL_DIAGNOSTIC_STAT_DATALIST stuDataList[128]; // 数据列表 BYTE byReserved[256]; // 保留字节 }NET_INSTALL_DIAGNOSTIC_STAT_RESULT; ///@brief 订阅安装诊断数据回调出参 typedef struct tagNET_INSTALL_DIAGNOSTIC_STAT { int nChannel; // 通道号 int nResultNum; // 数据个数 NET_INSTALL_DIAGNOSTIC_STAT_RESULT stuResult[32]; // 数据列表 BYTE byReserved[512]; // 保留字节 }NET_INSTALL_DIAGNOSTIC_STAT; ///@brief 订阅安装诊断数据回调 typedef void (CALLBACK *fInstallDiagnosticStatCallBack)(LLONG lAttachHandle, NET_INSTALL_DIAGNOSTIC_STAT* pBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief 过滤信息 typedef struct tagNET_ATTACH_DIAGNOSTIC_FILTER { int nChannelNum; // 通道数量 int nChannels[16]; // 通道号列表 int nEventNum; // 事件数量 int nEventsCode[32]; // 事件列表 BYTE byReserved[128]; // 保留字节 }NET_ATTACH_DIAGNOSTIC_FILTER; ///@brief 订阅安装回调入参 typedef struct tagNET_IN_ATTACH_INSTALL_DIAGNOSTIC_STAT { DWORD dwSize; // 结构体大小 NET_ATTACH_DIAGNOSTIC_FILTER stuFilter; // 过滤信息 fInstallDiagnosticStatCallBack cbDiagnosticStat; // 订阅回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_INSTALL_DIAGNOSTIC_STAT; ///@brief 订阅安装回调出参 typedef struct tagNET_OUT_ATTACH_INSTALL_DIAGNOSTIC_STAT { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_INSTALL_DIAGNOSTIC_STAT; ///@brief 订阅安装诊断数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachInstallDiagnosticStat(LLONG lLoginID, const NET_IN_ATTACH_INSTALL_DIAGNOSTIC_STAT* pInParam, NET_OUT_ATTACH_INSTALL_DIAGNOSTIC_STAT* pOutParam, int nWaitTime); ///@brief 取消订阅安装诊断数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachInstallDiagnosticStat(LLONG lAttachHandle); ///@brief CLIENT_GetSCADADeviceStatus入参 typedef struct tagNET_IN_GET_SCADA_STATUS { DWORD dwSize; // 结构体大小 }NET_IN_GET_SCADA_STATUS; ///@brief 设备状态信息 typedef struct tagNET_SCADA_DEV_INFO { char szDeviceID[32]; // 设备ID char szDeviceName[32]; // 设备名称 EM_SCADA_DEVICE_STATUS emDevStatus; // 设备状态 }NET_SCADA_DEV_INFO; ///@brief 设备信息 typedef struct tagNET_SCADA_STATUS_INFO { EM_ALARM_SCADA_DEV_TYPE emDevType; // 设备类型 int nDevInfoNum; // 设备信息个数 NET_SCADA_DEV_INFO stuDevInfo[128]; // 设备信息 }NET_SCADA_STATUS_INFO; ///@brief CLIENT_GetSCADADeviceStatus出参 typedef struct tagNET_OUT_GET_SCADA_STATUS { DWORD dwSize; // 结构体大小 int nDevStatusNum; // 设备状态信息个数 NET_SCADA_STATUS_INFO stuStatusInfo[64]; // 设备状态信息 }NET_OUT_GET_SCADA_STATUS; ///@brief 获取控制器设备列表及状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSCADADeviceStatus(LLONG lLoginID, const NET_IN_GET_SCADA_STATUS* pInParam, NET_OUT_GET_SCADA_STATUS* pOutParam, int nWaitTime); ///@brief 获取标定点信息入参 typedef struct tagNET_IN_GET_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 UINT nID; // 标定点编号 UINT nChannel; // 通道号 }NET_IN_GET_CALIBRATEINFO_INFO; ///@brief 标定点位置信息 typedef struct tagNET_GET_CALIBRATEINFO_CALCINFO_INFO { float fPosition[3]; // 标定点坐标及倍率 UINT nLocation[2]; // 标定点在图像中坐标 }NET_GET_CALIBRATEINFO_CALCINFO_INFO; ///@brief 标定点参数信息 typedef struct tagNET_GET_CALIBRATEINFO_POINT_INFO { UINT nID; // 标定点编号 char szName[DH_COMMON_STRING_128]; // 标定点名称 BOOL bEnable; // 使能 UINT nLongitude; // 经度 UINT nLatitude; // 纬度 double fAltitude; // 海拔 NET_GET_CALIBRATEINFO_CALCINFO_INFO stuCalcInfo[5][2]; // 标定点坐标 第一维表示不同位置, 第二位表示可见光或热成像 int nPointNum; // 标定点个数 BYTE byReserved[4]; // 字节对齐 }NET_GET_CALIBRATEINFO_POINT_INFO; ///@brief 获取标定点信息出参 typedef struct tagNET_OUT_GET_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 NET_GET_CALIBRATEINFO_POINT_INFO stuPointInfo; // 标定点信息 }NET_OUT_GET_CALIBRATEINFO_INFO; ///@brief 设置标定点信息入参 typedef struct tagNET_IN_SET_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 NET_GET_CALIBRATEINFO_POINT_INFO stuPointInfo; //标定点信息 }NET_IN_SET_CALIBRATEINFO_INFO; ///@brief 设置标定点信息出参 typedef struct tagNET_OUT_SET_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_CALIBRATEINFO_INFO; ///@brief 删除标定点信息入参 typedef struct tagNET_IN_DELETE_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 UINT nID; // 标定点ID }NET_IN_DELETE_CALIBRATEINFO_INFO; ///@brief 删除标定点信息出参 typedef struct tagNET_OUT_DELETE_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_DELETE_CALIBRATEINFO_INFO; ///@brief 获取所有标定点信息入参 typedef struct tagNET_IN_GETALL_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道号 }NET_IN_GETALL_CALIBRATEINFO_INFO; ///@brief GPS信息 typedef struct tagNET_DEVLOCATION_INFO { UINT unLongitude; // 经度 单位百万分之一度,范围0-360度 UINT unLatitude; // 纬度 单位百万分之一度,范围0-360度 double dbAltitude; // 海拔 单位米 BOOL bConfigEnable; // true:GPS信息按照配置上报 float fHeight; // 设备高度 单位米 }NET_DEVLOCATION_INFO; ///@brief 标定基本信息 typedef struct tagNET_CALIBRATE_UNIT_INFO { UINT nHeight; // 分辨率高 UINT nWidth; // 分辨率宽 float nPosition[3]; // 云台位置(P/T/Z 归一化) UINT nLocation[2]; // 标定点坐标 UINT nHFOV; // 横向视场角(单位:0.01度) UINT nVFOV; // 纵向视场角(单位:0.01度) }NET_CALIBRATE_UNIT_INFO; ///@brief 标定详细信息 typedef struct tagNET_CALIBRATE_INFO { NET_CALIBRATE_UNIT_INFO stuCalibrateUnitInfo[5][2]; //标定点基本信息 int nInfoNum; // 基本信息数量 }NET_CALIBRATE_INFO; ///@brief 标定点信息 typedef struct tagNET_LOCATION_CALIBRATE_POINT_INFO { UINT nID; // 标定点ID char szName[DH_COMMON_STRING_128]; // 标定点名称 BOOL bEnable; // 使能 UINT nLongitude; // 经度 UINT nLatitude; // 纬度 double fAltitude; // 海拔 NET_CALIBRATE_INFO stuCalibrateInfo; // 标定点基本信息 BYTE byReserved1[4]; // 字节对齐 }NET_LOCATION_CALIBRATE_POINT_INFO; #define MAX_CALIBRATE_POINT_NUM 64 //标定点最大个数 ///@brief 设备标定信息 typedef struct tagNET_LOCATION_CALIBRATE_INFO { UINT nVisualMaxHFOV; // 可见光横向视角 UINT nVisualMaxVFOV; // 可见光纵向视角 UINT nThermoMaxHFOV; // 热成像横向视角 UINT nThermoMaxVFOV; // 热成像纵向视角 NET_LOCATION_CALIBRATE_POINT_INFO stuPointInfo[MAX_CALIBRATE_POINT_NUM]; // 标定点信息 int nPointNum; // 标定点个数 BYTE byReserved1[4]; // 字节对齐 }NET_LOCATION_CALIBRATE_INFO; ///@brief 获取所有标定信息出参 typedef struct tagNET_OUT_GETALL_CALIBRATEINFO_INFO { DWORD dwSize; // 结构体大小 NET_DEVLOCATION_INFO stuGPSInfo; // GPS信息 NET_LOCATION_CALIBRATE_INFO stuLocationCalibrateInfo; // 标定信息 }NET_OUT_GETALL_CALIBRATEINFO_INFO; ///@brief 设备标定信息操作类型 typedef enum tagEM_CALIBRATEINFO_OPERATE_TYPE { EM_CALIBRATEINFO_OPERATE_GET, // 获取指定点标定信息, pStuInParam = NET_IN_GET_CALIBRATEINFO_INFO, pStuOutParam = NET_OUT_GET_CALIBRATEINFO_INFO EM_CALIBRATEINFO_OPERATE_SET, // 设置指定点标定信息, pStuInParam = NET_IN_SET_CALIBRATEINFO_INFO, pStuOutParam = NET_OUT_SET_CALIBRATEINFO_INFO EM_CALIBRATEINFO_OPERATE_DELETE, // 删除指定点标定信息, pStuInParam = NET_IN_DELETE_CALIBRATEINFO_INFO, pStuOutParam = NET_OUT_DELETE_CALIBRATEINFO_INFO EM_CALIBRATEINFO_OPERATE_GETALL, // 获取所有标定信息, pStuInParam = NET_IN_GETALL_CALIBRATEINFO_INFO, pStuOutParam = NET_OUT_GETALL_CALIBRATEINFO_INFO }EM_CALIBRATEINFO_OPERATE_TYPE; ///@brief 操作设备标定信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_OperateCalibrateInfo(LLONG lLoginID, EM_CALIBRATEINFO_OPERATE_TYPE emType, const void* pStuInParam, void* pStuOutParam, int nWaitTime); ///@brief 云台水平旋转组信息 typedef struct tagNET_PAN_GROUP_INFO { char szName[32]; // 水平旋转组名称 unsigned int nSpeed; // 水平旋转速度0~7 BOOL bEnable; // 使能 unsigned int nInterval; // 停留时间,单位:秒 BYTE byReserved[64]; // 保留字节 }NET_PAN_GROUP_INFO; ///@brief CLIENT_PTZSetPanGroup入参数结构体 typedef struct tagNET_IN_SET_PAN_GROUP_PARAM { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 unsigned int nIndex; // 旋转组内元素序号从1开始 NET_PAN_GROUP_INFO stuPanGroupInfo; // 水平旋转组信息 }NET_IN_SET_PAN_GROUP_PARAM; ///@brief CLIENT_PTZSetPanGroup出参数结构体 typedef struct tagNET_OUT_SET_PAN_GROUP_PARAM { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PAN_GROUP_PARAM; ///@brief 设置云台水平旋转组信息(热成像专用) CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetPanGroup(LLONG lLoginID, const NET_IN_SET_PAN_GROUP_PARAM* pInParam, NET_OUT_SET_PAN_GROUP_PARAM* pOutParam, int nWaitTime); ///@brief CLIENT_PTZGetPanGroup入参结构体 typedef struct tagNET_IN_GET_PAN_GROUP_PARAM { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_GET_PAN_GROUP_PARAM; ///@brief CLIENT_PTZGetPanGroup出参结构体 typedef struct tagNET_OUT_GET_PAN_GROUP_PARAM { DWORD dwSize; // 结构体大小 int nRetNum; // 实际返回个数 NET_PAN_GROUP_INFO stuPanGroupInfo[8]; // 水平旋转组信息 }NET_OUT_GET_PAN_GROUP_PARAM; ///@brief 获取云台水平旋转组信息(热成像专用) CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZGetPanGroup(LLONG lLoginID, const NET_IN_GET_PAN_GROUP_PARAM* pInParam, NET_OUT_GET_PAN_GROUP_PARAM* pOutParam, int nWaitTime); ///@brief CLIENT_PTZGotoPanPosition 入参结构体 typedef struct tagNET_IN_GOTO_PAN_POSITION { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 unsigned int nIndex; // 旋转组内序号从1开始 }NET_IN_GOTO_PAN_POSITION; ///@brief CLIENT_PTZGotoPanPosition 出参结构体 typedef struct tagNET_OUT_GOTO_PAN_POSITION { DWORD dwSize; // 结构体大小 }NET_OUT_GOTO_PAN_POSITION; ///@brief 云台转动到指定水平(热成像专用) CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZGotoPanPosition(LLONG lLogindID, const NET_IN_GOTO_PAN_POSITION* pInParam, NET_OUT_GOTO_PAN_POSITION* pOutParam, int nWaitTime); ///@brief 水平旋转组边界模式 typedef enum tagNET_EM_PAN_GROUP_LIMIT_MODE { NET_EM_PAN_GROUP_LIMIT_MODE_LEFT = 1, // 左边界 NET_EM_PAN_GROUP_LIMIT_MODE_RIGHT, // 右边界 NET_EM_PAN_GROUP_LIMIT_MODE_UP, // 上边界 NET_EM_PAN_GROUP_LIMIT_MODE_DOWN, // 下边界 } NET_EM_PAN_GROUP_LIMIT_MODE; ///@brief 设置水平旋转边界值 输入参数 typedef struct tagNET_IN_PAN_GROUP_LIMIT_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 正确通道号,范围 0~设备通道数 unsigned int nIndex; // 旋转组内序号从1开始 NET_EM_PAN_GROUP_LIMIT_MODE emPanGroupLimitMode; // 水平旋转组限界类型 } NET_IN_PAN_GROUP_LIMIT_INFO; ///@brief 设置水平旋转边界值 输出参数 typedef struct tagNET_OUT_PAN_GROUP_LIMIT_INFO { DWORD dwSize; } NET_OUT_PAN_GROUP_LIMIT_INFO; ///@brief 设置水平旋转组边界值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetPanGroupLimit(LLONG lLoginID, const NET_IN_PAN_GROUP_LIMIT_INFO *pstInParam, NET_OUT_PAN_GROUP_LIMIT_INFO *pstOutParam, DWORD dwWaitTime); ///@brief 云台位置坐标 解决Position的精度问题 typedef struct tagNET_PTZ_POSITION { double dbPositionX; //云台水平坐标,范围[0.0~360.0] double dbPositionY; //云台垂直坐标,范围[-180.0~180.0] double dbZoom; //云台放大倍数,范围不同机芯不一样 }NET_PTZ_POSITION; ///@brief 预置点列表 typedef struct tagNET_PTZ_PRESET_LIST_INFO { BOOL bEnable; // 该预置点是否生效 char szName[256]; // 预置点名称 NET_PTZ_POSITION stuPosition; // 云台位置坐标 int nTiltBoundary; // 设置预置点时设备主动轮所在的齿轮边界位置。当为0或无该字段时,不关心是否处于边界位置,表示无因齿隙过大导致的预置点精度问题,当为1时,处于下边界,当为2时,处于上边界。 char szReserve[32]; //预留字节 } NET_PTZ_PRESET_LIST_INFO; ///@brief 设置预置位信息 输入参数 typedef struct tagNET_IN_SET_PRESET_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 正确通道号,范围 0~设备通道数 int nIndex; // 预置点编号: -1表示preset为全部预置位信息, 1~PresetMax表示设置对应的预置位内容 int nPresetInfoNum; // 调用者分配预置点列表个数, 最大为512 NET_PTZ_PRESET_LIST_INFO* pstuPresetInfo; // 预置点列表, 由用户申请内存,大小为sizeof(NET_PTZ_PRESET_LIST_INFO)*nPresetInfoNum } NET_IN_SET_PRESET_INFO; ///@brief 设置预置位信息 输出参数 typedef struct tagNET_OUT_SET_PRESET_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_SET_PRESET_INFO; ///@brief 设置预置位信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetPreset(LLONG lLoginID, const NET_IN_SET_PRESET_INFO *pstInParam, NET_OUT_SET_PRESET_INFO *pstOutParam, DWORD dwWaitTime); ///@brief 获取预置位信息 输入参数 typedef struct tagNET_IN_GET_PRESET_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 正确通道号,范围 0~设备通道数 int nIndex; // 预置点编号: -1表示preset为全部预置位信息, 1~PresetMax表示设置对应的预置位内容 } NET_IN_GET_PRESET_INFO; ///@brief 获取预置位信息 输出参数 typedef struct tagNET_OUT_GET_PRESET_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 正确通道号,范围 0~设备通道数 int nIndex; // 预置点编号: -1表示preset为全部预置位信息, 1~PresetMax表示设置对应的预置位内容 int nPresetInfoNum; // 调用者分配预置点列表个数, 最大为512 NET_PTZ_PRESET_LIST_INFO* pstuPresetInfo; // 预置点列表,由用户申请内存,大小为sizeof(NET_PTZ_PRESET_LIST_INFO)*nPresetInfoNum int nRetPresetInfoNum; // 设备返回的预置点列表个数,最大为512 } NET_OUT_GET_PRESET_INFO; ///@brief 获取预置位信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZGetPreset(LLONG lLoginID, const NET_IN_GET_PRESET_INFO *pstInParam, NET_OUT_GET_PRESET_INFO *pstOutParam, DWORD dwWaitTime); ///@brief CLIENT_PTZStartTour 接口输入参数 typedef struct tagNET_IN_PTZ_START_TOUR { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 int nIndex; // 巡航线路编号 }NET_IN_PTZ_START_TOUR; ///@brief CLIENT_PTZStartTour 接口输出参数 typedef struct tagNET_OUT_PTZ_START_TOUR { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_START_TOUR; ///@brief 开始巡航 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZStartTour(LLONG lLoginID, const NET_IN_PTZ_START_TOUR *pstuInParam, NET_OUT_PTZ_START_TOUR *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZStopTour 接口输入参数 typedef struct tagNET_IN_PTZ_STOP_TOUR { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 int nIndex; // 巡航线路编号 }NET_IN_PTZ_STOP_TOUR; ///@brief CLIENT_PTZStopTour 接口输出参数 typedef struct tagNET_OUT_PTZ_STOP_TOUR { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_STOP_TOUR; ///@brief 停止巡航 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZStopTour(LLONG lLoginID, const NET_IN_PTZ_STOP_TOUR *pstuInParam, NET_OUT_PTZ_STOP_TOUR *pstuOutParam, int nWaitTime); ///@brief 获取巡航线路的预置点列表信息 输入参数 typedef struct tagNET_IN_GET_TOUR_POINTS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nIndex; // 巡航线路编号 int reserved; // 预留字段 }NET_IN_GET_TOUR_POINTS; ///@brief 预置点相关的参数 typedef struct tagPresetPointParams { int nIndex; // 预置点配置索引号,从0开始 int nStayTime; // 预置点停留时间, 单位秒 int nSpeed; // 到达改预置点的转动速度, 1-10级速度 char reserved[68]; // 预留字段 }PresetPointParams; ///@brief 获取巡航线路的预置点列表信息 输出参数 typedef struct tagNET_OUT_GET_TOUR_POINTS { DWORD dwSize; // 结构体大小 int nPointNum; // 该链路的预置点个数 PresetPointParams stuPoints[128]; // 该路径包含的预置点参数 }NET_OUT_GET_TOUR_POINTS; ///@brief 获取巡航线路的预置点列表信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZGetToursPoints(LLONG lLoginID, const NET_IN_GET_TOUR_POINTS *pstInParam, NET_OUT_GET_TOUR_POINTS *pstOutParam, DWORD dwWaitTime); ///@brief 执行上次被打断的历史任务, 入参 typedef struct tagNET_IN_RESUME_PTZ_LASTTASK_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 正确通道号,范围 0~设备通道数 } NET_IN_RESUME_PTZ_LASTTASK_INFO; ///@brief 执行上次被打断的历史任务, 出参 typedef struct tagNET_OUT_RESUME_PTZ_LASTTASK_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_RESUME_PTZ_LASTTASK_INFO; ///@brief 两个作用: ///@brief 1、执行上次被打断的历史任务包括:循迹、巡航、线扫、水平旋转,命令执行中被人为移动云台打断,而非正常结束 ///@brief 2、该命令将启用火情事件联动动作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ResumePtzLastTask(LLONG lLoginID, const NET_IN_RESUME_PTZ_LASTTASK_INFO *pstInParam, NET_OUT_RESUME_PTZ_LASTTASK_INFO *pstOutParam, DWORD dwWaitTime); ///@brief 暂停当前云台动作, 入参 typedef struct tagNET_IN_PAUSE_PTZ_ACTION_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 通道ID } NET_IN_PAUSE_PTZ_ACTION_INFO; ///@brief 暂停当前云台动作,出参 typedef struct tagNET_OUT_PAUSE_PTZ_ACTION_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_PAUSE_PTZ_ACTION_INFO; ///@brief 暂停云台当前动作 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PausePtzAction(LLONG lLoginID, const NET_IN_PAUSE_PTZ_ACTION_INFO *pstInParam, NET_OUT_PAUSE_PTZ_ACTION_INFO *pstOutParam, DWORD dwWaitTime); ///@brief 标定球机和蓄水池污点位置, 入参 typedef struct tagNET_IN_SET_PTZ_WASH_POSISTION_INFO { DWORD dwSize; // 结构体大小 UINT nIndex; // 0 - 标定喷水枪位置, 1 - 标定污点位置 float fHeight; // 球机到蓄水池底的高度 UINT nChannelID; // 通道ID }NET_IN_SET_PTZ_WASH_POSISTION_INFO; ///@brief 标定球机和蓄水池污点位置,出参 typedef struct tagNET_OUT_SET_PTZ_WASH_POSISTION_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PTZ_WASH_POSISTION_INFO; ///@brief 标定球机和蓄水池污点位置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PtzSetWashPosistion(LLONG lLoginID, const NET_IN_SET_PTZ_WASH_POSISTION_INFO *pstInParam, NET_OUT_SET_PTZ_WASH_POSISTION_INFO *pstOutParam, DWORD dwWaitTime); ///@brief 获取标定后的冲洗信息, 入参 typedef struct tagNET_IN_GET_PTZ_WASH_INFO { DWORD dwSize; // 结构体大小 UINT nChannelID; // 通道ID }NET_IN_GET_PTZ_WASH_INFO; ///@brief 冲洗信息 typedef struct tagNET_PTZ_WASH_INFO { float fAnagle; // 喷水枪的水平偏转角度 float fDistance; // 喷水枪距离污点距离 char szReserved[256]; // 保留字节 }NET_PTZ_WASH_INFO; ///@brief 获取标定后的冲洗信息,出参 typedef struct tagNET_OUT_GET_PTZ_WASH_INFO { DWORD dwSize; // 结构体大小 NET_PTZ_WASH_INFO stuWashInfo; // 冲洗信息 }NET_OUT_GET_PTZ_WASH_INFO; ///@brief 获取标定后的冲洗信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PtzGetWashInfo(LLONG lLoginID, const NET_IN_GET_PTZ_WASH_INFO *pstInParam, NET_OUT_GET_PTZ_WASH_INFO *pstOutParam, DWORD dwWaitTime); ///@brief CLIENT_PTZSetZoomValue 接口输入参数 typedef struct tagNET_IN_PTZ_SET_ZOOM_VALUE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 int nValue; // 变倍值,扩大10倍表示 }NET_IN_PTZ_SET_ZOOM_VALUE; ///@brief CLIENT_PTZSetZoomValue 接口输出参数 typedef struct tagNET_OUT_PTZ_SET_ZOOM_VALUE { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_SET_ZOOM_VALUE; ///@brief 设置云台变倍 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetZoomValue(LLONG lLoginID, const NET_IN_PTZ_SET_ZOOM_VALUE *pstuInParam, NET_OUT_PTZ_SET_ZOOM_VALUE *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZSetFocusValue 接口输入参数 typedef struct tagNET_IN_PTZ_SET_FOCUS_VALUE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 从0开始 int nValue; // 镜头焦距值参数, 单位0.01mm,扩大100倍表示. }NET_IN_PTZ_SET_FOCUS_VALUE; ///@brief CLIENT_PTZSetFocusValue 接口输出参数 typedef struct tagNET_OUT_PTZ_SET_FOCUS_VALUE { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_SET_FOCUS_VALUE; ///@brief 设置镜头焦距参数 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetFocusValue(LLONG lLoginID, const NET_IN_PTZ_SET_FOCUS_VALUE *pstuInParam, NET_OUT_PTZ_SET_FOCUS_VALUE *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZSetTour 接口输入参数 typedef struct tagNET_IN_PTZ_SET_TOUR { DWORD dwSize; // 结构体大小 UINT nindex; // 巡航线路编号,从1开始 char szname[64]; // 巡航线路名称 int nChannel; // 通道号 }NET_IN_PTZ_SET_TOUR; ///@brief CLIENT_PTZSetTour 接口输出参数 typedef struct tagNET_OUT_PTZ_SET_TOUR { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_SET_TOUR; ///@brief 设置巡航线路 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZSetTour(LLONG lLoginID, const NET_IN_PTZ_SET_TOUR *pstuInParam, NET_OUT_PTZ_SET_TOUR *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZIntelliSetTrackObjectInfo 接口输入参数 typedef struct tagNET_IN_PTZ_INTELLI_SET_TRACK_OBJECT_INFO { DWORD dwSize; // 结构体大小 BOOL bSpeed; // 跟踪目标的速度是否有效 int nSpeed; // 跟踪目标的速度 BOOL bAzimuth; // 跟踪目标的方向是否有效 int nAzimuth; // 跟踪目标的方向 BOOL bAction; // 跟踪动作是否有效 int nAction; // 跟踪动作,默认为0 BOOL bLongitude; // 目标经度是否有效 UINT nLongitude; // 目标经度,单位百万分之一度 BOOL bLatitude; // 目标纬度是否有效 UINT nLatitude; // 目标纬度,单位百万分之一度 BOOL bDistance; // 目标距离是否有效 int nDistance; // 目标距离,单位米,扩大100倍表示 BOOL bChannel; // 跟踪通道是否有效 int nChannel; // 跟踪通道,例如1可见光、2热成像 BOOL bTime; // 目标出现时间是否有效 UINT nTime; // 目标出现时间,对应的UTC(1970-1-1 00:00:00)秒数 }NET_IN_PTZ_INTELLI_SET_TRACK_OBJECT_INFO; ///@brief CLIENT_PTZIntelliSetTrackObjectInfo 接口输出参数 typedef struct tagNET_OUT_PTZ_INTELLI_SET_TRACK_OBJECT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_INTELLI_SET_TRACK_OBJECT_INFO; ///@brief 雷球联动中,将雷达跟踪的目标信息设置给设备,提升跟踪效果 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZIntelliSetTrackObjectInfo(LLONG lLoginID, const NET_IN_PTZ_INTELLI_SET_TRACK_OBJECT_INFO *pstuInParam, NET_OUT_PTZ_INTELLI_SET_TRACK_OBJECT_INFO *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZAdjustIris 接口输入参数 typedef struct tagNET_IN_PTZ_ADJUST_IRIS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 float fChange; // 相对变化, 归一化到-1~1 }NET_IN_PTZ_ADJUST_IRIS; ///@brief CLIENT_PTZAdjustIris 接口输出参数 typedef struct tagNET_OUT_PTZ_ADJUST_IRIS { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_ADJUST_IRIS; ///@brief 调节光圈 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZAdjustIris(LLONG lLoginID, const NET_IN_PTZ_ADJUST_IRIS *pstuInParam, NET_OUT_PTZ_ADJUST_IRIS *pstuOutParam, int nWaitTime); ///@brief CLIENT_PTZLensInit 接口输入参数 typedef struct tagNET_IN_PTZ_LENS_INIT { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 }NET_IN_PTZ_LENS_INIT; ///@brief CLIENT_PTZLensInit 接口输出参数 typedef struct tagNET_OUT_PTZ_LENS_INIT { DWORD dwSize; // 结构体大小 }NET_OUT_PTZ_LENS_INIT; ///@brief 镜头初始化 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PTZLensInit(LLONG lLoginID, const NET_IN_PTZ_LENS_INIT *pstuInParam, NET_OUT_PTZ_LENS_INIT *pstuOutParam, int nWaitTime); ///@brief CLIENT_TransmitCmd 接口输入参数 typedef struct tagNET_IN_TRANSMIT_CMD { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 int nHannel; // 协议类型,0 : 整形数组 BOOL bReply; // 此命令需要接收回复 int nMessageCount; // 命令字节数量 int* pMessage; // 具体命令,是一个数组,每个元素为每个字节的整形值,使用DVR同前端交互协议,需要用户分配内存空间 }NET_IN_TRANSMIT_CMD; ///@brief CLIENT_TransmitCmd 接口输出参数 typedef struct tagNET_OUT_TRANSMIT_CMD { DWORD dwSize; // 结构体大小 int nChannel; // 通道号, 范围 0~设备通道数 int nHannel; // 协议类型,0 : 整形数组 int nRetMessageCount; // 返回命令长度 int nMaxMessageCount; // 用户填写,为pMessage指针所指的数组元素数量 int* pMessage; // 返回值,是一个数组,每个元素为每个字节的整形值,需要用户分配内存空间 }NET_OUT_TRANSMIT_CMD; ///@brief RPC测试 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TransmitCmd(LLONG lLoginID, const NET_IN_TRANSMIT_CMD *pstuInParam, NET_OUT_TRANSMIT_CMD *pstuOutParam, int nWaitTime); ///@brief CLIENT_ManualTest 接口输入参数 typedef struct tagNET_IN_MANUAL_TEST { DWORD dwSize; // 结构体大小 DWORD dwTestID; // 测试ID,每次下发的测试ID不一样 UINT nChannel; // 测试的通道号,可以对应某一个要测试的SIA服务器 }NET_IN_MANUAL_TEST; ///@brief CLIENT_ManualTest 接口输出参数 typedef struct tagNET_OUT_MANUAL_TEST { DWORD dwSize; // 结构体大小 int nTestResult; // 结果 1:测试成功,结果同步返回 2:发送测试请求成功,结果异步返回 3:测试失败 }NET_OUT_MANUAL_TEST; ///@brief 手动测试 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ManualTest(LLONG lLoginID, const NET_IN_MANUAL_TEST *pstuInParam, NET_OUT_MANUAL_TEST *pstuOutParam, int nWaitTime); ///@brief CLIENT_AddAlarmUser 接口输入参数 typedef struct tagNET_IN_ADD_ALARM_USER { DWORD dwSize; // 结构体大小 NET_ALARM_USER stuAlarmUser; // 添加的用户信息 }NET_IN_ADD_ALARM_USER; ///@brief CLIENT_AddAlarmUser 接口输出参数 typedef struct tagNET_OUT_ADD_ALARM_USER { DWORD dwSize; // 结构体大小 }NET_OUT_ADD_ALARM_USER; ///@brief 添加报警用户 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddAlarmUser(LLONG lLoginID, const NET_IN_ADD_ALARM_USER *pstuInParam, NET_OUT_ADD_ALARM_USER *pstuOutParam, int nWaitTime); ///@brief CLIENT_ModifyAlarmUser 接口输入参数 typedef struct tagNET_IN_MODIFY_ALARM_USER { DWORD dwSize; // 结构体大小 char szUserID[64]; // 用户ID,用户唯一标识 NET_ALARM_USER stuAlarmUser; // 修改的用户信息 }NET_IN_MODIFY_ALARM_USER; ///@brief CLIENT_ModifyAlarmUser 接口输出参数 typedef struct tagNET_OUT_MODIFY_ALARM_USER { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_ALARM_USER; ///@brief 修改报警用户 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyAlarmUser(LLONG lLoginID, const NET_IN_MODIFY_ALARM_USER *pstuInParam, NET_OUT_MODIFY_ALARM_USER *pstuOutParam, int nWaitTime); ///@brief CLIENT_ModifyAlarmUserPassword 接口输入参数 typedef struct tagNET_IN_MODIFY_ALARM_USER_PASSWORD { DWORD dwSize; // 结构体大小 char szUserID[64]; // 用户ID,用户唯一标识 char szOldPassword[64]; // 旧密码 char szNewPassword[64]; // 新密码 }NET_IN_MODIFY_ALARM_USER_PASSWORD; ///@brief CLIENT_ModifyAlarmUserPassword 接口输出参数 typedef struct tagNET_OUT_MODIFY_ALARM_USER_PASSWORD { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_ALARM_USER_PASSWORD; ///@brief 修改报警用户密码 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyAlarmUserPassword(LLONG lLoginID, const NET_IN_MODIFY_ALARM_USER_PASSWORD *pstuInParam, NET_OUT_MODIFY_ALARM_USER_PASSWORD *pstuOutParam, int nWaitTime); ///@brief CLIENT_DeleteAlarmUser 接口输入参数 typedef struct tagNET_IN_DELETE_ALARM_USER { DWORD dwSize; // 结构体大小 char szUserID[64]; // 用户ID,用户唯一标识 }NET_IN_DELETE_ALARM_USER; ///@brief CLIENT_DeleteAlarmUser 接口输出参数 typedef struct tagNET_OUT_DELETE_ALARM_USER { DWORD dwSize; // 结构体大小 }NET_OUT_DELETE_ALARM_USER; ///@brief 删除报警用户 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteAlarmUser(LLONG lLoginID, const NET_IN_DELETE_ALARM_USER *pstuInParam, NET_OUT_DELETE_ALARM_USER *pstuOutParam, int nWaitTime); /////////////////////////////智能分析服务接口 开始///////////////////////////////// #define MAX_ANALYSE_REMAIN_CAPACITY_NUM 32 // 智能分析最大剩余数量 #define MAX_ANALYSE_RULE_COUNT 32 // 最大分析规则条数 #define MAX_ANALYSE_PICTURE_FILE_NUM 32 // 图片文件最大数量 #define MAX_ANALYSE_TASK_NUM 64 // 最大智能分析任务个数 #define MAX_ANALYSE_FILTER_EVENT_NUM 64 // 最大支持过滤的事件个数 #define MAX_ANALYSE_ALGORITHM_NUM 16 // 最大算法数量 #define MAX_ANALYSE_TOTALCAPS_NUM 32 // 最大的智能分析总能力数量 ///@brief 智能分析剩余能力具体信息 typedef struct tagNET_REMAIN_ANALYSE_CAPACITY { UINT nMaxStreamNum; // 剩余能分析的视频流数目 EM_SCENE_CLASS_TYPE emClassType; // 大类业务方案 BYTE byReserved[1024]; // 保留字节 } NET_REMAIN_ANALYSE_CAPACITY; ///@brief 可供任务调度的总的智能能力 typedef struct tagNET_REMAIN_ANALYSE_TOTAL_CAPACITY { EM_SCENE_CLASS_TYPE emClassType; // 业务大类 UINT nNumber; // 任务调度总共能分析的视频流数目 BYTE byReserved[256]; // 预留字节 } NET_REMAIN_ANALYSE_TOTAL_CAPACITY; ///@brief 图片智能分析剩余能力具体信息 typedef struct tagNET_REMAIN_PICTURE_ANALYSE_CAPACITY { UINT nMaxStreamNum; // 剩余能分析的视频流数目 EM_SCENE_CLASS_TYPE emClassType; // 大类业务方案 BYTE byReserved[1024]; // 保留字节 } NET_REMAIN_PICTURE_ANALYSE_CAPACITY; ///@brief 可供任务调度的总的图片智能能力 typedef struct tagNET_REMAIN_PICTURE_ANALYSE_TOTAL_CAPACITY { EM_SCENE_CLASS_TYPE emClassType; // 业务大类 UINT nNumber; // 任务调度总共能分析的视频流数目 BYTE byReserved[256]; // 预留字节 } NET_REMAIN_PICTURE_ANALYSE_TOTAL_CAPACITY; ///@brief 特征库类型 typedef enum tagEM_REPOSITORY_TYPE { EM_REPOSITORY_TYPE_UNKNOWN = -1, // 未知 EM_REPOSITORY_TYPE_BLOCKLIST, // 禁止访问名单库 EM_REPOSITORY_TYPE_ALLOWLIST, // 允许访问名单库 EM_REPOSITORY_TYPE_STATIC, // 静态库 EM_REPOSITORY_TYPE_SNAPSHOT, // 抓拍库 } EM_REPOSITORY_TYPE; ///@brief 特征比对能力 typedef struct tagNET_FEATURE_MATCH { EM_SCENE_CLASS_TYPE emClassType; // 业务大类 BYTE byReserved1[4]; // 字节对齐 EM_REPOSITORY_TYPE emRepositoryType[16]; // 支持的特征库类型 int nRepositoryTypeNum; // 支持的特征库个数 UINT nComparePerSecond; // 每秒比对次数,单位次/s UINT nFeatureCapacity; // 特征库存储特征数据总容量大小,单位个 UINT nFreeFeatureCapacity; // 特征库存储特征数据剩余容量大小,单位个 BYTE byReserved[512]; // 保留字节 }NET_FEATURE_MATCH; ///@brief 智能分析剩余能力 typedef struct tagNET_CB_REMAIN_CAPACITY { UINT nRemainCapacityNum; // 智能分析剩余能力数量 NET_REMAIN_ANALYSE_CAPACITY stuRemainCapacities[MAX_ANALYSE_REMAIN_CAPACITY_NUM]; // 智能分析剩余能力 NET_REMAIN_ANALYSE_TOTAL_CAPACITY stuTotalCapacity[32]; // 可供任务调度的总的智能能力 UINT nTotalCapacityNum; // 可供任务调度的总的智能能力个数 UINT nRemainDecodeCaps; // 剩余解码能力,即剩余解码资源个数 UINT nRemainComputingCaps; // 剩余算力 NET_REMAIN_PICTURE_ANALYSE_CAPACITY stuRemainPictureCapacities[32]; // 图片智能分析剩余能力 UINT nRemainPictureCapacityNum; // 智能分析剩余能力数量 UINT nTotalPictureCapacityNum; // 可供任务调度的总的图片智能能力个数 NET_REMAIN_PICTURE_ANALYSE_TOTAL_CAPACITY stuTotalPictureCapacity[32]; // 可供任务调度的总的图片智能能力 NET_FEATURE_MATCH stuFeatureMatch[32]; // 特征比对能力 UINT nFeatureMatchNum; // 特征比对能力个数 BYTE byReserved[1016]; // 保留字节 } NET_CB_REMAIN_CAPACITY; ///@brief 订阅剩余智能分析资源回调函数原形,lAttachHandle是CLIENT_IntelliAttachResource返回值 typedef void (CALLBACK *fAttachRemainAnalyseResourceCB) (LLONG lAttachHandle, NET_CB_REMAIN_CAPACITY* pstRemainCapacity, LDWORD dwUser); ///@brief CLIENT_AttachRemainAnalyseResource 接入输出参数 typedef struct tagNET_IN_ATTACH_REMAIN_ANALYSE_RESOURCE { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 用于字节对齐 fAttachRemainAnalyseResourceCB cbAttachResource; // 剩余智能分析资源回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_REMAIN_ANALYSE_RESOURCE; ///@brief 智能分析数据源类型 typedef enum tagEM_DATA_SOURCE_TYPE { EM_DATA_SOURCE_REMOTE_UNKNOWN = 0, // 未知 EM_DATA_SOURCE_REMOTE_REALTIME_STREAM = 1, // 远程实时流 , 对应 NET_REMOTE_REALTIME_STREAM_INFO EM_DATA_SOURCE_PUSH_PICFILE, // 主动推送图片文件, 对应 NET_PUSH_PICFILE_INFO EM_DATA_SOURCE_REMOTE_VIDEO_FILE, // 远程视频文件, 对应 NET_REMOTE_VIDEO_FILE_INFO EM_DATA_SOURCE_REMOTE_PICTURE_FILE, // 远程图片文件, 对应 NET_REMOTE_PICTURE_FILE_INFO EM_DATA_SOURCE_OFFLINE_VIDEO_FILE, // 离线视频文件(第三方导入的文件), 对应 NET_OFFLINE_VIDEO_FILE_INFO EM_DATA_SOURCE_PUSH_PICFILE_BYRULE, // 主动推送图片文件,添加任务时无规则和图片信息,通过推送图片接口,每张图片中带有不同的规则信息(目前能源场景中使用), 对应 NET_PUSH_PICFILE_BYRULE_INFO EM_DATA_SOURCE_LOCAL_STREAM, // 本地实时流, 对应 NET_LOCAL_STREAM_INFO EM_DATA_SOURCE_ALL_SOURCE_TYPE, // 所有的任务类型,目前只在CLIENT_RemoveAnalyseTaskByType接口使用,表示删除所有的任务类型的任务 } EM_DATA_SOURCE_TYPE; ///@brief 目标属性类型 typedef enum tagNET_EM_FACEFEATURE_TYPE { NET_EM_FACEFEATURE_UNKNOWN, // 未知 NET_EM_FACEFEATURE_SEX, // 性别 NET_EM_FACEFEATURE_AGE, // 年龄 NET_EM_FACEFEATURE_EMOTION, // 表情 NET_EM_FACEFEATURE_GLASSES, // 眼镜状态 NET_EM_FACEFEATURE_EYE, // 眼睛状态 NET_EM_FACEFEATURE_MOUTH, // 嘴巴状态 NET_EM_FACEFEATURE_MASK, // 口罩状态 NET_EM_FACEFEATURE_BEARD, // 胡子状态 NET_EM_FACEFEATURE_ATTRACTIVE, // 魅力值 } NET_EM_FACEFEATURE_TYPE; ///@brief 事件类型EVENT_IVS_FACEANALYSIS(目标分析事件) 对应的规则配置 typedef struct tagNET_FACEANALYSIS_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 int nLinkGroupNum; // 联动布控个数 NET_CFG_LINKGROUP_INFO stuLinkGroup[20]; // 联动的布控组 NET_CFG_STRANGERMODE_INFO stuStrangerMode; // 陌生人布防模式 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bFeatureEnable; // 是否开启目标属性识别, IPC增加 int nFaceFeatureNum; // 需要检测的目标属性个数 NET_EM_FACEFEATURE_TYPE emFaceFeatureType[32]; // 需检测的目标属性 BOOL bFeatureFilter; // 在目标属性开启前提下,如果目标图像质量太差,是否不上报属性 // true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准,影响用户体验) int nMinQuality; // 目标图片质量阈值,和bFeatureFilter一起使用 范围[1,100] } NET_FACEANALYSIS_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_ROAD_BLOCK_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nMinDuration; // 最短持续时间,单位:秒 0~65535 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 int nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍。有两种情况不适合变倍 // 1.车速较快场合,变倍会导致跟踪不及时 // 2.车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。注意是否要关闭变倍取决于现场情况,属于比较专业的配置,只对Web或者调试工具开放该选项 // true开启变倍,false不变倍 // web上默认勾选 UINT nRepeatAlarmTime; // 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_ROAD_BLOCK_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nMinDuration; // 最短持续时间,单位:秒 0~65535 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 int nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍。有两种情况不适合变倍 // 1.车速较快场合,变倍会导致跟踪不及时 // 2.车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。注意是否要关闭变倍取决于现场情况,属于比较专业的配置,只对Web或者调试工具开放该选项 // true开启变倍,false不变倍 // web上默认勾选 UINT nRepeatAlarmTime; // 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_FLOWSTAT_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nDetectLineNum; // 规则检测线顶点数 DH_POINT DetectLine[DH_MAX_DETECT_LINE_NUM]; // 规则检测线 int nLaneNumber; // 车道编号 与场景中的车道号对应 UINT nPeriod; // 统计周期,单位:分钟 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_FLOWSTAT_RULE_INFO; ///@brief 速度限制 typedef struct tagNET_SPEED_LIMIT { int nSpeedUpperLimit; // 速度上限 int nSpeedLowerLimit; // 速度下限 } NET_SPEED_LIMIT; ///@brief 事件类型EVENT_IVS_TRAFFIC_OVERSPEED(超速事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_OVERSPEED_RULE_INFO { NET_SPEED_LIMIT stuSpeedLimit; // 限速范围 int nMinDuration; // 最短触发时间,单位:秒 BOOL bSnapMotorcycle; // 是否抓拍摩托车 NET_SPEED_LIMIT stuYellowSpeedLimit; // 黄牌车限速范围,范围0~255km/h int nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bSpeedLimitForSize; // 是否启用大小车限速,True-使用下面具体的大小车限速字段,False-使用SpeedLimit字段,该字段缺省时默认False,即使用通用字段SpeedLimit NET_SPEED_LIMIT stuSmallCarSpeedLimit; // 小型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为普通车辆限速 NET_SPEED_LIMIT stuBigCarSpeedLimit; // 大型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为大型车辆限速 NET_SPEED_LIMIT stuOverSpeedMargin; // 小车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为小车高速宽限值 NET_SPEED_LIMIT stuBigCarOverSpeedMargin; // 大车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值 NET_SPEED_LIMIT stuUnderSpeedMargin; // 小车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时,作为小车低速宽限值 NET_SPEED_LIMIT stuBigCarUnderSpeedMargin; // 大车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值 BOOL bVoiceBroadcastEnable; // 语音播报使能 BYTE byReserved[4092]; // 保留字节 } NET_TRAFFIC_OVERSPEED_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_UNDERSPEED(欠速事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_UNDERSPEED_RULE_INFO { NET_SPEED_LIMIT stuSpeedLimit; // 限速范围 int nMinDuration; // 最短触发时间,单位:秒 BOOL bSnapMotorcycle; // 是否抓拍摩托车 NET_SPEED_LIMIT stuYellowSpeedLimit; // 黄牌车限速范围,范围0~255km/h int nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bSpeedLimitForSize; // 是否启用大小车限速,True-使用下面具体的大小车限速字段,False-使用SpeedLimit字段,该字段缺省时默认False,即使用通用字段SpeedLimit NET_SPEED_LIMIT stuSmallCarSpeedLimit; // 小型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为普通车辆限速 NET_SPEED_LIMIT stuBigCarSpeedLimit; // 大型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为大型车辆限速 NET_SPEED_LIMIT stuOverSpeedMargin; // 小车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为小车高速宽限值 NET_SPEED_LIMIT stuBigCarOverSpeedMargin; // 大车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值 NET_SPEED_LIMIT stuUnderSpeedMargin; // 小车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时,作为小车低速宽限值 NET_SPEED_LIMIT stuBigCarUnderSpeedMargin; // 大车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值 BOOL bVoiceBroadcastEnable; // 语音播报使能 BYTE byReserved[4092]; // 保留字节 } NET_TRAFFIC_UNDERSPEED_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_OVERYELLOWLINE_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bAreaTrigEnable; // 是否使能区域内触发该规则, false-不使能,true-使能 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nDelayTime; // 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_CROSSLANE_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 DH_POINT stuDirectionStart; // 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 DH_POINT stuDirectionEnd; // 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 BOOL bAreaTrigEnable; // 是否使能区域内触发该规则, false-不使能,true-使能 BOOL bContinueCrossLaneEnable; // 方案参数, false-普通变道(只要变道一次即可),true -抓连续变道(变道2次及以上) BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nDelayTime; // 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 BOOL bSnapNoPlateMotor; // 是否抓拍无牌车,true-抓拍无牌车 false-不抓拍无牌车 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_CROSSLANE_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_JAM_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nJamLineMargin; // 占线限值起始值(上限),拥堵长度占车道比例限值1-100 UINT nJamLineMarginEnd; // 占线限值终值(下限),必须比JamLineMargin小,两值的差推荐大于10,不能相等1-99 int nLaneNumber; // 车道编号 与场景中的车道号对应 UINT nDelay; // 检测到报警发生到开始上报的时间,单位:秒 范围1~65535 UINT nInterval; // 报警间隔时间,单位:秒 范围1~65535 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 UINT nReportTimes; // 上报次数 1~255 UINT nVehicleNumberThreshold; // 路口车辆数目阈值,大于0:只有当前路口车辆数目大于此值时才会判定为拥堵;等于0:对车辆数目没要求 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDiscontinuousTimeThreshold; // 不连续时间阈值(单位:秒):若超过该时间阈值为不拥堵的情况,将对报警计数清零 0-255 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_JAM_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_PEDESTRAIN_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 int nMinDuration; // 最短触发时间,单位:秒 int nInterval; // 报警间隔时间,单位:秒 BOOL bSnapMotorcycle; // 是否抓拍摩托车 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 UINT nRepeatAlarmTime; // 重复报警时间,无该字段不做处理 UINT nSnapObjectType; // 抓拍目标类型,默认抓拍行人,后续可做扩展.无该字段不做处理 UINT nDelayTime; // 检测到行人后多少时间开始报警。单位:秒,范围0-3600.无该字段不做处理 UINT nSensitivity; // 灵敏度,范围1~100 ,配置0即为默认值,灵敏度越大算法检测越灵敏 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_PEDESTRAIN_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_THROW_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 int nMinDuration; // 最短触发时间,单位:秒 int nInterval; // 报警间隔时间,单位:秒 BOOL bSnapMotorcycle; // 是否抓拍摩托车 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 UINT nRepeatAlarmTime; // 重复报警时间,无该字段不做处理 UINT nSnapObjectType; // 抓拍目标类型,默认抓拍行人,后续可做扩展.无该字段不做处理 UINT nDelayTime; // 检测到行人后多少时间开始报警。单位:秒,范围0-3600.无该字段不做处理 UINT nSensitivity; // 灵敏度,范围1~100 ,配置0即为默认值,灵敏度越大算法检测越灵敏 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_THROW_RULE_INFO; ///@brief 事件类型EVENT_IVS_RETROGRADEDETECTION(逆行检测事件) 对应的规则配置 typedef struct tagNET_RETROGRADE_DETECTION_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nTriggerPosition; // 触发报警位置数 BYTE bTriggerPosition[8]; // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 DH_POINT stuDirectionStart; // 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 DH_POINT stuDirectionEnd; // 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nSensitivity; // 灵敏度,值越小灵敏度越低。取决于方向夹角,取值1-10 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nDistance; // 逆行多少距离后触发报警,GB30147要求,距离归一化到8192坐标 BYTE byReserved[4096]; // 保留字节 } NET_RETROGRADE_DETECTION_RULE_INFO; ///@brief 抓拍机动车枚举 typedef enum tagNET_EM_SNAP_PLATEMOTOR_TYPE { NET_EM_SNAP_PLATEMOTOR_YES, // 抓拍机动车,默认值 NET_EM_SNAP_PLATEMOTOR_NO, // 不抓拍机动车 } NET_EM_SNAP_PLATEMOTOR_TYPE; ///@brief 事件类型EVENT_IVS_TRAFFIC_RETROGRADE(交通逆行检测事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_RETROGRADE_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 BYTE byReserved1[4]; // 字节对齐 DH_POINT stuDirectionStart; // 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 DH_POINT stuDirectionEnd; // 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 int nMinDuration; // 最短触发时间,单位:秒 UINT nLaneNumber; // 车道编号 与场景中的车道号对应 BOOL bLegal; // 逆行是否违章 UINT nPositionDistinctness; // 抓拍位置变化区分度 UINT nSensitivity; // 灵敏度,值越小灵敏度越低。取决于方向夹角,取值1-10 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nSnapNonMotor; // 是否抓拍非机动车 UINT nSnapNoPlateMotor; // 是否抓拍无牌机动车 NET_EM_SNAP_PLATEMOTOR_TYPE emSnapPlateMotor; // 是否抓拍机动车 UINT nSnapBicycle; // 是否抓拍自行车 UINT nDurationTime; // 事件检测模式下,逆行时间超过这个值后开始报警,单位:秒,范围0-3600 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nReverseDisplacement; // 逆行位移,默认1024坐标系, 范围是1-1023 单位是像素, 若无该字段或该字段配置为0时,算法设置默认值 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_RETROGRADE_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件) 对应的规则配置 typedef struct tagNET_TRAFFIC_PARKING_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nLaneNumber; // 车道编号 与场景中的车道号对应 UINT nDelay; // 检测到报警发生到开始上报的时间,单位:秒 范围1~65535 UINT nReportTimes; // 上报次数 1~255 UINT nParkingAllowedTime; // 允许停车时间 单位:秒,范围1~65535 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 UINT nParkingNumThreshold; // 停车数阈值,画面中停车数量大于此值时不报警 取值1-128 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nDectRegionNumber; // 检测区域号 与场景中的检测区域编号对应 UINT nShadeSnap; // 遮挡抓拍,默认为0 0:不支持1:支持 UINT nControlMoreAlerts; // 是否开启抑制同一个目标重复多报功能,0:不开启该功能,1:开启功能 UINT nReduceUnderreporting; // 是否开启减少id跳变导致的漏报功能,0:不开启该功能,1:开启功能 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_PARKING_RULE_INFO; ///@brief 事件类型EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件) 对应的规则配置 typedef struct tagNET_FINANCE_CASH_TRANSACTION_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nHumanDetectRegionPoint; // 人员检测区顶点数 POINTCOORDINATE stuHumanDetectRegion[20]; // 人员检测区 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 UINT nMinDuration; // 最短持续时间,单位:秒 (5S—60S) UINT nReportInterval; // 重复报警间隔,单位:秒 (0S—300S) BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BYTE byReserved[4096]; // 保留字节 } NET_FINANCE_CASH_TRANSACTION_RULE_INFO; ///@brief 事件类型EVENT_IVS_LEAVEDETECTION(离岗检测事件) 对应的规则配置 typedef struct tagNET_LEAVEDETECTION_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 UINT nMinDuration; // 最短持续时间,单位:秒 UINT nReportInterval; // 报告时间间隔,单位:秒 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 UINT nPersonLimitMin; // 允许值岗人数范围最小值 UINT nPersonLimitMax; // 允许值岗人数范围最大值 BYTE byReserved[4096]; // 保留字节 } NET_LEAVEDETECTION_RULE_INFO; ///@brief 检测目标 typedef enum tagEM_NEAR_DETECT_OBJECT { EM_NEAR_DETECT_OBJECT_UNKNOWN, // 未知 EM_NEAR_DETECT_OBJECT_PERSON, // 人 EM_NEAR_DETECT_OBJECT_ANIMAL, // 动物 }EM_NEAR_DETECT_OBJECT; ///@brief 被接近目标类型 typedef enum tagEM_NEAR_OBJECT_TYPE { EM_NEAR_OBJECT_TYPE_UNKNOWN, // 未知 EM_NEAR_OBJECT_TYPE_MOVING_FOR_KLIFT, // 移动叉车 EM_NEAR_OBJECT_TYPE_SILICON_PACKAGE, // 硅包 EM_NEAR_OBJECT_TYPE_MOVING_SILICON_PACKAGE, // 移动的硅包 EM_NEAR_OBJECT_TYPE_PURING_SILICON_PACKAGE, // 倒硅水的硅包 }EM_NEAR_OBJECT_TYPE; ///@brief 事件类型 EVENT_IVS_NEAR_OBJECT_DETECT(近物体检测事件) 对应的规则配置 typedef struct tagNET_IVS_NEAR_OBJECT_DETECT_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nMinDuration; // 最短持续时间,单位秒 UINT nReportInterval; // 报告时间间隔,单位秒 UINT nSensitivity; // 灵敏度,值越小灵敏度越低。取值1-10 EM_NEAR_DETECT_OBJECT emDetectObject; // 检测目标 EM_NEAR_OBJECT_TYPE emNearObjectType; // 被接近目标类型 char szReserved[2048]; // 保留字节 } NET_IVS_NEAR_OBJECT_DETECT_RULE_INFO; ///@brief 事件类型 EVENT_IVS_PIC_COMPARE_DETECTION (图片比对不上报警事件) 对应的规则配置 typedef struct tagNET_IVS_PIC_COMPARE_DETECTION_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 UINT nMinDuration; // 最短持续时间,单位秒 UINT nReportInterval; // 报告时间间隔,单位秒 UINT nSensitivity; // 灵敏度,值越小灵敏度越低 取值1-10 BOOL bSizeFilter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFilter; // 规则特定的尺寸过滤器 char szReserved[2048]; // 保留字节 } NET_IVS_PIC_COMPARE_DETECTION_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故) 对应的规则配置 typedef struct tagNET_TRAFFIC_ACCIDENT_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 int nMinDuration; // 最短触发时间,单位:秒 BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 UINT nZoomStayTime; // 变倍停留时间,单位:秒,在ZoomEnable为true时有效,为0时表示不停留,默认为0 UINT nVehicleDelayTime; // 车辆触发报警时间阈值,大于该阈值认为是交通事件,单位:秒,范围0-3600 UINT nPersonDelayTime; // 行人触发报警时间阈值,大于该阈值认为是交通事件,单位:秒,范围0-3600 UINT nMaxDelayTime; // 最大报警时长 超过此时间将不再报警,单位:秒,范围0-3600 UINT nVehicleNumberThreshold; // 拥堵状态下的停车数阈值,用于拥堵造成的交通事故,不做报警 UINT nWanderTime; // 追尾后停车时间阈值,超过阈值报警,单位ms 0~65535 UINT nRepeatTime; // 重复报警时间,单位ms; 0~65535 BOOL bRelateHuman; // 是否需要关联行人才报警,false为不关联,true为关联 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_ACCIDENT_RULE_INFO; ///@brief 事件类型EVENT_IVS_TRAFFIC_BACKING(倒车) 对应的规则配置 typedef struct tagNET_TRAFFIC_BACKING_RULE_INFO { POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nDetectRegionPoint; // 检测区顶点数 int nLaneNumber; // 车道编号 与场景中的车道号对应 DH_POINT stuDirectionStart; // 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 DH_POINT stuDirectionEnd; // 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 UINT nSensitivity; // 灵敏度,范围[1,10],灵敏度越高越容易检测 BOOL bAreaTrigEnable; // 是否使能区域内触发该规则, false-不使能,true-使能 BOOL bContinueCrossLaneEnable; // 方案参数, false-普通变道(只要变道一次即可),true -抓连续变道(变道2次及以上) BOOL bZoomEnable; // 变倍抓拍,违停球做规则判断时,默认会变倍 // 如下两种情况不适合变倍 // 1. 车速较快场合,变倍会导致跟踪不及时 // 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别 // 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置 BOOL bSnapMotorcycle; // 是否抓拍摩托车 UINT nDelayTime; // 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 BOOL bSnapNoPlateMotor; // 是否抓拍无牌车,true-抓拍无牌车 false-不抓拍无牌车 BYTE byReserved[4096]; // 保留字节 } NET_TRAFFIC_BACKING_RULE_INFO; ///@brief 事件类型EVENT_IVS_FOG_DETECTION(起雾检测) 对应的规则配置 typedef struct tagNET_FOG_DETECTION_RULE_INFO { EM_FOG_LEVEL emAlarmFogLevel; // 报警阈值。当雾情达到什么程度时,进行报警 UINT nAlarmInterval; // 报警时间间隔,单位秒,取值范围为[60,86400] BOOL bRealDataUpload; // 是否上报实时数据 UINT nRealUpdateInterval; // 实时数据上报间隔,单位秒,取值范围为[60,86400] BYTE byReserved[4096]; // 保留字节 } NET_FOG_DETECTION_RULE_INFO; ///@brief 视频支持的目标类型 typedef enum tagNET_ANALYSE_HUMANFACE_TYPE { NET_ANALYSE_HUMANFACE_TYPE_UNKNOWN, // 未知类型 NET_ANALYSE_HUMANFACE_TYPE_NORMAL, // 普通目标 NET_ANALYSE_HUMANFACE_TYPE_HIDEEYE, // 眼部遮挡 NET_ANALYSE_HUMANFACE_TYPE_HIDENOSE, // 鼻子遮挡 NET_ANALYSE_HUMANFACE_TYPE_HIDEMOUTH, // 嘴部遮挡 NET_ANALYSE_HUMANFACE_TYPE_ADJACENTFACE, // 相邻目标 (注,ATM,尾随) NET_ANALYSE_HUMANFACE_TYPE_ABNORMALFACE, // 异常目标 NET_ANALYSE_HUMANFACE_TYPE_HELMETFACE, // 头盔目标(如摩托车盔) }NET_ANALYSE_HUMANFACE_TYPE; ///@brief 年龄段 typedef enum tagEM_HUMAN_AGE_SEG { EM_HUMAN_AGE_SEG_UNKOWN, // 未知: "" EM_HUMAN_AGE_SEG_CHILD, // 幼儿: "Child" EM_HUMAN_AGE_SEG_ADULT, // 中年: "Adult" EM_HUMAN_AGE_SEG_ELDERLY, // 老年: "Elderly" }EM_HUMAN_AGE_SEG; ///@brief 年龄段信息的描述信息 typedef struct tagNET_HUMAN_DESC_INFO { EM_HUMAN_AGE_SEG emName; // 称谓: EM_HUMAN_AGE_SEG_CHILD-"Child", EM_HUMAN_AGE_SEG_ADULT-"Adult", EM_HUMAN_AGE_SEG_ELDERLY-"Elderly" UINT nRange[2]; // 年龄取值范围: nRange[0]为闭区间左值,nRange[1]为闭区间右值 char szReserved[256]; // 保留字节 }NET_HUMAN_DESC_INFO; ///@brief 年龄过滤条件 typedef struct tagNET_HUMAN_AGE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的年龄段的个数,最大值是16 EM_HUMAN_AGE_SEG emHumanAgeShowList[16]; // 过滤显示的年龄段 NET_HUMAN_DESC_INFO* pstuHumanDesc; // 年龄段信息的描述信息, 内存由用户申请和释放, 申请大小sizeof(NET_HUMAN_DESC_INFO)*nShowListNums char szReserved[256]; // 保留字节 }NET_HUMAN_AGE_INFO; ///@brief 性别过滤条件 typedef struct tagNET_HUMAN_SEX_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的性别的个数,最大值是2 EM_SEX_TYPE emHumanSexShowList[2]; // 过滤显示的性别 char szReserved[256]; // 保留字节 }NET_HUMAN_SEX_INFO; ///@brief 表情过滤条件 typedef struct tagNET_HUMAN_EMOTION_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的表情的个数,最大值是32 EM_EMOTION_TYPE emHumanEmotionShowList[32]; // 过滤显示的表情 char szReserved[256]; // 保留字节 }NET_HUMAN_EMOTION_INFO; ///@brief 眼镜佩戴过滤条件 typedef struct tagNET_HUMAN_GLASSES_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的眼镜佩戴情况的个数,最大值是16 EM_HAS_GLASS emHumanGlassesShowList[16]; // 过滤显示的眼镜佩戴情况 BOOL bHasGlasses; // 是否戴眼镜,TRUE-有,FALSE-无 char szReserved[256]; // 保留字节 }NET_HUMAN_GLASSES_INFO; ///@brief 口罩佩戴过滤条件 typedef struct tagNET_HUMAN_MASK_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的口罩佩戴情况的个数,最大值是2 EM_MASK_TYPE emHumanMaskShowList[2]; // 过滤显示的口罩佩戴情况 char szReserved[256]; // 保留字节 }NET_HUMAN_MASK_INFO; ///@brief 胡子情况 typedef enum tagEM_HUMAN_BEARD_TYPE { EM_HUMAN_BEARD_TYPE_UNKNOWN, // 未知 EM_HUMAN_BEARD_TYPE_NONE, // 没胡子 EM_HUMAN_BEARD_TYPE_BEARD, // 有胡子 } EM_HUMAN_BEARD_TYPE; ///@brief 胡子过滤条件 typedef struct tagNET_HUMAN_BEARD_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤显示的胡子情况的个数,最大值是2 EM_HUMAN_BEARD_TYPE emHumanBeardShowList[2]; // 胡子情况 char szReserved[256]; // 保留字节 }NET_HUMAN_BEARD_INFO; ///@brief上衣类型 typedef enum tagEM_HUMAN_COAT_TYPE { EM_HUMAN_COAT_TYPE_UNKNOWN, // 未知 EM_HUMAN_COAT_TYPE_LONG_SLEEVE, // 长袖 EM_HUMAN_COAT_TYPE_SHORT_SLEEVE, // 短袖 }EM_HUMAN_COAT_TYPE; ///@brief 上衣类型过滤条件 typedef struct tagNET_HUMAN_COAT_TYPE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的上衣类型的个数,最大值是16 EM_HUMAN_COAT_TYPE emHumanCoatTypeShowList[16]; // 需要过滤的上衣类型 char szReserved[256]; // 保留字节 }NET_HUMAN_COAT_TYPE_INFO; ///@brief 上衣颜色过滤条件 typedef struct tagNET_HUMAN_COAT_COLOR_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 过滤出对应的上衣颜色的个数,最大值是32 EM_CLOTHES_COLOR emHumanCoatColorShowList[32]; // 上衣颜色 char szReserved[256]; // 保留字节 }NET_HUMAN_COAT_COLOR_INFO; ///@brief 裤子类型 typedef enum tagEM_HUMAN_TROUSERS_TYPE { EM_HUMAN_TROUSERS_TYPE_UNKNOWN, // 未知 EM_HUMAN_TROUSERS_TYPE_SHORT_PANTS, // 短裤 EM_HUMAN_TROUSERS_TYPE_PANTS, // 长裤 EM_HUMAN_TROUSERS_TYPE_SKIRT, // 裙子 }EM_HUMAN_TROUSERS_TYPE; ///@brief 裤子类型过滤条件 typedef struct tagNET_HUMAN_TROUSERS_TYPE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的裤子类型的个数,最大值是16 EM_HUMAN_TROUSERS_TYPE emHumanTrousersTypeShowList[16]; // 需要过滤的裤子类型 char szReserved[256]; // 保留字节 }NET_HUMAN_TROUSERS_TYPE_INFO; ///@brief 裤子颜色过滤条件 typedef struct tagNET_HUMAN_TROUSERS_COLOR_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的裤子颜色颜色类型的个数,最大值是32 EM_CLOTHES_COLOR emHumanTrousersColorShowList[32]; // 需要过滤的裤子颜色类型 char szReserved[256]; // 保留字节 }NET_HUMAN_TROUSERS_COLOR_INFO; ///@brief 背包情况 typedef enum tagEM_HUMAN_BAG_TYPE { EM_HUMAN_BAG_TYPE_UNKNOWN, // 未知 EM_HUMAN_BAG_TYPE_BAG, // 背包 EM_HUMAN_BAG_TYPE_CARRIER_BAG, // 手提包 EM_HUMAN_BAG_TYPE_SHOULDER_BAG, // 肩包 EM_HUMAN_BAG_TYPE_NONE, // 无 } EM_HUMAN_BAG_TYPE; ///@brief 背包过滤条件 typedef struct tagNET_HUMAN_HAS_BAG_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的背包情况的个数,最大值是16 EM_HUMAN_BAG_TYPE emHumanHasBagShowList[16]; // 背包情况 char szReserved[256]; // 保留字节 }NET_HUMAN_HAS_BAG_INFO; ///@brief 雨伞检测情况 typedef enum tagEM_HUMAN_UMBRELLA_TYPE { EM_HUMAN_UMBRELLA_TYPE_UNKNOWN, // 未知 EM_HUMAN_UMBRELLA_TYPE_WITH_UMBRELLA, // 带伞 EM_HUMAN_UMBRELLA_TYPE_NO_UMBRELLA, // 不带伞 } EM_HUMAN_UMBRELLA_TYPE; ///@brief 雨伞过滤条件 typedef struct tagNET_HUMAN_HAS_UMBRELLA_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 雨伞检测情况的个数,最大值是2 EM_HUMAN_UMBRELLA_TYPE emHumanHasUmbrellaShowList[2]; // 雨伞检测情况 char szReserved[256]; // 保留字节 }NET_HUMAN_HAS_UMBRELLA_INFO; ///@brief 穿戴雨披类型 typedef enum tagEM_HUMAN_RAIN_COAT_TYPE { EM_HUMAN_RAIN_COAT_TYPE_UNKNOWN, // 未知 EM_HUMAN_RAIN_COAT_TYPE_YES, // 有 EM_HUMAN_RAIN_COAT_TYPE_NO, // 无 } EM_HUMAN_RAIN_COAT_TYPE; ///@brief 穿戴雨披 typedef struct tagNET_HUMAN_RAIN_COAT_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 穿戴雨披类型的个数,最大值是2 EM_HUMAN_RAIN_COAT_TYPE emHumanRainCoatShowList[2]; // 穿戴雨披类型 char szReserved[256]; // 保留字节 }NET_HUMAN_RAIN_COAT_INFO; ///@brief 帽子情况 typedef enum tagEM_HUMAN_HAT_TYPE { EM_HUMAN_HAT_TYPE_UNKNOWN, // 未知 EM_HUMAN_HAT_TYPE_WITH_HAT, // 普通帽 EM_HUMAN_HAT_TYPE_WITH_HELMET, // 头盔 EM_HUMAN_HAT_TYPE_NONE, // 无 } EM_HUMAN_HAT_TYPE; ///@brief 帽子过滤条件 typedef struct tagNET_HUMAN_HAS_HAT_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的帽子情况的个数,最大值是16 EM_HUMAN_HAT_TYPE emHumanHasHatShowList[16]; // 需要过滤的帽子情况 char szReserved[256]; // 保留字节 }NET_HUMAN_HAS_HAT_INFO; ///@brief 安全帽合规性检测信息 typedef struct tagNET_HUMAN_HELMET_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 BOOL bHasHelmet; // 是否有戴安全帽,TRUE-有,FALSE-无 int nShowListNums; // 安全帽颜色的个数,最大值是32 EM_CLOTHES_COLOR emHumanHelmetColorShowList[32]; // 安全帽颜色 char szReserved[256]; // 保留字节 }NET_HUMAN_HELMET_INFO; ///@brief 是否有穿反光背心 typedef enum tagEM_HUMAN_VEST_TYPE { EM_HUMAN_VEST_TYPE_UNKNOWN = -1, // 未知 EM_HUMAN_VEST_TYPE_NO, // 无 EM_HUMAN_VEST_TYPE_YES, // 有 } EM_HUMAN_VEST_TYPE; ///@brief 安全背心合规性检测信息 typedef struct tagNET_HUMAN_VEST_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 是否有穿反光背心的类型的个数,最大值是2 EM_HUMAN_VEST_TYPE emHumanVestShowList[2]; // 是否有穿反光背心的类型 char szReserved[256]; // 保留字节 }NET_HUMAN_VEST_INFO; ///@brief 发型类型 typedef enum tagEM_HUMAN_HAIR_STYLE_TYPE { EM_HUMAN_HAIR_STYLE_TYPE_UNKNOWN, // 未知 EM_HUMAN_HAIR_STYLE_TYPE_LONG, // 长发 EM_HUMAN_HAIR_STYLE_TYPE_SHORT, // 短发 EM_HUMAN_HAIR_STYLE_TYPE_PONYTAIL, // 马尾 EM_HUMAN_HAIR_STYLE_TYPE_UPDO, // 盘发 EM_HUMAN_HAIR_STYLE_TYPE_HEAD_COVERED, // 遮挡头部 } EM_HUMAN_HAIR_STYLE_TYPE; ///@brief 发型过滤条件 typedef struct tagNET_HUMAN_HAIR_STYLE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的发型类型的个数,最大值是16 EM_HUMAN_HAIR_STYLE_TYPE emHumanHairStyleShowList[16]; // 需要过滤的发型类型 char szReserved[256]; // 保留字节 }NET_HUMAN_HAIR_STYLE_INFO; ///@brief 人体拍摄角度 typedef struct tagNET_HUMAN_ANGLE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 需要过滤的拍摄角度类型的个数,最大值是16 EM_ANGLE_TYPE emHumanAngleShowList[16]; // 需要过滤的拍摄角度类型 char szReserved[256]; // 保留字节 }NET_HUMAN_ANGLE_INFO; ///@brief 抱小孩类型 typedef enum tagEM_HUMAN_HOLD_BABY_TYPE { EM_HUMAN_HOLD_BABY_TYPE_UNKNOWN, // 未知 EM_HUMAN_HOLD_BABY_TYPE_HOLD, // 抱 EM_HUMAN_HOLD_BABY_TYPE_NO_HOLD, // 未抱 } EM_HUMAN_HOLD_BABY_TYPE; ///@brief 抱小孩 typedef struct tagNET_HUMAN_HOLD_BABY_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 抱小孩类型的个数,最大值是2 EM_HUMAN_HOLD_BABY_TYPE emHumanHoldBabyShowList[2]; // 抱小孩类型 char szReserved[256]; // 保留字节 }NET_HUMAN_HOLD_BABY_INFO; ///@brief 人体过滤配置,包括人体和目标的属性 typedef struct tagNET_COMPLIANT_HUMAN_INFO { NET_HUMAN_AGE_INFO stuHumanAge; // 年龄过滤条件 NET_HUMAN_SEX_INFO stuHumanSex; // 性别过滤条件 NET_HUMAN_EMOTION_INFO stuHumanEmotion; // 表情过滤条件 NET_HUMAN_GLASSES_INFO stuHumanGlasses; // 眼镜佩戴过滤条件 NET_HUMAN_MASK_INFO stuHumanMask; // 口罩佩戴过滤条件 NET_HUMAN_BEARD_INFO stuHumanBeard; // 胡子过滤条件 NET_HUMAN_COAT_TYPE_INFO stuHumanCoatType; // 上衣类型过滤条件 NET_HUMAN_COAT_COLOR_INFO stuHumanCoatColor; // 上衣颜色过滤条件 NET_HUMAN_TROUSERS_TYPE_INFO stuHumanTrousersType; // 裤子类型过滤条件 NET_HUMAN_TROUSERS_COLOR_INFO stuHumanTrousersColor; // 裤子颜色过滤条件 NET_HUMAN_HAS_BAG_INFO stuHumanHasBag; // 背包过滤条件 NET_HUMAN_HAS_UMBRELLA_INFO stuHumanHasUmbrella; // 雨伞过滤条件 NET_HUMAN_RAIN_COAT_INFO stuHumanRainCoat; // 穿戴雨披 NET_HUMAN_HAS_HAT_INFO stuHumanHasHat; // 帽子过滤条件 NET_HUMAN_HELMET_INFO stuHumanHelmet; // 安全帽合规性检测信息 NET_HUMAN_VEST_INFO stuHumanVest; // 安全背心合规性检测信息 NET_HUMAN_HAIR_STYLE_INFO stuHumanHairStyle; // 发型过滤条件 NET_HUMAN_ANGLE_INFO stuHumanAngle; // 人体拍摄角度 NET_HUMAN_HOLD_BABY_INFO stuHumanHoldBaby; // 抱小孩 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_HUMAN_INFO; ///@brief 机动车车色过滤配置 typedef struct tagNET_VEHICLE_COLOR_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 机动车车身颜色的个数,最大值是32 EM_OBJECT_COLOR_TYPE emVehicleColorShowList[32]; // 机动车车身颜色 char szReserved[256]; // 保留字节 }NET_VEHICLE_COLOR_INFO; ///@brief 车标过滤配置 typedef struct tagNET_VEHICLE_BRAND_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 车标的个数,最大值是256 int nBrandShowList[256]; // 车标对应的枚举值, 数字到具体品牌映射见映射表(由算法统一提供), 目前有效值为0-562 char szReserved[256]; // 保留字节 }NET_VEHICLE_BRAND_INFO; ///@brief 机动车车辆类型 typedef enum tagEM_COMPLIANT_VEHICLE_TYPE { EM_COMPLIANT_VEHICLE_TYPE_UNKNOWN, // 未知 EM_COMPLIANT_VEHICLE_TYPE_PASSENGER_CAR, // 客车 EM_COMPLIANT_VEHICLE_TYPE_LARGE_TRUCK, // 大货车 EM_COMPLIANT_VEHICLE_TYPE_MID_TRUCK, // 中货车 EM_COMPLIANT_VEHICLE_TYPE_MID_PASSENGER_CAR, // 中客车 EM_COMPLIANT_VEHICLE_TYPE_SALOON_CAR, // 轿车 EM_COMPLIANT_VEHICLE_TYPE_MICROBUS, // 面包车 EM_COMPLIANT_VEHICLE_TYPE_MICRO_TRUCK, // 小货车 EM_COMPLIANT_VEHICLE_TYPE_SUV, // SUV EM_COMPLIANT_VEHICLE_TYPE_SUV_MPV, // SUV或者MPV EM_COMPLIANT_VEHICLE_TYPE_MPV_PICKUP, // 皮卡车 EM_COMPLIANT_VEHICLE_TYPE_MINI_CARRIAGE, // 微型车 EM_COMPLIANT_VEHICLE_TYPE_TANK_CAR, // 危化品车辆 EM_COMPLIANT_VEHICLE_TYPE_CONCRETE_MIXER_TRUCK, // 混凝土搅拌车 EM_COMPLIANT_VEHICLE_TYPE_SUCTION_SEWAGE_TRUCK, // 吸污车 EM_COMPLIANT_VEHICLE_TYPE_NORMAL_TANK_TRUCK, // 普通罐车 EM_COMPLIANT_VEHICLE_TYPE_TRACTOR, // 拖拉机 EM_COMPLIANT_VEHICLE_TYPE_MACHINE_SHOP_TRUCK, // 工程车 EM_COMPLIANT_VEHICLE_TYPE_DREGS_CAR, // 渣土车 EM_COMPLIANT_VEHICLE_TYPE_POLICE, // 警车 EM_COMPLIANT_VEHICLE_TYPE_AMBULANCE, // 救护车 EM_COMPLIANT_VEHICLE_TYPE_FIRE_ENGINE, // 消防车 EM_COMPLIANT_VEHICLE_TYPE_WATERING_CAR, // 洒水车 EM_COMPLIANT_VEHICLE_TYPE_TAXI, // 出租车 EM_COMPLIANT_VEHICLE_TYPE_POWER_LOT_VEHICLE, // 粉粒物料车 EM_COMPLIANT_VEHICLE_TYPE_SCHOOL_BUS, // 校车 EM_COMPLIANT_VEHICLE_TYPE_BUS, // 公交车 EM_COMPLIANT_VEHICLE_TYPE_ESCORT, // 押运车 EM_COMPLIANT_VEHICLE_TYPE_OTHER, // 其他 } EM_COMPLIANT_VEHICLE_TYPE; ///@brief 机动车车型过滤配置 typedef struct tagNET_VEHICLE_TYPE_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 车型的个数,最大值是64 EM_COMPLIANT_VEHICLE_TYPE emVehicleTypeShowList[64]; // 车辆类型 char szReserved[256]; // 保留字节 }NET_VEHICLE_TYPE_INFO; ///@brief 车牌颜色过滤配置 typedef struct tagNET_VEHICLE_PLATE_COLOR_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 车牌颜色的个数,最大值是16 EM_NET_PLATE_COLOR_TYPE emVehiclePlateColorShowList[16]; // 车牌颜色 char szReserved[256]; // 保留字节 }NET_VEHICLE_PLATE_COLOR_INFO; ///@brief 打电话情况 typedef enum tagEM_VEHICLE_CALLING_TYPE { EM_VEHICLE_CALLING_TYPE_UNKNOWN, // 未知 EM_VEHICLE_CALLING_TYPE_CALLING, // 正在打电话 EM_VEHICLE_CALLING_TYPE_NO_CALL, // 没有在打电话 } EM_VEHICLE_CALLING_TYPE; ///@brief 打电话过滤配置 typedef struct tagNET_VEHICLE_CALLING_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 打电话情况的个数,最大值是2 EM_VEHICLE_CALLING_TYPE emVehicleCallingShowList[2]; // 打电话情况 char szReserved[256]; // 保留字节 }NET_VEHICLE_CALLING_INFO; ///@brief 安全带情况 typedef enum tagEM_VEHICLE_SAFE_BELT_TYPE { EM_VEHICLE_SAFE_BELT_TYPE_UNKNOWN, // 未知 EM_VEHICLE_SAFE_BELT_TYPE_WITH_SAFE_BELT, // 安全带正常 EM_VEHICLE_SAFE_BELT_TYPE_WITHOUT_SAFE_BELT, // 未系安全带 } EM_VEHICLE_SAFE_BELT_TYPE; ///@brief 安全带过滤配置 typedef struct tagNET_VEHICLE_SAFE_BELT_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 安全带情况的个数,最大值是2 EM_VEHICLE_SAFE_BELT_TYPE emVehicleSafeBeltShowList[2]; // 安全带情况 char szReserved[256]; // 保留字节 }NET_VEHICLE_SAFE_BELT_INFO; ///@brief 车内饰品情况 typedef enum tagEM_VEHICLE_ATTACHMENT_TYPE { EM_VEHICLE_ATTACHMENT_TYPE_UNKNOWN, // 未知 EM_VEHICLE_ATTACHMENT_TYPE_FURNITURE, // 摆件 EM_VEHICLE_ATTACHMENT_TYPE_PENDANT, // 挂件 EM_VEHICLE_ATTACHMENT_TYPE_TISSUE_BOX, // 纸巾盒 EM_VEHICLE_ATTACHMENT_TYPE_PERFUME_BOX, // 香水盒 EM_VEHICLE_ATTACHMENT_TYPE_DANGER, // 危险品 EM_VEHICLE_ATTACHMENT_TYPE_NONE, // 无车内饰品 EM_VEHICLE_ATTACHMENT_TYPE_CARD, // 卡片 } EM_VEHICLE_ATTACHMENT_TYPE; ///@brief 车上挂件过滤条件 typedef struct tagNET_VEHICLE_ATTACHMENT_INFO { BOOL bEnable; // 是否过滤启用: TRUE-下发该配置 FALSE-不下发该配置 int nShowListNums; // 车内饰品情况的个数,最大值是16 EM_VEHICLE_ATTACHMENT_TYPE emVehicleAttachmentShowList[16]; // 车内饰品情况 char szReserved[256]; // 保留字节 }NET_VEHICLE_ATTACHMENT_INFO; ///@brief 机动车合规报警过滤配置 typedef struct tagNET_COMPLIANT_VEHICLE_INFO { NET_VEHICLE_COLOR_INFO stuVehicleColor; // 机动车车色过滤配置 NET_VEHICLE_BRAND_INFO stuVehicleBrand; // 车标过滤配置 NET_VEHICLE_TYPE_INFO stuVehicleType; // 机动车车型过滤配置 NET_VEHICLE_PLATE_COLOR_INFO stuVehiclePlateColor; // 车牌颜色过滤配置 NET_VEHICLE_CALLING_INFO stuVehicleCalling; // 打电话过滤配置 NET_VEHICLE_SAFE_BELT_INFO stuVehicleSafeBelt; // 安全带过滤配置 NET_VEHICLE_ATTACHMENT_INFO stuVehicleAttachment; // 车上挂件过滤条件 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_VEHICLE_INFO; ///@brief 非机动车颜色过滤条件 typedef struct tagNET_NONMOTOR_COLOR_INFO { BOOL bEnable; // 是否启用, 为TRUE则下发非机动车颜色过滤条件,为FALSE则不下发非机动车颜色过滤条件 int nShowListNums; // 非机动车车身颜色的个数,最大值是32 EM_OBJECT_COLOR_TYPE emNonMotorColorShowList[32]; // 非机动车车身颜色 char szReserved[256]; // 保留字节 }NET_NONMOTOR_COLOR_INFO; ///@brief 车上人数过滤条件 typedef struct tagNET_NONMOTOR_CYCLING_NUM_INFO { BOOL bEnable; // 是否启用, 为TRUE则下发车上人数过滤条件,为FALSE则不下发车上人数过滤条件 UINT nCyclingNum; // 需要过滤出对应的人体数目 char szReserved[256]; // 保留字节 }NET_NONMOTOR_CYCLING_NUM_INFO; ///@brief 过滤出对应的非机动车类型 typedef enum tagEM_NONMOTOR_TYPE { EM_NONMOTOR_TYPE_UNKNOWN = 0, // 未知 EM_NONMOTOR_TYPE_BICYCLE, // 自行车 EM_NONMOTOR_TYPE_VANTRICYCLE, // 厢式三轮车 EM_NONMOTOR_TYPE_MOTORBIKE, // 摩托车 EM_NONMOTOR_TYPE_MANNED_CONVERTIBLE_TRICYCLE, // 载人敞篷三轮车 EM_NONMOTOR_TYPE_NO_MANNED_CONVERTIBLE_TRICYCLE, // 不载人敞篷三轮车 }EM_NONMOTOR_TYPE; ///@brief 非机动车类型过滤条件 typedef struct tagNET_NONMOTOR_CATEGORY_INFO { BOOL bEnable; // 是否启用, 为TRUE则下发非机动车类型过滤条件,为FALSE则不下发非机动车类型过滤条件 int nShowListNums; // 非机动车类型的个数,最大值是32 EM_NONMOTOR_TYPE emNonMotorTypeShowList[32]; // 过滤出对应的非机动车类型 char szReserved[256]; // 保留字节 }NET_NONMOTOR_CATEGORY_INFO; ///@brief 非机动车过滤配置 typedef struct tagNET_COMPLIANT_NONMOTOR_INFO { NET_NONMOTOR_COLOR_INFO stuNonMotorColor; // 非机动车颜色过滤条件 NET_NONMOTOR_CYCLING_NUM_INFO stuNumOfCycling; // 车上人数过滤条件 NET_NONMOTOR_CATEGORY_INFO stuCategory; // 非机动车类型过滤条件 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_NONMOTOR_INFO; ///@brief 船只类型 typedef enum tagEM_BOAT_TYPE { EM_BOAT_TYPE_UNKNOWN = 0, // 未知 EM_BOAT_TYPE_SAND_MINING_SHIP, // 采砂船 }EM_BOAT_TYPE; ///@brief 船只类型过滤配置 typedef struct tagNET_BOAT_TYPE_INFO { BOOL bEnable; // 是否启用, 为TRUE则下发船只类型过滤配置,为FALSE则不下发船只类型过滤配置 int nShowListNums; // 船只类型的个数,最大值是64 EM_BOAT_TYPE emBoatTypeShowList[64]; // 船只类型 char szReserved[256]; // 保留字节 }NET_BOAT_TYPE_INFO; ///@brief 船只合规报警过滤配置 typedef struct tagNET_COMPLIANT_BOAT_INFO { NET_BOAT_TYPE_INFO stuBoatType; // 船只类型过滤配置 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_BOAT_INFO; ///@brief 合规报警属性过滤规则 typedef struct tagNET_COMPLIANT_FORMAT_INFO { BOOL bSupportHuman; // 为TRUE: 下发人体过滤配置, 为FALSE: 不下发人体过滤配置 NET_COMPLIANT_HUMAN_INFO stuHuman; // 人体过滤配置,包括人体和目标的属性 BOOL bSupportVehicle; // 为TRUE: 下发机动车合规报警过滤配置, 为FALSE: 不下发机动车合规报警过滤配置 NET_COMPLIANT_VEHICLE_INFO stuVehicle; // 机动车合规报警过滤配置 BOOL bSupportNonMotor; // 为TRUE: 下发非机动车过滤配置, 为FALSE: 不下发非机动车过滤配置 NET_COMPLIANT_NONMOTOR_INFO stuNonMotor; // 非机动车过滤配置 NET_COMPLIANT_BOAT_INFO stuBoat; // 船只合规报警过滤配置 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_FORMAT_INFO; ///@brief 合规报警规则 typedef struct tagNET_COMPLIANT_INFO { UINT nCompliantType; // 合规报警报警类型,0:不合规,1-合规, 2-不限(IVSS专用) BOOL bCompliantEnable; // 合规条件使能, TRUE: 开启, FALSE-关闭,如果使能为TRUE上报合规相关属性 NET_COMPLIANT_FORMAT_INFO stuCompliantFormat; // 合规报警属性过滤规则 char szReserved[1024]; // 保留字节 }NET_COMPLIANT_INFO; ///@brief 事件类型EVENT_IVS_HUMANTRAIT(人员检测规则)对应的规则配置 typedef struct tagNET_HUMANTRAIT_RULE_INFO { DWORD dwSize; // 结构体大小 int nHumanFaceTypeNum; // 支持的目标检测类型个数 NET_ANALYSE_HUMANFACE_TYPE emHumanFaceType[8]; // 支持的目标检测类型列表 int nMinDuration; // 最短触发时间,单位:秒 int nTriggerTargets; // 触发报警的目标个数 int nSensitivity; // 灵敏度,越高越容易检测, 0-10 BOOL bSizeFileter; // 是否使用尺寸过滤器 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器,提高判断精度 BOOL bFeatureEnable; // 是否开启目标属性识别 BOOL bFeatureFilter; // 在目标属性开启前提下,如果目标图像质量太差,是否不上报属性 true-图像太差不上报属性;false-图像很差也上报属性(可能会非常不准,影响用户体验) int nMinQuality; // 目标图片质量阈值,和bFeatureFilter一起使用 int nFaceFeatureNum; // 需要检测的目标属性个数 NET_EM_FACEFEATURE_TYPE emFaceFeatureType[32]; // 需检测的目标属性 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nExcludeRegionNum; // 排除区域数 DH_POLY_POINTS stuExcludeRegion[10]; // 排除区域 BOOL bFaceSnapEnable; // 是否进行目标抓图: TRUE:进行目标抓图, FALSE:不进行目标抓图 BOOL bFeatureExtractEnable; // 是否提取人体特征向量 NET_COMPLIANT_INFO stuCompliant; // 合规报警规则 BOOL bHumanFeatureEnable; // 是否开启人体属性识别, TRUE-开启 FALSE-关闭 int nHumanFeatureList; // 人体属性的个数 char szHumanFeatureList[32][16]; // 配置要检测哪些人体属性,开启人体属性时有效(bHumanFeatureEnable为TRUE),目前支持的取值范围见如下能力描述 /**********能力描述 Start****************************************************************************************************************************************************************/ /* * "PersonID"-人员记录ID "ImageID"-图片ID "Sex"-人体性别 "Age"-人体年龄 "HasHat"-是否戴帽子 "HasBadge"-是否佩戴工牌 * "Cap"-帽类型 "CapColor"-帽子颜色 "HairStyle"-头发样式 "CoatColor"-上衣颜色 "CoatType"-上衣类型 "CoatStyle"-上衣款式 * "UpperPattern"-上半身衣服图案 "UniformStyle"-制服类型 "TrousersColor"-裤子颜色 "TrousersType"-裤子类型 "ShoesType"-鞋子类型 "ShoesColor"-鞋子颜色 * "RainCoat"-是否有雨披 "HasUmbrella"-是否打伞 "HasBag"-是否带包 "Bag"-包类型 "BackBag"-是否有背包 "CarrierBag"-是否带手提包 * "ShoulderBag"-是否有肩包 "MessengerBag"-是否有斜跨包 "HoldBaby"-是否抱小孩 "BoundingBox"-包围盒 "Center"-物体型心 "Angle"-角度 * "Mask"-口罩状态 "MaskColor"-口罩颜色 "HasVest"-是否有反光背心 "HasBabyCarriage"-是否推婴儿车 "IsErrorDetect"-是否虚检 "HasHead"-人体部位是否有头 * "HasDownBody"-人体部位是否有下半身 "QeScore"-人体优选分数 "Integrality"-目标完整性 "ExtRecordSource"-是否与其他目标关联 "UmbrellaColor"-雨伞颜色 "HasBagBody"-是否有包身 * "BagColor"-包颜色 "Trunk"-是否有行李箱 "AgeSeg"-年龄段 "Orientation"-方位 "HumanClarity"-人体清晰度 "HumanCompleteScore"-人体完整度评分 * "IsRelatedFace"-表示当前人体是否曾经关联过目标 */ /**********能力描述 End******************************************************************************************************************************************************************/ BOOL bFaceFeatureExtractEnable; // 是否提取目标特征向量 }NET_HUMANTRAIT_RULE_INFO; ///@brief 检测方向 typedef enum tagEM_DETECT_DIRECTION_TYPE { EM_DETECT_DIRECTION_UNKNOWN = 0, // 未知 EM_DETECT_DIRECTION_LEFT_TO_RIGHT, // 从左向右 EM_DETECT_DIRECTION_RIGHT_TO_LEFT, // 从右向左 }EM_DETECT_DIRECTION_TYPE; ///@brief XRAY检测方案 typedef enum tagEM_XRAY_SCHEME_TYPE { EM_XRAY_SCHEME_UNKNOWN, // 未知 EM_XRAY_SCHEME_TONGFANG_100, // 同方100 EM_XRAY_SCHEME_TONGFANG_200, // 同方200 EM_XRAY_SCHEME_TONGFANG_300, // 同方300 EM_XRAY_SCHEME_TONGFANG_400, // 同方400 EM_XRAY_SCHEME_ANTIANXIA_100, // 安天下100 EM_XRAY_SCHEME_ANTIANXIA_200, // 安天下200 EM_XRAY_SCHEME_DAHUA_100, // 大华100 EM_XRAY_SCHEME_DAHUA_200, // 大华200 EM_XRAY_SCHEME_DAHUA_300, // 大华300 EM_XRAY_SCHEME_DAHUA_400, // 大华400 EM_XRAY_SCHEME_DAHUA_301, // 大华301 EM_XRAY_SCHEME_SHANGCHEN_HIGH, // 上琛高检出 EM_XRAY_SCHEME_SHANGCHEN_LOW, // 上琛低误检 } EM_XRAY_SCHEME_TYPE; ///@brief XRAY物体上报规则 typedef struct tagNET_XRAY_OBJECT_UPLOAD_RULE { BOOL bUploadEnable; // 上报使能 UINT nSimilarity; // 物体上报相似度, [1,100] BYTE byReserved[128]; // 保留字节 } NET_XRAY_OBJECT_UPLOAD_RULE; ///@brief XRAY物体检测规则 typedef struct tagNET_XRAY_OBJECT_DETECT_RULE { EM_INSIDE_OBJECT_TYPE emObjectType; // 物体名称 BOOL bDetectEnable; // 检测使能 EM_DANGER_GRADE_TYPE emDangerGrade; // 安全等级 NET_XRAY_OBJECT_UPLOAD_RULE stuUploadRuleInfo; // 物体上报规则信息 BYTE byReserved[512]; // 保留字节 } NET_XRAY_OBJECT_DETECT_RULE; ///@brief EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测)对应的规则配置 typedef struct tagNET_XRAY_DETECT_BYPBJECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 UINT nSensitivity; // 灵敏度,[1,10] EM_DETECT_DIRECTION_TYPE emDirectionType; // 检测方向 EM_XRAY_SCHEME_TYPE emSchemeType; // 检查方案 UINT nObjectRuleNum; // XRAY物体检测规则数量 NET_XRAY_OBJECT_DETECT_RULE stuObjectRuleInfo[128]; // XRAY物体检测规则信息 EM_XRAY_VIEW_TYPE emViewType; // 视角类型 } NET_XRAY_DETECT_BYPBJECT_RULE_INFO; ///@brief 非机动车属性类型 typedef enum tagEM_NONMOTOR_FEATURE { EM_NONMOTOR_FEATURE_UNKNOWN, // 未知 EM_NONMOTOR_FEATURE_HELMET, // 头盔 EM_NONMOTOR_FEATURE_NUMOFCYCLING, // 车上人数 EM_NONMOTOR_FEATURE_NONMOTORCOLOR, // 车身颜色 EM_NONMOTOR_FEATURE_SEX, // 性别 EM_NONMOTOR_FEATURE_AGE, // 年龄 EM_NONMOTOR_FEATURE_HAT, // 帽子 EM_NONMOTOR_FEATURE_BAG, // 背包 EM_NONMOTOR_FEATURE_CARRIERBAG, // 手提包 EM_NONMOTOR_FEATURE_UMBRELLA, // 雨伞 EM_NONMOTOR_FEATURE_UPPERBODYCOLOR, // 上衣颜色 EM_NONMOTOR_FEATURE_LOWERBODYCOLOR, // 下衣颜色 EM_NONMOTOR_FEATURE_UPCLOTHES, // 上衣类型 EM_NONMOTOR_FEATURE_DOWNCLOTHES, // 下衣类型 EM_NONMOTOR_FEATURE_CATEGORY, // 车类型 }EM_NONMOTOR_FEATURE; ///@brief 事件类型EVENT_IVS_NONMOTORDETECT(非机动车事件)对应的规则配置 typedef struct tagNET_NONMOTORDETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nFeatureNum; // 支持的非机动车属性个数 EM_NONMOTOR_FEATURE emFeatureList[32]; // 支持的非机动车属性列表 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nExcludeRegionNum; // 排除区域数 DH_POLY_POINTS stuExcludeRegion[10]; // 排除区域 NET_COMPLIANT_INFO stuCompliant; // 合规报警规则 BOOL bSizeFileter; // 是否使用尺寸过滤器 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器,提高判断精度 BOOL bFeatureExtractEnable; // 是否提取非机动车特征向量 BOOL bFaceFeatureExtractEnable; // 是否提取目标特征向量 BOOL bFaceFeatureEnable; // 是否开启目标属性识别 BOOL bFaceSnapEnable; // 是否支持目标抓图 }NET_NONMOTORDETECT_RULE_INFO; ///@brief 事件类型EVENT_IVS_VEHICLEDETECT(机动车事件)对应的规则配置 typedef struct tagNET_VEHICLEDETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nSnapThreshold; // 车辆抓拍阈值,是一个百分数,表示当车辆检测框高度占画面百分比大于这个阈值时,触发规则进行抓拍。 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nExcludeRegionNum; // 排除区域数 DH_POLY_POINTS stuExcludeRegion[10]; // 排除区域 NET_COMPLIANT_INFO stuCompliant; // 合规报警规则 BOOL bFeatureExtractEnable; // 是否提取机动车特征向量 BOOL bSizeFileter; // 是否使用尺寸过滤器 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器,提高判断精度 }NET_VEHICLEDETECT_RULE_INFO; ///@brief 安全帽检测规则扩展信息 typedef struct tagNET_HELMET_RULE_EXT_INFO { BOOL bDetectMultiColor; // 是否指定检测的颜色, 支持多种颜色 UINT nDetectColorNum; // 检测的颜色个数 EM_CLOTHES_COLOR emMultiColor[32]; // 工作服颜色, bDetectMultiColor 为TRUE时有效 BYTE byReserved[2048]; // 保留字节 } NET_HELMET_RULE_EXT_INFO; ///@brief 安全帽检测规则 typedef struct tagNET_HELMET_DETECT_RULE { BOOL bEnable; // 是否检测安全帽 BOOL bWear; // 是否检测穿戴安全帽 BOOL bDetectColor; // 是否指定检测的颜色 EM_CLOTHES_COLOR emHelmetColor; // 安全帽颜色, bDetectColor 为 TRUE 时有效 NET_HELMET_RULE_EXT_INFO *pstHelmetRuleExtInfo; // 安全帽检测规则信息扩展, 由用户申请和释放内存 BYTE byReserved[120]; // 保留字节 } NET_HELMET_DETECT_RULE; ///@brief 工作服上衣类型 typedef enum tagEM_WORK_CLOTHES_TYPE { EM_WORK_CLOTHES_UNKNOWN, // 未知 EM_WORK_CLOTHES_LONG_SLEEVE, // 长袖 EM_WORK_CLOTHES_SHORT_SLEEVE, // 短袖 } EM_WORK_CLOTHES_TYPE; ///@brief 工作服纹理类型 typedef enum tagEM_CLOTHES_TEXTURE_TYPE { EM_CLOTHES_TEXTURE_UNKNOWN, // 未知 EM_CLOTHES_TEXTURE_CHECKED, // 格子 EM_CLOTHES_TEXTURE_FLORAL, // 碎花 EM_CLOTHES_TEXTURE_PURE, // 纯色 EM_CLOTHES_TEXTURE_STRIPE, // 条纹 EM_CLOTHES_TEXTURE_DESIGN, // 图案 EM_CLOTHES_TEXTURE_JOINT, // 拼接 } EM_CLOTHES_TEXTURE_TYPE; ///@brief 工作服检测规则扩展信息 typedef struct tagNET_WORKCLOTH_RULE_EXT_INFO { UINT nColorLegal; // 指定的检测颜色是合规还是不合规,0表示未定义,1表示合规,2表示不合规 BOOL bDetectMultiColor; // 是否指定检测的颜色, 支持多种颜色 UINT nDetectColorNum; // 检测的颜色个数 EM_CLOTHES_COLOR emMultiColor[32]; // 工作服颜色, bDetectMultiColor 为TRUE时有效 UINT nTypeLegal; // 指定的检测类型是合规还是不合规,0表示未定义,1表示合规,2表示不合规 UINT nClothesTypeNum; // 检测的工作服类型个数 EM_WORK_CLOTHES_TYPE emClothesType[32]; // 工作服类型 UINT nTextureLegal; // 指定的纹理规则是合规还是不合规,0表示未定义,1表示合规,2表示不合规 UINT nTextureNum; // 工作服纹理个数 EM_CLOTHES_TEXTURE_TYPE emTextureType[32]; // 工作服纹理 BYTE byReserved[2044]; // 保留字节 } NET_WORKCLOTH_RULE_EXT_INFO; ///@brief 工作服检测规则 typedef struct tagNET_WORKCLOTH_DETECT_RULE { BOOL bEnable; // 是否检测工作服 BOOL bWear; // 是否检测穿着工作服 BOOL bDetectColor; // 是否指定检测的颜色 EM_CLOTHES_COLOR emClothesColor; // 工作服颜色, bDetectColor 为 TRUE 时有效 NET_WORKCLOTH_RULE_EXT_INFO *pstWorkClothRuleExtInfo; // 工作服检测规则信息扩展, 由用户申请和释放内存 BYTE byReserved[120]; // 保留字节 } NET_WORKCLOTH_DETECT_RULE; ///@brief 工作马甲检测规则 typedef struct tagNET_WORKVEST_DETECT_RULE { BOOL bEnable; // 是否检测马甲 BOOL bWear; // 是否检测穿着马甲 BOOL bDetectColor; // 是否指定检测的颜色 EM_CLOTHES_COLOR emVestColor; // 马甲颜色, bDetectColor 为 TRUE 时有效 BYTE byReserved[128]; // 保留字节 } NET_WORKVEST_DETECT_RULE; ///@brief 工作裤类型 typedef enum tagEM_WORKPANTS_TYPE { EM_WORKPANTS_TYPE_UNKNWON, // 未知 EM_WORKPANTS_TYPE_LONG, // 长裤 EM_WORKPANTS_TYPE_SHORT, // 短裤 } EM_WORKPANTS_TYPE; ///@brief 工作裤检测规则 typedef struct tagNET_WORKPANTS_DETECT_RULE { BOOL bEnable; // 是否检测工作裤 BOOL bWear; // 是否检测穿着工作裤 UINT nPantsTypeNum; // 工作裤类型个数 EM_WORKPANTS_TYPE emPantsType[32]; // 工作裤类型 BYTE byReserved[252]; // 保留字节 } NET_WORKPANTS_DETECT_RULE; ///@brief 防护面罩检测规则 typedef struct tagNET_PROHELMET_DETECT_RULE { BOOL bEnable; // 是否检测防护面罩 BOOL bWear; // 是否检测穿着防护面罩 char byReserved[128]; // 保留字节 } NET_PROHELMET_DETECT_RULE; ///@brief 工装特征描述信息 typedef struct tagNET_WORKCLOTHES_DESCRIPT { NET_HELMET_DETECT_RULE stuHelemetRule; // 安全帽检测规则 NET_WORKCLOTH_DETECT_RULE stuWorkClothRule; // 工作服检测规则 NET_WORKVEST_DETECT_RULE stuWorkVestRule; // 工作马甲检测规则 NET_WORKPANTS_DETECT_RULE stuWorkPantsRule; // 工作裤检测规则 UINT nSensitivity; // 灵敏度,取值1-10,数值越大代表灵敏度越高 UINT nAlarmTime; // 首次报警时间, 事件持续多长时间后报警,单位秒 UINT nAlarmRepeatTime; // 重复报警时间间隔,单位秒 NET_PROHELMET_DETECT_RULE stuProhelmet; // 防护面罩检测规则 BYTE byReserved[484]; // 保留字节 } NET_WORKCLOTHES_DESCRIPT; ///@brief 工装检测规则类型 typedef enum tagEM_WORKCLOTHDETECT_RULE_TYPE { EM_WORKCLOTHDETECT_RULE_UNKNWON, // 未知 EM_WORKCLOTHDETECT_RULE_HELMET, // 安全帽 EM_WORKCLOTHDETECT_RULE_WORKCLOTH, // 工作服 EM_WORKCLOTHDETECT_RULE_WORKPANTS, // 工作裤 EM_WORKCLOTHDETECT_RULE_PROTECTIVE, // 防护服 EM_WORKCLOTHDETECT_RULE_TYPE_PROHELMET, // 防护面罩 EM_WORKCLOTHDETECT_RULE_FIREPROOFCLOTHES, // 防火衣 } EM_WORKCLOTHDETECT_RULE_TYPE; ///@brief 触发模式 typedef enum tagEM_WORKCLOTHDETECT_TRIGGER_MODE { EM_WORKCLOTHDETECT_TRIGGER_MODE_UNKNWON, // 未知 EM_WORKCLOTHDETECT_TRIGGER_MODE_TYPEDETECT, // 属性检测 EM_WORKCLOTHDETECT_TRIGGER_MODE_COMPAREDETECT, // 比对检测 } EM_WORKCLOTHDETECT_TRIGGER_MODE; ///@brief 事件类型EVENT_IVS_WORKCLOTHDETECT(工装检测事件)对应的规则配置 typedef struct tagNET_WORKCLOTHDETECT_RULE_INFO { DWORD dwSize; // 结构体大小 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 UINT nDescriptNum; // 工装描述信息个数 NET_WORKCLOTHES_DESCRIPT stuWorkClothesDescript[64]; // 工装描述信息, 数组各项是逻辑或关系 EM_WORKCLOTHDETECT_RULE_TYPE emRuleType[32]; // 规则检测类型 UINT nRuleTypeNum; // 规则检测类型个数 EM_WORKCLOTHDETECT_TRIGGER_MODE emTriggerMode; // 触发模式 } NET_WORKCLOTHDETECT_RULE_INFO; ///@brief 事件类型EVENT_IVS_SILICON_FIREPUTTER_DETECTION(刺火推杆检测事件)对应的规则配置 typedef struct tagNET_SILICON_FIREPUTTER_DETECTION_RULE_INFO { DWORD dwSize; // 结构体大小 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 UINT nMinDuration; // 最短持续时间,单位:秒 0~65535 UINT nRepeatAlarmTime; // 重复报警时间,单位是秒 范围0-3600 为0则不重复报警 int nSensibility; // 灵敏度等级 1~100, 值越高越灵敏,0表示使用默认 } NET_SILICON_FIREPUTTER_DETECTION_RULE_INFO; ///@brief 触发报警的条件表达式 typedef enum tagEM_CONDITION_EXPR_TYPE { EM_CONDITION_EXPR_UNKNOWN = 0, // 未知 EM_CONDITION_EXPR_GREATER, // 大于 EM_CONDITION_EXPR_LESS, // 小于 EM_CONDITION_EXPR_EQUAL, // 等于 } EM_CONDITION_EXPR_TYPE; ///@brief 作业统计描述信息 typedef struct tagNET_WORKSTAT_DESCRIPT { NET_WORKCLOTHES_DESCRIPT stuWorkClothesDescript; // 工装特征描述信息 UINT nTriggerNum; // 触发报警的人员数量 EM_CONDITION_EXPR_TYPE emConditionExpr; // 条件表达式,与nTriggerNum组合使用,当满足(emConditionExpr nTriggerNum) 条件时触发报警 UINT nStatInterval; // 统计时长,单位秒,范围1-86400 UINT nSensitivity; // 灵敏度,值越小灵敏度越低, 取值1-10 UINT nAlarmTime; // 首次报警时间, 事件持续多长时间后报警,单位秒 UINT nAlarmRepeatTime; // 重复报警时间间隔,单位秒 BYTE byReserved[1012]; // 保留字节 } NET_WORKSTAT_DESCRIPT; ///@brief 事件类型EVENT_IVS_WORKSTATDETECTION(作业统计)对应的规则配置 typedef struct tagNET_WORKSTATDETECTION_RULE_INFO { DWORD dwSize; // 结构体大小 UINT nStatDescriptNum; // 作业统计描述信息个数 NET_WORKSTAT_DESCRIPT stuWorkStatDescript[64]; // 作业统计描述信息 UINT nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 UINT nDetectTyeNum; // 检测类型个数 EM_WORKSTATDETECTION_TYPE emDetectType[32]; // 检测类型 } NET_WORKSTATDETECTION_RULE_INFO; ///@brief 物体过滤类型 typedef enum tagEM_OBJECT_FILTER_TYPE { EM_OBJECT_FILTER_TYPE_UNKNOWN, // 未知 EM_OBJECT_FILTER_TYPE_HUMAN, // 人 EM_OBJECT_FILTER_TYPE_VEHICLE, // 车 } EM_OBJECT_FILTER_TYPE; ///@brief 物体过滤器 typedef struct tagNET_OBJECT_FILTER_INFO { UINT nObjectFilterTypeNum; // 物体过滤类型个数 EM_OBJECT_FILTER_TYPE emObjectFilterType[16]; // 物体过滤类型 BYTE byReserved[1024]; // 保留字节 }NET_OBJECT_FILTER_INFO; ///@brief 事件类型EVENT_IVS_CROSSLINEDETECTION(警戒线事件)对应的规则配置 typedef struct tagNET_CROSSLINE_RULE_INFO { DWORD dwSize; // 结构体大小 int nDirection; // 检测方向:0:由左至右;1:由右至左;2:两者都可以 int nDetectLinePoint; // 警戒线顶点数 POINTCOORDINATE stuDetectLine[20]; // 警戒线 int nPtzPresetId; // 云台预置点编号 0~65535 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 int nTriggerPosition; // 触发报警位置数 BYTE bTriggerPosition[8]; // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 int nTrackDuration; // 跟踪持续时间,单位秒, 范围[0-300],0秒:一直跟踪, 1~300秒:跟踪持续时间 UINT nVehicleSubTypeNum; // 检测的车辆子类型个数 EM_CATEGORY_TYPE emVehicleSubType[128]; // 检测的车辆子类型列表 BOOL bObjectFilter; // 物体过滤器是否有效, 即stuObjectFilter 是否有效 NET_OBJECT_FILTER_INFO stuObjectFilter; // 物体过滤器信息 int nSensitivity; // 灵敏度,越高越容易检测, 0-10 char byReserved[4]; // 仅用于字节对齐 } NET_CROSSLINE_RULE_INFO; ///@brief 事件类型EVENT_IVS_CROSSREGIONDETECTION(警戒区事件)对应的规则配置 typedef struct tagNET_CROSSREGION_RULE_INFO { DWORD dwSize; // 结构体大小 int nDirection; // 检测方向:0:Enter;1:Leave;2:Both int nDetectRegionPoint; // 警戒区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 警戒区 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 int nActionType; // 检测动作个数 BYTE bActionType[4]; // 检测动作列表,0-出现 1-消失 2-在区域内 3-穿越区域 int nMinTargets; // 最小目标个数(当bActionType中包含"2-在区域内"时有效) int nMaxTargets; // 最大目标个数(当bActionType中包含"2-在区域内"时有效) int nMinDuration; // 最短持续时间, 单位秒(当bActionType中包含"2-在区域内"时有效) int nReportInterval; // 报告时间间隔, 单位秒(当bActionType中包含"2-在区域内"时有效) int nTrackDuration; // 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 UINT nVehicleSubTypeNum; // 检测的车辆子类型个数 EM_CATEGORY_TYPE emVehicleSubType[128]; // 检测的车辆子类型列表 BOOL bObjectFilter; // 物体过滤器是否有效, 即stuObjectFilter 是否有效 NET_OBJECT_FILTER_INFO stuObjectFilter; // 物体过滤器信息 int nSensitivity; // 灵敏度,越高越容易检测, 0-10 char byReserved[4]; // 仅用于字节对齐 } NET_CROSSREGION_RULE_INFO; ///@brief 进行特征提取的类型 typedef enum tagEM_FEATURE_ABSTRACT_TYPE { EM_FEATURE_ABSTRACT_UNKNOWN = -1, // 未知 EM_FEATURE_ABSTRACT_FACE, // 目标 EM_FEATURE_ABSTRACT_HUMAN_TRAIT, // 人体 EM_FEATURE_ABSTRACT_VEHICLE, // 机动车 EM_FEATURE_ABSTRACT_NON_MOTOR_VEHICLE, // 非机动车 }EM_FEATURE_ABSTRACT_TYPE; ///@brief 事件类型EVENT_IVS_FEATURE_ABSTRACT(提取特征)对应的规则配置 typedef struct tagNET_FEATURE_ABSTRACT_RULE_INFO { DWORD dwSize; // 结构体大小 int nFeature; // 特征的数量 char szFeatureVersions[10][32]; // 对图片进行特征向量提取时使用,需要对图片进行同一种特征向量多个版本进行提取,最大是10个版本 EM_FEATURE_ABSTRACT_TYPE emAbstractType; // 进行特征提取的类型 }NET_FEATURE_ABSTRACT_RULE_INFO; ///@brief 电力手套特征 typedef struct tagNET_ELECTRIC_GLOVE_FEATURE { BOOL bInsulate; // 是否绝缘, TRUE:绝缘手套, FALSE:普通手套 BYTE byReserved[1028]; // 保留字节 } NET_ELECTRIC_GLOVE_FEATURE; ///@brief 电力检测手套检测规则条件 typedef struct tagNET_ELECTRIC_GLOVE_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bGloveFeature 和stuGloveFeature配合使用 // (1) 若bGloveFeature=FALSE, 则表示检测是否有手套 // (2) 若bGloveFeature=TRUE, bExist=TRUE, 则表示检测符合stuGloveFeature的手套 // (3) 若bGloveFeature=TRUE, bExist=FALSE, 则表示检测不符合stuGloveFeature的手套 BOOL bGloveFeature; // 手套特征是否有效 NET_ELECTRIC_GLOVE_FEATURE stuGloveFeature; // 手套特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_GLOVE_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_GLOVE_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_GLOVE_DETECT_CONDITION stuGloveDetectCondition[32]; // 手套检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_GLOVE_DETECT_RULE_INFO; ///@brief 电力梯子特征 typedef struct tagNET_ELECTRIC_LADDER_FEATURE { BOOL bInsulate; // 是否绝缘 , TRUE:绝缘梯子, FALSE:普通梯子 BYTE byReserved[1028]; // 保留字节 } NET_ELECTRIC_LADDER_FEATURE; ///@brief 电力检测梯子检测规则条件 typedef struct tagNET_ELECTRIC_LADDER_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bLadderFeature 和stuLadderFeature配合使用 // (1) 若bLadderFeature=FALSE, 则表示检测是否有梯子 // (2) 若bLadderFeature=TRUE, bExist=TRUE, 则表示检测符合stuLadderFeature的梯子 // (3) 若bLadderFeature=TRUE, bExist=FALSE, 则表示检测不符合stuLadderFeature的梯子 BOOL bLadderFeature; // 梯子特征是否有效 NET_ELECTRIC_LADDER_FEATURE stuLadderFeature; // 梯子特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_LADDER_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_LADDER_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_LADDER_DETECT_CONDITION stuLadderDetectCondition[32]; // 梯子检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_LADDER_DETECT_RULE_INFO; ///@brief 颜色操作关系 typedef enum tagEM_COLOR_OPERATE_TYPE { EM_COLOR_OPERATE_TYPE_UNKNOWN = -1, // 未知 EM_COLOR_OPERATE_TYPE_UNEQUAL, // != EM_COLOR_OPERATE_TYPE_EQUAL, // == } EM_COLOR_OPERATE_TYPE; ///@brief 颜色特征 typedef struct tagNET_COLOR_FEATRUE { EM_COLOR_OPERATE_TYPE emColorOperate; // 颜色操作关系 EM_UNIFIED_COLOR_TYPE emColor; // 颜色 BYTE byReserved[128]; // 保留字节 } NET_COLOR_FEATRUE; ///@brief 电力布幔特征 typedef struct tagNET_ELECTRIC_CURTAIN_FEATURE { NET_COLOR_FEATRUE stuColorFeature; // 颜色特征 BYTE byReserved[1024]; // 保留字节 } NET_ELECTRIC_CURTAIN_FEATURE; ///@brief 电力检测布幔检测规则条件 typedef struct tagNET_ELECTRIC_CURTAIN_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bCurtainFeature 和stuCurtainFeature配合使用 // (1) 若bCurtainFeature=FALSE, 则表示检测是否有布幔 // (2) 若bCurtainFeature=TRUE, bExist=TRUE, 则表示检测符合stuCurtainFeature的布幔 // (3) 若bCurtainFeature=TRUE, bExist=FALSE, 则表示检测不符合stuCurtainFeature的布幔 BOOL bCurtainFeature; // 布幔特征是否有效 NET_ELECTRIC_CURTAIN_FEATURE stuCurtainFeature; // 布幔特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_CURTAIN_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_CURTAIN_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_CURTAIN_DETECT_CONDITION stuCurtainDetectCondition[32]; // 布幔检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_CURTAIN_DETECT_RULE_INFO; ///@brief 电力围栏特征 typedef struct tagNET_ELECTRIC_FENCE_FEATURE { EM_ELECTRIC_FENCE_TYPE emFenceType; // 围栏类型 BYTE byReserved[1028]; // 保留字节 } NET_ELECTRIC_FENCE_FEATURE; ///@brief 电力检测围栏检测规则条件 typedef struct tagNET_ELECTRIC_FENCE_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bFenceFeature 和stuFenceFeature配合使用 // (1) 若bFenceFeature=FALSE, 则表示检测是否有围栏 // (2) 若bFenceFeature=TRUE, bExist=TRUE, 则表示检测符合stuFenceFeature的围栏 // (3) 若bFenceFeature=TRUE, bExist=FALSE, 则表示检测不符合stuFenceFeature的围栏 BOOL bFenceFeature; // 围栏特征是否有效 NET_ELECTRIC_FENCE_FEATURE stuFenceFeature; // 围栏特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_FENCE_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_FENCE_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_FENCE_DETECT_CONDITION stuFenceDetectCondition[32]; // 围栏检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_FENCE_DETECT_RULE_INFO; ///@brief 电力标识牌特征 typedef struct tagNET_ELECTRIC_SIGNBOARD_FEATURE { EM_ELECTRIC_SIGNBOARD_TYPE emSignboardType; // 标识牌类型 BYTE byReserved[1028]; // 保留字节 } NET_ELECTRIC_SIGNBOARD_FEATURE; ///@brief 电力检测标识牌检测规则条件 typedef struct tagNET_ELECTRIC_SIGNBOARD_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bSignboardFeature 和stuSignboardFeature配合使用 // (1) 若bSignboardFeature=FALSE, 则表示检测是否有标识牌 // (2) 若bSignboardFeature=TRUE, bExist=TRUE, 则表示检测符合stuSignboardFeature的标识牌 // (3) 若bSignboardFeature=TRUE, bExist=FALSE, 则表示检测不符合stuSignboardFeature的标识牌 BOOL bSignboardFeature; // 标识牌特征是否有效 NET_ELECTRIC_SIGNBOARD_FEATURE stuSignboardFeature; // 标识牌特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_SIGNBOARD_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_SIGNBOARD_DETECT_CONDITION stuSignboardCondition[32]; // 标识牌检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO; ///@brief 电力安全带特征 typedef struct tagNET_ELECTRIC_BELT_FEATURE { EM_BELT_WARE_TYPE emBeltWareType; // 安全带穿戴方式 BYTE byReserved[1028]; // 保留字节 } NET_ELECTRIC_BELT_FEATURE; ///@brief 电力安全带检测规则条件 typedef struct tagNET_ELECTRIC_BELT_DETECT_CONDITION { BOOL bExist; // 是否检测, 与bBeltFeature 和stuBeltFeature配合使用 // (1) 若bBeltFeature=FALSE, 则表示检测是否有安全带 // (2) 若bBeltFeature=TRUE, bExist=TRUE, 则表示检测符合stuBeltFeature的安全带 // (3) 若bBeltFeature=TRUE, bExist=FALSE, 则表示检测不符合stuBeltFeature的安全带 BOOL bBeltFeature; // 安全带特征是否有效 NET_ELECTRIC_BELT_FEATURE stuBeltFeature; // 安全带特征 BYTE byReserved[512]; // 保留字节 } NET_ELECTRIC_BELT_DETECT_CONDITION; ///@brief 事件类型EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应的规则配置 typedef struct tagNET_ELECTRIC_BELT_DETECT_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 UINT nDetectConditionNum; // 检测条件个数 NET_ELECTRIC_BELT_DETECT_CONDITION stuBeltCondition[32]; // 安全带检测条件, 各个条件之间是逻辑或的关系 } NET_ELECTRIC_BELT_DETECT_RULE_INFO; ///@brief 事件类型EVENT_IVS_BANNER_DETECTION(拉横幅检测事件)对应的规则配置 typedef struct tagNET_BANNER_DETECTION_RULE_INFO { DWORD dwSize; // 结构体大小 int nDetectRegionNum; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nMinDuration; // 最短持续时间, 单位:秒,范围1-600, 默认30 int nReportInterval; // 重复报警间隔,单位:秒,范围0-600,默认30,为0表示不重复 int nSensitivity; // 检测灵敏度,范围1-10 int nBannerPercent; // 近景抓拍时横幅在画面的百分比,范围1~100,默认80 BYTE bReserved[520]; // 保留字节 } NET_BANNER_DETECTION_RULE_INFO; ///@brief 检测符合要求的厨师服颜色不报警 typedef enum tagEM_CFG_CHEF_CLOTHES_COLORS { EM_CFG_CHEF_CLOTHES_COLORS_UNKNOWN, // 未知 EM_CFG_CHEF_CLOTHES_COLORS_BLACK, // 黑色 EM_CFG_CHEF_CLOTHES_COLORS_WHITE, // 白色 EM_CFG_CHEF_CLOTHES_COLORS_RED, // 红色 } EM_CFG_CHEF_CLOTHES_COLORS; ///@brief 事件类型 EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧类型衣着检测)对应的规则配置 typedef struct tagNET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO { DWORD dwSize; // 结构体大小 BOOL bMaskEnable; // 是否开启口罩检测 (TRUE:开启 FALSE:关闭) BOOL bChefHatEnable; // 是否开启厨师帽检测(TRUE:开启 FALSE:关闭) BOOL bChefClothesEnable; // 是否开启厨师服检测(TRUE:开启 FALSE:关闭) int nChefClothesColorNum; // 配置检查允许的厨师服颜色个数 EM_CFG_CHEF_CLOTHES_COLORS emChefClothesColors[8]; // 配置检查允许的厨师服颜色 int nReportInterval; // 重复报警间隔,单位:秒,范围0-600,默认30,为0表示不重复 BYTE byReserved[4096]; // 保留字节 }NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO; ///@brief 标定线 typedef struct tagNET_CALIBRATE_LINE_INFO { NET_POINT stuStartPoint; // 起点 NET_POINT stuEndPoint; // 终点 } NET_CALIBRATE_LINE_INFO; ///@brief 事件类型EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件)对应的规则配置 typedef struct tagNET_WATER_STAGE_MONITOR_RULE_INFO { int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 DWORD dwSceneMask; // 使能检测的场景掩码 // bit0:水位检测,有水位尺, bit1:水位检测,无水位尺 // bit2:内涝检测,有水位尺, bit3:内涝检测,无水位尺 NET_CALIBRATE_LINE_INFO stuCalibrateLine; // 标定线 BYTE byReserved[4096]; // 预留字节 } NET_WATER_STAGE_MONITOR_RULE_INFO; ///@brief 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测)对应的规则配置 typedef struct tagNET_FLOATINGOBJECT_DETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 float fAlarmThreshold; // 报警阈值。当检测区域内的漂浮物占比超过阈值时则产生报警;单位:%,取值范围(0, 100] UINT nAlarmInterval; // 报警时间间隔。(单位:秒)。取值范围[60, 86400] BOOL bDataUpload; // 是否上报实时数据。 UINT nUpdateInterval; // 实时数据上报间隔。(单位:秒)。取值范围[60, 86400] BYTE byReserved[4096]; // 保留字节 } NET_FLOATINGOBJECT_DETECTION_RULE_INFO; ///@brief 事件类型 EVENT_IVS_RIOTERDETECTION (人群聚集) 对应的规则配置 typedef struct tagNET_RIOTERDETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nModeNum; // 检测模式个数 BYTE nModeList[64]; // 支持的检测模式, 实际只能选一种 0:表示"MinArea"按最小聚集区域检测 1: 表示"Humans" 按聚集人员数量阀值 POINTCOORDINATE stuMinDetectRect[2]; // 最小聚集区域矩形框,分别对应矩形框的左上和右下点,矩形框的实际面积表示触发报警的最小人群聚集面积 int nRioterThreshold; // 聚集人数阀值, 聚集人数超过此值,开始报警. 0表示不报警 ModeList为1时使用 int nMinDuration; // 最短持续时间,单位:秒 1~600,默认值30 int nReportInterval; // 报告时间间隔,单位秒 0~600;等于0表示不重复报警, 默认值30 int nSensitivity; // 灵敏度,取值1-10,值越小灵敏度越低,对应人群的密集程度越高 int nTrackDuration; // 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 BYTE byReserved[4096]; // 保留字节 }NET_RIOTERDETECTION_RULE_INFO; ///@brief 事件类型 EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应的规则配置 ///@brief 事件类型 EVENT_IVS_PARKINGDETECTION 非法停车事件 对应的规则配置 typedef struct tagNET_LEFTDETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nTriggerPosition; // 触发报警位置数 BYTE bTriggerPosition[8]; // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 int nMinDuration; // 最短持续时间 单位:秒,0~65535 int nTrackDuration; // 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 UINT nSensitivity; // 灵敏度,取值1-10,值越小灵敏度越低 BYTE byReserved[4092]; // 保留字节 }NET_LEFTDETECTION_RULE_INFO, NET_PARKINGDETECTION_RULE_INFO; ///@brief 检测的目标类型 typedef enum tagEM_RULE_DETECT_OBJECT_TYPE { EM_RULE_DETECT_OBJECT_TYPE_UNKNOWN, // 未知 EM_RULE_DETECT_OBJECT_TYPE_HANGING_PACKAGE, // 吊物(硅包、钢包、铁包) }EM_RULE_DETECT_OBJECT_TYPE; ///@brief 事件类型 EVENT_IVS_WANDERDETECTION( 徘徊事件)对应的规则配置 ///@brief 事件类型 EVENT_IVS_STAYDETECTION( 停留事件)对应的规则配置 typedef struct tagNET_WANDERDETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nTriggerPosition; // 触发报警位置数 BYTE bTriggerPosition[8]; // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 int nTriggerTargetsNumber; // 触发报警的徘徊或滞留人数 int nMinDuration; // 最短持续时间 单位:秒,0~65535 int nReportInterval; // 报告时间间隔,单位秒 0~600;等于0表示不重复报警, 默认值30 int nTrackDuration; // 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 char szRuleType[32]; // 规则类型:"WorkManage":作业管控 无该字段,则默认常规场景 EM_RULE_DETECT_OBJECT_TYPE emDetectObject; // 检测的目标类型 该字段与RuleType同步使用 UINT nSensitivity; // 灵敏度,取值1-10,值越小灵敏度越低 BYTE byReserved[4056]; // 保留字节 } NET_WANDERDETECTION_RULE_INFO; ///@brief 事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置 typedef struct tagNET_VIDEOABNORMALDETECTION_RULE_INFO { int nMinDuration; // 最短持续时间 单位:秒,0~65535 int nSensitivity; // 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效) int nDetectType; // 检测类型数 int nReserved; // 保留字段 int nThreshold[32]; // 异常检测阈值,范围1~100 BYTE bDetectType[32]; // 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化 // 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测 // 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变 BYTE byReserved[4096]; // 保留字节 } NET_VIDEOABNORMALDETECTION_RULE_INFO; ///@brief EVENT_IVSS_FACEATTRIBUTE (目标属性检测) 对应的规则配置结构体 typedef struct tagNET_FACEATTRIBUTE_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nMinDuration; // 最短持续时间 单位:秒,0~65535 int nTriggerTargets; // 触发报警的目标个数 int nSensitivity; // 灵敏度, 取值1-10,值越小灵敏度越低 int nReportInterval; // 报告时间间隔,单位秒 0~600;等于0表示不重复报警, 默认值30 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 int nFaceFeatureNum; // 需要检测的目标属性个数 NET_EM_FACEFEATURE_TYPE emFaceFeatureType[32]; // 需检测的目标属性 BYTE byReserved[4096]; // 保留字节 }NET_FACEATTRIBUTE_RULE_INFO; ///@brief 移动检测类型 typedef enum tagEM_MOVEDETECTION_TYPE { EM_MOVEDETECTION_UNKNOWN, // 未知类型 EM_MOVEDETECTION_FASTMOVE, // 快速运动 EM_MOVEDETECTION_ABRUPT_SPEEDUP, // 突然加速 EM_MOVEDETECTION_ABRUPT_SLOWDOWN, // 突然减速 }EM_MOVEDETECTION_TYPE; ///@brief EVENT_IVS_MOVEDETECTION (移动检测) 对应的规则配置结构体 typedef struct tagNET_MOVEDETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nTriggerPosition; // 触发报警位置数 BYTE bTriggerPosition[8]; // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 int nTriggerSpeed; // 触发速度,大于该速度报警,单位km/h int nSensitivity; // 灵敏度, 取值1-10,值越小灵敏度越低 int nMinDuration; // 最短持续时间 单位:秒,0~65535 int nTrackDuration; // 跟踪持续时间单位秒 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 int nDetectNum; // 检测类型个数 EM_MOVEDETECTION_TYPE emDetectType[8]; // 检测类型 BYTE byReserved[4096]; // 保留字节 }NET_MOVEDETECTION_RULE_INFO; ///@brief EVENT_IVSS_FACECOMPARE (IVSS目标识别事件) 对应的规则配置结构体 typedef struct tagNET_FACECOMPARE_INFO { UINT nRemoveRepeatInterval; // 目标智能去重时间间隔,单位:秒 UINT nStayInterval; // 滞留时间间隔,单位:秒 UINT nWanderInterval; // 排行时间间隔,单位:秒 int nLinkGroupNum; // 联动布控个数 NET_CFG_LINKGROUP_INFO stuLinkGroup[20]; // 联动的布控组 NET_CFG_STRANGERMODE_INFO stuStrangerMode; // 陌生人布防模式 BYTE byReserved[4096]; // 保留字节 }NET_FACECOMPARE_INFO; ///@brief 传送带检测类型 typedef enum tagEM_CONVEYER_BELT_DETECT_TYPE { EM_CONVEYER_BELT_DETECT_UNKNOWN, // 未知 EM_CONVEYER_BELT_DETECT_FULL_LOAD, // 满载 EM_CONVEYER_BELT_DETECT_NON_LOAD, // 空载 EM_CONVEYER_BELT_DETECT_RUN_OFF, // 跑偏 EM_CONVEYER_BELT_DETECT_BLOCK, // 阻塞 EM_CONVEYER_BELT_DETECT_BULK, // 大块异物 EM_CONVEYER_BELT_DETECT_COALRATIO, // 煤量占比 EM_CONVEYER_BELT_DETECT_ARTICLE, // 异物类型检测 EM_CONVEYER_BELT_DETECT_STHTONTH, // 物品从有到无 EM_CONVEYER_BELT_DETECT_NTHTOSTH, // 物品从无到有 } EM_CONVEYER_BELT_DETECT_TYPE; ///@brief 报警模式 typedef enum tagEM_NET_ALARM_OUT_MODE { EM_NET_ALARM_OUT_MODE_UNKNOWN = -1, // 未知 EM_NET_ALARM_OUT_MODE_0, // 报警输出1输出 EM_NET_ALARM_OUT_MODE_1, // 报警输出2输出 EM_NET_ALARM_OUT_MODE_2, // 报警输出1,2同时输出 }EM_NET_ALARM_OUT_MODE; ///@brief 煤量占比配置 typedef struct tagNET_COAL_RATIO_LEVEL { float fCoalLevelMin; // 煤量占比最小值,用于界定当前等级煤量的最小值。取值0-1 float fCoalLevelMax; // 煤量占比最大值,用于界定当前等级煤量的最大值。取值0-1 EM_NET_ALARM_OUT_MODE emAlarmOutMode; // 报警模式,用于界定不同煤量占比等级对应报警输出报警模式 }NET_COAL_RATIO_LEVEL; ///@brief EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测)对应的规则配置结构体 ///@brief 对应事件EM_ANALYSE_EVENT_CONVEYER_BELT_BULK/EM_ANALYSE_EVENT_CONVEYER_BELT_NONLOAD/EM_ANALYSE_EVENT_CONVEYOR_ARTICLE_TYPE ///@brief EM_ANALYSE_EVENT_CONVEYER_BELT_RUNOFF/EM_ANALYSE_EVENT_CONVEYER_BELT_BLOCK/EVENT_IVS_CONVEYER_BELT_COAL_RATIO typedef struct tagNET_CONVEYER_BELT_DETECT_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 EM_CONVEYER_BELT_DETECT_TYPE emDetectType; // 传送带检测类型 UINT nMinDuration; // 最短持续时间,单位秒, 取值:[3-30] UINT nReportInterval; // 报告时间间隔,单位秒, 取值:[1-300] UINT nSensitivity; // 灵敏度,值越小灵敏度越低。取值1-10 POINTCOORDINATE stuComparetLine[2]; // 对比线,用于表示检测区域内传送带的平均宽度 // 直线类型,直中每个端点的坐标归一化到[0,8191]区间 UINT nSizeFilterThreshold; // 大块物占比值,尺寸大于SizeFilterThreshold / 10* ComparetLine表示的传送带平均宽度 的物体被认为是大块异物,取值[2-8] UINT nWarningThreshold; // 预警值,用于界定跑偏的程度;0<预警值<停机值<10, 取值[1-9] UINT nDowntimeThreshold; // 停机值,用于界定跑偏的程度;0<预警值<停机值<10, 取值[1-9] NET_COAL_RATIO_LEVEL stuCoalRatioLevel[3]; // 煤量占比配置,默认三组,对应煤量占比三个等级,每个等级由煤量占比最大值、最小值组成煤量阈值,三档的阈值互不冲突。 int nCoalRatioLevelNums; // 煤量占比配置数 UINT nClogThreshold; // 阻塞报警阈值;取值0-10 UINT nIsMoveAlarm; // 输出不同皮带运动状态时的报警, 0代表该报警不考虑皮带是否运动(默认,即包含1和2),1代表仅在皮带静止时输出报警,2代表仅在皮带运动时输出报警 UINT nRunOffFlag; // 皮带跑偏报警标识,皮带是否跑偏至托辊外,0表示无效值,1代表托辊内,2代表托辊外 EM_ARTICLE_TYPE emArticleType; // 检测异物类型 UINT nConveyorBeltWidth; // 皮带实际物理宽度,范围[0-1000],单位cm BYTE byReserved[4036]; // 保留字节 } NET_CONVEYER_BELT_DETECT_RULE_INFO; ///@brief 数量统计类型 typedef enum tagEM_NUMBERSTAT_TYPE { EM_NUMSTAT_TYPE_REGION, // "Region" 区域类型 EM_NUMSTAT_TYPE_ENTRANCE, // "Entrance" 出入口类型 EM_NUMSTAT_TYPE_OTHER, // other } EM_NUMBERSTAT_TYPE; ///@brief EVENT_IVS_NUMBERSTAT(数量统计)对应的规则配置结构体 typedef struct tagNET_NUMBERSTAT_RULE_INFO { int nUpperLimit; // 数量上限 单位:个,1~65535 int nPeriod; // 上报周期 单位:秒,1~65535 int nDetectRegionPoint; // 检测区顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区 int nPtzPresetId; // 云台预置点编号 0~65535 EM_NUMBERSTAT_TYPE emType; // 数量统计类型 支持:"Region" 区域类型 "Entrance" 出入口类型 POINTCOORDINATE stDirection[2]; // 正常运动方向, 按照此方向行驶是正向,反过来是逆行 只对出入口类型有效。第一个点是起点,第二个点是终点,点的坐标归一化到[0,8191]区间。 int nEnterThreshold; // 进入数报警阈值,0表示不报警 int nExitThreshold; // 离开数报警阈值,0表示不报警 int nInsideThreshold; // 滞留数报警阈值,0表示不报警 UINT nAreaID; // 区域ID,一个预置点可以对应多个区域 int nMaxDetectLineNum; // 检测线实际最大个数 POINTCOORDINATE stuDetectLine[20]; // 离开检测线坐标 UINT nStayMinDuration; // 停留超时时间 BYTE byReserved[4092]; // 保留字节 } NET_NUMBERSTAT_RULE_INFO; ///@brief EVENT_IVS_STEREO_FIGHTDETECTION(立体行为分析打架/剧烈运动检测)对应的规则配置 typedef struct tagNET_STEREO_FIGHTDETECTION_RULE_INFO { int nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nSensitivity; // 灵敏度, 1-10, 默认值5 int nMaxHeight; // 最大检测高度,单位cm int nMinHeight; // 最小检测高度,单位cm EM_STEREO_ACTION_TYPE emActionType; // 动作类型 BYTE bReserved[508]; // 保留字节 } NET_STEREO_FIGHTDETECTION_RULE_INFO; ///@brief 烟雾检测场景类型 typedef enum tagEM_SMOKEDETECTION_SCENE_TYPE { EM_SMOKEDETECTION_SCENE_UNKNOWN, // 未知 EM_SMOKEDETECTION_SCENE_INDOOR, // 室内场景 EM_SMOKEDETECTION_SCENE_OUTDOOR, // 室外场景 EM_SMOKEDETECTION_SCENE_TUNNEL, // 交通隧道场景 EM_SMOKEDETECTION_SCENE_FOREST, // 森林场景 } EM_SMOKEDETECTION_SCENE_TYPE; ///@brief EVENT_IVS_SMOKEDETECTION(烟雾报警检测) 对应的规则配置 typedef struct tagNET_SMOKEDETECTION_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nRepeatAlarmTime; // 重复报警时间,单位:秒,范围0-3600 EM_SMOKEDETECTION_SCENE_TYPE emSceneType; // 检测场景类型 BYTE bReserved[2044]; // 保留字节 } NET_SMOKEDETECTION_RULE_INFO; ///@brief EVENT_IVS_FIREDETECTION(火警检测) 对应的规则配置 typedef struct tagNET_FIREDETECTION_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nRepeatAlarmTime; // 重复报警时间,单位:秒,范围0-3600 EM_SMOKEDETECTION_SCENE_TYPE emSceneType; // 检测场景类型 BYTE bReserved[2044]; // 保留字节 } NET_FIREDETECTION_RULE_INFO; ///@brief EVENT_IVS_PHONECALL_DETECT(打电话检测) 对应的规则配置 typedef struct tagNET_PHONECALL_DETECT_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nReportInterval; // 重复报警时间,单位:秒,范围0-3600 BYTE bReserved[2048]; // 保留字节 } NET_PHONECALL_DETECT_RULE_INFO; ///@brief EVENT_IVS_SMOKING_DETECT(吸烟检测)对应的规则配置 typedef struct tagNET_SMOKING_DETECT_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nReportInterval; // 重复报警时间,单位:秒,范围0-3600 BYTE bReserved[2048]; // 保留字节 } NET_SMOKING_DETECT_RULE_INFO; ///@brief EVENT_IVS_STEREO_STEREOFALLDETECTION(立体行为分析跌倒检测) 对应的规则配置 typedef struct tagNET_STEREO_STEREOFALLDETECTION_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nReportInterval; // 重复报警时间,单位:秒,范围0-3600 BYTE bReserved[2048]; // 保留字节 } NET_STEREO_STEREOFALLDETECTION_RULE_INFO; ///@brief EVENT_IVS_WATER_LEVEL_DETECTION(水位尺检测) 对应的规则配置 typedef struct tagNET_WATER_LEVEL_DETECTION_RULE_INFO { UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 float fHighLevel; // 水位上限报警阈值(单位:米) float fLowLevel; // 水位下线报警阈值(单位:米) BYTE bReserved[2044]; // 保留字节 } NET_WATER_LEVEL_DETECTION_RULE_INFO; ///@brief EVENT_IVS_CLIMBDETECTION(攀高检测) 对应的规则配置 typedef struct tagNET_CLIMBDETECTION_RULE_INFO { UINT nDetectLinePoint; // 攀高线顶点数 POINTCOORDINATE stuDetectLine[20]; // 攀高线 BYTE bReserved[2044]; // 保留字节 } NET_CLIMBDETECTION_RULE_INFO; ///@brief 检测动作类型 typedef enum tagEM_ARTICLEDETECT_ACTION { EM_ARTICLEDETECT_ACTION_UNKNOWN, // 未知动作 EM_ARTICLEDETECT_ACTION_LEFT, // 遗留 EM_ARTICLEDETECT_ACTION_TAKENAWAY, // 搬移 }EM_ARTICLEDETECT_ACTION; ///@brief EVENT_IVS_ARTICLE_DETECTION(物品检测)对应的规则配置 typedef struct tagNET_ARTICLE_DETECTION_RULE_INFO { UINT nMinDuration; // 最短持续时间 单位:秒,0~65535 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nSensitivity; // 灵敏度, 取值1-10 UINT nDetectActionNum; // 检测动作个数 EM_ARTICLEDETECT_ACTION emDetectAction[8]; // 检测动作列表 BYTE bReserved[2008]; // 保留字节 } NET_ARTICLE_DETECTION_RULE_INFO; ///@brief EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应的规则配置 typedef struct tagNET_IVS_MAN_NUM_DETECTION_RULE_INFO { UINT nThreshold; // 异常人数阈值 UINT nDetectRegionPoint; // 检测区域顶点数 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 UINT nMinDuration; // 最短持续时间,单位是秒,低于该时间不报警, 默认2 范围[1,60] ,单位:秒 UINT nReportInterval; // 重复报警时间,为0不重复报警, 默认0 范围[0,300],单位:秒 EM_EVENT_DETECT_TYPE emDetectType; // 检测模式 int nSensitivity; // 灵敏度, 范围[1, 10] int nMaxHeight; // 最大检测高度,单位cm int nMinHeight; // 最小检测高度,单位cm UINT nAreaID; // 区域ID UINT nPlanId; // 计划id BOOL bStayDetectEnable; // 是否开启滞留检测报警功能, 对应报警为StayDetection int nStayMinDuration; // 最短滞留持续时间, 单位秒. 开启滞留检测报警时需设置, 范围[1, 1800] BOOL bManNumAlarmEnable; // 是否开启人数异常报警功能. 对应报警为ManNumDetection UINT nPersonNum[2]; // 报警人数, emDetectType为EM_EVENT_DETECT_TYPE_IN_INTERVAL/EM_EVENT_DETECT_TYPE_OUT_INTERVAL时有效 BYTE bReserved[2004]; // 保留字节 } NET_IVS_MAN_NUM_DETECTION_RULE_INFO; ///@brief 仪表类型 typedef enum tagEM_DIALDETECT_TYPE { EM_DIALDETECT_TYPE_UNKNOWN, // 未知 EM_DIALDETECT_TYPE_PLATEN, // 压板检测 EM_DIALDETECT_TYPE_KNIFE, // 刀闸检测 EM_DIALDETECT_TYPE_POINTERMETER, // 指针表计检测 EM_DIALDETECT_TYPE_OILMETER, // 油位表计 EM_DIALDETECT_TYPE_LED, // 数码管字符检测 EM_DIALDETECT_TYPE_LCD, // 液晶屏字符检测 EM_DIALDETECT_TYPE_LIGHT, // 指示灯检测 EM_DIALDETECT_TYPE_SWITCH, // 旋转开关检测 EM_DIALDETECT_TYPE_PESPIRATOR, // 呼吸器检测 EM_DIALDETECT_TYPE_CHARLNDICTOR, // 字符指示器检测 EM_DIALDETECT_TYPE_POINTERLNDICTOR, // 指针指示器检测 EM_DIALDETECT_TYPE_OILLEVEL, // 液位计检测 EM_DIALDETECT_TYPE_DIALSWTICH, // 拨码盘字符检测 }EM_DIALDETECT_TYPE; ///@brief EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应的规则配置 typedef struct tagNET_IVS_DIALRECOGNITION_RULE_INFO { EM_DIALDETECT_TYPE emType; // 仪表类型 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nDetectRegionNum; // 检测区域顶点数 int nKinfeOpenAngleThreshold; // 敞开式隔离开关有效,分夹角阈值, 单位度,取值范围0~90, 建议20 int nKinfeClossAngleThreshold; // 敞开式隔离开关有效,合夹角阈值, 单位度,取值范围0~90, 建议10 char bReserved[2044]; // 保留字节 } NET_IVS_DIALRECOGNITION_RULE_INFO; ///@brief EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应的规则配置 typedef struct tagNET_IVS_ELECTRICFAULT_DETECT_RULE_INFO { BOOL bAirborneDetectEnable; // 挂空悬浮物检测使能 BOOL bNestDetectEnable; // 鸟巢检测使能 BOOL bDialDetectEnable; // 表盘检测(表盘模糊)使能 BOOL bLeakageDetectEnable; // 渗漏检测使能 BOOL bDoorDetectEnable; // 箱门检测使能 BOOL bRespiratorDetectEnable; // 呼吸器检测使能 BOOL bSmokingDetectEnable; // 吸烟检测使能 BOOL bInsulatorDetectEnable; // 绝缘子检测使能 BOOL bCoverPlateDetectEnable; // 盖板检测使能 BOOL bPressingPlateDetectEnable; // 压板开合检测使能 BOOL bMetalCorrosionEnable; // 金属锈蚀检测使能 BOOL bSizeFileter; // 规则特定的尺寸过滤器是否有效 NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 POINTCOORDINATE stuDetectRegion[20]; // 检测区域 int nDetectRegionNum; // 检测区域顶点数 char bReserved[2048]; // 保留字节 } NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO; ///@brief 智能分析规则信息 typedef struct tagNET_ANALYSE_RULE_INFO { EM_SCENE_CLASS_TYPE emClassType; // 分析大类类型 DWORD dwRuleType; // 规则类型, 详见dhnetsdk.h中"智能分析事件类型" // EVENT_IVS_FACEANALYSIS(目标分析)对应结构体 NET_FACEANALYSIS_RULE_INFO // EVENT_IVS_NONMOTORDETECT(非机动车)对应结构体 NET_NONMOTORDETECT_RULE_INFO // EVENT_IVS_VEHICLEDETECT(机动车) 对应结构体 NET_VEHICLEDETECT_RULE_INFO // EVENT_IVS_HUMANTRAIT(人体) 对应结构体NET_HUMANTRAIT_RULE_INFO // EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测) 对应结构体 NET_XRAY_DETECT_BYPBJECT_RULE_INFO // EVENT_IVS_WORKCLOTHES_DETECT(工装检测)对应结构体NET_WORKCLOTHDETECT_RULE_INFO // EVENT_IVS_WORKSTATDETECTION(作业统计)对应结构体NET_WORKSTATDETECTION_RULE_INFO // EVENT_IVS_CROSSLINEDETECTION(警戒线)对应结构体NET_CROSSLINE_RULE_INFO // EVENT_IVS_CROSSREGIONDETECTION(警戒区)对应结构体 NET_CROSSREGION_RULE_INFO // EVENT_IVS_FEATURE_ABSTRACT(特征提取)对应结构体 NET_FEATURE_ABSTRACT_RULE_INFO // EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件)对应结构体NET_ELECTRIC_GLOVE_DETECT_RULE_INFO // EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件)对应结构体NET_ELECTRIC_LADDER_DETECT_RULE_INFO // EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件)对应结构体NET_ELECTRIC_CURTAIN_DETECT_RULE_INFO // EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件)对应结构体NET_ELECTRIC_FENCE_DETECT_RULE_INFO // EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件)对应结构体NET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO // EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应结构体NET_ELECTRIC_BELT_DETECT_RULE_INFO // EVENT_IVS_BANNER_DETECTION(拉横幅检测事件)对应结构体NET_BANNER_DETECTION_RULE_INFO // EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房衣着检测事件)对应结构体NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO // EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件)对应结构体NET_WATER_STAGE_MONITOR_RULE_INFO // EVENT_IVS_FLOATINGOBJECT_DETECTION(漂浮物检测事件)对应结构体 NET_FLOATINGOBJECT_DETECTION_RULE_INFO // EVENT_IVS_RIOTERDETECTION (人群聚集) 对应结构体 NET_RIOTERDETECTION_RULE_INFO // EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应结构体 NET_LEFTDETECTION_RULE_INFO // EVENT_IVS_PARKINGDETECTION (非法停车事件) 对应结构体 NET_PARKINGDETECTION_RULE_INFO // EVENT_IVS_WANDERDETECTION( 徘徊事件)对应结构体 NET_WANDERDETECTION_RULE_INFO // EVENT_IVS_STAYDETECTION (停留事件) 对应结构体 NET_WANDERDETECTION_RULE_INFO // EVENT_IVS_VIDEOABNORMALDETECTION (视频异常)对应结构体 NET_VIDEOABNORMALDETECTION_RULE_INFO // EVENT_IVSS_FACEATTRIBUTE (目标属性检测) 对应结构体 NET_FACEATTRIBUTE_RULE_INFO // EVENT_IVS_MOVEDETECTION (移动检测) 对应结构体 NET_MOVEDETECTION_RULE_INFO // EVENT_IVSS_FACECOMPARE(IVSS目标识别事件) 对应结构体 NET_FACECOMPARE_INFO // EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测) 对应结构体 NET_CONVEYER_BELT_DETECT_RULE_INFO // EVENT_IVS_NUMBERSTAT(数量统计事件) 对应结构体NET_NUMBERSTAT_RULE_INFO // EVENT_IVS_STEREO_FIGHTDETECTION(立体行为分析打架/剧烈运动检测) 对应结构体NET_STEREO_FIGHTDETECTION_RULE_INFO // EVENT_IVS_SMOKEDETECTION(烟雾报警检测) 对应结构体 NET_SMOKEDETECTION_RULE_INFO // EVENT_IVS_FIREDETECTION(火警检测)对应结构体 NET_FIREDETECTION_RULE_INFO // EVENT_IVS_PHONECALL_DETECT(打电话检测)对应结构体 NET_PHONECALL_DETECT_RULE_INFO // EVENT_IVS_SMOKING_DETECT(吸烟检测)对应结构体 NET_SMOKING_DETECT_RULE_INFO // EVENT_IVS_STEREO_STEREOFALLDETECTION(立体行为分析跌倒检测)对应结构体 NET_STEREO_STEREOFALLDETECTION_RULE_INFO // EVENT_IVS_WATER_LEVEL_DETECTION(水位尺检测)对应结构体 NET_WATER_LEVEL_DETECTION_RULE_INFO // EVENT_IVS_CLIMBDETECTION(攀高检测)对应结构体 NET_CLIMBDETECTION_RULE_INFO // EVENT_IVS_ARTICLE_DETECTION(物品检测)对应结构体NET_ARTICLE_DETECTION_RULE_INFO // EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应结构体NET_IVS_MAN_NUM_DETECTION_RULE_INFO // EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应结构体NET_IVS_DIALRECOGNITION_RULE_INFO // EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应结构体NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO // EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应结构体 NET_TRAFFIC_ROAD_BLOCK_RULE_INFO // EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应结构体 NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO // EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应结构体 NET_TRAFFIC_FLOWSTAT_RULE_INFO // EVENT_IVS_TRAFFIC_OVERSPEED(超速事件) 对应结构体 NET_TRAFFIC_OVERSPEED_RULE_INFO // EVENT_IVS_TRAFFIC_UNDERSPEED(欠速事件) 对应结构体 NET_TRAFFIC_UNDERSPEED_RULE_INFO // EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应结构体 NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO // EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应结构体 NET_TRAFFIC_CROSSLANE_RULE_INFO // EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应结构体 NET_TRAFFIC_JAM_RULE_INFO // EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应结构体 NET_TRAFFIC_PEDESTRAIN_RULE_INFO // EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应结构体 NET_TRAFFIC_THROW_RULE_INFO // EVENT_IVS_TRAFFIC_RETROGRADE(逆行检测事件) 对应结构体 NET_TRAFFIC_RETROGRADE_RULE_INFO // EVENT_IVS_TRAFFICACCIDENT(交通事故事件) 对应结构体 NET_TRAFFIC_ACCIDENT_RULE_INFO // EVENT_IVS_TRAFFIC_BACKING(倒车事件) 对应结构体 NET_TRAFFIC_BACKING_RULE_INFO // EVENT_IVS_FOG_DETECTION(起雾检测事件) 对应结构体 NET_FOG_DETECTION_RULE_INFO // EVENT_IVS_CROSSREGIONDETECTION(警戒区事件) 对应结构体 NET_CROSSREGION_RULE_INFO // EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件) 对应结构体 NET_TRAFFIC_PARKING_RULE_INFO // EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件) 对应结构体 NET_FINANCE_CASH_TRANSACTION_RULE_INFO // EVENT_IVS_LEAVEDETECTION(离岗检测事件) 对应结构体 NET_LEAVEDETECTION_RULE_INFO // EVENT_IVS_LADLE_NO_DETECTION(钢包编号识别事件) 对应规则配置为空 // EVENT_IVS_DIALRECOGNITION_EX(仪表检测事件)对应结构体NET_IVS_DIALRECOGNITION_RULE_INFO // EVENT_IVS_NEAR_OBJECT_DETECT(近物体检测事件) 对应结构体 NET_IVS_NEAR_OBJECT_DETECT_RULE_INFO // EVENT_IVS_PIC_COMPARE_DETECTION(图片比对不上报警事件)对应结构体 NET_IVS_PIC_COMPARE_DETECTION_RULE_INFO // EVENT_IVS_SILICON_FIREPUTTER_DETECTION(刺火推杆检测事件)对应结构体NET_SILICON_FIREPUTTER_DETECTION_RULE_INFO void* pReserved; // 规则配置, 具体结构体类型根据dwRuleType来确定, 具体信息见dwRuleType的注释 UINT nObjectTypeNum; // 检测物体类型个数, 为0 表示不指定物体类型 EM_ANALYSE_OBJECT_TYPE emObjectTypes[16]; // 检测物体类型列表 char szRuleName[128]; // 规则名称,不带预置点的设备规则名称不能重名,带预置点的设备,同一预置点内规则名称不能重名,不同预置点之间规则名称可以重名 BYTE byReserved[828]; // 保留字节 } NET_ANALYSE_RULE_INFO; ///@brief 智能分析规则 typedef struct tagNET_ANALYSE_RULE { NET_ANALYSE_RULE_INFO stuRuleInfos[MAX_ANALYSE_RULE_COUNT]; // 分析规则信息 UINT nRuleCount; // 分析规则条数 BYTE byReserved[1028]; // 保留字节 } NET_ANALYSE_RULE; ///@brief 视频流协议类型 typedef enum tagEM_STREAM_PROTOCOL_TYPE { EM_STREAM_PROTOCOL_UNKNOWN, // 未知 EM_STREAM_PROTOCOL_PRIVATE_V2, // 私有二代 EM_STREAM_PROTOCOL_PRIVATE_V3, // 私有三代 EM_STREAM_PROTOCOL_RTSP, // rtsp EM_STREAM_PROTOCOL_ONVIF, // Onvif EM_STREAM_PROTOCOL_GB28181, // GB28181 EM_STREAM_PROTOCOL_HIKVISION, EM_STREAM_PROTOCOL_BSCP // 蓝星 } EM_STREAM_PROTOCOL_TYPE; ///@brief 智能任务启动规则 typedef enum tagEM_ANALYSE_TASK_START_RULE { EM_ANALYSE_TASK_START_NOW, // 立刻启动 EM_ANALYSE_TASK_START_LATER, // 稍候手动启动 } EM_ANALYSE_TASK_START_RULE; ///@brief 车道线属性 typedef enum tagEM_GLOBAL_LANES_LINE_TYPE { EM_GLOBAL_LANES_LINE_TYPE_UNKNOWN, // 未知 EM_GLOBAL_LANES_LINE_TYPE_WHITESOLID, // 白实线 EM_GLOBAL_LANES_LINE_TYPE_WHITEDOTTED, // 白虚线 EM_GLOBAL_LANES_LINE_TYPE_YELLOW, // 黄线 EM_GLOBAL_LANES_LINE_TYPE_UPSOLIDDOWNDOTTED, // 上实下虚 EM_GLOBAL_LANES_LINE_TYPE_UPDOTTEDDOWNSOLID, // 上虚下实 } EM_GLOBAL_LANES_LINE_TYPE; ///@brief 车道信息,每个车道两条边界线 typedef struct tagNET_ANALYSE_TASK_GLOBAL_LANES { BOOL bEnable; // 车道使能 // 本车道规则只有在车道使能情况下才可能生效,实际应对用户在一段时期内某车道施工引起的误检 // 该字段缺省时默认该车道使能 int nNumber; // 车道编号 DH_POINT stuLeftLinePoint[20]; // 左车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间 int nLeftLinePointNum; // 左车道线点个数 EM_GLOBAL_LANES_LINE_TYPE emLeftLineType; // 左车道线的属性 DH_POINT stuRightLinePoint[20]; // 右车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间 int nRightLinePointNum; // 右车道线点个数 EM_GLOBAL_LANES_LINE_TYPE emRightLineType; // 右车道线的属性 BYTE byReserved[1024]; // 保留字节 } NET_ANALYSE_TASK_GLOBAL_LANES; ///@brief 标定区域 typedef struct tagNET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA { int nStaffs; // 标尺线个数 NET_STAFF_INFO stuStaffs[32]; // 标尺线 DH_POINT stuCalibratePloygonArea[MAX_CALIBRATE_PLOYGON_AREA_NUM]; // 标定多边形区域 int nCalibratePloygonAreaNum; // 标定多边形区域顶点个数 BYTE byReserved[1024]; // 保留字节 } NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA; ///@brief 任务全局配置 typedef struct tagNET_ANALYSE_TASK_GLOBAL { int nLanesNum; // 车道信息数量 NET_ANALYSE_TASK_GLOBAL_LANES stuLanes[8]; // 车道信息 int nCalibrateArea; // 标定区域个数 NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA stuCalibrateArea[32]; // 标定区域 BYTE byReserved[1024]; // 保留字节 } NET_ANALYSE_TASK_GLOBAL; ///@brief 任务模块配置 typedef struct tagNET_ANALYSE_TASK_MODULE { NET_CFG_SIZEFILTER_INFO stuSizeFileter; // 规则特定的尺寸过滤器 DH_POLY_POINTS stuExcludeRegion[DH_MAX_EXCLUDEREGION_NUM]; // 排除区域 int nExcludeRegionNum; // 排除区域数 BYTE byReserved[1020]; // 保留字节 } NET_ANALYSE_TASK_MODULE; ///@brief 远程实时视频源信息 typedef struct tagNET_REMOTE_REALTIME_STREAM_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则, Polling任务时无效 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 EM_STREAM_PROTOCOL_TYPE emStreamProtocolType; // 视频流协议类型 char szPath[DH_COMMON_STRING_256]; // 视频流地址 char szIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // IP 地址 WORD wPort; // 端口号 BYTE byReserved[2]; // 用于字节对齐 char szUser[DH_COMMON_STRING_64]; // 用户名 char szPwd[DH_COMMON_STRING_64]; // 密码 int nChannelID; // 通道号 UINT nStreamType; // 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流; char szTaskUserData[256]; // 任务数据 char szMQConfig[4096]; // MQ配置信息,参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 NET_ANALYSE_TASK_GLOBAL stuGlobal; // 全局配置 NET_ANALYSE_TASK_MODULE stuModule; // 模块配置 char szChannelId[32]; // 平台通道信息 } NET_REMOTE_REALTIME_STREAM_INFO; ///@brief 远程实时视频源信息("analyseTaskManager.analysePushPictureFileByRule"协议使用) typedef struct tagNET_REMOTE_STREAM_INFO { EM_STREAM_PROTOCOL_TYPE emStreamProtocolType; // 视频流协议类型 BYTE byReserved1[4]; // 用于字节对齐 char szPath[256]; // 视频流地址 char szIp[64]; // IP 地址 WORD wPort; // 端口号 char szUser[64]; // 用户名 char szPwd[64]; // 密码 int nChannelID; // 通道号 UINT nStreamType; // 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流; char byReserved[1024]; // 保留字节 } NET_REMOTE_STREAM_INFO; ///@brief 推送图片文件信息 typedef struct tagNET_PUSH_PICFILE_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 char szTaskUserData[256]; // 任务数据 char szMQConfig[4096]; // MQ配置信息,参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 NET_ANALYSE_TASK_GLOBAL stuGlobal; // 全局配置 NET_ANALYSE_TASK_MODULE stuModule; // 模块配置 } NET_PUSH_PICFILE_INFO; ///@brief 远程文件访问协议 typedef enum tagEM_REMOTE_FILE_PROTOCOL_TYPE { EM_REMOTE_FILE_PROTOCOL_UNKNOWN, // 未知 EM_REMOTE_FILE_PROTOCOL_RTSP, // RTSP EM_REMOTE_FILE_PROTOCOL_RABBITMQ, // RabbitMq EM_REMOTE_FILE_PROTOCOL_HTTP, // HTTP EM_REMOTE_FILE_PROTOCOL_PRIVATE, // Private EM_REMOTE_FILE_PROTOCOL_ONVIF, // Onvif EM_REMOTE_FILE_PROTOCOL_GB28181, // GB28181 EM_REMOTE_FILE_PROTOCOL_HIKVISION, // HK EM_REMOTE_FILE_PROTOCOL_BSCP, // BSCP EM_REMOTE_FILE_PROTOCOL_ACTIVEMQ, // ActiveMq } EM_REMOTE_FILE_PROTOCOL_TYPE; ///@brief 远程视频文件信息 typedef struct tagNET_REMOTE_VIDEO_FILE_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 EM_REMOTE_FILE_PROTOCOL_TYPE emRemoteFileProtocolType; // 远程文件访问协议类型 char szPath[DH_COMMON_STRING_256]; // 文件路径 char szIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // IP 地址 WORD wPort; // 端口号 char szUser[DH_COMMON_STRING_64]; // 用户名 char szPwd[DH_COMMON_STRING_64]; // 密码 char szFileID[128]; // 文件ID char szTaskUserData[256]; // 任务数据 char szMQConfig[4096]; // MQ配置信息,参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 UINT nVideoAnalysisProcess; // 分析进度,有效范围0~100,100表示分析完成 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nChannelID; // 通道号 UINT nStreamType; // 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流; } NET_REMOTE_VIDEO_FILE_INFO; ///@brief 远程图片信息 typedef struct tagNET_REMOTE_PIC_FILE_INFO { char szFileID[128]; // 文件ID char szPath[260]; // 文件路径 BYTE byReserved[512]; // 保留字节 } NET_REMOTE_PIC_FILE_INFO; ///@brief 远程图片文件信息 typedef struct tagNET_REMOTE_PICTURE_FILE_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 EM_REMOTE_FILE_PROTOCOL_TYPE emRemoteFileProtocolType; // 远程文件访问协议类型 char szIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // IP 地址 WORD wPort; // 端口号 char szUser[DH_COMMON_STRING_64]; // 用户名 char szPwd[DH_COMMON_STRING_64]; // 密码 NET_REMOTE_PIC_FILE_INFO stuFileInfo[32]; // 文件列表 char szTaskUserData[256]; // 任务数据 char szMQConfig[4096]; // MQ配置信息,参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 } NET_REMOTE_PICTURE_FILE_INFO; ///@brief 离线视频文件信息(第三方导入的文件) typedef struct tagNET_OFFLINE_VIDEO_FILE_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 EM_REMOTE_FILE_PROTOCOL_TYPE emRemoteFileProtocolType; // 远程文件访问协议类型 char szPath[260]; // 文件路径 char szFileID[128]; // 文件ID char szIp[DH_MAX_IPADDR_OR_DOMAIN_LEN]; // IP 地址 WORD wPort; // 端口号 char szUser[DH_COMMON_STRING_64]; // 用户名 char szPwd[DH_COMMON_STRING_64]; // 密码 char szTaskUserData[256]; // 任务数据 char szMQConfig[4096]; // MQ配置信息,参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 UINT nVideoAnalysisProcess; // 分析进度,有效范围0~100,100表示分析完成 TP_U64 nFileSize; // 文件大小,单位字节 BOOL bIsReportPTS; // 是否上报相对时间戳,true为上报,false为不上报 } NET_OFFLINE_VIDEO_FILE_INFO; ///@brief 推送远程图片文件,添加任务时无规则和图片信息,通过推送图片接口,每张图片中带有不同的规则信息(目前能源场景中使用) typedef struct tagNET_PUSH_PICFILE_BYRULE_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则 char szTaskUserData[256]; // 任务数据 } NET_PUSH_PICFILE_BYRULE_INFO; ///@brief 本地实时流信息 typedef struct tagNET_LOCAL_STREAM_INFO { DWORD dwSize; // 结构体大小 EM_ANALYSE_TASK_START_RULE emStartRule; // 智能任务启动规则, Polling任务时无效 NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 int nChannelID; // 通道号 UINT nStreamType; // 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流; char szTaskUserData[512]; // 任务数据 int nIsRepeat; // 是否许可重复,0默认是可以重复,1表示不能重复 NET_ANALYSE_TASK_GLOBAL stuGlobal; // 全局配置 NET_ANALYSE_TASK_MODULE stuModule; // 模块配置 } NET_LOCAL_STREAM_INFO; ///@brief CLIENT_AddAnalyseTask 接口输出参数 typedef struct tagNET_OUT_ADD_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID UINT nVirtualChannel; // 任务对应的虚拟通道号 char szUrl[256]; // 智能码流rtsp地址 } NET_OUT_ADD_ANALYSE_TASK; ///@brief CLIENT_ModifyAnalyseTask 接口输入参数 typedef struct tagNET_IN_MODIFY_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID BYTE byReserved1[4]; // 字节对齐 EM_DATA_SOURCE_TYPE emDataSourceType; // 智能分析数据源类型 void* pSourceData; // 智能分析数据源, 结构体类型根据emDataSourceType的值来决定 BYTE byReserved[1024]; // 保留字节 } NET_IN_MODIFY_ANALYSE_TASK; ///@brief CLIENT_ModifyAnalyseTask 接口输出参数 typedef struct tagNET_OUT_MODIFY_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID UINT nVirtualChannel; // 任务对应的虚拟通道号 } NET_OUT_MODIFY_ANALYSE_TASK; ///@brief 轮询任务对象 typedef struct tagNET_POLLING_INFO { EM_DATA_SOURCE_TYPE emSourceType; // 数据源类型 void* pSourceData; // 数据源信息, 根据emSouceType对应不一样的结构体 char szUserData[64]; // 视频源数据,标示视频源信息。在返回结果时,原封不动的带上。当任务的包含多个视频源时,attachResult每个视频源单独上报结果 char szTaskUserData[64]; // 设备编号和设备通道等信息。在返回结果时,原封不动的带上。当任务的包含多个视频源时,attachResult每个视频源单独上报结果 BYTE byReserved[192]; // 保留字节 }NET_POLLING_INFO; ///@brief CLIENT_AddPollingAnalyseTask 接口输入参数 typedef struct tagNET_IN_ADD_POLLING_ANALYSE_TASK { DWORD dwSize; // 结构体大小 int nIntervalTime; // 每个视频源的检测执行时间,单位为秒,1~65535 int nLoopCount; // 诊断轮询次数, 0代表永久轮询 int nInfoCount; // 任务对象个数 NET_POLLING_INFO* pInfoList; // 任务对象列表 }NET_IN_ADD_POLLING_ANALYSE_TASK; ///@brief CLIENT_AddPollingAnalyseTask 接口输出参数 typedef struct tagNET_OUT_ADD_POLLING_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID }NET_OUT_ADD_POLLING_ANALYSE_TASK; ///@brief CLIENT_UpdatePollingAnalyseTask 接口输入参数 typedef struct tagNET_IN_UPDATE_POLLING_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID int nIntervalTime; // 每个视频源的检测执行时间,单位为秒,1~65535 int nLoopCount; // 诊断轮询次数, 0代表永久轮询 int nInfoCount; // 任务对象个数 int nReserved; // 字节对齐 NET_POLLING_INFO* pInfoList; // 任务对象列表 }NET_IN_UPDATE_POLLING_ANALYSE_TASK; ///@brief CLIENT_UpdatePollingAnalyseTask 接口输出参数 typedef struct tagNET_OUT_UPDATE_POLLING_ANALYSE_TASK { DWORD dwSize; // 结构体大小 }NET_OUT_UPDATE_POLLING_ANALYSE_TASK; ///@brief CLIENT_StartAnalyseTask 接口输入参数 typedef struct tagNET_IN_START_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID } NET_IN_START_ANALYSE_TASK; ///@brief CLIENT_StartAnalyseTask 接口输出参数 typedef struct tagNET_OUT_START_ANALYSE_TASK { DWORD dwSize; // 结构体大小 } NET_OUT_START_ANALYSE_TASK; ///@brief CLIENT_RemoveAnalyseTask 接口输入参数 typedef struct tagNET_IN_REMOVE_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID } NET_IN_REMOVE_ANALYSE_TASK; ///@brief CLIENT_RemoveAnalyseTask 接口输出参数 typedef struct tagNET_OUT_REMOVE_ANALYSE_TASK { DWORD dwSize; // 结构体大小 } NET_OUT_REMOVE_ANALYSE_TASK; ///@brief 分析状态 typedef enum tagEM_ANALYSE_STATE { EM_ANALYSE_STATE_UNKNOWN, // 未知 EM_ANALYSE_STATE_IDLE, // 已创建但未运行 EM_ANALYSE_STATE_ANALYSING, // 分析中 EM_ANALYSE_STATE_ANALYSING_WAITPUSH, // 分析中并等待push数据 EM_ANALYSE_STATE_FINISH, // 正常完成 EM_ANALYSE_STATE_ERROR, // 执行异常 EM_ANALYSE_STATE_REMOVED, // 被删除 EM_ANALYSE_STATE_ROUNDFINISH, // 完成一轮视频源分析 EM_ANALYSE_STATE_STARTING, // 任务开启状态 } EM_ANALYSE_STATE; ///@brief 智能分析任务错误码 typedef enum tagEM_ANALYSE_TASK_ERROR { EM_ANALYSE_TASK_ERROR_UNKNOWN = 1, // 未知 EM_ANALYSE_TASK_ERROR_INSUFFICIENT_DECODING_CAPABILITY, // 解码能力不足 EM_ANALYSE_TASK_ERROR_INSUFFICIENT_INTELLIGENCE_CAPABILITY, // 智能能力不足 EM_ANALYSE_TASK_ERROR_BITSTREAM_FORMAT_NOT_SUPPORTED, // 码流格式不支持 EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE, // 分析器离线 EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE, // 分析器上线 } EM_ANALYSE_TASK_ERROR; ///@brief 智能分析任务信息 typedef struct tagNET_ANALYSE_TASKS_INFO { UINT nTaskID; // 任务ID EM_ANALYSE_STATE emAnalyseState; // 分析状态 EM_ANALYSE_TASK_ERROR emErrorCode; // 错误码 BYTE byReserved1[4]; // 字节对齐 char szTaskUserData[256]; // 任务数据 int nVideoAnalysisProcess; // 录像分析进度,当任务添加接口CLIENT_AddAnalyseTask emDataSourceType参数为录像分析"EM_DATA_SOURCE_REMOTE_PICTURE_FILE"时有效 范围1~100,100表示分析完成 char szUrl[256]; // 智能流rtsp地址,实时流时才填写 EM_SCENE_CLASS_TYPE emClassType; // 智能大类类型 EM_DATA_SOURCE_TYPE emSourceType; // 数据源类型 int nChipId; // 任务使用的分析子卡ID.-1表示无效子卡,大于等于0的值表示子卡ID号 // emErrorCode为EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE或EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE时此字段有效 BYTE byReserved[428]; // 保留字节 } NET_ANALYSE_TASKS_INFO; ///@brief CLIENT_FindAnalyseTask 接口输入参数 typedef struct tagNET_IN_FIND_ANALYSE_TASK { DWORD dwSize; // 结构体大小 } NET_IN_FIND_ANALYSE_TASK; ///@brief CLIENT_FindAnalyseTask 接口输出参数 typedef struct tagNET_OUT_FIND_ANALYSE_TASK { DWORD dwSize; // 结构体大小 UINT nTaskNum; // 智能分析任务个数 NET_ANALYSE_TASKS_INFO stuTaskInfos[MAX_ANALYSE_TASK_NUM]; // 智能分析任务信息 } NET_OUT_FIND_ANALYSE_TASK; ///@brief 智能分析图片信息 typedef struct tagNET_PUSH_PICTURE_INFO { char szFileID[DH_COMMON_STRING_128]; // 文件ID UINT nOffset; // 文件数据在二进制数据中的偏移, 单位:字节 UINT nLength; // 文件数据长度, 单位:字节 NET_XRAY_CUSTOM_INFO stuXRayCustomInfo; // 客户自定义信息 char szUrl[512]; // 远程文件url地址 带访问所需必要信息 包含用户名 密码 BYTE byReserved[256]; // 保留字节 } NET_PUSH_PICTURE_INFO; ///@brief CLIENT_PushAnalysePictureFile 接口输入参数 typedef struct tagNET_IN_PUSH_ANALYSE_PICTURE_FILE { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID NET_PUSH_PICTURE_INFO stuPushPicInfos[MAX_ANALYSE_PICTURE_FILE_NUM]; // 推送图片信息 UINT nPicNum; // 推送图片数量 UINT nBinBufLen; // 数据缓冲区长度, 单位:字节 char* pBinBuf; // 数据缓冲区, 由用户申请和释放 } NET_IN_PUSH_ANALYSE_PICTURE_FILE; ///@brief CLIENT_PushAnalysePictureFile 接口输出参数 typedef struct tagNET_OUT_PUSH_ANALYSE_PICTURE_FILE { DWORD dwSize; // 结构体大小 } NET_OUT_PUSH_ANALYSE_PICTURE_FILE; ///@brief 智能分析图片信息 typedef struct tagNET_PUSH_PICTURE_BYRULE_INFO { char szFileID[128]; // 文件ID UINT nOffset; // 文件数据在二进制数据中的偏移, 单位:字节 (URL和Offset/Length应该是两者有且只有一个) UINT nLength; // 文件数据长度, 单位:字节 (URL和Offset/Length应该是两者有且只有一个) NET_ANALYSE_RULE stuRuleInfo; // 分析规则信息 char szUserDefineData[512]; // 用户定义数据,通过client.notifyTaskResult回调中”UserDefineData”字段带回 char szModelUrl[512]; // 模型远程文件url地址,目前支持http方式下载 NET_REMOTE_STREAM_INFO stuRemoteStreamInfo; // 远程实时视频流信息 UINT nDetectType; // 能源SDT仪器仪表使用;0:深度学习 1:建模方式 2:图片比较方式,通过PicUr下载图片下发给算法,进行对应检测 int nPicUrlNum; // 图片远程文件url地址个数 char szPicUrl[64][512]; // 图片远程文件url地址,目前支持http方式下载 BYTE byReserved[256]; // 保留字节 } NET_PUSH_PICTURE_BYRULE_INFO; ///@brief CLIENT_PushAnalysePictureFileByRule 接口输入参数 typedef struct tagNET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID NET_PUSH_PICTURE_BYRULE_INFO* pstuPushPicByRuleInfos; // 推送图片信息,文件列表支持url路径和二进制数据两种方式,但是每次只能选择一种方式,即URL和Offset/Length应该是两者有且只有一个 // 用户自定义空间 UINT nPicNum; // 推送图片数量,用户定义 UINT nBinBufLen; // 数据缓冲区长度, 单位:字节 char* pBinBuf; // 数据缓冲区, 由用户申请和释放,选择nOffset/nLength方式,需要传送图片数据 } NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE; ///@brief CLIENT_PushAnalysePictureFileByRule 接口输出参数 typedef struct tagNET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE { DWORD dwSize; // 结构体大小 } NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE; ///@brief 智能分析任务状态回调信息 typedef struct tagNET_CB_ANALYSE_TASK_STATE_INFO { NET_ANALYSE_TASKS_INFO stuTaskInfos[MAX_ANALYSE_TASK_NUM]; // 智能分析任务信息 UINT nTaskNum; // 任务个数 BYTE byReserved[1024]; // 保留字节 } NET_CB_ANALYSE_TASK_STATE_INFO; ///@brief 智能分析状态订阅函数原型, lAttachHandle 为 CLIENT_AttachAnalyseTaskState 函数的返回值 typedef int (CALLBACK *fAnalyseTaskStateCallBack)(LLONG lAttachHandle, NET_CB_ANALYSE_TASK_STATE_INFO *pstAnalyseTaskStateInfo, LDWORD dwUser); ///@brief CLIENT_AttachAnalyseTaskState 接口输入参数 typedef struct tagNET_IN_ATTACH_ANALYSE_TASK_STATE { DWORD dwSize; // 结构体大小 UINT nTaskIDs[MAX_ANALYSE_TASK_NUM]; // 智能分析任务ID UINT nTaskIdNum; // 智能分析任务个数, 0表示订阅全部任务 fAnalyseTaskStateCallBack cbAnalyseTaskState; // 智能分析任务状态订阅函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_ANALYSE_TASK_STATE; ///@brief 智能分析结果订阅的过滤条件 typedef struct tagNET_ANALYSE_RESULT_FILTER { DWORD dwAlarmTypes[MAX_ANALYSE_FILTER_EVENT_NUM]; // 过滤事件, 详见dhnetsdk.h中"智能分析事件类型" UINT nEventNum; // 过滤事件数量 int nImageDataFlag; // 是否包含图片, 0-包含, 1-不包含 BYTE byReserved1[4]; // 对齐 int nImageTypeNum; // pImageType有效个数 EM_FILTER_IMAGE_TYPE *pImageType; // 过滤上报的图片类型 BYTE byReserved[1004]; // 保留字节 } NET_ANALYSE_RESULT_FILTER; ///@brief 文件分析状态 typedef enum tagEM_FILE_ANALYSE_STATE { EM_FILE_ANALYSE_UNKNOWN = -1, // 未知 EM_FILE_ANALYSE_EXECUTING, // 分析中 EM_FILE_ANALYSE_FINISH, // 分析完成 EM_FILE_ANALYSE_FAILED, // 分析失败 } EM_FILE_ANALYSE_STATE; ///@brief MQ相关信息 typedef struct tagNET_TASK_ACTIVE_MQ_INFO { char szIp[64]; // ip地址 int nPort; // 端口号 int nChannelSeq; // 通道号,默认为-1 char szDeviceCode[256]; // 设备code码 char szImgUrl[512]; // 图片url char szSceneImgUrl[512]; // 场景大图url NET_TIME_EX stuBeginTime; // 开始时间 NET_TIME_EX stuEndTime; // 结束时间 NET_TIME_EX stuCaptureTime; // 抓拍时间 char szTaskCode[256]; // 任务code码 char szPlateImgUrl[512]; // 车牌图url char szHumanFaceUrl[512]; // 人体目标图url BYTE byReserved[2048]; // 保留字节 } NET_TASK_ACTIVE_MQ_INFO; ///@brief 任务自定义数据 typedef struct tagNET_TASK_CUSTOM_DATA { char szClientIP[128]; // 客户端IP char szDeviceID[128]; // 设备ID NET_TASK_ACTIVE_MQ_INFO *pstuActiveMQInfo; //MQ相关信息,通过MQ下发 BYTE byReserved[256 - POINTERSIZE]; // 保留字节 } NET_TASK_CUSTOM_DATA; ///@brief 智能分析任务结果信息 typedef struct tagNET_ANALYSE_TASK_RESULT { UINT nTaskID; // 任务ID char szFileID[DH_COMMON_STRING_128]; // 文件ID, 分析文件时有效 EM_FILE_ANALYSE_STATE emFileAnalyseState; // 文件分析状态 char szFileAnalyseMsg[DH_COMMON_STRING_256]; // 文件分析额外信息, 一般都是分析失败的原因 NET_SECONDARY_ANALYSE_EVENT_INFO stuEventInfos[MAX_SECONDARY_ANALYSE_EVENT_NUM];// 事件信息 int nEventCount; // 实际的事件个数 NET_TASK_CUSTOM_DATA stuCustomData; // 自定义数据 char szUserData[64]; // 频源数据,标示视频源信息,对应addPollingTask中UserData字段。 char szTaskUserData[256]; // 任务数据 NET_SECONDARY_ANALYSE_EVENT_INFO *pstuEventInfosEx; // 扩展事件信息 int nRetEventInfoExNum; // 返回扩展事件信息个数 char szUserDefineData[512]; // 用户定义数据,对应analyseTaskManager.analysePushPictureFileByRule中UserDefineData字段 UINT nFailedFileSize; // 失败文件大小,单位字节 BYTE byReserved[180]; // 保留字节 } NET_ANALYSE_TASK_RESULT; ///@brief 智能分析任务结果回调信息 typedef struct tagNET_CB_ANALYSE_TASK_RESULT_INFO { NET_ANALYSE_TASK_RESULT stuTaskResultInfos[MAX_ANALYSE_TASK_NUM]; // 智能分析任务结果信息 UINT nTaskResultNum; // 任务个数 BYTE byReserved[1028]; // 保留字节 } NET_CB_ANALYSE_TASK_RESULT_INFO; ///@brief 智能分析状态订阅函数原型, lAttachHandle 是 CLIENT_AttachAnalyseTaskResult接口的返回值 typedef int (CALLBACK *fAnalyseTaskResultCallBack)(LLONG lAttachHandle, NET_CB_ANALYSE_TASK_RESULT_INFO *pstAnalyseTaskResult, const char *pBuf, const DWORD dwBufSize, LDWORD dwUser); ///@brief CLIENT_AttachAnalyseTaskResult 接口输入参数 typedef struct tagNET_IN_ATTACH_ANALYSE_RESULT { DWORD dwSize; // 结构体大小 UINT nTaskIDs[MAX_ANALYSE_TASK_NUM]; // 智能分析任务ID UINT nTaskIdNum; // 智能分析任务个数, 0表示订阅全部任务 NET_ANALYSE_RESULT_FILTER stuFilter; // 过滤条件 BYTE byReserved[4]; // 对齐 fAnalyseTaskResultCallBack cbAnalyseTaskResult; // 智能分析任务结果订阅函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_ANALYSE_RESULT; ///@brief CLIENT_SetAnalyseTaskCustomData 接口输入参数 typedef struct tagNET_IN_SET_ANALYSE_TASK_CUSTOM_DATA { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID NET_TASK_CUSTOM_DATA stuTaskCustomData; // 自定义数据 } NET_IN_SET_ANALYSE_TASK_CUSTOM_DATA; ///@brief CLIENT_SetAnalyseTaskCustomData 接口输出参数 typedef struct tagNET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA { DWORD dwSize; // 结构体大小 } NET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA; ///@brief CLIENT_PutAnalyseDisposition 接口输入参数 typedef struct tagNET_IN_PUT_ANALYSE_DISPOSITION { DWORD dwSize; // 结构体大小 BOOL bAction; // 布控或者撤控,true:布控,false:撤控 UINT nGroupIDNum; // 目标库名称个数 char szGroupID[128][64]; // 目标库名称列表 UINT nSimilaryNum; // 目标库比对相识度个数 BYTE bySimilary[128]; // 目标库比对相识度,同groudID对应 }NET_IN_PUT_ANALYSE_DISPOSITION; ///@brief CLIENT_PutAnalyseDisposition 接口输出参数 typedef struct tagNET_OUT_PUT_ANALYSE_DISPOSITION { DWORD dwSize; // 结构体大小 }NET_OUT_PUT_ANALYSE_DISPOSITION; ///@brief 算法厂商 typedef enum tagEM_ALGORITHM_VENDOR { EM_ALGORITHM_VENDOR_UNKNOWN, // 未知 EM_ALGORITHM_VENDOR_DAHUA, // 大华 EM_ALGORITHM_VENDOR_SHANGTANG, // 商汤 EM_ALGORITHM_VENDOR_HUAFU, // 华富 EM_ALGORITHM_VENDOR_SHENMO, // 深晶 } EM_ALGORITHM_VENDOR; ///@brief 算法版本信息 typedef struct tagNET_ALGORITHM_INFO { EM_SCENE_CLASS_TYPE emClassType; // 业务大类 char szVersion[DH_COMMON_STRING_32]; // 算法版本 EM_ALGORITHM_VENDOR emAlgorithmVendor; // 算法厂商 char szAlgorithmLibVersion[DH_COMMON_STRING_32]; // 算法库文件版本 BYTE byReserved[992]; // 保留字节 } NET_ALGORITHM_INFO; ///@brief 智能分析总能力 typedef struct tagNET_TOTAL_CAP { EM_SCENE_CLASS_TYPE emClassType; // 业务大类 DWORD dwRuleTypes[MAX_ANALYSE_RULE_COUNT]; // 规则类型, 详见dhnetsdk.h中"智能分析事件类型" UINT nRuleNum; // 规则数量 UINT nMaxStreamNum; // 最多支持同时分析的视频流数目 UINT nNeedResources; // 该分析类型所需的算力 BYTE byReserved[1020]; // 保留字节 } NET_TOTAL_CAP; ///@brief 智能分析的算法版本信息 typedef struct tagNET_ANALYSE_CAPS_ALGORITHM { DWORD dwSize; // 结构体大小 NET_ALGORITHM_INFO stuAlgorithmInfos[MAX_ANALYSE_ALGORITHM_NUM]; // 算法版本信息 UINT nAlgorithmNum; // 算法个数 } NET_ANALYSE_CAPS_ALGORITHM; ///@brief 智能分析的总能力 typedef struct tagNET_ANALYSE_CAPS_TOTAL { DWORD dwSize; // 结构体大小 NET_TOTAL_CAP stuTotalCaps[MAX_ANALYSE_TOTALCAPS_NUM]; // 智能分析总能力 UINT nTotalCapsNum; // 智能分析总能力个数 UINT nTotalDecodeCaps; // 总解码能力,即总解码资源个数 UINT nTotalComputingCaps; // 总算力 UINT nSingleTaskComputingCaps; // 单任务最大算力 } NET_ANALYSE_CAPS_TOTAL; ///@brief 算法SDK信息 typedef struct tagNET_ALGORITHM_SDK_INFO { UINT nApiVersion; // 算法 api 头文件版本 UINT nCompiler; // 编译平台代号 char szSdkName[128]; // 算法sdk名称 char szSdkVersion[64]; // 算法sdk版本信息 BYTE byReserved[1024]; // 保留字节 } NET_ALGORITHM_SDK_INFO; ///@brief 分区打包类型 typedef enum tagEM_STORAGE_PACKET_TYPE { EM_STORAGE_PACKET_UNKNOWN, // 未知 EM_STORAGE_PACKET_PARTITION, // 分区方式 EM_STORAGE_PACKET_FILE, // 文件方式 EM_STORAGE_PACKET_DHOP, // DHOP方式 } EM_STORAGE_PACKET_TYPE; ///@brief 分区类型 typedef enum tagEM_ALGORITHM_PARTITION_TYPE { EM_ALGORITHM_PARTITION_UNKNOWN, // 未知 EM_ALGORITHM_PARTITION_EXT4, // ext4分区 EM_ALGORITHM_PARTITION_SUQSHFS, // squashfs 分区 EM_ALGORITHM_PARTITION_UBIFS, // ubifs 分区 } EM_ALGORITHM_PARTITION_TYPE; ///@brief 设备分区信息 typedef struct tagNET_ALGORITHM_DEV_STORAGE_INFO { EM_STORAGE_PACKET_TYPE emPakcetType; // 分区打包方式 /*以下信息当emPakcetType 为EM_STORAGE_PACKET_PARTITION 时有效*/ UINT nAddr; // 分区起始地址 UINT nSize; // 分区大小,单位byte EM_ALGORITHM_PARTITION_TYPE emPartitionType; // 分区类型 UINT nBlock; // 分区块大小,单位KB /*以上信息当emPakcetType 为EM_STORAGE_PACKET_PARTITION 时有效*/ BYTE byReserved[1020]; // 保留字节 } NET_ALGORITHM_DEV_STORAGE_INFO; ///@brief 算法构建SVN信息 typedef struct tagNET_ALGORITHM_SVN_INFO { char szAddr[512]; // svn地址 UINT nRevision; // svn版本号 BYTE byReserved[1020]; // 保留字节 } NET_ALGORITHM_SVN_INFO; ///@brief 算法构建信息 typedef struct tagNET_ALGORITHM_BUILD_INFO { NET_ALGORITHM_SVN_INFO stuSvnInfo; // 算法SVN信息 char szPackName[128]; // 升级包的名字 BYTE byReserved[896]; // 保留字节 } NET_ALGORITHM_BUILD_INFO; ///@brief 独立算法升级支持的AI方案信息 typedef struct tagNET_ALGORITHM_UPGRADE_AI_INFO { NET_ALGORITHM_SDK_INFO stuSdkInfo[32]; // 算法SDK信息 UINT nRetSdkNum; // 实际返回的算法sdk个数, 即stuSdkInfo数组的有效元素个数 BYTE byReserved[1020]; // 保留字节 } NET_ALGORITHM_UPGRADE_AI_INFO; ///@brief 算法独立升级能力 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE { DWORD dwSize; // 结构体大小 BOOL bSupportOnlyAlgorithmUpgrade; // 是否支持算法独立升级能力 UINT nMaxUpgradeAINum; // AI 方案最大个数, 由用户指定, 最大支持128 UINT nRetUpgradeAINum; // 实际返回的AI 方案个数, 即pstUpgradeAIInfo 数组的有效元素个数 NET_ALGORITHM_UPGRADE_AI_INFO *pstUpgradeAIInfo; // 独立算法升级支持的AI方案信息, 内存由用户申请和释放, 申请大小sizeof(NET_ALGORITHM_UPGRADE_AI_INFO)*nMaxUpgradeAINum UINT nRetStorageNum; // 实际返回的设备分区个数, 即stuStorageInfo 数组的有效元素个数 NET_ALGORITHM_DEV_STORAGE_INFO stuStorageInfos[16]; // 设备的分区信息 NET_ALGORITHM_BUILD_INFO stuBuildInfo; // 算法构建信息 } NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE; ///@brief 获取算法引擎平台信息 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_PLATFORM_INFO { DWORD dwSize; // 结构体大小 char szPlatform[32]; // 算法编译平台 char szEngine[32]; // 算法引擎 char szEngineVersion[32]; // 算法引擎版本 } NET_ANALYSE_CAPS_SUPPORT_PLATFORM_INFO; ///@brief 获取是否支持算法URL升级方式 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_ALGORITHM_URL_UPGRADE { DWORD dwSize; // 结构体大小 BOOL bSupportAlgorithmURLUpgrade; // 是否支持算法URL升级方式 } NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_URL_UPGRADE; ///@brief 获取是否支持外部进行智能任务调度 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_ANALYSE_TASK_MANAGER { DWORD dwSize; // 结构体大小 BOOL bSupporAnalyseTaskManager; // 是否支持外部进行智能任务调度 } NET_ANALYSE_CAPS_SUPPORT_ANALYSE_TASK_MANAGER; ///@brief 获取是否支持特征库下发 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_FEATURE_DB { DWORD dwSize; // 结构体大小 BOOL bSupporFeatureDB; // 是否支持特征库下发 } NET_ANALYSE_CAPS_SUPPORT_FEATURE_DB; ///@brief 算法Model信息 typedef struct tagNET_ALGORITHM_MODEL_INFO { char szName[256]; // 算法Model名称 char szVersion[256]; // 算法Model版本 char szReserved[1024]; // 保留字节 } NET_ALGORITHM_MODEL_INFO ; ///@brief 算法独立升级支持的AI方案信息 typedef struct tagNET_SUPPORT_UPGRADE_AI_TYPE_INFO { int nSdkInfoCount; // 算法SDK信息个数 NET_ALGORITHM_SDK_INFO stuSdkInfo[32]; // 算法SDK信息 int nModelInfoCount; // 算法Model信息个数 NET_ALGORITHM_MODEL_INFO stuModelInfo[64]; // 算法Model信息 char szReserved[1024]; // 保留字节 } NET_SUPPORT_UPGRADE_AI_TYPE_INFO; ///@brief 算法独立升级支持的AI方案信息 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_UPGRADE_AI_TYPE { DWORD dwSize; // 结构体大小 UINT nMaxNum; // 算法独立升级支持的AI 方案最大个数, 由用户指定, 最大支持128 UINT nRetNum; // 实际返回的AI 方案个数, 即pstUpgradeAIInfo 数组的有效元素个数 NET_SUPPORT_UPGRADE_AI_TYPE_INFO *pstuSupportUpgradeAITypeInfo; // 独立算法升级支持的AI方案信息, 内存由用户申请和释放, 申请大小sizeof(NET_SUPPORT_UPGRADE_AI_TYPE_INFO)*nMaxNum } NET_ANALYSE_CAPS_SUPPORT_UPGRADE_AI_TYPE; ///@brief 算法独立升级支持的AI方案信息 typedef struct tagNET_ANALYSE_CAPS_STORAGE { DWORD dwSize; // 结构体大小 UINT nStorageNum; // 实际返回的设备分区个数, 即stuStorageInfo 数组的有效元素个数 NET_ALGORITHM_DEV_STORAGE_INFO stuStorageInfos[16]; // 设备的分区信息 } NET_ANALYSE_CAPS_STORAGE; ///@brief 升级包打包环境的构建信息 typedef struct tagNET_ANALYSE_CAPS_BUILD_INFO { DWORD dwSize; // 结构体大小 NET_ALGORITHM_BUILD_INFO stuBuildInfo; // 算法独立升级支持的AI方案信息 } NET_ANALYSE_CAPS_BUILD_INFO; ///@brief 卸油区检测功能是否支持本地实现卸油 typedef struct tagNET_ANALYSE_CAPS_SUPPORT_UNLOAD_OIL_LOCAL_FUNC { DWORD dwSize; // 结构体大小 BOOL bSupportUnloadOilLocalFunc; // 是否本地实现卸油 }NET_ANALYSE_CAPS_SUPPORT_UNLOAD_OIL_LOCAL_FUNC; ///@brief 门体分区描述枚举 typedef enum tagEM_SOLUTION_ALGORITHM_TYPE { EM_ALGORITHM_UNKNOWN, // 未知 EM_ALGORITHM_OD_SOLUTION, // 目标检测算法 EM_ALGORITHM_OC_SOLUTION, // 图像多属性分类算法 EM_ALGORITHM_OD_OC_SOLUTION, // 检测及多属性分类混合算法 EM_ALGORITHM_BD_SOLUTION, // 视频行为分析算法 EM_ALGORITHM_OCR_SOLUTION, // 图像文本识别算法 EM_ALGORITHM_IR_SOLUTION, // 检索对比算法 }EM_SOLUTION_ALGORITHM_TYPE; ///@brief 获取设备支持的开放智能类型以及对应的AMCC号 typedef struct tagNET_AI_SOLUTION_LIST { DWORD dwSize; // 结构体大小 char szAMCC[128]; // AMCC号 EM_SOLUTION_ALGORITHM_TYPE emSolutionType; // 算法方案 }NET_AI_SOLUTION_LIST; ///@brief 获取设备支持的开放智能类型以及对应的AMCC号 typedef struct tagNET_ANALYSE_CAPS_AI_SOLUTION_LIST { DWORD dwSize; // 结构体大小 UINT nAISolutionNum; // 实际返回的设备支持的开放智能类型以及对应的AMCC号 个数, stuAISolutionList 数组的有效元素个数 NET_AI_SOLUTION_LIST stuAISolutionList[64]; // AMCC号 }NET_ANALYSE_CAPS_AI_SOLUTION_LIST; ///@brief 能力名字为空时的返回信息 typedef struct tagNET_ANALYSE_CAPS_NULL { DWORD dwSize; // 结构体大小 int nClassTypeNum; // 业务大类的有效个数 EM_SCENE_CLASS_TYPE emClassType[32]; // 业务大类 NET_TOTAL_CAP stuTotalCaps[MAX_ANALYSE_TOTALCAPS_NUM]; // 智能分析总能力 UINT nTotalCapsNum; // 智能分析总能力个数 } NET_ANALYSE_CAPS_NULL; ///@brief 智能分析服务能力类型 typedef enum tagEM_ANALYSE_CAPS_TYPE { EM_ANALYSE_CAPS_NULL = 0, // 表示能力名字为空时(capsName为NULL时), 对应输出结构体 NET_ANALYSE_CAPS_NULL EM_ANALYSE_CAPS_ALGORITHM = 1, // 算法版本, 对应输出结构体 NET_ANALYSE_CAPS_ALGORITHM EM_ANALYSE_CAPS_TOTALCAPS, // 智能分析总能力, 对应输出结构体 NET_ANALYSE_CAPS_TOTAL EM_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE, // 算法独立升级能力, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE EM_ANALYSE_CAPS_SUPPORT_PLATFORM_INFO, // 获取算法引擎平台信息, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_PLATFORM_INFO EM_ANALYSE_CAPS_SUPPORT_ALGORITHM_URL_UPGRADE, // 获取是否支持算法URL升级方式, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_URL_UPGRADE EM_ANALYSE_CAPS_SUPPORT_ANALYSE_TASK_MANAGER, // 获取是否支持外部进行智能任务调度, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_ANALYSE_TASK_MANAGER EM_ANALYSE_CAPS_SUPPORT_FEATURE_DB, // 获取是否支持特征库下发,对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_FEATURE_DB EM_ANALYSE_CAPS_SUPPORT_UPGRADE_AI_TYPE, // 算法独立升级支持的AI方案信息, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_UPGRADE_AI_TYPE EM_ANALYSE_CAPS_STORAGE, // 设备的分区信息, 对应输出结构体 NET_ANALYSE_CAPS_STORAGE EM_ANALYSE_CAPS_BUILD_INFO, // 升级包打包环境的构建信息, 对应输出结构体 NET_ANALYSE_CAPS_BUILD_INFO EM_ANALYSE_CAPS_SUPPORT_UNLOAD_OIL_LOCAL_FUNC, // 卸油区检测功能是否支持本地实现卸油,对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_UNLOAD_OIL_LOCAL_FUNC EM_ANALYSE_CAPS_AI_SOLUTION_LIST, // 获取设备支持的开放智能类型以及对应的AMCC号,对应输出结构体 NET_ANALYSE_CAPS_AI_SOLUTION_LIST } EM_ANALYSE_CAPS_TYPE; ///@brief 获取剩余智能分析资源入参 typedef struct tagNET_IN_REMAIN_ANAYLSE_RESOURCE { DWORD dwSize; // 结构体大小 }NET_IN_REMAIN_ANAYLSE_RESOURCE; ///@brief 获取剩余智能分析资源出参 typedef struct tagNET_OUT_REMAIN_ANAYLSE_RESOURCE { DWORD dwSize; // 结构体大小 UINT nRetRemainCapNum; // 返回的能力个数 NET_REMAIN_ANALYSE_CAPACITY stuRemainCapacities[32]; // 智能分析剩余能力 NET_REMAIN_ANALYSE_TOTAL_CAPACITY stuTotalCapacity[32]; // 可供任务调度的总的智能能力 UINT nTotalCapacityNum; // 可供任务调度的总的智能能力个数 UINT nRetRemainPictureCapNum; // 返回的能力个数 NET_REMAIN_PICTURE_ANALYSE_CAPACITY stuRemainPictureCapacities[32]; // 图片智能分析剩余能力 NET_REMAIN_PICTURE_ANALYSE_TOTAL_CAPACITY stuTotalPictureCapacity[32]; // 可供任务调度的总的图片智能能力 UINT nTotalPictureCapacityNum; // 可供任务调度的总的图片智能能力个数 int nFeatureMatchNum; // 特征比对能力个数 NET_FEATURE_MATCH stuFeatureMatch[32]; // 特征比对能力 }NET_OUT_REMAIN_ANAYLSE_RESOURCE; ///@brief 获取视频分析服务智能能力集, pstOutParam根据emCapsType的值取对应的结构体, pstOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAnalyseCaps(LLONG lLoginID, EM_ANALYSE_CAPS_TYPE emCapsType, void *pOutParam, int nWaitTime); ///@brief 添加智能分析任务, 输入参数pInParam的结构体类型根据emDataSourceType的值来决定, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddAnalyseTask(LLONG lLoginID, EM_DATA_SOURCE_TYPE emDataSourceType, void *pInParam, NET_OUT_ADD_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 修改智能分析任务, 输入参数pInParam的结构体类型根据emDataSourceType的值来决定, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyAnalyseTask(LLONG lLoginID, NET_IN_MODIFY_ANALYSE_TASK* pInParam, NET_OUT_MODIFY_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 添加轮询检测任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddPollingAnalyseTask(LLONG lLoginID, const NET_IN_ADD_POLLING_ANALYSE_TASK *pInParam, NET_OUT_ADD_POLLING_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 更新轮询检测任务规则 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpdatePollingAnalyseTask(LLONG lLoginID, const NET_IN_UPDATE_POLLING_ANALYSE_TASK *pInParam, NET_OUT_UPDATE_POLLING_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 启动智能分析任务, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartAnalyseTask(LLONG lLoginID, NET_IN_START_ANALYSE_TASK *pInParam, NET_OUT_START_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 删除(停止)智能分析任务, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveAnalyseTask(LLONG lLoginID, NET_IN_REMOVE_ANALYSE_TASK *pInParam, NET_OUT_REMOVE_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 查找智能分析任务信息, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindAnalyseTask(LLONG lLoginID, NET_IN_FIND_ANALYSE_TASK *pInParam, NET_OUT_FIND_ANALYSE_TASK *pOutParam, int nWaitTime); ///@brief 推送智能分析图片文件,当CLIENT_AddAnalyseTask的数据源类型emDataSourceType为 EM_DATA_SOURCE_PUSH_PICFILE 时使用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PushAnalysePictureFile(LLONG lLoginID, NET_IN_PUSH_ANALYSE_PICTURE_FILE *pInParam, NET_OUT_PUSH_ANALYSE_PICTURE_FILE *pOutParam, int nWaitTime); ///@brief 推送智能分析图片文件和规则信息,当CLIENT_AddAnalyseTask的数据源类型emDataSourceType为 EM_DATA_SOURCE_PUSH_PICFILE_BYRULE 时使用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PushAnalysePictureFileByRule(LLONG lLoginID, NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE *pInParam, NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE *pOutParam, int nWaitTime); ///@brief 订阅智能分析任务状态, pInParam 资源由用户申请和释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachAnalyseTaskState(LLONG lLoginID, NET_IN_ATTACH_ANALYSE_TASK_STATE *pInParam, int nWaitTime); ///@brief 取消订阅智能分析任务状态, lAttachHandle 为 CLIENT_AttachAnalyseTaskState接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachAnalyseTaskState(LLONG lAttachHandle); ///@brief 订阅智能分析结果, pInParam 资源由用户申请和释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachAnalyseTaskResult(LLONG lLoginID, NET_IN_ATTACH_ANALYSE_RESULT *pInParam, int nWaitTime); ///@brief 取消订阅智能分析结果, lAttachHandle 为 CLIENT_AttachAnalyseTaskResult接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachAnalyseTaskResult(LLONG lAttachHandle); ///@brief 订阅剩余智能分析资源接口, pstInParam资源由用户申请和释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRemainAnalyseResource(LLONG lLoginID, NET_IN_ATTACH_REMAIN_ANALYSE_RESOURCE *pInParam, int nWaitTime); ///@brief 取消订阅智能分析结果, lAttachHandle 为 CLIENT_AttachAnalyseTaskResult接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRemainAnalyseResource(LLONG lAttachHandle); ///@brief 获取剩余智能分析资源 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemainAnalyseResource(LLONG lLoginID, const NET_IN_REMAIN_ANAYLSE_RESOURCE* pInParam, NET_OUT_REMAIN_ANAYLSE_RESOURCE *pOutParam, int nWaitTime); ///@brief 设置任务的自定义数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetAnalyseTaskCustomData(LLONG lLoginID, const NET_IN_SET_ANALYSE_TASK_CUSTOM_DATA *pInParam, NET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA *pOutParam, const int nWaitTime); ///@brief 全局布控 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PutAnalyseDisposition(LLONG lLoginID, const NET_IN_PUT_ANALYSE_DISPOSITION *pInParam, NET_OUT_PUT_ANALYSE_DISPOSITION *pOutParam, const int nWaitTime); ///@brief 分析规则 typedef struct tagNET_UPDATE_ANALYSE_TASK_RULES { EM_SCENE_CLASS_TYPE emClassType; // 分析大类类型 DWORD dwRuleType; // 规则类型, 详见 NET_ANALYSE_RULE_INFO 结构体dwRuleType字段注释 void* pRuleConfig; // 规则配置, 具体结构体类型根据dwRuleType来确定 int nObjectTypeNum; // 检测的物体类型个数 char szObjectTypes[16][16]; // 检测的物体类型列表 char szReserved[764]; // 保留字节 }NET_UPDATE_ANALYSE_TASK_RULES; ///@brief CLIENT_UpdateAnalyseTaskRules 输入参数 typedef struct tagNET_IN_UPDATE_ANALYSE_TASK_RULES { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID int nRulesNum; // 分析规则个数 NET_UPDATE_ANALYSE_TASK_RULES stuRules[16]; // 分析规则 }NET_IN_UPDATE_ANALYSE_TASK_RULES; ///@brief CLIENT_UpdateAnalyseTaskRules 输出参数 typedef struct tagNET_OUT_UPDATE_ANALYSE_TASK_RULES { DWORD dwSize; // 结构体大小 }NET_OUT_UPDATE_ANALYSE_TASK_RULES; ///@brief 更新任务规则接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UpdateAnalyseTaskRules(LLONG lLoginID, const NET_IN_UPDATE_ANALYSE_TASK_RULES* pInParam, NET_OUT_UPDATE_ANALYSE_TASK_RULES *pOutParam, const int nWaitTime); ///@brief 平台下发轮询配置信息 typedef struct tagNET_SET_POLLING_CONFIG_INFO { BOOL bEnable; // 使能开关 UINT nChannel; // 通道号 char szGlobalType[64]; // 全局配置 int nRulelTypeCnt; // 规则配置个数 char szReserved1[4]; // 保留字节 char szRulelType[16][64]; // 规则配置 char szGlobalTypeList[6][64];// 全局配置列表, 扩展支持单个通道多种智能的开启,和szGlobalType二选一使能,如果szGlobalTypeList 里面有场景内容则优先使用 int nGlobalTypeListNum; // 全局配置列表个数 char szReserved[636]; // 保留字节 } NET_SET_POLLING_CONFIG_INFO; ///@brief 平台下发轮询配置入参 typedef struct tagNET_IN_SET_POLLING_CONFIG { DWORD dwSize; // 结构体大小 UINT nConfigCnt; // 平台下发轮询配置个数 NET_SET_POLLING_CONFIG_INFO stuConfigInfos[256]; // 平台下发轮询配置信息 }NET_IN_SET_POLLING_CONFIG; ///@brief 平台下发轮询配置出参 typedef struct tagNET_OUT_SET_POLLING_CONFIG { DWORD dwSize; // 结构体大小 }NET_OUT_SET_POLLING_CONFIG; ///@brief 平台下发轮询配置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPollingConfig(LLONG lLoginID, const NET_IN_SET_POLLING_CONFIG *pInParam, NET_OUT_SET_POLLING_CONFIG *pOutParam, const int nWaitTime); ///@brief 分区打包类型 typedef enum tagEM_ALGO_MATCH_TYPE_ENUM { EM_ALGO_MATCH_UNKNOWN, // 未知 EM_ALGO_MATCH_ALGORITHM_SHELF, // 算法货架 EM_ALGO_MATCH_ALGORITHM_PARTITION, // 算法分区 }EM_ALGO_MATCH_TYPE_ENUM; ///@brief 属性值的索引和名称的映射表 typedef struct tagNET_ATTR_MAP { char szValue[128]; // 属性值名称 int nKey; // 属性值索引,方案内唯一 char szReserved[252]; // 保留字节 }NET_ATTR_MAP; ///@brief 属性能力集,按目标类型列举 typedef struct tagNET_ALGO_PACK_MANAGER_ATTRIBUTE { char szAttrName[128]; // 属性label名称 int nAttrID; // 属性label索引,方案内唯一 UINT nAttrMapNum; // 设备实际下发的属性值的索引和名称的映射表 NET_ATTR_MAP stuAttrMap[256]; // 属性值的索引和名称的映射表 char szReserved[256]; // 保留字节 }NET_ALGO_PACK_MANAGER_ATTRIBUTE; ///@brief 开放算法的目标组合 typedef struct tagNET_ALGO_PACK_MANAGER_OBJECTS { char szLabel[128]; // 目标类型名称s int nKey; // 目标类型索引,方案内唯一 UINT nAttributeNum; // 设备实际下发的属性能力集 NET_ALGO_PACK_MANAGER_ATTRIBUTE stuAttribute[256]; // 属性能力集,按目标类型列举 char szReserved[256]; // 保留字节 }NET_ALGO_PACK_MANAGER_OBJECTS; ///@brief 算法信息 typedef struct tagNET_ALGO_TEMPLATE_CFG { char szName[128]; // 开放算法名称 char szType[128]; // 开放算法的基础规则类型 char szAlgoID[128]; // 算法ID int nAlarmId; // 自定义报警ID UINT nObjectsNum; // 设备实际下发的开放算法的目标组合 NET_ALGO_PACK_MANAGER_OBJECTS *pstuObjects; // 开放算法的目标组合 char szReserved[256]; // 保留字节 }NET_ALGO_TEMPLATE_CFG; ///@brief CLIENT_ImportByUrl 入参 typedef struct tagNET_IN_IMPORT_BY_URL { DWORD dwSize; // 结构体大小 BYTE szReserved[4]; char szUrl[512]; // 下载url地址 char szCheckSum[128]; // 模型包校验值,MD5 char szAlgoPackName[64]; // 算法包名称 EM_SOLUTION_ALGORITHM_TYPE emAlgoSolution; // 算法方案 UINT nAlgoTemplateCfgNum; // 设备实际下发的算法信息个数 NET_ALGO_TEMPLATE_CFG *pstuAlgoTemplateCfg; // 算法信息 }NET_IN_IMPORT_BY_URL; ///@brief CLIENT_ImportByUrl 出参 typedef struct tagNET_OUT_IMPORT_BY_URL { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID }NET_OUT_IMPORT_BY_URL; ///@brief 通过url下载模型 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ImportByUrl(LLONG lLoginID, const NET_IN_IMPORT_BY_URL *pInParam, NET_OUT_IMPORT_BY_URL *pOutParam, const int nWaitTime); ///@brief CLIENT_CancelImport 入参 typedef struct tagNET_IN_CANCEL_IMPORT { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID }NET_IN_CANCEL_IMPORT; ///@brief CLIENT_CancelImport 出参 typedef struct tagNET_OUT_CANCEL_IMPORT { DWORD dwSize; // 结构体大小 }NET_OUT_CANCEL_IMPORT; ///@brief 删除模型下发任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CancelImport(LLONG lLoginID, const NET_IN_CANCEL_IMPORT *pInParam, NET_OUT_CANCEL_IMPORT *pOutParam, const int nWaitTime); ///@brief 校验码验证结果 typedef enum tagEM_FAILED_CODE { EM_FAILED_CODE_UNKNOWN=-1, // 未知 EM_FAILED_CODE_NO_ERROR, // 无错误 EM_FAILED_CODE_FAILED_TO_DOWNLOAD_THE_MODEL, // 下载模型失败 EM_FAILED_CODE_STORAGE_SPACE_IS_INSUFFICIENT, // 存储空间不足 EM_FAILED_CODE_FILE_IS_TOO_LARGE, // 文件太大 EM_FAILED_CODE_MODEL_PACKET_HEADER_ANALYSIS_FAILS, // 模型包头解析失败 EM_FAILED_CODE_MODEL_FORMAT_VERIFICATION_ERROR, // 模型格式校验错误 EM_FAILED_CODE_HARDWARE_PLATFORM_VERIFICATION_FAILS, // 硬件平台校验失败 EM_FAILED_CODE_DEVICE_DOES_NOT_SUPPORT_MODEL_DELIVERY, // 设备不支持模型下发 EM_FAILED_CODE_CURRENT_DEVICE_MODE_IS_NOT_SUPPORTED, // 当前设备模式不支持 EM_FAILED_CODE_MODEL_NAME_ALREADY_EXISTS, // 模型名称已存在 EM_FAILED_CODE_EXCEEDS_THE_UPPER_LIMIT, // 算法个数超过最大限制 EM_FAILED_CODE_OTHER_ERRORS, // 其他错误 }EM_FAILED_CODE; ///@brief 分析结果信息 typedef struct tagDEV_ALGO_PACK_RESULT_INFO { UINT nTaskID; // 任务ID char szState[32]; // 下发状态 UINT nProgress; // 下载进度 EM_FAILED_CODE emFailedCode; // 错误码 char szResvered[256]; // 保留字节 }DEV_ALGO_PACK_RESULT_INFO; ///@brief 订阅的分析结果 typedef struct tagNET_NOTIFY_ALGO_PACK_RESULT_INFO { int nInfosNum; // 分析结果信息有效个数 DEV_ALGO_PACK_RESULT_INFO stuInfos[32]; // 分析结果信息 char szResvered[1024]; // 保留字节 }NET_NOTIFY_ALGO_PACK_RESULT_INFO; ///@brief 模型下载分析结果订阅回调函数原型, lAlgoPackResultHandle 为 CLIENT_AttachImportResult 接口的返回值 ///@param[out] lAlgoPackResultHandle 订阅句柄 ///@param[out] pstuSCADADataNotifyInfo 订阅的分析结果 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyAlgoPackResult)(LLONG lAlgoPackResultHandle, NET_NOTIFY_ALGO_PACK_RESULT_INFO* pstuAlgoPackResultNotifyInfo, LDWORD dwUser); ///@brief CLIENT_AttachImportResult 接口入参 typedef struct tagNET_IN_ALGO_PACK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTaskIDNum; // 设备实际下发的TaskID个数 UINT nTaskID[64]; // 订阅的TaskID fNotifyAlgoPackResult cbfNotifyAlgoPackResult; // 回调函数, 设备传回的分析结果 LDWORD dwUser; // 用户自定义参数 }NET_IN_ALGO_PACK_RESULT_INFO; ///@brief CLIENT_AttachImportResult 接口出参 typedef struct tagNET_OUT_ALGO_PACK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ALGO_PACK_RESULT_INFO; ///@brief 模型下载分析结果订阅 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachImportResult(LLONG lLoginID, NET_IN_ALGO_PACK_RESULT_INFO* pstInParam, NET_OUT_ALGO_PACK_RESULT_INFO* pstOutParam, int nWaitTime); ///@brief 模型下载分析结果退订 ///@param[in] lAlgoPackResultHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachImportResult(LLONG lAlgoPackResultHandle); ///@brief CLIENT_GetAlgMatchInfo 入参 typedef struct tagNET_IN_GET_ALG_MATCH_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_ALG_MATCH_INFO; ///@brief CLIENT_GetAlgMatchInfo 出参 typedef struct tagNET_OUT_GET_ALG_MATCH_INFO { DWORD dwSize; // 结构体大小 EM_ALGO_MATCH_TYPE_ENUM emMatchType; // 匹配的算法方案类型 char szInfo[4096]; // 用于专业算法包升级前匹配使用的版本信息 }NET_OUT_GET_ALG_MATCH_INFO; ///@brief 获取专业算法版本信息表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAlgMatchInfo(LLONG lLoginID, const NET_IN_GET_ALG_MATCH_INFO *pInParam, NET_OUT_GET_ALG_MATCH_INFO *pOutParam, const int nWaitTime); ///@brief CLIENT_GetChannelState 入参 typedef struct tagNET_IN_GET_CHANNEL_STATE { DWORD dwSize; // 结构体大小 int nChannelNum; // 视频通道数组个数 UINT nChannel[256]; // 视频通道数组,当该字段不存在或为空时代表获取所有通道 }NET_IN_GET_CHANNEL_STATE; ///@brief 已开启的智能规则信息 typedef struct tagNET_INTELLI_INFO { int nTypeNum; // 智能规则类型个数 char szType[16][64]; // 智能规则类型 char szClass[64]; // 智能场景类型 char szReserved[516]; // 保留字节 }NET_INTELLI_INFO; ///@brief 智能业务状态信息(已废弃,用NET_CHANNEL_STATE_INFO_EX替代) typedef struct tagNET_CHANNEL_STATE_INFO { UINT nChannel; // 通道号 int nIntelliInfoNum; // 已开启的智能规则信息个数 NET_INTELLI_INFO stuIntelliInfo[16]; // 已开启的智能规则信息 char szReserved[512]; // 保留字节 }NET_CHANNEL_STATE_INFO; ///@brief 关闭的智能规则信息 typedef struct tagNET_CHANNEL_STATE_INFO_EX { UINT nChannel; // 通道号 int nIntelliInfoNum; // 已开启的智能规则信息个数 NET_INTELLI_INFO stuIntelliInfo[16]; // 已开启的智能规则信息 int nClosedIntelliInfoNum; // 已关闭的智能规则信息个数 NET_INTELLI_INFO stuClosedIntelliInfo[64]; // 已关闭的智能规则信息 char szReserved[512]; // 保留字节 }NET_CHANNEL_STATE_INFO_EX; ///@brief CLIENT_GetChannelState 出参 typedef struct tagNET_OUT_GET_CHANNEL_STATE { DWORD dwSize; // 结构体大小 int nStateNum; // 智能业务状态信息实际个数 int nMaxStateNum; // 用户申请智能业务状态信息最大个数 char szReserved[4]; // 字节对齐 NET_CHANNEL_STATE_INFO *pstuState; // 智能业务状态信息(已废弃,可不用) 需要用户申请内存空间 大小 sizeof(NET_CHANNEL_STATE_INFO)*nMaxStateNum NET_CHANNEL_STATE_INFO_EX *pstuStateEx; // 智能业务状态信息扩展 需要用户申请内存空间 大小 sizeof(NET_CHANNEL_STATE_INFO_EX)*nMaxStateNum }NET_OUT_GET_CHANNEL_STATE; ///@brief 按通道获取设备智能业务的运行状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChannelState(LLONG lLoginID, const NET_IN_GET_CHANNEL_STATE *pstuInParam, NET_OUT_GET_CHANNEL_STATE *pstuOutParam, int nWaitTime); ///@brief 特征库信息 typedef struct tagNET_LOAD_FEATURE_DB_INFO { char szShardID[64]; // 分片ID BYTE byReserved[512]; // 保留字节 } NET_LOAD_FEATURE_DB_INFO; ///@brief 特征值类型 typedef enum tagEM_LOAD_FEATURE_TYPE { EM_LOAD_FEATURE_TYPE_UNKNOWN, // 未知 EM_LOAD_FEATURE_TYPE_FACE, // 目标特征 EM_LOAD_FEATURE_TYPE_OBJECT, // 结构化特征 EM_LOAD_FEATURE_TYPE_VEHICLE, // 车辆特征 } EM_LOAD_FEATURE_TYPE; ///@brief 特征库列表 typedef struct tagNET_LOAD_FEATURE_DB_LIST { char szRequestID[64]; // 请求ID char szRepositoryId[64]; // 加载库ID EM_REPOSITORY_TYPE emRepositoryType; // 特征库类型 int nFeatureDBInfoNum; // 特征库数量 NET_LOAD_FEATURE_DB_INFO stuFeatureDBInfo[32]; // 特征库信息 char szPfurl[256]; // 特征库请求地址 EM_LOAD_FEATURE_TYPE emFeatureType; // 特征类型 BYTE byReserved[1024]; // 保留字节 } NET_LOAD_FEATURE_DB_LIST; ///@brief CLIENT_LoadFeatureRepository 入参 typedef struct tagNET_IN_LOAD_FEATURE_REPOSITORY { DWORD dwSize; // 结构体大小 NET_LOAD_FEATURE_DB_LIST stuFeatureDB[32]; // 特征值信息 int nFeatureDBNum; // 特征值信息个数 } NET_IN_LOAD_FEATURE_REPOSITORY; ///@brief CLIENT_LoadFeatureRepository 出参 typedef struct tagNET_OUT_LOAD_FEATURE_REPOSITORY { DWORD dwSize; // 结构体大小 } NET_OUT_LOAD_FEATURE_REPOSITORY; ///@brief 加载特征值库 CLIENT_NET_API BOOL CALL_METHOD CLIENT_LoadFeatureRepository(LLONG lLoginID, const NET_IN_LOAD_FEATURE_REPOSITORY *pInParam, NET_OUT_LOAD_FEATURE_REPOSITORY *pOutParam, const int nWaitTime); ///@brief 特征库列表 typedef struct tagNET_UNLOAD_FEATURE_DB_LIST { char szRepositoryId[64]; // 特征库ID char szShardID[32][64]; // 分片ID int nShardIDNum; // 分片ID数量 EM_REPOSITORY_TYPE emRepositoryType; // 加载特征库类型 BYTE byReserved[1024]; // 保留字节 } NET_UNLOAD_FEATURE_DB_LIST; ///@brief CLIENT_UnLoadFeatureRepository 入参 typedef struct tagNET_IN_UNLOAD_FEATURE_REPOSITORY { DWORD dwSize; // 结构体大小 NET_UNLOAD_FEATURE_DB_LIST stuFeatureDB[32]; // 特征值信息 int nFeatureDBNum; // 特征值信息个数 } NET_IN_UNLOAD_FEATURE_REPOSITORY; ///@brief CLIENT_UnLoadFeatureRepository 出参 typedef struct tagNET_OUT_UNLOAD_FEATURE_REPOSITORY { DWORD dwSize; // 结构体大小 } NET_OUT_UNLOAD_FEATURE_REPOSITORY; ///@brief 卸载特征值库 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UnLoadFeatureRepository(LLONG lLoginID, const NET_IN_UNLOAD_FEATURE_REPOSITORY *pInParam, NET_OUT_UNLOAD_FEATURE_REPOSITORY *pOutParam, const int nWaitTime); ///@brief 结构化特征区分子类型 typedef enum tagEM_STRUCTURED_FEATURE_SUB_TYPE { EM_STRUCTURED_FEATURE_SUB_TYPE_UNKNOWN, // 未知 EM_STRUCTURED_FEATURE_SUB_TYPE_FACE, // 目标 EM_STRUCTURED_FEATURE_SUB_TYPE_HUMAN, // 人体 EM_STRUCTURED_FEATURE_SUB_TYPE_MOTOR = 4, // 机动车 EM_STRUCTURED_FEATURE_SUB_TYPE_NONMOTOR = 8, // 非机动车 } EM_STRUCTURED_FEATURE_SUB_TYPE; ///@brief 特征信息列表 typedef struct tagNET_ADD_FEATURE_DB_LIST { char szRepositoryID[64]; // 特征库ID char szFeatureID[64]; // 特征ID EM_REPOSITORY_TYPE emRepositoryType; // 库类型 char szShardID[64]; // 分片ID TP_U64 nCapTime; // 抓拍时间 EM_STRUCTURED_FEATURE_SUB_TYPE emObjectSubType; // 结构化特征区分子类型 char* pszFeature; // Base64裸特征 int nFeatureLen; // Base64裸特征长度 char szAlgorithmVersion[32]; // 特征版本号 char szVendor[32]; // 厂商 可能改枚举 BYTE byReserved[1024]; // 保留字节 } NET_ADD_FEATURE_DB_LIST; ///@brief CLIENT_FeatureDBAddFeature 入参 typedef struct tagNET_IN_ADD_FEATURE { DWORD dwSize; // 结构体大小 int nFeatureDBNum; // 特征值信息个数 NET_ADD_FEATURE_DB_LIST stuFeatureDB[32]; // 特征值信息 } NET_IN_ADD_FEATURE; ///@brief CLIENT_FeatureDBAddFeature 出参 typedef struct tagNET_OUT_ADD_FEATURE { DWORD dwSize; // 结构体大小 } NET_OUT_ADD_FEATURE; ///@brief 为指定特征库添加特征 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FeatureDBAddFeature(LLONG lLoginID, const NET_IN_ADD_FEATURE *pInParam, NET_OUT_ADD_FEATURE *pOutParam, const int nWaitTime); ///@brief 特征库信息列表 typedef struct tagNET_DELETE_FEATURE_DB_LIST { char szRepositoryID[64]; // 库ID char szFeatureID[64]; // 特征ID char szShardID[64]; // 分片ID BYTE byReserved[512]; // 保留字节 } NET_DELETE_FEATURE_DB_LIST; ///@brief CLIENT_FeatureDBDeleteFeature 入参 typedef struct tagNET_IN_DELETE_FEATURE { DWORD dwSize; // 结构体大小 int nFeatureDBNum; // 特征值信息个数 NET_DELETE_FEATURE_DB_LIST stuFeatureDB[32]; // 特征值信息 } NET_IN_DELETE_FEATURE; ///@brief CLIENT_FeatureDBDeleteFeature 出参 typedef struct tagNET_OUT_DELETE_FEATURE { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_FEATURE; ///@brief 删除设备上特征库中的特征 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FeatureDBDeleteFeature(LLONG lLoginID, const NET_IN_DELETE_FEATURE *pInParam, NET_OUT_DELETE_FEATURE *pOutParam, const int nWaitTime); ///@brief 下载状态 typedef enum tagEM_FEATUREDB_TASK_STATE_TYPE { EM_FEATUREDB_TASK_STATE_TYPE_UNKNOWN, // 未知 EM_FEATUREDB_TASK_STATE_TYPE_IDLE, // 未运行 EM_FEATUREDB_TASK_STATE_TYPE_DOWNLOADING, // 下载中 EM_FEATUREDB_TASK_STATE_TYPE_FINISH, // 正常完成 EM_FEATUREDB_TASK_STATE_TYPE_ERROR, // 下载失败 } EM_FEATUREDB_TASK_STATE_TYPE; ///@brief 下载错误码 typedef enum tagEM_FEATUREDB_TASK_ERROR_CODE { EM_FEATUREDB_TASK_ERROR_CODE_UNKNOWN, // 未知 EM_FEATUREDB_TASK_ERROR_CODE_OVERLIMIT, // 超过库的最大限制 } EM_FEATUREDB_TASK_ERROR_CODE; ///@brief 特征库信息 typedef struct tagNET_FEATUREDB_TASK_REPOSITORY_INFO { char szShardID[64]; // 分片ID BYTE byReserved[512]; // 保留字节 } NET_FEATUREDB_TASK_REPOSITORY_INFO; ///@brief 特征库下载任务状态信息 typedef struct tagNET_FEATUREDB_TASK_STATE { char szRequestID[64]; // 请求ID char szRepositoryID[64]; // 库ID EM_REPOSITORY_TYPE emRepositoryType; // 特征库类型 int nRepositoryInfoNum; // 特征库信息个数 NET_FEATUREDB_TASK_REPOSITORY_INFO stuRepositoryInfo[32]; // 特征库信息 EM_FEATUREDB_TASK_STATE_TYPE emTaskState; // 下载状态 UINT nCurrentFeatureCount; // 当前已经加载特征值数 UINT nFailedFeatureCount; // 当前加载失败的特征值数 EM_FEATUREDB_TASK_ERROR_CODE emError; // 错误码,emTaskState为EM_FEATUREDB_TASK_STATE_TYPE_ERROR时填写改字段 BYTE byReserved[512]; // 保留字节 } NET_FEATUREDB_TASK_STATE; ///@brief 加载特征库状态回调信息 typedef struct tagNET_CB_FEATUREDB_STATE_INFO { NET_FEATUREDB_TASK_STATE stuTaskState[32]; // 任务状态 int nTaskStateNum; // 任务状态个数 BYTE bReserved[2048]; // 保留字段 } NET_CB_FEATUREDB_STATE_INFO; ///@brief 加载特征库状态回调函数,lAttachHandle为CLIENT_AttachFeatureDBLoadingState 返回的句柄 typedef int (CALLBACK *fFeatureDBStateCallBack)(LLONG lAttachHandle, NET_CB_FEATUREDB_STATE_INFO *pstFeatureDBStateInfo, LDWORD dwUser); ///@brief CLIENT_AttachFeatureDBLoadingState 入参 typedef struct tagNET_IN_ATTACH_FEATUREDB_STATE { DWORD dwSize; // 结构体大小 BYTE bReserved1[4]; // 字节对齐 fFeatureDBStateCallBack cbFeatureDBState; // 智能分析任务状态订阅函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_FEATUREDB_STATE; ///@brief CLIENT_AttachFeatureDBLoadingState 出参 typedef struct tagNET_OUT_ATTACH_FEATUREDB_STATE { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_FEATUREDB_STATE; ///@brief 订阅加载特征库状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachFeatureDBLoadingState(LLONG lLoginID, const NET_IN_ATTACH_FEATUREDB_STATE *pInParam, NET_OUT_ATTACH_FEATUREDB_STATE *pOutParam, const int nWaitTime); ///@brief 取消订阅加载特征值状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachFeatureDBLoadingState(LLONG lAttachHandle); ///@brief CLIENT_EnableIntelliFrame 入参 typedef struct tagNET_IN_ENABLE_INTELLIFRAME { DWORD dwSize; // 结构体大小 BOOL bEnable; // 智能帧属性使能,true开启,false关闭 int nTaskID; // 操作任务的taskId }NET_IN_ENABLE_INTELLIFRAME; ///@brief CLIENT_EnableIntelliFrame 出参 typedef struct tagNET_OUT_ENABLE_INTELLIFRAME { DWORD dwSize; // 结构体大小 }NET_OUT_ENABLE_INTELLIFRAME; ///@brief 开启智能帧属性使能 CLIENT_NET_API BOOL CALL_METHOD CLIENT_EnableIntelliFrame(LLONG lLoginID,const NET_IN_ENABLE_INTELLIFRAME *pInParam, NET_OUT_ENABLE_INTELLIFRAME *pOutParam, const int nWaitTime); ///@brief 特征值信息 typedef struct tagNET_SEARCH_FEATUREDB_FEATURE_DATA_INFO { char* pszFeatureData; // Base64裸特征数据 int nFeatureDataLen; // Base64裸特征数据长度 char szAlgorithmVersion[64]; // 特征值版本号 char szVendor[64]; // 特征提取算法厂商编码 BYTE bReserved[512]; // 保留字段 }NET_SEARCH_FEATUREDB_FEATURE_DATA_INFO; ///@brief 特征检索信息 typedef struct tagNET_SEARCH_FEATUREDB_RETRIEVAL_MESSAGES { char RequestID[64]; // 请求ID NET_SEARCH_FEATUREDB_FEATURE_DATA_INFO stuFeatureDataInfo[32]; // 特征值信息 int nFeatureDataInfoNum; // 特征值信息个数 BYTE bReserved[512]; // 保留字段 }NET_SEARCH_FEATUREDB_RETRIEVAL_MESSAGES; ///@brief 搜图方式 typedef enum tagEM_SEARCH_FEATUREDB_MULTIMERGE_RESULT { EM_SEARCH_FEATUREDB_MULTIMERGE_RESULT_BATCH, // 批量以图搜图 EM_SEARCH_FEATUREDB_MULTIMERGE_RESULT_MULTIANGLE, // 多角度图搜 } EM_SEARCH_FEATUREDB_MULTIMERGE_RESULT; ///@brief CLIENT_SearchFeatureDB 入参 typedef struct tagNET_IN_SEARCH_FEATUREDB { DWORD dwSize; // 结构体大小 NET_SEARCH_FEATUREDB_RETRIEVAL_MESSAGES stuRetrievalMessages[32]; // 特征检索信息 int nRetrievalMessagesNum; // 特征检索信息个数 int nThreshold; // 阈值,[0,100],默认值是80 char szRepositoryID[2048][64]; // 特征库ID int nRepositoryIDNum; // 特征库ID个数 BYTE bReserved1[4]; // 字节对齐 UINT nStartTime; // 特征值对应图片的抓拍起始时间,抓拍库才有效, (不写和值为-1都表示为空) UINT nEndTime; // 特征值对应图片的抓拍结束时间,抓拍库才有效, (不写和值为-1都表示为空) int nTopN; // 返回结果总数(最大1000),默认500 int nObjectSubType; // 结构化特征区分子类型 1表示目标 2表示人体 4表示机动车 8表示非机动车,结构化必填,其他选填; EM_SEARCH_FEATUREDB_MULTIMERGE_RESULT emMultiMergeResult; // 搜图方式 }NET_IN_SEARCH_FEATUREDB; ///@brief 特征比对结果 typedef struct tagNET_SEARCH_FEATUREDB_RETRIEVAL_SINGLE_RESULT { char szFeatureID[64]; // 特征ID char szRepositoryID[64]; // 库ID int nSimilarity; // 相似度,[0,100] int nCapTime; // 特征值对应图片的抓拍时间,抓拍库才有效, (不写和值为-1都表示为空) BYTE bReserved[512]; // 保留字段 }NET_SEARCH_FEATUREDB_RETRIEVAL_SINGLE_RESULT; ///@brief 进度信息 typedef struct tagNET_SEARCH_FEATUREDB_PROCESS_INFO { char szRepositoryID[64]; // 库ID int nTotal; // 已经完成比对特征值个数 BYTE bReserved[508]; // 保留字段 }NET_SEARCH_FEATUREDB_PROCESS_INFO; ///@brief 特征检索结果 typedef struct tagNET_SEARCH_FEATUREDB_RESULT { char szRequestID[64]; // 请求ID int nReturnCode; // 0成功,1失败 int nErrorCode; // 1:算子繁忙;2:特征非法3:特征版本号为空4:库不存在 char szErrorMessage[64]; // 错误信息字符串 NET_SEARCH_FEATUREDB_RETRIEVAL_SINGLE_RESULT stuRetrievalSingleResults[1000]; // 特征比对结果集合 int nRetrievalSingleResultsNum; // 特征比对结果集合个数 int nProcessInfoNum; // 比对进度个数 NET_SEARCH_FEATUREDB_PROCESS_INFO stuProcessInfo[32]; // 比对进度 BYTE bReserved[512]; // 保留字段 }NET_SEARCH_FEATUREDB_RESULT; ///@brief CLIENT_SearchFeatureDB 出参 typedef struct tagNET_OUT_SEARCH_FEATUREDB { DWORD dwSize; // 结构体大小 NET_SEARCH_FEATUREDB_RESULT stuResults[32]; // 查询输出参数 int nResultsNum; // 查询输出参数个数 }NET_OUT_SEARCH_FEATUREDB; ///@brief 特征库检索 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SearchFeatureDB(LLONG lLoginID,const NET_IN_SEARCH_FEATUREDB *pInParam, NET_OUT_SEARCH_FEATUREDB *pOutParam, const int nWaitTime); ///@brief CLIENT_GetDevCaps NET_ANALYSE_TASK_MANAGER_CAPS 入参 typedef struct tagNET_IN_ANALYSE_TASK_MANAGER_CAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_ANALYSE_TASK_MANAGER_CAPS_INFO; ///@brief 能力支持的智能分析规则信息 typedef struct tagNET_ANALYSE_RULE_CAPS { EM_SCENE_CLASS_TYPE emClassType; // 分析大类类型 int nRuleTypeNum; // 规则类型个数 DWORD dwRuleTypes[32]; // 规则类型, 详见dhnetsdk.h中"智能分析事件类型" // EVENT_IVS_FACEANALYSIS(目标分析) // EVENT_IVS_NONMOTORDETECT(非机动车) // EVENT_IVS_VEHICLEDETECT(机动车) // EVENT_IVS_HUMANTRAIT(人体) // EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测) // EVENT_IVS_WORKCLOTHES_DETECT(工装检测) // EVENT_IVS_WORKSTATDETECTION(作业统计) // EVENT_IVS_CROSSLINEDETECTION(警戒线) // EVENT_IVS_CROSSREGIONDETECTION(警戒区) // EVENT_IVS_FEATURE_ABSTRACT(特征提取) // EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件) // EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件) // EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件) // EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件) // EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件) // EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件) // EVENT_IVS_BANNER_DETECTION(拉横幅检测事件) // EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房衣着检测事件) // EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件) // EVENT_IVS_FLOATINGOBJECT_DETECTION(漂浮物检测事件) // EVENT_IVS_RIOTERDETECTION (人群聚集) // EVENT_IVS_LEFTDETECTION (物品遗留事件) // EVENT_IVS_PARKINGDETECTION (非法停车事件) // EVENT_IVS_WANDERDETECTION( 徘徊事件) // EVENT_IVS_VIDEOABNORMALDETECTION (视频异常) // EVENT_IVSS_FACEATTRIBUTE(目标属性检测) // EVENT_IVS_SILICON_FIREPUTTER_DETECTION(刺火推杆检测) BYTE byReserved[256]; // 保留字节 } NET_ANALYSE_RULE_CAPS; ///@brief 图片流协议类型 typedef enum tagEM_PICTURE_PROTOCOL_TYPE { EM_PICTURE_PROTOCOL_UNKNOWN, // 未知 EM_PICTURE_PROTOCOL_RABBITMQ, // RabbitMQ }EM_PICTURE_PROTOCOL_TYPE; ///@brief CLIENT_GetDevCaps NET_ANALYSE_TASK_MANAGER_CAPS 出参 typedef struct tagNET_OUT_ANALYSE_TASK_MANAGER_CAPS_INFO { DWORD dwSize; // 结构体大小 int nSourceTypeNum; // 数据源类型个数 EM_DATA_SOURCE_TYPE emSourceTypes[32]; // 数据源类型 EM_STREAM_PROTOCOL_TYPE emStreamProtocolTypes[32]; // 视频流协议类型, 当emSourceTypes中包括EM_DATA_SOURCE_REMOTE_REALTIME_STREAM时候有效 int nStreamProtocolTypeNum; // 视频流协议类型个数 int nRuleNum; // 分析规则信息个数 NET_ANALYSE_RULE_CAPS stuRuleInfo[64]; // 分析规则信息 NET_EM_VIDEO_COMPRESSION emCompressionTypes[64]; // 视频压缩格式 int nCompressionTypeNum; // 视频压缩格式个数 int nPictureProtocolTypesNum; // 图片流协议类型个数 EM_PICTURE_PROTOCOL_TYPE emPictureProtocolTypes[32]; // 图片流协议类型, 当emSourceTypes中包括EM_DATA_SOURCE_PUSH_PICFILE时候有效 }NET_OUT_ANALYSE_TASK_MANAGER_CAPS_INFO; /////////////////////////////智能分析服务接口 结束///////////////////////////////// ///@brief CLIENT_GetDevCaps NET_PERIPHERAL_CHIP_CAPS 入参 typedef struct tagNET_IN_PERIPHERAL_CHIP_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_PERIPHERAL_CHIP_CAPS; ///@brief 支持的从片类型 typedef enum tagEM_PERIPHERAL_CHIP_TYPE { EM_PERIPHERAL_CHIP_TYPE_UNKNOWN, // 未知 EM_PERIPHERAL_CHIP_TYPE_MOVIDIUS, // MOVIDIUS EM_PERIPHERAL_CHIP_TYPE_TX1, // TX1 EM_PERIPHERAL_CHIP_TYPE_AI1, // AI1 } EM_PERIPHERAL_CHIP_TYPE; ///@brief 支持的智能卡型号 typedef enum tagEM_PERIPHERAL_MODEL_TYPE { EM_PERIPHERAL_MODEL_TYPE_UNKNOWN, // 未知 } EM_PERIPHERAL_MODEL_TYPE; ///@brief 设备从片能力 typedef struct tagNET_PERIPHERAL_CHIP_CAPS_INFO { EM_PERIPHERAL_CHIP_TYPE emType; // 支持的从片类型 UINT nCount; // 从片数量 EM_PERIPHERAL_MODEL_TYPE emModel; // 支持的智能卡型号 char szChipType[32]; // 芯片类型 BYTE byReserved[256]; // 预留字段 } NET_PERIPHERAL_CHIP_CAPS_INFO; ///@brief CLIENT_GetDevCaps NET_PERIPHERAL_CHIP_CAPS 出参 typedef struct tagNET_OUT_PERIPHERAL_CHIP_CAPS { DWORD dwSize; // 结构体大小 int nCapsNum; // 设备从片能力个数 NET_PERIPHERAL_CHIP_CAPS_INFO stuCaps[128]; // 设备从片能力列表 }NET_OUT_PERIPHERAL_CHIP_CAPS; ///@brief CLIENT_GetDevCaps NET_CITIZEN_IDENTITY_MANAGER_CAPS 入参 typedef struct tagNET_IN_CITIZEN_IDENTITY_MANAGER_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_CITIZEN_IDENTITY_MANAGER_CAPS; ///@brief CLIENT_GetDevCaps NET_CITIZEN_IDENTITY_MANAGER_CAPS 出参 typedef struct tagNET_OUT_CITIZEN_IDENTITY_MANAGER_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportSelfHelpCollect; // 是否支持自动采集 BOOL bSupportJointCollect; // 是否支持协同采集 BOOL bSupportOfflineExtract; // 是否支持提取离线数据 BOOL bSupportVisitor; // 是否支持访客系统 int nMaxInsertNum; // 最大插入数量 }NET_OUT_CITIZEN_IDENTITY_MANAGER_CAPS; ///@brief CLIENT_GetDevCaps NET_AROUD_4G_PROBE_SEARCH_CAPS 入参 typedef struct tagNET_IN_AROUD_4G_PROBE_SEARCH_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_AROUD_4G_PROBE_SEARCH_CAPS; ///@brief CLIENT_GetDevCaps NET_AROUD_4G_PROBE_SEARCH_CAPS 出参 typedef struct tagNET_OUT_AROUD_4G_PROBE_SEARCH_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupport; // 当前是否具备4G探针采集功能 BOOL bSupportOptimization; // 是否支持上报优化 int nDeduplicatePeriod[2]; // 采集信息去重周期, 单位秒; 元素0-最小值 元素1-最大值 }NET_OUT_AROUD_4G_PROBE_SEARCH_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_LIGHTING_MIX_SOLUTION_CAPS 入参 typedef struct tagNET_IN_LIGHTING_MIX_SOLUTION_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_LIGHTING_MIX_SOLUTION_CAPS; ///@brief CLIENT_GetDevCaps NET_VIDEOIN_LIGHTING_MIX_SOLUTION_CAPS 出参 typedef struct tagNET_OUT_LIGHTING_MIX_SOLUTION_CAPS { DWORD dwSize; // 该结构体大小 BOOL bSupport; // 是否支持柔光双色能力 int nRetModeNum; // emMode 有效个数 EM_LIGHTING_SCHEME_MODE emMode[8]; // 补光灯方案 int nAIMixLightSwitchDelayRange[2]; // 智能补光方案下生效 表示红外白光切换延时范围,防止来回切换影响寿命和体验,单位:秒 范围[0,300] }NET_OUT_LIGHTING_MIX_SOLUTION_CAPS; ///@brief CLIENT_GetDevCaps NET_IXRAY_PACKAGE_MANAGER_CAPS 入参 typedef struct tagNET_IN_IXRAY_PACKAGE_MANAGER_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_IXRAY_PACKAGE_MANAGER_CAPS; ///@brief CLIENT_GetDevCaps NET_IXRAY_PACKAGE_MANAGER_CAPS 出参 typedef struct tagNET_OUT_IXRAY_PACKAGE_MANAGER_CAPS { DWORD dwSize; // 该结构体大小 int nObjectTypes; // 包裹违禁物类型个数 EM_INSIDE_OBJECT_TYPE emObjectType[128]; // 包裹违禁物类型列表 }NET_OUT_IXRAY_PACKAGE_MANAGER_CAPS; ///@brief 支持的从片类型 typedef enum tagEM_FLOW_STAT_CAPS_TYPE { EM_FLOW_STAT_CAPS_TYPE_UNKNOWN, // 未知 EM_FLOW_STAT_CAPS_TYPE_CAPSINTELLIPARKING, // 智能停车场景OSD能力,对应结构体 NET_CAPS_CAPSINTELLIPARKING } EM_FLOW_STAT_CAPS_TYPE; ///@brief 智能停车场景OSD能力 typedef struct tagNET_CAPS_CAPSINTELLIPARKING { UINT nSupport; // 支持智能停车场景统计掩码 // bit0-支持总车位数统计 // bit1-支持余位数统计 }NET_CAPS_CAPSINTELLIPARKING; ///@brief CLIENT_GetDevCaps NET_FLOW_STAT_CAPS 入参 typedef struct tagNET_IN_FLOW_STAT_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 EM_FLOW_STAT_CAPS_TYPE emClass; // 能力类型 }NET_IN_FLOW_STAT_CAPS; ///@brief CLIENT_GetDevCaps NET_FLOW_STAT_CAPS 出参 typedef struct tagNET_OUT_FLOW_STAT_CAPS { DWORD dwSize; // 结构体大小 void* pCaps; // 能力结构体,根据NET_IN_FLOW_STAT_CAPS 中emClass 类型创建对应结构体,用户创建释放 }NET_OUT_FLOW_STAT_CAPS; ///@brief CLIENT_GetDevCaps NET_FIRE_CONTROL_MANAGER_CAPS 入参 typedef struct tagNET_IN_FIRE_CONTROL_MANAGER_CAPS { DWORD dwSize; // 结构体大小 char szSN[64]; // 主机序列号 }NET_IN_FIRE_CONTROL_MANAGER_CAPS; ///@brief 支持下发的配置集合 typedef struct tagNET_CAPS_CONFIGDISTRIBUTE { BOOL bAnalogAlarm; // 是否支持下发模拟量配置 BOOL bSmokeCfg; // 是否支持烟雾配置下发 BOOL bTempCfg; // 是否支持温度配置下发 BOOL bHumidityCfg; // 是否支持湿度配置下发 char szReserved[1012]; // 保留字节 }NET_CAPS_CONFIGDISTRIBUTE; ///@brief CLIENT_GetDevCaps NET_FIRE_CONTROL_MANAGER_CAPS 出参 typedef struct tagNET_OUT_FIRE_CONTROL_MANAGER_CAPS { DWORD dwSize; // 结构体大小 BOOL bReboot; // 是否支持重启 NET_CAPS_CONFIGDISTRIBUTE stuConfigDistribute; // 支持下发的配置集合 BOOL bErasure; // 是否支持消音 }NET_OUT_FIRE_CONTROL_MANAGER_CAPS; ///@brief CLIENT_FlowStatClearOSD 入参 typedef struct tagNET_IN_FLOW_STAT_CLEAROSD { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 EM_FLOW_STAT_CAPS_TYPE emClass; // OSD操作所属大类 }NET_IN_FLOW_STAT_CLEAROSD; ///@brief CLIENT_FlowStatClearOSD 出参 typedef struct tagNET_OUT_FLOW_STAT_CLEAROSD { DWORD dwSize; // 结构体大小 }NET_OUT_FLOW_STAT_CLEAROSD; ///@brief 清空osd协议 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FlowStatClearOSD(LLONG lLoginID,const NET_IN_FLOW_STAT_CLEAROSD *pInParam, NET_OUT_FLOW_STAT_CLEAROSD *pOutParam, const int nWaitTime); ///@brief CLIENT_GetLensInfo 接口输入参数 typedef struct tagNET_IN_GETLENSINFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 视频通道号 } NET_IN_GETLENSINFO; ///@brief 镜头类型 typedef enum tagEM_LENS_TYPE { EM_LENS_TYPE_UNKNOWN = -1, // 未知 EM_LENS_TYPE_FIXED_FOCUS, // 定焦 EM_LENS_TYPE_INTERNEL_ZOOM, // 内置变焦镜头 EM_LENS_TYPE_MANUAL_ZOOM, // 手动变焦镜头 EM_LENS_TYPE_EXTERNEL_ZOOM, // 外置变焦镜头 } EM_LENS_TYPE; ///@brief CLIENT_GetLensInfo 接口输出参数 typedef struct tagNET_OUT_GETLENSINFO { DWORD dwSize; // 结构体大小 EM_LENS_TYPE emLensType; // 镜头类型 } NET_OUT_GETLENSINFO; ///@brief 获取镜头信息, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLensInfo(LLONG lLoginID, NET_IN_GETLENSINFO *pInParam, NET_OUT_GETLENSINFO *pOutParam, int nWaitTime); ///@brief 镜头行为 typedef enum tagEM_LENS_ACTION { EM_LENS_ACTION_UNKNOWN = -1, // 未知 EM_LENS_ACTION_SINGLE_STEP, // 单步(单击+-) EM_LENS_ACTION_START_CONTINUOUS_ADJUSTMENT, // 开始持续调整(长按+-) EM_LENS_ACTION_END_CONTINUOUS_ADJUSTMENT, // 结束持续调整(结束长按+-) } EM_LENS_ACTION; ///@brief 命令信息 typedef struct tagNET_CMD_INFO { int nZoom; // 变倍步长, 负数表示减量方向, focus非0时, zoom必须为0 int nFocus; // 聚焦步长, 负数表示减量方向, zoom非0时, focus必须为0 EM_LENS_ACTION emLensAction; // 镜头行为 BYTE byReserved[1024]; // 保留字节 } NET_CMD_INFO; ///@brief CLIENT_AdjustRelativeLensFocus 接口输入参数 typedef struct tagNET_IN_ADJUSTRELATIVELENSFOCUS { DWORD dwSize; // 结构体大小 UINT nChannel; // 视频通道号 NET_CMD_INFO stuCmdInfo; // 命令信息 } NET_IN_ADJUSTRELATIVELENSFOCUS; ///@brief CLIENT_AdjustRelativeLensFocus 接口输出参数 typedef struct tagNET_OUT_ADJUSTRELATIVELENSFOCUS { DWORD dwSize; // 结构体大小 } NET_OUT_ADJUSTRELATIVELENSFOCUS; ///@brief 相对焦距调节, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AdjustRelativeLensFocus(LLONG lLoginID, NET_IN_ADJUSTRELATIVELENSFOCUS *pInParam, NET_OUT_ADJUSTRELATIVELENSFOCUS *pOutParam, int nWaitTime); ///@brief 分类检测结果人数统计信息 typedef struct tagNET_CLASSIFY_RESULT_STATISTICS_INFO { UINT nObjectType; // 分类检结果物品类型, 0:未分类, 1:手机类, 2:刀枪工具类, 3:易拉罐类, 4:马口铁类 UINT nInCount; // 进入方向包含该报警物品类型的人数 UINT nOutCount; // 离开方向包含该报警物品类型的人数 char szResvered[244]; // 保留字节 }NET_CLASSIFY_RESULT_STATISTICS_INFO; ///@brief 安全门报警统计信息 typedef struct tagNET_SECURITYGATE_ALARM_STATISTICS_INFO { char szUUID[36]; // UUID UINT nStatisticsInfoID; // 统计信息ID NET_TIME_EX stuBeginTime; // 开始时间 NET_TIME_EX stuEndTime; // 结束时间 UINT nPassIn; // 进入通过人数 UINT nAlarmIn; // 进入报警人数 UINT nPassOut; // 离开通过人数 UINT nAlarmOut; // 离开报警人数 UINT nTempNormalCount; // 体温正常人数 UINT nTempAlarmCount; // 体温异常人数 UINT nClassifyResultStatisticsCount; // 分类检测结果人数统计信息个数 NET_CLASSIFY_RESULT_STATISTICS_INFO stuClassifyResultStatistics[32]; // 分类检测结果人数统计信息 BYTE byReserved[1024]; // 保留字段 }NET_SECURITYGATE_ALARM_STATISTICS_INFO; ///@brief 安全门报警订阅回调函数 typedef void (CALLBACK *fSecurityGateAttachAlarmStatistics)(LLONG lAttachHandle, NET_SECURITYGATE_ALARM_STATISTICS_INFO* pInfo, LDWORD dwUser); ///@brief CLIENT_SecurityGateAttachAlarmStatistics 输入结构体 typedef struct tagNET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS { DWORD dwSize; // 赋值为结构体大小 char szUUID[36]; // UUID fSecurityGateAttachAlarmStatistics cbNotify; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS; ///@brief CLIENT_SecurityGateAttachAlarmStatistics 输出结构体 typedef struct tagNET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS { DWORD dwSize; // 赋值为结构体大小 }NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS; ///@brief 订阅安全门报警统计信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SecurityGateAttachAlarmStatistics(LLONG lLoginID, const NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS* pInParam, NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS* pOutParam, int nWaitTime); ///@brief 取消订阅安全门报警统计信息 // lAttachHandle 为 CLIENT_SecurityGateAttachAlarmStatistics 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateDetachAlarmStatistics(LLONG lAttachHandle); ///@brief 相机的信息 typedef struct tagNET_CAMERA_CFG_INFO { char szIP[32]; // IP地址 UINT nPort; // 端口 char szLoginName[32]; // 登陆用户名 char szLoginPwd[32]; // 登陆密码, 设置的时候不填表示不修改密码 BOOL bUsePwdNew; // 是否使用szLoginPwdNew字段修改密码 char szLoginPwdNew[64]; // 登陆密码,设置的时候不填表示不修改密码 BYTE byReserved[956]; // 保留字节 }NET_CAMERA_CFG_INFO; ///@brief CLIENT_SetCameraCfg 接口输入参数 typedef struct tagNET_IN_SET_CAMERA_CFG { DWORD dwSize; // 结构体大小 int nCameraNo; // 相机编号 NET_CAMERA_CFG_INFO stuCameraInfo; // 相机的信息 } NET_IN_SET_CAMERA_CFG; ///@brief CLIENT_SetCameraCfg 接口输出参数 typedef struct tagNET_OUT_SET_CAMERA_CFG { DWORD dwSize; // 结构体大小 } NET_OUT_SET_CAMERA_CFG; ///@brief CLIENT_GetCameraCfg 接口输入参数 typedef struct tagNET_IN_GET_CAMERA_CFG { DWORD dwSize; // 结构体大小 int nCameraNo; // 相机编号 } NET_IN_GET_CAMERA_CFG; ///@brief CLIENT_GetCameraCfg 接口输出参数 typedef struct tagNET_OUT_GET_CAMERA_CFG { DWORD dwSize; // 结构体大小 int nCameraNo; // 相机编号 NET_CAMERA_CFG_INFO stuCameraInfo; // 相机的信息 } NET_OUT_GET_CAMERA_CFG; ///@brief 进口方向 typedef enum tagEM_ENTRY_DIRECTION { EM_ENTRY_UNKNOWN, // 未知 EM_ENTRY_NORTH_TO_SOUTH, // 北向南 EM_ENTRY_EASTNORTH_TO_WESTSOUTH, // 东北向西南 EM_ENTRY_EAST_TO_WEST, // 东向西 EM_ENTRY_EASTSOUTH_TO_WESTNORTH, // 东南向西北 EM_ENTRY_SOUTH_TO_NORTH, // 南向北 EM_ENTRY_WESTSOUTH_TO_EASTSOUTH, // 西南向东北 EM_ENTRY_WEST_TO_EAST, // 西向东 EM_ENTRY_WESTNORTH_TO_EASTSOUTH, // 西北向东南 } EM_ENTRY_DIRECTION; ///@brief 进口类型 typedef enum tagEM_ENTRY_TYPE { EM_ENTRY_TYPE_UNKNOWN, // 未知 EM_ENTRY_TYPE_TURN_LEFT, // 左转 EM_ENTRY_TYPE_STRAIGHT, // 直行 EM_ENTRY_TYPE_TRUN_RIGHT, // 右转 EM_ENTRY_TYPE_TURN_ROUND, // 掉头 }EM_ENTRY_TYPE; ///@brief 通道信息 typedef struct tagNET_CHANNEL_CFG_INFO { int nCameraNo; // 上报的相机编号(废弃,用pCameraNo) EM_ENTRY_DIRECTION emEntryDirection; // 进口方向 EM_ENTRY_TYPE emEntryType[16]; // 进口类型 int nRetEntryTypeNum; // 进口类型个数 int nLaneNo; // 车道号 int* pCameraNo; // 上报的相机编号,用户分配内存 int nCameraCount; // pCameraNo 个数 int nCameraCountRet; // 返回的 pCameraNo 个数,获取时有效,设置时无效 BYTE byReserved[940]; // 保留字节 }NET_CHANNEL_CFG_INFO; ///@brief CLIENT_SetChannelCfg 接口输入参数 typedef struct tagNET_IN_SET_CHANNEL_CFG { DWORD dwSize; // 结构体大小 int nChannelNo; // 检测通道 NET_CHANNEL_CFG_INFO stuChannelInfo; // 通道信息 } NET_IN_SET_CHANNEL_CFG; ///@brief CLIENT_SetChannelCfg 接口输出参数 typedef struct tagNET_OUT_SET_CHANNEL_CFG { DWORD dwSize; // 结构体大小 } NET_OUT_SET_CHANNEL_CFG; ///@brief CLIENT_GetChannelCfg 接口输入参数 typedef struct tagNET_IN_GET_CHANNEL_CFG { DWORD dwSize; // 结构体大小 int nChannelNo; // 检测通道 } NET_IN_GET_CHANNEL_CFG; ///@brief CLIENT_GetChannelCfg 接口输出参数 typedef struct tagNET_OUT_GET_CHANNEL_CFG { DWORD dwSize; // 结构体大小 int nChannelNo; // 检测通道 NET_CHANNEL_CFG_INFO stuChannelInfo; // 通道信息 } NET_OUT_GET_CHANNEL_CFG; ///@brief 红绿灯检测类型 typedef enum tagEM_TRAFFIC_LIGHT_DETECT_MODE { EM_TRAFFIC_DETECT_UNKNOWN = -1, // 未知 EM_TRAFFIC_DETECT_RED, // 红灯模式 EM_TRAFFIC_DETECT_GREEN, // 绿灯模式 }EM_TRAFFIC_LIGHT_DETECT_MODE; ///@brief CLIENT_SetDetectMode 接口输入参数 typedef struct tagNET_IN_SET_DETECT_MODE { DWORD dwSize; // 结构体大小 int nDetectTimeout; // 异常超时时间 EM_TRAFFIC_LIGHT_DETECT_MODE emDetectionMode; // 模式 } NET_IN_SET_DETECT_MODE; ///@brief CLIENT_SetDetectMode 接口输出参数 typedef struct tagNET_OUT_SET_DETECT_MODE { DWORD dwSize; // 结构体大小 } NET_OUT_SET_DETECT_MODE; ///@brief CLIENT_GetDetectMode 接口输入参数 typedef struct tagNET_IN_GET_DETECT_MODE { DWORD dwSize; // 结构体大小 } NET_IN_GET_DETECT_MODE; ///@brief CLIENT_GetDetectMode 接口输出参数 typedef struct tagNET_OUT_GET_DETECT_MODE { DWORD dwSize; // 结构体大小 int nDetectTimeout; // 异常超时时间 EM_TRAFFIC_LIGHT_DETECT_MODE emDetectionMode; // 模式 } NET_OUT_GET_DETECT_MODE; ///@brief 相机连接状态 typedef enum tagEM_CAMERA_CONNECT_STATE { EM_CAMERA_CONNECT_STATE_UNKNOWN = -1, // 未知 EM_CAMERA_CONNECT_STATE_UNCONNECT, // 未连接 EM_CAMERA_CONNECT_STATE_CONNECTED, // 已连接 }EM_CAMERA_CONNECT_STATE; ///@brief 红绿灯状态 typedef enum tagEM_TRAFFIC_LIGHT_DETECT_STATE { EM_TRAFFIC_DETECT_STATE_UNKNOWN = -1, // 未知 EM_TRAFFIC_DETECT_STATE_RED, // 红灯 EM_TRAFFIC_DETECT_STATE_GREEN, // 绿灯 }EM_TRAFFIC_LIGHT_DETECT_STATE; ///@brief 相机对应的红绿灯通道状态 typedef struct tagNET_LIGHTINFO_CFG { int nLightNo; // 红绿灯通道 EM_TRAFFIC_LIGHT_DETECT_STATE emLightState; // 红绿灯状态 BYTE byReserved[504]; // 预留 }NET_LIGHTINFO_CFG; ///@brief CLIENT_GetCameraInfo 接口输入参数 typedef struct tagNET_IN_GET_CAMERA_INFO { DWORD dwSize; // 结构体大小 int nCameraNo; // 相机编号 }NET_IN_GET_CAMERA_INFO; ///@brief CLIENT_GetCameraInfo 接口输出参数 typedef struct tagNET_OUT_GET_CAMERA_INFO { DWORD dwSize; // 结构体大小 int nCameraNo; // 相机编号 EM_CAMERA_CONNECT_STATE emConnectState; // 相机连接状态 int nRetLightInfoNum; // 返回的红绿灯通道数 NET_LIGHTINFO_CFG stuLightInfos[16]; // 相机对应的红绿灯通道状态 }NET_OUT_GET_CAMERA_INFO; ///@brief 交通通道信息 typedef struct tagNET_TRAFFICLIGHT_CHANNEL_INFO { int nChannel; // 检测通道 EM_ENTRY_DIRECTION emEntryDirection; // 进口方向 EM_ENTRY_TYPE emEntryType[32]; // 进口类型 int nRetEntryTypeNum; // 进口类型个数 EM_TRAFFIC_LIGHT_DETECT_STATE emLightState; // 红绿灯状态 BYTE byReserved[368]; // 保留字节 }NET_TRAFFICLIGHT_CHANNEL_INFO; ///@brief 交通信号灯信息 typedef struct tagNET_TRAFFICLIGHT_INFO { NET_TIME stuUTC; // UTC时间, 发生红绿灯切换时的时间, 本地时区 int nRetChannelNum; // stuChannels 有效个数 NET_TRAFFICLIGHT_CHANNEL_INFO stuChannels[32];// 通道信息 int nRetLightChangedNum; // nLightChangedChannels 有效个数 int nLightChangedChannels[32];// 发生红绿灯变换的通道 BYTE byReserved[512]; // 保留字节 }NET_TRAFFICLIGHT_INFO; ///@brief 交通信号灯回调函数 // lLoginID - 登录句柄 lAttchHandle - 订阅句柄 typedef void (CALLBACK *fTrafficLightState)(LLONG lLoginID, LLONG lAttchHandle, NET_TRAFFICLIGHT_INFO *pInfo, LDWORD dwUser); ///@brief CLIENT_AttachTrafficLightState 接口入参 typedef struct tagNET_IN_ATTACH_TRAFFICLIGHT_INFO { DWORD dwSize; // 结构体大小 fTrafficLightState cbState; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_TRAFFICLIGHT_INFO; ///@brief CLIENT_AttachTrafficLightState 接口出参 typedef struct tagNET_OUT_ATTACH_TRAFFICLIGHT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_TRAFFICLIGHT_INFO; ///@brief 设置相机参数, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetCameraCfg(LLONG lLoginID, NET_IN_SET_CAMERA_CFG *pInParam, NET_OUT_SET_CAMERA_CFG *pOutParam, int nWaitTime); ///@brief 获取相机参数, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCameraCfg(LLONG lLoginID, NET_IN_GET_CAMERA_CFG *pInParam, NET_OUT_GET_CAMERA_CFG *pOutParam, int nWaitTime); ///@brief 设置通道参数, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetChannelCfg(LLONG lLoginID, NET_IN_SET_CHANNEL_CFG *pInParam, NET_OUT_SET_CHANNEL_CFG *pOutParam, int nWaitTime); ///@brief 获取通道参数, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChannelCfg(LLONG lLoginID, NET_IN_GET_CHANNEL_CFG *pInParam, NET_OUT_GET_CHANNEL_CFG *pOutParam, int nWaitTime); ///@brief 设置检测模式, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDetectMode(LLONG lLoginID, NET_IN_SET_DETECT_MODE *pInParam, NET_OUT_SET_DETECT_MODE *pOutParam, int nWaitTime); ///@brief 获取检测模式, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDetectMode(LLONG lLoginID, NET_IN_GET_DETECT_MODE *pInParam, NET_OUT_GET_DETECT_MODE *pOutParam, int nWaitTime); ///@brief 交通灯信号检测-获取相机信息, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCameraInfo(LLONG lLoginID, NET_IN_GET_CAMERA_INFO *pInParam, NET_OUT_GET_CAMERA_INFO *pOutParam, int nWaitTime); ///@brief 订阅交通信号灯状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachTrafficLightState(LLONG lLoginID, NET_IN_ATTACH_TRAFFICLIGHT_INFO *pInParam, NET_OUT_ATTACH_TRAFFICLIGHT_INFO *pOutParam, int nWaitTime); ///@brief 退订交通信号灯状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachTrafficLightState(LLONG lAttchHandle); ///@brief CLIENT_GetAreaInfo 输入结构体 typedef struct tagNET_IN_GETAREA_INFO { DWORD dwSize; // 赋值为结构体大小 int nChannel; // 通道 }NET_IN_GETAREA_INFO; ///@brief 区域规则类型 typedef enum tagEM_AREA_RULE_TYPE { EM_AREA_RULE_UNKNOWN, // 未知 EM_AREA_RULE_QUEUE_DETECTION, // 队列检测区域 EM_AREA_RULE_MAN_NUM_DETECTION, // 人数检测区域 EM_AREA_RULE_NUMBERSTAT, // 客流量统计区域 EM_AREA_RULE_STEREO_NUMBERSTAT, // 客流量统计区域(双目客流相机使用, 其他相机不使用该字段) }EM_AREA_RULE_TYPE; ///@brief 区域信息 typedef struct tagNET_GETAREA_INFO { unsigned short nAreaId; // 区域ID BYTE byReserved1[2]; // 保留字节,用于字节对齐 EM_AREA_RULE_TYPE emAreaRuleType; // 区域规则类型 int nPointNum; // 检测区域的点数 NET_POINT stuDetectRegion[20]; // 检测区域,多边形,多边形中每个顶点的坐标坐标归一化到[0,8191]区间 char szAreaName[64]; // 区域名称 BYTE byReserved[1024]; // 保留字节 }NET_GETAREA_INFO; ///@brief CLIENT_GetAreaInfo 输出结构体 typedef struct tagNET_OUT_GETAREA_INFO { DWORD dwSize; // 赋值为结构体大小 int nChannle; // 通道数 int nAreaCount; // 区域个数 NET_GETAREA_INFO stuAreaInfo[20]; // 区域信息 }NET_OUT_GETAREA_INFO; ///@brief 获取区域人数统计区域信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAreaInfo(LLONG lLoginID, const NET_IN_GETAREA_INFO* pInParam, NET_OUT_GETAREA_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_GetRealTimeVehiclesInfoByRegion 接口输入参数 typedef struct tagNET_IN_GET_VEHICLES_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 int nPointNum; // 多边形点的个数,最少4个点 NET_POINT stuPoint[32]; // 多边形区域,8192坐标系,即X轴和Y轴的范围都是0到8191 }NET_IN_GET_VEHICLES_INFO; ///@brief 区域内车辆信息 typedef struct tagNET_VEHICLES_INFO_IN_REGION { UINT nVehicleQuantity; // 区域内车辆数量 BYTE byReserved[1024]; // 保留字节 }NET_VEHICLES_INFO_IN_REGION; ///@brief CLIENT_GetRealTimeVehiclesInfoByRegion 接口输出参数 typedef struct tagNET_OUT_GET_VEHICLES_INFO { DWORD dwSize; // 结构体大小 NET_VEHICLES_INFO_IN_REGION stuVehiclesInfo; // 区域内车辆信息 }NET_OUT_GET_VEHICLES_INFO; ///@brief 获取指定视频通道下矩形区域内的车辆统计信息, pInParam 和 pOutParam 资源由用户申请和释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRealTimeVehiclesInfoByRegion(LLONG lLoginID, NET_IN_GET_VEHICLES_INFO *pInParam, NET_OUT_GET_VEHICLES_INFO *pOutParam, int nWaitTime); ///@brief 统计区车辆,排队信息 typedef struct tagNET_VEHICLES_DISTRIBUTION_DATA { UINT nPtzPresetId; // 预置点 UINT nRuleId; // 规则ID UINT nRuleType; // 规则类型 UINT nVehiclesNum; // 车辆数量 UINT nQueueLen; // 排队长度,单位:米 NET_UINT_POINT stuRegion[32]; // 区域坐标 多边形中每个顶点的坐标坐标归一化到[0,8191]区间 int nRegionNum; // 区域坐标个数 UINT nVehiclesLimit; // 区域车辆上限 char szRuleName[32]; // 规则名称 }NET_VEHICLES_DISTRIBUTION_DATA; ///@brief CLIENT_AttachVehiclesDistributionData回调信息 typedef struct tagNET_CB_VEHICLES_DISTRIBUTION_DATA { UINT nSID; // 服务器订阅ID号 UINT nChannel; // 通道号 UINT nVehiclesDataNums; // 统计区数据个数 NET_VEHICLES_DISTRIBUTION_DATA stuVehiclesData[16];// 统计区数据 }NET_CB_VEHICLES_DISTRIBUTION_DATA; ///@brief 接口 CLIENT_AttachVehiclesDistributionData 回调函数,pBuf是json和图片数据,nBufLen是pBuf相应长度,用于转发服务 typedef int (CALLBACK *fNotifyVehiclesDistributionData)(LLONG lVehiclesHandle, NET_CB_VEHICLES_DISTRIBUTION_DATA* pDiagnosisInfo, LDWORD dwUser); ///@brief 接口 CLIENT_AttachVehiclesDistributionData 的输入参数 typedef struct tagNET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA { DWORD dwSize; // 此结构体大小 DWORD dwWaitTime; // 接口超时等待时间 UINT nChannelID; // 通道号 fNotifyVehiclesDistributionData cbNotifySnapData; // 回调函数 LDWORD dwUser; // 用户自定义参数 } NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA; ///@brief 接口 CLIENT_AttachVehiclesDistributionData 的输出参数 typedef struct tagNET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA { DWORD dwSize; // 此结构体大小 } NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA; ///@brief 订阅统计区域内的车辆数据或者排队长度信息,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachVehiclesDistributionData(LLONG lLoginID, NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA* pstInParam, NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA* pstOutParam); ///@brief 取消订阅统计区域内的车辆数据或者排队长度信息,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachVehiclesDistributionData(LLONG lAttachHandle); ///@brief 检测区区域人数统计信息 typedef struct tagNET_REGION_PEOPLE_STAT_INFO { UINT nRegionID; // 区域ID char szRegionName[128]; // 区域名称 UINT nRegionPointNum; // 区域顶点个数 NET_POINT stuRegionPoint[20]; // 区域顶点坐标 UINT nPeopleNum; // 区域内人数 BYTE byReserved[1024]; // 保留字节 } NET_REGION_PEOPLE_STAT_INFO; ///@brief 检测区统计信息 typedef struct tagNET_CROWD_STAT_DATA { UINT nChannelID; // 通道号 UINT nGloabalPeopleNum; // 检测区内总人数 UINT nRegionNum; // 检测区内区域个数 NET_REGION_PEOPLE_STAT_INFO stuRegionPeople[8]; // 检测区内区域人数统计信息 BYTE byReserved[1024]; // 保留字节 } NET_CROWD_STAT_DATA; ///@brief 订阅人群分布图实时统回调信息 typedef struct tagNET_CB_CROWD_DISTRI_STREAM_INFO { UINT nCrowStatNum; // 检测区个数 NET_CROWD_STAT_DATA stuCrowdStatData[8]; // 检测区统计信息 BYTE byReserved[2048]; // 保留字节 } NET_CB_CROWD_DISTRI_STREAM_INFO; ///@brief 订阅人群分布图实时统计信息回调函数原型, lAttachHandle为CLIENT_AttachCrowdDistriMap接口的返回值 typedef void (CALLBACK *fCrowdDistriStream)(LLONG lAttachHandle, NET_CB_CROWD_DISTRI_STREAM_INFO* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachCrowdDistriMap接口输入参数 typedef struct tagNET_IN_ATTACH_CROWDDISTRI_MAP_INFO { DWORD dwSize; // 结构体大小 UINT nChannelID; // 通道号 fCrowdDistriStream cbCrowdDistriStream; // 订阅人群分布图实时统计信息回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_CROWDDISTRI_MAP_INFO; ///@brief CLIENT_AttachCrowdDistriMap 接口输出参数 typedef struct tagNET_OUT_ATTACH_CROWDDISTRI_MAP_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO; ///@brief: 订阅人群分布图实时统计信息 ///@param[in]: LLONG :lLoginID // 登陆句柄 ///@param[in]: NET_IN_ATTACH_CROWDDISTRI_MAP_INFO* :pstInParam // 输入参数, 由用户申请资源 ///@param[out]: NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO* :pstOutParam // 输出参数, 由用户申请资源 ///@param[in]: int :nWaitTime // 等待超时时间 ///@return: LLONG CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachCrowdDistriMap(LLONG lLoginID, NET_IN_ATTACH_CROWDDISTRI_MAP_INFO *pstInParam, NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO *pstOutParam, int nWaitTime); ///@brief: 取消订阅人群分布图实时统计信息 ///@param[in]: LLONG :lAttachHandle // 订阅句柄,为接口CLIENT_AttachCrowdDistriMap的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachCrowdDistriMap(LLONG lAttachHandle); ///@brief 区域人数统计列表 typedef struct tagNET_GETSUMMARY_REGION_PEOPLE_LIST_INFO { UINT nRegionID; // 区域ID UINT nRegionPeopleNum; // 区域人数 UINT nRegionPointNum; // 区域顶点个数 NET_POINT stuRegionPoint[20]; // 区域顶点坐标 char szReserved[1024]; // 保留字节 }NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO; ///@brief 拥挤人群列表 typedef struct tagNET_GETSUMMARY_CROWD_LIST_INFO { NET_POINT stuCenter; // 拥挤人群中心点坐标 UINT nRadius; // 半径 char szReserved[1024]; // 保留字节 }NET_GETSUMMARY_CROWD_LIST_INFO; ///@brief 报警区域列表 typedef struct tagNET_GETSUMMARY_REGION_LIST_INFO { UINT nRegionID; // 区域ID UINT nPeopleNum; // 区域内人数统计值 UINT nRegionPointNum; // 区域坐标个数 NET_POINT stuRegionPoint[20]; // 区域坐标 char szReserved[1024]; // 保留字节 }NET_GETSUMMARY_REGION_LIST_INFO; ///@brief 检测区信息 typedef struct tagNET_GETSUMMARY_CROWD_STAT_DATA { UINT nChannelID; // 通道号 UINT nGloabalPeopleNum; // 检测区内总人数 UINT nRegionNum; // 检测区内区域个数 NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO stuRegionPeopleList[16]; // 区域人数统计列表 UINT nCrowdEventNum; // 全局拥挤人群报警个数 NET_GETSUMMARY_CROWD_LIST_INFO stuCrowdList[5]; // 拥挤人群列表 UINT nRegionEventNum; // 报警区域个数 NET_GETSUMMARY_REGION_LIST_INFO stuRegionList[8]; // 报警区域列表 char szReserved[1024]; // 保留字节 }NET_GETSUMMARY_CROWD_STAT_DATA; ///@brief CLIENT_GetSummaryCrowdDistriMap 接口输入参数 typedef struct tagNET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO { DWORD dwSize; // 结构体大小 UINT nChannelID; // 通道号 }NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO; ///@brief CLIENT_GetSummaryCrowdDistriMap 接口输出参数 typedef struct tagNET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO { DWORD dwSize; // 结构体大小 int nCrowdStatNum; // 检测区个数 NET_GETSUMMARY_CROWD_STAT_DATA stuCrowdStatData[8]; // 检测区信息 }NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO; ///@brief 获取人群分布图全局和区域实时人数统计值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSummaryCrowdDistriMap(LLONG lLoginID, NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO* pstInParam, NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO* pstOutParam, int nWaitTime); ///@brief Ping的信息 typedef struct tagNET_PING_INFO { char szAddress[128]; // Ping的地址或者域名 BYTE byReserved[512]; // 保留字节 }NET_PING_INFO; ///@brief CLIENT_GetPingStatus 接口输入参数 typedef struct tagNET_IN_GET_PING_STATUS_INFO { DWORD dwSize; // 结构体大小 NET_PING_INFO stuPingInfo; // Ping的信息 }NET_IN_GET_PING_STATUS_INFO; ///@brief ping的状态 typedef struct tagNET_PING_STATUS_INFO { float fAveDelay; // 平均网络延迟,单位秒 float fLossRate; // 丢包率,大小[0-1] BYTE byReserved[512]; // 保留字节 }NET_PING_STATUS_INFO; ///@brief CLIENT_GetPingStatus 接口输出参数 typedef struct tagNET_OUT_GET_PING_STATUS_INFO { DWORD dwSize; // 结构体大小 NET_PING_STATUS_INFO stuPingStatus; // ping的状态 }NET_OUT_GET_PING_STATUS_INFO; ///@brief 获取指定ip的ping状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPingStatus(LLONG lLoginID, NET_IN_GET_PING_STATUS_INFO *pInParam, NET_OUT_GET_PING_STATUS_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetDevRemoteChannelAlarmState 接口输入参数 typedef struct tagNET_IN_GET_REMOTE_CHANNEL_ALARM_STATE { DWORD dwSize; // 结构体大小 UINT nChannelNum; // 通道个数 UINT nChannel[128]; // 通道列表 } NET_IN_GET_REMOTE_CHANNEL_ALARM_STATE; ///@brief 报警通道状态 typedef struct tagNET_ALARM_CHANNEL_STATE { int nChannel; // 视频通道号 DWORD dwAlatmInState; // 远程设备报警输入通道状态。按位表示,每一位表示一个远程设备的报警输入通道的状态; BYTE byReserved[256]; // 保留字节 } NET_ALARM_CHANNEL_STATE; ///@brief CLIENT_GetDevRemoteChannelAlarmState 接口输出参数 typedef struct tagNET_OUT_GET_REMOTE_CHANNEL_ALARM_STATE { DWORD dwSize; // 结构体大小 UINT nAlarmChannelNum; // 报警通道个数 NET_ALARM_CHANNEL_STATE stuAlarmChannelState[128]; // 报警通道状态 } NET_OUT_GET_REMOTE_CHANNEL_ALARM_STATE; ///@brief 获取设备通道报警状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevRemoteChannelAlarmState(LLONG lLoginID, NET_IN_GET_REMOTE_CHANNEL_ALARM_STATE *pstInParam, NET_OUT_GET_REMOTE_CHANNEL_ALARM_STATE *pstOutParam, int nWaitTime); ///@brief CLIENT_GetDevRemoteInChannelAlarmSlots 接口输入参数 typedef struct tagNET_IN_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS { DWORD dwSize; // 结构体大小 UINT nChannelNum; // 通道个数 int nChannel[128]; // 通道列表 } NET_IN_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS; ///@brief 报警输入通道数 typedef struct tagNET_ALARM_IN_CHANNEL_SLOTS { int nChannel; // 通道号 int nInputs; // 本地输入通道数目 BYTE byReserved[256]; // 保留字节 } NET_ALARM_IN_CHANNEL_SLOTS; ///@brief CLIENT_GetDevRemoteInChannelAlarmSlots 接口输出参数 typedef struct tagNET_OUT_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS { DWORD dwSize; // 结构体大小 UINT nAlarmChannelNum; // 报警通道个数 NET_ALARM_IN_CHANNEL_SLOTS stuAlarmChannelSlots[128]; // 报警输入通道数 } NET_OUT_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS; ///@brief 获取前端报警端口的输入通道数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevRemoteInChannelAlarmSlots(LLONG lLoginID, NET_IN_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS *pstInParam, NET_OUT_GET_REMOTE_IN_CHANNEL_ALARM_SLOTS *pstOutParam, int nWaitTime); ///@brief CLIENT_GetRemoteAlarmConfig 接口输入参数 typedef struct tagNET_IN_GET_REMOTE_ALARM_CONFIG_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道号,为-1时表示获取本地所有的配置 BOOL bIsUseDeviceID; // 是否通过DeviceID获取设备配置 BOOL bEnableAlarmChannel; // 是否下发报警通道号 int nAlarmChannel; // 报警通道号,如果没有或者为-1,表示获取所有的报警通道 BOOL bOnlyLocal; // 是否只获取本地缓存配置(速度快),默认为FALSE char szDeviceID[128]; // 逻辑对象所属ID,该字段只有像IVSS存在设备树的设备才有,与channel二选一,如果都存在设备树的设备以deviceID为准,否则以channel为准 } NET_IN_GET_REMOTE_ALARM_CONFIG_INFO; ///@brief 报警输入通道数 typedef struct tagNET_ALARM_CONFIG_REMOTE_INFO { char szName[64]; // 报警通道名称 char szReserved[1024]; // 保留字节 } NET_ALARM_CONFIG_REMOTE_INFO; ///@brief 报警输入通道数 typedef struct tagNET_ALARM_CONFIG_LOCAL_INFO { int nRemoteAlarmInfoNum; // 本地通道中远程报警通道数, 用户申请的NET_ALARM_CONFIG_REMOTE_INFO结构体个数 int nRemoteAlarmInfoRealNum; // 设备实际返回的本地通道中远程报警通道数 NET_ALARM_CONFIG_REMOTE_INFO* pstuRemoteAlarmInfo; // 远程报警通道信息, 需用户申请内存 } NET_ALARM_CONFIG_LOCAL_INFO; ///@brief CLIENT_GetRemoteAlarmConfig 接口输出参数 typedef struct tagNET_OUT_GET_REMOTE_ALARM_CONFIG_INFO { DWORD dwSize; // 结构体大小 int nLoaclAlarmNum; // 报警本地通道个数 NET_ALARM_CONFIG_LOCAL_INFO stuLoaclAlarmInfo[1024]; // 报警本地输入通道数 } NET_OUT_GET_REMOTE_ALARM_CONFIG_INFO; ///@brief 获取前端报警端口的输入通道数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteAlarmConfig(LLONG lLoginID, NET_IN_GET_REMOTE_ALARM_CONFIG_INFO *pstInParam, NET_OUT_GET_REMOTE_ALARM_CONFIG_INFO *pstOutParam, int nWaitTime); ///@brief 门禁数据进度类型 typedef enum tagEM_ACCESSCONTROL_PROGRESS_TYPE { EM_ACCESSCONTROL_PROGRESS_IMPORT, // 数据导入进度 EM_ACCESSCONTROL_PROGRESS_DEPLOY, // 数据同步进度 } EM_ACCESSCONTROL_PROGRESS_TYPE; ///@brief 门禁数据导入返回状态 typedef enum tagEM_ACCESSCONTROL_IMPORT_STATE { EM_ACCESSCONTROL_IMPORT_UNKNOWN, // 未知 EM_ACCESSCONTROL_IMPORT_ONGING, // 导入中 EM_ACCESSCONTROL_IMPORT_END, // 导入结束, 开始生成数据库 EM_ACCESSCONTROL_IMPORT_BUSY, // 系统忙,已经有导入任务 EM_ACCESSCONTROL_IMPORT_DATAERROR, // 数据包检验失败 EM_ACCESSCONTROL_IMPORT_INVALID, // 数据包非法 EM_ACCESSCONTROL_IMPORT_SYNC_SUCCESS, // 同步成功, 数据库已生成 EM_ACCESSCONTROL_IMPORT_SYNC_FALIED, // 同步失败, 数据库无法生成 EM_ACCESSCONTROL_IMPORT_DBFULL, // 数据库已满无法导入 EM_ACCESSCONTROL_IMPORT_SDFULL, // 存储空间满无法导入 EM_ACCESSCONTROL_IMPORT_CIPHER_ERROR, // 导入压缩包密码不对 EM_ACCESSCONTROL_IMPORT_SEND_FAIL, // 发送门禁数据失败 } EM_ACCESSCONTROL_IMPORT_STATE; ///@brief 导入门禁数据状态信息 typedef struct tagNET_IMPORT_ACCESSCONTROL_STATE { unsigned int nProgress; // 进度, 百分比 EM_ACCESSCONTROL_PROGRESS_TYPE emProcessType; // 进度类型 EM_ACCESSCONTROL_IMPORT_STATE emState; // 状态信息 BYTE byReserved[512]; // 保留字节 } NET_IMPORT_ACCESSCONTROL_STATE; ///@brief 导入目标库回调函数原形 typedef void (CALLBACK *fImportAccessControlDataCallBack) (LLONG lImportHandle, NET_IMPORT_ACCESSCONTROL_STATE *pstAccessControlState, LDWORD dwUser); ///@brief CLIENT_ImportAccessControlData 接口输入参数 typedef struct tagNET_IN_IMPORT_ACCESS_CONTROL_DATA { DWORD dwSize; // 结构体大小 DWORD dwDataType; // 数据类型掩码, 0x01 门禁对讲通信录; 0x02 门禁自定义密码; 0x04 门禁卡片信息; // 0x08 门禁目标信息; 0x10 门禁信息信息; 0x20 门禁对讲远程设备信息 char szPassWord[DH_COMMON_STRING_64]; // 压缩密码 char szFilePath[MAX_FILE_PATH_LEN]; // 门禁数据路径, 由用户指定 UINT nBeforeLen; // 文件压缩前大小 BYTE byReserved[4]; // 对齐 fImportAccessControlDataCallBack cbImportState; // 上传状态回调函数 LDWORD dwUser; // 用户数据 } NET_IN_IMPORT_ACCESS_CONTROL_DATA; ///@brief CLIENT_ImportAccessControlData 接口输出参数 typedef struct tagNET_OUT_IMPORT_ACCESS_CONTROL_DATA { DWORD dwSize; // 结构体大小 } NET_OUT_IMPORT_ACCESS_CONTROL_DATA; ///@brief 导入门禁数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ImportAccessControlData(LLONG lLoginID, NET_IN_IMPORT_ACCESS_CONTROL_DATA* pstInParam, NET_OUT_IMPORT_ACCESS_CONTROL_DATA* pstOutParam, const int nWaitTime); ///@brief 停止导入门禁数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopImportAccessControlData(LLONG lImportHandle); ///@brief 导出门禁快速复核信息错误码 typedef enum tagEM_EXPORT_FAST_CHECK_ERRORCODE { EM_EXPORT_FAST_CHECK_SUCCESS = 1, // 导出请求成功 EM_EXPORT_FAST_CHECK_NO_AUTHORITY = 2, // 无权限 EM_EXPORT_FAST_CHECK_NO_THIS_FILE = 3, // 文件不存在 EM_EXPORT_FAST_CHECK_EXPORT_END = 4, // 导出结束 EM_EXPORT_FAST_CHECK_EXPORTING = 5, // 导出中 EM_EXPORT_FAST_CHECK_FILE_READY = 8, // 文件准备完成 EM_EXPORT_FAST_CHECK_FILE_FAILED = 9, // 文件准备失败 EM_EXPORT_FAST_CHECK_WAIT_FILE = 10, // 导出请求成功, 需要等待设备准备数据 EM_EXPORT_FAST_CHECK_SYSTEM_BUSY = 11, // 系统忙, 暂时无法导出数据 EM_EXPORT_FAST_CHECK_NO_PASSWORD = 12, // 数据未定义密码, 不允许导出 } EM_EXPORT_FAST_CHECK_ERRORCODE; ///@brief 门禁快速复核信息状态信息 typedef struct tagNET_EXPORT_FAST_CHECK_STATE { unsigned int nProgress; // 进度, 百分比 EM_EXPORT_FAST_CHECK_ERRORCODE emErrorCode; // 错误码 char *pDataBuf; // 导出数据 DWORD dwDataLen; // 数据长度 BYTE byReserved[516]; // 保留字节 } NET_EXPORT_FAST_CHECK_STATE; ///@brief 导出门禁快速复核信息回调函数原形 typedef void (CALLBACK *fExportFastCheckCallBack)(LLONG lExportHandle, NET_EXPORT_FAST_CHECK_STATE *pstFastCheckState, LDWORD dwUser); ///@brief CLIENT_ExportAccessControlFastCheckData 接口输入参数 typedef struct tagNET_IN_EXPORT_ACCESSCONTROL_FASTCHECK_DATA { DWORD dwSize; // 结构体大小 DWORD dwDataType; // 数据类型掩码, 0x01 门禁对讲通信录; 0x02 门禁自定义密码; 0x04 门禁卡片信息; // 0x08 门禁目标信息; 0x10 门禁信息信息; 0x20 门禁对讲远程设备信息; 0x40 人员数据 char szPassWord[DH_COMMON_STRING_64]; // 压缩密码 fExportFastCheckCallBack cbExportFastCheckCallBack; // 导出快速复核信息回调函数 LDWORD dwUser; // 用户数据 } NET_IN_EXPORT_ACCESSCONTROL_FASTCHECK_DATA; ///@brief CLIENT_ExportAccessControlFastCheckData 接口输出参数 typedef struct tagNET_OUT_EXPORT_ACCESSCONTROL_FASTCHECK_DATA { DWORD dwSize; // 结构体大小 } NET_OUT_EXPORT_ACCESSCONTROL_FASTCHECK_DATA; ///@brief 导出门禁快速复核信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ExportAccessControlFastCheckData(LLONG lLoginID, NET_IN_EXPORT_ACCESSCONTROL_FASTCHECK_DATA* pstInParam, NET_OUT_EXPORT_ACCESSCONTROL_FASTCHECK_DATA* pstOutParam, const int nWaitTime); ///@brief 停止导出门禁快速复核数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopExportAccessControlFastCheckData(LLONG lExportHandle); ///@brief CLIENT_GetUSBInfo 输入结构体 typedef struct tagNET_IN_GET_USB_INFO { DWORD dwSize; // 赋值为结构体大小 }NET_IN_GET_USB_INFO; ///@brief USB 传输协议类型 typedef enum EM_USB_PROTOCOL_TYPE { EM_USB_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_USB_PROTOCOL_TYPE_V2, // USB 2.0 EM_USB_PROTOCOL_TYPE_V3, // USB 3.0 }EM_USB_PROTOCOL_TYPE; ///@brief CLIENT_GetUSBInfo 输出结构体 typedef struct tagNET_OUT_GET_USB_INFO { DWORD dwSize; // 赋值为结构体大小 EM_USB_PROTOCOL_TYPE emType; // USB传输协议类型 }NET_OUT_GET_USB_INFO; ///@brief 获取USB传输协议类型 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetUSBInfo(LLONG lLoginID, NET_IN_GET_USB_INFO* pstuIn, NET_OUT_GET_USB_INFO* pstuOut, int nWaitTime); ///@brief 充值机查询类型 typedef enum EM_RECHARGE_BUSINESS_QUERY_TYPE { EM_RECHARGE_BUSINESS_QUERY_TYPE_UNKNOWN = 0, // 未知 EM_RECHARGE_BUSINESS_QUERY_TYPE_CARD, // 卡号查询 EM_RECHARGE_BUSINESS_QUERY_TYPE_HUMANFACE, // 目标查询 }EM_RECHARGE_BUSINESS_QUERY_TYPE; ///@brief 充值机操作类型 typedef enum EM_RECHARGE_BUSINESS_OPERATE_TYPE { EM_RECHARGE_BUSINESS_OPERATE_TYPE_UNKNOWN = 0, // 未知 EM_RECHARGE_BUSINESS_OPERATE_TYPE_QUERY, // 账户查询 EM_RECHARGE_BUSINESS_OPERATE_TYPE_RECHARGE, // 账户充值 }EM_RECHARGE_BUSINESS_OPERATE_TYPE; ///@brief 充值机账户查询事件信息 typedef struct tagNET_RECHARGE_BUSINESS_QUERY_EVENT_INFO { EM_RECHARGE_BUSINESS_QUERY_TYPE emQueryType; // 查询类型 char szCardNo[32]; // 查询账户卡号 char szUserID[32]; // 查询账户的用户ID NET_TIME_EX stuTime; // 查询账户时设备本地时间 char* pszFaceData; // 目标照片:emType 为 EM_RECHARGE_BUSINESS_TYPE_CARD 时无意义 int nFaceDataLen; // 目标照片长度 }NET_RECHARGE_BUSINESS_QUERY_EVENT_INFO; ///@brief 充值机账户充值事件信息 typedef struct tagNET_RECHARGE_BUSINESS_RECHARGE_EVENT_INFO { EM_RECHARGE_BUSINESS_QUERY_TYPE emQueryType; // 查询类型 char szCardNo[32]; // 查询账户卡号 char szUserID[32]; // 查询账户的用户ID NET_TIME_EX stuTime; // 查询账户时设备本地时间 char* pszFaceData; // 目标照片:emType 为 EM_RECHARGE_BUSINESS_TYPE_CARD 时无意义 int nFaceDataLen; // 目标照片长度 int nAmount; // 充值金额,[100, 9999900],单位:分,必须是100的整数倍 }NET_RECHARGE_BUSINESS_RECHARGE_EVENT_INFO; ///@brief 充值机订阅回调信息 typedef struct tagNET_RECHARGE_BUSINESS_INFO { EM_RECHARGE_BUSINESS_OPERATE_TYPE emOperateType; // 操作类型 BYTE byReserved[4]; // 字节对齐 char szBusinessID[32]; // 业务ID void* pstuEventInfo; // 操作信息 // 当 emOperateType 为 EM_RECHARGE_BUSINESS_OPERATE_TYPE_QUERY,类型为 NET_RECHARGE_BUSINESS_QUERY_EVENT_INFO // 当 emOperateType 为 EM_RECHARGE_BUSINESS_OPERATE_TYPE_RECHARGE,类型为 NET_RECHARGE_BUSINESS_RECHARGE_EVENT_INFO }NET_RECHARGE_BUSINESS_INFO; ///@brief 充值机订阅信息回调函数 typedef void (CALLBACK *fRechargeBusiness)(LLONG lAttachHandle, NET_RECHARGE_BUSINESS_INFO* pInfo, LDWORD dwUser); ///@brief CLIENT_AttachRechargeBusiness 输入结构体 typedef struct tagNET_IN_ATTACH_RECHARGE_BUSINESS { DWORD dwSize; // 赋值为结构体大小 BYTE szReserved[4]; // 保留字段 fRechargeBusiness cbNotify; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_RECHARGE_BUSINESS; ///@brief CLIENT_AttachRechargeBusiness 输出结构体 typedef struct tagNET_OUT_ATTACH_RECHARGE_BUSINESS { DWORD dwSize; // 赋值为结构体大小 }NET_OUT_ATTACH_RECHARGE_BUSINESS; ///@brief 订阅充值机业务 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachRechargeBusiness(LLONG lLoginID, NET_IN_ATTACH_RECHARGE_BUSINESS* pInParam, NET_OUT_ATTACH_RECHARGE_BUSINESS* pOutParam, int nWaitTime); ///@brief 取消订阅充值机业务 // lAttachHandle 为 CLIENT_AttachRechargeBusiness 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachRechargeBusiness(LLONG lAttachHandle); ///@brief 充值错误码 typedef enum EM_RECHARGE_BUSINESS_ERROR_CODE { EM_RECHARGE_BUSINESS_ERRORCODE_UNKNOWN = -1, // 未知 EM_RECHARGE_BUSINESS_ERRORCODE_NONE, // 无错误 EM_RECHARGE_BUSINESS_ERRORCODE_UNAUTHORIZED_CARD = 11, // 卡片未授权 EM_RECHARGE_BUSINESS_ERRORCODE_INVALID_CARD = 14, // 无效卡号 EM_RECHARGE_BUSINESS_ERRORCODE_EXCEED_MAX_AMOUNT = 48, // 超出卡最大金额 EM_RECHARGE_BUSINESS_ERRORCODE_INVALID_TERMINAL = 89, // 无效终端 EM_RECHARGE_BUSINESS_ERRORCODE_SYSTEM_EXCEPTION = 96, // 系统异常 EM_RECHARGE_BUSINESS_ERRORCODE_EXCEED_DAY_RECHARGE_NUM = 107, // 超出日最大充值次数 EM_RECHARGE_BUSINESS_ERRORCODE_EXCEED_SINGLE_MAX_RECHARGE_AMOUNT = 108, // 超出单次最大充值金额 }EM_RECHARGE_BUSINESS_ERROR_CODE; ///@brief CLIENT_SetRechargeBusinessQueryResult 输入结构体 typedef struct tagNET_IN_RECHARGE_BUSINESS_QUERY_RESULT { DWORD dwSize; // 赋值为结构体大小 char szCardNo[32]; // 卡号 char szUserID[32]; // 用户ID char szBusinessID[32]; // 业务ID,CLIENT_AttachRechargeBusiness 回调函数上报的 szBusinessID int nBalance; // 账户余额,单位:分 EM_RECHARGE_BUSINESS_ERROR_CODE emErrorCode; // 错误码 }NET_IN_RECHARGE_BUSINESS_QUERY_RESULT; ///@brief CLIENT_SetRechargeBusinessQueryResult 输出结构体 typedef struct tagNET_OUT_RECHARGE_BUSINESS_QUERY_RESULT { DWORD dwSize; // 赋值为结构体大小 }NET_OUT_RECHARGE_BUSINESS_QUERY_RESULT; ///@brief 设置充值机查询结果 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRechargeBusinessQueryResult(LLONG lLoginID, NET_IN_RECHARGE_BUSINESS_QUERY_RESULT* pInParam, NET_OUT_RECHARGE_BUSINESS_QUERY_RESULT* pOutParam, int nWaitTime); ///@brief CLIENT_SetRechargeBusinessRechargeResult 输入结构体 typedef struct tagNET_IN_RECHARGE_BUSINESS_RECHARGE_RESULT { DWORD dwSize; // 赋值为结构体大小 char szCardNo[32]; // 卡号 char szUserID[32]; // 用户ID char szBusinessID[32]; // 业务ID,CLIENT_AttachRechargeBusiness 回调函数上报的 szBusinessID int nBalance; // 账户余额,单位:分 EM_RECHARGE_BUSINESS_ERROR_CODE emErrorCode; // 错误码 }NET_IN_RECHARGE_BUSINESS_RECHARGE_RESULT; ///@brief CLIENT_SetRechargeBusinessRechargeResult 输出结构体 typedef struct tagNET_OUT_RECHARGE_BUSINESS_RECHARGE_RESULT { DWORD dwSize; // 赋值为结构体大小 }NET_OUT_RECHARGE_BUSINESS_RECHARGE_RESULT; ///@brief 设置充值机充值结果 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRechargeBusinessRechargeResult(LLONG lLoginID, NET_IN_RECHARGE_BUSINESS_RECHARGE_RESULT* pInParam, NET_OUT_RECHARGE_BUSINESS_RECHARGE_RESULT* pOutParam, int nWaitTime); ///@brief 设备需要展示的颜色 typedef enum tagEM_SHOW_COLOR { EM_SHOW_COLOR_UNKNOWN, // 未知 EM_SHOW_COLOR_BLUE, // 蓝 EM_SHOW_COLOR_YELLOW, // 黄 EM_SHOW_COLOR_ORANGE, // 橙 EM_SHOW_COLOR_RED, // 红 }EM_SHOW_COLOR; ///@brief CLIENT_SetPersonInfoInputResult 输入参数 typedef struct tagNET_IN_PERSON_INFO_INPUT_RESULT { DWORD dwSize; // 结构体大小 int nChannelID; // 通道ID UINT nResult; // 0 : 成功 1 : 人员信息不在人员库中 BYTE byReserved[4]; // 字节对齐 char szCitizenID[64]; // 证件号码 EM_SHOW_COLOR emColor; // 设备展示颜色(定制) UINT nDataType; // 0:实时采集的数据 1:离线采集的数据 }NET_IN_PERSON_INFO_INPUT_RESULT; ///@brief CLIENT_SetPersonInfoInputResult 输出参数 typedef struct tagNET_OUT_PERSON_INFO_INPUT_RESULT { DWORD dwSize; // 结构体大小 }NET_OUT_PERSON_INFO_INPUT_RESULT; ///@brief 下发人员信息录入结果 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPersonInfoInputResult(LLONG lLoginID, NET_IN_PERSON_INFO_INPUT_RESULT* pInParam, NET_OUT_PERSON_INFO_INPUT_RESULT* pOutParam, int nWaitTime); ///@brief CLIENT_PlayBackBySecondaryAnalyse 接口输入参数 typedef struct tagNET_IN_PLAYBACK_BY_SECONDARYANALYSE { DWORD dwSize; // 结构体大小 int nChannelID; // 通道 NET_TIME stBeginTime; // 开始时间 NET_TIME stEndTime; // 结束时间 HWND hWnd; // 播放窗口, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调 LDWORD dwPosUser; // 进度回调用户信息 fDataCallBack fDownLoadDataCallBack; // 数据回调 LDWORD dwDataUser; // 数据回调用户信息 int nPlayDirection; // 播放方向, 0:正放; 1:倒放; int nTaskID; // 任务ID,浓缩视频回放使用 }NET_IN_PLAYBACK_BY_SECONDARYANALYSE; ///@brief CLIENT_PlayBackBySecondaryAnalyse 接口输出参数 typedef struct tagNET_OUT_PLAYBACK_BY_SECONDARYANALYSE { DWORD dwSize; // 结构体大小 }NET_OUT_PLAYBACK_BY_SECONDARYANALYSE; ///@brief 二次分析回放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackBySecondaryAnalyse(LLONG lLoginID, NET_IN_PLAYBACK_BY_SECONDARYANALYSE* pInParam, NET_OUT_PLAYBACK_BY_SECONDARYANALYSE* pOutParam,int nWaitTime); ///@brief CLIENT_PlayBackSecondaryAnalyseByFile 接口输入参数 typedef struct tagNET_IN_PLAYBACK_SECONDARYANALYSE_BY_FILE { DWORD dwSize; // 结构体大小 int nTaskID; // 任务ID,浓缩视频回放使用 NET_RECORDFILE_INFO stuRecordInfo; // 录像文件信息 HWND hWnd; // 播放窗口, 可为NULL fDownLoadPosCallBack cbDownLoadPos; // 进度回调函数 fDataCallBack fDownLoadDataCallBack; // 回放数据回调函数 LDWORD dwUserData; // 进度回调用户信息 LDWORD dwDataUser; // 回放数据回调用户信息 int nPlayDirection; // 播放方向, 0:正放; 1:倒放; char szResvered[4]; // 字节对齐 }NET_IN_PLAYBACK_SECONDARYANALYSE_BY_FILE; ///@brief CLIENT_PlayBackSecondaryAnalyseByFile 接口输出参数 typedef struct tagNET_OUT_PLAYBACK_SECONDARYANALYSE_BY_FILE { DWORD dwSize; // 结构体大小 }NET_OUT_PLAYBACK_SECONDARYANALYSE_BY_FILE; ///@brief 按文件回放二次分析录像 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return 录像文件下载句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_PlayBackSecondaryAnalyseByFile(LLONG lLoginID, NET_IN_PLAYBACK_SECONDARYANALYSE_BY_FILE* pstuInParam, NET_OUT_PLAYBACK_SECONDARYANALYSE_BY_FILE* pstuOutParam,int nWaitTime); ///@brief CLIENT_DownloadBySecondaryAnalyse 接口输入参数 typedef struct tagNET_IN_DOWNLOAD_BY_SECONDARYANALYSE { DWORD dwSize; // 结构体大小 NET_RECORDFILE_INFO stuInfo; // 录像文件信息 int nTaskID; // 任务ID,浓缩视频回放使用 char* szSavedFileName; // 文件保存路径 fDownLoadPosCallBack cbDownLoadPos; // 进度回调函数 fDataCallBack fDownLoadDataCallBack; // 回放数据回调函数 LDWORD dwUserData; // 进度回调用户信息 LDWORD dwDataUser; // 回放数据回调用户信息 }NET_IN_DOWNLOAD_BY_SECONDARYANALYSE; ///@brief CLIENT_DownloadBySecondaryAnalyse 接口输出参数 typedef struct tagNET_OUT_DOWNLOAD_BY_SECONDARYANALYSE { DWORD dwSize; // 结构体大小 }NET_OUT_DOWNLOAD_BY_SECONDARYANALYSE; ///@brief 二次分析下载 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return 录像文件下载句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DownloadBySecondaryAnalyse(LLONG lLoginID, NET_IN_DOWNLOAD_BY_SECONDARYANALYSE* pstuInParam, NET_OUT_DOWNLOAD_BY_SECONDARYANALYSE* pstuOutParam,int nWaitTime); ///@brief CLIENT_GetDevWifiListInfo 接口输入参数 typedef struct tagNET_IN_GET_DEV_WIFI_LIST { DWORD dwSize; // 结构体大小 UINT nPort; // 设备端口号 char szDevIP[64]; // 设备IP } NET_IN_GET_DEV_WIFI_LIST; ///@brief CLIENT_GetDevWifiListInfo 接口输出参数 typedef struct tagNET_OUT_GET_DEV_WIFI_LIST { DWORD dwSize; // 结构体大小 UINT nWlanDevCount; // 搜索到的无线设备个数 DHDEV_WLAN_DEVICE_EX stuWlanDev[MAX_WLAN_DEVICE_NUM]; // 搜索到的无线设备信息 } NET_OUT_GET_DEV_WIFI_LIST; ///@brief CLIENT_SetDevWifiInfo 接口输入参数 typedef struct tagNET_IN_SET_DEV_WIFI { DWORD dwSize; // 结构体大小 UINT nPort; // 设备端口号 char szDevIP[64]; // 设备IP int nEnable; // 无线使能, 0: 使能, 1: 关闭 char szSSID[36]; // SSID int nLinkMode; // 连接模式;0:auto,1:adhoc,2:Infrastructure int nEncryption; // 加密;0:off,2:WEP64bit,3:WEP128bit, 4:WPA-PSK-TKIP, 5: WPA-PSK-CCMP(AES), 6:WPA2-PSK-TKIP 7:WPA2-PSK-AES 8:WPA-TKIP 9:WPA-AES // 10:WPA2-TKIP 11:WPA2-AES 12:AUTO 13:WEP-OPEN 14:WEP-SHARED; 15:WPA3-SAE-CCMP; 16:WPA3-SAE/PSK-CCMP int nKeyType; // 0:Hex,1:ASCII int nKeyID; // 序号 char szKeys[4][32]; // 四组密码, nEncryption为非WPA方式时使用 char szWPAKeys[128]; // nEncryption为WPA相关方式时使用,传128长度,不用结束符。 int nKeyFlag; int nConnectedFlag; // 0: 无连接, 1: 连接 char szMacAddr[18]; // 设备MAC地址 } NET_IN_SET_DEV_WIFI; ///@brief CLIENT_SetDevWifiInfo 接口输出参数 typedef struct tagNET_OUT_SET_DEV_WIFI { DWORD dwSize; // 结构体大小 } NET_OUT_SET_DEV_WIFI; ///@brief 获取设备wifi信息列表, 无需鉴权 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevWifiListInfo(NET_IN_GET_DEV_WIFI_LIST *pInParam, NET_OUT_GET_DEV_WIFI_LIST *pOutParam, const int nWaitTime); ///@brief 下发wifi信息,无需鉴权 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDevWifiInfo(NET_IN_SET_DEV_WIFI *pInParam, NET_OUT_SET_DEV_WIFI *pOutParam, const int nWaitTime); ///@brief 设置WLAN配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetWlanConfigInfo(LLONG lLoginID, NET_IN_WLAN_CONFIG_INFO *pInParam, NET_OUT_WLAN_CONFIG_INFO *pOutParam, const int nWaitTime); ///@brief 抓拍物体信息 typedef struct tagNET_SNAP_OBJECT_INFO { NET_RECT stuBoundingBox; // 物体包围盒, 点坐标归一化到[0,8191]坐标 BYTE byReserved[512]; // 保留字节 } NET_SNAP_OBJECT_INFO; ///@brief CLIENT_SnapPictureByAnalyseObject 接口输入参数 typedef struct tagNET_IN_SNAP_BY_ANALYSE_OBJECT { DWORD dwSize; // 结构体大小 UINT nChannelID; // 通道号 BYTE byReserved[4]; // 字节对齐 UINT nSnapObjectNum; // 抓拍物体个数 NET_SNAP_OBJECT_INFO stuSnapObjects[32]; // 抓拍物体信息 } NET_IN_SNAP_BY_ANALYSE_OBJECT; ///@brief CLIENT_SnapPictureByAnalyseObject 接口输出参数 typedef struct tagNET_OUT_SNAP_BY_ANALYSE_OBJECT { DWORD dwSize; // 结构体大小 } NET_OUT_SNAP_BY_ANALYSE_OBJECT; ///@brief 选中目标进行抓拍 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SnapPictureByAnalyseObject(LLONG lLoginID, NET_IN_SNAP_BY_ANALYSE_OBJECT* pInParam, NET_OUT_SNAP_BY_ANALYSE_OBJECT* pOutParam,int nWaitTime); ///@brief 智能算法的状态信息 typedef struct tagNET_INTELLI_STATE_INFO { BOOL bSupportOnlyAlgorithmUpgrade; // 是否支持算法独立升级 UINT nAlgorithmNum; // 算法个数 NET_ALGORITHM_INFO stuAlgorithmInfos[MAX_ANALYSE_ALGORITHM_NUM]; // 算法版本信息 BYTE byReserve[1024]; // 保留字节 }NET_INTELLI_STATE_INFO; ///@brief 智能算法的状态信息回调函数 typedef void (CALLBACK *fIntelliState)(LLONG lAttachHandle, NET_INTELLI_STATE_INFO* pInfo, LDWORD dwUser); ///@brief CLIENT_AttachIntelliState 输入结构体 typedef struct tagNET_IN_ATTACH_INTELLI_STATE { DWORD dwSize; // 结构体大小 BYTE szReserved[4]; // 保留字段 fIntelliState cbNotify; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_INTELLI_STATE; ///@brief CLIENT_AttachIntelliState 输出结构体 typedef struct tagNET_OUT_ATTACH_INTELLI_STATE { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_INTELLI_STATE; ///@brief 订阅智能算法的状态信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachIntelliState(LLONG lLoginID, NET_IN_ATTACH_INTELLI_STATE* pInParam, NET_OUT_ATTACH_INTELLI_STATE* pOutParam, int nWaitTime); ///@brief 取消订阅智能算法的状态信息 ///@brief lAttachHandle 为 CLIENT_AttachIntelliState 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachIntelliState(LLONG lAttachHandle); ///@brief CLIENT_GetGDPRAbility 输入参数 typedef struct tagNET_IN_GET_GDPR_ABILITY { DWORD dwSize; // 结构体大小 }NET_IN_GET_GDPR_ABILITY; ///@brief GDPR能力集 typedef enum EM_GDPR_ABILITY { EM_GDPR_ABILITY_V1_STREAM = 0x01, // 支持GDPRV1版本的拉流、回放 EM_GDPR_ABILITY_V2_STREAM = 0x02, // 支持GDPRV2版本的拉流、回放 EM_GDPR_ABILITY_DOWNLOAD = 0x04, // 支持GDPR下载 }EM_GDPR_ABILITY; ///@brief CLIENT_GetGDPRAbility 输出参数 typedef struct tagNET_OUT_GET_GDPR_ABILITY { DWORD dwSize; // 结构体大小 int nAbility; // 能力,取值见 EM_GDPR_ABILITY,支持 '|' 运算 }NET_OUT_GET_GDPR_ABILITY; ///@brief 获取设备GDPR能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetGDPRAbility(LLONG lLoginID, NET_IN_GET_GDPR_ABILITY* pInParam, NET_OUT_GET_GDPR_ABILITY* pOutParam, int nWaitTime); ///@brief GDPR使能全局开关 CLIENT_NET_API void CALL_METHOD CLIENT_SetGDPREnable(BOOL bEnable); ///@brief 目标下载失败错误码 typedef enum tagEM_FACEDB_ERRCODE { EM_FACEDB_ERRCODE_UNKNOWN = -1, // 未知 EM_FACEDB_ERRCODE_SUCCESS, // 成功 EM_FACEDB_ERRCODE_CONNECT_FAIL = 2, // 连接失败 EM_FACEDB_ERRCODE_LOGIN_FAIL, // 登陆失败 EM_FACEDB_ERRCODE_RECV_TIMEOUT, // 接收数据超时 EM_FACEDB_ERRCODE_STRING_NULL, // 目标字符串为空 EM_FACEDB_ERRCODE_FILE_DIRECTORY_NOT_EXIST, // 目录或文件不存在 EM_FACEDB_ERRCODE_STORAGE_FAIL, // 文件存储失败 } EM_FACEDB_ERRCODE; ///@brief 目标库下载进度回调信息 typedef struct tagNET_CB_FACEDB_DOWNLOAD_RESULT { char szFaceDbVersion[32]; // 目标库版本号 UINT nTotalDownloadCount; // 总下载文件个数 UINT nSuccessDownloadCount; // 已下载文件个数 EM_FACEDB_ERRCODE emFaceDbErrCode; // 目标下载失败错误码 char szGroupID[64]; // 人员组ID int nFaceUUIDCount; // 人脸UUID个数 char szFaceUUID[10][64]; // 人脸UUID BYTE byReserved[316]; // 保留字节 } NET_CB_FACEDB_DOWNLOAD_RESULT; ///@brief 订阅目标库下载进度回调函数原型, lAttachHandle为 CLIENT_AttachFaceDbDownLoadResult 接口的返回值 typedef void (CALLBACK *fFaceDbDownLoadResult)(LLONG lAttachHandle, NET_CB_FACEDB_DOWNLOAD_RESULT* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachFaceDbDownLoadResult 接口输入参数 typedef struct tagNET_IN_ATTACH_FACEDB_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fFaceDbDownLoadResult cbFaceDbDownLoadResult; // 目标库下载进度回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_FACEDB_DOWNLOAD_RESULT; ///@brief CLIENT_AttachFaceDbDownLoadResult 接口输出参数 typedef struct tagNET_OUT_ATTACH_FACEDB_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_FACEDB_DOWNLOAD_RESULT; ///@brief 订阅目标库下载结果 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachFaceDbDownLoadResult(LLONG lLoginID, NET_IN_ATTACH_FACEDB_DOWNLOAD_RESULT* pInParam, NET_OUT_ATTACH_FACEDB_DOWNLOAD_RESULT* pOutParam, int nWaitTime); ///@brief 取消订阅目标库下载结果, lAttachHandle为 CLIENT_AttachFaceDbDownLoadResult 接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachFaceDbDownLoadResult(LLONG lAttachHandle); ///@brief 目标库下载进度回调信息 typedef struct tagNET_CB_FACEDB_MODEL_RESULT { char szFaceDbVersion[32]; // 目标库版本号 UINT nTotalModelCount; // 需要建模文件个数 UINT nSuccessModelCount; // 已建模文件个数 char szGroupID[64]; // 人员组ID int nErrorCode; // 错误码, -1:未知 0:成功 1:未知错误 2:建模失败 int nFaceUUIDCount; // 人脸UUID个数 char szFaceUUID[10][64]; // 人脸UUID BYTE byReserved[1024]; // 保留字节 } NET_CB_FACEDB_MODEL_RESULT; ///@brief 订阅目标库下载进度回调函数原型, lAttachHandle为 CLIENT_AttachFaceDbModelResult 接口的返回值 typedef void (CALLBACK *fFaceDbModelResult)(LLONG lAttachHandle, NET_CB_FACEDB_MODEL_RESULT* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachFaceDbModelResult 接口输入参数 typedef struct tagNET_IN_ATTACH_FACEDB_MODEL_RESULT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fFaceDbModelResult cbFaceDbModelResult; // 目标库下载进度回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_FACEDB_MODEL_RESULT; ///@brief CLIENT_AttachFaceDbModelResult 接口输出参数 typedef struct tagNET_OUT_ATTACH_FACEDB_MODEL_RESULT { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_FACEDB_MODEL_RESULT; ///@brief 订阅人脸库建模进度通知 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachFaceDbModelResult(LLONG lLoginID, NET_IN_ATTACH_FACEDB_MODEL_RESULT* pstuInParam, NET_OUT_ATTACH_FACEDB_MODEL_RESULT* pstuOutParam, int nWaitTime); ///@brief 取消订阅人脸库建模进度通知, lAttachHandle为 CLIENT_AttachFaceDbModelResult 接口的返回值 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachFaceDbModelResult(LLONG lAttachHandle); ///@brief 算法方案 typedef enum tagEM_AI_SOLUTION_ALGORITHM_TYPE { EM_AI_SOLUTION_ALGORITHM_TYPE_UNKNOWN = 0, // 未知 EM_AI_SOLUTION_ALGORITHM_TYPE_ODSOLUTION, // 目标检测算法 EM_AI_SOLUTION_ALGORITHM_TYPE_OCSOLUTION, // 图像多属性分类算法 EM_AI_SOLUTION_ALGORITHM_TYPE_OD_OC_SOLUTION, // 检测及多属性分类混合算法 EM_AI_SOLUTION_ALGORITHM_TYPE_BDSOLUTION, // 视频行为分析算法 EM_AI_SOLUTION_ALGORITHM_TYPE_OCRSOLUTION, // 图像文本识别算法 EM_AI_SOLUTION_ALGORITHM_TYPE_IRSOLUTION, // 检索对比算法 } EM_AI_SOLUTION_ALGORITHM_TYPE; ///@brief 开放智能能力信息 typedef struct tagNET_AI_SOLUTION_INFO { char szAMCC[128]; // AMCC号 EM_AI_SOLUTION_ALGORITHM_TYPE emSolutionType; // 算法方案 char szReserved[1020]; // 保留字节 } NET_AI_SOLUTION_INFO; ///@brief 开放智能能力 typedef struct tagNET_CB_AI_SOLUTION_LIST { NET_AI_SOLUTION_INFO stuAISolutionList[64]; // AI开放智能能力 int nAISolutionListNum; // AI开放智能能力数量 char szReserved[1020]; // 保留字节 } NET_CB_AI_SOLUTION_LIST; ///@brief 订阅开放智能能力回调函数原型, lAttachHandle为 CLIENT_AttachAISolutionList 接口的返回值 typedef void (CALLBACK *fAISolutionListResult)(LLONG lAttachHandle, NET_CB_AI_SOLUTION_LIST* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachAISolutionList 接口输入参数 typedef struct tagNET_IN_ATTACH_AI_SOLUTION_LIST { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fAISolutionListResult cbAISolutionListResult; // 开放智能能力变更通知回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_AI_SOLUTION_LIST; ///@brief CLIENT_AttachAISolutionList 接口输出参数 typedef struct tagNET_OUT_ATTACH_AI_SOLUTION_LIST { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_AI_SOLUTION_LIST; ///@brief 订阅开放智能能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 订阅句柄,0表示订阅失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachAISolutionList(LLONG lLoginID, NET_IN_ATTACH_AI_SOLUTION_LIST* pstuInParam, NET_OUT_ATTACH_AI_SOLUTION_LIST* pstuOutParam, int nWaitTime); ///@brief 取消订阅订阅开放智能能力, lAttachHandle为 CLIENT_AttachAISolutionList 接口的返回值 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachAISolutionList(LLONG lAttachHandle); ///@brief 目标库下载任务信息 typedef struct tagNET_FACEDB_DOWNLOAD_TASK_INFO { UINT nURLNum; // 图片URL个数 char szURLList[4][256]; // 图片URL地址列表, 一张目标图片的地址可能存放在多个ftp服务器上 char szID[32]; // ID char szFaceUUID[32]; // 目标唯一码,每次平台更新目标图片都需要更新该字段,用于设备端比较是否重新下载目标图片 BYTE byReserved[2048]; // 保留字节 } NET_FACEDB_DOWNLOAD_TASK_INFO; ///@brief CLIENT_AddFaceDbDownLoadTask 接口输入参数 typedef struct tagNET_IN_ADD_FACEDB_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 BOOL bIsEnd; // 是否为最后一包(此字段废弃) char szFaceDbVersion[32]; // 目标库版本号 BYTE byReserved[4]; // 字节对齐 UINT nTaskNum; // 目标库下载任务个数, 由用户指定个数, 最多支持100个 NET_FACEDB_DOWNLOAD_TASK_INFO *pstTaskInfo; // 目标库下载任务信息, 由用户申请空间, 大小为nTaskNum*sizeof(NET_FACELIB_DOWNLOAD_TASK_INFO) UINT nPacketTotal; // 表示当前任务总共有几个包 UINT nPacketIndex; // 表示当前是第几个包,下标从1开始 char szGroupID[64]; // 人员组ID, 表示下载到指定的人员组ID的目标库中 } NET_IN_ADD_FACEDB_DOWNLOAD_TASK; ///@brief CLIENT_AddFaceDbDownLoadTask 接口输出参数 typedef struct tagNET_OUT_ADD_FACEDB_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 } NET_OUT_ADD_FACEDB_DOWNLOAD_TASK; ///@brief 添加目标库下载任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddFaceDbDownLoadTask(LLONG lLoginID, NET_IN_ADD_FACEDB_DOWNLOAD_TASK* pInParam, NET_OUT_ADD_FACEDB_DOWNLOAD_TASK* pOutParam, int nWaitTime); ///@brief 车牌库下载进度回调信息 typedef struct tagNET_CB_PLATENUMBERDB_DOWNLOAD_RESULT { char szPlateNumberDbVersion[32]; // 车牌库版本号 UINT nTotalDownloadCount; // 需要下载文件个数 UINT nSuccessDownloadCount; // 已下载文件个数 EM_FACEDB_ERRCODE emPlateNumberDbErrorCode; // 车牌下载失败错误码 BYTE byReserved[1020]; // 保留字节 } NET_CB_PLATENUMBERDB_DOWNLOAD_RESULT; ///@brief 订阅车牌库下载进度回调函数原型, lAttachHandle为 CLIENT_AttachPlateNumberDbDownloadResult 接口的返回值 typedef void (CALLBACK *fPlateNumberDbDownloadResult)(LLONG lAttachHandle, NET_CB_PLATENUMBERDB_DOWNLOAD_RESULT* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachPlateNumberDbDownloadResult 接口输入参数 typedef struct tagNET_IN_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fPlateNumberDbDownloadResult cbPlateNumberDbDownloadResult; // 车牌库下载进度回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT; ///@brief CLIENT_AttachPlateNumberDbDownloadResult 接口输出参数 typedef struct tagNET_OUT_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT; ///@brief 订阅车牌库下载进度 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPlateNumberDbDownloadResult(LLONG lLoginID, NET_IN_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT* pInParam, NET_OUT_ATTACH_PLATENUMBERDB_DOWNLOAD_RESULT* pOutParam, int nWaitTime); ///@brief 取消订阅车牌库下载进度, lAttachHandle为 CLIENT_AttachPlateNumberDbDownloadResult 接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPlateNumberDbDownloadResult(LLONG lAttachHandle); ///@brief 车牌库下载任务信息 typedef struct tagNET_PLATE_NUMBER_DB_DOWNLOAD_TASK_INFO { UINT nURLNum; // 图片URL个数 char szURLList[4][256]; // 图片URL地址列表, 一张车牌图片的地址可能存放在多个ftp服务器上 BYTE byReserved[1020]; // 保留字节 } NET_PLATE_NUMBER_DB_DOWNLOAD_TASK_INFO; ///@brief CLIENT_AddPlateNumberDbDownloadTask 接口输入参数 typedef struct tagNET_IN_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 UINT nTaskNum; // 车辆库下载任务个数, 由用户指定个数, 最多支持100个 NET_PLATE_NUMBER_DB_DOWNLOAD_TASK_INFO *pstTaskInfo; // 车辆库下载任务信息, 由用户申请空间, 大小为nTaskNum*sizeof(NET_PLATE_NUMBER_DB_DOWNLOAD_TASK_INFO) char szPlateNumberDbVersion[32]; // 车辆库版本 UINT nPacketTotal; // 表示当前任务总共有几个包 UINT nPacketIndex; // 表示当前是第几个包,下标从1开始 } NET_IN_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK; ///@brief CLIENT_AddPlateNumberDbDownloadTask 接口输出参数 typedef struct tagNET_OUT_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 } NET_OUT_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK; ///@brief 添加车牌库下载任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddPlateNumberDbDownloadTask(LLONG lLoginID, NET_IN_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK* pInParam, NET_OUT_ADD_PLATE_NUMBER_DB_DOWNLOAD_TASK* pOutParam, int nWaitTime); ///@brief 图片库下载任务信息 typedef struct tagNET_PIC_FILE_DOWNLOAD_TASK_INFO { UINT nTaskId; // 任务ID UINT nURLNum; // 图片URL个数 char szURLList[4][256]; // 图片URL地址列表, 一张车牌图片的地址可能存放在多个ftp服务器上 BYTE byReserved[1024]; // 保留字节 }NET_PIC_FILE_DOWNLOAD_TASK_INFO; ///@brief CLIENT_AddPicFileDownloadTask 接口输入参数 typedef struct tagNET_IN_ADD_PIC_FILE_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 UINT nPacketTotal; // 表示当前任务总共有几个包 UINT nPacketIndex; // 表示当前是第几个包(下标从1开始) UINT nDelayTime; // 任务延时时间(单位:秒) NET_PIC_FILE_DOWNLOAD_TASK_INFO *pstTaskInfo; // 图片库下载任务信息, 大小为nTaskNum*sizeof(NET_PIC_FILE_DOWNLOAD_TASK_INFO) UINT nTaskNum; // 客户申请图片下载任务个数 }NET_IN_ADD_PIC_FILE_DOWNLOAD_TASK; ///@brief CLIENT_AddPicFileDownloadTask 接口输出参数 typedef struct tagNET_OUT_ADD_PIC_FILE_DOWNLOAD_TASK { DWORD dwSize; // 结构体大小 }NET_OUT_ADD_PIC_FILE_DOWNLOAD_TASK; ///@brief 添加图片下载任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddPicFileDownloadTask(LLONG lLoginID, const NET_IN_ADD_PIC_FILE_DOWNLOAD_TASK *pInParam, NET_OUT_ADD_PIC_FILE_DOWNLOAD_TASK *pOutParam, int nWaitTime); ///@brief 图片下载任务返回码 typedef enum tagEM_PIC_FILE_ERRCODE { EM_PIC_FILE_ERRCODE_UNKNOWN = -1, // 未知 EM_PIC_FILE_ERRCODE_SUCCESS, // 成功 EM_PIC_FILE_ERRCODE_CONNECT_FAIL = 2, // 连接失败 EM_PIC_FILE_ERRCODE_LOGIN_FAIL, // 登陆失败 EM_PIC_FILE_ERRCODE_RECV_TIMEOUT, // 接收数据超时 EM_PIC_FILE_ERRCODE_STRING_NULL, // 目标字符串为空 EM_PIC_FILE_ERRCODE_FILE_DIRECTORY_NOT_EXIST, // 目录或文件不存在 EM_PIC_FILE_ERRCODE_STORAGE_FAIL, // 文件存储失败 }EM_PIC_FILE_ERRCODE; ///@brief 图片下载任务信息 typedef struct tagNET_PIC_FILE_URL_LIST_INFO { EM_PIC_FILE_ERRCODE emPicFileDbErrorCode; // 图片下载任务失败错误码 UINT nTaskId; // 任务ID char szFileUrl[256]; // 文件下载地址 BYTE byReserved[256]; // 保留字节 }NET_PIC_FILE_URL_LIST_INFO; ///@brief 订阅图片下载任务回调信息 typedef struct tagNET_CB_PIC_FILE_DOWNLOAD_RESULT { NET_PIC_FILE_URL_LIST_INFO *pUrlList; // 图片下载任务列表信息,由库申请空间, 大小为nUrlListNum*sizeof(NET_PIC_FILE_URL_LIST_INFO) int nUrlListNum; // 下载图片信息个数 BYTE byReserved[1020]; // 保留字节 }NET_CB_PIC_FILE_DOWNLOAD_RESULT; ///@brief 订阅图片下载任务回调函数原型, lAttachHandle为 CLIENT_AttachPicFileDownloadResult 接口的返回值 typedef void (CALLBACK *fPicFileDownloadResult)(LLONG lAttachHandle, NET_CB_PIC_FILE_DOWNLOAD_RESULT *pstResult, LDWORD dwUser); ///@brief CLIENT_AttachPicFileDownloadResult 接口输入参数 typedef struct tagNET_IN_ATTACH_PIC_FILE_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fPicFileDownloadResult cbPicFileDownloadResult; // 订阅图片下载任务状态回调函数 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_PIC_FILE_DOWNLOAD_RESULT; ///@brief CLIENT_AttachPicFileDownloadResult 接口输出参数 typedef struct tagNET_OUT_ATTACH_PIC_FILE_DOWNLOAD_RESULT { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_PIC_FILE_DOWNLOAD_RESULT; ///@brief 订阅图片下载任务 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPicFileDownloadResult(LLONG lLoginID, const NET_IN_ATTACH_PIC_FILE_DOWNLOAD_RESULT *pInParam, NET_OUT_ATTACH_PIC_FILE_DOWNLOAD_RESULT *pOutParam, int nWaitTime); ///@brief 取消订阅图片下载任务, lAttachHandle为 CLIENT_AttachPicFileDownloadResult 接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPicFileDownloadResult(LLONG lAttachHandle); ///@brief CLIENT_GetPlateNumberDbVersion 接口输入参数 typedef struct tagNET_IN_GET_PLATE_NUMBER_DB_VERSION { DWORD dwSize; // 结构体大小 } NET_IN_GET_PLATE_NUMBER_DB_VERSION; ///@brief CLIENT_GetPlateNumberDbVersion 接口输出参数 typedef struct tagNET_OUT_GET_PLATE_NUMBER_DB_VERSION { DWORD dwSize; // 结构体大小 char szPlateNumberDbVersion[32]; // 车牌库版本号,如果从来未下发或者设备异常没有下发完,车牌库版本号”0” } NET_OUT_GET_PLATE_NUMBER_DB_VERSION; ///@brief 平台主动查询设备端车牌库版本信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPlateNumberDbVersion(LLONG lLoginID, NET_IN_GET_PLATE_NUMBER_DB_VERSION* pInParam, NET_OUT_GET_PLATE_NUMBER_DB_VERSION* pOutParam, int nWaitTime); ///@brief FTP服务协议类型 typedef enum tagEM_FTP_PROTOCOL_TYPE { EM_FTP_PROTOCOL_TYPE_UNKNOWN = -1, // 未知 EM_FTP_PROTOCOL_TYPE_FTPS, // ftps } EM_FTP_PROTOCOL_TYPE; ///@brief FTP服务信息 typedef struct tagNET_FTP_SERVER_INFO { char szIP[32]; // IP地址 char szUserName[32]; // 用户名 char szPassword[32]; // 密码 UINT nPort; // 端口号 EM_FTP_PROTOCOL_TYPE emFtpProtocolType; // FTP服务协议类型 UINT nTimeOut; // 连接超时时间, 单位: 毫秒 char szDirectory[128]; // 存放视频的根目录 BYTE byReserved[1020]; // 保留字节 } NET_FTP_SERVER_INFO; ///@brief CLIENT_SendFtpUploadServerInfo 接口输入参数 typedef struct tagNET_IN_SEND_FTP_UPLOAD_SERVER_INFO { DWORD dwSize; // 结构体大小 UINT nFtpServerNum; // FTP 服务个数 NET_FTP_SERVER_INFO stuFtpServerInfo[4]; // FTP 服务信息 } NET_IN_SEND_FTP_UPLOAD_SERVER_INFO; ///@brief CLIENT_SendFtpUploadServerInfo 接口输出参数 typedef struct tagNET_OUT_SEND_FTP_UPLOAD_SERVER_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_SEND_FTP_UPLOAD_SERVER_INFO; ///@brief 下发补传视频ftp服务器信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendFtpUploadServerInfo(LLONG lLoginID, NET_IN_SEND_FTP_UPLOAD_SERVER_INFO* pInParam, NET_OUT_SEND_FTP_UPLOAD_SERVER_INFO* pOutParam, int nWaitTime); ///@brief 文件上传结果码 typedef enum tagEM_FILE_UPLOAD_RESULT_CODE { EM_FILE_UPLOAD_RESULT_CODE_UNKNOWN = -1, // 未知 EM_FILE_UPLOAD_RESULT_CODE_SUCCESS, // 成功 EM_FILE_UPLOAD_RESULT_CODE_CONNECT_FAIL = 2, // 连接失败 EM_FILE_UPLOAD_RESULT_CODE_LOGIN_FAIL, // 登录失败 EM_FILE_UPLOAD_RESULT_CODE_RCV_TIMEOUT, // 接收数据超时 EM_FILE_UPLOAD_RESULT_CODE_OBJ_STR_NULL, // 目标字符串为空 EM_FILE_UPLOAD_RESULT_CODE_NO_FOLD_FILE, // 目录或文件不存在 EM_FILE_UPLOAD_RESULT_CODE_STORE_FAIL, // 文件存储失败 EM_FILE_UPLOAD_RESULT_CODE_SEND_FAIL, // 发送数据失败 } EM_FILE_UPLOAD_RESULT_CODE; ///@brief 文件上传结果信息 typedef struct tagNET_FILE_UPLOAD_RESULT_INFO { char szFileUrl[256]; // 文件路径 EM_FILE_UPLOAD_RESULT_CODE emResultCode; // 文件上传结果码 BYTE byReserved[1020]; // 保留字节 } NET_FILE_UPLOAD_RESULT_INFO; ///@brief 文件上传结果回调信息 typedef struct tagNET_CB_FILE_UPLOAD_RESULT { UINT nResultNum; // 文件上传结果个数 NET_FILE_UPLOAD_RESULT_INFO stuUploadResultInfo[4]; // 文件上传结果信息 BYTE byReserved[1024]; // 保留字节 } NET_CB_FILE_UPLOAD_RESULT; ///@brief 订阅文件上传结果信息回调函数原型, lAttachHandle为 CLIENT_AttachFileUploadResult 接口的返回值 typedef void (CALLBACK *fFileUploadResult)(LLONG lAttachHandle, NET_CB_FILE_UPLOAD_RESULT* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachFileUploadResult 接口输入参数 typedef struct tagNET_IN_ATTACH_FILE_UPLOAD_RESULT { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fFileUploadResult cbFileUploadResult; // 文件上传结果回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_FILE_UPLOAD_RESULT; ///@brief CLIENT_AttachFileUploadResult 接口输出参数 typedef struct tagNET_OUT_ATTACH_FILE_UPLOAD_RESULT { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_FILE_UPLOAD_RESULT; ///@brief 订阅文件上传结果信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachFileUploadResult(LLONG lLoginID, NET_IN_ATTACH_FILE_UPLOAD_RESULT* pInParam, NET_OUT_ATTACH_FILE_UPLOAD_RESULT* pOutParam, const int nWaitTime); ///@brief 取消订阅文件上传结果信息, lAttachHandle为 CLIENT_AttachFileUploadResult 接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachFileUploadResult(LLONG lAttachHandle); ///@brief CLIENT_GetFaceDbVersion 接口输入参数 typedef struct tagNET_IN_GET_FACE_DB_VERSION { DWORD dwSize; // 结构体大小 } NET_IN_GET_FACE_DB_VERSION; ///@brief 设备其它人员组ID的目标库信息 typedef struct tagNET_FACE_LIB_INFO_EX { char szGroupID[64]; // 人员组ID char szFaceLibVersion[32]; // 目标库版本号,平台如果没有从没下发过目标或者设备异常目标未下载完全,目标库版本号为"0" UINT nTotalDownloadCount; // 需要下载文件个数 UINT nSuccessDownloadCount; // 已下载文件个数 char szResvered[1024]; // 保留字节 }NET_FACE_LIB_INFO_EX; ///@brief CLIENT_GetFaceDbVersion 接口输出参数 typedef struct tagNET_OUT_GET_FACE_DB_VERSION { DWORD dwSize; // 结构体大小 char szFaceDbVersion[32]; // 目标库版本号, 没下发过目标或者设备异常目标未下载完全,目标库版本号为"0" UINT nTotalCount; // 总共需要下载的文件个数 UINT nSuccessDCount; // 已下载的文件个数 char szGroupID[64]; // 人员组ID int nFaceLibInfoExCount; // 设备其它人员组ID的目标库信息个数 NET_FACE_LIB_INFO_EX stuFaceLibInfoEx[8]; // 设备其它人员组ID的目标库信息 } NET_OUT_GET_FACE_DB_VERSION; ///@brief 主动查询设备端目标库版本信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFaceDbVersion(LLONG lLoginID, NET_IN_GET_FACE_DB_VERSION* pInParam, NET_OUT_GET_FACE_DB_VERSION* pOutParam, const int nWaitTime); ///@brief CLIENT_ControlThermoSensor 接口输入参数 typedef struct tagNET_IN_CONTROL_THERMO_SENSOR { DWORD dwSize; // 结构体大小 int nChannel; // 通道 int nState; // 热成像机芯开关, 0 - 关闭;1 - 开启 BYTE byReserverd[4]; // 保留字节,用于字节对齐 } NET_IN_CONTROL_THERMO_SENSOR; ///@brief CLIENT_ControlThermoSensor 接口输出参数 typedef struct tagNET_OUT_CONTROL_THERMO_SENSOR { DWORD dwSize; // 结构体大小 } NET_OUT_CONTROL_THERMO_SENSOR; ///@brief CLIENT_GetDistanceRes 接口输入参数 typedef struct tagNET_IN_GET_DISTANCE_RES { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 } NET_IN_GET_DISTANCE_RES; ///@brief 查询的的热成像日志类型 typedef enum tagEM_GET_DISTANCE_RES_STATUS { EM_GET_DISTANCE_RES_UNKNOWN = -1, // 未知 EM_GET_DISTANCE_RES_SUCCESS, // 成功 EM_GET_DISTANCE_RES_BEYOND_PITCH_LIMIT, // 超出俯仰角限制 EM_GET_DISTANCE_RES_INTERFACE_EXCEPTION, // 接口异常 EM_GET_DISTANCE_RES_GENERAL_ERROR, // 通用错误 EM_GET_DISTANCE_RES_LASER_NO_DATA_RETURN, // 激光测距仪无数据返回。 EM_GET_DISTANCE_RES_LASER_DATA_LENGTH_ERROR, // 激光测距仪返回的数据长度错误 EM_GET_DISTANCE_RES_LASER_DATA_FORMAT_ERROR, // 激光测距仪返回的数据格式不正确 EM_GET_DISTANCE_RES_LASER_DATA_VERIFIED_ERROR, // 激光测距仪返回的数据校验失败 }EM_GET_DISTANCE_RES_STATUS; ///@brief CLIENT_GetDistanceRes 接口输出参数 typedef struct tagNET_OUT_GET_DISTANCE_RES { DWORD dwSize; // 结构体大小 UINT nDistance; // 目标距离,单位米 int nOverTimeStatus; // 超时状态(0,超时 1未超时) EM_GET_DISTANCE_RES_STATUS emStatus; // 结果状态 } NET_OUT_GET_DISTANCE_RES; ///@brief 热成像制冷机芯强制开启或关闭 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlThermoSensor(LLONG lLoginID, NET_IN_CONTROL_THERMO_SENSOR* pInParam, NET_OUT_CONTROL_THERMO_SENSOR* pOutParam,int nWaitTime); ///@brief CLIENT_ControlThermoDelayShutDown 接口输入参数 typedef struct tagNET_IN_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道 }NET_IN_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO; ///@brief CLIENT_ControlThermoDelayShutDown 接口输出参数 typedef struct tagNET_OUT_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO; ///@brief 热成像制冷机芯延迟关闭(在制冷机芯关机倒计时出现后,每调用一次,延迟5分钟,最多3次) CLIENT_NET_API BOOL CALL_METHOD CLIENT_ControlThermoDelayShutDown(LLONG lLoginID, NET_IN_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO* pInParam, NET_OUT_CONTROL_THERMO_DELAY_SHUT_DOWN_INFO* pOutParam,int nWaitTime); ///@brief 获取画面中心位置目标的距离 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDistanceRes(LLONG lLoginID, NET_IN_GET_DISTANCE_RES* pInParam, NET_OUT_GET_DISTANCE_RES* pOutParam,int nWaitTime); ///@brief 查询的的热成像日志类型 typedef enum tagEM_THREM_LOG_TYPE { EM_THREM_LOG_UNKNOWN = -1, // 未知,只用于查询结果,不用于查询条件 EM_THREM_LOG_ALL, // 全部,只用于查询条件,不用于查询结果 EM_THREM_LOG_CORE_OP, // 机芯开光操作相关 EM_THREM_LOG_LASER, // 激光测距操作相关 EM_THREM_LOG_PTZ, // 云台运动相关 EM_THREM_LOG_VISUAL_ZOOM, // 可见光变倍 EM_THREM_LOG_VISUAL_FOCUS, // 可见光聚焦 EM_THREM_LOG_THERM_ZOOM, // 热成像变倍 EM_THREM_LOG_THERM_FOCUS, // 热成像聚焦 EM_THREM_LOG_CLEAR_LOG, // 日志清除 EM_THREM_LOG_TEMPERATURE, // 记录的温度信息 }EM_THREM_LOG_TYPE; ///@brief CLIENT_StartFindThermLog 接口输入参数 typedef struct tagNET_IN_START_FIND_THERM_LOG { DWORD dwSize; // 结构体大小 EM_THREM_LOG_TYPE emLogType; // 查询的日志类型 NET_TIME stuStartTime; // 查询的开始时间 NET_TIME stuEndTime; // 查询的结束时间 } NET_IN_START_FIND_THERM_LOG; ///@brief CLIENT_StartFindThermLog 接口输出参数 typedef struct tagNET_OUT_START_FIND_THERM_LOG { DWORD dwSize; // 结构体大小 } NET_OUT_START_FIND_THERM_LOG; ///@brief CLIENT_GetThermLogCount 接口输入参数 typedef struct tagNET_IN_GET_THERM_LOG_COUNT { DWORD dwSize; // 结构体大小 } NET_IN_GET_THERM_LOG_COUNT; ///@brief CLIENT_GetThermLogCount 接口输出参数 typedef struct tagNET_OUT_GET_THERM_LOG_COUNT { DWORD dwSize; // 结构体大小 int nLogCount; // 日志数量 } NET_OUT_GET_THERM_LOG_COUNT; ///@brief CLIENT_DoSeekFindThermLog 接口输入参数 typedef struct tagNET_IN_DO_SEEK_FIND_THERM_LOG { DWORD dwSize; // 结构体大小 int nOffset; // 从满足条件开始,偏移offset条记录开始查询 int nCount; // 每次查询的日志条数 BYTE byReserve[4]; // 保留字节,用于字节对齐 } NET_IN_DO_SEEK_FIND_THERM_LOG; ///@brief 热成像日志信息 typedef struct tagNET_THERM_LOG { NET_TIME stuTime; // 日志时间 EM_THREM_LOG_TYPE emLogType; // 日志类型 char szDetail[512]; // 日志内容 BYTE byReserve[1024]; // 保留字节 } NET_THERM_LOG; ///@brief CLIENT_DoSeekFindThermLog 接口输出参数 typedef struct tagNET_OUT_DO_SEEK_FIND_THERM_LOG { DWORD dwSize; // 结构体大小 int nMaxCount; // 用户指定分配结构体个数,需大于等于NET_IN_DO_SEEK_FIND_THERM_LOG的nCount NET_THERM_LOG* pstuLogInfo; // 返回日志信息,缓存大小由用户指定 int nRetCount; // 查询到的条数,0 表示没有更多日志可以查询(不能以found小于请求的count作为判断的依据。设备有可能受内存等限制,无法一次性返回。) BYTE byReserve[4]; // 保留字节,用于字节对齐 } NET_OUT_DO_SEEK_FIND_THERM_LOG; ///@brief 开始查询热成像日志 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindThermLog(LLONG lLoginID, const NET_IN_START_FIND_THERM_LOG* pInParam, NET_OUT_START_FIND_THERM_LOG* pOutParam, int nWaitTime); ///@brief 查询当前的热成像日志数量 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThermLogCount(LLONG lLogID, NET_IN_GET_THERM_LOG_COUNT* pInParam, NET_OUT_GET_THERM_LOG_COUNT* pOutParam, int nWaitTime); ///@brief 查询当前热成像日志记录 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoSeekFindThermLog(LLONG lLogID, NET_IN_DO_SEEK_FIND_THERM_LOG* pInParam, NET_OUT_DO_SEEK_FIND_THERM_LOG* pOutParam, int nWaitTime); ///@brief 结束查询热成像日志 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindThermLog(LLONG lLogID); ///@brief 课程状态 typedef enum tagEM_COURSE_STATE { EM_COURSE_STATE_UNKNOWN, // 未知 EM_COURSE_STATE_NOT_RECORD, // 未录制 EM_COURSE_STATE_IN_RECORDING, // 录制中 EM_COURSE_STATE_ALREADY_RECORDED, // 已录制 } EM_COURSE_STATE; ///@brief 课程信息 typedef struct tagNET_COURSE { NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szCourseName[DH_COMMON_STRING_64]; // 课程名称 char szTeacherName[DH_COMMON_STRING_64]; // 教师姓名 char szIntroduction[DH_COMMON_STRING_128]; // 课程简介 int nCanStartStreamNum; // 能否被拉流逻辑通道数 int nIsRecordNum; // 是否要录像逻辑通道号数 EM_CAN_START_STREAM emCanStartStream[64]; // 能否被拉流 EM_IS_RECORD emIsRecord[64]; // 是否要录像 int nCompositeChannelMode; // 组合通道模式; 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, <0:自定义模式 EM_COURSE_STATE emCourseState; // 课程状态 BYTE byReserved[128]; // 保留字节 } NET_COURSE; ///@brief CLIENT_AddCourse 入参 typedef struct tagNET_IN_ADD_COURSE { DWORD dwSize; // 结构体大小 int nCourseNum; // 课程数量 NET_COURSE stuCourseInfo[64]; // 课程信息 }NET_IN_ADD_COURSE; ///@brief CLIENT_AddCourse 出参 typedef struct tagNET_OUT_ADD_COURSE { DWORD dwSize; // 结构体大小 int nIdNum; // 课程ID数量 int nId[64]; // 返回新增的课程ID; -1:数据库中无此记录, -2:记录已存在, -3:数据库已满 }NET_OUT_ADD_COURSE; ///@brief 添加新的课程记录 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddCourse(LLONG lLoginID, const NET_IN_ADD_COURSE *pstInParam, NET_OUT_ADD_COURSE *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief CLIENT_AddCourseOverWrite 入参 typedef struct tagNET_IN_ADD_COURSE_OVERWRITE { DWORD dwSize; // 结构体大小 int nCourseNum; // 课程数量 NET_COURSE stuCourseInfo[64]; // 课程信息 }NET_IN_ADD_COURSE_OVERWRITE; ///@brief CLIENT_AddCourseOverWrite 出参 typedef struct tagNET_OUT_ADD_COURSE_OVERWRITE { DWORD dwSize; // 结构体大小 int nIdNum; // 课程ID数量 int nId[64]; // 返回新增的课程ID; -1:数据库中无此记录, -3:数据库已满 NET_COURSE stuOverwriteCourseInfo[64]; // 被覆盖课程信息 int nOverwriteTotalCount; // 被覆盖的总个数 }NET_OUT_ADD_COURSE_OVERWRITE; ///@brief 添加新的课程记录,记录在数据库中已存在则进行覆盖 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddCourseOverWrite(LLONG lLoginID, const NET_IN_ADD_COURSE_OVERWRITE *pstInParam, NET_OUT_ADD_COURSE_OVERWRITE *pstOutParam, int nWaitTime); ///@brief CLIENT_DeleteCourse 入参 typedef struct tagNET_IN_DELETE_COURSE { DWORD dwSize; // 结构体大小 int nIdNum; // 课程ID数量 int nId[64]; // 课程ID }NET_IN_DELETE_COURSE; ///@brief CLIENT_DeleteCourse 出参 typedef struct tagNET_OUT_DELETE_COURSE { DWORD dwSize; // 结构体大小 int nResultIdNum; // 课程ID数量 int nResultId[64]; // 课程ID; -1:删除成功, 原id:删除失败 }NET_OUT_DELETE_COURSE; ///@brief 删除课程 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteCourse(LLONG lLoginID, const NET_IN_DELETE_COURSE *pstInParam, NET_OUT_DELETE_COURSE *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief CLIENT_ModifyCourse 入参 typedef struct tagNET_IN_MODIFY_COURSE { DWORD dwSize; // 结构体大小 int nCourseNum; // 课程数量 NET_COURSE stuCourseInfo[64]; // 课程信息 int nId[64]; // 课程ID }NET_IN_MODIFY_COURSE; ///@brief CLIENT_ModifyCourse 出参 typedef struct tagNET_OUT_MODIFY_COURSE { DWORD dwSize; // 结构体大小 int nResultIDNum; // 修改的课程ID数量 int nResultID[64]; // 修改的课程ID; 原ID: 修改成功, -1: 数据库中无此记录, -2: 时间冲突 }NET_OUT_MODIFY_COURSE; ///@brief 修改课程 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyCourse(LLONG lLoginID, const NET_IN_MODIFY_COURSE *pstInParam, NET_OUT_MODIFY_COURSE *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief CLIENT_QueryCourseOpen 入参 typedef struct tagNET_IN_QUERY_COURSE_OPEN { DWORD dwSize; // 结构体大小 NET_TIME stuStartTime; // 查询开始时间 NET_TIME stuEndTime; // 查询结束时间 }NET_IN_QUERY_COURSE_OPEN; ///@brief CLIENT_QueryCourseOpen 出参 typedef struct tagNET_OUT_QUERY_COURSE_OPEN { DWORD dwSize; // 结构体大小 int nTotalNum; // 查询到的总个数 int nFindID; // 查询的句柄号 }NET_OUT_QUERY_COURSE_OPEN; ///@brief 开始查询课程 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryCourseOpen(LLONG lLoginID, const NET_IN_QUERY_COURSE_OPEN *pstInParam, NET_OUT_QUERY_COURSE_OPEN *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief CLIENT_QueryCourse 入参 typedef struct tagNET_IN_QUERY_COURSE { DWORD dwSize; // 结构体大小 int nFindID; // 查询句柄号 int nOffset; // 开始查询偏移 int nCount; // 需要查询的个数 }NET_IN_QUERY_COURSE; ///@brief 课程信息和ID typedef struct tagNET_COURSE_RESULT { NET_COURSE stuCourseInfo; // 课程信息 int nId; // 课程ID BYTE byReserved[4]; // 保留字节 } NET_COURSE_RESULT; ///@brief CLIENT_QueryCourse 出参 typedef struct tagNET_OUT_QUERY_COURSE { DWORD dwSize; // 结构体大小 int nCountResult; // 查找到的个数 NET_COURSE_RESULT stuCourseResult[64]; // 查询的课程信息结果 }NET_OUT_QUERY_COURSE; ///@brief 查询课程 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryCourse(LLONG lLoginID, const NET_IN_QUERY_COURSE *pstInParam, NET_OUT_QUERY_COURSE *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief CLIENT_QueryCourseClose 入参 typedef struct tagNET_IN_QUERY_COURSE_CLOSE { DWORD dwSize; // 结构体大小 int nFindID; // 课程数量 }NET_IN_QUERY_COURSE_CLOSE; ///@brief CLIENT_QueryCourseClose 出参 typedef struct tagNET_OUT_QUERY_COURSE_CLOSE { DWORD dwSize; // 结构体大小 }NET_OUT_QUERY_COURSE_CLOSE; ///@brief 关闭课程查询 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryCourseClose(LLONG lLoginID, const NET_IN_QUERY_COURSE_CLOSE *pstInParam, NET_OUT_QUERY_COURSE_CLOSE *pstOutParam, int nWaitTime= NET_INTERFACE_DEFAULT_TIMEOUT); ///@brief 打开播放组 CLIENT_NET_API LLONG CALL_METHOD CLIENT_OpenPlayGroup(); ///@brief CLIENT_AddPlayHandleToPlayGroup 输入参数 typedef struct tagNET_IN_ADD_PLAYHANDLE_TO_PLAYGROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 LLONG lPlayGroupHandle; // 播放组句柄,CLIENT_OpenPlayGroup 返回 LLONG lPlayHandle; // 播放句柄(当前只支持回放) }NET_IN_ADD_PLAYHANDLE_TO_PLAYGROUP; ///@brief CLIENT_AddPlayHandleToPlayGroup 输出参数 typedef struct tagNET_OUT_ADD_PLAYHANDLE_TO_PLAYGROUP { DWORD dwSize; // 结构体大小 }NET_OUT_ADD_PLAYHANDLE_TO_PLAYGROUP; ///@brief 将播放句柄加入播放组,保证同步播放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddPlayHandleToPlayGroup(const NET_IN_ADD_PLAYHANDLE_TO_PLAYGROUP* pInParam, NET_OUT_ADD_PLAYHANDLE_TO_PLAYGROUP* pOutParam); ///@brief 暂停/恢复播放组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PausePlayGroup(LLONG lPlayGroupHandle, BOOL bPause); ///@brief CLIENT_QueryPlayGroupTime 输入参数 typedef struct tagNET_IN_QUERY_PLAYGROUP_TIME { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 LLONG lPlayGroupHandle; // 播放组句柄,CLIENT_OpenPlayGroup 返回值 }NET_IN_QUERY_PLAYGROUP_TIME; ///@brief CLIENT_QueryPlayGroupTime 输出参数 typedef struct tagNET_OUT_QUERY_PLAYGROUP_TIME { DWORD dwSize; // 结构体大小 NET_TIME_EX stuTime; // 时间 }NET_OUT_QUERY_PLAYGROUP_TIME; ///@brief 获取播放组时间 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryPlayGroupTime(const NET_IN_QUERY_PLAYGROUP_TIME* pInParam, NET_OUT_QUERY_PLAYGROUP_TIME* pOutParam); ///@brief CLIENT_SetPlayGroupBaseChannel 输入参数 typedef struct tagNET_IN_SET_PLAYGROUP_BASECHANNEL { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 LLONG lPlayGroupHandle; // 播放组句柄,CLIENT_OpenPlayGroup 返回值 LLONG lPlayHandle; // 播放句柄(当前只支持回放) }NET_IN_SET_PLAYGROUP_BASECHANNEL; ///@brief CLIENT_SetPlayGroupBaseChannel 输出参数 typedef struct tagNET_OUT_SET_PLAYGROUP_BASECHANNEL { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PLAYGROUP_BASECHANNEL; ///@brief 设置播放组基准通道 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayGroupBaseChannel(const NET_IN_SET_PLAYGROUP_BASECHANNEL* pInParam, NET_OUT_SET_PLAYGROUP_BASECHANNEL* pOutParam); ///@brief CLIENT_DeleteFromPlayGroup 输入参数 typedef struct tagNET_IN_DELETE_FROM_PLAYGROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 LLONG lPlayGroupHandle; // 播放组句柄,CLIENT_OpenPlayGroup 返回值 LLONG lPlayHandle; // 播放句柄(当前只支持回放) }NET_IN_DELETE_FROM_PLAYGROUP; ///@brief CLIENT_DeleteFromPlayGroup 输出参数 typedef struct tagNET_OUT_DELETE_FROM_PLAYGROUP { DWORD dwSize; // 结构体大小 }NET_OUT_DELETE_FROM_PLAYGROUP; ///@brief 将播放句柄从播放组中移除 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteFromPlayGroup(const NET_IN_DELETE_FROM_PLAYGROUP* pInParam, NET_OUT_DELETE_FROM_PLAYGROUP* pOutParam); ///@brief 关闭播放组 // lPlayGroupHandle 是 CLIENT_OpenPlayGroup 的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClosePlayGroup(LLONG lPlayGroupHandle); ///@brief CLIENT_GetChannelOfAudioInput 输入结构体 typedef struct tagNET_IN_GET_CHANNEL_OF_AUDIO_INPUT { DWORD dwSize; // 结构体大小 }NET_IN_GET_CHANNEL_OF_AUDIO_INPUT; ///@brief CLIENT_GetChannelOfAudioInput 输出结构体 typedef struct tagNET_OUT_GET_CHANNEL_OF_AUDIO_INPUT { DWORD dwSize; // 结构体大小 UINT nChannels; // 支持的音频输入通道数 }NET_OUT_GET_CHANNEL_OF_AUDIO_INPUT; ///@brief CLIENT_GetChannelOfAudioOutput 输入结构体 typedef struct tagNET_IN_GET_CHANNEL_OF_AUDIO_OUTPUT { DWORD dwSize; // 结构体大小 }NET_IN_GET_CHANNEL_OF_AUDIO_OUTPUT; ///@brief CLIENT_GetChannelOfAudioOutput 输出结构体 typedef struct tagNET_OUT_GET_CHANNEL_OF_AUDIO_OUTPUT { DWORD dwSize; // 结构体大小 UINT nChannels; // 支持的音频输出通道数 }NET_OUT_GET_CHANNEL_OF_AUDIO_OUTPUT; ///@brief 获取音频输入的通道数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChannelOfAudioInput(LLONG lLoginID, NET_IN_GET_CHANNEL_OF_AUDIO_INPUT* pInParam, NET_OUT_GET_CHANNEL_OF_AUDIO_INPUT* pOutParam,int nWaitTime); ///@brief 获取音频输出的通道数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChannelOfAudioOutput(LLONG lLoginID, NET_IN_GET_CHANNEL_OF_AUDIO_OUTPUT* pInParam, NET_OUT_GET_CHANNEL_OF_AUDIO_OUTPUT* pOutParam,int nWaitTime); ///@brief CLIENT_SetChannelOfAudioVolume 输入结构体 typedef struct tagNET_IN_SET_CHANNEL_OF_AUDIO_VOLUME_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 音频输出通道 int nVolume; // 音量,范围[0~100] }NET_IN_SET_CHANNEL_OF_AUDIO_VOLUME_INFO; ///@brief CLIENT_SetChannelOfAudioVolume 输出结构体 typedef struct tagNET_OUT_SET_CHANNEL_OF_AUDIO_VOLUME_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_CHANNEL_OF_AUDIO_VOLUME_INFO; ///@brief 设置通道音频音量大小 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetChannelOfAudioVolume(LLONG lLoginID, NET_IN_SET_CHANNEL_OF_AUDIO_VOLUME_INFO *pInParam, NET_OUT_SET_CHANNEL_OF_AUDIO_VOLUME_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_SetChannelOfAudioEnable 输入结构体 typedef struct tagNET_IN_SET_CHANNEL_OF_AUDIO_ENABLE_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 音频输出通道 BOOL bEnable; // 使能:TRUE 不使能:FALSE }NET_IN_SET_CHANNEL_OF_AUDIO_ENABLE_INFO; ///@brief CLIENT_SetChannelOfAudioEnable 输出结构体 typedef struct tagNET_OUT_SET_CHANNEL_OF_AUDIO_ENABLE_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_CHANNEL_OF_AUDIO_ENABLE_INFO; ///@brief 设置通道音频开关 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetChannelOfAudioEnable(LLONG lLoginID, NET_IN_SET_CHANNEL_OF_AUDIO_ENABLE_INFO *pInParam, NET_OUT_SET_CHANNEL_OF_AUDIO_ENABLE_INFO *pOutParam, int nWaitTime); ///@brief 音频源设备信息 typedef struct tagNET_DEV_ID_AUDIO_SOURCE_INFO { char szDevice[32]; // 设备ID EM_VIDEO_STREAM emVideoStream; // 视频码流 UINT nVideoChannel; // 视频通道 BYTE byReserved[1020]; // 保留字节 }NET_DEV_ID_AUDIO_SOURCE_INFO; ///@brief CLIENT_BindAudioSourceDevIDInfo 输入结构体 typedef struct tagNET_IN_BIND_AUDIO_SOURCE_DEV_ID_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 音频输出通道 NET_DEV_ID_AUDIO_SOURCE_INFO stuAudioSourceInfo; // 音频源信息 }NET_IN_BIND_AUDIO_SOURCE_DEV_ID_INFO; ///@brief CLIENT_BindAudioSourceDevIDInfo 输出结构体 typedef struct tagNET_OUT_BIND_AUDIO_SOURCE_DEV_ID_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_BIND_AUDIO_SOURCE_DEV_ID_INFO; ///@brief 绑定设备ID音频源信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_BindAudioSourceDevIDInfo(LLONG lLoginID, NET_IN_BIND_AUDIO_SOURCE_DEV_ID_INFO *pInParam, NET_OUT_BIND_AUDIO_SOURCE_DEV_ID_INFO *pOutParam, int nWaitTime); ///@brief 视频输入通道信息 typedef struct tagNET_AUDIO_SOURCE_DEV_VIDEO_INPUTS_INFO { char szChnName[32]; // 通道名称 char szCaption[32]; // 通道备注 char szControlID[64]; // 控制ID char szMainStreamUrl[256]; // 主码流url地址 char szExtraStreamUrl[256]; // 辅码流url地址 char szOptionalMainUrls[8][256]; // 备用主码流地址列表 int nOptionalMainUrlsNum; // 备用主码流地址列表下发个数 char szOptionalExtraUrls[8][256]; // 备用辅码流地址列表 int nOptionalExtraUrlsNum; // 备用辅码流地址列表下发个数 NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt; // 码流加密方式 EM_STREAM_TRANSMISSION_SERVICE_TYPE emServiceType; // 指码流传输的服务类型 BYTE byReserved[1020]; }NET_AUDIO_SOURCE_DEV_VIDEO_INPUTS_INFO; ///@brief 音频源设备清晰度 typedef enum tagEM_AUDIO_SOURCE_DEV_DEFINITION { EM_AUDIO_SOURCE_DEV_DEFINITION_UNKNOWN, // 未知 EM_AUDIO_SOURCE_DEV_DEFINITION_STANDARD, // 标清 EM_AUDIO_SOURCE_DEV_DEFINITION_HIGH, // 高清 }EM_AUDIO_SOURCE_DEV_DEFINITION; ///@brief 连接设备的协议类型 typedef enum tagEM_AUDIO_SOURCE_DEV_PROTOCOL_TYPE { EM_DEV_PROTOCOL_TYPE_UNKNOWN, // 未知 EM_DEV_PROTOCOL_TYPE_DAHUA, // Dahua EM_DEV_PROTOCOL_TYPE_DAHUA2, // Dahua2 EM_DEV_PROTOCOL_TYPE_DAHUA3, // Dahua3 EM_DEV_PROTOCOL_TYPE_PRIVATE, // Private EM_DEV_PROTOCOL_TYPE_GENERAL, // General }EM_AUDIO_SOURCE_DEV_PROTOCOL_TYPE; ///@brief 音频源设备信息 typedef struct tagNET_AUDIO_SOURCE_DEV_INFO { BOOL bEnable; // 固定 TRUE EM_AUDIO_SOURCE_DEV_DEFINITION emVideoDefinition; // 视频清晰度 EM_AUDIO_SOURCE_DEV_PROTOCOL_TYPE emProtocolType; // 协议类型 UINT nPort; // 端口 char szAddress[40]; // 备地址或域名 char szUser[64]; // 用户名 char szPassword[64]; // 密码 char szName[128]; // 机器名称 UINT nVideoInputChannels; // 视频输入通道数 UINT nAudioInputChannels; // 音频输入通道数 UINT nHttpPort; // http端口号 UINT nRtspPort; // Rtsp端口号 char szDeviceClass[32]; // 设备类型 char szDeviceType[32]; // 设备型号 char szHint[32]; // 视频源 NET_AUDIO_SOURCE_DEV_VIDEO_INPUTS_INFO *pVideoInput; // 视频输入通道 int nVideoInputsNum; // 实际返回视频输入通道个数 BYTE byReserved[1020]; // 保留字节 }NET_AUDIO_SOURCE_DEV_INFO; ///@brief 音频源信息 typedef struct tagNET_DEV_INFO_AUDIO_SOURCE_INFO { BOOL bEnable; // 设备是否启用,启用:TRUE 不启用:FALSE EM_VIDEO_STREAM emVideoStream; // 视频码流 UINT nVideoChannel; // 视频通道 UINT nInterval; // 轮巡时间间隔,单位:秒 NET_AUDIO_SOURCE_DEV_INFO stuDeviceInfo; // 设备信息 BYTE byReserved[1024]; // 保留字节 }NET_DEV_INFO_AUDIO_SOURCE_INFO; ///@brief CLIENT_BindAudioSourceDeviceInfo 输入结构体 typedef struct tagNET_IN_BIND_AUDIO_SOURCE_DEV_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 音频输出通道 NET_DEV_INFO_AUDIO_SOURCE_INFO stuAudioSourceInfo; // 音频源信息 }NET_IN_BIND_AUDIO_SOURCE_DEV_INFO; ///@brief CLIENT_BindAudioSourceDeviceInfo 输出结构体 typedef struct tagNET_OUT_BIND_AUDI0_SOURCE_DEV_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_BIND_AUDIO_SOURCE_DEV_INFO; ///@brief 绑定音频源设备信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_BindAudioSourceDeviceInfo(LLONG lLoginID, NET_IN_BIND_AUDIO_SOURCE_DEV_INFO *pInParam, NET_OUT_BIND_AUDIO_SOURCE_DEV_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_ClearBindAudioSourceDevInfo 输入结构体 typedef struct tagNET_IN_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 音频输出通道 }NET_IN_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO; ///@brief CLIENT_ClearBindAudioSourceDevInfo 输出结构体 typedef struct tagNET_OUT_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO; ///@brief 清除绑定音频源设备信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClearBindAudioSourceDevInfo(LLONG lLoginID, NET_IN_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO *pInParam, NET_OUT_CLEAR_BIND_AUDIO_SOURCE_DEV_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_RemoteSleep 输入接口参数 typedef struct tagNET_IN_REMOTE_SLEEP { DWORD dwSize; // 结构体大小 }NET_IN_REMOTE_SLEEP; ///@brief CLIENT_RemoteSleep 输出接口参数 typedef struct tagNET_OUT_REMOTE_SLEEP { DWORD dwSize; // 结构体大小 }NET_OUT_REMOTE_SLEEP; ///@brief 远程休眠模式 ///@param[in] lLoginID登录句柄 ///@param[in] pInParam 接口输入参数 ///@param[out] pOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间 单位毫秒 ///@return BOOL TRUE: 成功, FLASE:失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteSleep(LLONG lLoginID, NET_IN_REMOTE_SLEEP* pInParam, NET_OUT_REMOTE_SLEEP* pOutParam, int nWaitTime); ///@brief CLIENT_ExitApp 接口输入参数 typedef struct tagNET_IN_EXIT_APP { DWORD dwSize; // 结构体大小 } NET_IN_EXIT_APP; ///@brief CLIENT_ExitApp 接口输出参数 typedef struct tagNET_OUT_EXIT_APP { DWORD dwSize; // 结构体大小 } NET_OUT_EXIT_APP; ///@brief 退出应用程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ExitApp(LLONG lLoginID, NET_IN_EXIT_APP* pInParam, NET_OUT_EXIT_APP* pOutParam, int nWaitTime); ///@brief CLIENT_RebootDevice 接口输入参数 typedef struct tagNET_IN_REBOOT_DEVICE { DWORD dwSize; // 结构体大小 } NET_IN_REBOOT_DEVICE; ///@brief CLIENT_RebootDevice 接口输出参数 typedef struct tagNET_OUT_REBOOT_DEVICE { DWORD dwSize; // 结构体大小 } NET_OUT_REBOOT_DEVICE; ///@brief 四合一烟感平台下发整机重启 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RebootDevice(LLONG lLoginID, NET_IN_REBOOT_DEVICE* pInParam, NET_OUT_REBOOT_DEVICE* pOutParam, int nWaitTime); ///@brief CLIENT_GetWorkModeCaps 接口输入参数 typedef struct tagNET_IN_GET_WORK_MODE_CAPS { DWORD dwSize; // 结构体大小 } NET_IN_GET_WORK_MODE_CAPS; ///@brief CLIENT_GetWorkModeCaps 接口输出参数 typedef struct tagNET_OUT_GET_WORK_MODE_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportWorkMode; // 是否支持工作模式 int nWorkModesCount; // 具体支持的工作模式个数 EM_WORK_MODE emWorkModes[8]; // 具体支持的工作模式 } NET_OUT_GET_WORK_MODE_CAPS; ///@brief 获取电池相机的工作模式能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWorkModeCaps(LLONG lLoginID, NET_IN_GET_WORK_MODE_CAPS* pstuInParam, NET_OUT_GET_WORK_MODE_CAPS* pstuOutParam, int nWaitTime); ///@brief CLIENT_DelayReboot 接口输入参数 typedef struct tagNET_IN_DELAY_REBOOT { DWORD dwSize; // 结构体大小 UINT nDelay; // 时间,单位:s 范围:0-10000 } NET_IN_DELAY_REBOOT; ///@brief CLIENT_DelayReboot 接口输出参数 typedef struct tagNET_OUT_DELAY_REBOOT { DWORD dwSize; // 结构体大小 } NET_OUT_DELAY_REBOOT; ///@brief 重启设备 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelayReboot(LLONG lLoginID, NET_IN_DELAY_REBOOT* pstuInParam, NET_OUT_DELAY_REBOOT* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetPlayGroupDirection 输入参数 typedef struct tagNET_IN_SET_PLAYGROUP_DIRECTION { DWORD dwSize; // 结构体大小 int nPlayDirection; // 播放方向, 0:正放; 1:倒放 LLONG lPlayGroupHandle; // 播放组句柄,由 CLIENT_OpenPlayGroup 返回 }NET_IN_SET_PLAYGROUP_DIRECTION; ///@brief CLIENT_SetPlayGroupDirection 输出参数 typedef struct tagNET_OUT_SET_PLAYGROUP_DIRECTION { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PLAYGROUP_DIRECTION; ///@brief 设置播放组播放方向 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayGroupDirection(const NET_IN_SET_PLAYGROUP_DIRECTION* pInParam, NET_OUT_SET_PLAYGROUP_DIRECTION* pOutParam); ///@brief CLIENT_SetPlayGroupSpeed 输入参数 typedef struct tagNET_IN_SET_PLAYGROUP_SPEED { DWORD dwSize; // 结构体大小 EM_PLAY_BACK_SPEED emSpeed; // 播放速度 LLONG lPlayGroupHandle; // 播放组句柄,由 CLIENT_OpenPlayGroup 返回 }NET_IN_SET_PLAYGROUP_SPEED; ///@brief CLIENT_SetPlayGroupSpeed 输出参数 typedef struct tagNET_OUT_SET_PLAYGROUP_SPEED { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PLAYGROUP_SPEED; ///@brief 设置播放组播放速度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayGroupSpeed(const NET_IN_SET_PLAYGROUP_SPEED* pInParam, NET_OUT_SET_PLAYGROUP_SPEED* pOutParam); ///@brief 播放组快放 // lPlayGroupHandle 是播放组句柄,由 CLIENT_OpenPlayGroup 返回 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FastPlayGroup(LLONG lPlayGroupHandle); ///@brief 播放组慢放 // lPlayGroupHandle 是播放组句柄,由 CLIENT_OpenPlayGroup 返回 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SlowPlayGroup(LLONG lPlayGroupHandle); ///@brief 播放组正常播放 // lPlayGroupHandle 是播放组句柄,由 CLIENT_OpenPlayGroup 返回 CLIENT_NET_API BOOL CALL_METHOD CLIENT_NormalPlayGroup(LLONG lPlayGroupHandle); ///@brief AOL异步搜索设备入参(组播) typedef struct tagNET_IN_AOL_STARTSEARCH_DEVICE { DWORD dwSize; // 结构体大小 char szLocalIp[MAX_LOCAL_IP_LEN]; // 发起搜索的本地IP fSearchDevicesCBEx cbSearchDevices; // 设备信息回调函数 void* pUserData; // 用户自定义数据 }NET_IN_AOL_STARTSEARCH_DEVICE; ///@brief AOL异步搜索设备出参 typedef struct tagNET_OUT_AOL_STARTSEARCH_DEVICE { DWORD dwSize; // 结构体大小 }NET_OUT_AOL_STARTSEARCH_DEVICE; ///@brief AOL异步搜索设备 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSearchDevicesForAOL(NET_IN_AOL_STARTSEARCH_DEVICE* pInParam, NET_OUT_AOL_STARTSEARCH_DEVICE* pOutParam); ///@brief CLIENT_SearchDevicesByIPsForAOL 输入参数 typedef struct tagNET_IN_AOL_SEARCHDEVICE_BYIPS { DWORD dwSize; // 结构体大小 int nIpNum; // 当前搜索的IP个数 char szIP[DH_MAX_SAERCH_IP_NUM][64]; // 具体待搜索的IP信息 char* szLocalIp; // 发起搜索的本地IP fSearchDevicesCB cbSearchDevices; // 回调函数 LDWORD dwUserData; // 用户数据 }NET_IN_AOL_SEARCHDEVICE_BYIPS; ///@brief CLIENT_SearchDevicesByIPsForAOL 输出参数 typedef struct tagNET_OUT_AOL_SEARCHDEVICE_BYIPS { DWORD dwSize; // 结构体大小 }NET_OUT_AOL_SEARCHDEVICE_BYIPS; ///@brief AOL 指定IP搜索设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SearchDevicesByIPsForAOL(NET_IN_AOL_SEARCHDEVICE_BYIPS* pInParam, NET_OUT_AOL_SEARCHDEVICE_BYIPS* pOutParam, int nWaitTime); ///@brief CLIENT_ResetSystemEx 输入参数 typedef struct tagNET_IN_RESET_SYSTEM_EX { DWORD dwSize; // 结构体大小 UINT nType; // 0: 硬恢复; 1:软恢复 }NET_IN_RESET_SYSTEM_EX; ///@brief CLIENT_ResetSystemEx 输出参数 typedef struct tagNET_OUT_RESET_SYSTEM_EX { DWORD dwSize; // 结构体大小 }NET_OUT_RESET_SYSTEM_EX; ///@brief 恢复出厂配置扩展接口(包括清空配置和删除账户),实现硬复位及软复位功能 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ResetSystemEx(LLONG lLoginID,const NET_IN_RESET_SYSTEM_EX* pstInParam, NET_OUT_RESET_SYSTEM_EX* pstOutParam, int nWaitTime); ///@brief CLIENT_GetVendor 输入参数 typedef struct tagNET_IN_GET_VENDOR_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_VENDOR_INFO; ///@brief CLIENT_GetVendor 输出参数 typedef struct tagNET_OUT_GET_VENDOR_INFO { DWORD dwSize; // 结构体大小 char szVendor[16]; // 厂商(废弃,请使用szVendorEx) char szVendorEx[32]; // 厂商 }NET_OUT_GET_VENDOR_INFO; ///@brief 获取厂商 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVendor(LLONG lLoginID, const NET_IN_GET_VENDOR_INFO *pstInParam, NET_OUT_GET_VENDOR_INFO *pstOutParam, int nWaitTime); ///@brief 导出 AOL 日志文件错误码 typedef enum tagEM_EXPORT_AOL_LOGFILE_ERRORCODE { EM_EXPORT_AOL_LOGFILE_SUCCESS = 1, // 导出请求成功 EM_EXPORT_AOL_LOGFILE_NO_AUTHORITY = 2, // 无权限 EM_EXPORT_AOL_LOGFILE_NO_THIS_FILE = 3, // 文件不存在 EM_EXPORT_AOL_LOGFILE_EXPORT_END = 4, // 文件下载结束 EM_EXPORT_AOL_LOGFILE_EXPORTING = 5, // 文件下载中 EM_EXPORT_AOL_LOGFILE_FILE_SUCCESS = 6, // 文件终止下载请求成功 EM_EXPORT_AOL_LOGFILE_FILE_FAIL = 7, // 文件终止下载请求失败 EM_EXPORT_AOL_LOGFILE_FILE_READY = 8, // 文件准备完成 EM_EXPORT_AOL_LOGFILE_FILE_FAILED = 9, // 文件准备失败 EM_EXPORT_AOL_LOGFILE_WAIT_FILE = 10, // 导出请求成功, 需要等待设备准备数据 EM_EXPORT_AOL_LOGFILE_SYSTEM_BUSY = 11, // 系统忙, 暂时无法导出数据 } EM_EXPORT_AOL_LOGFILE_ERRORCODE; ///@brief 导出AOL日志文件状态信息 typedef struct tagNET_EXPORT_AOL_LOGFILE_STATE { unsigned int nProgress; // 进度, 百分比 EM_EXPORT_AOL_LOGFILE_ERRORCODE emErrorCode; // 错误码 char *pDataBuf; // 导出数据 DWORD dwDataLen; // 数据长度 BYTE byReserved[516]; // 保留字节 } NET_EXPORT_AOL_LOGFILE_STATE; ///@brief 导出AOL日志文件回调函数原形 typedef void (CALLBACK *fExportAOLLogFileCallBack)(LLONG lExportHandle, NET_EXPORT_AOL_LOGFILE_STATE *pstLogFileState, LDWORD dwUser); ///@brief CLIENT_ExportAOLLogFile 接口输入参数 typedef struct tagNET_IN_EXPORT_AOL_LOGFILE { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 字节对齐 fExportAOLLogFileCallBack cbExport; // 导出日志文件回调函数 LDWORD dwUser; // 用户数据 }NET_IN_EXPORT_AOL_LOGFILE; ///@brief CLIENT_ExportAOLLogFile 接口输出参数 typedef struct tagNET_OUT_EXPORT_AOL_LOGFILE { DWORD dwSize; // 结构体大小 }NET_OUT_EXPORT_AOL_LOGFILE; ///@brief 导出AOL日志文件 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ExportAOLLogFile(LLONG lLoginID, const NET_IN_EXPORT_AOL_LOGFILE* pInParam, NET_OUT_EXPORT_AOL_LOGFILE* pOutParam, int nWaitTime); ///@brief 停止导出AOL日志文件 // lExportHandle 为 CLIENT_ExportAOLLogFile 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopExportAOLLogFile(LLONG lExportHandle); ///@brief CLIENT_DeleteAllDiagnosisFaultCode 输入参数 typedef struct tagNET_IN_DELETE_ALLDIAGNOSIS_FAULTCODE { DWORD dwSize; // 结构体大小 }NET_IN_DELETE_ALLDIAGNOSIS_FAULTCODE; ///@brief CLIENT_DeleteAllDiagnosisFaultCode 输出参数 typedef struct tagNET_OUT_DELETE_ALLDIAGNOSIS_FAULTCODE { DWORD dwSize; // 结构体大小 }NET_OUT_DELETE_ALLDIAGNOSIS_FAULTCODE; ///@brief 删除所有故障码 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteAllDiagnosisFaultCode(LLONG lLoginID, const NET_IN_DELETE_ALLDIAGNOSIS_FAULTCODE* pInParam, NET_OUT_DELETE_ALLDIAGNOSIS_FAULTCODE* pOutParam, int nWaitTime); ///@brief 猪体温信息 typedef struct tagNET_PIG_TEMPERATURE_DATA { NET_RECT stuRect; // 物体位置 UINT nID; // 物体编号 float fMaxTemperature; // 最高的温度 float fMinTemperature; // 最低的温度 float fAverageTemperature; // 平均温度 BYTE byReserve[1024]; // 保留字节 } NET_PIG_TEMPERATURE_DATA; ///@brief 猪体温信息数组 typedef struct tagNET_PIG_TEMPERATURE_INFO { UINT nPigNum; // 猪的数量 NET_PIG_TEMPERATURE_DATA stuPigInfo[48]; // 猪的信息 BYTE byReserve[1024]; // 保留字节 } NET_PIG_TEMPERATURE_INFO; ///@brief 自定义抓图类型 typedef enum tagEM_CUSTOM_SNAP_TYPE { EM_CUSTOM_SNAP_UNKNOWN, // 未知 EM_CUSTOM_SNAP_PIG_TEMPERATURE, // 猪体温检测, 对应结构体 NET_PIG_TEMPERATURE_INFO } EM_CUSTOM_SNAP_TYPE; ///@brief 图片文件订阅回调信息 typedef struct tagNET_CB_CUSTOM_SNAP_INFO { UINT nChannelID; // 通道号 NET_TIME stuSnapTime; // 抓图时间 EM_CUSTOM_SNAP_TYPE emCustomSnapType; // 自定义抓图类型 void* pDetailInfo; // 图片包含数据, 根据emCustomSnapType值来确定具体的结构体类型 BYTE byReserve[1024]; // 保留字节 } NET_CB_CUSTOM_SNAP_INFO; ///@brief 自定义定时抓图订阅回调函数原型, lAttachHandle为 CLIENT_AttachCustomSnapInfo 接口的返回值 typedef void (CALLBACK *fAttachCustomSnapInfo)(LLONG lAttachHandle, NET_CB_CUSTOM_SNAP_INFO* pstResult, const char *pBuf, const DWORD dwBufSize, LDWORD dwUser); ///@brief CLIENT_AttachCustomSnapInfo 接口输入参数 typedef struct tagNET_IN_ATTACH_CUSTOM_SNAP_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 订阅通道号 fAttachCustomSnapInfo cbCustomSnapInfo; // 自定义定时抓图订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_CUSTOM_SNAP_INFO; ///@brief CLIENT_AttachCustomSnapInfo 接口输出参数 typedef struct tagNET_OUT_ATTACH_CUSTOM_SNAP_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_CUSTOM_SNAP_INFO; ///@brief 自定义定时抓图订阅接口(目前智慧养殖猪温检测在用) CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachCustomSnapInfo(LLONG lLoginID, NET_IN_ATTACH_CUSTOM_SNAP_INFO* pInParam, NET_OUT_ATTACH_CUSTOM_SNAP_INFO* pOutParam, const int nWaitTime); ///@brief 取消自定义定时抓图订阅接口(目前智慧养殖猪温检测在用) CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachCustomSnapInfo(LLONG lAttachHandle); ///@brief CLIENT_GetInstalledAppInfo 接口输入参数 typedef struct tagNET_IN_GET_INSTALLED_APP_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GET_INSTALLED_APP_INFO; ///@brief APP的能力信息 typedef struct tagNET_APP_CAPS { BOOL bShowWebConsole; // 是否支持 web Console BOOL bShowPerformance; // 是否支持查看性能 BOOL bShowDebug; // 是否支持调试 BYTE byReserved[128]; // 保留字节 }NET_APP_CAPS; ///@brief APP的运行状态 typedef enum tagEM_APP_RUNNING_STATE { EM_APP_RUNNING_STATE_UNKNOWN, // 未知 EM_APP_RUNNING_STATE_RUNNING, // 运行中 EM_APP_RUNNING_STATE_STOP, // 已停止 EM_APP_RUNNING_STATE_ERROR, // 异常状态 } EM_APP_RUNNING_STATE; ///@brief APP的证书状态 typedef enum tagEM_APP_LICENSE_STATE { EM_APP_LICENSE_STATE_UNKNOEN, // 未知 EM_APP_LICENSE_STATE_IN_TRAL, // 证书试用期 EM_APP_LICENSE_STATE_IN_LICENSE, // 证书正式合法 EM_APP_LICENSE_STATE_EXPIRED, // 证书过期 }EM_APP_LICENSE_STATE; ///@brief APP的调试状态 typedef enum tagEM_APP_DEBUG_STATE { EM_APP_DEBUG_STATE_UNKNOWN, // 未知 EM_APP_DEBUG_STATE_ENABLE, // 开启调试 EM_APP_DEBUG_STATE_DISABLE, // 关闭调试 }EM_APP_DEBUG_STATE; ///@brief 安装的应用信息 typedef struct tagNET_INSTALLED_APP_INFO { char szAppName[128]; // APP的名称 char szVersion[64]; // APP的版本 char szExtend[64]; // 扩展信息 UINT nAppID; // APP的ID EM_APP_DEBUG_STATE emAppDebugState; // APP的调试状态 EM_APP_RUNNING_STATE emAppRunningState; // APP的运行状态 EM_APP_LICENSE_STATE emAppLicenseState; // APP的license状态 NET_APP_CAPS stuAppCaps; // APP的能力信息 BYTE byReserved[256]; // 保留字节 } NET_INSTALLED_APP_INFO; ///@brief CLIENT_GetInstalledAppInfo 接口输出参数 typedef struct tagNET_OUT_GET_INSTALLED_APP_INFO { DWORD dwSize; // 结构体大小 UINT nListCount; // 返回以安装的应用列表信息的数量 NET_INSTALLED_APP_INFO stuAppInfoList[16]; // 安装的应用列表信息 } NET_OUT_GET_INSTALLED_APP_INFO; ///@brief CLIENT_StartApp 接口输入参数 typedef struct tagNET_IN_START_APP { DWORD dwSize; // 结构体大小 UINT nAppID; // APP的ID char szAppName[128]; // APP的名称 } NET_IN_START_APP; ///@brief CLIENT_StartApp 接口输出参数 typedef struct tagNET_OUT_START_APP { DWORD dwSize; // 结构体大小 } NET_OUT_START_APP; ///@brief CLIENT_StopApp 接口输出参数 typedef struct tagNET_IN_STOP_APP { DWORD dwSize; // 结构体大小 UINT nAppID; // APP的ID char szAppName[128]; // APP的名称 } NET_IN_STOP_APP; ///@brief CLIENT_StopApp 接口输出参数 typedef struct tagNET_OUT_STOP_APP { DWORD dwSize; // 结构体大小 } NET_OUT_STOP_APP; ///@brief CLIENT_RemoveApp 接口输入参数 typedef struct tagNET_IN_REMOVE_APP { DWORD dwSize; // 结构体大小 UINT nAppID; // APP的ID char szAppName[128]; // APP的名称 } NET_IN_REMOVE_APP; ///@brief CLIENT_RemoveApp 接口输出参数 typedef struct tagNET_OUT_REMOVE_APP { DWORD dwSize; // 结构体大小 } NET_OUT_REMOVE_APP; ///@brief 获取安装的应用列表 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetInstalledAppInfo(LLONG lLoginID, const NET_IN_GET_INSTALLED_APP_INFO* pInParam, NET_OUT_GET_INSTALLED_APP_INFO* pOutParam, int nWaitTime); ///@brief 启动程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartApp(LLONG lLoginID, const NET_IN_START_APP* pInParam, NET_OUT_START_APP* pOutParam, int nWaitTime); ///@brief 停止程序运行 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopApp(LLONG lLoginID, const NET_IN_STOP_APP* pInParam, NET_OUT_STOP_APP* pOutParam, int nWaitTime); ///@brief 卸载程序 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveApp(LLONG lLoginID, const NET_IN_REMOVE_APP* pInParam, NET_OUT_REMOVE_APP* pOutParam, int nWaitTime); ///@brief CLIENT_GetASGState 接口输入参数 typedef struct tagNET_IN_ACCESS_GET_ASG_STATE { DWORD dwSize; }NET_IN_ACCESS_GET_ASG_STATE; ///@brief 门翼状态 typedef enum tagEM_DOOR_WING_STATE { EM_DOOR_WING_STATE_UNKNOWN, // 未知 EM_DOOR_WING_STATE_CLOSE, // 关门 EM_DOOR_WING_STATE_ENTER_OPEN, // 进口打开 EM_DOOR_WING_STATE_LEAVE_OPEN, // 出口打开 } EM_DOOR_WING_STATE; ///@brief Can通信状态 typedef enum tagEM_CAN_COMMUNICATE_STATE { EM_CAN_COMMUNICATE_STATE_UNKNOWN = -1, // 未知 EM_CAN_COMMUNICATE_STATE_NORMAL, // 正常 EM_CAN_COMMUNICATE_STATE_ABNORMAL, // 异常 } EM_CAN_COMMUNICATE_STATE; ///@brief 闸机电池状态 typedef enum tagEM_ASG_BATTERY_STATE { EM_ASG_BATTERY_STATE_UNKNOWN = 0, // 未知 EM_ASG_BATTERY_STATE_NOT_IN_PLACE, // 不在位 EM_ASG_BATTERY_STATE_IN_PLACE, // 在位 }EM_ASG_BATTERY_STATE; ///@brief CLIENT_GetASGState 接口输出参数 typedef struct tagNET_OUT_ACCESS_GET_ASG_STATE { DWORD dwSize; int nInfraredStateNum; // 红外状态个数 int szInfraredStateMask[6]; // 红外状态掩码; // 数组[0] Bit0 表示第1路,Bit7表示第8路, 数组[1] Bit0 表示第9路,Bit7表示第16路; // 位定义为 0:灭(未遮挡),1:亮(被遮挡) EM_DOOR_WING_STATE emDoorWingState; // 门翼状态 EM_CAN_COMMUNICATE_STATE emCanState; // Can通信状态 int nEnterNum; // 进通行人数 int nLeaveNum; // 出通行人数 EM_ASG_BATTERY_STATE emBatteryState; // 蓄电池状态 UINT nMotorExceptionNum; // 电机异常次数 UINT nMotorRotationNum; // 电机转动次数 }NET_OUT_ACCESS_GET_ASG_STATE; ///@brief 获取闸机状态 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetASGState(LLONG lLoginID, const NET_IN_ACCESS_GET_ASG_STATE* pInParam, NET_OUT_ACCESS_GET_ASG_STATE* pOutParam, int nWaitTime); ///@brief CLIENT_StartFindXRayPkg 接口输入参数 typedef struct tagNET_IN_START_FIND_XRAY_PKG { DWORD dwSize; // 结构体大小 EM_RESULT_ORDER_TYPE emTimeOrder; // 查询结果按时间排序 NET_TIME stuStartTime; // 查询的开始时间 NET_TIME stuEndTime; // 查询的结束时间 UINT nSimilarityRange[2]; // 相似度范围,下标0:表示最小值, 下标1:表示最大值 UINT nObjTypeNum; // 物体类型的数量 EM_INSIDE_OBJECT_TYPE emObjType[32]; // 物品类型 UINT nObjTypeCount; // 自定义物体类型的数量 NET_XRAY_INSIDE_ONJECT_TYPE stuObjType[32]; // 自定义物品类型 } NET_IN_START_FIND_XRAY_PKG; ///@brief CLIENT_StartFindXRayPkg 接口输出参数 typedef struct tagNET_OUT_START_FIND_XRAY_PKG { DWORD dwSize; // 结构体大小 UINT nTotal; // 包裹总数 } NET_OUT_START_FIND_XRAY_PKG; ///@brief CLIENT_DoFindXRayPkg 接口输出参数 typedef struct tagNET_IN_DO_FIND_XRAY_PKG { DWORD dwSize; // 结构体大小 UINT nOffset; // 查询偏移 UINT nCount; // 需要查找的数目 } NET_IN_DO_FIND_XRAY_PKG; ///@brief X光机物体信息 typedef struct tagNET_PKG_OBJECT_INFO { EM_INSIDE_OBJECT_TYPE emObjType; // 物品类型 EM_DANGER_GRADE_TYPE emDangerGrade; // 物品危险等级 UINT nSimilarity; // 相似度,0~100 char szObjectType[32]; // 自定义物品类型,emObjType为 EM_INSIDE_OBJECT_UNKNOWN 时使用 BYTE byReserved[100]; // 保留字节 }NET_PKG_OBJECT_INFO; ///@brief 视角信息数 typedef struct tagNET_PKG_VIEW_INFO { EM_XRAY_VIEW_TYPE emViewType; // 视图类型 UINT nEnergyImageLength; // 能量图大小 单位字节 char szEnergyImagePath[128]; // 能量图绝对路径 UINT nColorImageLength; // 彩图大小单位字节 char szColorImagePath[128]; // 彩图绝对路径 UINT nColorOverlayImageLength; // 彩图叠加图大小单位字节 char szColorOverlayImagePath[128];// 彩图叠加图绝对路径 NET_PKG_OBJECT_INFO stuObject[32]; // 物体数组 UINT nObjectCount; // 物体数量 BYTE byReserved[1024]; // 保留字节 } NET_PKG_VIEW_INFO; ///@brief X光机的包裹信息 typedef struct tagNET_XRAY_PKG_INFO { NET_TIME stuTime; // 包裹产生时间(含时区) int nChannelIn; // 关联的进口IPC通道号,从0开始,-1表示无效 int nChannelOut; // 关联的出口IPC通道号,从0开始,-1表示无效 char szUser[128]; // 用户名 NET_PKG_VIEW_INFO stuViewInfo[2]; // 视角信息数组 BYTE byReserved[1024]; // 保留字节 } NET_XRAY_PKG_INFO; ///@brief CLIENT_DoFindXRayPkg 接口输出参数 typedef struct tagNET_OUT_DO_FIND_XRAY_PKG { DWORD dwSize; // 结构体大小 UINT nMaxCount; // 用户指定分配结构体个数,需大于等于NET_IN_DO_FIND_XRAY_PKG的nCount UINT nRetCount; // 实际返回的查询数量 NET_XRAY_PKG_INFO* pstuXRayPkgInfo; // X光机的包裹信息,缓存大小由用户指定 } NET_OUT_DO_FIND_XRAY_PKG; ///@brief 开始查找X光机包裹信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindXRayPkg(LLONG lLoginID, const NET_IN_START_FIND_XRAY_PKG* pInParam, NET_OUT_START_FIND_XRAY_PKG* pOutParam, int nWaitTime); ///@brief 查询X光机包裹的信息,lFindID为CLIENT_StartFindXRayPkg接口返回的查找ID CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindXRayPkg(LLONG lFindID, const NET_IN_DO_FIND_XRAY_PKG* pInParam, NET_OUT_DO_FIND_XRAY_PKG* pOutParam, int nWaitTime); ///@brief 结束查询X光机包裹的信息, lFindID为CLIENT_StartFindXRayPkg接口返回的查找ID CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindXRayPkg(LLONG lFindID); ///@brief 电视墙场景回调信息 typedef struct tagNET_CB_MONITOR_WALL_SCENE { char szCurrentCollectionName[32]; // 当前预案名称 DH_MONITORWALL_SCENE stuScene; // 电视墙场景 BYTE byReserve[1024]; // 保留字节 } NET_CB_MONITOR_WALL_SCENE; ///@brief 电视墙场景订阅回调函数原型, lAttachHandle为 CLIENT_AttachMonitorWallScene 接口的返回值 typedef void (CALLBACK *fMonitorWallScene)(LLONG lAttachHandle, NET_CB_MONITOR_WALL_SCENE* pstResult, LDWORD dwUser); ///@brief CLIENT_AttachMonitorWallScene 接口输入参数 typedef struct tagNET_IN_ATTACH_MONITOR_WALL_SCENE { DWORD dwSize; // 结构体大小 int nMonitorWallID; // 电视墙ID fMonitorWallScene cbMonitorWallScene; // 电视墙场景订阅回调函数 LDWORD dwUser; // 用户数据 } NET_IN_ATTACH_MONITOR_WALL_SCENE; ///@brief CLIENT_AttachMonitorWallScene 接口输出参数 typedef struct tagNET_OUT_ATTACH_MONITOR_WALL_SCENE { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_MONITOR_WALL_SCENE; ///@brief 订阅电视墙场景 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachMonitorWallScene(LLONG lLoginID, NET_IN_ATTACH_MONITOR_WALL_SCENE* pInParam, NET_OUT_ATTACH_MONITOR_WALL_SCENE* pOutParam, const int nWaitTime); ///@brief 取消订阅电视墙场景,, lAttachHandle为 CLIENT_AttachMonitorWallScene 接口的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachMonitorWallScene(LLONG lAttachHandle); ///@brief CLIENT_GetSystemCaps 接口输入参数 typedef struct tagNET_IN_SYSTEM_GETCAPS { DWORD dwSize; // 结构体大小 }NET_IN_SYSTEM_GETCAPS; ///@brief CLIENT_GetSystemCaps 接口输出参数 typedef struct tagNET_OUT_SYSTEM_GETCAPS { DWORD dwSize; // 结构体大小 BOOL bSupportCascadeCall; // 是否支持级联调用 DWORD dwCascadeType; // 级联调用方式, bSupportCascadeCall 为TRUE时有效 // 值为掩码方式, 第一位表示通道方式 }NET_OUT_SYSTEM_GETCAPS; ///@brief 获取设备系统能力 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSystemCaps(LLONG lLoginID, const NET_IN_SYSTEM_GETCAPS* pInParam, NET_OUT_SYSTEM_GETCAPS* pOutParam, const int nWaitTime); ///@brief 修改密码时校验当前密码方式 typedef enum tagEM_VERIFY_PASSWORD_TYPE { EM_VERIFY_PASSWORD_TYPE_UNKNOWN = -1, // 未知 EM_VERIFY_PASSWORD_TYPE_PLAIN, // 明文(也即szOldPwd为当前用户的账户密码) }EM_VERIFY_PASSWORD_TYPE; ///@brief 修改设备密码方式 typedef enum tagEM_MODIFY_PASSWORD_TYPE { EM_MODIFY_PASSWORD_TYPE_UNKNOWN = -1, // 未知 EM_MODIFY_PASSWORD_TYPE_BY_MULTICAST, // 组播修改 EM_MODIFY_PASSWORD_TYPE_BY_UNICAST, // 单播修改 }EM_MODIFY_PASSWORD_TYPE; ///@brief CLIENT_ModifyDevPassword 入参 typedef struct tagNET_IN_MODIFY_DEV_PASSWORD { DWORD dwSize; // 结构体大小 EM_MODIFY_PASSWORD_TYPE emModifyType; // 修改密码方式 char szMac[DH_MACADDR_LEN]; // 设备mac地址 char szDeviceIP[DH_MAX_IPADDR_LEN_EX]; // 设备IP(emModifyType 为 EM_MODIFY_PASSWORD_TYPE_BY_UNICAST 时填写) char szUserName[MAX_USER_NAME_LEN]; // 用户名 char szNewPwd[MAX_PWD_LEN]; // 新密码 char szOldPwd[MAX_PWD_LEN]; // 老密码 EM_VERIFY_PASSWORD_TYPE emVerifyPasswdType; // 校验密码方式 char szLocalIP[DH_MAX_IPADDR_LEN_EX]; // 本地IP(如果不填,绑定到默认网卡) } NET_IN_MODIFY_DEV_PASSWORD; ///@brief CLIENT_ModifyDevPassword 出参 typedef struct tagNET_OUT_MODIFY_DEV_PASSWORD { DWORD dwSize; // 结构体大小 int nRemainModifyTimes; // 修改密码失败时有效,旧密码输错剩余可尝试的输入次数(-1表示无限次,-2表示未知) int nRemainLockSeconds; // 修改密码失败时有效,锁定修改密码操作剩余时间,单位秒(-1表示不锁定,-2表示未知) BYTE byReserved[4]; // 预留字段 }NET_OUT_MODIFY_DEV_PASSWORD; ///@brief 修改设备密码 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyDevPassword(const NET_IN_MODIFY_DEV_PASSWORD* pInParam, NET_OUT_MODIFY_DEV_PASSWORD* pOutParam, int nWaitTime); ///@brief CLIENT_GetHumanRadioCaps 接口输入参数 typedef struct tagNET_IN_GET_HUMAN_RADIO_CAPS { DWORD dwSize; // 结构体大小 int nChannel; // 通道号,需要是热成像通道号 } NET_IN_GET_HUMAN_RADIO_CAPS; ///@brief CLIENT_GetHumanRadioCaps 接口输出参数 typedef struct tagNET_OUT_GET_HUMAN_RADIO_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportRegulatorAlarm; // 是否支持黑体异常报警 } NET_OUT_GET_HUMAN_RADIO_CAPS; ///@brief 获取能力级 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetHumanRadioCaps(LLONG lLoginID, const NET_IN_GET_HUMAN_RADIO_CAPS* pInParam, NET_OUT_GET_HUMAN_RADIO_CAPS* pOutParam, int nWaitTime); ///@brief 人员组类型 typedef enum tagEM_PEOPLE_GROUP_TYPE { EM_PEOPLE_GROUP_TYPE_UNKNOWN, // 未知 EM_PEOPLE_GROUP_TYPE_HISTORYDB, // 历史数据库,保存视频通道的抓拍目标图片 EM_PEOPLE_GROUP_TYPE_BLACKLISTDB, // 禁止名单组,保存外部导入的图片 EM_PEOPLE_GROUP_TYPE_ALARMDB, // 报警组 } EM_PEOPLE_GROUP_TYPE; ///@brief CLIENT_RemoteFaceRecognitionCreateGroup 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_CREATE_GROUP { DWORD dwSize; // 结构体大小 UINT nChannel; // 前端相机视频通道号 char szGroupName[128]; // 人员组名称 char szGroupDetail[256]; // 人员组备注信息 EM_PEOPLE_GROUP_TYPE emGroupType; // 人员组类型 BYTE byReserved[4]; // 对齐 } NET_IN_REMOTEFACERECOGNITION_CREATE_GROUP; ///@brief CLIENT_RemoteFaceRecognitionCreateGroup 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_CREATE_GROUP { DWORD dwSize; // 结构体大小 BYTE byReserved[4]; // 对齐 char szGroupID[64]; // 人员组ID } NET_OUT_REMOTEFACERECOGNITION_CREATE_GROUP; ///@brief 通过NVR创建IPC上的人员组(前智能) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionCreateGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_CREATE_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_CREATE_GROUP* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionFindGroup 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_FIND_GROUP { DWORD dwSize; // 结构体大小 UINT nChannel; // 前端相机视频通道号 char szGroupID[64]; // 人员组信息ID,""表示查找全部人员组信息 } NET_IN_REMOTEFACERECOGNITION_FIND_GROUP; ///@brief 查找的人员组信息 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_FIND_GROUP_INFO { EM_PEOPLE_GROUP_TYPE emGroupType; // 人员组类型 int nGroupSize; // 当前组内人员数 char szGroupName[128]; // 人员组名称 char szGroupDetail[256]; // 人员组备注信息 char szGroupID[64]; // 人员组编号 int nChannelNum; // 当前组绑定到的视频通道号数 int nSimilarityNum; // 当前组绑定视频时的相似度阈值数 int nChannels[1024]; // 当前组绑定到的视频通道号列表, 未和任何视频通道关联填[-1] UINT nSimilarity[1024]; // 当前组绑定视频时的相似度阈值, 未绑定视频时IPC的Web会把下标0元素作为默认相似度阈值使用 NET_CFG_TIME_SCHEDULE stuTimeSection; // 时间段 UINT nFeatureState[4]; // 组内建模中/未建模/已建模人员的数量,未完成建模(特征提取)的人员无法进行识别 // 数组下标对应关系 // [0]-建模中 // [1]-未建模 // [2]-已建模 // [3]-曾经建模成功 BYTE byReserved[1020]; // 预留字节 } NET_OUT_REMOTEFACERECOGNITION_FIND_GROUP_INFO; ///@brief CLIENT_RemoteFaceRecognitionFindGroup 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_FIND_GROUP { DWORD dwSize; // 结构体大小 int nGroupNum; // 人员组数 NET_OUT_REMOTEFACERECOGNITION_FIND_GROUP_INFO stuGroupInfo[64]; // 查找的人员组信息 } NET_OUT_REMOTEFACERECOGNITION_FIND_GROUP; ///@brief 通过NVR查找IPC的人员组信息(前智能),支持模糊查询 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionFindGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_FIND_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_FIND_GROUP* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionModifyGroup 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_MODIFY_GROUP { DWORD dwSize; // 结构体大小 UINT nChannel; // 前端相机视频通道号 EM_PEOPLE_GROUP_TYPE emGroupType; // 人员组类型 UINT nSimilarity; // 当前组绑定视频时的相似度阈值 char szGroupName[128]; // 人员组名称 char szGroupDetail[256]; // 人员组备注信息 char szGroupID[128]; // 人员组编号 NET_CFG_TIME_SCHEDULE stuTimeSection; // 时间段 BOOL bSimilarityNotValid; // nSimilarity字段是否无效,TRUE:无效,不下发;FALSE:有效,下发 BOOL bTimeSectionNotValid; // stuTimeSection字段是否无效,TRUE:无效,不下发;FALSE:有效,下发 } NET_IN_REMOTEFACERECOGNITION_MODIFY_GROUP; ///@brief CLIENT_RemoteFaceRecognitionModifyGroup 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_MODIFY_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTEFACERECOGNITION_MODIFY_GROUP; ///@brief 通过NVR修改IPC的人员组(前智能) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionModifyGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_MODIFY_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_MODIFY_GROUP* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionModifyGroup 接口输出参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_DELETE_GROUP { DWORD dwSize; // 结构体大小 UINT nChannel; // 前端相机视频通道号 char szGroupID[64]; // 人员组信息ID,""表示删除全部人员组信息 } NET_IN_REMOTEFACERECOGNITION_DELETE_GROUP; ///@brief CLIENT_RemoteFaceRecognitionModifyGroup 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_DELETE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTEFACERECOGNITION_DELETE_GROUP; ///@brief 通过NVR删除IPC的人员组(前智能) CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDeleteGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_DELETE_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_DELETE_GROUP* pOutParam, int nWaitTime); ///@brief 回调函数信息 typedef struct tagNET_CB_REMOTEFACERECOGNITION_APPEND_STATE { int nTokenNum; // 令牌数量 int nReportNum; // 添加报告数量 UINT nToken[64]; // 查询令牌 UINT nReport[64]; // 添加成功或失败报告, 1-成功 0-失败 char szUID[64][32]; // 添加成功返回UID,失败返回空字符串"" int nUIDNum; // UID 个数 int nUUIDNum; // UUID 个数 char szUUID[64][64]; // 平台唯一标识目标字段 int nChannel[64]; // 通道号 int nChannelNum; // 通道号个数 BYTE byReserved[508]; // 预留字节 } NET_CB_REMOTEFACERECOGNITION_APPEND_STATE; ///@brief 向客户端发送添加前智能目标添加回调函数, lAttachHandle 为 CLIENT_AttachAppendState 返回的结果 typedef void (CALLBACK *fFaceRecognitionAppendStateCallBack)(LLONG lAttachHandle, NET_CB_REMOTEFACERECOGNITION_APPEND_STATE* pstuState, LDWORD dwUser); ///@brief CLIENT_AttachAppendState 入参 typedef struct tagNET_IN_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO { DWORD dwSize; // 结构体大小 fFaceRecognitionAppendStateCallBack cbAppendState; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO; ///@brief CLIENT_AttachAppendState 出参 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO; ///@brief 订阅前智能添加多目标库进度,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RemoteFaceRecognitionAttachAppendState(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO *pInParam, NET_OUT_REMOTEFACERECOGNITION_APPEND_STATE_ATTACH_INFO *pOutParam, int nWaitTime); ///@brief 注销前智能添加目标回调, lAttachHandle是CLIENT_RemoteFaceRecognitionAttachAppendState的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDetachAppendState(LLONG lAttachHandle); ///@brief CLIENT_RemoteFaceRecognitionMultiAppendAsync 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC { DWORD dwSize; // 结构体大小 int nPersonNum; // 人员个数, 最大值为64 FACERECOGNITION_PERSON_INFOEX* pstuPersonInfo; // 人员信息 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 UINT nBufferLen; // 缓冲数据长度 UINT nChannel; // 前端相机视频通道号 } NET_IN_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC; ///@brief CLIENT_RemoteFaceRecognitionMultiAppendAsync 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC { DWORD dwSize; // 结构体大小 int nTokenNum; // 令牌数量 UINT nToken[64]; // 添加令牌,用于回调时标识 } NET_OUT_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC; ///@brief 通过NVR向IPC添加人员信息和目标样本(前智能),如果人员已经存在,图片数据和原来的数据合并 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionMultiAppendAsync(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC* pInParam, NET_OUT_REMOTEFACERECOGNITION_MULTI_APPEND_ASYNC* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionModifyPerson 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_MODIFY_PERSON { DWORD dwSize; // 结构体大小 int nChannel; // 相机视频通道号 FACERECOGNITION_PERSON_INFOEX stuPersonInfo; // 人员信息 /* 图片二进制数据 */ char *pBuffer; // 缓冲地址 UINT nBufferLen; // 缓冲数据长度 BYTE byReserved[4]; // 对齐 } NET_IN_REMOTEFACERECOGNITION_MODIFY_PERSON; ///@brief CLIENT_RemoteFaceRecognitionModifyPerson 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_MODIFY_PERSON { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTEFACERECOGNITION_MODIFY_PERSON; ///@brief 通过NVR修改IPC的人员信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionModifyPerson(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_MODIFY_PERSON* pInParam, NET_OUT_REMOTEFACERECOGNITION_MODIFY_PERSON* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionDeletePerson 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_DELETE_PERSON { DWORD dwSize; // 结构体大小 int nChannel; // 相机视频通道号 char szUID[32]; // 人员唯一标识符 char szGroupID[64]; // IPC产品支持多组目标,只有UID无法正确删除目标,必须同时指定组ID和UID才能删除 } NET_IN_REMOTEFACERECOGNITION_DELETE_PERSON; ///@brief CLIENT_RemoteFaceRecognitionDeletePerson 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_DELETE_PERSON { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTEFACERECOGNITION_DELETE_PERSON; ///@brief 通过NVR删除IPC人员信息和目标样本 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDeletePerson(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_DELETE_PERSON* pInParam, NET_OUT_REMOTEFACERECOGNITION_DELETE_PERSON* pOutParam, int nWaitTime); ///@brief 排序类型 typedef enum tagEM_ORDER_TYPE { EM_ORDER_TYPE_UNKNOWN, // 未知 EM_ORDER_TYPE_ASC_BY_LASTAPPEARTIME, // 查询结果按人员的最近出现时间升序 EM_ORDER_TYPE_ASC_BY_STORAGETIME, // 查询结果按人员的入库时间升序 }EM_ORDER_TYPE; ///@brief 查询条件 typedef struct tagNET_REMOTEFACERECOGNITION_FIND_CONDITION { int nRangeNum; // 查询类型个数 int nGroupNum; // 查询库列表个数 EM_PEOPLE_GROUP_TYPE emGroupType[8]; // 查询类型 char szGroupID[128][64]; // 查询库列表 NET_TIME stuBirthdayRange[2]; // 生日范围(IPC需求), [0]表示开始日期,[1]表示结束日期, ["", ""]都表示查询所有生日范围 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nUIDsNum; // 人员唯一标识列表个数 int nUUIDsNum; // 平台端人员唯一标识列表个数 char szUIDs[64][32]; // 人员唯一标识列表 char szUUIDs[64][32]; // 平台端人员唯一标识列表,根据getCaps获取到的能力是否存在字段SupportIDFromServer且值为true时有效 EM_ORDER_TYPE emOrderType; // 排序类型 BYTE byReserved[512]; // 预留字节 } NET_REMOTEFACERECOGNITION_FIND_CONDITION; ///@brief 查询的人员信息 typedef struct tagNET_REMOTEFACERECOGNITION_FIND_PERSON_INFO { EM_SEX_TYPE emSex; // 性别 EM_CERTIFICATE_TYPE emCertificateType; // 证件类型 char szName[64]; // 姓名 char szID[32]; // 人员证件号码,工号,或其他编号 char szProvince[64]; // 省份 char szCity[64]; // 城市 EM_PERSON_FEATURE_STATE emFeatureState; // 人员建模状态(IVSS需求) BYTE byReserved[508]; // 预留字节 } NET_REMOTEFACERECOGNITION_FIND_PERSON_INFO; ///@brief CLIENT_RemoteFaceRecognitionStartFindRegInfo 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_START_FIND_REG_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 相机视频通道号 NET_REMOTEFACERECOGNITION_FIND_CONDITION stuCondition; // 查询条件 NET_REMOTEFACERECOGNITION_FIND_PERSON_INFO stuPersonInfo; // 查询的人员信息,可以只填部分,根据这部分在数据库查询 } NET_IN_REMOTEFACERECOGNITION_START_FIND_REG_INFO; ///@brief CLIENT_RemoteFaceRecognitionStartFindRegInfo 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_START_FIND_REG_INFO { DWORD dwSize; // 结构体大小 UINT nToken; // 取到的查询令牌 int nTotalCount; // 符合此次查询条件的结果总条数, -1表示总条数未生成,要推迟获取 BYTE byReserved[4]; // 对齐 } NET_OUT_REMOTEFACERECOGNITION_START_FIND_REG_INFO; ///@brief 通过NVR查找IPC注册库人员信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_RemoteFaceRecognitionStartFindRegInfo(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_START_FIND_REG_INFO* pInParam, NET_OUT_REMOTEFACERECOGNITION_START_FIND_REG_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionDoFind 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_DO_FIND { DWORD dwSize; // 结构体大小 UINT nBeginNumber; // 查询起始序号 int nCount; // 每次获取的条数, 一般不应该超过50 int nNeedDataMask; // 查询结果返回图片格式掩码, bit0 返回图片HTTP链接, bit1 返回图片二进制数据 } NET_IN_REMOTEFACERECOGNITION_DO_FIND; ///@brief 候选人员信息列表 typedef struct tagNET_CANDIDATE_INFO { FACERECOGNITION_PERSON_INFOEX stuPersonInfo; // 人员信息 EM_PEOPLE_GROUP_TYPE emGroupType; // 候选人来自哪个数据库 BYTE byReserved[2044]; // 预留字节 } NET_CANDIDATE_INFO; ///@brief CLIENT_RemoteFaceRecognitionDoFind 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_DO_FIND { DWORD dwSize; // 结构体大小 int nFound; // 查询到的条数 int nCandidateMaxNum; // 候选人最大个数, 最大数为64 int nCandidateNum; // 候选返回个数 NET_CANDIDATE_INFO* pstuCandidateInfo; // 候选人员信息列表 } NET_OUT_REMOTEFACERECOGNITION_DO_FIND; ///@brief 通过NVR查询IPC人员信息, lFindID是CLIENT_RemoteFaceRecognitionStartFindRegInfo的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDoFind(LLONG lFindID, const NET_IN_REMOTEFACERECOGNITION_DO_FIND* pInParam, NET_OUT_REMOTEFACERECOGNITION_DO_FIND* pOutParam, int nWaitTime); ///@brief 结束通过NVR查询IPC人员信息, lFindID是CLIENT_RemoteFaceRecognitionStartFindRegInfo的返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionStopFind(LLONG lFindID); ///@brief CLIENT_RemoteFaceRecognitionSetGroup 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_SET_GROUP { DWORD dwSize; // 结构体大小 int nChannel; // 相机视频通道号 int nGroupIDNum; // 组ID个数 int nSimilaryNum; // 组的相似度阈值个数 char szGroupID[128][64]; // 组ID, 如果值为[""]表示视频通道不布控目标组,此时目标识别退化为目标检测 char nSimilary[128]; // 组的相似度阈值, 范围[0, 100] } NET_IN_REMOTEFACERECOGNITION_SET_GROUP; ///@brief CLIENT_RemoteFaceRecognitionSetGroup 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_SET_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTEFACERECOGNITION_SET_GROUP; ///@brief 通过NVR设置IPC视频通道布控 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionSetGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_SET_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_SET_GROUP* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionGetGroup 入参 typedef struct tagNET_IN_REMOTEFACERECOGNITION_GET_GROUP { DWORD dwSize; // 结构体大小 int nChannel; // 通道 }NET_IN_REMOTEFACERECOGNITION_GET_GROUP; ///@brief CLIENT_RemoteFaceRecognitionGetGroup 出参 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_GET_GROUP { DWORD dwSize; // 结构体大小 int nValidCount; // szGroupID和nSimilarys有效个数, 最大128 char szGroupID[128][64]; // 目标组ID列表 int nSimilarys[128]; // 目标组的相似度阈值, 元素范围 范围[0, 100] }NET_OUT_REMOTEFACERECOGNITION_GET_GROUP; ///@brief 获取布控在视频通道的组ID CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionGetGroup(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_GET_GROUP* pInParam, NET_OUT_REMOTEFACERECOGNITION_GET_GROUP* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionDownloadPiece 接口输入参数 typedef struct tagNET_IN_REMOTEFACERECOGNITION_DOWNLOAD_PIECE { DWORD dwSize; // 结构体大小 int nChannel; // 相机视频通道号 char szFilename[260]; // 文件名称,全路径 UINT nOffset; // 下载偏移量 UINT nNeedLength; // 请求下载数据量, 单位字节, 建议值32K,最大不超过4M BYTE byReserved[4]; // 对齐 } NET_IN_REMOTEFACERECOGNITION_DOWNLOAD_PIECE; ///@brief CLIENT_RemoteFaceRecognitionDownloadPiece 接口输出参数 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_DOWNLOAD_PIECE { DWORD dwSize; // 结构体大小 UINT nFileLength; // 文件总长度,单位字节 char* szBuffer; // 本次请求的文件数据, 用户申请内存 UINT nBufferLen; // 本次请求的文件数据长度, 单位字节 UINT nPacketLength; // 本次请求的二进制数据长度, 客户端根据总长度判断和累计下载量来判断是否下载结束 } NET_OUT_REMOTEFACERECOGNITION_DOWNLOAD_PIECE; ///@brief 分包下载目标库图片文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDownloadPiece(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_DOWNLOAD_PIECE* pInParam, NET_OUT_REMOTEFACERECOGNITION_DOWNLOAD_PIECE* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionPutDisposition 入参 typedef struct tagNET_IN_REMOTEFACERECOGNITION_PUT_DISPOSITION { DWORD dwSize; int nChannel; // 远程设备通道号 char szGroupID[64]; // 组ID int nSimilary; // 相似度阈值, 0-100 }NET_IN_REMOTEFACERECOGNITION_PUT_DISPOSITION; ///@brief CLIENT_RemoteFaceRecognitionPutDisposition 出参 typedef struct tagNET_OUT_REMOTE_FACERECOGNITION_PUT_DISPOSITION { DWORD dwSize; }NET_OUT_REMOTEFACERECOGNITION_PUT_DISPOSITION; ///@brief 以目标库的角度进行远程设备布控, pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionPutDisposition(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_PUT_DISPOSITION* pstInParam, NET_OUT_REMOTEFACERECOGNITION_PUT_DISPOSITION *pstOutParam, int nWaitTime); ///@brief CLIENT_RemoteFaceRecognitionDelDisposition 入参 typedef struct tagNET_IN_REMOTEFACERECOGNITION_DEL_DISPOSITION { DWORD dwSize; int nChannel; // 远程设备通道号 char szGroupID[64]; // 组ID }NET_IN_REMOTEFACERECOGNITION_DEL_DISPOSITION; ///@brief CLIENT_RemoteFaceRecognitionDelDisposition 出参 typedef struct tagNET_OUT_REMOTEFACERECOGNITION_DEL_DISPOSITION { DWORD dwSize; }NET_OUT_REMOTEFACERECOGNITION_DEL_DISPOSITION; ///@brief 以目标库的角度进行远程设备撤控, pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteFaceRecognitionDelDisposition(LLONG lLoginID, const NET_IN_REMOTEFACERECOGNITION_DEL_DISPOSITION* pstInParam, NET_OUT_REMOTEFACERECOGNITION_DEL_DISPOSITION *pstOutParam, int nWaitTime); ///@brief CLIENT_GetDevCaps 对应的类型(NET_REMOTE_FACE_RECOGNITION_CAPS)入参 typedef struct tagNET_IN_REMOTE_FACE_RECOGNITION_CAPS { DWORD dwSize; // 结构体大小 UINT nChannel; // 前端相机视频通道号 } NET_IN_REMOTE_FACE_RECOGNITION_CAPS; ///@brief 支持的业务种类 typedef enum tagEM_FACE_RECOGGNIZE_FUNCTION { EM_FACE_RECOGGNIZE_FUNCTION_UNKNOW = -1, // 未知 EM_FACE_RECOGGNIZE_FUNCTION_SELF, // 用自身的目标识别模块 EM_FACE_RECOGGNIZE_FUNCTION_AGENT, // 用代理的目标识别模块 } EM_FACE_RECOGGNIZE_FUNCTION; ///@brief 支持目标库重建方式 typedef enum tagEM_FACE_DATABASE_RECONSTRUCTION { EM_FACE_DATABASE_RECONSTRUCTION_UNKNOWN = -1, // 未知 EM_FACE_DATABASE_RECONSTRUCTION_REABSTRACT, // 支持reAbstract重建 EM_FACE_DATABASE_RECONSTRUCTION_REABSTRACT_WITH_GROUPREABSTRACT, // 支持reAbstract和groupReAbstract重建 } EM_FACE_DATABASE_RECONSTRUCTION; ///@brief 支持从大图检测小图的方法 typedef enum tagEM_FACE_RECOGGNIZE_DETECT_METHOD { EM_FACE_RECOGGNIZE_DETECT_METHOD_UNKNOWN = -1, // 未知 EM_FACE_RECOGGNIZE_DETECT_METHOD_UNCERTAIN = 0, // 不确定 EM_FACE_RECOGGNIZE_DETECT_METHOD_MULTIFACE = 1, // 支持检测多目标 } EM_FACE_RECOGGNIZE_DETECT_METHOD; ///@brief CLIENT_GetDevCaps 对应的类型(NET_REMOTE_FACE_RECOGNITION_CAPS)出参 typedef struct tagNET_OUT_REMOTE_FACE_RECOGNITION_CAPS { DWORD dwSize; // 结构体大小 BOOL bMultiFind; // 是否支持多通道同时查找 UINT nMaxFaceType; // 最多支持添加多少个自定义目标类型 EM_FACE_RECOGGNIZE_FUNCTION emSupportFunction; // 支持的业务种类 EM_FACE_DATABASE_RECONSTRUCTION emReAbstract; // 支持目标库重建方式 EM_FACE_RECOGGNIZE_DETECT_METHOD emDetectMethod; // 支持从大图检测小图的方法 NET_FACEBOXCOLOR_CAPS stuFaceBoxColor; // 目标检测框颜色能力 BOOL bAsynPush; // 是否支持以图搜图数据推送 BOOL bModifyPersonByToken; // 是否支持带令牌的人员修改 UINT nMaxGroupNum; // 最大目标库数量, 0表示无效 UINT nMaxPersonNum; // 最大存储目标容量, 0表示无效 UINT nMultiAppendPicLength; // 批量导图每次接收图片的大小, 单位KB EM_SUPPORT_SEARCH_BY_PIC emSupportSearchByPic; // 是否支持以图搜图 DWORD dwSearchTypeMask; // 以图搜图支持的目标类型掩码, emSupportSearchByPic为EM_SUPPORT_SEARCH_BY_PIC_SUPPORT时有效 // bit0:目标, bit1:人体, bit2:机动车, bit3:非机动车 UINT nSinglePicMaxLength; // 单个图片最大大小的值,单位KB BOOL bPersonWithMultiFace; // 设备目标注册库是不是支持一人多图的情况 } NET_OUT_REMOTE_FACE_RECOGNITION_CAPS; ///@brief CLIENT_GetDevCaps 对应的类型( NET_MONITOR_WALL_CAPS )入参 typedef struct tagNET_IN_MONITOR_WALL_CAPS_INFO { DWORD dwSize; // 结构体大小 } NET_IN_MONITOR_WALL_CAPS_INFO; ///@brief CLIENT_GetDevCaps 对应的类型( NET_MONITOR_WALL_CAPS )出参 typedef struct tagNET_OUT_MONITOR_WALL_CAPS_INFO { DWORD dwSize; // 结构体大小 int nMonitorWallCount; // 电视墙数量 BOOL bSupportAnnotation; // 是否支持批注功能 BOOL bSupportMeetingMode; // 设备是否支持会议室模式功能 BOOL bSupportCrossDevice; // 是否支持跨设备拼接电视墙 }NET_OUT_MONITOR_WALL_CAPS_INFO; ///@brief CLIENT_ModifyRemoteDevicePassword 接口输入参数 typedef struct tagNET_IN_MODIFY_REMOTEDEVICE_PASSWORD { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szUserName[128]; // 用户名 char szNewPassword[128]; // 新密码 char szOldPassword[128]; // 旧密码 } NET_IN_MODIFY_REMOTEDEVICE_PASSWORD; ///@brief CLIENT_ModifyRemoteDevicePassword 接口输出参数 typedef struct tagNET_OUT_MODIFY_REMOTEDEVICE_PASSWORD { DWORD dwSize; // 结构体大小 int nErrorCode; // 错误码, 只在返回错误的时候有意义, 0表示无错误, 具体可参考当前文件 错误类型代号_EC() // 0x46e 密码无效 int nRemainModifyTimes; // 修改密码时,旧密码输错剩余可尝试的输入次数, -1表示无限次(在有错误码有效的时候使用) int nRemainLockSeconds; // 锁定修改密码操作剩余时间,-1表示不锁定(在有错误码有效的时候使用) } NET_OUT_MODIFY_REMOTEDEVICE_PASSWORD; ///@brief 修改前端相机的登录密码 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyRemoteDevicePassword(LLONG lLoginID, const NET_IN_MODIFY_REMOTEDEVICE_PASSWORD* pInParam, NET_OUT_MODIFY_REMOTEDEVICE_PASSWORD* pOutParam, int nWaitTime); ///@brief CLIENT_GetIntelliStatesEnableInfo 接口输入参数 typedef struct tagNET_IN_GET_INTELLI_STATES_ENABLE_INFO { DWORD dwSize; // 结构体大小 UINT nChannelCount; // 视频通道个数 UINT nChannels[1024]; // 视频通道号 } NET_IN_GET_INTELLI_STATES_ENABLE_INFO; ///@brief 人体目标检测属性信息 typedef struct tagNET_HUMAN_TRAIT_ENABLE_INFO { BOOL bFeatureExtract; // 特征上报使能 BOOL bAttributeExtract; // 属性上报使能 char szResvered[32]; // 预留字节 }NET_HUMAN_TRAIT_ENABLE_INFO; ///@brief 机动车目标检测属性信息 typedef struct tagNET_VEHICLE_ENABLE_INFO { BOOL bFeatureExtract; // 特征上报使能 BOOL bAttributeExtract; // 属性上报使能 char szResvered[32]; // 预留字节 }NET_VEHICLE_ENABLE_INFO; ///@brief 非机动车目标检测属性信息 typedef struct tagNET_NON_MOTOR_ENABLE_INFO { BOOL bFeatureExtract; // 特征上报使能 BOOL bAttributeExtract; // 属性上报使能 char szResvered[32]; // 预留字节 }NET_NON_MOTOR_ENABLE_INFO; ///@brief 目标检测属性信息 typedef struct tagNET_OBJECT_DETECT_ENABLE_INFO { BOOL bFeatureExtract; // 特征上报总使能状态 BOOL bAttributeExtract; // 属性上报总使能状态 BOOL bHumanTrait; // 人体目标,FALSE则表示默认支持属性上报 NET_HUMAN_TRAIT_ENABLE_INFO stuHumanTrait; // 人体目标使能信息 BOOL bVehicle; // 机动车目标,FALSE则表示默认支持属性上报 NET_VEHICLE_ENABLE_INFO stuVehicle; // 机动车目标使能信息 BOOL bNonMotor; // 非机动车目标,FALSE则表示默认支持属性上报 NET_NON_MOTOR_ENABLE_INFO stuNonMotor; // 非机动车目标使能信息 char szResvered[36]; // 预留字节 }NET_OBJECT_DETECT_ENABLE_INFO; ///@brief 智能场景信息 typedef struct tagNET_INTELLI_SCENE_INFO { EM_CLASS_TYPE emClassType; // 智能大类类型 BOOL bObjectDetect; // stuObjectDetect信息是否有效 NET_OBJECT_DETECT_ENABLE_INFO stuObjectDetect; // 目标检测属性信息 BYTE byReserved[336]; // 预留字节 } NET_INTELLI_SCENE_INFO; ///@brief 视频通道上的智能信息 typedef struct tagNET_INTELLI_INFO_ABOUT_CHANNEL { UINT nChannelID; // 视频通道号 UINT nRetSceneNum; // 实际获取到的智能场景个数 NET_INTELLI_SCENE_INFO stuIntelliSceneInfos[32]; // 智能场景信息 BYTE byReserved[512]; // 预留字节 } NET_INTELLI_INFO_ABOUT_CHANNEL; ///@brief CLIENT_GetIntelliStatesEnableInfo 接口输出参数 typedef struct tagNET_OUT_GET_INTELLI_STATES_ENABLE_INFO { DWORD dwSize; // 结构体大小 UINT nRetIntelliNum; // 实际获取到的智能信息个数 UINT nMaxIntelliNum; // 智能信息pstIntelliInfos 数组最大个数,最大1024个,由用户指定 BYTE byReserved[4]; // 字节对齐 NET_INTELLI_INFO_ABOUT_CHANNEL *pstIntelliInfos; // 智能信息, 内存由用户分配, 大小为 sizeof(NET_INTELLI_INFO_ABOUT_CHANNEL)*nMaxIntelliNum } NET_OUT_GET_INTELLI_STATES_ENABLE_INFO; ///@brief 获取指定通道上开启的所有智能并集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetIntelliStatesEnableInfo(LLONG lLoginID, const NET_IN_GET_INTELLI_STATES_ENABLE_INFO* pInParam, NET_OUT_GET_INTELLI_STATES_ENABLE_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_RemoveParkingCarInfo 接口输入参数 typedef struct tagNET_IN_REMOVE_PARKING_CAR_INFO { DWORD dwSize; // 结构体大小 DEV_OCCUPIED_WARNING_INFO stuParkingCarInfo; // 车位信息 } NET_IN_REMOVE_PARKING_CAR_INFO; ///@brief CLIENT_RemoveParkingCarInfo 接口输出参数 typedef struct tagNET_OUT_REMOVE_PARKING_CAR_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_REMOVE_PARKING_CAR_INFO; ///@brief 清除异常车位车辆信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveParkingCarInfo(LLONG lLoginID, const NET_IN_REMOVE_PARKING_CAR_INFO* pInParam, NET_OUT_REMOVE_PARKING_CAR_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_GetRemoteEventLink 接口入参 typedef struct tagNET_IN_REMOTE_EVENT_LINK { DWORD dwSize; // 此结构体大小 int nChannel; // 本地通道号 BYTE bReserved[4]; // 对齐 int nCodeNum; // 查询联动事件个数 EM_NET_QUERY_CODE szCodeName[MAX_EVENT_LINK_QUERY_CODE_NUMBER]; // 查询联动事件列表 } NET_IN_REMOTE_EVENT_LINK; ///@brief 联动项信息 typedef struct tagNET_EVENT_LINK_CODE { EM_NET_LINK_NAME emLinkName[MAX_EVENT_LINK_NAME_NUMBER]; // 联动名称 int nNameNum; // 联动名称个数 BYTE byReserved[1020]; // 预留字节 } NET_EVENT_LINK_CODE; ///@brief CLIENT_GetRemoteEventLink 接口出参 typedef struct tagNET_OUT_REMOTE_EVENT_LINK { DWORD dwSize; // 此结构体大小 int nCodeNum; // 联动项个数 NET_EVENT_LINK_CODE stuLinkCode[MAX_EVENT_LINK_QUERY_CODE_NUMBER]; // 联动项信息 } NET_OUT_REMOTE_EVENT_LINK; ///@brief 获取远程指定事件的联动能力集(pInParam, pOutParam内存由用户申请释放) CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRemoteEventLink(LLONG lLoginID, const NET_IN_REMOTE_EVENT_LINK* pInParam, NET_OUT_REMOTE_EVENT_LINK* pOutParam, int nWaitTime); ///@brief CLIENT_GetIFrameDataFromStorageVideo 接口输入参数 typedef struct tagNET_IN_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 NET_TIME stuTime; // 时间 } NET_IN_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO; ///@brief CLIENT_GetIFrameDataFromStorageVideo 接口输出参数 typedef struct tagNET_OUT_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO { DWORD dwSize; // 结构体大小 UINT nBufferLen; // 获取到的I帧数据内存大小, 单位字节 char* szBuffer; // 获取到的I帧数据, 用户申请内存 UINT nRetBufferLen; // 获取到的I帧数据实际返回长度, 单位字节 BYTE bReserved[4]; // 对齐 } NET_OUT_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO; ///@brief 获取录像文件指定通道号和时间的最近的一帧I帧数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetIFrameDataFromStorageVideo(LLONG lLoginID, const NET_IN_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO* pInParam, NET_OUT_GET_I_FRAME_DATA_FROM_STORAGE_VIDEO* pOutParam, int nWaitTime); ///@brief 盘组信息 typedef struct tagNET_GROUP_INFO { char szGroup[32]; // 盘组名称 TP_U64 nFreeSpace; // 剩余容量, 单位字节 TP_U64 nTotalSpace; // 总容量,单位字节 UINT nDeviceNum; // 盘组中设备个数 char szReserved[256]; // 保留字节 }NET_GROUP_INFO; ///@brief CLIENT_GetStorageAssistantGroupInfos 接口输入参数 typedef struct tagNET_IN_GET_STORAGE_ASSISTANT_GROUP_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GET_STORAGE_ASSISTANT_GROUP_INFO; ///@brief CLIENT_GetStorageAssistantGroupInfos 接口输出参数 typedef struct tagNET_OUT_GET_STORAGE_ASSISTANT_GROUP_INFO { DWORD dwSize; // 结构体大小 int nGroupNums; // 盘组的个数 NET_GROUP_INFO stuGroupInfo[128]; // 盘组信息 } NET_OUT_GET_STORAGE_ASSISTANT_GROUP_INFO; ///@brief 获取所有盘组信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStorageAssistantGroupInfos(LLONG lLoginID, const NET_IN_GET_STORAGE_ASSISTANT_GROUP_INFO* pInParam, NET_OUT_GET_STORAGE_ASSISTANT_GROUP_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_GetWorkGroupDeviceInfos 接口输入参数 typedef struct tagNET_IN_GET_WORK_GROUP_DEVICE_INFO { DWORD dwSize; // 结构体大小 char szName[32]; // 工作组名称, 用于获取工作组实例 } NET_IN_GET_WORK_GROUP_DEVICE_INFO; ///@brief CLIENT_GetWorkGroupDeviceInfos 接口输出参数 typedef struct tagNET_OUT_GET_WORK_GROUP_DEVICE_INFO { DWORD dwSize; // 结构体大小 DH_STORAGE_DEVICE* pstuDeviceInfo; // 存储设备信息,由用户申请内存,大小为sizeof(DH_STORAGE_DEVICE)*nMaxCount int nMaxCount; // 存储设备信息的个数, 最大为128个 int nReturnCount; // 返回的存储设备信息的个数, 最大为128个 } NET_OUT_GET_WORK_GROUP_DEVICE_INFO; ///@brief 获取指定盘组下的设备成员信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWorkGroupDeviceInfos(LLONG lLoginID, const NET_IN_GET_WORK_GROUP_DEVICE_INFO* pInParam, NET_OUT_GET_WORK_GROUP_DEVICE_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_SetWorkDirectoryGoup 接口输入参数 typedef struct tagNET_IN_SET_WORK_DIRECTORY_GROUP { DWORD dwSize; // 结构体大小 char szName[256]; // 工作目录名称, 用于获取工作目录实例 char szSubClassID[32]; // 接口子类型, 用于获取工作目录实例 char szGroup[32]; // 目录所属组 } NET_IN_SET_WORK_DIRECTORY_GROUP; ///@brief CLIENT_SetWorkDirectoryGoup 接口输出参数 typedef struct tagNET_OUT_SET_WORK_DIRECTORY_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_SET_WORK_DIRECTORY_GROUP; ///@brief 设置工作目录组名 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetWorkDirectoryGoup(LLONG lLoginID, const NET_IN_SET_WORK_DIRECTORY_GROUP* pInParam, NET_OUT_SET_WORK_DIRECTORY_GROUP* pOutParam, int nWaitTime); ///@brief 文件类型 typedef enum tagEM_WORK_DIRECTORY_FILE_TYPE { EM_WORK_DIRECTORY_FILE_TYPE_UNKNOWN = 0, // 未知 EM_WORK_DIRECTORY_FILE_TYPE_DAV, // "dav" EM_WORK_DIRECTORY_FILE_TYPE_JPG, // "jpg" EM_WORK_DIRECTORY_FILE_TYPE_MP4, // "mp4" }EM_WORK_DIRECTORY_FILE_TYPE; ///@brief 事件类型 typedef enum tagEM_WORK_DIRECTORY_EVENT_TYPE { EM_WORK_DIRECTORY_EVENT_TYPE_UNKNOWN = 0, // 未知 EM_WORK_DIRECTORY_EVENT_TYPE_ANY_EVENT, // 任意事件 EM_WORK_DIRECTORY_EVENT_TYPE_ALARMLOCAL, // "AlarmLocal" 外部报警事件事件 EM_WORK_DIRECTORY_EVENT_TYPE_VIDEOMOTION, // "VideoMotion" 视频移动侦测事件 EM_WORK_DIRECTORY_EVENT_TYPE_FACEDETECTION, // "FaceDetection" 目标检测事件事件 }EM_WORK_DIRECTORY_EVENT_TYPE; ///@brief CLIENT_GetWorkDirectoryBitmapEx 接口输入参数的查询条件 typedef struct tagNET_WORK_DIRECTORY_BITMAPEX_CONDITION { int nYear; // 年 int nMonth; // 月 int nChannel; // 通道号,通道从0开始,-1表示所有通道 int nFileTypeNums; // 文件类型列表的个数, 最大值32, 最小值为0,若该值为0: 表示下发的文件类型列表字段值为null(为空表示查询任意类型) EM_WORK_DIRECTORY_FILE_TYPE emFileTypes[32]; // 文件类型列表,是一个数组,一次可查询多种文件类型,目前仅支持"dav","jpg" BOOL bIsSupportEventTypes; // 事件类型列表字段下发使能,TRUE: 表示事件类型列表emEventTypes有效且下发, FALSE: 表示事件类型列表emEventTypes无效且不下发(事件类型列表字段不存在,表示查询所有事件), int nEventTypeNums; // 事件类型列表的个数,最大值为256, 最小值为0,若该值为0: 表示下发的事件类型列表字段值为null(为空表示查询所有事件) EM_WORK_DIRECTORY_EVENT_TYPE emEventTypes[256]; // 事件类型列表, 目前仅支持实现:"AlarmLocal","VideoMotion","FaceDetection" char szReserved[256]; // 保留字节 } NET_WORK_DIRECTORY_BITMAPEX_CONDITION; ///@brief CLIENT_GetWorkDirectoryBitmapEx 接口输入参数 typedef struct tagNET_IN_GET_WORK_DIRECTORY_BITMAPEX { DWORD dwSize; // 结构体大小 char szName[256]; // 工作目录名称, 用于获取工作目录实例 char szSubClassID[32]; // 接口子类型, 用于获取工作目录实例 NET_WORK_DIRECTORY_BITMAPEX_CONDITION stuCondition; // 查询条件 } NET_IN_GET_WORK_DIRECTORY_BITMAPEX; ///@brief CLIENT_GetWorkDirectoryBitmapEx 接口输出参数 typedef struct tagNET_OUT_GET_WORK_DIRECTORY_BITMAPEX { DWORD dwSize; // 结构体大小 UINT nBitmap; // 录像位图掩码,每一位表示对应某天是否有录像,bit0无意义, bit1表示第一天, 以此类推 } NET_OUT_GET_WORK_DIRECTORY_BITMAPEX; ///@brief 得到某年某月某通道文件分布位图 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWorkDirectoryBitmapEx(LLONG lLoginID, const NET_IN_GET_WORK_DIRECTORY_BITMAPEX* pInParam, NET_OUT_GET_WORK_DIRECTORY_BITMAPEX* pOutParam, int nWaitTime); ///@brief CLIENT_SetEnvironmentTemperature 输入结构体 typedef struct tagNET_IN_SET_ENVIRONMENT_TEMPERATURE { DWORD dwSize; // 结构体大小 int nEnvironmentTemp; // 环境温度(扩大100倍),温度单位见配置 CFG_CMD_THERMOMETRY }NET_IN_SET_ENVIRONMENT_TEMPERATURE; ///@brief CLIENT_SetEnvironmentTemperature 输出结构体 typedef struct tagNET_OUT_SET_ENVIRONMENT_TEMPERATURE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_ENVIRONMENT_TEMPERATURE; ///@brief 设置环境温度 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetEnvironmentTemperature(LLONG lLoginID, const NET_IN_SET_ENVIRONMENT_TEMPERATURE* pInParam, NET_OUT_SET_ENVIRONMENT_TEMPERATURE* pOutParam, int nWaitTime); ///@brief CLIENT_ClickDrawRectCustom 入参 typedef struct tagNET_IN_CLICK_DRAW_RECT_CUSTOM_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 UINT nMode; // 测温环境模式。 0:表示常温环境、 1:低温环境 2:高温环境 }NET_IN_CLICK_DRAW_RECT_CUSTOM_INFO; ///@brief CLIENT_ClickDrawRectCustom 出参 typedef struct tagNET_OUT_CLICK_DRAW_RECT_CUSTOM_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CLICK_DRAW_RECT_CUSTOM_INFO; ///@brief 一键画框 ///@param[in] lLoginID:登录接口返回的句柄 ///@param[in] pstuInParam :输入参数,需初始化dwSize ///@param[out] pstuOutParam :输出参数,需初始化dwSize ///@param[in] nWaitTime :接口超时时间 ///@return: BOOL TRUE :成功; FALSE :失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClickDrawRectCustom(LLONG lLoginID, const NET_IN_CLICK_DRAW_RECT_CUSTOM_INFO *pstuInParam, NET_OUT_CLICK_DRAW_RECT_CUSTOM_INFO *pstuOutParam, int nWaitTime); ///@brief CLIENT_ClickCaliCustom 入参 typedef struct tagNET_IN_CLICK_CALI_CUSTOM_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 UINT nMode; // 温度环境模式。 0:表示常环境、 1:低环境 2:高环境 int nEnvTemp; // 当前环境温度,精度0.01,实际值扩大100倍 }NET_IN_CLICK_CALI_CUSTOM_INFO; ///@brief CLIENT_ClickCaliCustom 出参 typedef struct tagNET_OUT_CLICK_CALI_CUSTOM_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CLICK_CALI_CUSTOM_INFO; ///@brief 一键标定 ///@param[in] lLoginID:登录接口返回的句柄 ///@param[in] pstuInParam :输入参数,需初始化dwSize ///@param[out] pstuOutParam :输出参数,需初始化dwSize ///@param[in] nWaitTime :接口超时时间 ///@return: BOOL TRUE :成功; FALSE :失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClickCaliCustom(LLONG lLoginID, const NET_IN_CLICK_CALI_CUSTOM_INFO *pstuInParam, NET_OUT_CLICK_CALI_CUSTOM_INFO *pstuOutParam, int nWaitTime); ///@brief CLIENT_ClickAbortCustom 入参 typedef struct tagNET_IN_CLICK_ABORT_CUSTOM_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 }NET_IN_CLICK_ABORT_CUSTOM_INFO; ///@brief CLIENT_ClickAbortCustom 出参 typedef struct tagNET_OUT_CLICK_ABORT_CUSTOM_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_CLICK_ABORT_CUSTOM_INFO; ///@brief 中止测温一键标定 ///@param[in] lLoginID:登录接口返回的句柄 ///@param[in] pstuInParam :输入参数,需初始化dwSize ///@param[out] pstuOutParam :输出参数,需初始化dwSize ///@param[in] nWaitTime :接口超时时间 ///@return: BOOL TRUE :成功; FALSE :失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClickAbortCustom(LLONG lLoginID, const NET_IN_CLICK_ABORT_CUSTOM_INFO *pstuInParam, NET_OUT_CLICK_ABORT_CUSTOM_INFO *pstuOutParam, int nWaitTime); ///@brief CLIENT_GetCaliProgressCustom 入参 typedef struct tagNET_IN_GET_CALI_PROGRESS_CUSTOM_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 }NET_IN_GET_CALI_PROGRESS_CUSTOM_INFO; ///@brief CLIENT_GetCaliProgressCustom 出参 typedef struct tagNET_OUT_GET_CALI_PROGRESS_CUSTOM_INFO { DWORD dwSize; // 结构体大小 UINT nProgress; // 返回的进度,0-100 }NET_OUT_GET_CALI_PROGRESS_CUSTOM_INFO; ///@brief 获取一键标定的进度 ///@param[in] lLoginID:登录接口返回的句柄 ///@param[in] pstuInParam :输入参数,需初始化dwSize ///@param[out] pstuOutParam :输出参数,需初始化dwSize ///@param[in] nWaitTime :接口超时时间 ///@return: BOOL TRUE :成功; FALSE :失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCaliProgressCustom(LLONG lLoginID, const NET_IN_GET_CALI_PROGRESS_CUSTOM_INFO *pstuInParam, NET_OUT_GET_CALI_PROGRESS_CUSTOM_INFO *pstuOutParam, int nWaitTime); ///@brief 获取人体测温自适应温升值(CLIENT_GetAdaptiveTempRaise) 出参 typedef struct tagNET_IN_GET_ADAPTIVE_TEMP_RAISE_INFO { DWORD dwSize; // 结构体大小 UINT nChannel; // 通道 }NET_IN_GET_ADAPTIVE_TEMP_RAISE_INFO; ///@brief 获取人体测温自适应温升值(CLIENT_GetAdaptiveTempRaise) 出参 typedef struct tagNET_OUT_GET_ADAPTIVE_TEMP_RAISE_INFO { DWORD dwSize; // 结构体大小 int nAdaptiveRaiseTemp; // 自适应温升值,精度0.01,实际值扩大100倍 int nEnvTemp; // 环境温度,精度0.01,实际值扩大100倍 }NET_OUT_GET_ADAPTIVE_TEMP_RAISE_INFO; ///@brief 获取人体测温自适应温升值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAdaptiveTempRaise(LLONG lLoginID, const NET_IN_GET_ADAPTIVE_TEMP_RAISE_INFO *pInParam, NET_OUT_GET_ADAPTIVE_TEMP_RAISE_INFO *pOutParam, int nWaitTime); ///@brief 授权类型 typedef enum tagEM_ACCESSCONTROL_AUTHORITY_TYPE { EM_ACCESSCONTROL_AUTHORITY_TYPE_UNKNOWN = 0, // 未知 EM_ACCESSCONTROL_AUTHORITY_TYPE_8900APP, // H8900手机app EM_ACCESSCONTROL_AUTHORITY_TYPE_8900CLIENT, // H8900平台客户端 EM_ACCESSCONTROL_AUTHORITY_TYPE_YUNRUIAPP, // 云睿手机app EM_ACCESSCONTROL_AUTHORITY_TYPE_MANAGE_MACHINE, // 管理机 EM_ACCESSCONTROL_AUTHORITY_TYPE_INDOOR_MACHINE, // 室内机 }EM_ACCESSCONTROL_AUTHORITY_TYPE; ///@brief CLIENT_AccessControlIssueAuthority 输入结构体 typedef struct tagNET_IN_ACCESSCONTROL_ISSUE_AUTHORITY { DWORD dwSize; // 结构体大小 char szRoomNo[32]; // 权限授予的范围(等同于 szRoomNo 的权限范围) char szCitizenID[32]; // 证件ID(被授权对象的证件ID) EM_ACCESSCONTROL_AUTHORITY_TYPE emAuthorityType; // 授权类型 }NET_IN_ACCESSCONTROL_ISSUE_AUTHORITY; ///@brief CLIENT_AccessControlIssueAuthority 输出结构体 typedef struct tagNET_OUT_ACCESSCONTROL_ISSUE_AUTHORITY { DWORD dwSize; // 结构体大小 }NET_OUT_ACCESSCONTROL_ISSUE_AUTHORITY; ///@brief 门禁控制授权 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AccessControlIssueAuthority(LLONG lLoginID, const NET_IN_ACCESSCONTROL_ISSUE_AUTHORITY* pInParam, NET_OUT_ACCESSCONTROL_ISSUE_AUTHORITY* pOutParam, int nWaitTime); ///@brief CLIENT_AccessControlCaptureNewCard 输入结构体 typedef struct tagNET_IN_ACCESSCONTROL_CAPTURE_NEWCARD { DWORD dwSize; // 结构体大小 UINT nAllowTime; // 授权时间 }NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD; ///@brief CLIENT_AccessControlCaptureNewCard 输出结构体 typedef struct tagNET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD { DWORD dwSize; // 结构体大小 }NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD; ///@brief 门禁设备开始捕获新卡 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AccessControlCaptureNewCard(LLONG lLoginID, const NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD* pInParam, NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD* pOutParam, int nWaitTime); ///@brief 采集类型 typedef enum tagEM_GATHER_TYPE { EM_GATHER_TYPE_UNKNOWN = 0, // 未知类型 EM_GATHER_TYPE_FACE, // 目标采集 EM_GATHER_TYPE_IDCARD, // 证件采集 }EM_GATHER_TYPE; ///@brief CLIENT_AccessControlCaptureCmd 输入结构体 typedef struct tagNET_IN_ACCESSCONTROL_CAPTURE_CMD { DWORD dwSize; // 结构体大小 EM_GATHER_TYPE emGathertype; // 采集类型 (EM_COLLECTION_TYPE已被使用) char szUserID[12]; // 用户ID(智能楼宇需求,可选) }NET_IN_ACCESSCONTROL_CAPTURE_CMD; ///@brief CLIENT_AccessControlCaptureCmd 输出结构体 typedef struct tagNET_OUT_ACCESSCONTROL_CAPTURE_CMD { DWORD dwSize; // 结构体大小 }NET_OUT_ACCESSCONTROL_CAPTURE_CMD; ///@brief 门禁人证设备获取目标 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AccessControlCaptureCmd(LLONG lLoginID, const NET_IN_ACCESSCONTROL_CAPTURE_CMD* pInParam, NET_OUT_ACCESSCONTROL_CAPTURE_CMD* pOutParam, int nWaitTime); ///@brief 重置密码的方式 typedef enum tagEM_CONTACT_MODE_FOR_RESET_PASSWD { EM_CONTACT_MODE_FOR_RESET_PASSWD_UNKNOWN, // 未知 EM_CONTACT_MODE_FOR_RESET_PASSWD_PHONE, // 手机号 EM_CONTACT_MODE_FOR_RESET_PASSWD_EMAIL, // 邮箱 } EM_CONTACT_MODE_FOR_RESET_PASSWD; ///@brief CLIENT_SetContactForResetPasswd 接口输入参数 typedef struct tagNET_IN_SET_CONTACT_FOR_RESET_PASSWD { DWORD dwSize; // 结构体大小 EM_CONTACT_MODE_FOR_RESET_PASSWD emMode; // 重置密码的方式 char szContact[256]; // 重置密码的预留信息 } NET_IN_SET_CONTACT_FOR_RESET_PASSWD; ///@brief CLIENT_SetContactForResetPasswd 接口输出参数 typedef struct tagNET_OUT_SET_CONTACT_FOR_RESET_PASSWD { DWORD dwSize; // 结构体大小 } NET_OUT_SET_CONTACT_FOR_RESET_PASSWD; ///@brief 设置重置密码的联系方式 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetContactForResetPasswd(LLONG lLoginID, const NET_IN_SET_CONTACT_FOR_RESET_PASSWD* pInParam, NET_OUT_SET_CONTACT_FOR_RESET_PASSWD* pOutParam, int nWaitTime); ///@brief CLIENT_RemotePreUploadFile 接口输入参数(前端设备预上传文件) typedef struct tagNET_IN_REMOTE_PREUPLOAD_FILE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szFileSrc[256]; // 源文件路径 char szFileNameDst[128]; // 目标文件保存名称 char szFolderDst[256]; // 目标文件夹路径:可为空字符串, 空时设备使用默认路径校验。 }NET_IN_REMOTE_PREUPLOAD_FILE; ///@brief CLIENT_RemotePreUploadFile 接口输出参数(前端设备预上传文件) typedef struct tagNET_OUT_REMOTE_PREUPLOAD_FILE { DWORD dwSize; // 结构体大小 BOOL bContinue2Upload; // 标志是否继续上传该文件。因如文件过大,设备可拒绝接收上传。 EM_REASON_TYPE emType; // 错误原因, 当bContinue2Upload为false时emType有效 }NET_OUT_REMOTE_PREUPLOAD_FILE; ///@brief 上传进度状态 typedef enum tagNET_UPLOAD_PROCESS_STATUS { NET_UPLOAD_PROCESS_STATUS_UPLOADING, // 上传中 NET_UPLOAD_PROCESS_STATUS_COMPLETE, // 完成 NET_UPLOAD_PROCESS_STATUS_FAILED, // 失败 NET_UPLOAD_PROCESS_STATUS_CANCEL, // 取消 }NET_UPLOAD_PROCESS_STATUS; ///@brief 开始异步文件上传至前端的调函数原形,lRemoteUploadFileID 为 CLIENT_StartRemoteUploadFile 接口返回值 typedef void (CALLBACK *fRemoteUploadFileCallBack) (LLONG lRemoteUploadFileID, int nTotalSize, int nSendSize, NET_UPLOAD_PROCESS_STATUS emStatus, LDWORD dwUser); ///@brief CLIENT_StartRemoteUploadFile 接口输入参数(上传文件到前端设备) typedef struct tagNET_IN_REMOTE_UPLOAD_FILE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szFileSrc[256]; // 源文件路径 char szFileNameDst[128]; // 目标文件保存名称 char szFolderDst[256]; // 目标文件夹路径:可为空字符串, 空时设备使用默认路径 fRemoteUploadFileCallBack cbUploadFile; // 上传进度回调 LDWORD dwUser; // 用户参数 UINT nPacketLen; // 文件传输分包大小(字节): 0表示SDK默认分包 } NET_IN_REMOTE_UPLOAD_FILE; ///@brief CLIENT_StartRemoteUploadFile 接口输出参数(上传文件到前端设备) typedef struct tagNET_OUT_REMOTE_UPLOAD_FILE { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTE_UPLOAD_FILE; ///@brief 通过存储设备远程预上传文件至前端设备,用于识别前端设备是否具备接收文件的条件,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemotePreUploadFile(LLONG lLoginID, const NET_IN_REMOTE_PREUPLOAD_FILE* pInParam, NET_OUT_REMOTE_PREUPLOAD_FILE* pOutParam,int nWaitTime); ///@brief 开始异步通过存储设备上传文件到前端设备 pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartRemoteUploadFile(LLONG lLoginID, const NET_IN_REMOTE_UPLOAD_FILE* pInParam, NET_OUT_REMOTE_UPLOAD_FILE* pOutParam, int nWaitTime); ///@brief 停止异步通过存储设备上传文件到前端设备 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopRemoteUploadFile(LLONG lRemoteUploadFileID); ///@brief CLIENT_RemoteList 接口输入参数 typedef struct tagNET_IN_REMOTE_LIST { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szPath[256]; // 指定路径 } NET_IN_REMOTE_LIST; ///@brief 文件信息 typedef struct tagNET_REMOTE_FILE_INFO { char szPath[256]; // 文件绝对路径 UINT nSize; // 文件大小,单位:字节 BYTE byReserved[508]; // 预留字节 } NET_REMOTE_FILE_INFO; ///@brief CLIENT_RemoteList 接口输出参数 typedef struct tagNET_OUT_REMOTE_LIST { DWORD dwSize; // 结构体大小 NET_REMOTE_FILE_INFO* pstuFileInfo; // 文件信息 int nMaxFileCount; // 文件信息数组大小, 用户填写 int nRetFileCount; // 返回的文件数量 } NET_OUT_REMOTE_LIST; ///@brief 得到远程指定目录下文件信息(含文件/子目录)pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteList(LLONG lLoginID, const NET_IN_REMOTE_LIST* pInParam, NET_OUT_REMOTE_LIST* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteRename 接口输入参数 typedef struct tagNET_IN_REMOTE_RENAME { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 char szOldName[128]; // 旧的文件名 char szNewName[128]; // 新的文件名 } NET_IN_REMOTE_RENAME; ///@brief CLIENT_RemoteRename 接口输出参数 typedef struct tagNET_OUT_REMOTE_RENAME { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTE_RENAME; ///@brief 重命名远程文件 pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteRename(LLONG lLoginID, const NET_IN_REMOTE_RENAME* pInParam, NET_OUT_REMOTE_RENAME* pOutParam, int nWaitTime); ///@brief CLIENT_RemoteRemoveFiles 接口输入参数 typedef struct tagNET_IN_REMOTE_REMOVE_FILES { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nFileNum; // 文件个数 char** pszFileName; // 文件名数组指针 } NET_IN_REMOTE_REMOVE_FILES; ///@brief CLIENT_RemoteRemoveFiles 接口输出参数 typedef struct tagNET_OUT_REMOTE_REMOVE_FILES { DWORD dwSize; // 结构体大小 } NET_OUT_REMOTE_REMOVE_FILES; ///@brief 删除多个远程文件或目录 pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoteRemoveFiles(LLONG lLoginID, const NET_IN_REMOTE_REMOVE_FILES* pInParam, NET_OUT_REMOTE_REMOVE_FILES* pOutParam, int nWaitTime); ///@brief 图片数据 typedef struct tagNET_USER_PICTURE_DATA { char* pszPictureData; // 图片数据,最大 200K UINT nPictureLen; // pszPictureData 长度 BYTE byReserved[1020]; // 预留字段 }NET_USER_PICTURE_DATA; ///@brief CLIENT_DeliverUserFacePicture 入参 typedef struct tagNET_IN_DELIVER_USER_PICTURE { DWORD dwSize; // 结构体大小 int nResult; // 平台查询结果 // 0:有数据 1:不在人员库 char szCitizenID[32]; // 证件信息 char szUserID[64]; // 用户标识(选填) NET_USER_PICTURE_DATA stuPictureData[5]; // 图片信息 int nPictureData; // stuPictureData 个数 BYTE byReserved[4]; // 预留字段 }NET_IN_DELIVER_USER_PICTURE; ///@brief CLIENT_DeliverUserFacePicture 出参 typedef struct tagNET_OUT_DELIVER_USER_PICTURE { DWORD dwSize; // 结构体大小 }NET_OUT_DELIVER_USER_PICTURE; ///@brief 下发目标图片信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeliverUserFacePicture(LLONG lLoginID, const NET_IN_DELIVER_USER_PICTURE* pInParam, NET_OUT_DELIVER_USER_PICTURE* pOutParam, int nWaitTime); ///@brief CLIENT_ResetPTZ 入参 typedef struct tagNET_IN_RESET_PTZ { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_RESET_PTZ; ///@brief CLIENT_ResetPTZ 出参 typedef struct tagNET_OUT_RESET_PTZ { DWORD dwSize; // 结构体大小 }NET_OUT_RESET_PTZ; ///@brief 清空云台相关配置,恢复出厂设置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ResetPTZ(LLONG lLoginID, const NET_IN_RESET_PTZ* pInParam, NET_OUT_RESET_PTZ* pOutParam, int nWaitTime); ///@brief 日志信息 typedef struct tagNET_ATTACH_LOG_ONLINE_BACKUP_INFO { char szUserType[64]; // 用户类型 NET_TIME stuTime; // 时间 DH_LOG_QUERY_TYPE emLogType; // 日志类型 int nLogLevel; // 日志等级 char szLogDetail[4096]; // 日志详细信息 }NET_ATTACH_LOG_ONLINE_BACKUP_INFO; ///@brief 回调函数 typedef void (CALLBACK *fAttachLogOnlineBackUpCallBack)(LLONG lAttachHandle, NET_ATTACH_LOG_ONLINE_BACKUP_INFO* pstLogInfo, int nLogCount,LDWORD dwUser); ///@brief CLIENT_AttachLogOnlineBackUp 输入参数 typedef struct tagNET_IN_ATTACH_LOG_ONLINE_BACKUP { DWORD dwSize; // 结构体大小 DH_LOG_QUERY_TYPE emLogType; // 日志类型 int nLogLevel; // 日志等级(0 ~ 255),-1表示所有等级 BYTE byReserved[4]; // 字节对齐 fAttachLogOnlineBackUpCallBack cbLogBackUp; // 回调函数 LDWORD dwUser; // 用户自定义数据 }NET_IN_ATTACH_LOG_ONLINE_BACKUP; ///@brief CLIENT_AttachLogOnlineBackUp 输出参数 typedef struct tagNET_OUT_ATTACH_LOG_ONLINE_BACKUP { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_LOG_ONLINE_BACKUP; ///@brief 订阅日志备份 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachLogOnlineBackUp(LLONG lLoginID, const NET_IN_ATTACH_LOG_ONLINE_BACKUP* pInParam, NET_OUT_ATTACH_LOG_ONLINE_BACKUP* pOutParam, int nWaitTime); ///@brief 取消日志备份订阅 ///@brief lAttachHandle 是 CLIENT_AttachLogOnlineBackUp 返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachLogOnlineBackUp(LLONG lAttachHandle); ///@brief ///@brief 预约结果 typedef enum tagEM_APPOINTMENT_RESULT { EM_APPOINTMENT_RESULT_UNKNOWN, // 未知 EM_APPOINTMENT_RESULT_ALREADY_APPOINT, // 已预约 EM_APPOINTMENT_RESULT_NOT_APPOINT, // 未预约 }EM_APPOINTMENT_RESULT; ///@brief CLIENT_DeliverAppointmentInfo 入参 typedef struct tagNET_IN_DELIVER_APPOINTMENT_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 EM_APPOINTMENT_RESULT emResult; // 预约结果 BYTE byReserved[4]; // 预留字段 char szCitizenID[32]; // 证件信息 char szCitizenName[128]; // 证件姓名 char szIntervieweeName[128]; // 被访人姓名 char* pszVisitReason; // 来访事由,使用者分配内存 UINT nVisitReason; // pszVisitReason 大小 UINT nUniqueID; // 预约请求ID,由 DH_ALARM_REQUEST_APPOINTMENT_INFO 事件返回 }NET_IN_DELIVER_APPOINTMENT_INFO; ///@brief CLIENT_DeliverAppointmentInfo 出参 typedef struct tagNET_OUT_DELIVER_APPOINTMENT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_DELIVER_APPOINTMENT_INFO; ///@brief 下发预约信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeliverAppointmentInfo(LLONG lLoginID, const NET_IN_DELIVER_APPOINTMENT_INFO* pInParam, NET_OUT_DELIVER_APPOINTMENT_INFO* pOutParam, int nWaitTime); ///@brief 前面板灯类型 typedef enum tagEM_LED_TYPE { EM_LED_TYPE_UNKNOWN, // 未知 EM_LED_TYPE_NET, // 网络灯 EM_LED_TYPE_POWER, // 电源灯 EM_LED_TYPE_INFO, // 信息灯 EM_LED_TYPE_ALARM, // 报警灯 } EM_LED_TYPE; ///@brief 前面板灯模式 typedef enum tagEM_LED_MODE { EM_LED_MODE_UNKNOWN = -1, // 未知 EM_LED_MODE_ALWAYS_ON, // 常亮 EM_LED_MODE_FLASHING, // 闪烁 EM_LED_MODE_OFF, // 熄灭 } EM_LED_MODE; ///@brief CLIENT_FaceBoard_SetLedMode 入参 typedef struct tagNET_IN_SET_LED_MODE { DWORD dwSize; // 结构体大小 EM_LED_TYPE emLedType; // 控制前面板灯类型 EM_LED_MODE emMode; // 控制前面板灯模式 BYTE byReserved[4]; // 对齐 }NET_IN_SET_LED_MODE; ///@brief CLIENT_FaceBoard_SetLedMode 出参 typedef struct tagNET_OUT_SET_LED_MODE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_LED_MODE; ///@brief 设置前面板LED灯模式 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FaceBoard_SetLedMode(LLONG lLoginID, const NET_IN_SET_LED_MODE* pInParam, NET_OUT_SET_LED_MODE* pOutParam, int nWaitTime); ///@brief CLIENT_GetFaceBoardInkScreenCaps 入参 typedef struct tagNET_IN_GET_INKSCREEN_CAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_INKSCREEN_CAPS_INFO; ///@brief 模式具体能力 typedef struct tagNET_FACE_BOARD_MODES { char szName[32]; // 模式名称 Clock:时钟模式 GP:工牌模式 int nTypes; // 模板类型ID 同一种模式下可能有多种模板 char szReserved[252]; // 预留字段 }NET_FACE_BOARD_MODES; ///@brief CLIENT_GetFaceBoardInkScreenCaps 出参 typedef struct taNET_OUT_GET_INKSCREEN_CAPS_INFO { DWORD dwSize; // 结构体大小 int nModesNum; // 模式具体能力个数 NET_FACE_BOARD_MODES stuModes[32]; // 模式具体能力 }NET_OUT_GET_INKSCREEN_CAPS_INFO; ///@brief CLIENT_GetFaceBoardInkScreenConfig 入参 typedef struct tagNET_IN_GET_INKSCREEN_CONFIG_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_INKSCREEN_CONFIG_INFO; ///@brief CLIENT_GetFaceBoardInkScreenConfig 出参 typedef struct tagNET_OUT_GET_INKSCREEN_CONFIG_INFO { DWORD dwSize; // 结构体大小 NET_FACE_BOARD_MODES stuMode; // 配置 }NET_OUT_GET_INKSCREEN_CONFIG_INFO; ///@brief CLIENT_SetFaceBoardInkScreenConfig 入参 typedef struct tagNET_IN_SET_INKSCREEN_CONFIG_INFO { DWORD dwSize; // 结构体大小 NET_FACE_BOARD_MODES stuMode; // 配置 }NET_IN_SET_INKSCREEN_CONFIG_INFO; ///@brief CLIENT_SetFaceBoardInkScreenConfig 出参 typedef struct tagNET_OUT_SET_INKSCREEN_CONFIG_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_INKSCREEN_CONFIG_INFO; ///@brief 获取设备支持的墨水屏显示模式和每种模式下的样式数目 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFaceBoardInkScreenCaps(LLONG lLoginID, const NET_IN_GET_INKSCREEN_CAPS_INFO* pInParam, NET_OUT_GET_INKSCREEN_CAPS_INFO* pOutParam, int nWaitTime); ///@brief 获取设备当前墨水屏显示模式和样式 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFaceBoardInkScreenConfig(LLONG lLoginID, const NET_IN_GET_INKSCREEN_CONFIG_INFO* pInParam, NET_OUT_GET_INKSCREEN_CONFIG_INFO* pOutParam, int nWaitTime); ///@brief 设置设备当前墨水屏显示模式和样式 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetFaceBoardInkScreenConfig(LLONG lLoginID, const NET_IN_SET_INKSCREEN_CONFIG_INFO* pInParam, NET_OUT_SET_INKSCREEN_CONFIG_INFO* pOutParam, int nWaitTime); ///@brief 事件处理结果 typedef enum tagEM_DEAL_EVENT_RESULT { EM_DEAL_EVENT_RESULT_UNKNOWN, // 未知 EM_DEAL_EVENT_RESULT_IDLE, // 空闲 EM_DEAL_EVENT_RESULT_RUNNING, // 处理中 EM_DEAL_EVENT_RESULT_SUCCESS, // 处理成功 EM_DEAL_EVENT_RESULT_FAIL // 处理失败 }EM_DEAL_EVENT_RESULT; ///@brief CLIENT_ReceiptEvent 入参 typedef struct tagNET_IN_RECEIPT_EVENT_INFO { DWORD dwSize; // 结构体大小 int nEventID; // 事件编号,由 DH_ALARM_REQUEST_RECORD, DH_ALARM_REQUEST_SNAP 事件返回 EM_DEAL_EVENT_RESULT emResult; // 预约结果 BYTE byReserved[1020]; // 预留字段 }NET_IN_RECEIPT_EVENT_INFO; ///@brief CLIENT_ReceiptEvent 出参 typedef struct tagNET_OUT_RECEIPT_EVENT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_RECEIPT_EVENT_INFO; ///@brief 事件回执 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ReceiptEvent(LLONG lLoginID, const NET_IN_RECEIPT_EVENT_INFO* pInParam, NET_OUT_RECEIPT_EVENT_INFO* pOutParam, int nWaitTime); ///@brief 驾驶员信息 typedef struct tagNET_DRIVER_INFO { NET_TIME stuTime; // 刷卡时间 char szDriverName[64]; // 司机姓名 char szDriverID[64]; // 工号或驾驶证号码 char szCertificateID[64]; // 从业资格证号 char szOrganize[64]; // 发证机构名称 NET_TIME stuUsefulLife; // 证件有效期的 char szDriverCode[32]; // 司机代码 NET_DRIVER_CHECK_TYPE emType; // 驾驶员刷卡类型 BYTE byReserved[1020]; // 预留字段 } NET_DRIVER_INFO; ///@brief CLIENT_GetDriverInfo 入参 typedef struct tagNET_IN_GET_DRIVER_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_DRIVER_INFO; ///@brief CLIENT_GetDriverInfo 出参 typedef struct tagNET_OUT_GET_DRIVER_INFO { DWORD dwSize; // 结构体大小 NET_DRIVER_INFO stuDriverInfo; // 驾驶员信息 }NET_OUT_GET_DRIVER_INFO; ///@brief 获取当前驾驶员信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDriverInfo(LLONG lLoginID, const NET_IN_GET_DRIVER_INFO* pInParam, NET_OUT_GET_DRIVER_INFO* pOutParam, int nWaitTime); ///@brief CLIENT_GetVehicleInfo 入参 typedef struct tagNET_IN_GET_VEHICLE_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_VEHICLE_INFO; ///@brief CLIENT_GetVehicleInfo 出参 typedef struct tagNET_OUT_GET_VEHICLE_INFO { DWORD dwSize; // 结构体大小 NET_TIME stuUTC; // 实时时间 char szPlate[32]; // 车牌号 char szPlateType[32]; // 车牌分类(车牌分类是指烟草运输车有电动车、燃油车两种车型,对应的车牌类型不一样) char szDriverCode[64]; // 驾驶员代码 char szDriverID[64]; // 驾驶证号 char szVehicleVIN[64]; // 车辆VIN号 int nPulseFactor; // 车速传递系数(即脉冲系数) }NET_OUT_GET_VEHICLE_INFO; ///@brief 获取行驶信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVehicleInfo(LLONG lLoginID, const NET_IN_GET_VEHICLE_INFO* pInParam, NET_OUT_GET_VEHICLE_INFO* pOutParam, int nWaitTime); ///@brief 自定义升级信息 typedef struct tagNET_UPGRADE_CUSTOM_INFO { char szAppName[128]; // 自定义升级的app名称 char szUri[256]; // 自定义升级数据源的URI char szVersion[32]; // 本次升级的自定义版本信息 char szMd5Sum[40]; // 本次升级包的md5值,Hex字符串格式 BYTE byReserved[1020]; // 预留字段 } NET_UPGRADE_CUSTOM_INFO; ///@brief CLIENT_SendCmdToDhopApp 入参 typedef struct tagNET_IN_SEND_CMD_TO_APP { DWORD dwSize; // 结构体大小 EM_CMD_TO_APP_TYPE emCmdType; // 信令类型 void* pstData; // 信令信息,根据不同的信令类型取不同的结构体 // emCmdType为EM_CMD_TO_APP_TYPE_UPGRADECUSTOM,结构体为NET_UPGRADE_CUSTOM_INFO char szUUID[64]; // 本次请求的唯一标识UUID }NET_IN_SEND_CMD_TO_APP; ///@brief CLIENT_SendCmdToDhopApp 出参 typedef struct tagNET_OUT_SEND_CMD_TO_APP { DWORD dwSize; // 结构体大小 EM_CMD_TO_APP_TYPE emCmdType; // 信令类型 void* pstRsp; // 不同的信令对应不同的结构体 // emCmdType为EM_CMD_TO_APP_TYPE_UPGRADECUSTOM, 结构体为NULL }NET_OUT_SEND_CMD_TO_APP; ///@brief 透传信令到Dhop的App CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendCmdToDhopApp(LLONG lLoginID, const NET_IN_SEND_CMD_TO_APP* pInParam, NET_OUT_SEND_CMD_TO_APP* pOutParam, int nWaitTime); ///@brief 设置视频编码帧延时,入参 typedef struct tagNET_IN_SET_VIDEO_ENCODE_DELAY_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 NET_STREAM_TYPE emStreamType; // 码流类型 int nDelayTime; // 编码延时间(单位:毫秒) }NET_IN_SET_VIDEO_ENCODE_DELAY_INFO;// 设置视频编码帧延时,入参 ///@brief 设置视频编码帧延时,出参 typedef struct tagNET_OUT_SET_VIDEO_ENCODE_DELAY_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_VIDOE_ENCODE_DELAY_INFO; ///@brief 设置视频帧编码延时 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetVideoEncodeDelay(LLONG lLoginID, const NET_IN_SET_VIDEO_ENCODE_DELAY_INFO *pInParam, NET_OUT_SET_VIDOE_ENCODE_DELAY_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetVideoEncodeBitrate,入参 typedef struct tagNET_IN_GET_VIDEO_ENCODE_BITRATE_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 NET_STREAM_TYPE emStreamType; // 码流类型 }NET_IN_GET_VIDEO_ENCODE_BITRATE_INFO; ///@brief CLIENT_GetVideoEncodeBitrate,出参 typedef struct tagNET_OUT_GET_VIDEO_ENCODE_BITRATE_INFO { DWORD dwSize; // 结构体大小 UINT nBitrate; // 码率大小,单位kbps }NET_OUT_GET_VIDOE_ENCODE_BITRATE_INFO; ///@brief 获取码率,比特率 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVideoEncodeBitrate(LLONG lLoginID, const NET_IN_GET_VIDEO_ENCODE_BITRATE_INFO *pInParam, NET_OUT_GET_VIDOE_ENCODE_BITRATE_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetBootParameter 入参 typedef struct tagNET_IN_GET_BOOT_PARAMETER { DWORD dwSize; // 结构体大小 int nNameNum; // 参数个数 char szNames[32][32]; // 具体参数名称列表 } NET_IN_GET_BOOT_PARAMETER; ///@brief 具体参数信息 typedef struct tagNET_BOOT_PARAMETER_INFO { char szName[32]; // 具体参数名称 char szParameterValue[256]; // 具体参数信息 BYTE bReserved[256]; // 保留字节 } NET_BOOT_PARAMETER_INFO; ///@brief CLIENT_GetBootParameter 出参 typedef struct tagNET_OUT_GET_BOOT_PARAMETER { DWORD dwSize; // 结构体大小 UINT nRetBootParamNum; // 实际返回的参数个数 NET_BOOT_PARAMETER_INFO stuBootParamInfo[32]; // 具体参数信息 } NET_OUT_GET_BOOT_PARAMETER; ///@brief 获取系统参数 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetBootParameter(LLONG lLoginID, const NET_IN_GET_BOOT_PARAMETER *pInParam, NET_OUT_GET_BOOT_PARAMETER *pOutParam, int nWaitTime); ///@brief CLIENT_GetLocalIPv4 入参 typedef struct tagNET_IN_GET_LOCAL_IPV4 { DWORD dwSize; // 结构体大小 } NET_IN_GET_LOCAL_IPV4; ///@brief CLIENT_GetLocalIPv4 出参 typedef struct tagNET_OUT_GET_LOCAL_IPV4 { DWORD dwSize; // 结构体大小 char szIPv4[32][DH_MAX_IPADDRV4_LEN]; // 存放IPv4的缓存区,不能为空 unsigned int nValidNum; // 实际返回有效IPv4个数 } NET_OUT_GET_LOCAL_IPV4; ///@brief 获取本机所有IPv4 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLocalIPv4(const NET_IN_GET_LOCAL_IPV4 *pInParam, NET_OUT_GET_LOCAL_IPV4 *pOutParam); ///@brief 选择使用哪个IP。(使用szIPv4的下标,从0开始,由CLIENT_GetLocalIPv4获取) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetLocalIPv4(unsigned int nIndex); ///@brief CLIENT_GetLocalIPv6 入参 typedef struct tagNET_IN_GET_LOCAL_IPV6 { DWORD dwSize; // 结构体大小 } NET_IN_GET_LOCAL_IPV6; ///@brief CLIENT_GetLocalIPv6 出参 typedef struct tagNET_OUT_GET_LOCAL_IPV6 { DWORD dwSize; // 结构体大小 char szIPv6[32][DH_MAX_IPADDRV6_LEN]; // 存放IPv6的缓存区,不能为空 unsigned int nValidNum; // 实际返回有效IPv6个数 } NET_OUT_GET_LOCAL_IPV6; ///@brief 获取本机所有IPv6 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLocalIPv6(const NET_IN_GET_LOCAL_IPV6 *pInParam, NET_OUT_GET_LOCAL_IPV6 *pOutParam); ///@brief 选择使用哪个IP。(使用szIPv6的下标,从0开始,由CLIENT_GetLocalIPv6获取) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetLocalIPv6(unsigned int nIndex); ///@brief CLIENT_GetLVMInfo 入参 typedef struct tagNET_IN_GET_LVM_INFO { DWORD dwSize; // 结构体大小 char szName[32]; // 逻辑卷名称 }NET_IN_GET_LVM_INFO; ///@brief 逻辑卷状态 typedef enum tagEM_LVM_VG_STATE { EM_LMV_VG_STATE_UNKNOWN, // 未知 EM_LMV_VG_STATE_NORMAL, // 正常 EM_LMV_VG_STATE_RUINED, // 损坏 EM_LMV_VG_STATE_ERROR, // 错误 }EM_LMV_VG_STATE; ///@brief 逻辑卷信息 typedef struct tagNET_LVM_INFO { double dbFreeSpace; // 逻辑卷剩余空间 单位:MB double dbTotalSpace; // 逻辑卷总空间 单位:MB EM_LMV_VG_STATE emStatus; // 逻辑卷状态 }NET_LVM_INFO; ///@brief CLIENT_GetLVMInfo 出参 typedef struct tagNET_OUT_GET_LVM_INFO { DWORD dwSize; // 结构体大小 NET_LVM_INFO stuInfo; // 逻辑卷信息 }NET_OUT_GET_LVM_INFO; ///@brief 获取逻辑卷信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetLVMInfo(LLONG lLoginID, const NET_IN_GET_LVM_INFO *pInparam, NET_OUT_GET_LVM_INFO *pOutParam, int nWaitTime); ///@brief 传感器感应方式枚举类型 typedef enum tagNET_EM_SENSE_METHOD { NET_EM_SENSE_UNKNOWN = -1, // 未知类型 NET_EM_SENSE_DOOR=0, // 门磁 NET_EM_SENSE_PASSIVEINFRA, // 被动红外 NET_EM_SENSE_GAS, // 气感 NET_EM_SENSE_SMOKING, // 烟感 NET_EM_SENSE_WATER, // 水感 NET_EM_SENSE_ACTIVEFRA, // 主动红外 NET_EM_SENSE_GLASS, // 玻璃破碎 NET_EM_SENSE_EMERGENCYSWITCH, // 紧急开关 NET_EM_SENSE_SHOCK, // 震动 NET_EM_SENSE_DOUBLEMETHOD, // 双鉴(红外+微波) NET_EM_SENSE_THREEMETHOD, // 三技术 NET_EM_SENSE_TEMP, // 温度 NET_EM_SENSE_HUMIDITY, // 湿度 NET_EM_SENSE_WIND, // 风速 NET_EM_SENSE_CALLBUTTON, // 呼叫按钮 NET_EM_SENSE_GASPRESSURE, // 气体压力 NET_EM_SENSE_GASCONCENTRATION, // 燃气浓度 NET_EM_SENSE_GASFLOW, // 气体流量 NET_EM_SENSE_OIL, // 油量检测 NET_EM_SENSE_MILEAGE, // 里程数检测 NET_EM_SENSE_OTHER, // 其他 NET_EM_SEHSE_CO2, // 二氧化碳浓度检测 NET_EM_SEHSE_SOUND, // 噪音检测 NET_EM_SEHSE_PM25, // PM2.5检测 NET_EM_SEHSE_SF6, // 六氟化硫浓度检测 NET_EM_SEHSE_O3, // 臭氧 NET_EM_SEHSE_AMBIENTLIGHT, // 环境光照检测 NET_EM_SEHSE_INFRARED, // 红外报警 NET_EM_SEHSE_TEMP1500, // 1500温度传感器 NET_EM_SEHSE_TEMPDS18B20, // DS18B20温度传感器 NET_EM_SEHSE_HUMIDITY1500, // 1500湿度传感器 NET_EM_SEHSE_URGENCYBUTTON, // 紧急按钮 NET_EM_SEHSE_STEAL, // 盗窃 NET_EM_SEHSE_PERIMETER, // 周界 NET_EM_SEHSE_PREVENTREMOVE, // 防拆 NET_EM_SEHSE_DOORBELL, // 门铃 NET_EM_SEHSE_ALTERVOLT, // 交流电压传感器 NET_EM_SEHSE_DIRECTVOLT, // 直流电压传感器 NET_EM_SEHSE_ALTERCUR, // 交流电流传感器 NET_EM_SEHSE_DIRECTCUR, // 直流电流传感器 NET_EM_SEHSE_RSUGENERAL, // 高新兴通用模拟量 NET_EM_SEHSE_RSUDOOR, // 高新兴门禁感应 NET_EM_SEHSE_RSUPOWEROFF, // 高新兴断电感应 NET_EM_SEHSE_CURTAINSENSOR, // 幕帘传感器 NET_EM_SEHSE_MOBILESENSOR, // 移动传感器 NET_EM_SEHSE_FIREALARM, // 火警 NET_EM_SEHSE_LOCKTONGUE, // 锁舌 NET_EM_SENSE_NUM // 枚举类型总数,注意:这个值不能作为常量使用 }NET_EM_SENSE_METHOD; ///@brief 报警使能控制方式枚举类型 typedef enum tagNET_EM_CTRL_ENABLE { NET_EM_CTRL_NORMAL=0, //不控制使能 NET_EM_CTRL_ALWAYS_EN, //总是使能 NET_EM_CTRL_ONCE_DIS, //旁路 NET_EM_CTRL_ALWAYS_DIS, //移除 NET_EM_CTRL_NUM //枚举类型总数 }NET_EM_CTRL_ENABLE; ///@brief 防区类型 typedef enum tagNET_EM_CFG_DEFENCEAREATYPE { NET_EM_CFG_DefenceAreaType_Unknown = 0, // 未知类型 NET_EM_CFG_DefenceAreaType_InTime, // 即时防区 NET_EM_CFG_DefenceAreaType_Delay, // 延时防区 NET_EM_CFG_DefenceAreaType_FullDay, // 24小时防区 NET_EM_CFG_DefenceAreaType_Follow, // 跟随防区 NET_EM_CFG_DefenceAreaType_Medical, // 医疗紧急防区 NET_EM_CFG_DefenceAreaType_Panic, // 恐慌防区 NET_EM_CFG_DefenceAreaType_Fire, // 火警防区 NET_EM_CFG_DefenceAreaType_FullDaySound, // 24小时有声防区 NET_EM_CFG_DefenceAreaType_FullDaySlient, // 24小时无声防区 NET_EM_CFG_DefenceAreaType_Entrance1, // 出入防区1 NET_EM_CFG_DefenceAreaType_Entrance2, // 出入防区2 NET_EM_CFG_DefenceAreaType_InSide, // 内部防区 NET_EM_CFG_DefenceAreaType_OutSide, // 外部防区 NET_EM_CFG_DefenceAreaType_PeopleDetect, // 人员检测防区 NET_EM_CFG_DefenceAreaType_Robbery, // 匪警防区 NET_EM_CFG_DefenceAreaType_Key, // Key防区 NET_EM_CFG_DefenceAreaType_FulldayAuxiliary,// 24小时辅助防区 NET_EM_CFG_DefenceAreaType_FulldayVibration,// 24小时震动防区 NET_EM_CFG_DefenceAreaType_Chime, // Chime防区 }NET_EM_CFG_DEFENCEAREATYPE; ///@brief 外部报警配置 typedef struct tagNET_CFG_ALARMIN_INFO { DWORD dwSize; // 结构体大小 int nChannelID; // 报警通道号(0开始) BOOL bEnable; // 使能开关 char szChnName[64]; // 报警通道名称 int nAlarmType; // 报警器类型,0:常闭,1:常开 NET_ALARM_MSG_HANDLE stuEventHandler; // 报警联动 NET_CFG_TIME_SECTION stuTimeSection[7][6]; // 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection BOOL abDevID; // char szDevID[128]; // 设备ID int nPole; // 传感器触发模式, 0:高有效,1低有效; // 具体表现为传感器接地or电源,与nAlarmType组合使用 NET_EM_SENSE_METHOD emSense; // 传感器感应方式 NET_EM_CTRL_ENABLE emCtrl; // 报警使能控制方式 int nDisDelay; // 延时撤防时间,防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得 // emCtrl值为EM_CTRL_NORMAL或EM_CTRL_ALWAYS_EN 时有效。 NET_EM_CFG_DEFENCEAREATYPE emDefenceAreaType; // 防区类型, 具体支持的类型通过查询能力获得 int nEnableDelay; // 延时布防时间, 防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得 int nSlot; // 根地址, -1表示无效, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推 int nLevel1; // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, -1表示无效, 从0开始 BOOL abLevel2; // 表示nLevel2字段是否存在 int nLevel2; // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, -1表示无效, 从0开始 int nDoorNotClosedTimeout; // 门未关超时时间,单位为s,范围 15s-300s } NET_CFG_ALARMIN_INFO; ///@brief 保存矫正角度配置,对应配置项 NET_EM_CFG_PTZ_DIRECTION_CORRECT typedef struct tagNET_CFG_PTZ_DIRECTION_CORRECT_INFO { DWORD dwSize; // 结构体大小 UINT nPanRefAngle; // 正北方向矫正角度单位0.01度 范围:0-35999 UINT nRefTimes; // 云台方向矫正次数默认是0 UINT nMoveMode; // 云台移动模式,0为逆时针转动,1为顺时针转动,默认为0 }NET_CFG_PTZ_DIRECTION_CORRECT_INFO; ///@brief 雨量报警上报控制配置 typedef struct tagCFG_ALARM_UPLOAD { BOOL bEnable; // 雨量报警使能 float fHighLevel; // 雨量上限报警阈值(单位:毫米) UINT nAlarmInterval; // 报警间隔(单位:秒) BYTE byReserved1[4]; // 字节对齐 char bReserved[256]; // 预留字节 }CFG_ALARM_UPLOAD; ///@brief 实时雨量数据上报配置 typedef struct tagCFG_DATA_UPLOAD { BOOL bEnable; // 实时雨量数据上报使能 UINT nUploadInterval; // 实时雨量数据上报间隔(单位:秒) char bReserved[256]; // 预留字节 }CFG_DATA_UPLOAD; ///@brief 雨量筒信息配置 typedef struct tagCFG_PER_RAIN_FALL_CONFIG_INFO { CFG_ALARM_UPLOAD stuAlarmUpload; // 雨量报警上报控制配置 CFG_DATA_UPLOAD stuDataUpload; // 实时雨量数据上报配置 char bReserved[1024]; // 预留字节 }CFG_PER_RAIN_FALL_CONFIG_INFO; ///@brief 雨量筒信息配置(对应 NET_EM_CFG_RAIN_FALL_CONFIG) typedef struct tagNET_CFG_RAIN_FALL_CONFIG_INFO { DWORD dwSize; // 结构体大小 CFG_PER_RAIN_FALL_CONFIG_INFO stuRainFallConfig[64]; // 雨量筒信息配置 UINT nRainFallConfigNum; // 雨量筒信息配置个数 }NET_CFG_RAIN_FALL_CONFIG_INFO; ////////////////////////////////////////////////////////////// ///@brief CLIENT_AddDoubleRecordTask 入参 typedef struct tagNET_IN_ADD_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 char szTaskName[256]; // 任务列表名称 int nChannels[512]; // 双录通道列表 int nChannelNum; // 通道个数 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 }NET_IN_ADD_DOUBLE_RECORD_TASK_INFO; ///@brief 错误码 taskID为0时有效 typedef enum tagEM_TASK_ADD_ERROR_CODE { EM_TASK_ADD_ERROR_CODE_UNKNOWN, // 未知 EM_TASK_ADD_ERROR_CODE_NO_ERROR, // 无错误 EM_TASK_ADD_ERROR_CODE_PARAMETER_ERROR, // 参数错误 EM_TASK_ADD_ERROR_CODE_NO_RECORD, // 录像不存在 }EM_TASK_ADD_ERROR_CODE; ///@brief CLIENT_AddDoubleRecordTask 出参 typedef struct tagNET_OUT_ADD_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID号 EM_TASK_ADD_ERROR_CODE emErrorCode; // 错误码 }NET_OUT_ADD_DOUBLE_RECORD_TASK_INFO; ///@brief 双录备份添加任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddDoubleRecordTask(LLONG lLoginID, const NET_IN_ADD_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_ADD_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief 任务类型 typedef enum tagEM_TASK_TYPE { EM_TASK_TYPE_UNKNOWN, // 未知 EM_TASK_TYPE_USB, // "usb" EM_TASK_TYPE_SFTP, // "sftp" EM_TASK_TYPE_BACKUPDISK, // "backupDisk" }EM_TASK_TYPE; ///@brief 备份 任务 typedef struct tagNET_BACKUP_TASK_INFO { char szTaskName[256]; // 任务名称 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szBackupsTypePath[256][256]; // 备份录像路径 int nBackupsPathNum; // 备份路径个数 EM_TASK_TYPE emBackupsType; // 备份类型 BYTE byReserved[256]; // 保留字节 }NET_BACKUP_TASK_INFO; ///@brief CLIENT_AddDoubleRecordLocalTask 入参 typedef struct tagNET_IN_ADD_DOUBLE_RECORD_LOCAL_TASK { DWORD dwSize; // 结构体大小 NET_BACKUP_TASK_INFO stuBackupTask; // 备份任务 }NET_IN_ADD_DOUBLE_RECORD_LOCAL_TASK; ///@brief CLIENT_AddDoubleRecordLocalTask 出参 typedef struct tagNET_OUT_ADD_DOUBLE_RECORD_LOCAL_TASK { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务ID号 EM_TASK_ADD_ERROR_CODE emErrorCode; // 错误码 }NET_OUT_ADD_DOUBLE_RECORD_LOCAL_TASK; ///@brief 双录备份增加本地备份任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddDoubleRecordLocalTask(LLONG lLoginID, const NET_IN_ADD_DOUBLE_RECORD_LOCAL_TASK *pInParam, NET_OUT_ADD_DOUBLE_RECORD_LOCAL_TASK *pOutParam, int nWaitTime); ///@brief CLIENT_GetDoubleRecordTaskInfo 入参 typedef struct tagNET_IN_GET_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 UINT nTaskID; // 任务号 }NET_IN_GET_DOUBLE_RECORD_TASK_INFO; ///@brief CLIENT_GetDoubleRecordTaskInfo 出参 typedef struct tagNET_OUT_GET_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 EM_TASK_TYPE emTaskType; // 任务类型 UINT nTaskID; // 任务编号 UINT nProgress; // 任务当前进度 char szTaskName[256]; // 任务名称 NET_TIME stuProgressStartTime; // 任务开始时间 NET_TIME stuProgressEndTime ; // 任务结束时间 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nProgressFileNum; // 文件个数 UINT nFileSize; // 文件大小 单位:kb }NET_OUT_GET_DOUBLE_RECORD_TASK_INFO; ///@brief 双录备份获取任务信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDoubleRecordTaskInfo(LLONG lLoginID, const NET_IN_GET_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_GET_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_StartDoubleRecordTask 入参 typedef struct tagNET_IN_START_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 int nTaskNum; // 任务个数 UINT nTaskID[1024]; // 任务编号 }NET_IN_START_DOUBLE_RECORD_TASK_INFO; ///@brief CLIENT_StartDoubleRecordTask 出参 typedef struct tagNET_OUT_START_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_START_DOUBLE_RECORD_TASK_INFO; ///@brief 双录备份开始任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartDoubleRecordTask(LLONG lLoginID, const NET_IN_START_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_START_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_RemoveDoubleRecordTask 出参 typedef struct tagNET_IN_REMOVE_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 int nTaskNum; // 任务个数 UINT nTaskID[1024]; // 任务编号 }NET_IN_REMOVE_DOUBLE_RECORD_TASK_INFO; ///@brief CLIENT_RemoveDoubleRecordTask 入参 typedef struct tagNET_OUT_REMOVE_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_REMOVE_DOUBLE_RECORD_TASK_INFO; ///@brief 删除任务 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveDoubleRecordTask(LLONG lLoginID, const NET_IN_REMOVE_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_REMOVE_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief 查询条件 typedef struct tagNET_FIND_CONDITION_INFO { char szName[32]; // 任务名称 BYTE byReserved[256]; // 保留字节 }NET_FIND_CONDITION_INFO; ///@brief CLIENT_StartFindDoubleRecordTask 入参 typedef struct tagNET_IN_START_FIND_DOUBLE_RECORD_TASK_IFNO { DWORD dwSize; // 结构体大小 NET_FIND_CONDITION_INFO stuCondition; // 查询条件 }NET_IN_START_FIND_DOUBLE_RECORD_TASK_INFO; ///@brief CLIENT_StartFindDoubleRecordTask 出参 typedef struct tagNET_OUT_START_FIND_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 UINT nTotal; // 查询到的总条数 }NET_OUT_START_FIND_DOUBLE_RECORD_TASK_INFO; ///@brief 开始查找任务信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindDoubleRecordTask(LLONG lLoginID, const NET_IN_START_FIND_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_START_FIND_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_DoFindDoubleRecordTask 入参 typedef struct tagNET_IN_DO_FIND_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 UINT nBeginNumber; // 查找起始序号(从0开始) UINT nCount; // 每次获取的条数 }NET_IN_DO_FIND_DOUBLE_RECORD_TASK_INFO; ///@brief 查找任务列表信息 typedef struct tagNET_FIND_TASK_LIST_INFO { EM_TASK_TYPE emBackupsType; // 任务类型 UINT nTaskID; // 任务ID号 char szTaskName[32]; // 任务名称 NET_TIME stuProgressStartTime; // 任务开始时间 NET_TIME stuProgressEndTime; // 任务结束时间 UINT nProgress; // 任务进度 UINT nProgressFileNum; // 文件个数 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nFileSize; // 文件大小 单位:kb BYTE byReserved[252]; // 保留字节 }NET_FIND_TASK_LIST_INFO; ///@brief CLIENT_DoFindDoubleRecordTask 出参 typedef struct tagNET_OUT_DO_FIND_DOUBLE_RECORD_TASK_INFO { DWORD dwSize; // 结构体大小 UINT nMaxCount; // 用户指定分配结构体个 UINT nRetCount; // 返回条数 NET_FIND_TASK_LIST_INFO *pstuFindLTaskListInfo; // 任务列表信息(内存需要用户分配) UINT nFound; // 查询到的条数 }NET_OUT_DO_FIND_DOUBLE_RECORD_TASK_INFO; ///@brief 查找任务信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindDoubleRecordTask(LLONG lFindID, const NET_IN_DO_FIND_DOUBLE_RECORD_TASK_INFO *pInParam, NET_OUT_DO_FIND_DOUBLE_RECORD_TASK_INFO *pOutParam, int nWaitTime); ///@brief 结束查找任务信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindDoubleRecordTask(LLONG lFindID); ///@brief 任务列表 typedef struct tagNET_DOUBLE_RECORD_TASK_LIST { char szTaskName[256]; // 任务名称 NET_TIME stuProgressStartTime; // 执行开始时间 NET_TIME stuProgressEndTime; // 执行结束时间 EM_TASK_TYPE emTaskType; // 任务类型 UINT nProgress; // 当前任务进度 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nFileSize; // 文件大小 BYTE byReserved[252]; // 保留字节 }NET_DOUBLE_RECORD_TASK_LIST; ///@brief 任务列表 typedef struct tagNET_DOUBLE_RECORD_TASK_INFO { NET_DOUBLE_RECORD_TASK_LIST *pTaskList; // 任务列表 int nTaskNum; // 任务列表个数 BYTE byReserved[1020]; // 保留字节 }NET_DOUBLE_RECORD_TASK_INFO; ///@brief 双录备份任务进度、完成百分比、状态回调函数原形,lAttachHandle是CLIENT_AttachDoubleRecordTaskState返回值 typedef void (CALLBACK *fAttachTaskState) (LLONG lAttachHandle, NET_DOUBLE_RECORD_TASK_INFO *stuBuf, LDWORD dwUser); ///@brief CLIENT_AttachDoubleRecordTaskState输入参数 typedef struct tagNET_IN_ATTACH_TASK_STATE_INFO { DWORD dwSize; fAttachTaskState cbAttachTaskStateCB; // 对码数据回调 LDWORD dwUser; // 用户数据 }NET_IN_ATTACH_TASK_STATE_INFO; ///@brief CLIENT_AttachDoubleRecordTaskState输出参数 typedef struct tagNET_OUT_ATTACH_TASK_STATE_INFO { DWORD dwSize; }NET_OUT_ATTACH_TASK_STATE_INFO; ///@brief 双录备份任务进度、完成百分比、状态 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachDoubleRecordTaskState(LLONG lLoginID, const NET_IN_ATTACH_TASK_STATE_INFO *pInParam, NET_OUT_ATTACH_TASK_STATE_INFO *pOutParam, int nWaitTime); ///@brief 取消订阅监测点位报警信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachDoubleRecordTaskState(LLONG lAttachHandle); /***************************************备份任务接口*******************************************/ ///@brief 源模式 typedef enum tagEM_BACKUP_SOURCE_MODE { EM_SOURCE_MODE_SINGLE, // "Single",/*单个备份模式*/ EM_SOURCE_MODE_COMBIN, // "Combin",/*合并备份模式*/ }EM_BACKUP_SOURCE_MODE; ///@brief 备份模式 typedef enum tagEM_BACKUP_TARGET_MODE { EM_TARGET_MODE_SYNC, // "Sync", /*同步备份*/ EM_TARGET_MODE_TURN, // "Turn", /*轮训备份*/ EM_TARGET_MODE_CYCLE, // "Cycle", /*循环备份*/ }EM_BACKUP_TARGET_MODE; ///@brief 格式类型 typedef enum tagEM_BACKUP_FORMAT { EM_BACKUP_FORMAT_ASF, // "asf" EM_BACKUP_FORMAT_DAV, // "dav" EM_BACKUP_FORMAT_MP4, // "mp4" }EM_BACKUP_FORMAT; ///@brief 源类型 typedef enum tagEM_BACKUP_SOURCE_TYPE { EM_SOURCE_TYPE_REALTIME, // "RealTime", /*实时源*/,源类型有效 EM_SOURCE_TYPE_LOCAL, // "Local", /*本地源*/ EM_SOURCE_TYPE_NETWORK, // "Network", /*网络源*/ }EM_BACKUP_SOURCE_TYPE; ///@brief 目标类型 typedef enum tagEM_BACKUP_TARGET_TYPE { EM_BACKUP_TARGET_TYPE_LOCAL, // "Local", /*本地源*/ EM_BACKUP_TARGET_TYPE_NETWORK, // "Network", /*网络源*/ }EM_BACKUP_TARGET_TYPE; ///@brief 备份源 typedef struct tagNET_BACKUP_SOURCE { EM_BACKUP_SOURCE_TYPE emSourceType; // 源类型 char Reserved[4]; // 字节对齐 char szPath[256]; // 源路径,emSourceType为EM_BACKUP_SOURCE_TYPE_REALTIME时,对应格式"通道号/码流类型"。例:"1/Main" // 码流类型:Main、Extra1、Extra2、Extra3 char szRename[256]; // 备份后的文件名 char byReserved[1024]; // 保留字节 }NET_BACKUP_SOURCE; ///@brief 备份目的 typedef struct tagNET_BACKUP_TARGET { EM_BACKUP_TARGET_TYPE emTargetType; // 目标类型 char Reserved[4]; // 字节对齐 char szPath[256]; // 备份的目标路径 char szRename[256]; // 备份后的文件名,如果无该字段,保留原文件名 char byReserved[1024]; // 保留字节 }NET_BACKUP_TARGET; ///@brief CLIENT_StartBackupTask接口输入参数 typedef struct tagNET_IN_START_BACKUP_TASK_INFO { DWORD dwSize; EM_BACKUP_SOURCE_MODE emSourceMode; // 源模式 EM_BACKUP_TARGET_MODE emTargetMode; // 备份模式 int nSourceNum; // 备份源个数 NET_BACKUP_SOURCE* pstuSource; // 备份源,用户分配内存,大小为sizeof(NET_BACKUP_SOURCE)*nSourceNum NET_BACKUP_TARGET* pstuTarget; // 备份目的,用户分配内存,大小为sizeof(NET_BACKUP_TARGET)*nTargetNum int nTargetNum; // 备份目的个数 EM_BACKUP_FORMAT emFormat; // 期望备份成为的格式类型 unsigned int nGroupID; // 任务组ID BOOL bTakePlayer; // 是否带私有播放器,emFormat值dav时,需要私有播放器播放。 }NET_IN_START_BACKUP_TASK_INFO; ///@brief CLIENT_StartBackupTask接口输出参数 typedef struct tagNET_OUT_START_BACKUP_TASK_INFO { DWORD dwSize; }NET_OUT_START_BACKUP_TASK_INFO; ///@brief 格式类型 typedef enum tagEM_BACKUP_STATES { EM_CB_STATES_UNKNOWN, // "Unknown" EM_CB_STATES_CREATED, // "Created" EM_CB_STATES_READY, // "Ready" EM_CB_STATES_RUNNING, // "Running" EM_CB_STATES_FINISHED, // "Finished" EM_CB_STATES_ERROR, // "Error" EM_CB_STATES_ABORTED, // "Aborted" EM_CB_STATES_PAUSE, // "Pause" }EM_BACKUP_STATES; ///@brief 备份状态信息 typedef struct tagNET_BACKUP_STATES_INFO { unsigned int nProgress; // 备份进度 EM_BACKUP_STATES emState; // 备份状态值 char szDeviceName[64]; // 备份的设备名称 char byReserved[256]; // 保留字节 }NET_BACKUP_STATES_INFO; ///@brief fAttachBackupTaskStateCB 参数 typedef struct tagNET_CB_BACKUPTASK_STATE { NET_BACKUP_STATES_INFO stuStates[1024]; // 备份状态信息 int nStatesNum; // 备份状态信息个数 char bReserved[1020]; // 预留字节数 }NET_CB_BACKUPTASK_STATE; ///@brief 刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBackupTaskState返回值, typedef void (CALLBACK *fAttachBackupTaskStateCB) (LLONG lAttachHandle, NET_CB_BACKUPTASK_STATE* pBuf, LDWORD dwUser); ///@brief CLIENT_AttachBackupTaskState 输入参数 typedef struct tagNET_IN_ATTACH_BACKUP_STATE { DWORD dwSize; // 结构体大小. unsigned int nGroupID; // 任务组ID fAttachBackupTaskStateCB cbAttachState; // 订阅备份状态回调 LDWORD dwUser; // 用户数据 char bReserved[4]; // 字节对齐 }NET_IN_ATTACH_BACKUP_STATE; ///@brief CLIENT_AttachBackupTaskState 输出参数 typedef struct tagNET_OUT_ATTACH_BACKUP_STATE { DWORD dwSize; }NET_OUT_ATTACH_BACKUP_STATE; ///@brief 开始备份任务,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartBackupTask(LLONG lLoginID, const NET_IN_START_BACKUP_TASK_INFO* pstInParam, NET_OUT_START_BACKUP_TASK_INFO *pstOutParam, int nWaitTime); ///@brief 订阅备份状态,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachBackupTaskState(LLONG lLoginID, const NET_IN_ATTACH_BACKUP_STATE* pstInParam, NET_OUT_ATTACH_BACKUP_STATE *pstOutParam, int nWaitTime); ///@brief 取消订阅备份状态,lAttachHandle是CLIENT_AttachBackupTaskState返回值 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachBackupTaskState(LLONG lAttachHandle); /////////////////////////////消防接口 Start///////////////////////////////// ///@brief CLIENT_SmokeRemoteReboot 入参 typedef struct tagNET_IN_SMOKE_REMOTE_REBOOT_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_SMOKE_REMOTE_REBOOT_INFO; ///@brief CLIENT_SmokeRemoteReboot 出参 typedef struct tagNET_OUT_SMOKE_REMOTE_REBOOT_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SMOKE_REMOTE_REBOOT_INFO; ///@brief 远程复位(消防) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SmokeRemoteReboot(LLONG lLoginID, const NET_IN_SMOKE_REMOTE_REBOOT_INFO *pInParam, NET_OUT_SMOKE_REMOTE_REBOOT_INFO *pOutParam, int nWaitTime); ///@brief 消音模式 typedef enum tagEM_HY_SMOKE_ERASURE_MODE { EM_HY_SMOKE_ERASURE_MODE_UNKNOWN, // 未知 EM_HY_SMOKE_ERASURE_MODE_ONCE, // 一次消音 EM_HY_SMOKE_ERASURE_MODE_PERMANENT, // 永久消音 }EM_HY_SMOKE_ERASURE_MODE; ///@brief CLIENT_SmokeRemoteErasure 入参 typedef struct tagNET_IN_SMOKE_REMOTE_ERASURE_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 EM_HY_SMOKE_ERASURE_MODE emErasureMode; // 消音模式 }NET_IN_SMOKE_REMOTE_ERASURE_INFO; ///@brief CLIENT_SmokeRemoteErasure 出参 typedef struct tagNET_OUT_SMOKE_REMOTE_ERASURE_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SMOKE_REMOTE_ERASURE_INFO; ///@brief 远程消音(消防) CLIENT_NET_API BOOL CALL_METHOD CLIENT_SmokeRemoteErasure(LLONG lLoginID, const NET_IN_SMOKE_REMOTE_ERASURE_INFO *pInParam, NET_OUT_SMOKE_REMOTE_ERASURE_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetSmokeData 入参 typedef struct tagNET_IN_GET_SMOKE_DATA { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_GET_SMOKE_DATA; ///@brief CLIENT_GetSmokeData 出参 typedef struct tagNET_OUT_GET_SMOKE_DATA { DWORD dwSize; // 结构体大小 float ftemperatureData; // 温度值 NET_TEMPERATURE_UNIT emTemperatureUnit; // 温度单位 int nHumidityData; // 湿度值,单位%RH int nCOData; // 一氧化碳浓度 单位:ppm float nCH4Data; // 甲烷浓度, 单位:%LEL }NET_OUT_GET_SMOKE_DATA; ///@brief 获取烟感数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSmokeData(LLONG lLoginID, const NET_IN_GET_SMOKE_DATA *pInParam, NET_OUT_GET_SMOKE_DATA *pOutParam, int nWaitTime); /////////////////////////////消防接口 end///////////////////////////////// /////////////////////////////闸机接口 Start///////////////////////////////// ///@brief CLIENT_ASGManagerGetConfig 入参 typedef struct tagNET_IN_ASGMANAGER_GET_CONFIG { DWORD dwSize; // 结构体大小 }NET_IN_ASGMANAGER_GET_CONFIG; ///@brief 语音ID typedef enum tagEM_VOICE_ID { EM_VOICE_ID_UNKNOWN = -1, // 未知 EM_VOICE_ID_NO, // 无语音 EM_VOICE_ID_WELCOME, // 欢迎光临 EM_VOICE_ID_WELCOME_HOME, // 欢迎回家 EM_VOICE_ID_GOOD_JOURNEY, // 一路顺风 EM_VOICE_ID_WELCOME_BACK_NEXT, // 欢迎下次光临 EM_VOICE_ID_THANKS_FOR_PATRONAGE, // 谢谢惠顾 EM_VOICE_ID_AUTHORIZ_SUCCESS, // 授权成功 EM_VOICE_ID_SAFE_JOURNEY, // 一路平安 EM_VOICE_ID_VERIFY_SUCCESS, // 验证成功 EM_VOICE_ID_WELCOME_ADMISSION, // 欢迎入园 EM_VOICE_ID_HOPE_HEALTH, // 祝你健康 EM_VOICE_ID_HOPE_SAFE, // 祝你平安 EM_VOICE_ID_HOPE_SPEED_RECOVERY, // 祝你早日康复 EM_VOICE_ID_WORK_SUCCESS, // 祝你工作顺利 EM_VOICE_ID_CUSTOMIZED_VOICE1 = 16, // 自定义1 EM_VOICE_ID_CUSTOMIZED_VOICE2, // 自定义2 EM_VOICE_ID_CUSTOMIZED_VOICE3, // 自定义3 } EM_VOICE_ID; ///@brief 通行语音列表 typedef struct tagNET_VOICE_LIST { UINT nDirectionIndication; // 指示进出门方向0: 进门方向1: 出门方向 EM_VOICE_ID emVoiceID; // 语音ID char szReserved[512]; // 预留字节 }NET_VOICE_LIST; ///@brief 通行模式 typedef enum tagEM_NET_PASS_MODE { EM_NET_PASS_MODE_UNKNOWN = -1, // 未知 EM_NET_PASS_MODE_IN_AUTHORIZATION_OUT_AUTHORIZATION, // 进授权出授权 EM_NET_PASS_MODE_IN_AUTHORIZATION_OUT_FREE, // 进授权出自由 EM_NET_PASS_MODE_IN_AUTHORIZATION_OUT_FORBID, // 进授权出禁止 EM_NET_PASS_MODE_IN_FREE_OUT_AUTHORIZATION, // 进自由出授权 EM_NET_PASS_MODE_IN_FREE_OUT_FREE, // 进自由出自由 EM_NET_PASS_MODE_IN_FREE_OUT_FORBID, // 进自由出禁止 EM_NET_PASS_MODE_IN_FORBID_OUT_AUTHORIZATION, // 进禁止出授权 EM_NET_PASS_MODE_IN_FORBID_OUT_FREE, // 进禁止出自由 EM_NET_PASS_MODE_IN_FORBID_OUT_FORBID, // 进禁止出禁止 } EM_NET_PASS_MODE; ///@brief 闸机断电以后门摆动放向 typedef enum tagEM_NET_DIRECTION_AFTER_POWER_OFF { EM_NET_DIRECTION_AFTER_POWER_OFF_UNKNOWN = -1, // 未知 EM_NET_DIRECTION_AFTER_POWER_OFF_IN, // 进门方向 EM_NET_DIRECTION_AFTER_POWER_OFF_OUT, // 出门方向 } EM_NET_DIRECTION_AFTER_POWER_OFF; ///@brief 工作模式 typedef enum tagEM_NET_ASG_WORK_MODE { EM_NET_ASG_WORK_MODE_UNKNOWN = -1, // 未知 EM_NET_ASG_WORK_MODE_CLOSE, // 常闭模式 EM_NET_ASG_WORK_MODE_OPEN, // 常开模式 } EM_NET_ASG_WORK_MODE; ///@brief 启动模式 typedef enum tagEM_NET_STARTUP_MODE { EM_NET_STARTUP_MODE_UNKNOWN = -1, // 未知 EM_NET_STARTUP_MODE_NORMAL, // 正常启动模式 EM_NET_STARTUP_MODE_ZERO_SETTING, // 零位设置启动模式 EM_NET_STARTUP_MODE_AGING_TEST, // 老化测试启动模式 } EM_NET_STARTUP_MODE; ///@brief 闸机类型 typedef enum tagEM_NET_GATE_TYPE { EM_NET_ASG_GATE_TYPE_UNKNOWN = -1, // 未知 EM_NET_ASG_GATE_TYPE_SWING_GATE_ONE, // 摆闸1 EM_NET_ASG_GATE_TYPE_SWING_GATE_TWO, // 摆闸2 EM_NET_ASG_GATE_TYPE_WING_GATE_ONE, // 翼闸1 EM_NET_ASG_GATE_TYPE_WING_GATE_TWO, // 翼闸2 EM_NET_ASG_GATE_TYPE_WING_GATE_THREE, // 翼闸3 EM_NET_ASG_GATE_TYPE_THREE_STICK_GATE_ONE = 10, // 三棍闸1 EM_NET_ASG_GATE_TYPE_THREE_STICK_GATE_TWO, // 三棍闸2 EM_NET_ASG_GATE_TYPE_SWING_GATE_THREE = 20, // 摆闸3 EM_NET_ASG_GATE_TYPE_SWING_GATE_FOUR, // 摆闸4 EM_NET_ASG_GATE_TYPE_SWING_GATE_FIVE, // 摆闸5 } EM_NET_GATE_TYPE; ///@brief 通道宽度 typedef enum tagEM_NET_CHANNEL_WIDTH { EM_NET_CHANNEL_WIDTH_UNKNOWN = -1, // 未知 EM_NET_CHANNEL_WIDTH_600, // 600mm EM_NET_CHANNEL_WIDTH_700, // 700mm EM_NET_CHANNEL_WIDTH_800, // 800mm EM_NET_CHANNEL_WIDTH_900, // 900mm EM_NET_CHANNEL_WIDTH_1000, // 1000mm EM_NET_CHANNEL_WIDTH_1100, // 1100mm EM_NET_CHANNEL_WIDTH_1200, // 1200mm EM_NET_CHANNEL_WIDTH_1300, // 1300mm EM_NET_CHANNEL_WIDTH_1400, // 1400mm EM_NET_CHANNEL_WIDTH_1500, // 1500mm } EM_NET_CHANNEL_WIDTH; ///@brief 闸机主板配置 typedef struct tagNET_MAIN_BOARD_CONFIG { UINT nVoiceListNum; // 通行语音列表个数 NET_VOICE_LIST stuVoiceList[16]; // 通行语音列表 EM_NET_PASS_MODE emPassMode; // 通行模式 UINT nOpenDoorSpeed; // 开门速度档位, 范围:0-7, 对应1-8档 UINT nPassTimeOut; // 通行超时时间, 范围:2-60, 单位:秒 UINT nCloseDelayTime; // 延时关门时间,单位:秒,范围(0-60)即,行人通过后延迟指定时间再关门。 UINT nSecurityLevel; // 闸机安全等级, 范围:0-4, 对应1-5级 BOOL bSecondOpenEnable; // 二次开启功能开关;False:关闭, True:开启 UINT nSecondOpenTimeSec; // 二次开启时间段值,即AccessTimeSchedule的数组索引 BOOL bMemoryModeEnable; // 记忆功能开关;False:关闭, True:开启 UINT nVolumeLevel; // 设备音量等级共8档, 范围:0-7, 0级表示静音 EM_NET_DIRECTION_AFTER_POWER_OFF emDirectionAfterPowerOff; // 闸机断电以后门摆动放向 EM_NET_ASG_WORK_MODE emWorkMode; // 工作模式 UINT nWorkModeTimeSec; // 工作模式时间段值,即AccessTimeSchedule的数组索引 EM_NET_STARTUP_MODE emStartUpMode; // 启动模式 int nMasterWingAngleAdjust; // 主机侧门翼零位微调角度,取值范围,-100 ~ 100, 单位:0.1°,即可调节-10度~10度 int nSlaveWingAngleAdjust; // 从机侧门翼零位微调角度,取值范围,-100 ~ 100, 单位:0.1°,即可调节-10度~10度 EM_NET_GATE_TYPE emGateType; // 闸机类型 EM_NET_CHANNEL_WIDTH emChannelWidth; // 通道宽度 UINT nGateMaterial; // 闸机门翼材质 0:不锈钢 1:亚克力 UINT nMemoryModeTimeSec; // 记忆模式时间段值 char szReserved[1016]; // 预留字节 }NET_MAIN_BOARD_CONFIG; ///@brief CLIENT_ASGManagerGetConfig 出参 typedef struct tagNET_OUT_ASGMANAGER_GET_CONFIG { DWORD dwSize; // 结构体大小 NET_MAIN_BOARD_CONFIG stuMainBoardConfig; // 闸机主板配置 }NET_OUT_ASGMANAGER_GET_CONFIG; ///@brief 闸机设置配置获取专用方法,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ASGManagerGetConfig(LLONG lLoginID, const NET_IN_ASGMANAGER_GET_CONFIG *pInParam, NET_OUT_ASGMANAGER_GET_CONFIG *pOutParam, int nWaitTime); ///@brief CLIENT_ASGManagerSetConfig 入参 typedef struct tagNET_IN_ASGMANAGER_SET_CONFIG { DWORD dwSize; // 结构体大小 NET_MAIN_BOARD_CONFIG stuMainBoardConfig; // 闸机主板配置 }NET_IN_ASGMANAGER_SET_CONFIG; ///@brief CLIENT_ASGManagerSetConfig 出参 typedef struct tagNET_OUT_ASGMANAGER_SET_CONFIG { DWORD dwSize; // 结构体大小 }NET_OUT_ASGMANAGER_SET_CONFIG; ///@brief 闸机设置配置下发专用方法,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ASGManagerSetConfig(LLONG lLoginID, const NET_IN_ASGMANAGER_SET_CONFIG *pInParam, NET_OUT_ASGMANAGER_SET_CONFIG *pOutParam, int nWaitTime); ///@brief CLIENT_ASGManagerClearStatistics 入参 typedef struct tagNET_IN_ASGMANAGER_CLEAR_STATISTICS { DWORD dwSize; // 结构体大小 BOOL bCleanPassNum; // 是否清除通行人数 }NET_IN_ASGMANAGER_CLEAR_STATISTICS; ///@brief CLIENT_ASGManagerClearStatistics 出参 typedef struct tagNET_OUT_ASGMANAGER_CLEAR_STATISTICS { DWORD dwSize; // 结构体大小 }NET_OUT_ASGMANAGER_CLEAR_STATISTICS; ///@brief 清除闸机的统计信息方法,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ASGManagerClearStatistics(LLONG lLoginID, const NET_IN_ASGMANAGER_CLEAR_STATISTICS *pInParam, NET_OUT_ASGMANAGER_CLEAR_STATISTICS *pOutParam, int nWaitTime); ///@brief CLIENT_ASGManagerGetConfigCaps 入参 typedef struct tagNET_IN_ASGMANAGER_GET_CONFIG_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_ASGMANAGER_GET_CONFIG_CAPS; ///@brief CLIENT_ASGManagerGetConfigCaps 出参 typedef struct tagNET_OUT_ASGMANAGER_GET_CONFIG_CAPS { DWORD dwSize; // 结构体大小 BOOL bSupportVoiceList; // 支持配置语音列表 BOOL bSupportPassMode; // 支持配置通行模式 BOOL bSupportOpenDoorSpeed; // 支持配置开门速度 BOOL bSupportCloseDoorSpeed; // 支持配置关门速度 BOOL bSupportPassTimeOut; // 支持配置通行超时时间 BOOL bSupportCloseDelayTime; // 支持配置关门延时时间 BOOL bSupportSecurityLevel; // 支持配置安全等级 BOOL bSupportSecondOpenEnable; // 支持配置二次开启 BOOL bSupportSecondOpenTimeSec; // 支持配置二次开启时间段 BOOL bSupportMemoryModeEnable; // 支持配置记忆模式 BOOL bSupportVolumeLevel; // 支持配置语音音量 BOOL bSupportDirectionAfterPowerOff; // 支持配置断电开闸方向 BOOL bSupportWorkMode; // 支持配置工作模式 BOOL bSupportWorkModeTimeSec; // 支持配置工作模式时间段 BOOL bSupportStartUpMode; // 支持配置启动模式 BOOL bSupportMasterWingAngleAdjust; // 支持配置主机零位调节 BOOL bSupportSlaveWingAngleAdjust; // 支持配置辅机零位调节 BOOL bSupportGateType; // 支持闸机类型设置 BOOL bSupportChannelWidth; // 支持配置通道宽度 BOOL bSupportGateMaterial; // 支持配置闸机门翼材质 }NET_OUT_ASGMANAGER_GET_CONFIG_CAPS; ///@brief 闸机配置项能力集获取专用方法,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ASGManagerGetConfigCaps(LLONG lLoginID, const NET_IN_ASGMANAGER_GET_CONFIG_CAPS *pInParam, NET_OUT_ASGMANAGER_GET_CONFIG_CAPS *pOutParam, int nWaitTime); /////////////////////////////闸机接口 end///////////////////////////////// /////////////////////////////项目接口 Start///////////////////////////////// ///@brief 加油枪操作类型 typedef enum tagEM_OLIGUN_OPERATE_TYPE { EM_OLIGUN_OPERATE_TYPE_CARRY, // 提枪 EM_OLIGUN_OPERATE_TYPE_HANG, // 挂枪 } EM_OLIGUN_OPERATE_TYPE; ///@brief 加油点车辆信息返回类型 typedef enum tagEM_GASSTATION_CARINFO_RETURN_TYPE { EM_GASSTATION_CARINFO_RETURN_TYPE_NON, // 无任何返回 EM_GASSTATION_CARINFO_RETURN_TYPE_PLATENUM, // 返回车牌号文字 EM_GASSTATION_CARINFO_RETURN_TYPE_PLATENUM_PIC, // 返回车牌号文字和车辆抓拍图片 } EM_GASSTATION_CARINFO_RETURN_TYPE; ///@brief CLIENT_GetGasStationCarInfoByOilgunIndex 接口输入参数 typedef struct tagNET_IN_GET_GASSTATION_CAR_BY_OLIGUNINDEX { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 UINT nRequestTime; // 提枪或挂枪的操作时间,时间格式:UTC时间 EM_OLIGUN_OPERATE_TYPE emOpreateType; // 油枪操作类型 UINT nOligunIndex; // 油枪编号 EM_GASSTATION_CARINFO_RETURN_TYPE emCarInfoReturnType; // 车辆信息返回类型 } NET_IN_GET_GASSTATION_CAR_BY_OLIGUNINDEX; ///@brief 获取加油站车辆信息的返回码 typedef enum tagEM_GASSTATION_CAR_RESPOND_CODE { EM_GASSTATION_CAR_RESPOND_UNKNOWN = -1, // 未知 EM_GASSTATION_CAR_RESPOND_SUCCESS, // 提交处理成功 EM_GASSTATION_CAR_RESPOND_INVALID_PARAM, // 参数不正确 EM_GASSTATION_CAR_RESPOND_SERVICE_NOT_SUPPORT, // 服务不支持 EM_GASSTATION_CAR_RESPOND_CONN_SNAPDEV_FAILED, // 连接抓拍设备失败 EM_GASSTATION_CAR_RESPOND_DB_ERROR, // 数据库执行失败 EM_GASSTATION_CAR_RESPOND_NO_EFFECTIVE_PLATE, // 没有识别到有效车牌 EM_GASSTATION_CAR_RESPOND_NET_ERROR, // 网络异常 EM_GASSTATION_CAR_RESPOND_ENCRY_DECRY_ERROR, // 加解密异常 EM_GASSTATION_CAR_RESPOND_SYSTEM_ERROR, // 系统异常 } EM_GASSTATION_CAR_RESPOND_CODE; ///@brief 加油站车辆图片信息 typedef struct tagNET_GASSTATION_CAR_IMAGE { UINT nOffset; // 车辆图片在二进制数据块中的偏移,单位字节 UINT nLength; // 车辆图片长度,单位:字节 char szReserved[512]; // 保留字节 } NET_GASSTATION_CAR_IMAGE; ///@brief 加油站车辆类型 typedef enum tagEM_GASSTATION_CAR_TYPE { EM_GASSTATION_UNKNOWN, // 未知 EM_GASSTATION_OTHER, // 其他 EM_GASSTATION_MPV, // MPV EM_GASSTATION_SUV, // SUV EM_GASSTATION_LARGE_TRUCK, // 大货车 EM_GASSTATION_MOTOR_BUS, // 大客车 EM_GASSTATION_MICROBUS, // 面包车 EM_GASSTATION_PICKUP, // 皮卡车 EM_GASSTATION_MINI_CARRIAGE, // 微型轿车 EM_GASSTATION_MICRO_TRUCK, // 小货车 EM_GASSTATION_CARRIAGE, // 小轿车 EM_GASSTATION_MID_TRUCK, // 中货车 EM_GASSTATION_MID_PASSENGER_CAR, // 中客车 EM_GASSTATION_TRICYCLE, // 三轮车 EM_GASSTATION_MOTORCYCLE, // 摩托车 } EM_GASSTATION_CAR_TYPE; ///@brief CLIENT_GetGasStationCarInfoByOilgunIndex 接口输出参数 typedef struct tagNET_OUT_GET_GASSTATION_CAR_BY_OLIGUNINDEX { DWORD dwSize; // 结构体大小 EM_GASSTATION_CAR_RESPOND_CODE emRespondCode; // 获取加油站车辆信息的返回码 char szPlateNumber[64]; // 车牌号码 NET_GASSTATION_CAR_IMAGE stuCarImageInfo; // 车辆图片信息 EM_GASSTATION_CAR_TYPE emCarType; // 加油站车辆类型 UINT nCarImageBufLen; // 车辆图片缓冲区大小 char *pCarImageBuf; // 车辆图片缓冲区 } NET_OUT_GET_GASSTATION_CAR_BY_OLIGUNINDEX; ///@brief CLIENT_GetGasStationCameraInfo 接口输入参数 typedef struct tagNET_IN_GET_GASSTATION_GAMERA_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GET_GASSTATION_GAMERA_INFO; ///@brief 加油站相机位置 typedef enum tagEM_GASSTATION_CAMERA_LOCATION { EM_GASSTATION_CAMERA_LOCATION_UNKNWON, // 未知 EM_GASSTATION_CAMERA_LOCATION_ENTER, // 入口 EM_GASSTATION_CAMERA_LOCATION_GAS, // 加油岛 EM_GASSTATION_CAMERA_LOCATION_EXIT, // 出口 } EM_GASSTATION_CAMERA_LOCATION; ///@brief 加油站监控点相机信息 typedef struct tagNET_GASSTATION_CAMERA_INFO { UINT nChannelID; // 通道号 EM_GASSTATION_CAMERA_LOCATION emLocation; // 加油站相机位置 char szReserved[512]; // 保留字节 } NET_GASSTATION_CAMERA_INFO; ///@brief CLIENT_GetGasStationCameraInfo 接口输出参数 typedef struct tagNET_OUT_GET_GASSTATION_GAMERA_INFO { DWORD dwSize; // 结构体大小 UINT nCameraNum; // 加油站相机个数 NET_GASSTATION_CAMERA_INFO stuCmaeraList[256]; // 加油站相机信息 } NET_OUT_GET_GASSTATION_GAMERA_INFO; ///@brief 通过油枪编号获取对应加油点车辆信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetGasStationCarInfoByOilgunIndex(LLONG lLoginID, const NET_IN_GET_GASSTATION_CAR_BY_OLIGUNINDEX *pInParam, NET_OUT_GET_GASSTATION_CAR_BY_OLIGUNINDEX *pOutParam, int nWaitTime); ///@brief 获取加油站相机信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetGasStationCameraInfo(LLONG lLoginID, const NET_IN_GET_GASSTATION_GAMERA_INFO *pInParam, NET_OUT_GET_GASSTATION_GAMERA_INFO *pOutParam, int nWaitTime); /////////////////////////////项目接口 End///////////////////////////////// /***************************工装合规接口Start***************************************************/ ///@brief 工装合规组优先方案 typedef enum tagEM_WORKSUIT_GROUP_POLICY { EM_WORKSUIT_GROUP_POLICY_UNKNWON = -1, // 未知 EM_WORKSUIT_GROUP_POLICY_WHOLE_BODY, // 全身 EM_WORKSUIT_GROUP_POLICY_UPPER_BODY, // 上半身 } EM_WORKSUIT_GROUP_POLICY; ///@brief 工装合规组类型 typedef enum tagEM_WORKSUIT_GROUP_TYPE { EM_WORKSUIT_GROUP_TYPE_UNKNWON, // 未知 EM_WORKSUIT_GROUP_TYPE_BLOCK, // 注册库(布控名单) } EM_WORKSUIT_GROUP_TYPE; ///@brief 合规库布控信息(视频通道角度) typedef struct tagNET_WORKSUIT_CHANNEL_INFO { int nChannel; // 当前组绑定的通道信息, 只读, 获取时有效 UINT nSimilarity; // 相似度阈值,范围 [1, 100],默认67, 只读, 获取时有效 char szReserved[128]; // 保留字节 } NET_WORKSUIT_CHANNEL_INFO; ///@brief 工装合规组信息 typedef struct tagNET_WORKSUIT_COMPARE_GROUP_INFO { char szGroupID[64]; // 合规组ID, 只读, 由设备生成, 创建工装库时无需指定 char szGroupName[128]; // 合规组名称 char szGroupDetail[256]; // 合规组备注信息 EM_WORKSUIT_GROUP_POLICY emWorkSuitPolicy; // 工装优选方案 UINT nSimilarity; // 相似度阈值,范围 [1, 100],默认67 EM_WORKSUIT_GROUP_TYPE emGroupType; // 合规组类型 int nGroupSize; // 当前组内工装数, 只读, 获取时有效 NET_WORKSUIT_CHANNEL_INFO stuChannelInfo[1024]; // 合规库视频通道布控信息, 只读, 获取时有效 UINT nChannelInfoNum; // 当前组绑定的通道数量, 只读, 获取时有效 char szReserved[2044]; // 保留字节 } NET_WORKSUIT_COMPARE_GROUP_INFO; ///@brief CLIENT_CreateWorkSuitCompareGroup 接口输入参数 typedef struct tagNET_IN_CREATE_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 NET_WORKSUIT_COMPARE_GROUP_INFO stuWorkSuitGroupInfo; // 工装合规组信息 } NET_IN_CREATE_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_CreateWorkSuitCompareGroup 接口输出参数 typedef struct tagNET_OUT_CREATE_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 char szGroupID[64]; // 合规库组ID } NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_DeleteWorkSuitCompareGroup 接口输入参数 typedef struct tagNET_IN_DELETE_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 char szGroupID[64]; // 合规库组ID } NET_IN_DELETE_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_DeleteWorkSuitCompareGroup 接口输出参数 typedef struct tagNET_OUT_DELETE_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_FindWorkSuitCompareGroup 接口输入参数 typedef struct tagNET_IN_FIND_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 char szGroupID[64]; // 合规库组ID, 不填组ID表示查找全部组信息 } NET_IN_FIND_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_FindWorkSuitCompareGroup 接口输出参数 typedef struct tagNET_OUT_FIND_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 UINT nMaxGroupNum; // 工装合规组最大个数, 由用户指定, 即pstWorkSuitGroupInfo 数组大小 UINT nRetGroupNum; // 实际返回的工装合规组个数, 即pstWorkSuitGroupInfo数组的有效元素个数 NET_WORKSUIT_COMPARE_GROUP_INFO *pstWorkSuitGroupInfo; // 工装合规组信息, 内存由用户申请, 申请大小nMaxGroupNum*sizeof(NET_WORKSUIT_COMPARE_GROUP_INFO) } NET_OUT_FIND_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_ModifyWorkSuitCompareGroup 接口输入参数 typedef struct tagNET_IN_MODIFY_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 NET_WORKSUIT_COMPARE_GROUP_INFO stuWorkSuitGroupInfo; // 工装合规组信息 } NET_IN_MODIFY_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_ModifyWorkSuitCompareGroup 接口输出参数 typedef struct tagNET_OUT_MODIFY_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFY_WORKSUIT_COMPARE_GROUP; ///@brief 工装合规布控组信息 typedef struct tagNET_WORKSUIT_CONTROL_GROUP_INFO { char szGroupID[64]; // 合规库组ID UINT nSimilary; // 相似度阈值, 范围[0, 100], 0表示不修改阈值 char szReserved[1020]; // 保留字节 } NET_WORKSUIT_CONTROL_GROUP_INFO; ///@brief CLIENT_SetWorkSuitCompareGroupToChannel 接口输入参数 typedef struct tagNET_IN_SET_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 int nChannel; // 视频通道号 UINT nGroupNum; // 工装合规布控组个数, NET_WORKSUIT_CONTROL_GROUP_INFO stuGroupInfo[128]; // 工装合规布控组信息 } NET_IN_SET_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_SetWorkSuitCompareGroupToChannel 接口输出参数 typedef struct tagNET_OUT_SET_WORKSUIT_COMPARE_GROUP { DWORD dwSize; // 结构体大小 } NET_OUT_SET_WORKSUIT_COMPARE_GROUP; ///@brief CLIENT_GetWorkSuitCompareGroupAppendToken 接口输入参数 typedef struct tagNET_IN_GET_WORKSUIT_GROUP_APPEND_TOKEN { DWORD dwSize; // 结构体大小 } NET_IN_GET_WORKSUIT_GROUP_APPEND_TOKEN; ///@brief CLIENT_GetWorkSuitCompareGroupAppendToken 接口输出参数 typedef struct tagNET_OUT_GET_WORKSUIT_GROUP_APPEND_TOKEN { DWORD dwSize; // 结构体大小 UINT nToken; // 工装合规库导入令牌 } NET_OUT_GET_WORKSUIT_GROUP_APPEND_TOKEN; ///@brief 工装合规样本信息 typedef struct tagNET_WORKSUIT_SAMPLE_INFO { char szGroupID[64]; // 合规库组ID char szGroupName[128]; // 合规库组名称 char szSourceUID[64]; // 全景图唯一标识符,由平台生成 char szSourceFileName[64]; // 全景图图片名称 SCENE_IMAGE_INFO stuImageInfo; // 图片信息 char szFilePath[256]; // 文件路径, 支持HTTP URL表示; 支持FTP URL表示; 支持服务器本地路径,填写图片路径后无需填写图片信息中的offset与length字段 char szReserved[1792]; // 保留字节 } NET_WORKSUIT_SAMPLE_INFO; ///@brief 工装合规导入标识信息 typedef struct tagNET_WORKSUIT_APPEND_IDENTI_INFO { UINT nToken; // 该次图片导入的token值 BOOL bAppendEnd; // 表示该次添加图片是否结束,TRUE表示结束,FALSE表示未结束 char szReserved[1024]; // 保留字节 } NET_WORKSUIT_APPEND_IDENTI_INFO; ///@brief CLIENT_MultiAppendToWorkSuitCompareGroup 接口输入参数 typedef struct tagNET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP { DWORD dwSize; // 结构体大小 UINT nWorkSuitSampleNum; // 工装合规样本个数, 由用户指定大小 NET_WORKSUIT_SAMPLE_INFO *pstWorkSuitSampleInfo; // 工装合规样本信息, 内存由用户申请, 申请大小为nWorkSuitSampleNum * sizeof(NET_WORKSUIT_SAMPLE_INFO) NET_WORKSUIT_APPEND_IDENTI_INFO stuAppendIdentiInfo; // 工装合规导入标识信息 char *pszImageBuffer; // 工装合规导入图片缓冲区, 用于存放需要导入的图片数据, 内存由用户申请 UINT nImageBufLen; // 图片缓冲区大小 char szReserved[4]; // 字节对齐 } NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP; ///@brief 工装合规导入返回的错误码信息 typedef enum tagEM_WORKSUIT_APPEND_ERRCODE { EM_WORKSUIT_APPEND_ERRCODE_UNKNOWN = -1, // 未知 EM_WORKSUIT_APPEND_ERRCODE_SUCCESS, // 成功 EM_WORKSUIT_APPEND_ERRCODE_INVALID_ID, // 组ID不存在或为空 EM_WORKSUIT_APPEND_ERRCODE_DB_ERROR, // 数据库操作失败 EM_WORKSUIT_APPEND_ERRCODE_IMAGE_SIZE, // 图片大小不对 EM_WORKSUIT_APPEND_ERRCODE_IMAGE_RESO, // 图片分辨率不对 EM_WORKSUIT_APPEND_ERRCODE_IMAGE_WRITE, // 图片文件写入失败 } EM_WORKSUIT_APPEND_ERRCODE; ///@brief CLIENT_MultiAppendToWorkSuitCompareGroup 接口输出参数 typedef struct NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP { DWORD dwSize; // 结构体大小 UINT nErrCodeNum; // 工装合规导入返回的错误码个数 EM_WORKSUIT_APPEND_ERRCODE emErrCode[1000]; // 工装合规导入返回的错误码信息 } NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP; ///@brief CLIENT_DeleteWorkSuitBySourceUID 接口输入参数 typedef struct tagNET_IN_DELETE_WORKSUIT_BY_SOURCEUID { DWORD dwSize; // 结构体大小 UINT nSourceUIDNum; // 全景图唯一标识符个数 char szSourceUID[64][64]; // 全景图唯一标识符,由平台生成 char szGroupID[64]; // 工装合规组ID } NET_IN_DELETE_WORKSUIT_BY_SOURCEUID; ///@brief 通过全景图唯一标识符删除工装合规样本错误码信息 typedef enum tagEM_DELETE_BY_SOURCEUID_ERRCODE { EM_DELETE_BY_SOURCEUID_ERRCODE_UNKNWON = -1, // 未知 EM_DELETE_BY_SOURCEUID_ERRCODE_SUCCESS, // 成功 EM_DELETE_BY_SOURCEUID_ERRCODE_NOT_EXIST, // 工装不存在 EM_DELETE_BY_SOURCEUID_ERRCODE_DB_ERROR, // 数据库操作失败 } EM_DELETE_BY_SOURCEUID_ERRCODE; ///@brief CLIENT_DeleteWorkSuitBySourceUID 接口输出参数 typedef struct tagNET_OUT_DELETE_WORKSUIT_BY_SOURCEUID { DWORD dwSize; // 结构体大小 UINT nErrCodeNum; // 错误码个数 EM_DELETE_BY_SOURCEUID_ERRCODE emErrCode[64]; // 错误码信息 } NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID; ///@brief 创建工装合规组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CreateWorkSuitCompareGroup(LLONG lLoginID, const NET_IN_CREATE_WORKSUIT_COMPARE_GROUP *pInParam, NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP *pOutParam, int nWaitTime); ///@brief 删除工装合规组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteWorkSuitCompareGroup(LLONG lLoginID, const NET_IN_DELETE_WORKSUIT_COMPARE_GROUP *pInParam, NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP *pOutParam, int nWaitTime); ///@brief 查找工装合规组信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindWorkSuitCompareGroup(LLONG lLoginID, const NET_IN_FIND_WORKSUIT_COMPARE_GROUP *pInParam, NET_OUT_FIND_WORKSUIT_COMPARE_GROUP *pOutParam, int nWaitTime); ///@brief 修改工装合规组信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyWorkSuitCompareGroup(LLONG lLoginID, const NET_IN_MODIFY_WORKSUIT_COMPARE_GROUP *pInParam, NET_OUT_MODIFY_WORKSUIT_COMPARE_GROUP *pOutParam, int nWaitTime); ///@brief 在视频通道上布控工装合规库 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetWorkSuitCompareGroupToChannel(LLONG lLoginID, const NET_IN_SET_WORKSUIT_COMPARE_GROUP *pInParam, NET_OUT_SET_WORKSUIT_COMPARE_GROUP *pOutParam, int nWaitTime); ///@brief 获取工装合规库导入令牌 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetWorkSuitCompareGroupAppendToken(LLONG lLoginID, const NET_IN_GET_WORKSUIT_GROUP_APPEND_TOKEN *pInParam, NET_OUT_GET_WORKSUIT_GROUP_APPEND_TOKEN *pOutParam, int nWaitTime); ///@brief 批量添加工装合规样本 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiAppendToWorkSuitCompareGroup(LLONG lLoginID, const NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP *pInParam, NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP *pOutParam, int nWaitTime); ///@brief 通过全景图唯一标识符删除工装合规样本 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteWorkSuitBySourceUID(LLONG lLoginID, const NET_IN_DELETE_WORKSUIT_BY_SOURCEUID *pInParam, NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID *pOutParam, int nWaitTime); /***************************工装合规接口End***************************************************/ /***************************安检门接口Start***************************************************/ ///@brief CLIENT_GetPopulationStatistics 接口输入参数 typedef struct tagNET_IN_GET_POPULATION_STATISTICS { DWORD dwSize; // 结构体大小 } NET_IN_GET_POPULATION_STATISTICS; ///@brief CLIENT_GetPopulationStatistics 接口输出参数 typedef struct tagNET_OUT_GET_POPULATION_STATISTICS { DWORD dwSize; // 结构体大小 UINT nPassPopulation; // 正向通过人数 UINT nMetalAlarmPopulation; // 正向触发金属报警人数 UINT nReversePassPopulation; // 反向通过人数 UINT nReverseMetalAlarmPopulation; // 反向触发金属报警人数 TP_U64 nTempNormalPopulation; // 体温正常人数 TP_U64 nTempAlarmPopulation; // 体温异常人数 } NET_OUT_GET_POPULATION_STATISTICS; ///@brief 获取安检门人数统计信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPopulationStatistics(LLONG lLoginID, const NET_IN_GET_POPULATION_STATISTICS *pInParam, NET_OUT_GET_POPULATION_STATISTICS *pOutParam, int nWaitTime); ///@brief 人数变化信息 typedef struct tagNET_POPULATION_STATISTICS_INFO { DWORD dwSize; // 结构体大小 UINT nPassPopulation; // 正向通过人数 UINT nMetalAlarmPopulation; // 正向触发金属报警人数 UINT nReversePassPopulation; // 反向通过人数 UINT nReverseMetalAlarmPopulation; // 反向触发金属报警人数 TP_U64 nTempNormalPopulation; // 体温正常人数 TP_U64 nTempAlarmPopulation; // 体温异常人数 } NET_POPULATION_STATISTICS_INFO; ///@brief 接口 CLIENT_AttachPopulationStatistics 回调函数 // pstuPopulationStatisticsInfos 人数变化信息 typedef int (CALLBACK *fNotifyPopulationStatisticsInfo)(LLONG lPopulationStatisticsHandle, NET_POPULATION_STATISTICS_INFO* pstuPopulationStatisticsInfos, LDWORD dwUser); ///@brief 接口 CLIENT_AttachPopulationStatistics 的输入参数 typedef struct tagNET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyPopulationStatisticsInfo cbNotifyPopulationStatisticsInfo; // 回调函数,有人数变化信息时,回调给上层 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO; ///@brief 接口 CLIENT_AttachPopulationStatistics 的输出参数 typedef struct tagNET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO; ///@brief 订阅安检门人数变化信息,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPopulationStatistics(LLONG lLoginID, NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO* pstInParam, NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门人数变化信息 lPopulationStatisticsHandle 为 CLIENT_AttachPopulationStatistics 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPopulationStatistics(LLONG lPopulationStatisticsHandle); ///@brief 接口 CLIENT_StartPopulationOverrunAlarm 的输入参数 typedef struct tagNET_IN_START_POPULATION_OVERRUN_ALARM { DWORD dwSize; // 此结构体大小,必须赋值 UINT nMaxPopulation; // 人数上限值 } NET_IN_START_POPULATION_OVERRUN_ALARM; ///@brief 接口 CLIENT_StartPopulationOverrunAlarm 的输出参数 typedef struct tagNET_OUT_START_POPULATION_OVERRUN_ALARM { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_START_POPULATION_OVERRUN_ALARM; ///@brief 安检门超过人数上限报警 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartPopulationOverrunAlarm(LLONG lLoginID, NET_IN_START_POPULATION_OVERRUN_ALARM* pstInParam, NET_OUT_START_POPULATION_OVERRUN_ALARM* pstOutParam , int nWaitTime); ///@brief 接口 CLIENT_GetXRayMultiLevelDetectCFG 的输入参数 typedef struct tagNET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO; ///@brief X光机物品检测配置等级 typedef enum tagEM_XRAY_OBJECT_DETECT_CONFIG_LEVEL { EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_UNKNWON = -1, // 未知 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_HIGH, // 高 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_MID, // 中 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_NORMAL, // 普通 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM1, // 自定义1 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM2, // 自定义2 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM3, // 自定义3 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM4, // 自定义4 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM5, // 自定义5 } EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL; ///@brief 分组物品颜色 typedef enum tagEM_GROUP_COLOR_TYPE { EM_GROUP_COLOR_TYPE_UNKNOWN = -1, // 未知 EM_GROUP_COLOR_TYPE_JUJUBE_RED, // 枣红色,rgb(195,33,54) EM_GROUP_COLOR_TYPE_PURPLE, // 紫色,rgb(255,0,255) EM_GROUP_COLOR_TYPE_GRAY, // 灰色,rgb(192,192,192) EM_GROUP_COLOR_TYPE_HIGHLIGHT_YELLOW, // 高亮黄色,rgb(255,255, 0) EM_GROUP_COLOR_TYPE_CYAN, // 青色 EM_GROUP_COLOR_TYPE_PINK, // 粉色 EM_GROUP_COLOR_TYPE_BLACK, // 黑色 EM_GROUP_COLOR_TYPE_BROWN, // 棕色 } EM_GROUP_COLOR_TYPE; ///@brief 联动语音配置 typedef struct tagNET_EVENT_HANDLER_VOICE { char szAudioFileName[256]; // 联动语音文件绝对路径,为空播放系统默认报警联动音 char szReserved[256]; // 预留 }NET_EVENT_HANDLER_VOICE; ///@brief 分组事件联动 typedef struct tagNET_XRAY_OBJECT_GROUP_EVENT_HANDLER { int nAlarmOutChannels[64]; // 报警输出通道号列表 一维数组,每个成员表示对应的通道需要执行报警输出,通道号从0开始。 int nAlarmOutChannelsNum; // 报警输出通道号个数 BOOL bAlarmOutEnable; // 报警输出使能 int nAlarmOutLatch; // 报警输入停止后,输出延时时间(秒) 范围[1,300] BOOL bMessageEnable; // 是否上传到报警中心服务器 报警中心不需要登陆设备,由设备直接推送给报警中心的业务 BOOL bVoiceEnable; // 语音提示 NET_EVENT_HANDLER_VOICE stuVoice; // 语音提示联动 BOOL bMoveStop; // 传送带是否停止(X光机需求) BOOL bBeepEnable; // 蜂鸣 char szReserved[256]; // 预留 }NET_XRAY_OBJECT_GROUP_EVENT_HANDLER; ///@brief X光机物品分组 typedef struct tagNET_XRAY_OBJECT_GROUP { EM_INSIDE_OBJECT_TYPE emGroupType; // 分组类型 BOOL bGroupEnable; // 分组检测使能 EM_GROUP_GRADE_TYPE emGroupGrade; // 分组安全等级 EM_GROUP_COLOR_TYPE emGroupColor; // 分组物品颜色 NET_XRAY_OBJECT_GROUP_EVENT_HANDLER stuGroupEventHandler; // 分组事件联动 NET_XRAY_OBJECT_INFO stuObjects[64]; // 物体 int nObjectsNum; // 物体个数 char szGrouptype[32]; // 自定义分组类型 char szReserved[224]; // 预留 }NET_XRAY_OBJECT_GROUP; ///@brief 等级配置 typedef struct tagNET_MULTI_LEVEL_INFO { EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL emLevel; // 配置等级 EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL emDefaultReferenceLevel; // 默认参考等级,该等级的默认配置与参考等级的默认配置一样 char szName[128]; // 等级名字 NET_XRAY_OBJECT_GROUP stuObjectGroups[64]; // 物品分组数组 int nObjectGroupsNum; // 物品分组数组个数 int nSlaveViewObjectGroupsNum; // 侧视角物品分组数组个数 NET_XRAY_OBJECT_GROUP stuSlaveViewObjectGroups[64]; // 侧视角物品分组数组 char szReserved[512]; // 预留 }NET_MULTI_LEVEL_INFO; ///@brief 安全等级信息 typedef struct tagNET_XRAY_MULTILEVEL_DETECT_CFG_INFO { EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL emCurrentLevel; // 当前配置等级 int nMultiLevelConfigMax; // 等级配置最大个数(用户配置) int nMultiLevelConfigCnt; // 等级配置个数(实际返回) NET_MULTI_LEVEL_INFO* pstuMultiLevelConfig; // 等级配置 此部分内存需要用户申请,申请大小为(nMultiLevelConfigMax*sizeof(NET_MULTI_LEVEL_INFO))。 char szReserved[1024]; // 预留 }NET_XRAY_MULTILEVEL_DETECT_CFG_INFO; ///@brief 接口 CLIENT_GetXRayMultiLevelDetectCFG 的输出参数 typedef struct tagNET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_XRAY_MULTILEVEL_DETECT_CFG_INFO stuInfo; // 安全等级信息 }NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO; ///@brief 获取安检机安全等级信息,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetXRayMultiLevelDetectCFG(LLONG lLoginID, NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO* pInParam, NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO* pOutParam , int nWaitTime); ///@brief 接口 CLIENT_SetXRayMultiLevelDetectCFG 的输入参数 typedef struct tagNET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_XRAY_MULTILEVEL_DETECT_CFG_INFO stuInfo; // 安全等级信息 }NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO; ///@brief 接口 CLIENT_SetXRayMultiLevelDetectCFG 的输出参数 typedef struct tagNET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO; ///@brief 设置安检机安全等级信息,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SetXRayMultiLevelDetectCFG(LLONG lLoginID, NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO* pInParam, NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO* pOutParam , int nWaitTime); ///@brief 按键消息 typedef struct tagNET_KEY_MESSAGE_INFO { int nClientType; // 客户端类型 0: 专用键盘, 1: 主屏, 2: 辅屏1, 3:平台 int nKey; // 键值 int nAction; // 按键动作 0: 按键弹起, 1: 按键按下 char byReserved[4]; // 仅用于字节对齐, 无意义 char szReserved[1024]; // 预留字段 }NET_KEY_MESSAGE_INFO; ///@brief CLIENT_SendXRayKeyManagerKey 的输入参数 typedef struct tagNET_IN_SEND_XRAY_KEY_MANAGER_KEY_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_KEY_MESSAGE_INFO stuKeyMessage; // 按键消息 }NET_IN_SEND_XRAY_KEY_MANAGER_KEY_INFO; ///@brief CLIENT_SendXRayKeyManagerKey 的输出参数 typedef struct tagNET_OUT_SEND_XRAY_KEY_MANAGER_KEY_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SEND_XRAY_KEY_MANAGER_KEY_INFO; ///@brief 发送按键消息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendXRayKeyManagerKey(LLONG lLoginID, const NET_IN_SEND_XRAY_KEY_MANAGER_KEY_INFO* pstuInParam, NET_OUT_SEND_XRAY_KEY_MANAGER_KEY_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetXRayKeyManagerAllKeyFuncState 的输入参数 typedef struct tagNET_IN_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nScreenID; // 屏幕id 1: 主屏, 2: 辅屏1 }NET_IN_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO; ///@brief 键值对应的功能的状态 typedef struct tagNET_KEY_FUNC_STATE_INFO { int nKey; // 键值 int nState; // 键值对应功能的状态 int nValue; // 键值对应功能的数值 char byReserved[4]; // 仅用于字节对齐, 无意义 char szReserved[256]; // 预留字段 }NET_KEY_FUNC_STATE_INFO; ///@brief CLIENT_GetXRayKeyManagerAllKeyFuncState 的输出参数 typedef struct tagNET_OUT_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nStatesNum; // 设备返回的键值对应的功能的状态的个数, 最大值为128 NET_KEY_FUNC_STATE_INFO stuStates[128]; // 键值对应的功能的状态, 数组最大长度为128 }NET_OUT_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO; ///@brief 获取键值对应功能的状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetXRayKeyManagerAllKeyFuncState(LLONG lLoginID, const NET_IN_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO* pstuInParam, NET_OUT_GET_XRAY_KEY_MANAGER_KEY_FUNC_STATE_INFO* pstuOutParam, int nWaitTime); ///@brief 回调的键值对应功能的状态信息 typedef struct tagNET_KEY_FUNC_STATE_NOTIFY_INFO { NET_KEY_FUNC_STATE_INFO stuStates[128]; // 键值对应的功能的状态, 数组最大长度为128 int nStatesNum; // 设备返回的键值对应的功能的状态的个数, 最大值为128 char byReserved[4]; // 仅用于字节对齐, 无意义 char szResvered[1024]; // 保留字节 }NET_KEY_FUNC_STATE_NOTIFY_INFO; ///@brief 订阅键值对应功能的状态信息回调函数原型, lAttachHandle为CLIENT_AttachKeyFuncState接口的返回值 ///@param[out] lAttachHandle 订阅句柄 ///@param[out] pstuKeyFuncStateInfo 订阅键值对应功能的状态回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyKeyFuncState)(LLONG lAttachHandle, NET_KEY_FUNC_STATE_NOTIFY_INFO* pstuKeyFuncStateInfo, LDWORD dwUser); ///@brief CLIENT_AttachKeyFuncState 的输入参数 typedef struct tagNET_IN_ATTACH_KEY_FUNC_STATE { DWORD dwSize; // 此结构体大小,必须赋值 int nScreenID; // 屏幕id 1: 主屏, 2: 辅屏1 fNotifyKeyFuncState cbNotify; // 回调函数,通知键值对应功能的状态 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_KEY_FUNC_STATE; ///@brief CLIENT_AttachKeyFuncState 的输出参数 typedef struct tagNET_OUT_ATTACH_KEY_FUNC_STATE { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_KEY_FUNC_STATE; ///@brief 订阅键值对应功能的状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachKeyFuncState(LLONG lLoginID, NET_IN_ATTACH_KEY_FUNC_STATE* pstuInParam, NET_OUT_ATTACH_KEY_FUNC_STATE* pstuOutParam , int nWaitTime); ///@brief 取消订阅键值对应功能的状态 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachKeyFuncState(LLONG lAttachHandle); ///@brief 尾箱存取结果 typedef struct tagNET_TRUNK_ACCESS_INFO { int nType; // 操作类型, 0-存箱, 1-取箱 int nCabinIndex; // 舱位号 char szAccessorID[64]; // 存取人ID char szAccessorName[64]; // 存取人名称 char szReviewerID[64]; // 复核人ID char szReviewerName[64]; // 复核人名称 char szApproverID[64]; // 远程审批人ID char szApproverName[64]; // 远程审批人名称 int nResult; // 存取结果, 0-存取过程已完成, 1-存取过程未完成确认, 2-审批超时, 3-审批拒绝 char byResvered[4]; // 仅用于字节, 无意义 char szTime[32]; // 记录时间, 格式为:"YYYY-MM-DD hh:mm:ss" char szAccessorSnap[128]; // 存取人认证通过抓图存储路径,可用于图片下载 char szReviewerSnap[128]; // 复核人认证通过抓图存储路径,可用于图片下载 char szConfirmSnap[128]; // 存取后信息确认时抓图存储路径,可用于图片下载 char szRFIDNo[128]; // 存取的尾箱RFID编号 char szResvered[1024]; // 保留字节 }NET_TRUNK_ACCESS_INFO; ///@brief 回调的尾箱存取结果 typedef struct tagNET_TRUNK_ACCESS_MANAGER_NOTIFY_INFO { NET_TRUNK_ACCESS_INFO stuTrunkAccessInfo; // 尾箱存取结果 char szResvered[1024]; // 保留字节 }NET_TRUNK_ACCESS_MANAGER_NOTIFY_INFO; ///@brief 订阅尾箱存取结果信息回调函数原型, lAttachHandle为CLIENT_AttachTrunkAccessManager接口的返回值 ///@param[out] lAttachHandle 订阅句柄 ///@param[out] pstuTrunkAccessManagerInfo 订阅尾箱存取结果的回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyTrunkAccessManager)(LLONG lAttachHandle, NET_TRUNK_ACCESS_MANAGER_NOTIFY_INFO* pstuTrunkAccessManagerInfo, LDWORD dwUser); ///@brief CLIENT_AttachTrunkAccessManager 的输入参数 typedef struct tagNET_IN_ATTACH_TRUNK_ACCESS_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyTrunkAccessManager cbNotify; // 回调函数,通知尾箱存取结果信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_TRUNK_ACCESS_MANAGER; ///@brief CLIENT_AttachTrunkAccessManager 的输出参数 typedef struct tagNET_OUT_ATTACH_TRUNK_ACCESS_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_TRUNK_ACCESS_MANAGER; ///@brief 订阅尾箱存取结果 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachTrunkAccessManager(LLONG lLoginID, NET_IN_ATTACH_TRUNK_ACCESS_MANAGER* pstuInParam, NET_OUT_ATTACH_TRUNK_ACCESS_MANAGER* pstuOutParam , int nWaitTime); ///@brief 撤销尾箱存取记录结果订阅 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachTrunkAccessManager(LLONG lAttachHandle); ///@brief CLIENT_ReplyRemoteApproval 的输入参数 typedef struct tagNET_IN_REPLY_REMOTE_APPROVAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nApprovalNo; // 审批单号 BOOL bApprovalResult; // 审批结果, TRUE-审批通过, FALSE-审批不通过 char szApproverID[64]; // 审批者ID char szApproverName[64]; // 审批者名称 }NET_IN_REPLY_REMOTE_APPROVAL_INFO; ///@brief CLIENT_ReplyRemoteApproval 的输出参数 typedef struct tagNET_OUT_REPLY_REMOTE_APPROVAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_REPLY_REMOTE_APPROVAL_INFO; ///@brief 回复远程审批结果 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ReplyRemoteApproval(LLONG lLoginID, const NET_IN_REPLY_REMOTE_APPROVAL_INFO* pstuInParam, NET_OUT_REPLY_REMOTE_APPROVAL_INFO* pstuOutParam, int nWaitTime); ///@brief 锁状态 typedef enum tagEM_VAULT_LOCKSTATE { EM_VAULT_LOCKSTATE_UNKNOWN, // 未知 EM_VAULT_LOCKSTATE_ISCLOSED, // 关锁 EM_VAULT_LOCKSTATE_ISOPENED, // 开锁 }EM_VAULT_LOCKSTATE; ///@brief 门状态 typedef enum tagEM_VAULT_DOORSTATE { EM_VAULT_DOORSTATE_UNKNOWN, // 未知 EM_VAULT_DOORSTATE_ISCLOSED, // 关门 EM_VAULT_DOORSTATE_ISOPENED, // 开门 }EM_VAULT_DOORSTATE; ///@brief CLIENT_GetVaultDoorState 的输入参数 typedef struct tagNET_IN_GET_VAULTDOOR_STATE_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_VAULTDOOR_STATE_INFO; ///@brief CLIENT_GetVaultDoorState 的输出参数 typedef struct tagNET_OUT_GET_VAULTDOOR_STATE_INFO { DWORD dwSize; // 结构体大小 EM_VAULT_LOCKSTATE emLockState; // 锁状态 EM_VAULT_DOORSTATE emDoorState; // 门状态 }NET_OUT_GET_VAULTDOOR_STATE_INFO; ///@brief 获取金库门状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVaultDoorState(LLONG lLoginID, const NET_IN_GET_VAULTDOOR_STATE_INFO* pstuInParam, NET_OUT_GET_VAULTDOOR_STATE_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetFinancialCabinetState 的输入参数 typedef struct tagNET_IN_GET_CABINET_STATE_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_CABINET_STATE_INFO; ///@brief CLIENT_GetFinancialCabinetState 的输出参数 typedef struct tagNET_OUT_GET_CABINET_STATE_INFO { DWORD dwSize; // 结构体大小 float fTemperature; // 柜体温度,单位摄氏度 float fHumidity; // 柜体湿度,单位百分比 }NET_OUT_GET_CABINET_STATE_INFO; ///@brief 获取金融柜体设备状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFinancialCabinetState(LLONG lLoginID, const NET_IN_GET_CABINET_STATE_INFO* pstuInParam, NET_OUT_GET_CABINET_STATE_INFO* pstuOutParam, int nWaitTime); ///@brief 在岗状态 typedef enum tagEM_SECURITY_INSPECTOR_STATE { EM_SECURITY_INSPECTOR_STATE_UNKNWON = -1, // 未知 EM_SECURITY_INSPECTOR_STATE_LEAVE_JOB, // 离岗 EM_SECURITY_INSPECTOR_STATE_ON_JOB, // 在岗 EM_SECURITY_INSPECTOR_STATE_PASS_WITHOUT_PACKAGE, // 无包裹通过 } EM_SECURITY_INSPECTOR_STATE; ///@brief 检查结果 typedef struct tagNET_SECURITY_INSPECTOR_CHECK_RESULT { DWORD dwSize; // 结构体大小 char szUser[128]; // 用户名 EM_SECURITY_INSPECTOR_STATE emState; // 在岗状态 UINT nUTC; // 对应的UTC UINT nCheckID; // 在岗检查ID } NET_SECURITY_INSPECTOR_CHECK_RESULT; ///@brief 接口 CLIENT_AttachSecurityInspectorCheckResult 回调函数 typedef int (CALLBACK *fNotifySecurityInspectorCheckResult)(LLONG lCheckResultHandle, NET_SECURITY_INSPECTOR_CHECK_RESULT* pstuSecurityInspectorCheckResult, LDWORD dwUser); ///@brief 接口 CLIENT_AttachSecurityInspectorCheckResult 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityInspectorCheckResult cbNotifySecurityInspectorCheckResult; // 回调函数,通知安检员在岗检查结果 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT; ///@brief 接口 CLIENT_AttachSecurityInspectorCheckResult 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT; ///@brief 订阅安检员在岗检查结果,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityInspectorCheckResult(LLONG lLoginID, NET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT* pstInParam, NET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_RESULT* pstOutParam , int nWaitTime); ///@brief 取消订阅安检员在岗检查结果 lCheckResultHandle 为 CLIENT_AttachSecurityInspectorCheckResult 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityInspectorCheckResult(LLONG lCheckResultHandle); ///@brief 接口 CLIENT_ResetPopulationStatistics 的输入参数 typedef struct tagNET_IN_RESET_POPULATION_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_RESET_POPULATION_STATISTICS; ///@brief 接口 CLIENT_ResetPopulationStatistics 的输出参数 typedef struct tagNET_OUT_RESET_POPULATION_STATISTICS { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_RESET_POPULATION_STATISTICS; ///@brief 重置安检门人数统计信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ResetPopulationStatistics(LLONG lLoginID, const NET_IN_RESET_POPULATION_STATISTICS *pInParam, NET_OUT_RESET_POPULATION_STATISTICS *pOutParam, int nWaitTime); /************************************************** 安检门声光报警配置 Start******************************************************/ ///@brief 门体分区 typedef enum tagEM_DOOR_REGION { EM_DOOR_REGION_UNKNOWN = -1, // 未知 EM_DOOR_REGION_SIX, // 6分区 EM_DOOR_REGION_TWELVE, // 12分区 EM_DOOR_REGION_EIGHTEEN, // 18分区 EM_DOOR_REGION_TEN, // 10分区 EM_DOOR_REGION_THIRTYTHREE, // 33分区 EM_DOOR_REGION_ONE, // 1分区 EM_DOOR_REGION_TWO, // 2分区 EM_DOOR_REGION_THREE, // 3分区 EM_DOOR_REGION_FOUR, // 4分区 EM_DOOR_REGION_EIGHT, // 8分区 EM_DOOR_REGION_NINE, // 9分区 EM_DOOR_REGION_SIXTEEN, // 16分区 EM_DOOR_REGION_TWENTY, // 20分区 EM_DOOR_REGION_TWENTYFOUR, // 24分区 EM_DOOR_REGION_THIRTYSIX, // 36分区 EM_DOOR_REGION_FORTY, // 40分区 EM_DOOR_REGION_FORTYFIVE, // 45分区 EM_DOOR_REGION_FORTYEIGHT, // 48分区 EM_DOOR_REGION_SIXTY, // 60分区 }EM_DOOR_REGION; ///@brief 铃声模式 typedef enum tagEM_SECURITY_GATE_BELL_MODE { EM_SECURITY_GATE_BELL_MODE_UNKNOWN = -1, // 未知 EM_SECURITY_GATE_BELL_MODE_BY_FREQUENCY, // 表示“按频率”,根据开机后系统自动设置的频率设置铃声 EM_SECURITY_GATE_BELL_MODE_BY_SAVEVAULE, // 表示“按保存值”,根据“报警设置”菜单里的“铃声选择”设置铃声,与频率无关 }EM_SECURITY_GATE_BELL_MODE; ///@brief 铃声类型 typedef enum tagEM_SECURITY_GATE_BELL_TYPE { EM_SECURITY_GATE_BELL_TYPE_UNKNOWN, // 未知 EM_SECURITY_GATE_BELL_TYPE_RINGING1, // 铃声1 EM_SECURITY_GATE_BELL_TYPE_RINGING2, // 铃声2 EM_SECURITY_GATE_BELL_TYPE_RINGING3, // 铃声3 EM_SECURITY_GATE_BELL_TYPE_RINGING4, // 铃声4 EM_SECURITY_GATE_BELL_TYPE_RINGING5, // 铃声5 EM_SECURITY_GATE_BELL_TYPE_RINGING6, // 铃声6 EM_SECURITY_GATE_BELL_TYPE_RINGING7, // 铃声7 EM_SECURITY_GATE_BELL_TYPE_RINGING8, // 铃声8 EM_SECURITY_GATE_BELL_TYPE_RINGING9, // 铃声9 }EM_SECURITY_GATE_BELL_TYPE; ///@brief 报警区位 typedef enum tagEM_SECURITY_GATE_ALARM_REGION { EM_SECURITY_GATE_ALARM_REGION_UNKNOWN = -1, // 未知 EM_SECURITY_GATE_ALARM_REGION_INTERVAL, // 间隔报警 EM_SECURITY_GATE_ALARM_REGION_CONTINUOUS, // 连续报警 EM_SECURITY_GATE_ALARM_REGION_SINGLE_ZONE, // 单区报警 }EM_SECURITY_GATE_ALARM_REGION; ///@brief 安检门声光报警配置信息 typedef struct tagNET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM { DWORD dwSize; // 结构体大小 EM_DOOR_REGION emDoorRegion; // 门体分区 UINT nAlarmTime; // 报警时长 EM_SECURITY_GATE_BELL_MODE emBellMode; // 铃声模式 EM_SECURITY_GATE_BELL_TYPE emBellType; // 铃声类型 UINT nSetVolume; // 音量设置 EM_SECURITY_GATE_ALARM_REGION emAlarmRegion; // 报警区位 char byReserved[236]; // 预留字节 }NET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM; ///@brief CLIENT_AttachSecurityGateAcoustoOpticAlarm回调 typedef void (CALLBACK *fNotifySecurityGateAcoustoOpticAlarm)(LLONG lSecurityGateAcoustoOpticAlarmHandle, NET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM* pstuSecurityGateAcoustoOpticAlarm, LDWORD dwUser); ///@brief 接口 CLIENT_AttachSecurityGateAcoustoOpticAlarm 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityGateAcoustoOpticAlarm cbNotifySecurityGateAcoustoOpticAlarm; // 回调函数,通知安检门声光报警配置信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM; ///@brief 接口 CLIENT_AttachSecurityGateAcoustoOpticAlarm 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM { DWORD dwSize; //此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM; ///@brief 订阅安检门声光报警配置信息, CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateAcoustoOpticAlarm(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_ACOUSTO_OPTIC_ALARM* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门声光报警配置信息, lSecurityGateAcoustoOpticAlarmHandle为 CLIENT_AttachSecurityGateAcoustoOpticAlarm 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateAcoustoOpticAlarm(LLONG lSecurityGateAcoustoOpticAlarmHandle); ///@brief 接口 CLIENT_GetSecurityGateAcoustoOpticAlarmConfig 的输入参数 typedef struct tagNET_IN_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO; ///@brief 接口 CLIENT_GetSecurityGateAcoustoOpticAlarmConfig 的输出参数 typedef struct tagNET_OUT_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_DOOR_REGION emDoorRegion; // 门体分区 UINT nAlarmTime; // 报警时长 EM_SECURITY_GATE_BELL_MODE emBellMode; // 铃声模式 EM_SECURITY_GATE_BELL_TYPE emBellType; // 铃声类型 UINT nSetVolume; // 音量设置 EM_SECURITY_GATE_ALARM_REGION emAlarmRegion; // 报警区位 }NET_OUT_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO; ///@brief 接口 CLIENT_SetSecurityGateAcoustoOpticAlarmConfig 的输入参数 typedef struct tagNET_IN_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO { DWORD dwSize; // 结构体大小 EM_DOOR_REGION emDoorRegion; // 门体分区 UINT nAlarmTime; // 报警时长 EM_SECURITY_GATE_BELL_MODE emBellMode; // 铃声模式 EM_SECURITY_GATE_BELL_TYPE emBellType; // 铃声类型 UINT nSetVolume; // 音量设置 EM_SECURITY_GATE_ALARM_REGION emAlarmRegion; // 报警区位 }NET_IN_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO; ///@brief 接口 CLIENT_SetSecurityGateAcoustoOpticAlarmConfig 的输出参数 typedef struct tagNET_OUT_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO; ///@brief 接口 CLIENT_SecurityGateAcoustoOpticAlarmGetCaps 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO { DWORD dwSize; // 结构体大小 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO; ///@brief 接口 CLIENT_SecurityGateAcoustoOpticAlarmGetCaps 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO { DWORD dwSize; // 结构体大小 UINT nVolumeMin; // 最小音量数值 UINT nVolumeMax; // 最大音量数值 UINT nAlarmTimeMax; // 最大持续报警时间,单位:毫秒 BOOL bSupportBellMode; // 是否支持铃声模式设置 BOOL bSupportAuditionBell; // 是否支持试听铃声 }NET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO; ///@brief 接口 CLIENT_SecurityGateAcoustoOpticAlarmAuditionBell 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO { DWORD dwSize; // 结构体大小 EM_SECURITY_GATE_BELL_MODE emBellMode; // 铃声模式 EM_SECURITY_GATE_BELL_TYPE emBellType; // 铃声类型 UINT nVolume; // 音量大小 }NET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO; ///@brief 接口 CLIENT_SecurityGateAcoustoOpticAlarmAuditionBell 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO; ///@brief 获取安检门声光报警配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSecurityGateAcoustoOpticAlarmConfig(LLONG lLoginID, NET_IN_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO* pstInParam, NET_OUT_GET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO* pstOutParam , int nWaitTime); ///@brief 设置安检门声光报警配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetSecurityGateAcoustoOpticAlarmConfig(LLONG lLoginID, NET_IN_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO* pstInParam, NET_OUT_SET_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_INFO* pstOutParam , int nWaitTime); ///@brief 获取声光报警能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateAcoustoOpticAlarmGetCaps(LLONG lLoginID, NET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO* pstInParam, NET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_GET_CAPS_INFO* pstOutParam, int nWaitTime); ///@brief 试听铃声 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateAcoustoOpticAlarmAuditionBell(LLONG lLoginID, NET_IN_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO* pstInParam, NET_OUT_SECURITY_GATE_ACOUSTO_OPTIC_ALARM_AUDITION_BELL_INFO* pstOutParam, int nWaitTime); /************************************************** 安检门声光报警配置 End******************************************************/ /************************************************** 安检门灵敏度配置 Start******************************************************/ ///@brief 倍率 typedef enum tagEM_RATE_TYPE { EM_RATE_TYPE_UNKNOWN = -1, // 未知 EM_RATE_TYPE_NOT_CHANGE, // 灵敏度保持不变 EM_RATE_TYPE_FIFTY_TIMES_LOWER, // 灵敏度降低50倍 }EM_RATE_TYPE; ///@brief 排除小金属区位 typedef enum tagEM_EXCLUDE_SMALL_METAL { EM_EXCLUDE_SMALL_METAL_UNKNOWN = -1, // 未知 EM_EXCLUDE_SMALL_METAL_DISABLE, // 禁用排除小金属功能 EM_EXCLUDE_SMALL_METAL_SPECIFIC_LOCATION, // 特定区位 EM_EXCLUDE_SMALL_METAL_ALL_LOCATION, // 全部区位 }EM_EXCLUDE_SMALL_METAL; ///@brief 应用场景类型 typedef enum tagEM_SCENCE_TYPE { EM_SCENCE_TYPE_UNKNOWN = -1, // 未知 EM_SCENCE_TYPE_CUSTOM, // 0:自定义 EM_SCENCE_TYPE_ELECTRONICS_FACTORY, // 1:电子厂 EM_SCENCE_TYPE_HARDWARE_FACTORY, // 2:五金厂 EM_SCENCE_TYPE_COURT_SYSTEM, // 3:法院系统 EM_SCENCE_TYPE_AIRPORT_SECURITY_CHECK, // 4:机场安检 EM_SCENCE_TYPE_STADIUM, // 5:体育场所 EM_SCENCE_TYPE_ENTERTAINMENT_VENUES, // 6:娱乐场所 EM_SCENCE_TYPE_PS_SYSTEM, EM_SCENCE_TYPE_STATION_SECURITY_CHECK, // 8:车站安检 EM_SCENCE_TYPE_EXHIBITION_SECURITY_CHECK, // 9:展馆安检 EM_SCENCE_TYPE_SCHOOL_SYSTEM, // 10:学校系统 EM_SCENCE_TYPE_GOVERNMENT_SYSTEM, // 11:政府系统 EM_SCENCE_TYPE_BUILDINGS, // 12:建筑物 EM_SCENCE_TYPE_HIGH, // 13:高 EM_SCENCE_TYPE_MEDIUM, // 14:中 EM_SCENCE_TYPE_LOW, // 15:低 EM_SCENCE_TYPE_SPECIAL_EVENT, // 16:特殊事件 EM_SCENCE_TYPE_ARENA, // 17:竞技场 EM_SCENCE_TYPE_PS_MODE, // 18:犯人模式 EM_SCENCE_TYPE_INSPECTOR_MODE, // 19:探监者模式 EM_SCENCE_TYPE_VISITOR_MODE, // 20:来访者模式 EM_SCENCE_TYPE_LARGE_FLOW, // 21:大流量 EM_SCENCE_TYPE_ANTI_INTERFERENCE, // 22:抗干扰 EM_SCENCE_TYPE_NILECJ_L1, // 23:NILECJ L1 EM_SCENCE_TYPE_NILECJ_L1A, // 24:NILECJ L1A EM_SCENCE_TYPE_NILECJ_L2, // 25:NILECJ L2 EM_SCENCE_TYPE_NILECJ_L2A, // 26:NILECJ L2A EM_SCENCE_TYPE_NILECJ_L3, // 27:NILECJ L3 EM_SCENCE_TYPE_NILECJ_L3A, // 28:NILECJ L3A EM_SCENCE_TYPE_NILECJ_L4, // 29:NILECJ L4 EM_SCENCE_TYPE_NILECJ_L5, // 30:NILECJ L5 EM_SCENCE_TYPE_NIJ_LO, // 31:NIJ LO EM_SCENCE_TYPE_NIJ_MO, // 32:NIJ MO EM_SCENCE_TYPE_GB_L3, // 33:GB L3 EM_SCENCE_TYPE_GB_L2, // 34:GB L2 EM_SCENCE_TYPE_GB_L1, // 35:GB L1 EM_SCENCE_TYPE_ALL_METAL, // 36:全金属 EM_SCENCE_TYPE_ALL_METAL_HIGH, // 37:全金属高灵敏 EM_SCENCE_TYPE_ALL_METAL_LOW, // 38:全金属低灵敏 EM_SCENCE_TYPE_MAGNETIC_METAL, // 39:磁性金属 EM_SCENCE_TYPE_MAGNETIC_METAL_HIGH, // 40:磁性高灵敏 EM_SCENCE_TYPE_MAGNETIC_METAL_LOW, // 41:磁性低灵敏 EM_SCENCE_TYPE_NOT_MAGNETIC_METAL, // 42:非磁性金属 EM_SCENCE_TYPE_NOT_MAGNETIC_METAL_HIGH, // 43:非磁性高灵敏 EM_SCENCE_TYPE_NOT_MAGNETIC_METAL_LOW, // 44:非磁性低灵敏 EM_SCENCE_TYPE_RESTAURANT, // 45:餐厅 EM_SCENCE_TYPE_HOTEL, // 46:酒店 EM_SCENCE_TYPE_HOSPITAL, // 47:医院 EM_SCENCE_TYPE_BAR, // 48:酒吧 EM_SCENCE_TYPE_CONCERT_HALL, // 49:音乐厅 EM_SCENCE_TYPE_LOGISTICS, // 50:物流 EM_SCENCE_TYPE_EXPRESS, // 51:快递 EM_SCENCE_TYPE_AIRPORT1, // 52:机场1 EM_SCENCE_TYPE_AIRPORT2, // 53:机场2 EM_SCENCE_TYPE_AIRPORT3, // 54:机场3 EM_SCENCE_TYPE_AIRPORT4, // 55:机场4 EM_SCENCE_TYPE_AIRPORT5, // 56:机场5 EM_SCENCE_TYPE_TRAIN_STATION, // 57:火车站 EM_SCENCE_TYPE_BUS_STATION, // 58:汽车站 EM_SCENCE_TYPE_METRO_STATION, // 59:地铁站 EM_SCENCE_TYPE_MUSEUM, // 60:博物馆 EM_SCENCE_TYPE_KEY_FACILITIES, // 61:关键设施 EM_SCENCE_TYPE_BORDER, // 62 EM_SCENCE_TYPE_PROCURATORATE, // 63:检察院 EM_SCENCE_TYPE_PS, EM_SCENCE_TYPE_POST_OFFICE, // 65:邮局 EM_SCENCE_TYPE_WAREHOUSE, // 66:仓库 EM_SCENCE_TYPE_SENSITIVITY1, // 67:灵敏度1 EM_SCENCE_TYPE_SENSITIVITY2, // 68:灵敏度2 EM_SCENCE_TYPE_SENSITIVITY3, // 69:灵敏度3 EM_SCENCE_TYPE_SENSITIVITY4, // 70:灵敏度4 EM_SCENCE_TYPE_SENSITIVITY5, // 71:灵敏度5 EM_SCENCE_TYPE_SENSITIVITY6, // 72:灵敏度6 EM_SCENCE_TYPE_SENSITIVITY7, // 73:灵敏度7 EM_SCENCE_TYPE_SENSITIVITY8, // 74:灵敏度8 EM_SCENCE_TYPE_SENSITIVITY9, // 75:灵敏度9 EM_SCENCE_TYPE_SENSITIVITY10, // 76:灵敏度10 EM_SCENCE_TYPE_SENSITIVITY11, // 77:灵敏度11 EM_SCENCE_TYPE_SENSITIVITY12, // 78:灵敏度12 EM_SCENCE_TYPE_SENSITIVITY13, // 79:灵敏度13 EM_SCENCE_TYPE_SENSITIVITY14, // 80:灵敏度14 EM_SCENCE_TYPE_SENSITIVITY15, // 81:灵敏度15 EM_SCENCE_TYPE_SENSITIVITY16, // 82:灵敏度16 EM_SCENCE_TYPE_SENSITIVITY17, // 83:灵敏度17 EM_SCENCE_TYPE_SENSITIVITY18, // 84:灵敏度18 EM_SCENCE_TYPE_SENSITIVITY19, // 85:灵敏度19 EM_SCENCE_TYPE_SENSITIVITY20, // 86:灵敏度20 EM_SCENCE_TYPE_SENSITIVITY21, // 87:灵敏度21 EM_SCENCE_TYPE_SENSITIVITY22, // 88:灵敏度22 EM_SCENCE_TYPE_SENSITIVITY23, // 89:灵敏度23 EM_SCENCE_TYPE_SENSITIVITY24, // 90:灵敏度24 EM_SCENCE_TYPE_SENSITIVITY25, // 91:灵敏度25 EM_SCENCE_TYPE_CUSTOM1, // 92:自定义1 EM_SCENCE_TYPE_CUSTOM2, // 93:自定义2 EM_SCENCE_TYPE_CUSTOM3, // 94:自定义3 EM_SCENCE_TYPE_CUSTOM4, // 95:自定义4 EM_SCENCE_TYPE_CUSTOM5, // 96:自定义5 EM_SCENCE_TYPE_CUSTOM6, // 97:自定义6 EM_SCENCE_TYPE_CUSTOM7, // 98:自定义7 EM_SCENCE_TYPE_CUSTOM8, // 99:自定义8 EM_SCENCE_TYPE_CUSTOM9, // 100:自定义9 EM_SCENCE_TYPE_CUSTOM10, // 101:自定义10 }EM_SCENCE_TYPE; ///@brief 配置信息 typedef struct tagNET_SECURITY_GATE_SENVITITY_CONFIG_INFO { EM_SCENCE_TYPE emScence; // 应用场景 UINT nSecurityLevel; // 安全等级值 UINT nSensitivity[32]; // 各分区灵敏度值 // 6分区时:有效数据长度6个, 数组下标0~5表示1区~6区灵敏度 // 12分区或18分区 33分区时:有效数据长度12个,数组下标0~5表示左1~左6区灵敏度,数组下标6~11表示右1~右6区灵敏度 int nSensitivityNum; // 各分区有效的灵敏度值的个数 EM_RATE_TYPE emRateType; // 倍率 EM_EXCLUDE_SMALL_METAL emExcludeSmallMetal; // 排除小金属区位 char byReserved[256]; // 预留字节 }NET_SECURITY_GATE_SENVITITY_CONFIG_INFO; ///@brief 安检门灵敏度配置信息 typedef struct tagNET_SECURITY_GATE_SENVITITY_MANAGER { DWORD dwSize; // 结构体大小 NET_SECURITY_GATE_SENVITITY_CONFIG_INFO stuConfig; // 配置信息 }NET_SECURITY_GATE_SENVITITY_MANAGER; ///@brief 接口 CLIENT_AttachSecurityGateSenvitityManager回调 typedef void (CALLBACK *fNotifySecurityGateSenvitityManager)(LLONG lSecurityGateSenvitityManagerHandle, NET_SECURITY_GATE_SENVITITY_MANAGER* pstuSecurityGateSenvitityManager, LDWORD dwUser); ///@brief 接口 CLIENT_AttachSecurityGateSenvitityManager 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_SENVITITY_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityGateSenvitityManager cbNotifySecurityGateSenvitityManager; // 回调函数,通知安检门灵敏度配置信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_SENVITITY_MANAGER; ///@brief 接口 CLIENT_AttachSecurityGateSenvitityManager 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_SENVITITY_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_GATE_SENVITITY_MANAGER; ///@brief 订阅安检门灵敏度配置信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateSenvitityManager(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_SENVITITY_MANAGER* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_SENVITITY_MANAGER* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门灵敏度配置信息,lSecurityGateSenvitityManagerHandle 为 CLIENT_AttachSecurityGateSenvitityManager 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateSenvitityManager(LLONG lSecurityGateSenvitityManagerHandle); ///@brief 接口 CLIENT_GetSecurityGateSenvitityManagerConfig 的输入参数 typedef struct tagNET_IN_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO; ///@brief 接口 CLIENT_GetSecurityGateSenvitityManagerConfig 的输出参数 typedef struct tagNET_OUT_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_SECURITY_GATE_SENVITITY_CONFIG_INFO stuConfig; // 配置信息 }NET_OUT_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO; ///@brief 接口 CLIENT_SetSecurityGateSenvitityManagerConfig 的输入参数 typedef struct tagNET_IN_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO { DWORD dwSize; // 结构体大小 NET_SECURITY_GATE_SENVITITY_CONFIG_INFO stuConfig; // 配置信息 }NET_IN_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO; ///@brief 接口 CLIENT_SetSecurityGateSenvitityManagerConfig 的输出参数 typedef struct tagNET_OUT_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO; ///@brief 接口 CLIENT_SecurityGateSenvitityManagerGetSensitivityCaps 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO { DWORD dwSize; // 结构体大小 }NET_IN_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO; ///@brief 接口 CLIENT_SecurityGateSenvitityManagerGetSensitivityCaps 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO { DWORD dwSize; // 结构体大小 UINT nSensitivityMinValue; // 分区灵敏度最小值 UINT nSensitivityMaxValue; // 分区灵敏度最大值 BOOL bSupportRateType; // 是否支持倍率设置 BOOL bSupportRecurityLevel; // 是否支持安全等级设置 int nSensitivityModeNum; // 应用场景数组实际个数 UINT arrSensitivityMode[128]; // 应用场景数组 }NET_OUT_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO; ///@brief 获取安检门声光报警配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSecurityGateSenvitityManagerConfig(LLONG lLoginID, NET_IN_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO* pstInParam, NET_OUT_GET_SECURITY_GATE_SENVITITY_MANAGER_INFO* pstOutParam , int nWaitTime); ///@brief 设置安检门灵敏度配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSenvitityManagerSetConfig(LLONG lLoginID, NET_IN_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO* pstInParam, NET_OUT_SET_SECURITY_GATE_SENVITITY_MANAGER_INFO* pstOutParam , int nWaitTime); ///@brief 获取安检门灵敏度能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSenvitityManagerGetSensitivityCaps(LLONG lLoginID, NET_IN_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO* pstInParam, NET_OUT_SECURITY_GATE_GET_SENSITIVITY_CAPS_INFO* pstOutParam , int nWaitTime); /************************************************** 安检门灵敏度配置 End******************************************************/ /************************************************** 安检门基础配置 Start******************************************************/ ///@brief 探测物体类型 typedef enum tagEM_DETECT_TYPE { EM_DETECT_TYPE_UNKNOWN = -1, // 未知 EM_DETECT_TYPE_ALL_METALS, // 所有金属 EM_DETECT_TYPE_IRON, // 铁磁物 EM_DETECT_TYPE_NOT_IRON, // 非铁磁物 }EM_DETECT_TYPE; ///@brief 红外计数方式 typedef enum tagEM_COUNT_TYPE { EM_COUNT_TYPE_UNKNOWN = -1, // 未知 EM_COUNT_TYPE_SEPARATE_COUNTING, // 分开计数 EM_COUNT_TYPE_COUNTING1, // 前+后+ EM_COUNT_TYPE_COUNTING2, // 前+后- }EM_COUNT_TYPE; ///@brief 红外模式 typedef enum tagEM_INFRARED_MODE { EM_INFRARED_MODE_UNKNOWN = -1, // 未知 EM_INFRARED_MODE_ALL_CLOSE, // 全关 EM_INFRARED_MODE_FRONT_CLOSE, // 前关 EM_INFRARED_MODE_AFTER_CLOSE, // 后关 EM_INFRARED_MODE_ALL_OPEN, // 全开 }EM_INFRARED_MODE; ///@brief 数字滤波类型 typedef enum tagEM_DIGITAL_FILTER_TYPE { EM_DIGITAL_FILTER_TYPE_UNKNOWN = -1, // 未知 EM_DIGITAL_FILTER_TYPE_NO_FILTERING, // 不滤波 EM_DIGITAL_FILTER_TYPE_LOW_FILTERING, // 低通滤波 EM_DIGITAL_FILTER_TYPE_HIGH_FILTERING, // 高通滤波 EM_DIGITAL_FILTER_TYPE_BAND_FILTERING, // 带通滤波 }EM_DIGITAL_FILTER_TYPE; ///@brief 安检门基础配置信息 typedef struct tagNET_SECURITY_GATE_SYSTEM_MANAGER { DWORD dwSize; // 结构体大小 UINT nFrequency; // 当前频率 EM_DETECT_TYPE emDetectType; // 探测物体类型 EM_COUNT_TYPE emCountType; // 红外计数方式 UINT nInfraredTriggerEnable; // 红外触发报警使能,0 不使能,1 使能 UINT nAutoSetFreqEnable; // 开机自动设置频率,0 不使能,1 使能 EM_INFRARED_MODE emInfraredMode; // 红外模式 EM_DIGITAL_FILTER_TYPE emDigitalFilterType; // 数字滤波类型 }NET_SECURITY_GATE_SYSTEM_MANAGER; ///@brief 接口 CLIENT_AttachSecurityGateSystemManager回调 typedef void (CALLBACK *fNotifySecurityGateSystemManager)(LLONG lSecurityGateSystemManagerHandle, NET_SECURITY_GATE_SYSTEM_MANAGER* pstuSecurityGateSystemManager, LDWORD dwUser); ///@brief 接口 CLIENT_AttachSecurityGateSystemManager 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_SYSTEM_MANAGER { DWORD dwSize; // 结构体大小 fNotifySecurityGateSystemManager cbNotifySecurityGateSystemManager; // 回调函数,安检门基础配置信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_SYSTEM_MANAGER; ///@brief 接口 CLIENT_AttachSecurityGateSystemManager 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_SYSTEM_MANAGER { DWORD dwSize; // 结构体大小 }NET_OUT_ATTACH_SECURITY_GATE_SYSTEM_MANAGER; ///@brief 接口 CLIENT_GetSecurityGateSystemManagerConfig 的输入参数 typedef struct tagNET_IN_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO { DWORD dwSize; // 结构体大小 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO; ///@brief 接口 CLIENT_GetSecurityGateSystemManagerConfig 的输出参数 typedef struct tagNET_OUT_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO { DWORD dwSize; // 结构体大小 UINT nFrequency; // 当前频率 EM_DETECT_TYPE emDetectType; // 探测物体类型 EM_COUNT_TYPE emCountType; // 红外计数方式 UINT nInfraredTriggerEnable; // 红外触发报警使能,0 不使能,1 使能 UINT nAutoSetFreqEnable; // 开机自动设置频率,0 不使能,1 使能 EM_INFRARED_MODE emInfraredMode; // 红外模式 EM_DIGITAL_FILTER_TYPE emDigitalFilterType; // 数字滤波类型 }NET_OUT_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO; ///@brief 接口 CLIENT_SetSecurityGateSystemManagerConfig 的输入参数 typedef struct tagNET_IN_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO { DWORD dwSize; // 结构体大小 UINT nFrequency; // 当前频率 EM_DETECT_TYPE emDetectType; // 探测物体类型 EM_COUNT_TYPE emCountType; // 红外计数方式 UINT nInfraredTriggerEnable; // 红外触发报警使能,0 不使能,1 使能 UINT nAutoSetFreqEnable; // 开机自动设置频率,0 不使能,1 使能 EM_INFRARED_MODE emInfraredMode; // 红外模式 EM_DIGITAL_FILTER_TYPE emDigitalFilterType; // 数字滤波类型 }NET_IN_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO; ///@brief 接口 CLIENT_SetSecurityGateSystemManagerConfig 的输出参数 typedef struct tagNET_OUT_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO; ///@brief 接口 CLIENT_SecurityGateSystemManagerGetCaps 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO { DWORD dwSize; // 结构体大小 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO; ///@brief 接口 CLIENT_SecurityGateSystemManagerGetCaps 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO { DWORD dwSize; // 结构体大小 UINT nFrequencyMin; // 当前频率最小值 UINT nFrequencyMax; // 当前频率最大值 BOOL bSupportDetectType; // 是否支持探测物体设置 BOOL bSupportInfraredMode; // 是否支持红外模式设置 BOOL bSupportAutoSetFreqEnable; // 是否支持开机自动设置频率 BOOL bSupportAutoSearchFreq; // 是否支持自动搜索频率 BOOL bSupportDigitalFilterType; // 是否支持数字滤波类型设置 }NET_OUT_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO; ///@brief 接口 CLIENT_SecurityGateSystemManagerStartAutoSearchFreq 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO { DWORD dwSize; // 结构体大小 }NET_IN_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO; ///@brief 接口 CLIENT_SecurityGateSystemManagerStartAutoSearchFreq 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO { DWORD dwSize; // 结构体大小 UINT nFrequency; // 当前频率 }NET_OUT_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO; ///@brief 订阅安检门基础配置信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateSystemManager(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_SYSTEM_MANAGER* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_SYSTEM_MANAGER* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门基础配置信息,lSecurityGateSystemManagerHandle 为 CLIENT_AttachSecurityGateSystemManager 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateSystemManager(LLONG lSecurityGateSystemManagerHandle); ///@brief 获取安检门基础配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSystemManagerGetConfig(LLONG lLoginID, NET_IN_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO* pstInParam, NET_OUT_GET_SECURITY_GATE_SYSTEM_MANAGER_INFO* pstOutParam , int nWaitTime); ///@brief 设置安检门基础配置信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSystemManagerSetConfig(LLONG lLoginID, NET_IN_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO* pstInParam, NET_OUT_SET_SECURITY_GATE_SYSTEM_MANAGER_INFO* pstOutParam , int nWaitTime); ///@brief 获取安检门基础配置能力集 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSystemManagerGetCaps(LLONG lLoginID, NET_IN_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO* pstInParam, NET_OUT_SECURITY_GATE_SYSTEM_MANAGER_GETCAPS_INFO* pstOutParam , int nWaitTime); ///@brief 开始自动搜索频率 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGateSystemManagerStartAutoSearchFreq(LLONG lLoginID, NET_IN_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO* pstInParam, NET_OUT_SECURITY_GATE_SYSTEM_MANAGER_START_SEARCH_INFO* pstOutParam , int nWaitTime); /************************************************** 安检门基础配置 End******************************************************/ /************************************************** 安检门外设状态信息 Start******************************************************/ ///@brief 交通灯状态 typedef enum tagEM_TRAFFIC_LIGHT_COLOR_STATE { EM_TRAFFIC_LIGHT_COLOR_STATE_UNKNOWN = -1, // 未知 EM_TRAFFIC_LIGHT_COLOR_STATE_RED, // 红色 EM_TRAFFIC_LIGHT_COLOR_STATE_GREEN, // 绿色 EM_TRAFFIC_LIGHT_COLOR_STATE_YELLOW, // 黄色 EM_TRAFFIC_LIGHT_COLOR_STATE_BLUE, // 蓝色 }EM_TRAFFIC_LIGHT_COLOR_STATE; ///@brief 状态信息 typedef struct tagNET_PERIPHERALL_INFO { EM_TRAFFIC_LIGHT_COLOR_STATE emTrafficLightState; // 交通灯状态 char byReserved[256]; // 预留字节 }NET_PERIPHERALL_INFO; ///@brief 安检门外设状态信息 typedef struct tagNET_SECURITY_GATE_MANAGER { DWORD dwSize; // 结构体大小 NET_PERIPHERALL_INFO stuPeripheralInfo; // 状态信息 }NET_SECURITY_GATE_MANAGER; ///@brief 回调函数 typedef void (CALLBACK *fNotifySecurityGateManager)(LLONG lSecurityGateManagerHandle, NET_SECURITY_GATE_MANAGER* pstuSecurityGateSenvitityManager, LDWORD dwUser); ///@brief 接口 CLIENT_AttachSecurityGateManager 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityGateManager cbNotifySecurityGateManager; // 回调函数,通知安检门外设状态信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_MANAGER; ///@brief 接口 CLIENT_AttachSecurityGateManager 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_GATE_MANAGER; ///@brief 订阅安检门外设状态信息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateManager(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_MANAGER* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_MANAGER* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门外设状态信息,lSecurityGateManagerHandle 为 CLIENT_AttachSecurityGateManager 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateManager(LLONG lSecurityGateManagerHandle); ///@brief 接口 CLIENT_GetSecurityGateManagerInfo 的输入参数 typedef struct tagNET_IN_GET_SECURITY_GATE_MANAGER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nTimeOut; // 超时时间,单位:毫秒 }NET_IN_GET_SECURITY_GATE_MANAGER_INFO; ///@brief 接口 CLIENT_GetSecurityGateManagerInfo 的输出参数 typedef struct tagNET_OUT_GET_SECURITY_GATE_MANAGER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_TRAFFIC_LIGHT_COLOR_STATE emTrafficLightState; // 交通灯状态 }NET_OUT_GET_SECURITY_GATE_MANAGER_INFO; ///@brief 获取安检门外设状态信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSecurityGateManagerInfo(LLONG lLoginID, NET_IN_GET_SECURITY_GATE_MANAGER_INFO* pstInParam, NET_OUT_GET_SECURITY_GATE_MANAGER_INFO* pstOutParam , int nWaitTime); /************************************************** 安检门外设状态信息 End******************************************************/ ///@brief 接口 CLIENT_SecurityInspectorCheckOnJob 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB; ///@brief 接口 CLIENT_SecurityInspectorCheckOnJob 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB { DWORD dwSize; //此结构体大小,必须赋值 UINT nCheckID; // 在岗检查ID }NET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB; ///@brief 安检员检查在岗,pstInParam与pstOutParam内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SecurityInspectorCheckOnJob(LLONG lLoginID, NET_IN_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB* pInParam, NET_OUT_ATTACH_SECURITY_INSPECTOR_CHECK_ONJOB* pOutParam , int nWaitTime); ///@brief CLIENT_UploadUnpackingCheckInfo 入参 typedef struct tagNET_IN_UPLOAD_UPPACKING_CHECK_INFO { DWORD dwSize; // 结构体大小 int nImageDataLen; // 图片二进制数据缓存大小 char* pImageData; // 图片二进制数据块 UNPACKING_CHECK_INFO stuCheckInfo; // 开包检查信息 }NET_IN_UPLOAD_UPPACKING_CHECK_INFO; ///@brief CLIENT_UploadUnpackingCheckInfo 出参 typedef struct tagNET_OUT_UPLOAD_UPPACKING_CHECK_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_UPLOAD_UPPACKING_CHECK_INFO; ///@brief 开包工作台上报开包检查信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_UploadUnpackingCheckInfo(LLONG lLoginID, const NET_IN_UPLOAD_UPPACKING_CHECK_INFO* pInParam, NET_OUT_UPLOAD_UPPACKING_CHECK_INFO* pOutParam, int nWaitTime); ///@brief 电平信号 typedef enum tagEM_ELECTRICAL_LEVEL { EM_ELECTRICAL_LEVEL_UNKNOWN = -1, // 未知 EM_ELECTRICAL_LEVEL_LOW, // 低电平 EM_ELECTRICAL_LEVEL_HIGH, // 高电平 }EM_ELECTRICAL_LEVEL; ///@brief 安检门红外传感器数据 typedef struct tagNET_SECURITY_GATE_SENSOR_DATA { DWORD dwSize; // 结构体大小 UINT nChannel; // 红外传感器通道号 0:前对红外 1:后对红外 EM_ELECTRICAL_LEVEL emElectricalLevel; // 电平信号 }NET_SECURITY_GATE_SENSOR_DATA; ///@brief 回调函数 typedef void (CALLBACK *fNotifySecurityGateSensorData)(LLONG lSecurityGateSensorDataHandle, NET_SECURITY_GATE_SENSOR_DATA* pstuSecurityGateSensorData, LDWORD dwUser); ///@brief CLIENT_AttachSecurityGateSensorData 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_SENSOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityGateSensorData cbNotifySecurityGateSensorData; // 回调函数,安检门红外传感器数据 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_SENSOR_DATA; ///@brief CLIENT_AttachSecurityGateSensorData 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_SENSOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_GATE_SENSOR_DATA; ///@brief 订阅安检门接收红外传感器数据 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateSensorData(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_SENSOR_DATA* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_SENSOR_DATA* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门接收红外传感器数据,lSecurityGateSensorDataHandle 为 CLIENT_AttachSecurityGateSensorData 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateSensorData(LLONG lSecurityGateSensorDataHandle); ///@brief CLIENT_GetSecurityGateSensorData 的输入参数 typedef struct tagNET_IN_GET_SECURITY_GATE_SENSOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 UINT nChannel; // 红外传感器通道号 0:前对红外 1:后对红外 }NET_IN_GET_SECURITY_GATE_SENSOR_DATA; ///@brief CLIENT_GetSecurityGateSensorData 的输出参数 typedef struct tagNET_OUT_GET_SECURITY_GATE_SENSOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 EM_ELECTRICAL_LEVEL emElectricalLevel; // 电平信号 }NET_OUT_GET_SECURITY_GATE_SENSOR_DATA; ///@brief 获取红外传感器当前电平信号 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetSecurityGateSensorData(LLONG lLoginID, NET_IN_GET_SECURITY_GATE_SENSOR_DATA* pstInParam, NET_OUT_GET_SECURITY_GATE_SENSOR_DATA* pstOutParam , int nWaitTime); ///@brief 按键值 typedef enum tagEM_SECURITY_GATE_KEY_CODE { EM_SECURITY_GATE_KEY_CODE_UNKNOWN = -1, // 未知 EM_SECURITY_GATE_KEY_CODE_RIGHT, // 方向右键 EM_SECURITY_GATE_KEY_CODE_CONFIRM, // 确认键 EM_SECURITY_GATE_KEY_CODE_POWER, // 电源键 EM_SECURITY_GATE_KEY_CODE_LEFT, // 方向左键 EM_SECURITY_GATE_KEY_CODE_RETURN, // 返回键 EM_SECURITY_GATE_KEY_CODE_RESET, // 复位键 EM_SECURITY_GATE_KEY_CODE_UPPER, // 方向上键 EM_SECURITY_GATE_KEY_CODE_LOWER, // 方向下键 EM_SECURITY_GATE_KEY_CODE_MENU, // 菜单键 EM_SECURITY_GATE_KEY_CODE_HOME, // HOME键 }EM_SECURITY_GATE_KEY_CODE; ///@brief 按键消息 typedef struct tagNET_SECURITY_GATE_KEY_CODE { DWORD dwSize; // 结构体大小 EM_SECURITY_GATE_KEY_CODE emKeyCode; // 按键值 }NET_SECURITY_GATE_KEY_CODE; ///@brief CLIENT_AttachSecurityGateKeyCode 回调函数 typedef void (CALLBACK *fNotifySecurityGateKeyCode)(LLONG lSecurityGateKeyCodeHandle, NET_SECURITY_GATE_KEY_CODE* pstuSecurityGateKeyCode, LDWORD dwUser); ///@brief CLIENT_AttachSecurityGateKeyCode 的输入参数 typedef struct tagNET_IN_ATTACH_SECURITY_GATE_KEY_CODE { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySecurityGateKeyCode cbNotifySecurityGateKeyCode; // 回调函数,安检门按键消息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SECURITY_GATE_KEY_CODE; ///@brief CLIENT_AttachSecurityGateKeyCode 的输出参数 typedef struct tagNET_OUT_ATTACH_SECURITY_GATE_KEY_CODE { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SECURITY_GATE_KEY_CODE; ///@brief 订阅安检门订阅按键消息 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSecurityGateKeyCode(LLONG lLoginID, NET_IN_ATTACH_SECURITY_GATE_KEY_CODE* pstInParam, NET_OUT_ATTACH_SECURITY_GATE_KEY_CODE* pstOutParam , int nWaitTime); ///@brief 取消订阅安检门订阅按键消息,lSecurityGateKeyCodeHandle 为 CLIENT_AttachSecurityGateKeyCode 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSecurityGateKeyCode(LLONG lSecurityGateKeyCodeHandle); ///@brief 外设类型 typedef enum tagEM_SECURITY_GATE_PERIPHERAL_TYPE { EM_SECURITY_GATE_PERIPHERAL_TYPE_UNKNOWN = -1, // 未知 EM_SECURITY_GATE_PERIPHERAL_TYPE_DISPLAY, // 显示屏 EM_SECURITY_GATE_PERIPHERAL_TYPE_KEY_LIGHT_BOARD, // 按键灯板 EM_SECURITY_GATE_PERIPHERAL_TYPE_DOOR_PANEL_LAMP, // 门板灯带 }EM_SECURITY_GATE_PERIPHERAL_TYPE; ///@brief CLIENT_SecurityGateSwitchPeripheralPower 的输入参数 typedef struct tagNET_IN_SECURITY_GATE_SWITCH_PERIPHERAL_POWER { DWORD dwSize; // 此结构体大小,必须赋值 EM_SECURITY_GATE_PERIPHERAL_TYPE emPeripheralType; // 外设类型 UINT nSwitchPower; // 控制开关 0:关闭 1:打开 }NET_IN_SECURITY_GATE_SWITCH_PERIPHERAL_POWER; ///@brief CLIENT_SecurityGateSwitchPeripheralPower 的输出参数 typedef struct tagNET_OUT_SECURITY_GATE_SWITCH_PERIPHERAL_POWER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SECURITY_GATE_SWITCH_PERIPHERAL_POWER; ///@brief 向安检门发送控制外设开关命令 CLIENT_NET_API LLONG CALL_METHOD CLIENT_SecurityGateSwitchPeripheralPower(LLONG lLoginID, NET_IN_SECURITY_GATE_SWITCH_PERIPHERAL_POWER* pstInParam, NET_OUT_SECURITY_GATE_SWITCH_PERIPHERAL_POWER* pstOutParam , int nWaitTime); ///@brief 查询条件 typedef struct tagNET_SECURITY_GATE_STATISTICS_FIND_CONDITION { NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nGranularity; // 粒度, 0表示按小时, 1表示按天 char szResvered[1020]; // 保留字节 }NET_SECURITY_GATE_STATISTICS_FIND_CONDITION; ///@brief 接口 CLIENT_StartFindSecurityGateStatistics 的输入参数 typedef struct tagNET_IN_START_FIND_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 NET_SECURITY_GATE_STATISTICS_FIND_CONDITION stuCondition; // 查询条件 }NET_IN_START_FIND_SECURITY_GATE_STATISTICS; ///@brief 接口 CLIENT_StartFindSecurityGateStatistics 的输出参数 typedef struct tagNET_OUT_START_FIND_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 UINT nToken; // 查询令牌 UINT nTotal; // 结果总数 }NET_OUT_START_FIND_SECURITY_GATE_STATISTICS; ///@brief 安检门人数统计开始查询 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindSecurityGateStatistics(LLONG lLoginID, NET_IN_START_FIND_SECURITY_GATE_STATISTICS* pstuInParam, NET_OUT_START_FIND_SECURITY_GATE_STATISTICS* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_FindNextSecurityGateStatistics 的输入参数 typedef struct tagNET_IN_FIND_NEXT_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 查询令牌 int nCount; // 需要查找的数目 }NET_IN_FIND_NEXT_SECURITY_GATE_STATISTICS; ///@brief 人数统计信息 typedef struct tagNET_STATISTICS_LIST_INFO { NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nInNormalCount; // 进入通过人数 UINT nInAlarmCount; // 进入报警人数 UINT nOutNormalCount; // 离开通过人数 UINT nOutAlarmCount; // 离开报警人数 UINT nTempNormalCount; // 体温正常人数 UINT nTempAlarmCount; // 体温异常人数 UINT nClassifyResultStatisticsCount; // 分类检测结果人数统计信息个数 NET_CLASSIFY_RESULT_STATISTICS_INFO stuClassifyResultStatistics[32]; // 分类检测结果人数统计信息 char szResvered[1024]; // 保留字节 }NET_STATISTICS_LIST_INFO; ///@brief 接口 CLIENT_FindNextSecurityGateStatistics 的输出参数 typedef struct tagNET_OUT_FIND_NEXT_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 UINT nFound; // 查找到的条数 NET_STATISTICS_LIST_INFO stuStatisticsList[128]; // 人数统计信息 int nStatisticsListNum; // 人数统计信息个数 }NET_OUT_FIND_NEXT_SECURITY_GATE_STATISTICS; ///@brief 在指定条件基础上查询安检门人数统计结果 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindNextSecurityGateStatistics(LLONG lLoginID, NET_IN_FIND_NEXT_SECURITY_GATE_STATISTICS* pstuInParam, NET_OUT_FIND_NEXT_SECURITY_GATE_STATISTICS* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_StopFindSecurityGateStatistics 的输入参数 typedef struct tagNET_IN_STOP_FIND_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 查询令牌 }NET_IN_STOP_FIND_SECURITY_GATE_STATISTICS; ///@brief 接口 CLIENT_StopFindSecurityGateStatistics 的输出参数 typedef struct tagNET_OUT_STOP_FIND_SECURITY_GATE_STATISTICS { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_FIND_SECURITY_GATE_STATISTICS; ///@brief 停止查询安检门人数统计 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindSecurityGateStatistics(LLONG lLoginID, NET_IN_STOP_FIND_SECURITY_GATE_STATISTICS* pstuInParam, NET_OUT_STOP_FIND_SECURITY_GATE_STATISTICS* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_GetXRayObjectManagerCaps 的输入参数 typedef struct tagNET_IN_GET_XRAYOBJECT_MANAGER_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_XRAYOBJECT_MANAGER_CAPS; ///@brief 物品所属模型 typedef enum tagEM_XRAYOBJECT_MANAGER_MODEL { EM_XRAYOBJECT_MANAGER_MODEL_UNKNOWN = -1, // 未知 EM_XRAYOBJECT_MANAGER_MODEL_DH, // 表示私有模型 EM_XRAYOBJECT_MANAGER_MODEL_CUSTOM, // 表示自定义模型 }EM_XRAYOBJECT_MANAGER_MODEL; ///@brief 能力信息 typedef struct tagNET_XRAYOBJECT_MANAGER_OBJECT { char szType[64]; // 可识别物品类型 char szName[64]; // 可识别物品名称 EM_XRAYOBJECT_MANAGER_MODEL emModel; // 物品所属模型 char szResvered[1020]; // 保留字节 }NET_XRAYOBJECT_MANAGER_OBJECT; ///@brief 音视频版本保护 typedef enum tagEM_SUPPORT_XRAY_CUSTOMITEM { EM_SUPPORT_XRAY_CUSTOMITEM_UNKNOWN = -1, // 未知 EM_SUPPORT_XRAY_CUSTOMITEM_OLD, // 旧版本 EM_SUPPORT_XRAY_CUSTOMITEM_NEW, // 新版本 }EM_SUPPORT_XRAY_CUSTOMITEM; ///@brief 接口 CLIENT_GetXRayObjectManagerCaps 的输出参数 typedef struct tagNET_OUT_GET_XRAYOBJECT_MANAGER_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 int nObjectsNum; // 能力信息个数 NET_XRAYOBJECT_MANAGER_OBJECT stuObjects[128]; // 能力信息 EM_SUPPORT_XRAY_CUSTOMITEM emSupportXRayCustomItem; // 音视频版本保护 }NET_OUT_GET_XRAYOBJECT_MANAGER_CAPS; ///@brief 获取可识别物品能力集 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetXRayObjectManagerCaps(LLONG lLoginID, NET_IN_GET_XRAYOBJECT_MANAGER_CAPS* pstuInParam, NET_OUT_GET_XRAYOBJECT_MANAGER_CAPS* pstuOutParam, int nWaitTime); /***************************安检门接口End***************************************************/ /***************************温湿度数据接口 start***************************************************/ ///@brief 回调的温湿度信息 typedef struct tagNET_HYGROTHERMOGRAPH_INFO { float fTemperature; // 温度, 单位: ℃ float fHumidity; // 温度, 单位: ℃ int nChannel; // 上报通道号 char szResvered[1020]; // 保留字节 }NET_HYGROTHERMOGRAPH_INFO; ///@brief 订阅温湿度实时检测数据回调函数原型, lHygrothermographHandle为CLIENT_AttachHygrothermograph接口的返回值 ///@param[out] lHygrothermographHandle 订阅句柄 ///@param[out] pstuHygrothermographInfo 订阅温湿度实时检测数据回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyHygrothermograph)(LLONG lHygrothermographHandle, NET_HYGROTHERMOGRAPH_INFO* pstuHygrothermographInfo, LDWORD dwUser); ///@brief 过滤器 typedef struct tagNET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO { int nChannel; // 订阅通道号;-1代表订阅全通道; char szResvered[252]; // 保留字节 }NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO; ///@brief 接口 CLIENT_AttachHygrothermograph 的输入参数 typedef struct tagNET_IN_ATTACH_HYGROTHERMOGRAPH { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyHygrothermograph cbNotifyHygrothermograph; // 回调函数,通知温湿度信息 LDWORD dwUser; // 用户自定义参数 int nFilterCount; // 过滤器个数 NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO stuFilter[256]; // 过滤器 }NET_IN_ATTACH_HYGROTHERMOGRAPH; ///@brief 接口 CLIENT_AttachHygrothermograph 的输出参数 typedef struct tagNET_OUT_ATTACH_HYGROTHERMOGRAPH { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_HYGROTHERMOGRAPH; ///@brief 订阅温湿度实时检测数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out]pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachHygrothermograph(LLONG lLoginID, NET_IN_ATTACH_HYGROTHERMOGRAPH* pstInParam, NET_OUT_ATTACH_HYGROTHERMOGRAPH* pstOutParam , int nWaitTime); ///@brief 退订温湿度实时检测数据 ///@param[in] lHygrothermographHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachHygrothermograph(LLONG lHygrothermographHandle); /***************************温湿度数据接口 End*****************************************************/ /***************************电量数据接口 start***************************************************/ ///@brief 电量信息 typedef struct tagNET_POWER_INFO { int nPowerVoltage; // 电压值, 单位: mV int nPowerCurrent; // 电流值, 单位: mA int nPowerValue; // 功率, 单位: mW EM_ALARM_INTERFACE_TYPE emInterfaceType; // 感应器相位类型 char szResvered[256]; // 保留字节 }NET_POWER_INFO; ///@brief 回调的电量信息 typedef struct tagNET_POWER_SWITCHER_INFO { int nPowerInfoNum; // 返回的电量信息的个数, 最大值为3 NET_POWER_INFO stuPowerInfo[3]; // 电量信息 int nElectricity; // 电能值,单位:Wh int nActivePower; // 三相有功功率,单位:W int nPowerFactor; // 三相总功率因数,单位:PF int nChannel; // 上报数据通道号 char szResvered[1008]; // 保留字节 }NET_POWER_SWITCHER_INFO; ///@brief 订阅温湿度实时检测数据回调函数原型, lPowerSwitcherHandle为CLIENT_AttachPowerSwitcher接口的返回值 ///@param[out] lPowerSwitcherHandle 订阅句柄 ///@param[out] pstuPowerSwitcherInfo 订阅温湿度实时检测数据回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyPowerSwitcher)(LLONG lPowerSwitcherHandle, NET_POWER_SWITCHER_INFO* pstuPowerSwitcherInfo, LDWORD dwUser); ///@brief 过滤器 typedef struct tagNET_ATTACH_POWER_SWITCHER_FILTER_INFO { int nChannel; // 订阅通道号;-1代表订阅全通道; char szResvered[252]; // 保留字节 }NET_ATTACH_POWER_SWITCHER_FILTER_INFO; ///@brief 接口 CLIENT_AttachPowerSwitcher 的输入参数 typedef struct tagNET_IN_ATTACH_POWER_SWITCHER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyPowerSwitcher cbNotifyPowerSwitcher; // 回调函数,通知电量信息 LDWORD dwUser; // 用户自定义参数 int nFilterCount; // 过滤器个数 NET_ATTACH_POWER_SWITCHER_FILTER_INFO stuFilter[256]; // 过滤器 }NET_IN_ATTACH_POWER_SWITCHER; ///@brief 接口 CLIENT_AttachPowerSwitcher 的输出参数 typedef struct tagNET_OUT_ATTACH_POWER_SWITCHER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_POWER_SWITCHER; ///@brief 订阅电量实时检测数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out]pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPowerSwitcher(LLONG lLoginID, NET_IN_ATTACH_POWER_SWITCHER* pstInParam, NET_OUT_ATTACH_POWER_SWITCHER* pstOutParam , int nWaitTime); ///@brief 退订电量实时检测数据 ///@param[in] lPowerSwitcherHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPowerSwitcher(LLONG lPowerSwitcherHandle); /***************************电量数据接口 End*****************************************************/ ///@brief EAS检测通道信息 typedef struct tagNET_DETECT_CHANNEL_INFO { char szName[128]; // EAS检测通道名字 UINT uDetectChannel; // EAS检测通道号,从0开始 UINT uDetectChannelState; // EAS检测通道状态:0表示未配置 1表示连接失败 2表示连接成功 char szResvered[256]; // 保留字节 }NET_DETECT_CHANNEL_INFO; ///@brief EAS通道变化信息 typedef struct tagNET_ESA_CHANNEL_INFO { UINT uDeviceChannel; // EAS通道号,从0开始 UINT uChannelState; // EAS通道状态:0表示连接失败 1表示连接成功 char szName[128]; // EAS通道名称 int nDetechInfoSize; // EAS检测通道信息数组大小 NET_DETECT_CHANNEL_INFO stuDetechInfo[32]; // EAS检测通道信息 char szSN[32]; // EAS char szResvered[256]; // 保留字节 }NET_ESA_CHANNEL_INFO; ///@brief 回调的通道变化信息 typedef struct tagNET_NOTIFY_EAS_CHANNEL_INFO { int nInfoSize; // EAS通道信息数组大小 NET_ESA_CHANNEL_INFO stuInfo[64]; // EAS通道信息 char szResvered[256]; // 保留字节 }NET_NOTIFY_EAS_CHANNEL_INFO; ///@brief 订阅EAS通道信息回调函数原型, lEASManagerHandle为CLIENT_AttachEASManager接口的返回值 ///@param[out] lEASManagerHandle 订阅句柄 ///@param[out] pstuEASNotifyInfo 订阅的EAS通道变化回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyEASManager)(LLONG lEASManagerHandle, NET_NOTIFY_EAS_CHANNEL_INFO* pstuEASNotifyInfo, LDWORD dwUser); ///@brief 设备通道信息 typedef struct tagNET_DEV_CHANNEL_INFO { int nDevChannel; char szResvered[252]; // 保留字节 }NET_DEV_CHANNEL_INFO; ///@brief CLIENT_AttachEASManager接口入参 typedef struct tagNET_IN_ATTACH_EASMANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyEASManager cbfNotifyEASManager; // 回调函数,通知通道变化信息 LDWORD dwUser; // 用户自定义参数 int nInfoSize; // 通道信息结构体大小 NET_DEV_CHANNEL_INFO stuInfo[64]; // 通道 }NET_IN_ATTACH_EASMANAGER; ///@brief CLIENT_AttachEASManager接口出参 typedef struct tagNET_OUT_ATTACH_EASMANAGER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_EASMANAGER; ///@brief 订阅EAS通道信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachEASManager(LLONG lLoginID, NET_IN_ATTACH_EASMANAGER* pstInParam, NET_OUT_ATTACH_EASMANAGER* pstOutParam, int nWaitTime); ///@brief 退订EAS通道信息 ///@param[in] lEASManagerHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachEASManager(LLONG lEASManagerHandle); ///@brief CLIENT_GetDeviceChannelInfo接口入参 typedef struct tagNET_IN_GET_DEV_CHANNEL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nInfoSize; // 查询的通道号数量 NET_DEV_CHANNEL_INFO stuInfo[64]; // 查询的通道号 }NET_IN_GET_DEV_CHANNEL_INFO; ///@brief CLIENT_GetDeviceChannelInfo接口出参 typedef struct tagNET_OUT_GET_DEV_CHANNEL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nInfoSize; // 查询到的EAS通道信息数组大小 NET_ESA_CHANNEL_INFO stuInfo[64]; // 查询到的EAS通道信息 }NET_OUT_GET_DEV_CHANNEL_INFO; ///@brief 获取EAS设备通道信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口入参 ///@param[out] pstOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASDevChannelInfo(LLONG lLoginID, NET_IN_GET_DEV_CHANNEL_INFO* pstInParam, NET_OUT_GET_DEV_CHANNEL_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_GetEASCaps接口入参 typedef struct tagNET_IN_GET_EAS_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_EAS_CAPS; ///@brief CLIENT_GetEASCaps接口出参 typedef struct tagNET_OUT_GET_EAS_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 BOOL bSupport; // 是否支持EAS设备接入 }NET_OUT_GET_EAS_CAPS; ///@brief 获取设备是否支持EAS ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASCaps(LLONG lLoginID, NET_IN_GET_EAS_CAPS* pstuInParam, NET_OUT_GET_EAS_CAPS* pstuOutParam, int nWaitTime); ///@brief EAS查询参数 typedef struct tagNET_EAS_SYSTEM_STATUS_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 char szResvered[124]; // 保留字节 }NET_EAS_SYSTEM_STATUS_REQ_PARAM; ///@brief CLIENT_GetEASSystemStatus 接口入参 typedef struct tagNET_IN_GET_EAS_SYSTEM_STATUS { DWORD dwSize; // 此结构体大小,必须赋值 int nEASRequestParamsNum; // EAS查询参数数组设置数量 NET_EAS_SYSTEM_STATUS_REQ_PARAM stuEASRequestParams[64]; // EAS查询参数 }NET_IN_GET_EAS_SYSTEM_STATUS; ///@brief EAS设备状态信息 typedef struct tagNET_EAS_EAS_SYSTEM_STATUS { UINT nDeviceChannel; // EAS通道号,从0开始 UINT nPowerFrequency; // 电源频率,单位Hz char szResvered[124]; // 保留字节 }NET_EAS_EAS_SYSTEM_STATUS; ///@brief CLIENT_GetEASSystemStatus 接口出参 typedef struct tagNET_OUT_GET_EAS_SYSTEM_STATUS { DWORD dwSize; // 此结构体大小,必须赋值 int nEASSystemStatusNum; // EAS设备状态信息数组有效数量 NET_EAS_EAS_SYSTEM_STATUS stuEASSystemStatus[64]; // EAS设备状态信息 }NET_OUT_GET_EAS_SYSTEM_STATUS; ///@brief 获取EAS设备系统状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASSystemStatus(LLONG lLoginID, NET_IN_GET_EAS_SYSTEM_STATUS* pstuInParam, NET_OUT_GET_EAS_SYSTEM_STATUS* pstuOutParam, int nWaitTime); ///@brief EAS设备环境数据 typedef struct tagNET_EAS_ENV_MONITOR_DATA_INFO { int nDataNum; // 返回的环境数组大小,包含以下字段: nSignal, nNoise, nSnr, nAmp, nRms, nStd.上述字段数组实际大小值总一致 UINT nSignal[256]; // 标签信号实时值 ,元素大小0~4096 UINT nNoise[256]; // 环境噪声实时值,元素大小0~4096 UINT nSnr[256]; // 信噪比实时值,元素大小0~65535 UINT nAmp[256]; // 幅度实时值,元素大小0~65535 UINT nRms[256]; // 有效度实时值,元素大小0~65535 UINT nStd[256]; // 离散度实时值,元素大小0~65535 char szResvered[256]; // 保留字节 }NET_EAS_ENV_MONITOR_DATA_INFO; ///@brief EAS设备通道数据 typedef struct tagNET_EAS_ENV_CHANNEL_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 UINT nSamplingFrequency; // 数据采样频率,单位ms UINT nUploadFrequency; // 数据上传频率,单位ms int nEASEnvInfoNum; // 各检测通道环境监测数据数组大小 NET_EAS_ENV_MONITOR_DATA_INFO stuEASEnvInfo[64]; // 各检测通道环境监测数据 char szResvered[256]; // 保留字节 }NET_EAS_ENV_CHANNEL_INFO; ///@brief EAS环境检测回调函数参数 typedef struct tagNET_NOTIFY_EAS_ENV_MONITOR_CHANNEL_INFO { int nEASEnvChannelInfoNum; // EAS设备通道数据数组大小 NET_EAS_ENV_CHANNEL_INFO stuEASEnvChannelInfo[64]; // EAS设备通道数据 char szResvered[256]; // 保留字节 }NET_NOTIFY_EAS_ENV_MONITOR_CHANNEL_INFO; ///@brief 订阅EAS通道信息回调函数原型, lEASEnvMonitorDataHandle 为 CLIENT_AttachEASEnvMonitorData 接口的返回值 ///@param[out] lEASEnvMonitorDataHandle 订阅句柄 ///@param[out] pstuEASEnvMonitorDataNotifyInfo 订阅的EAS通道变化回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyEASEnvMonitorData)(LLONG lEASEnvMonitorDataHandle, NET_NOTIFY_EAS_ENV_MONITOR_CHANNEL_INFO* pstuEASEnvMonitorDataNotifyInfo, LDWORD dwUser); ///@brief 订阅EAS设备环境检测请求参数 typedef struct tagNET_EAS_ENV_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 char szResvered[124]; // 保留字节 }NET_EAS_ENV_REQ_PARAM; ///@brief CLIENT_AttachEASEnvMonitorData 接口入参 typedef struct tagNET_IN_ATTACH_EAS_ESV_MONITOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyEASEnvMonitorData cbfNotifyEASEnvMonitorData; // 回调函数,通知通道变化信息 LDWORD dwUser; // 用户自定义参数 int ReqParamsNum; // 订阅EAS设备环境检测请求参数数组大小 NET_EAS_ENV_REQ_PARAM stuReqParams[64]; // 订阅EAS设备环境检测请求参数 }NET_IN_ATTACH_EAS_ESV_MONITOR_DATA; ///@brief CLIENT_AttachEASEnvMonitorData 接口出参 typedef struct tagNET_OUT_ATTACH_EAS_ESV_MONITOR_DATA { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_EAS_ESV_MONITOR_DATA; ///@brief 订阅EAS设备通道环境监测数据,这里的环境数据指的是天线本身的工作状态。 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachEASEnvMonitorData(LLONG lLoginID, NET_IN_ATTACH_EAS_ESV_MONITOR_DATA* pstInParam, NET_OUT_ATTACH_EAS_ESV_MONITOR_DATA* pstOutParam, int nWaitTime); ///@brief 退订EAS设备通道环境监测数据 ///@param[in] lEASEnvMonitorDataHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachEASEnvMonitorData(LLONG lEASEnvMonitorDataHandle); ///@brief EAS设备报警数据 typedef struct tagNET_EAS_ALARM_DATA_INFO { int nFalseAlarmCountNum; // EAS设备通道误报信息数组大小 UINT nFalseAlarmCount[64]; // EAS设备通道误报信息,只有当 szType=FalseAlarm 时有效,各通道误报次数 char szResvered[256]; // 保留字节 }NET_EAS_ALARM_DATA_INFO; ///@brief EAS设备通道数据 typedef struct tagNET_EAS_ALARM_CHANNEL_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 char szType[32]; // 报警信息类型 FalseAlarm -- 误报信息 NET_EAS_ALARM_DATA_INFO stuEASDevAlarmInfo; // 各通道报警数据 UINT nAlarmCount; // 报警计数,0~255 UINT nAlarmSignalStrength; // 报警信号强度 char szResvered[248]; // 保留字节 }NET_EAS_ALARM_CHANNEL_INFO; ///@brief 订阅EAS设备报警信息回调函数参数 typedef struct tagNET_NOTIFY_EAS_ALARM_INFO { int nEASDevAlarmChannelInfoNum; // EAS设备通道数据数组大小 NET_EAS_ALARM_CHANNEL_INFO stuEASDevAlarmChannelInfo[64]; // EAS设备通道数据 char szResvered[256]; // 保留字节 }NET_NOTIFY_EAS_ALARM_INFO; ///@brief 订阅EAS设备报警信息回调函数原型, lEASDevAlarmInfoHandle 为 CLIENT_AttachEASDevAlarmInfo 接口的返回值 ///@param[out] lEASDevAlarmInfoHandle 订阅句柄 ///@param[out] pstuEASNotifyInfo 订阅的EAS设备报警信息回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyEASDevAlarmInfo)(LLONG lEASDevAlarmInfoHandle, NET_NOTIFY_EAS_ALARM_INFO* pstuEASDevAlarmInfoNotifyInfo, LDWORD dwUser); ///@brief 订阅EAS设备报警信息请求参数 typedef struct tagNET_EAS_ALARM_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 int nTypeNum; // 报警信息类型数组第一维长度 char szType[32][32]; // 报警信息类型 All -- 所有报警信息 FalseAlarm -- 误报信息 char szResvered[124]; // 保留字节 }NET_EAS_ALARM_REQ_PARAM; ///@brief CLIENT_AttachEASDevAlarmInfo 接口入参 typedef struct tagNET_IN_ATTACH_EAS_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyEASDevAlarmInfo cbfNotifyEASDevAlarmInfo; // 回调函数,通知EAS设备报警信息 LDWORD dwUser; // 用户自定义参数 int ReqParamsNum; // 订阅EAS设备报警信息请求参数数组大小 NET_EAS_ALARM_REQ_PARAM stuReqParams[64]; // 订阅EAS设备报警信息请求参数 }NET_IN_ATTACH_EAS_ALARM_INFO; ///@brief CLIENT_AttachEASDevAlarmInfo 接口出参 typedef struct tagNET_OUT_ATTACH_EAS_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_EAS_ALARM_INFO; ///@brief 订阅EAS设备报警信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachEASDevAlarmInfo(LLONG lLoginID, NET_IN_ATTACH_EAS_ALARM_INFO* pstInParam, NET_OUT_ATTACH_EAS_ALARM_INFO* pstOutParam, int nWaitTime); ///@brief 退订EAS设备报警信息 ///@param[in] lEASDevAlarmInfoHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachEASDevAlarmInfo(LLONG lEASDevAlarmInfoHandle); ///@brief EAS设备通道相位数据 typedef struct tagNET_EAS_PHASE_CHANNEL_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 UINT nPhaseValue; // 相位值,0~120 UINT nSyncMode; // 相位同步方式 0--上升沿同步 1--下降沿同步 UINT nSyncResult; // 同相结果 0 -- 同相完成 1 -- 无可同相设备 char szResvered[256]; // 保留字节 }NET_EAS_PHASE_CHANNEL_INFO; ///@brief 订阅EAS设备相位配置回调函数参数 typedef struct tagNET_NOTIFY_EAS_PHASE_INFO { int nEASPhaseChannelInfoNum; // EAS设备通道相位数据数组大小 NET_EAS_PHASE_CHANNEL_INFO stuEASPhaseChannelInfo[64]; // EAS设备通道相位数据 char szResvered[256]; // 保留字节 }NET_NOTIFY_EAS_PHASE_INFO; ///@brief 订阅EAS设备相位配置回调函数原型, lEASPhaseConfigHandle 为 CLIENT_AttachEASPhaseConfig 接口的返回值 ///@param[out] lEASPhaseConfigHandle 订阅句柄 ///@param[out] pstuEASPhaseConfigNotifyInfo 订阅的EAS设备相位配置信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyPhaseConfig)(LLONG lEASPhaseConfigHandle, NET_NOTIFY_EAS_PHASE_INFO* pstuEASPhaseConfigNotifyInfo, LDWORD dwUser); ///@brief 订阅EAS设备相位配置请求参数 typedef struct tagNET_EAS_PHASE_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 char szResvered[124]; // 保留字节 }NET_EAS_PHASE_REQ_PARAM; ///@brief CLIENT_AttachEASPhaseConfig 接口入参 typedef struct tagNET_IN_ATTACH_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyPhaseConfig cbfNotifyPhaseConfig; // 回调函数,通知EAS设备相位配置信息 LDWORD dwUser; // 用户自定义参数 int ReqParamsNum; // 订阅EAS设备相位配置请求参数数组大小 NET_EAS_PHASE_REQ_PARAM stuReqParams[64]; // 订阅EAS设备相位配置请求参数 }NET_IN_ATTACH_EAS_PHASE_CONFIG_INFO; ///@brief CLIENT_AttachEASPhaseConfig 接口出参 typedef struct tagNET_OUT_ATTACH_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_EAS_PHASE_CONFIG_INFO; ///@brief 订阅EAS设备相位配置信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachEASPhaseConfig(LLONG lLoginID, NET_IN_ATTACH_EAS_PHASE_CONFIG_INFO* pstInParam, NET_OUT_ATTACH_EAS_PHASE_CONFIG_INFO* pstOutParam, int nWaitTime); ///@brief 退订EAS设备相位配置信息 ///@param[in] lEASPhaseConfigHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachEASPhaseConfig(LLONG lEASPhaseConfigHandle); ///@brief EAS设备误报信息查询参数 typedef struct tagNET_EAS_GET_ALARM_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 int nTypeNum; // 报警信息类型数组大小 char szType[32][32]; // 报警信息类型 All -- 全部报警信息 FalseAlarm -- 误报信息, AlarmCount -- 报警计数, AlarmSignalAtrength -- 报警信号强度 char szResvered[128]; // 保留字节 }NET_EAS_GET_ALARM_REQ_PARAM; ///@brief CLIENT_GetEASDevAlarmInfo 接口入参 typedef struct tagNET_IN_GET_EAS_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASGetAlarmRequestParamsNum; // EAS设备误报信息查询参数数组大小 NET_EAS_GET_ALARM_REQ_PARAM stuEASGetAlarmRequestParams[64]; // EAS设备误报信息查询参数 }NET_IN_GET_EAS_ALARM_INFO; ///@brief EAS设备报警数据 typedef struct tagNET_EAS_ALARM_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 char szType[32]; // 报警信息类型 All -- 全部报警信息 FalseAlarm -- 误报信息, AlarmCount -- 报警计数, AlarmSignalAtrength -- 报警信号强度 NET_EAS_ALARM_DATA_INFO stuEASDevAlarmData; // EAS设备报警数据 char szResvered[128]; // 保留字节 }NET_EAS_ALARM_INFO; ///@brief CLIENT_GetEASDevAlarmInfo 接口出参 typedef struct tagNET_OUT_GET_EAS_ALARM_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASDevAlarmInfoNum; // EAS设备报警数据数组有效数量 NET_EAS_ALARM_INFO stuEASDevAlarmInfo[64]; // EAS设备报警数据 UINT nAlarmCount[64]; // 报警计数,范围: 0~255 UINT nAlarmSignalStrength[64]; // 报警信号强度 }NET_OUT_GET_EAS_ALARM_INFO; ///@brief 获取EAS设备误报信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASDevAlarmInfo(LLONG lLoginID, NET_IN_GET_EAS_ALARM_INFO* pstuInParam, NET_OUT_GET_EAS_ALARM_INFO* pstuOutParam, int nWaitTime); ///@brief EAS设备开始相位同步参数 typedef struct tagNET_EAS_START_EAS_PHASE_SYNC_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 UINT nSyncMode; // 相位同步方式 0 -- 上升沿同步 1-- 下降沿同步 char szResvered[128]; // 保留字节 }NET_EAS_START_EAS_PHASE_SYNC_REQ_PARAM; ///@brief CLIENT_StartEASPhaseSync 接口入参 typedef struct tagNET_IN_START_EAS_PHASE_SYNC_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASstartPhaseSyncRequestParamsNum; // EAS设备开始相位同步参数数组大小 NET_EAS_START_EAS_PHASE_SYNC_REQ_PARAM stuEASstartPhaseSyncRequestParams[64]; // EAS设备开始相位同步参数 }NET_IN_START_EAS_PHASE_SYNC_INFO; ///@brief CLIENT_StartEASPhaseSync 接口出参 typedef struct tagNET_OUT_START_EAS_PHASE_SYNC_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_START_EAS_PHASE_SYNC_INFO; ///@brief 开始EAS设备相位同步 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartEASPhaseSync(LLONG lLoginID, NET_IN_START_EAS_PHASE_SYNC_INFO* pstuInParam, NET_OUT_START_EAS_PHASE_SYNC_INFO* pstuOutParam, int nWaitTime); ///@brief 设置EAS设备相位配置参数 typedef struct tagNET_SET_EAS_PHASE_CONFIG_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 UINT nPhaseValue; // 相位值,0~120 char szResvered[128]; // 保留字节 }NET_SET_EAS_PHASE_CONFIG_REQ_PARAM; ///@brief CLIENT_SetEASPhaseConfig 接口入参 typedef struct tagNET_IN_SET_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nSetEASPhaseConfigRequestParamsNum; // 设置EAS设备相位配置参数数组大小 NET_SET_EAS_PHASE_CONFIG_REQ_PARAM stuSetEASPhaseConfigRequestParams[64]; // 设置EAS设备相位配置参数 }NET_IN_SET_EAS_PHASE_CONFIG_INFO; ///@brief CLIENT_SetEASPhaseConfig 接口出参 typedef struct tagNET_OUT_SET_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SET_EAS_PHASE_CONFIG_INFO; ///@brief 设置EAS设备相位配置 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetEASPhaseConfig(LLONG lLoginID, NET_IN_SET_EAS_PHASE_CONFIG_INFO* pstuInParam, NET_OUT_SET_EAS_PHASE_CONFIG_INFO* pstuOutParam, int nWaitTime); ///@brief EAS设备相位配置信息查询参数 typedef struct tagNET_EAS_GET_PHASE_CONFIG_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 char szResvered[128]; // 保留字节 }NET_EAS_GET_PHASE_CONFIG_REQ_PARAM; ///@brief CLIENT_GetEASPhaseConfig 接口入参 typedef struct tagNET_IN_GET_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASGetPhaseConfigRequestParamsNum; // EAS设备相位配置查询参数数组大小 NET_EAS_GET_PHASE_CONFIG_REQ_PARAM stuEASGetPhaseConfigRequestParams[64]; // EAS设备相位配置信息查询参数 }NET_IN_GET_EAS_PHASE_CONFIG_INFO; ///@brief EAS设备相位配置数据 typedef struct tagNET_EAS_PHASE_CONFIG_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 UINT nPhaseValue; // 相位值,0~120 UINT nSyncMode; // 相位同步方式 0 -- 上升沿同步 1-- 下降沿同步 char szResvered[128]; // 保留字节 }NET_EAS_PHASE_CONFIG_INFO; ///@brief CLIENT_GetEASPhaseConfig 接口出参 typedef struct tagNET_OUT_GET_EAS_PHASE_CONFIG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASPhaseConfigInfoNum; // EAS设备相位配置数据数组有效数量 NET_EAS_PHASE_CONFIG_INFO stuEASPhaseConfigInfo[64]; // EAS设备相位配置数据 }NET_OUT_GET_EAS_PHASE_CONFIG_INFO; ///@brief 获取EAS设备相位配置 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASPhaseConfig(LLONG lLoginID, NET_IN_GET_EAS_PHASE_CONFIG_INFO* pstuInParam, NET_OUT_GET_EAS_PHASE_CONFIG_INFO* pstuOutParam, int nWaitTime); ///@brief 获取EAS设备能力集查询参数 typedef struct tagNET_EAS_GET_DEVICE_CAPS_REQ_PARAM { int nDeviceChannel; // EAS通道号,-1表示所有通道 char szResvered[128]; // 保留字节 }NET_EAS_GET_DEVICE_CAPS_REQ_PARAM; ///@brief CLIENT_GetEASDeviceCaps 接口入参 typedef struct tagNET_IN_GET_EAS_DEVICE_CAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASGetDeviceCapsRequestParamsNum; // 获取EAS设备能力集查询参数数组大小 NET_EAS_GET_DEVICE_CAPS_REQ_PARAM stuEASGetDeviceCapsRequestParams[64]; // 获取EAS设备能力集查询参数 }NET_IN_GET_EAS_DEVICE_CAPS_INFO; ///@brief EAS设备能力集数据 typedef struct tagNET_EAS_DEVICE_CAPS_INFO { UINT nDeviceChannel; // EAS通道号,从0开始 BOOL bSupportLedColor; // 是否支持待机灯光颜色设置 UINT nToneNum; // 可设置的报警音频数 UINT nVolumeMin; // 报警音量最小值 UINT nVolumeMax; // 报警音量最大值 char szResvered[116]; // 保留字节 }NET_EAS_DEVICE_CAPS_INFO; ///@brief 支持的报警信息 typedef enum tagEM_EAS_DEVICE_ALARM_INFO_CAPS { EM_EAS_DEVICE_ALARM_INFO_UNKNOWN, // 未知 EM_EAS_DEVICE_ALARM_INFO_ALL, // All:所有的报警信息 EM_EAS_DEVICE_ALARM_INFO_FALSE_ALARM, // FalseAlarm:误报信息 EM_EAS_DEVICE_ALARM_INFO_ALARM_COUNT, // AlarmCount:报警计数 EM_EAS_DEVICE_ALARM_INFO_ALARM_SIGNAL_STRENGTH, // AlarmSignalAtrength:报警信号强度 }EM_EAS_DEVICE_ALARM_INFO_CAPS; ///@brief EAS设备能力集支持的报警信息 typedef struct tagNET_EAS_DEVICE_ALARM_INFO_CAPS { int nAlarmInfoCapsCount; // 支持的报警信息个数 EM_EAS_DEVICE_ALARM_INFO_CAPS emAlarmInfoCaps[32]; // 支持的报警信息: All:所有的报警信息, FalseAlarm:误报信息, AlarmCount:报警计数, AlarmSignalAtrength:报警信号强度 char szResvered[60]; // 保留字节 }NET_EAS_DEVICE_ALARM_INFO_CAPS; ///@brief CLIENT_GetEASDeviceCaps 接口出参 typedef struct tagNET_OUT_GET_EAS_DEVICE_CAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nEASDeviceCapsInfoNum; // EAS设备能力集数据数组有效数量 NET_EAS_DEVICE_CAPS_INFO stuEASDeviceCapsInfo[64]; // EAS设备能力集数据 NET_EAS_DEVICE_ALARM_INFO_CAPS stuAlarmInfoCaps[64]; // EAS设备支持的报警信息 }NET_OUT_GET_EAS_DEVICE_CAPS_INFO; ///@brief 获取EAS设备能力集 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEASDeviceCaps(LLONG lLoginID, NET_IN_GET_EAS_DEVICE_CAPS_INFO* pstuInParam, NET_OUT_GET_EAS_DEVICE_CAPS_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_SleepingControlGetCaps接口入参 typedef struct tagNET_IN_SLEEPING_CONTROL_GETCAPS { DWORD dwSize; // 此结构体大小,必须赋值 int nChannel; // 通道号,从0开始 }NET_IN_SLEEPING_CONTROL_GETCAPS; ///@brief 设备休眠能力结构体 typedef struct tagNET_SLEEPING_CONTROL_CAPS { BOOL bSupport; // 是否支持休眠能力 int nSleepingControlStrategy; // 休眠控制策略,1:机芯始终上电状态的休眠唤醒, 2:通过机芯上下电方式休眠唤醒, 3:DSP下电休眠唤醒 char szResvered[1024]; // 保留字节 }NET_SLEEPING_CONTROL_CAPS; ///@brief CLIENT_SleepingControlGetCaps接口出参 typedef struct tagNET_OUT_SLEEPING_CONTROL_GETCAPS { DWORD dwSize; // 此结构体大小,必须赋值 NET_SLEEPING_CONTROL_CAPS stuCaps; // 设备休眠能力 }NET_OUT_SLEEPING_CONTROL_GETCAPS; ///@brief 获取设备休眠能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口入参 ///@param[out] pstOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SleepingControlGetCaps(LLONG lLoginID, NET_IN_SLEEPING_CONTROL_GETCAPS* pstInParam, NET_OUT_SLEEPING_CONTROL_GETCAPS* pstOutParam, int nWaitTime); /***************************水质检测接口 start***************************************************/ ///@brief CLIENT_GetWaterDataStatServerCaps 输入参数 typedef struct tagNET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO; ///@brief 当前是否具备水质检测功能 typedef enum tagEM_WATERDATA_STAT_SERVER_SUPPORT { EM_WATERDATA_STAT_SERVER_SUPPORT_UNKNOWN = -1, // 未知 EM_WATERDATA_STAT_SERVER_SUPPORT_NO, // 不支持 EM_WATERDATA_STAT_SERVER_SUPPORT_YES, // 支持 }EM_WATERDATA_STAT_SERVER_SUPPORT; ///@brief 是否支持本地存储 typedef enum tagEM_SUPPORT_LOCALDATA_STORE { EM_SUPPORT_LOCALDATA_STORE_UNKNOWN = -1, // 未知 EM_SUPPORT_LOCALDATA_STORE_NO, // 不支持 EM_SUPPORT_LOCALDATA_STORE_YES, // 支持 }EM_SUPPORT_LOCALDATA_STORE; ///@brief CLIENT_GetWaterDataStatServerCaps 输出参数 typedef struct tagNET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_WATERDATA_STAT_SERVER_SUPPORT emSupport; // 当前是否具备水质检测功能 EM_SUPPORT_LOCALDATA_STORE emSupportLocalDataStore; // 是否支持本地存储 }NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO; ///@brief CLIENT_GetWaterDataStatServerWaterData 输入参数 typedef struct tagNET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTypeNum; // 检测类型个数 EM_WATER_DETECTION_ALARM_TYPE emType[32]; // 检测类型 }NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO; ///@brief 水质类别,越小越好 typedef enum tagEM_WATER_QUALITY { EM_WATER_QUALITY_UNKNOWN, // 未知 EM_WATER_QUALITY_1, // 1类 EM_WATER_QUALITY_2, // 2类 EM_WATER_QUALITY_3, // 3类 EM_WATER_QUALITY_4, // 4类 EM_WATER_QUALITY_5, // 5类 }EM_WATER_QUALITY; ///@brief CLIENT_GetWaterDataStatServerWaterData 输出参数 typedef struct tagNET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_WATER_QUALITY emQuality; // 水质类别,越小越好 NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo; // 水质检测上报数据信息 int nFlunkTypeNum; // 参数超过阈值类型个数 EM_WATER_DETECTION_ALARM_TYPE emFlunkType[32]; // 参数超过阈值类型 }NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO; ///@brief 水质检测数据查询条件 typedef struct tagNET_START_FIND_WATERDATA_CONDITION { NET_TIME_EX stuStartTime; // 开始时间 EM_WATER_DETECTION_ALARM_TYPE emType[32]; // 检测类型 int nTypeNum; // 检测类型个数 int nPresetIDNum; // 预置点个数 int nPresetID[32]; // 预置点 NET_TIME_EX stuEndTime; // 结束时间 char szReserved[256]; // 预留字节 }NET_START_FIND_WATERDATA_CONDITION; ///@brief CLIENT_StartFindWaterDataStatServer 输入参数 typedef struct tagNET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_START_FIND_WATERDATA_CONDITION stuCondition; // 水质检测数据查询条件 }NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief CLIENT_StartFindWaterDataStatServer 输出参数 typedef struct tagNET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nToken; // 取到的查询令牌 UINT nTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief CLIENT_DoFindWaterDataStatServer 输入参数 typedef struct tagNET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nToken; // 查询令牌 UINT nBeginNumber; // 查询起始序号, 表示从beginNumber条记录开始,取count条记录返回 int nCount; // 每次查询的流量统计条数 }NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief 流量统计信息 typedef struct tagNET_WATERDATA_STAT_SERVER_INFO { NET_TIME_EX stuStartTime; // 开始时间 EM_WATER_QUALITY emQuality; // 水质类别 NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo; // 水质检测上报数据信息 char szReserved[256]; // 预留字节 }NET_WATERDATA_STAT_SERVER_INFO; ///@brief CLIENT_DoFindWaterDataStatServer 输出参数 typedef struct tagNET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nFound; // 查询到的条数 int nInfoNum; // 流量统计信息个数 NET_WATERDATA_STAT_SERVER_INFO stuInfo[64]; // 流量统计信息 }NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief CLIENT_StopFindWaterDataStatServer 输入参数 typedef struct tagNET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nToken; // 查询令牌 }NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief CLIENT_StopFindWaterDataStatServer 输出参数 typedef struct tagNET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO; ///@brief 获取水质检测能力 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetWaterDataStatServerCaps(LLONG lLoginID, NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO* pstuInParam, NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO* pstuOutParam, int nWaitTime); ///@brief 水质检测实时数据获取 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetWaterDataStatServerWaterData(LLONG lLoginID, NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO* pstuInParam, NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO* pstuOutParam, int nWaitTime); ///@brief 开始水质检测报表数据查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindWaterDataStatServer(LLONG lLoginID, NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO* pstuInParam, NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO* pstuOutParam, int nWaitTime); ///@brief 水质检测报表数据查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DoFindWaterDataStatServer(LLONG lLoginID, NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO* pstuInParam, NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO* pstuOutParam, int nWaitTime); ///@brief 停止水质检测报表数据查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StopFindWaterDataStatServer(LLONG lLoginID, NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO* pstuInParam, NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO* pstuOutParam, int nWaitTime); /***************************水质检测接口 end***************************************************/ /***************************视频会议MCU会议管理接口 start***************************************************/ ///@brief 参加会议终端信息 typedef struct tagNET_VIDEO_MCU_MEMBER_INFO { char szTerminalId[16]; // 终端Id char szName[128]; // 终端名称 BOOL bAppeared; // 是否出席会议 BOOL bCreator; // 是否会议创建者 BOOL bChairman; // 是否会议主席 BOOL bPresented; // 是否开启演示 BOOL bMicOpen; // 是否开麦 char szReserved[1020]; // 预留字节 }NET_VIDEO_MCU_MEMBER_INFO; ///@brief 会议信息 typedef struct tagNET_VIDEO_MCU_CONFERENCE_INFO { char szId[16]; // 会议Id,唯一标识会议,随机生成,不可修改 char szName[128]; // 会议名称 char szPassword[128]; // 会议明文密码 char szType[32]; // 会议类型,"Instant":即时会议,"Bespeak":预约会议 char szState[32]; // 会议状态,"UnStart":未开始,"Meeting":会议中,"Finished":已结束 NET_TIME_EX stuStartTime; // 会议开始时间 NET_TIME_EX stuEndTime; // 会议结束时间 NET_VIDEO_MCU_MEMBER_INFO stuMember[32]; // 参加会议终端信息 int nMemberNum; // 参加会议终端信息个数 UINT nTime; // 会议真实时长,单位秒 char szCreatorId[16]; // 会议创建者Id,,终端创建则传终端Id,MCU创建则传"MCU" char szCreatorName[128]; // 会议创建者名称,终端创建则传终端名称,MCU创建则传"MCU" char szReserved[1024]; // 预留字节 }NET_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_CreateVideoMcuConference 输入参数 typedef struct tagNET_IN_CREATE_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_VIDEO_MCU_CONFERENCE_INFO stuConference; // 会议信息 char szHandlers[16]; // 会控管理操作者,终端创建传终端Id,MCU创建传"MCU" }NET_IN_CREATE_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_CreateVideoMcuConference 输出参数 typedef struct tagNET_OUT_CREATE_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_CREATE_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_ApplyVideoMcuConferenceID 输入参数 typedef struct tagNET_IN_APPLY_VIDEO_MCU_CONFERENCEID_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_APPLY_VIDEO_MCU_CONFERENCEID_INFO; ///@brief CLIENT_ApplyVideoMcuConferenceID 输出参数 typedef struct tagNET_OUT_APPLY_VIDEO_MCU_CONFERENCEID_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szId[16]; // 会议Id }NET_OUT_APPLY_VIDEO_MCU_CONFERENCEID_INFO; ///@brief CLIENT_FinishVideoMcuConference 输入参数 typedef struct tagNET_IN_FINISH_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szConferenceId[16]; // 会议ID char szHandlers[16]; // 会控管理操作者,终端结束传终端Id,MCU结束传"MCU" }NET_IN_FINISH_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_FinishVideoMcuConference 输出参数 typedef struct tagNET_OUT_FINISH_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_FINISH_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_ExitVideoMcuConference 输入参数 typedef struct tagNET_IN_EXIT_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szConferenceId[16]; // 会议ID char szTerminalId[16]; // 退会的终端Id char szHandlers[16]; // 会控管理操作者,终端退出传终端Id,MCU退出传"MCU" }NET_IN_EXIT_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_ExitVideoMcuConference 输出参数 typedef struct tagNET_OUT_EXIT_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_EXIT_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_ModifyVideoMcuConference 输入参数 typedef struct tagNET_IN_MODIFY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_VIDEO_MCU_CONFERENCE_INFO stuConference; // 会议信息 char szHandlers[16]; // 会控管理操作者,终端修改传终端Id,MCU修改传"MCU" }NET_IN_MODIFY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_ModifyVideoMcuConference 输出参数 typedef struct tagNET_OUT_MODIFY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_MODIFY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_OpenMicVideoMcuConference 输入参数 typedef struct tagNET_IN_OPENMIC_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szConferenceId[16]; // 会议ID char szTerminalId[32][16]; // 终端Id,字段为空或者不存在就对会议所有终端有效 int nTerminalIdNum; // 终端Id个数 char szHandlers[16]; // 会控管理操作者,终端开启传终端Id,MCU开启传"MCU" }NET_IN_OPENMIC_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_OpenMicVideoMcuConference 输出参数 typedef struct tagNET_OUT_OPENMIC_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_OPENMIC_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_CloseMicVideoMcuConference 输入参数 typedef struct tagNET_IN_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szConferenceId[16]; // 会议ID char szTerminalId[32][16]; // 终端Id,字段为空或者不存在就对会议所有终端有效 int nTerminalIdNum; // 终端Id个数 char szHandlers[16]; // 会控管理操作者,终端关闭传终端Id,MCU关闭传"MCU" }NET_IN_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_CloseMicVideoMcuConference 输出参数 typedef struct tagNET_OUT_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_GetVideoMcuConference 输入参数 typedef struct tagNET_IN_GET_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szConferenceId[16]; // 会议Id,为空或者字段不存在时查询所有 char szTerminalId[16]; // 终端Id,字段为空或者不存在就对会议所有终端有效 BOOL bIsParticipating; // true查询终端Id正参与的会议,false或字段不在时返回终端Id所有能参与的会议 }NET_IN_GET_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_GetVideoMcuConference 输出参数 typedef struct tagNET_OUT_GET_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nConferenceNum; // 会议信息个数 NET_VIDEO_MCU_CONFERENCE_INFO stuConference[16]; // 会议信息 }NET_OUT_GET_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_StartQueryVideoMcuConference 输入参数 typedef struct tagNET_IN_START_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_TIME_EX stuStartTime; // 会议开始时间 字段为空或者不存在就查询所有 NET_TIME_EX stuEndTime; // 会议结束时间 字段为空或者不存在就查询所有 }NET_IN_START_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_StartQueryVideoMcuConference 输出参数 typedef struct tagNET_OUT_START_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTotal; // 查询到的会议信息总数 int nFindId; // 查询Id号 }NET_OUT_START_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_QueryVideoMcuConference 输入参数 typedef struct tagNET_IN_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nFindId; // 查询Id号 int nOffset; // 开始查询偏移 Offset >=0 int nCount; // 需要查询的个数 Count >0 }NET_IN_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_QueryVideoMcuConference 输出参数 typedef struct tagNET_OUT_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nConferenceNum; // 会议信息个数 NET_VIDEO_MCU_CONFERENCE_INFO stuConference[16]; // 会议信息,当查询到的个数小于需要查询的个数时结束查询 }NET_OUT_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_StopQueryVideoMcuConference 输入参数 typedef struct tagNET_IN_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nFindId; // 查询Id号 }NET_IN_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief CLIENT_StopQueryVideoMcuConference 输出参数 typedef struct tagNET_OUT_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO; ///@brief 创建会议 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CreateVideoMcuConference(LLONG lLoginID, NET_IN_CREATE_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_CREATE_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 申请会议ID ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ApplyVideoMcuConferenceID(LLONG lLoginID, NET_IN_APPLY_VIDEO_MCU_CONFERENCEID_INFO* pstuInParam, NET_OUT_APPLY_VIDEO_MCU_CONFERENCEID_INFO* pstuOutParam, int nWaitTime); ///@brief 结束会议 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_FinishVideoMcuConference(LLONG lLoginID, NET_IN_FINISH_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_FINISH_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 退出会议 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ExitVideoMcuConference(LLONG lLoginID, NET_IN_EXIT_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_EXIT_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 修改会议 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ModifyVideoMcuConference(LLONG lLoginID, NET_IN_MODIFY_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_MODIFY_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 开启会议麦克风 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_OpenMicVideoMcuConference(LLONG lLoginID, NET_IN_OPENMIC_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_OPENMIC_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 关闭会议麦克风 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CloseMicVideoMcuConference(LLONG lLoginID, NET_IN_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_CLOSEMIC_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 获取未结束会议信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetVideoMcuConference(LLONG lLoginID, NET_IN_GET_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_GET_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 开始查询已结束会议信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartQueryVideoMcuConference(LLONG lLoginID, NET_IN_START_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_START_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 查询历史会议信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_QueryVideoMcuConference(LLONG lLoginID, NET_IN_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); ///@brief 结束会议查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StopQueryVideoMcuConference(LLONG lLoginID, NET_IN_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuInParam, NET_OUT_STOP_QUERY_VIDEO_MCU_CONFERENCE_INFO* pstuOutParam, int nWaitTime); /***************************视频会议MCU会议管理接口 end****************************************************/ /***************************视频会议MCU终端管理接口 start****************************************************/ ///@brief 终端信息 typedef struct tagNET_TERMINAL_INFO { char szId[16]; // 终端Id 唯一标识终端 不做修改 char szName[128]; // 终端名称 char szPassword[128]; // 终端明文密码 BOOL bOnline; // 终端是否在线 char szReserved[256]; // 预留字节 }NET_TERMINAL_INFO; ///@brief CLIENT_AddVideoMcuTerminal 输入参数 typedef struct tagNET_IN_ADD_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_TERMINAL_INFO stuTerminalInfo; // 终端信息 }NET_IN_ADD_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_AddVideoMcuTerminal 输出参数 typedef struct tagNET_OUT_ADD_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ADD_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_ApplyVideoMcuTerminalID 输入参数 typedef struct tagNET_IN_APPLY_VIDEO_MCU_TERMINALID_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_APPLY_VIDEO_MCU_TERMINALID_INFO; ///@brief CLIENT_ApplyVideoMcuTerminalID 输出参数 typedef struct tagNET_OUT_APPLY_VIDEO_MCU_TERMINALID_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szId[16]; // 随机生成的终端Id }NET_OUT_APPLY_VIDEO_MCU_TERMINALID_INFO; ///@brief CLIENT_ModifyVideoMcuTerminal 输入参数 typedef struct tagNET_IN_MODIFY_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_TERMINAL_INFO stuTerminalInfo; // 终端信息 }NET_IN_MODIFY_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_ModifyVideoMcuTerminal 输出参数 typedef struct tagNET_OUT_MODIFY_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_MODIFY_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_DeleteVideoMcuTerminal 输入参数 typedef struct tagNET_IN_DELETE_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szId[16]; // 终端Id }NET_IN_DELETE_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_DeleteVideoMcuTerminal 输出参数 typedef struct tagNET_OUT_DELETE_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_DELETE_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_GetAllVideoMcuTerminal 输入参数 typedef struct tagNET_IN_GETALL_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GETALL_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_GetAllVideoMcuTerminal 输出参数 typedef struct tagNET_OUT_GETALL_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTerminalInfoNum; // 终端信息个数 NET_TERMINAL_INFO stuTerminalInfo[32]; // 终端信息 }NET_OUT_GETALL_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_GetVideoMcuTerminal 输入参数 typedef struct tagNET_IN_GET_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szTerminalId[16]; // 终端 Id }NET_IN_GET_VIDEO_MCU_TERMINAL_INFO; ///@brief CLIENT_GetVideoMcuTerminal 输出参数 typedef struct tagNET_OUT_GET_VIDEO_MCU_TERMINAL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_TERMINAL_INFO stuTerminalInfo; // 终端信息 }NET_OUT_GET_VIDEO_MCU_TERMINAL_INFO; ///@brief 添加视频会议终端 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AddVideoMcuTerminal(LLONG lLoginID, NET_IN_ADD_VIDEO_MCU_TERMINAL_INFO* pstuInParam, NET_OUT_ADD_VIDEO_MCU_TERMINAL_INFO* pstuOutParam, int nWaitTime); ///@brief 申请视频会议终端Id ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ApplyVideoMcuTerminalID(LLONG lLoginID, NET_IN_APPLY_VIDEO_MCU_TERMINALID_INFO* pstuInParam, NET_OUT_APPLY_VIDEO_MCU_TERMINALID_INFO* pstuOutParam, int nWaitTime); ///@brief 修改视频会议终端 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_ModifyVideoMcuTerminal(LLONG lLoginID, NET_IN_MODIFY_VIDEO_MCU_TERMINAL_INFO* pstuInParam, NET_OUT_MODIFY_VIDEO_MCU_TERMINAL_INFO* pstuOutParam, int nWaitTime); ///@brief 删除视频会议终端 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DeleteVideoMcuTerminal(LLONG lLoginID, NET_IN_DELETE_VIDEO_MCU_TERMINAL_INFO* pstuInParam, NET_OUT_DELETE_VIDEO_MCU_TERMINAL_INFO* pstuOutParam, int nWaitTime); ///@brief 获取全部视频会议终端信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetAllVideoMcuTerminal(LLONG lLoginID, NET_IN_GETALL_VIDEO_MCU_TERMINAL_INFO* pstuInParam, NET_OUT_GETALL_VIDEO_MCU_TERMINAL_INFO* pstuOutParam, int nWaitTime); ///@brief 获取视频会议终端信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_GetVideoMcuTerminal(LLONG lLoginID, NET_IN_GET_VIDEO_MCU_TERMINAL_INFO* pstuInParam, NET_OUT_GET_VIDEO_MCU_TERMINAL_INFO* pstuOutParam, int nWaitTime); /***************************视频会议MCU终端管理接口 end****************************************************/ /***************************精准客流统计Start***************************************************/ ///@brief 区域内分时人数 typedef struct tagNET_CLUSTER_INFO { NET_TIME stuStartTime; // 该条记录开始时间 NET_TIME stuEndTime; // 该条记录开始时间 TP_U64 nTotalNum; // 区域人数 }NET_CLUSTER_INFO; ///@brief 报表详细数据 typedef struct tagNET_CLUSTER_RESULT_DETAIL { char szAreaName[64]; // 区域名 int nAreaID; // 区域ID NET_CLUSTER_INFO stuClusterInfo[300]; // 报表详细数据 int nClusterInfoNum; // 报表详细数据的有效个数 }NET_CLUSTER_RESULT_DETAIL; ///@brief 聚档结果报表 typedef struct tagNET_CLUSTER_RESULT_INFO { char szRuleType[64]; // 上报的数据报表类型 NET_CLUSTER_RESULT_DETAIL stuClusterResultDetail[50]; // 报表详细数据,最大值50 int nClusterResultDetailNum; // 报表详细数据的有效个数 TP_U64 nCustomerBatchTotal; // 返回的人数今日批次总数 int nBatchNo; // 上报记录的批次号 int nTotal; // 当前批次总记录数 int nIndex; // 当前记录 char szReserved[256]; // 保留字节 }NET_CLUSTER_RESULT_INFO; ///@brief 回调聚档报表 typedef struct tagNET_CLUSTER_RESULT { NET_CLUSTER_RESULT_INFO stuClusterResultInfo; // 聚档结果报表 char szReserved[256]; // 保留字节 }NET_CLUSTER_RESULT; ///@brief 接口 CLIENT_AttachClusterResult回调函数 typedef void (CALLBACK *fNotifyClusterResult)(LLONG lClusterResultHandle, NET_CLUSTER_RESULT* pstuClusterResult, LDWORD dwUser); ///@brief 接口 CLIENT_AttachClusterResult 的输入参数 typedef struct tagNET_IN_ATTACH_CLUSTER_RESULT { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyClusterResult cbNotifyClusterResult; // 回调聚档报表函数 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_CLUSTER_RESULT; ///@brief 接口 CLIENT_AttachClusterResult 的输出参数 typedef struct tagNET_OUT_ATTACH_CLUSTER_RESULT { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_CLUSTER_RESULT; ///@brief 订阅聚档报表结果 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachClusterResult(LLONG lLoginID, NET_IN_ATTACH_CLUSTER_RESULT* pstInParam, NET_OUT_ATTACH_CLUSTER_RESULT* pstOutParam , int nWaitTime); ///@brief 取消订阅聚档报表结果,lClusterResultHandle 为 CLIENT_AttachClusterResult 返回的句柄 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachClusterResult(LLONG lClusterResultHandle); ///@brief 区域绑定信息 typedef struct tagNET_CLUSTER_AREA_INFO { int nAreaID; // 区域绑定信息的个数 int nChannelNum; // 通道编号的有效个数 int nChannels[128]; // 该区域包含的通道编号 char szAreaName[64]; // 区域名称 char szReserved[256]; // 保留字节 }NET_CLUSTER_AREA_INFO; ///@brief 批次统计规则信息 typedef struct tagNET_CLUSTER_BATCH_RULE { int nAppearTimes; // 同时出现次数 int nAppearInterval; // 出现的时间间隔 char szReserved[256]; // 保留字节 }NET_CLUSTER_BATCH_RULE; ///@brief 营业时间 typedef struct tagNET_CLUSTER_BUSINESS_HOUR { int nBusinessStart; // 营业开始时间(24小时制) int nBusinessEnd; // 营业结束时间(24小时制) int nBusinessStartMinute; // 营业开始时间颗粒度可设置成分钟(配合BusinessStart使用) int nBusinessEndMinute; // 营业结束时间颗粒度可设置成分钟(配合BusinessEnd使用) char szReserved[248]; // 保留字节 }NET_CLUSTER_BUSINESS_HOUR; ///@brief 粒度类型 typedef enum tagEM_CLUSTER_GRANULARITY_TYPE { EM_CLUSTER_GRANULARITY_TYPE_UNKNOWN, // 未知 EM_CLUSTER_GRANULARITY_TYPE_MINUTE, // 分钟粒度 EM_CLUSTER_GRANULARITY_TYPE_HOUR, // 小时颗粒度 }EM_CLUSTER_GRANULARITY_TYPE; ///@brief 报表统计颗粒度 typedef struct tagNET_GRANULARITY_INFO { EM_CLUSTER_GRANULARITY_TYPE emGranularity; // 粒度类型 int nCycle; // 与emGranularity结合使用,如emGranularity为EM_GRANULARITY_TYPE_MINUTE, Cycle值为5,表示以5分钟统计周期上报数据,上层限制最小单位5分钟 char szReserved[256]; // 保留字节 }NET_GRANULARITY_INFO; ///@brief 接口 CLIENT_SetClusterRule 的输入参数 typedef struct tagNET_IN_SET_CLUSTER_RULE { DWORD dwSize; // 此结构体大小,必须赋值 char szRuleType[32]; // 区分类型: "BusiniessHour"时,取营业开始结束时间。 "AreaInfo"时,更新区域信息。 "BatchRule"时,取BatchRuler人数批次统计规则信息。 "GranularityInfo"时,取GranularityInfo上报颗粒度信息 NET_CLUSTER_AREA_INFO* pstuAreaInfo; // 区域绑定信息, 用户分配内存,大小为sizeof(NET_CLUSTER_AREA_INFO)*nNumAreaInfoNum int nNumAreaInfoNum; // 区域绑定信息的个数, 最大值1024 NET_CLUSTER_BATCH_RULE stuBatchRule; // 批次统计规则信息 NET_CLUSTER_BUSINESS_HOUR stuBusinessHour; // 营业时间 NET_GRANULARITY_INFO stuGranularityInfo; // 报表统计颗粒度 }NET_IN_SET_CLUSTER_RULE; ///@brief 接口 CLIENT_SetClusterRule 的输出参数 typedef struct tagNET_OUT_SET_CLUSTER_RULE { DWORD dwSize; // 此结构体大小,必须赋值 int nState; // 状态码: 0为成功今日生效,1隔天生效,2为参数不合法, -1其他未知原因失败 }NET_OUT_SET_CLUSTER_RULE; ///@brief 设置客流聚档相关配置 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetClusterRule(LLONG lLoginID, NET_IN_SET_CLUSTER_RULE* pstInParam, NET_OUT_SET_CLUSTER_RULE* pstOutParam , int nWaitTime); ///@brief 查询条件 typedef struct tagNET_CLUSTER_CONDITION { NET_TIME stuDate; // 查询的记录时间,已当天营业开始时间为准 char szRuleType[32]; // 查询的类型, "DailyClusterReport" 每日聚档数据 int nAreaIDNum; // 区域ID的个数, 最大为50 int nAreaID[50]; // 区域ID, 若包含-1,则认为查询全区域,否则不超过50条 char szReserved[256]; // 保留字节 }NET_CLUSTER_CONDITION; ///@brief 接口 CLIENT_StartFindNumberStatCluster 的输入参数 typedef struct tagNET_IN_START_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 NET_CLUSTER_CONDITION stuCondition; // 查询条件 }NET_IN_START_FIND_CLUSTER; ///@brief 接口 CLIENT_StartFindNumberStatCluster 的输出参数 typedef struct tagNET_OUT_START_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 取到的查询令牌 int nTotalCount; // 符合此次查询结构的总条数 }NET_OUT_START_FIND_CLUSTER; ///@brief 开始查询已归档的历史数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindNumberStatCluster(LLONG lLoginID, NET_IN_START_FIND_CLUSTER* pstInParam, NET_OUT_START_FIND_CLUSTER* pstOutParam , int nWaitTime); ///@brief 接口 CLIENT_DoFindNumberStatCluster 的输入参数 typedef struct tagNET_IN_DO_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 取到的查询令牌 int nBeginNumber; // 查询开始序列号 int nCount; // 查询的记录条数(单次最多50) }NET_IN_DO_FIND_CLUSTER; ///@brief 接口 CLIENT_DoFindNumberStatCluster 的输出参数 typedef struct tagNET_OUT_DO_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 char szRuleType[64]; // 聚档结果报表 int nFound; // 查询到的记录条数,单次最多50 TP_U64 nBatchTotal; // 今日统计区域内总批次数 NET_CLUSTER_RESULT_DETAIL* pstuClusterResultDetail; // 人数聚档报表结果(按区域纬度),用户分配内存,大小为sizeof(NET_CLUSTER_RESULT_DETAIL)*nClusterResultDetailNum int nClusterResultDetailNum; // 人数聚档报表结果的个数, 最大值为50 int nRetClusterResultDetailNum; // 返回的人数聚档报表结果的有效个数, 单次最多50 }NET_OUT_DO_FIND_CLUSTER; ///@brief 获取查询结果已归档的历史数据 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindNumberStatCluster(LLONG lLoginID, NET_IN_DO_FIND_CLUSTER* pstInParam, NET_OUT_DO_FIND_CLUSTER* pstOutParam , int nWaitTime); ///@brief 接口 CLIENT_StopFindNumberStatCluster 的输入参数 typedef struct tagNET_IN_STOP_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 分配的令牌 }NET_IN_STOP_FIND_CLUSTER; ///@brief 接口 CLIENT_StopFindNumberStatCluster 的输出参数 typedef struct tagNET_OUT_STOP_FIND_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_FIND_CLUSTER; ///@brief 停止查询 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindNumberStatCluster(LLONG lLoginID, NET_IN_STOP_FIND_CLUSTER* pstInParam, NET_OUT_STOP_FIND_CLUSTER* pstOutParam , int nWaitTime); ///@brief 查询条件 typedef struct tagNET_CLUSTER_DETAIL_CONDITION { int nClusterDate; // 聚档周期Key, 一次只能查询一个聚档周期内的数据,必填.与开始结束时间取交集 BOOL bIsNeedProfileID; // 是否需要过滤ProfileID int nProfileID; // 聚档结果ID,如果不带该字段或为空,则默认不过滤ProfileID char szReserved[256]; // 保留字节 }NET_CLUSTER_DETAIL_CONDITION; ///@brief 接口 CLIENT_StartFindDetailNumberStatCluster 的输入参数 typedef struct tagNET_IN_START_FIND_DETAIL_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 NET_CLUSTER_DETAIL_CONDITION stuCondition; // 查询条件 }NET_IN_START_FIND_DETAIL_CLUSTER; ///@brief 接口 CLIENT_StartFindDetailNumberStatCluster 的输出参数 typedef struct tagNET_OUT_START_FIND_DETAIL_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 取到的查询令牌 UINT nCount; // 记录总数 NET_TIME_EX stuClusterBeginTime; // 查询该天的营业开始时间 NET_TIME_EX stuClusterEndTime; // 查询该天的营业结束时间 }NET_OUT_START_FIND_DETAIL_CLUSTER; ///@brief 区分报表查询, 单独实现一套全量查询数据接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindDetailNumberStatCluster(LLONG lLoginID, NET_IN_START_FIND_DETAIL_CLUSTER* pstInParam, NET_OUT_START_FIND_DETAIL_CLUSTER* pstOutParam , int nWaitTime); ///@brief 接口 CLIENT_DoFindDetailNumberStatCluster 的输入参数 typedef struct tagNET_IN_DO_FIND_DETAIL_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // start接口返回的token, token保存的数量有限, 未stop的会在连接销毁时或队列满时被释放, 再用同一token访问会导致失败 UINT nStartIndex; // 查询记录的开始偏移 UINT nCount; // 查询的记录数,单次不超过1024 }NET_IN_DO_FIND_DETAIL_CLUSTER; ///@brief 查询返回的记录信息 typedef struct tagNET_CLUSTER_DETAIL_FIND_INFO { INT64 nRcNo; // 设备端数据库ID char szTrackID[40]; // 人员记录的唯一Key, 取32位uuid, 实际有效长度32, 由于最后一位取'\0', 数组长度扩展为40 INT64 nProfileID; // 聚档结果ID, 对应平台的sessionID, -1及小于0的代表无效记录 INT64 nChannel; // 抓拍通道号 int nAge; // 年龄, 参照人体按照年龄段上报, 0.unknow 未知, 1.child 儿童, 2.young 青年, 3.adult 成年, 4.old 老年 int nGender; // 性别 0.Unknow 未知, 1.male 男, 2.female 女, 3.other 其他 int nStaffType; // 是否为员工类,算法上报, -1 非该类, 0 未知, 1 是员工类 NET_TIME_EX stuEventTime; // 事件发生的时间 int nHumanState; // 人员的经过属性, 0 进, 1 出, 2 过 char szEmotion[20]; // 表情 char szReserved[44]; // 保留字节 }NET_CLUSTER_DETAIL_FIND_INFO; ///@brief 接口 CLIENT_DoFindDetailNumberStatCluster 的输出参数 typedef struct tagNET_OUT_DO_FIND_DETAIL_CLUSTER { DWORD dwSize; // 此结构体大小,必须赋值 UINT nFound; // 实际查询返回的记录数 int nFindInfoRealNum; // 返回记录实际条数 NET_CLUSTER_DETAIL_FIND_INFO stuClusterFindInfo[1024]; // 返回的记录,单次不超过1024 }NET_OUT_DO_FIND_DETAIL_CLUSTER; ///@brief 分批查询全量记录 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindDetailNumberStatCluster(LLONG lLoginID, NET_IN_DO_FIND_DETAIL_CLUSTER* pstInParam, NET_OUT_DO_FIND_DETAIL_CLUSTER* pstOutParam , int nWaitTime); ///@brief 接口 CLIENT_StopFindDetailNumberStatCluster 的输入参数 typedef struct tagNET_IN_STOP_FIND_DETAIL_CLUSTER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // start接口返回的token, token仅会保存 }NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO; ///@brief 接口 CLIENT_StopFindDetailNumberStatCluster 的输出参数 typedef struct tagNET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO; ///@brief 停止查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindDetailNumberStatCluster(LLONG lLoginID, NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO* pstInParam, NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO* pstOutParam , int nWaitTime); ///@brief 查询排序方式 typedef enum tagEM_SMD_ORDER_TYPE { EM_SMD_ORDER_TYPE_UNKNOWN, // 未知 EM_SMD_ORDER_TYPE_ASCORDER, // 升序 EM_SMD_ORDER_TYPE_DESORDER, // 降序 }EM_SMD_ORDER_TYPE; ///@brief 查询条件 typedef struct tagNET_SMD_DATA_CONDITION { int nChannel; // 通道号,-1表示查询所有通道 int nChannelNum; // 通道号数组数量,为0时nChannel字段有效,非0时nChannels字段有效 int nChannels[128]; // 通道号数组,从0开始Channel与Channels字段至少需要有一个,一般不应该都存在,如果都存在,以Channels为准 EM_SMD_RECORD_TYPE emSmdRecordType[8]; // 需要查询的SMD录像类型 int nSmdRecordTypeNum; // 需要查询的SMD录像类型个数 EM_SMD_ORDER_TYPE emOrder; // 查询排序方式 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szReserved[256]; // 保留字节 }NET_SMD_DATA_CONDITION; ///@brief 接口 CLIENT_StartFindSMDData 的输入参数 typedef struct tagNET_IN_START_FIND_SMD_DATA { DWORD dwSize; // 结构体大小 NET_SMD_DATA_CONDITION stuCondition; // 查询条件 }NET_IN_START_FIND_SMD_DATA; ///@brief 接口 CLIENT_StartFindSMDData 的输出参数 typedef struct tagNET_OUT_START_FIND_SMD_DATA { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // 返回查询id int nCount; // 查询到的总条数 }NET_OUT_START_FIND_SMD_DATA; ///@brief 开始查询SMD数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindSMDData(LLONG lLoginID, const NET_IN_START_FIND_SMD_DATA* pstuInParam, NET_OUT_START_FIND_SMD_DATA* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_DoFindSMDData 的输入参数 typedef struct tagNET_IN_DO_FIND_SMD_DATA { DWORD dwSize; // 此结构体大小 int nToken; // 查询id int nOffset; // 开始查询的位置偏移 int nCount; // 查询条数,单次不超过1024 }NET_IN_DO_FIND_SMD_DATA; ///@brief 查询返回的记录信息 typedef struct tagNET_SMD_DATA_INFO { int nChannel; // 通道号,从0开始 EM_SMD_RECORD_TYPE emSmdRecordType; // 录像类型 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 char szReserved[64]; // 保留字节 }NET_SMD_DATA_INFO; ///@brief 接口 CLIENT_DoFindSMDData 的输出参数 typedef struct tagNET_OUT_DO_FIND_SMD_DATA { DWORD dwSize; // 结构体大小 int nFindInfoNum; // 返回记录实际条数 NET_SMD_DATA_INFO stuSMDDataInfo[1024]; // 返回的记录,单次不超过1024 }NET_OUT_DO_FIND_SMD_DATA; ///@brief 分批查询SMD数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindSMDData(LLONG lLoginID, const NET_IN_DO_FIND_SMD_DATA* pstuInParam, NET_OUT_DO_FIND_SMD_DATA* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_StopFindSMDData 的输入参数 typedef struct tagNET_IN_STOP_FIND_SMD_DATA { DWORD dwSize; // 此结构体大小,必须赋值 int nToken; // start接口返回的token, token仅会保存 }NET_IN_STOP_FIND_SMD_DATA; ///@brief 接口 CLIENT_StopFindSMDData 的输出参数 typedef struct tagNET_OUT_STOP_FIND_SMD_DATA { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_STOP_FIND_SMD_DATA; ///@brief 停止查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindSMDData(LLONG lLoginID, const NET_IN_STOP_FIND_SMD_DATA* pstuInParam, NET_OUT_STOP_FIND_SMD_DATA* pstuOutParam , int nWaitTime); ///@brief 接口 CLIENT_GetClusterState 的输入参数 typedef struct tagNET_IN_GET_CLUSTER_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nClusterDate; // 非必选, 当包含该字段时查对应日期的聚档状态, 否则返回最近一次的状态 }NET_IN_GET_CLUSTER_STATE_INFO; ///@brief 接口 CLIENT_GetClusterState 的输出参数 typedef struct tagNET_OUT_GET_CLUSTER_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nClusterState; // 当前聚档状态 1.已完成. 2.进行中 3.聚档失败 NET_TIME_EX stuDealTime; // 记录更新时间,已设备本地时间为准 int nClusterData; // 聚档触发时间, 按照年月日记录, 作为聚档的唯一key, 单设备每日只有一条聚档记录.如20220530则表示在20220530当日已经聚档 int nClusterType; // 上次聚档类型: 1.自动每日聚档 2.平台下发手动聚档 3.手动测试触发 4.聚档主动失败重试 }NET_OUT_GET_CLUSTER_STATE_INFO; ///@brief 平台主动获取设备聚档状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetClusterState(LLONG lLoginID, NET_IN_GET_CLUSTER_STATE_INFO* pstInParam, NET_OUT_GET_CLUSTER_STATE_INFO* pstOutParam , int nWaitTime); /***************************精准客流统计End***************************************************/ /***************************智能卡接口Start***************************************************/ ///@brief CLIENT_GetChipUsageInfo 接口输入参数 typedef struct tagNET_IN_GET_CHIP_USAGE_INFO { DWORD dwSize; // 结构体大小 char szchip[16]; // 指定子卡Id, 为All时表示获取所有智能卡的运行情况 } NET_IN_GET_CHIP_USAGE_INFO; ///@brief 智能卡功能状态 typedef enum tagEM_CHIP_USAGE_FUNCTION_STATE { EM_CHIP_USAGE_FUNCTION_STATE_UNKNWON = 0, // 未知 EM_CHIP_USAGE_FUNCTION_STATE_COMPRESS, // 正在进行智能压缩 EM_CHIP_USAGE_FUNCTION_STATE_INTELLI, // 正在进行智能分析 EM_CHIP_USAGE_FUNCTION_STATE_COMBINATION, // 正在进行智能分析和智能压缩 EM_CHIP_USAGE_FUNCTION_STATE_SWITCHTOCOMPRESS, // 正在切换到智能压缩功能 EM_CHIP_USAGE_FUNCTION_STATE_SWITCHTOINTELLI, // 正在切换到智能分析功能 EM_CHIP_USAGE_FUNCTION_STATE_SWITCHTOCOMBINA, // 正在切换到混合模式 EM_CHIP_USAGE_FUNCTION_STATE_ERROR, // 智能卡错误不可用 } EM_CHIP_USAGE_FUNCTION_STATE; ///@brief 智能卡信息 typedef struct tagNET_CHIP_USAGE_INFO { char szchip[16]; // 指定子卡Id, 为All时表示获取所有智能卡的运行情况 EM_CHIP_USAGE_FUNCTION_STATE emFunctionalState; // 智能卡功能状态 UINT nCompressUsagePercent; // 智能压缩功能运行使用情况,压缩能力利用百分比单位:% int nVideoChannel[128]; // 智能分析功能运行使用情况,智能卡上正在进行智能分析的本地通道号 int nVideoChannelNum; // 智能卡上正在进行智能分析的本地通道号个数 char szReserved[512]; // 预留字节 } NET_CHIP_USAGE_INFO; ///@brief CLIENT_GetChipUsageInfo 接口输出参数 typedef struct tagNET_OUT_GET_CHIP_USAGE_INFO { DWORD dwSize; // 结构体大小 int nChipUsageInfoNum; // 智能卡个数 NET_CHIP_USAGE_INFO stuChipUsageInfo[64]; // 智能卡信息 } NET_OUT_GET_CHIP_USAGE_INFO; ///@brief 获取智能卡的运行使用情况 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetChipUsageInfo(LLONG lLoginID, const NET_IN_GET_CHIP_USAGE_INFO *pInParam, NET_OUT_GET_CHIP_USAGE_INFO *pOutParam, int nWaitTime); ///@brief CLIENT_GetPeripheralChipStateByID 接口输入参数 typedef struct tagNET_IN_GET_CHIP_STATE_BYID_INFO { DWORD dwSize; // 结构体大小 int nListNum; // List数组个数 char szList[32][16]; // nListNum为1 list[0]为"All"时表示获取全部从片状态 } NET_IN_GET_CHIP_STATE_BYID_INFO; ///@brief 从片状态 typedef enum tagEM_CHIP_STATE { EM_CHIP_STATE_UNKNWON = 0, // 未知 EM_CHIP_STATE_NORMAL, // 正常 EM_CHIP_STATE_EXCEPTION, // 异常 EM_CHIP_STATE_NOTRUNNING, // 未运行 } EM_CHIP_STATE; ///@brief 卡片状态信息 typedef struct tagNET_CHIP_STATE_INFO { char szChip[16]; // 从片信息 EM_CHIP_STATE emChipState; // 从片状态 char szReserved[128]; // 预留字节 } NET_CHIP_STATE_INFO; ///@brief CLIENT_GetPeripheralChipStateByID 接口输出参数 typedef struct tagNET_OUT_GET_CHIP_STATE_BYID_INFO { DWORD dwSize; // 结构体大小 int nChipStateInfoNum; // 卡片状态信息个数 NET_CHIP_STATE_INFO stuChipStateInfo[32]; // 卡片状态信息 } NET_OUT_GET_CHIP_STATE_BYID_INFO; ///@brief 获取从片状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPeripheralChipStateByID(LLONG lLoginID, const NET_IN_GET_CHIP_STATE_BYID_INFO *pstuInParam, NET_OUT_GET_CHIP_STATE_BYID_INFO *pstuOutParam, int nWaitTime); /***************************智能卡接口End***************************************************/ /***************************车牌库接口Start***************************************************/ ///@brief CLIENT_CreateGroupForVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 char szGroupName[128]; // 车辆组名称 char szGroupDetail[256]; // 车辆组备注信息 int nGroupType; // 车辆组类型,0:代表允许,1:代表禁止 } NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB; ///@brief CLIENT_CreateGroupForVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 char szGroupID[64]; // 车辆组标识 } NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB; ///@brief 创建车辆组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CreateGroupForVehicleRegisterDB(LLONG lLoginID, const NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB *pInParam, NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB *pOutParam, int nWaitTime); ///@brief CLIENT_DeleteGroupFromVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 char szGroupID[64]; // 车辆组标识, 为空时表示删除全部车辆组 } NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB; ///@brief CLIENT_DeleteGroupFromVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB; ///@brief 删除车辆组 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteGroupFromVehicleRegisterDB(LLONG lLoginID, const NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB *pInParam, NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB *pOutParam, int nWaitTime); ///@brief CLIENT_MultiAppendToVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 int nVehicleNum; // 车辆个数 NET_VEHICLE_INFO* pstuVehicles; // 车辆信息, 用户分配内存,大小为sizeof(NET_VEHICLE_INFO)*nVehicleNum BOOL bReplace; // 遇到相同记录是否覆盖, TRUE覆盖, FALSE跳过 } NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB; ///@brief 车牌库操作错误码信息 typedef enum tagEM_VEHICLE_REG_DB_OPERATOR_ERRCODE { EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_UNKNWON = 0, // 未知 EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_SUCCESS, // 成功 EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_DB_ERROR, // 数据库操作失败 EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_NOT_EXIST, // 车牌库不存在 EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_EXCEED_MAX_NUM, // 超出车牌库数量限制 } EM_VEHICLE_REG_DB_OPERATOR_ERRCODE; ///@brief CLIENT_MultiAppendToVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 UINT nErrCodeNum; // 错误码个数, 逻辑上该数量跟NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB中的nVehicleNum保持一致 UINT nRetErrCodeNum; // 返回的错误码数量 EM_VEHICLE_REG_DB_OPERATOR_ERRCODE* pemErrCodes; // 错误码信息, 用户分配内存,大小为sizeof(EM_VEHICLE_REG_DB_OPERATOR_ERRCODE)*nErrCodeNum } NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB; ///@brief 向车牌库添加车辆信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiAppendToVehicleRegisterDB(LLONG lLoginID, const NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB *pInParam, NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB *pOutParam, int nWaitTime); ///@brief 删除车牌库中的车辆 过滤条件 typedef struct tagNET_DELETE_VEHICLE_CONDITION_INFO { char szPlateCountry[4]; // 车辆所在国家,2字节,符合ISO3166规范 char szPlateNumber[64]; // 车牌号码 int nVehicleType; // 车型(轿车、卡车等) // 001 巡逻车 // 002 交警车辆 // 003 消防车 // 004 单兵 // 005 其他警车 // 006 其他设备 // 020 政府车辆 // 031 校车 // 032 运钞车 // 033 客运车辆 // 034 公交车 // 035 出租车 // 036 危险品车辆 int nBrand; // 车辆车标,需要通过映射表得到真正的车标.同卡口事件的CarLogoIndex NET_COLOR_RGBA stuVehicleColor; // 车色 第一个元素表示红色分量值; 第二个元素表示绿色分量值; 第三个元素表示蓝色分量值; // 注意:第四个元素不再表示透明度分量,而用来表示车色字段是否是一个有效的过滤条件,0 - 无效的过滤条件,非0 - 有效的过滤条件 char szOwnerName[64]; // 车主名称 char szPersonID[32]; // 车主证件号码,工号,或其他编号 char szPhoneNo[128]; // 车主电话号码 char szEmail[32]; // 车主电子邮箱 char szHomeAddress[128]; // 车主家庭地址(IVSS需求) BYTE bReserved[512]; }NET_DELETE_VEHICLE_CONDITION_INFO; ///@brief CLIENT_DeleteByConditionFromVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 char szGroupID[64]; // 车辆组标识 NET_DELETE_VEHICLE_CONDITION_INFO stuDelCondition; // 删除车辆的过滤条件 DWORD dwUIDCnt; // 不删除的车辆列表有效个数 char szUIDList[1024][32]; // 不删除的车辆列表 } NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB; ///@brief CLIENT_DeleteByConditionFromVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB; ///@brief 按条件删除车牌库中的车牌 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteByConditionFromVehicleRegisterDB(LLONG lLoginID, const NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB *pInParam, NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB *pOutParam, int nWaitTime); ///@brief 车辆组信息 typedef struct tagNET_VEHICLE_GROUP_INFO { char szGroupID[64]; // 车辆组标识 char szGroupName[128]; // 车辆组名称 char szGroupDetail[256]; // 车辆组备注信息 int nGroupType; // 车辆组类型,0:未知 1:禁止列表 2:允许列表 char szReserved[512]; // 保留字段 }NET_VEHICLE_GROUP_INFO; ///@brief CLIENT_ModifyGroupForVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 NET_VEHICLE_GROUP_INFO stuGroupInfo; // 车辆组信息 } NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB; ///@brief CLIENT_ModifyGroupForVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB; ///@brief 修改车辆组 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyGroupForVehicleRegisterDB(LLONG lLoginID, const NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB *pstuInParam, NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief CLIENT_FindGroupFormVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 char szGroupID[64]; // 组ID,为空表示查找全部车辆组信息 } NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB; ///@brief 查找返回的车辆组信息 typedef struct tagNET_VEHICLE_GROUP_FOUND_INFO { char szGroupID[64]; // 车辆组标识 char szGroupName[128]; // 车辆组名称 char szGroupDetail[256]; // 车辆组备注信息 int nGroupType; // 车辆组类型,0:未知 1:禁止列表 2:允许列表 int nGroupSize; // 当前组内车辆数 int nChannels[1024]; // 当前组绑定到的视频通道号列表,未和任何视频通道关联为[-1] int nChannelsNum; // 返回视频通道号列表个数 char szReserved[508]; // 保留字段 }NET_VEHICLE_GROUP_FOUND_INFO; ///@brief CLIENT_FindGroupFormVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 int nGroupListNum; // 返回的车辆组数量 NET_VEHICLE_GROUP_FOUND_INFO stuGroupList[128]; //返回的车辆组信息 } NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB; ///@brief 查找车辆组信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_FindGroupFormVehicleRegisterDB(LLONG lLoginID, const NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB *pstuInParam, NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief CLIENT_ModifyVehicleForVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 NET_VEHICLE_INFO stuVehicleInfo; // 车辆信息 } NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB; ///@brief CLIENT_ModifyVehicleForVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB; ///@brief 修改车辆信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyVehicleForVehicleRegisterDB(LLONG lLoginID, const NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB *pstuInParam, NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief CLIENT_DeleteVehicleFromVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 UINT nUID; // 车辆唯一标识符 char szGroupID[64]; // 车辆组ID char szPlateNumber[64]; // 车牌 } NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB; ///@brief CLIENT_DeleteVehicleFromVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB; ///@brief 删除车辆信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteVehicleFromVehicleRegisterDB(LLONG lLoginID, const NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB *pstuInParam, NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief CLIENT_StartFindVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_START_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 NET_VEHICLE_INFO stuVehicleInfo; // 车辆信息 } NET_IN_START_FIND_VEHICLE_REG_DB; ///@brief CLIENT_StartFindVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_START_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 UINT nToken; // 取到的查询令牌 int nTotalCount; // 符合此次查询条件的结果总条数 } NET_OUT_START_FIND_VEHICLE_REG_DB; ///@brief 向指定注册库查询车辆 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartFindVehicleRegisterDB(LLONG lLoginID, const NET_IN_START_FIND_VEHICLE_REG_DB *pstuInParam, NET_OUT_START_FIND_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief 车辆查询条件 typedef struct tagNET_FIND_VEHICLE_CONDITION { UINT nToken; // 查询令牌 UINT nBeginNumber; // 查询起始序号 表示从beginNumber条记录开始,取count条记录返回;0<=beginNumber<= totalCount-1 int nCount; // 每次获取的条数 char szReserved[128]; // 保留字段 } NET_FIND_VEHICLE_CONDITION; ///@brief CLIENT_DoFindVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_DO_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 NET_FIND_VEHICLE_CONDITION stuCondition; // 查询条件 } NET_IN_DO_FIND_VEHICLE_REG_DB; ///@brief CLIENT_DoFindVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_DO_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 int nCarCandidateNum; // 候选车辆数量 NET_CAR_CANDIDATE_INFO stuCarCandidate[128]; // 候选车辆数据 int nFound; // 查询到的条数 } NET_OUT_DO_FIND_VEHICLE_REG_DB; ///@brief 获取车辆查询结果信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindVehicleRegisterDB(LLONG lLoginID, const NET_IN_DO_FIND_VEHICLE_REG_DB *pstuInParam, NET_OUT_DO_FIND_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); ///@brief CLIENT_StopFindVehicleRegisterDB 接口输入参数 typedef struct tagNET_IN_STOP_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌 } NET_IN_STOP_FIND_VEHICLE_REG_DB; ///@brief CLIENT_StopFindVehicleRegisterDB 接口输出参数 typedef struct tagNET_OUT_STOP_FIND_VEHICLE_REG_DB { DWORD dwSize; // 结构体大小 } NET_OUT_STOP_FIND_VEHICLE_REG_DB; ///@brief 结束车辆查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopFindVehicleRegisterDB(LLONG lLoginID, const NET_IN_STOP_FIND_VEHICLE_REG_DB *pstuInParam, NET_OUT_STOP_FIND_VEHICLE_REG_DB *pstuOutParam, int nWaitTime); /***************************车牌库接口End***************************************************/ /***************************设备日志接口Start***************************************************/ ///@brief 文件信息 typedef struct tagNET_PREPARE_EXPORT_FILEINFO { char szFileName[128]; // 文件名 char szReserverd[256]; // 预留字节 }NET_PREPARE_EXPORT_FILEINFO; ///@brief 文件信息数组 typedef struct tagNET_PREPARE_EXPORT_INFO { NET_PREPARE_EXPORT_FILEINFO stuFileInfo[256]; // 文件信息,包括core文件或syslog文件,单次最多导出256个文件 int nFileInfoNum; // 文件信息个数 char szReserverd[256]; // 预留字节 }NET_PREPARE_EXPORT_INFO; ///@brief CLIENT_PrepareExport 接口入参 typedef struct tagNET_IN_PREPARE_EXPORT_INFO { DWORD dwSize; // 结构体大小 NET_PREPARE_EXPORT_INFO stuInfo; // 文件信息数组 }NET_IN_PREPARE_EXPORT_INFO; ///@brief CLIENT_PrepareExport 接口出参 typedef struct tagNET_OUT_PREPARE_EXPORT_INFO { DWORD dwSize; // 结构体大小 UINT nToken; // 下载令牌 }NET_OUT_PREPARE_EXPORT_INFO; ///@brief 导出参数 typedef struct tagNET_EXPORT_ENCRYPED_DEBUGFILES_CONDITION { UINT nRequestLength; // 本次请求下载数据量,单位字节,建议值32K,最大不超过4M char szReserverd[256]; // 预留字节 }NET_EXPORT_ENCRYPED_DEBUGFILES_CONDITION; ///@brief CLIENT_ExportEncrypedDebugFiles 接口入参 typedef struct tagNET_IN_EXPORT_ENCRYPED_DEBUGFILES_INFO { DWORD dwSize; // 结构体大小 UINT nToken; // 下载令牌 prepareExport返回 NET_EXPORT_ENCRYPED_DEBUGFILES_CONDITION stuCondition; // 导出参数 }NET_IN_EXPORT_ENCRYPED_DEBUGFILES_INFO; ///@brief 导出情况 typedef struct tagNET_EXPORT_ENCRYPED_DEBUGFILES_INFO { char* pData; // 传递的二进制数据块 用户申请内存,大小为nDataLength int nDataLength; // 本次传递的二进制数据最大长度 int nDataLengthRet; // 本次传递的二进制数据实际长度 char szReserverd[256]; // 预留字节 }NET_EXPORT_ENCRYPED_DEBUGFILES_INFO; ///@brief CLIENT_ExportEncrypedDebugFiles 接口出参 typedef struct tagNET_OUT_EXPORT_ENCRYPED_DEBUGFILES_INFO { DWORD dwSize; // 结构体大小 NET_EXPORT_ENCRYPED_DEBUGFILES_INFO stuInfo; // 导出情况 }NET_OUT_EXPORT_ENCRYPED_DEBUGFILES_INFO; ///@brief 通知设备需要导出的文件信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PrepareExport(LLONG lLoginID, NET_IN_PREPARE_EXPORT_INFO* pInParam, NET_OUT_PREPARE_EXPORT_INFO* pOutParam, int nWaitTime); ///@brief 需与PrepareExport配合使用,若导出多个文件,则最终会将多个文件加密并压缩为一个文件导出 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ExportEncrypedDebugFiles(LLONG lLoginID, NET_IN_EXPORT_ENCRYPED_DEBUGFILES_INFO* pInParam, NET_OUT_EXPORT_ENCRYPED_DEBUGFILES_INFO* pOutParam, int nWaitTime); /***************************设备日志接口End***************************************************/ /***************************动态密码锁对接接口Start***************************/ ///@brief 动态密码锁错误码 typedef enum tagEM_DYNAMIC_LOCK_ERRORCODE { EM_DYNAMIC_LOCK_ERRORCODE_UNKNOWN = -1, // 未知 EM_DYNAMIC_LOCK_ERRORCODE_SUCCESS, // 成功 EM_DYNAMIC_LOCK_ERRORCODE_FAIL, // 操作失败 EM_DYNAMIC_LOCK_ERRORCODE_LOCK_NO_EXIT, // 锁ID不存在 EM_DYNAMIC_LOCK_ERRORCODE_LOCK_INIT, // 锁已初始化 EM_DYNAMIC_LOCK_ERRORCODE_LOCK_NOT_USE, // 锁模块未启用 }EM_DYNAMIC_LOCK_ERRORCODE; ///@brief CLIENT_GetDynamicPasswordLockList 接口入参 typedef struct tagNET_IN_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO; ///@brief 动态密码锁信息 typedef struct tagNET_DYNAMIC_LOCK_LIST_INFO { char szID[32]; // 密码锁ID char szReserverd[128]; // 预留字节 }NET_DYNAMIC_LOCK_LIST_INFO; ///@brief CLIENT_GetDynamicPasswordLockList 接口出参 typedef struct tagNET_OUT_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 int nListNum; // 动态密码锁信息个数 NET_DYNAMIC_LOCK_LIST_INFO stuList[32]; // 动态密码锁信息 }NET_OUT_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO; ///@brief CLIENT_GetDynamicPasswordLockInfo 接口入参 typedef struct tagNET_IN_GET_DYNAMIC_PASSWORD_LOCK_INFO { DWORD dwSize; // 结构体大小 int nListNum; // 动态密码锁信息个数 NET_DYNAMIC_LOCK_LIST_INFO stuList[32]; // 动态密码锁信息 }NET_IN_GET_DYNAMIC_PASSWORD_LOCK_INFO; ///@brief 动态密码锁信息 typedef struct tagNET_DYNAMIC_PASSWORD_LOCK_INFO { char szID[32]; // 密码锁ID BOOL bInitState; // 是否初始化, TRUE-已初始化,FALSE-未初始化 BOOL bLockState; // 是否闭锁, TRUE-闭锁,FALSE-开锁 BOOL bOnlineState; // 是否在线, TRUE-在线,FALSE-离线 char szReserverd[124]; // 预留字节 }NET_DYNAMIC_PASSWORD_LOCK_INFO; ///@brief CLIENT_GetDynamicPasswordLockInfo 接口出参 typedef struct tagNET_OUT_GET_DYNAMIC_PASSWORD_LOCK_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 int nInfoNum; // 动态密码锁信息个数 NET_DYNAMIC_PASSWORD_LOCK_INFO stuInfo[32]; // 动态密码锁信息 }NET_OUT_GET_DYNAMIC_PASSWORD_LOCK_INFO; ///@brief CLIENT_GetDynamicLockRandomPublicKey 接口入参 typedef struct tagNET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO { DWORD dwSize; // 结构体大小 char szID[32]; // 密码锁ID char szCenterPublicKey[512]; // 中心公钥 }NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO; ///@brief CLIENT_GetDynamicLockRandomPublicKey 接口出参 typedef struct tagNET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 char szRandomPublicKey[512]; // 锁随机公钥 }NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO; ///@brief CLIENT_SetDynamicLockCommunicationKey 接口入参 typedef struct tagNET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO { DWORD dwSize; // 结构体大小 char szID[32]; // 密码锁ID char szCommuKey[512]; // 通讯密钥 char szKeyVerify[512]; // 通讯密钥校验数据 char szOldKeyVerify[512]; // 原通讯密钥校验数据 char szPrivateSigniture[512]; // 加密主机私钥签名 }NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO; ///@brief CLIENT_SetDynamicLockCommunicationKey 接口出参 typedef struct tagNET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 }NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO; ///@brief CLIENT_SetDynamicLockOpenKey 接口入参 typedef struct tagNET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO { DWORD dwSize; // 结构体大小 char szID[32]; // 密码锁ID char szOpenKey[512]; // 开锁密钥 char szKeyVerify[512]; // 开锁密钥校验 char szKeyVersion[512]; // 开锁密钥版本 }NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO; ///@brief CLIENT_SetDynamicLockOpenKey 接口出参 typedef struct tagNET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 }NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO; ///@brief CLIENT_SetDynamicLockTempUserID 接口入参 typedef struct tagNET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO { DWORD dwSize; // 结构体大小 char szID[32]; // 密码锁ID char szTmpUserID[512]; // 开锁密钥 }NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO; ///@brief CLIENT_SetDynamicLockTempUserID 接口出参 typedef struct tagNET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 }NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO; ///@brief CLIENT_SetDynamicLockOpenCode 接口入参 typedef struct tagNET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO { DWORD dwSize; // 结构体大小 char szID[32]; // 密码锁ID char szOpenCode[512]; // 开锁密钥 }NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO; ///@brief CLIENT_SetDynamicLockOpenCode 接口出参 typedef struct tagNET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO { DWORD dwSize; // 结构体大小 EM_DYNAMIC_LOCK_ERRORCODE emErrorCode; // 动态密码锁错误码 }NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO; ///@brief 获取密码锁列表 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDynamicPasswordLockList(LLONG lLoginID, NET_IN_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO* pInParam, NET_OUT_GET_DYNAMIC_PASSWORD_LOCKLIST_INFO* pOutParam, int nWaitTime); ///@brief 获取密码锁信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDynamicPasswordLockInfo(LLONG lLoginID, NET_IN_GET_DYNAMIC_PASSWORD_LOCK_INFO* pInParam, NET_OUT_GET_DYNAMIC_PASSWORD_LOCK_INFO* pOutParam, int nWaitTime); ///@brief 根据中心公钥获取锁具随机公钥 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDynamicLockRandomPublicKey(LLONG lLoginID, NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO* pInParam, NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO* pOutParam, int nWaitTime); ///@brief 设置通讯秘钥 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDynamicLockCommunicationKey(LLONG lLoginID, NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO* pInParam, NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO* pOutParam, int nWaitTime); ///@brief 设置开锁密钥 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDynamicLockOpenKey(LLONG lLoginID, NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO* pInParam, NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO* pOutParam, int nWaitTime); ///@brief 设置临时身份码 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDynamicLockTempUserID(LLONG lLoginID, NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO* pInParam, NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO* pOutParam, int nWaitTime); ///@brief 设置开锁码 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetDynamicLockOpenCode(LLONG lLoginID, NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO* pInParam, NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO* pOutParam, int nWaitTime); /***************************动态密码锁对接接口End***************************/ ///@brief CLIENT_GetFinancialCabinInfo 输入参数 typedef struct tagNET_IN_GET_FINANCIAL_CABIN_INFO { DWORD dwSize; // 结构体大小 int nIndexNum; // 舱位下标索引个数 UINT nIndex[64]; // 舱位下标索引数组 }NET_IN_GET_FINANCIAL_CABIN_INFO; ///@brief 舱位信息 typedef struct tagNET_FINANCIAL_CABIN_INFO { char szRFIDNo[128]; // 舱位读取到尾箱RFID卡编号 char szBindRFIDNo[128]; // 舱位绑定的尾箱RFID卡编号,为空时表示未绑定尾箱 char szType[32]; // 舱位类型,"Cash"-现金柜,"Bill"-票据柜 char szDoorState[32]; // 舱位门状态,"IsClosed"-关门,"IsOpened"-开门 float fAmount; // 舱位现金金额,尾箱类型为"Cash"时有效, 单位:人民币 char szReserved[124]; // 预留字节 }NET_FINANCIAL_CABIN_INFO; ///@brief CLIENT_GetFinancialCabinInfo 输出参数 typedef struct tagNET_OUT_GET_FINANCIAL_CABIN_INFO { DWORD dwSize; // 结构体大小 int nInfoNum; // 舱位信息个数 NET_FINANCIAL_CABIN_INFO stuInfo[64]; // 舱位信息,是数组和Index数组下标对应 }NET_OUT_GET_FINANCIAL_CABIN_INFO; ///@brief 获取业务库管理的舱位信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFinancialCabinInfo(LLONG lLoginID, NET_IN_GET_FINANCIAL_CABIN_INFO* pInParam, NET_OUT_GET_FINANCIAL_CABIN_INFO* pOutParam, int nWaitTime); /***************************信号机对接接口Start***************************/ ///@brief 红绿灯方案/可变车道方案: typedef enum tagEM_CTRL_SCHEME { EM_CTRL_SCHEME_UNKNOWN, // 未知 EM_CTRL_SCHEME_REDYELLOW_BACKUP = 150, // 进入备份模式(红绿灯) EM_CTRL_SCHEME_REDYELLOW_BACKUP_NORMAL_QUIT, // 正常退出备份模式(红绿灯) EM_CTRL_SCHEME_REDYELLOW_BACKUP_ABNORMAL_QUIT, // 异常退出备份模式(红绿灯) EM_CTRL_SCHEME_VARLANE_BACKUP, // 异常退出备份模式(可变车道) EM_CTRL_SCHEME_VARLANE_BACKUP_NORMAL_QUIT, // 正常退出备份模式(可变车道) EM_CTRL_SCHEME_VARLANE_BACKUP_ABNORMAL_QUIT, // 异常退出备份模式(可变车道) }EM_CTRL_SCHEME; ///@brief CLIENT_SetRtscBackupMode 接口输入参数 typedef struct tagNET_IN_SET_BACKUP_MODE { DWORD dwSize; // 结构体大小 EM_CTRL_SCHEME emCtrlScheme; // 红绿灯/可变车道方案:150-152代表红绿灯 153-155代表可变车道方案: } NET_IN_SET_BACKUP_MODE; ///@brief 备份模式设置错误码 typedef enum tagEM_BACKUP_ERROR_CODE { EM_BACKUP_ERROR_CODE_UNKNOWN = -1, // 未知 EM_BACKUP_ERROR_CODE_SUCCESS, // 备份模式设置成功 EM_BACKUP_ERROR_CODE_CYCLE_PLAN, // 周期方案表有误 EM_BACKUP_ERROR_CODE_GREEN_LETTER, // 绿信比表有误 EM_BACKUP_ERROR_CODE_TIME_BASE_PLAN, // 时基方案表有误 EM_BACKUP_ERROR_CODE_DAY_PLAN, // 日计划表有误 EM_BACKUP_ERROR_CODE_ACTION_PLAN, // 动作方案表有误 EM_BACKUP_ERROR_CODE_PHASE_SEQUENCE, // 相序表有误 EM_BACKUP_ERROR_CODE_CHANNEL_TABLE, // 通道表有误 EM_BACKUP_ERROR_CODE_FOLLOW_PHASE_TABLE, // 跟随相位表有误 EM_BACKUP_ERROR_CODE_PHASE_CONFLCT, // 相位冲突 EM_BACKUP_ERROR_CODE_DELIVERY_PLAN, // 下发方案超时 EM_BACKUP_ERROR_CODE_LANE_TABLE_SETTING, // 车道表设置有误 EM_BACKUP_ERROR_CODE_NOT_SUPPORT_SHORT_JUNCTIONS, // 用于信号灯,提示信号灯不支持短连接路口 EM_BACKUP_ERROR_CODE_CHANNEL_CONFIGURATION, // 通道配置有误 用于信号灯 无掉头箭头灯、直行非机动车灯、左转非机动车灯、公交信号灯--可变车道 EM_BACKUP_ERROR_CODE_VARIABLEE_LANE_TABLE, // 可变车道方案表有误 EM_BACKUP_ERROR_CODE_WEEKLY_PLAN, // 周计划方案表有误 }EM_BACKUP_ERROR_CODE; ///@brief CLIENT_SetRtscBackupMode 接口输出参数 typedef struct tagNET_OUT_SET_BACKUP_MODE { DWORD dwSize; // 结构体大小 EM_BACKUP_ERROR_CODE emBackUpErrCode; // 备份模式设置错误码 } NET_OUT_SET_BACKUP_MODE; ///@brief CLIENT_SetRtscRunningMode 接口输入参数 typedef struct tagNET_IN_SET_RUNNING_MODE { DWORD dwSize; // 结构体大小 int nMode; // 平台下发运行模式: 0x01 //定时模式 0xfb //关灯模式 0xfc //全红模式 0xfd //区域自适应模式 // 0xfe //感应模式 0xff //黄闪模式 0xf6 //实时控制模式 0xf2//单点自适应模式 0xf8//红闪模式 0xf9//绿闪模式 } NET_IN_SET_RUNNING_MODE; ///@brief CLIENT_SetRtscRunningMode 接口输出参数 typedef struct tagNET_OUT_SET_RUNNING_MODE { DWORD dwSize; // 结构体大小 } NET_OUT_SET_RUNNING_MODE; ///@brief CLIENT_GetRtscRunningMode 接口输入参数 typedef struct tagNET_IN_GET_RUNNING_MODE { DWORD dwSize; // 结构体大小 }NET_IN_GET_RUNNING_MODE; ///@brief CLIENT_GetRtscRunningMode 接口输出参数 typedef struct tagNET_OUT_GET_RUNNING_MODE { DWORD dwSize; // 结构体大小 int nMode; // 平台下发运行模式: 0x01 //定时模式 0xfb //关灯模式 0xfc //全红模式 0xfd //区域自适应模式 // 0xfe //感应模式 0xff //黄闪模式 0xf6 //实时控制模式 0xf2//单点自适应模式 0xf8//红闪模式 0xf9//绿闪模式 }NET_OUT_GET_RUNNING_MODE; ///@brief 灯组故障等级 typedef enum tagEM_LIGHTGROUP_FAULT_LEVEL { EM_LIGHTGROUP_FAULT_UNKNOWN, // 未知 EM_LIGHTGROUP_FAULT_INGORE, // 忽略所有灯组故障 EM_LIGHTGROUP_FAULT_INGORE_YELLOWGREENPEDESTRIAN, // 忽略车行灯黄灯、绿灯和人行灯故障 EM_LIGHTGROUP_FAULT_INGORE_YELLOWREDPEDESTRIAN, // 忽略车行灯黄灯、红灯和人行灯故障 EM_LIGHTGROUP_FAULT_INGORE_YELLOWPEDESTRIAN, // 忽略车行灯黄灯和人行灯故障 EM_LIGHTGROUP_FAULT_UNINGORE, // 不忽略任何灯组故障 }EM_LIGHTGROUP_FAULT_LEVEL; ///@brief 倒计时方式 typedef enum tagEM_COUNTDOWN_TYPE { EM_COUNTDOWN_TYPE_UNKNOWN, // 未知 EM_COUNTDOWN_TYPE_LEARNING, // 学习式 EM_COUNTDOWN_TYPE_PLUSE, // 脉冲式 EM_COUNTDOWN_TYPE_FULL485, // 全程485式 EM_COUNTDOWN_TYPE_HALFWAY485, // 半程485式 }EM_COUNTDOWN_TYPE; ///@brief 自动维护星期 typedef enum tagEM_AUTO_PROTECT_WEEK { EM_AUTO_PROTECT_UNKNOWN, // 未知 EM_AUTO_PROTECT_MONDAY, // 星期一 EM_AUTO_PROTECT_TUESDAY, // 星期二 EM_AUTO_PROTECT_WEDNESDAY, // 星期三 EM_AUTO_PROTECT_THURSDAY, // 星期四 EM_AUTO_PROTECT_FIRDAY, // 星期五 EM_AUTO_PROTECT_SATURDAY, // 星期六 EM_AUTO_PROTECT_SUNDAY, // 星期天 EM_AUTO_PROTECT_EVERYDAY, // 每天 }EM_AUTO_PROTECT_WEEK; ///@brief 全局参数信息 typedef struct tagGLOBAL_INFO { EM_LIGHTGROUP_FAULT_LEVEL emLightGroupFault; // 灯组故障等级 EM_COUNTDOWN_TYPE emCountDownType; // 倒计时方式 int nPulseWidth; // 脉冲式倒计时脉冲宽度(单位ms) int nPulseTime; // 脉冲式倒计时倒计时时间(单位s) int nBaudRault; // 485倒计时波特率 INTEGER(2400 4800 9600 19200 38400) int nGatType; // 485倒计时使用协议(0:GAT208-2004 1:GAT208-2014) int nHalfTime; // 半程485倒计时时间(单位秒) int nDefaultRunModel; // 未配置相位运行模式1:全红 2:关灯 3:黄闪 4:红闪 -1不设置 int nVarLaneCommunicationType; // 可变车道通讯方式选择 0:供电式 1:通讯式 -1不设置 int nAutoProtectEnable; // 自动维护使能:0-不启用,1-启用 -1不设置 EM_AUTO_PROTECT_WEEK emAutoProtectWeek; // 自动维护星期 int nAutoProtectHour; // 自动维护小时 int nAutoProtectMinute; // 自动维护分钟 int nControlUnlockTime; // 通道自动解锁时间(0-65535) int nFaultReport; // 故障是否推送(按位表示,置0表示开启上报,置1表示关闭上报.bit0:灯组故障bit1:检测器故障bit2:绿冲突故障bit3:外围板故障bit4: int nRatedVoltage; // 额定电压值 int nPercentageValNum; // 百分比值个数 int nPercentageVal[4]; // 百分比值;array[0]:百分比1(关机电压比)/ array[1]:百分比2(闪烁启动电压比)/array[2]:百分比3 int nStartUpLampNum; // 开机启动灯色个数 int nStartUpLamp[3]; // 开机启动灯色 1:红灯 2:黄灯 4: 红闪 5: 黄闪 ; array[n]:阶段n灯色,n <3 int nStartUpTimeNum; // 开机启动时间个数 int nStartUpTime[3]; // 开机启动时间 array[n]:阶段n时间,n <3 int nPlatformCtrl; // 平台下发临时控制: 1-阶段切换 2-阶段驻留 3-阶段锁相 4-通道锁定 5-还原 int nPlatformCtrlValNum; // 平台下发控制详细值个数 int nPlatformCtrlVal[16]; // 平台下发控制详细值 // 当ctrl等于3-阶段锁相时,该数组代表需要锁定的相位集合,且每个相位占用两个字节,低字节代表相位编号,高字节代表重复出现的次数,例如锁定相位为A1,B2,则内容值为[1,1,2,2] // 当ctrl等于4-通道锁定时,该数组代表需要锁定通道的集合,其余为0 BYTE byReserved[952]; // 预留字节 }GLOBAL_INFO; ///@brief CLIENT_GetRtscGlobalParam 接口输入参数 typedef struct tagNET_IN_GET_GLOBAL_PARAMETER { DWORD dwSize; // 结构体大小 }NET_IN_GET_GLOBAL_PARAMETER; ///@brief CLIENT_GetRtscGlobalParam 接口输出参数 typedef struct tagNET_OUT_GET_GLOBAL_PARAMETER { DWORD dwSize; // 结构体大小 GLOBAL_INFO stuGlobalInfo; // 全局信息 }NET_OUT_GET_GLOBAL_PARAMETER; ///@brief CLIENT_SetRtscGlobalParam 接口输入参数 typedef struct tagNET_IN_SET_GLOBAL_PARAMETER { DWORD dwSize; // 结构体大小 GLOBAL_INFO stuGlobalInfo; // 全局信息 }NET_IN_SET_GLOBAL_PARAMETER; ///@brief CLIENT_SetRtscGlobalParam 接口输出参数 typedef struct tagNET_OUT_SET_GLOBAL_PARAMETER { DWORD dwSize; // 结构体大小 }NET_OUT_SET_GLOBAL_PARAMETER; ///@brief CLIENT_GetRtscRunningInfo 接口输入参数 typedef struct tagNET_IN_GET_RUNNING_INFO { DWORD dwSize; // 结构体大小 UINT nType; // 查询类型,按位表示: bit0:运行状态 bit1:控制方式 bit2:车道功能状态 bit3:车道/匝道控制状态信息 bit4:当前信号方案色步信息 bit5: 下一个周期信号方案色步信息 }NET_IN_GET_RUNNING_INFO; ///@brief CLIENT_GetRtscRunningInfo 接口输出参数 typedef struct tagNET_OUT_GET_RUNNING_INFO { DWORD dwSize; // 结构体大小 DWORD dwReportState; // bit0:运行状态 // bit1:控制方式 // bit2:车道功能状态 // bit3:车道/匝道控制状态信息 // bit4:当前信号方案色步信息 // bit5: 下一个周期信号方案色步信息 int nLongitudeNum; // 经度个数 double dbLongitude[3]; // 经度,格式:度,分,秒(秒为浮点数) int nLatitudeNum; // 纬度个数 double dbLatitude[3]; // 纬度,格式:度,分,秒(秒为浮点数) double dbAltitude; // 高度,单位为米 NET_TIME_EX UTC; // 事件发生时间,带时区偏差的UTC时间,单位秒 EM_STATUS emStatus; // 设备状态 EM_CONTROL_MODE emControlMode; // 控制模式 LANE_STATE stuLaneStateInfo; // 车道功能状态 LANE_CTRL_STATE stuLaneCtrlStateInfo; // 车道/匝道控制状态 CUR_STEP_INFO stuCurStepInfo; // 当前信号方案色步信息 NEXT_STEP_INFO stuNextStepInfo; // 下一个周期信号方案色步信息 }NET_OUT_GET_RUNNING_INFO; ///@brief 设置信号机备份模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRtscBackupMode(LLONG lLoginID, const NET_IN_SET_BACKUP_MODE* pInParam, NET_OUT_SET_BACKUP_MODE* pOutParam, int nWaitTime); ///@brief 设置信号机运行模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRtscRunningMode(LLONG lLoginID, const NET_IN_SET_RUNNING_MODE* pInParam, NET_OUT_SET_RUNNING_MODE* pOutParam, int nWaitTime); ///@brief 获取信号机运行模式,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRtscRunningMode(LLONG lLoginID, const NET_IN_GET_RUNNING_MODE* pInParam, NET_OUT_GET_RUNNING_MODE* pOutParam, int nWaitTime); ///@brief 获取信号机全局配置,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRtscGlobalParam(LLONG lLoginID, const NET_IN_GET_GLOBAL_PARAMETER* pInParam, NET_OUT_GET_GLOBAL_PARAMETER* pOutParam, int nWaitTime); ///@brief 设置信号机全局配置,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetRtscGlobalParam(LLONG lLoginID, const NET_IN_SET_GLOBAL_PARAMETER* pInParam, NET_OUT_SET_GLOBAL_PARAMETER* pOutParam, int nWaitTime); ///@brief 获取信号机运行信息,pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRtscRunningInfo(LLONG lLoginID, const NET_IN_GET_RUNNING_INFO* pInParam, NET_OUT_GET_RUNNING_INFO* pOutParam, int nWaitTime); /***************************信号机对接接口End***************************/ /***************************智慧用电Things接口Start***************************/ ///@brief 属性值类型 typedef enum tagEM_PROPERTIES_VALUE_TYPE { EM_PROPERTIES_VALUE_UNKNOWN, // 未知 EM_PROPERTIES_VALUE_INT, // int类型,1,100,1000 EM_PROPERTIES_VALUE_BOOL, // bool类型,true,false EM_PROPERTIES_VALUE_STRING, // string类型,"1","100","1000" EM_PROPERTIES_VALUE_INTARRAY, // int数组类型,"[1,2,3]" }EM_PROPERTIES_VALUE_TYPE; ///@brief 物模型标识 typedef struct tagNET_PROPERTIES_NAME { char szPropertiesName[64]; // "*","BJPZ_DDBJLDMS"、"SBJCXX_CPLX"、"SBJCXX_SBLX"等 char szReserved[1024]; // 预留字节 }NET_PROPERTIES_NAME; ///@brief int+Array值 typedef struct tagNET_PROPERTIES_INTARRAY_VALUE { int nValue; // Value:1,2,3 char szReserved[32]; // 预留字节 }NET_PROPERTIES_INTARRAY_VALUE; ///@brief 属性值信息 typedef struct tagNET_PROPERTIES_INFO { char szKey[64]; // BJPZ_DDBJLDMS、SBJCXX_CPLX、SBJCXX_SBLX等 char szValue[256]; // 1,true,"normal"等 EM_PROPERTIES_VALUE_TYPE emValueType; // szValue对应的类型;有int,bool,string类型 int nIntArrayValueNum; // stuIntArrayValue实际个数 NET_PROPERTIES_INTARRAY_VALUE stuIntArrayValue[128]; // int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY char szReserved[512]; // 预留字节 }NET_PROPERTIES_INFO; ///@brief CLIENT_GetThingsConfig 接口输入参数 typedef struct tagNET_IN_THINGS_GET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[128]; // 设备ID,产品下唯一 int nProperCount; // pstuGetInProperName个数 NET_PROPERTIES_NAME* pstuGetInProperName; // 物模型标志,需要查询的物模型标志名称 // 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nPropertiesCount }NET_IN_THINGS_GET; ///@brief CLIENT_GetThingsConfig 接口输出参数 typedef struct tagNET_OUT_THINGS_GET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[128]; // 设备ID,产品下唯一 int nRetPropertiesCount; // 实际返回的pstuGetOutProperInfo个数 int nMaxPropertiesCount; // 用户分配的pstuGetOutProperInfo个数 NET_PROPERTIES_INFO* pstuGetOutProperInfo; // 属性值,具体内容由物模型协议决定, Key,Value,ValueType均有效 // 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nMaxPropertiesCount }NET_OUT_THINGS_GET; ///@brief CLIENT_SetThingsConfig 接口输入参数 typedef struct tagNET_IN_THINGS_SET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[128]; // 设备ID,产品下唯一 int nProperCount; // pstuSetInProperInfo个数 NET_PROPERTIES_INFO* pstuSetInProperInfo; // 属性值,具体内容由物模型协议决定, Key,Value,ValueType均需要填写 // 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nPropertiesCount }NET_IN_THINGS_SET; ///@brief CLIENT_SetThingsConfig 接口输出参数 typedef struct tagNET_OUT_THINGS_SET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 }NET_OUT_THINGS_SET; ///@brief 订阅类型 typedef enum tagEM_ATTACH_TOPICS { EM_ATTACH_TOPICS_ALL, // "*" 表示订阅所有属性和事件 EM_ATTACH_TOPICS_PROPS, // "Props" 表示订阅设备属性上报 EM_ATTACH_TOPICS_EVENTS, // "Events" 标识订阅设备事件上报 }EM_ATTACH_TOPICS; ///@brief 物模型属性信息 typedef struct tagNET_CB_THINGS_PROPER_INFO { char szKey[64]; // DQZT、FHZYY、Action等 char szValue[256]; // 1,true,"normal"等 EM_PROPERTIES_VALUE_TYPE emValueType; // szValue对应的类型;有int,bool,string类型 int nIntArrayValueNum; // stuIntArrayValue实际个数 NET_PROPERTIES_INTARRAY_VALUE stuIntArrayValue[64]; // int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY char szReserved[1024]; // 预留字节 }NET_CB_THINGS_PROPER_INFO; ///@brief 物模型属性订阅回调信息 typedef struct tagNET_CB_THINGS_INFO { EM_ATTACH_TOPICS emTopics; // 订阅类型 int nSID; // sid char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[128]; // 设备ID,产品下唯一 char szEventID[64]; // 当Topics为events时,必须携带, 具体内容由物模型定义决定 NET_TIME_EX stuEventTime; // 事件触发时间 NET_CB_THINGS_PROPER_INFO* pstuProperInfo; // 物模型属性信息或事件参数数组, 内存由sdk 内部申请和释放 UINT nRetProperInfoNum; // 实际返回的物模型属性信息数量, 即pstuProperInfo 数组中有效的元素个数 char szReserve[256]; // 保留字节 }NET_CB_THINGS_INFO; ///@brief 物模型属性订阅回调函数原型, lAttachHandle为CLIENT_AttachThingsInfo接口的返回值 ///@param[out] lAttachHandle 订阅句柄 ///@param[out] pstResult 物模型属性订阅回调信息 ///@param[out] dwUserData 用户信息 ///@return void typedef void (CALLBACK *fThingsCallBack)(LLONG lAttachHandle, NET_CB_THINGS_INFO* pstResult, LDWORD dwUserData); ///@brief CLIENT_AttachThingsInfo接口输入参数 typedef struct tagNET_IN_THINGS_ATTACH { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 EM_ATTACH_TOPICS emTopics; // 订阅类型 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID,产品下唯一 fThingsCallBack cbThingsInfo; // 物模型属性信息回调 LDWORD dwUser; // 用户数据 }NET_IN_THINGS_ATTACH; ///@brief CLIENT_AttachThingsInfo接口输出参数 typedef struct tagNET_OUT_THINGS_ATTACH { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 }NET_OUT_THINGS_ATTACH; ///@brief CLIENT_GetThingsCaps接口输入参数 typedef struct tagNET_IN_THINGS_GET_CAPS { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szDeviceID[128]; // 设备ID,产品下唯一 }NET_IN_THINGS_GET_CAPS; ///@brief CLIENT_GetThingsCaps接口输出参数 typedef struct tagNET_OUT_THINGS_GET_CAPS { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nMaxProperCount; // 用户分配的pstuGetCapsProperName个数 int nRetProperCount; // 实际返回的pstuGetCapsProperName个数 NET_PROPERTIES_NAME* pstuGetCapsProperName; // 物模型标识符,用户分配内存,大小为sizeof(NET_PROPERTIES_NAME)*nMaxProperCount }NET_OUT_THINGS_GET_CAPS; ///@brief 设备列表 typedef struct tagNET_THINGS_DEVLIST_INFO { char szDevID[128]; // "1","2"等 char szDevClass[128]; // "001","002"等 char szReserved[1024]; // 预留字节 }NET_THINGS_DEVLIST_INFO; ///@brief CLIENT_GetThingsDevList接口输入参数 typedef struct tagNET_IN_THINGS_GET_DEVLIST { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 }NET_IN_THINGS_GET_DEVLIST; ///@brief 设备连接状态 typedef enum tagEM_THINGS_CONNECT_STATE { EM_THINGS_CONNECT_STATE_UNKNOWN = -1, // 未知 EM_THINGS_CONNECT_STATE_DISCONNECT, // 连接断开 EM_THINGS_CONNECT_STATE_CONNECT, // 已连接 }EM_THINGS_CONNECT_STATE; ///@brief CLIENT_GetThingsDevList接口输出参数 typedef struct tagNET_OUT_THINGS_GET_DEVLIST { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nMaxDevListCount; // 用户分配的pstuDevListInfo个数 int nRetDevListCount; // 实际返回的pstuDevListInfo个数 NET_THINGS_DEVLIST_INFO* pstuDevListInfo; // 设备列表信息,用户分配内存,大小为sizeof(NET_THINGS_DEVLIST_INFO)*nMaxDevListCount }NET_OUT_THINGS_GET_DEVLIST; ///@brief CLIENT_GetThingsNetState接口输入参数 typedef struct tagNET_IN_THINGS_GET_NETSTATE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 }NET_IN_THINGS_GET_NETSTATE; ///@brief CLIENT_GetThingsNetState接口输出参数 typedef struct tagNET_OUT_THINGS_GET_NETSTATE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 EM_THINGS_CONNECT_STATE emConnectState; // 设备连接状态 }NET_OUT_THINGS_GET_NETSTATE; ///@brief 闸门控制输入参数(对应 EM_THINGS_SERVICE_TYPE_VALVECONTROL) typedef struct tagNET_IN_THINGS_SERVICE_VALVECONTROL { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 BOOL bSwitch; // 开关 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_VALVECONTROL; ///@brief 闸门控制输出参数(对应 EM_THINGS_SERVICE_TYPE_VALVECONTROL) typedef struct tagNET_OUT_THINGS_SERVICE_VALVECONTROL { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 BOOL bResult; // 设置结果,实际闸门控制设置成功/失败已该值为准 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_VALVECONTROL; ///@brief 电量清零输入参数(对应 EM_THINGS_SERVICE_TYPE_CHARGECLEAR) typedef struct tagNET_IN_THINGS_SERVICE_CHARGECLEAR { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_CHARGECLEAR; ///@brief 电量清零输出参数(对应 EM_THINGS_SERVICE_TYPE_CHARGECLEAR) typedef struct tagNET_OUT_THINGS_SERVICE_CHARGECLEAR { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_CHARGECLEAR; ///@brief 漏电自检输入参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOST) typedef struct tagNET_IN_THINGS_SERVICE_LEAKCURTPOST { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_LEAKCURTPOST; ///@brief 漏电自检输出参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOST) typedef struct tagNET_OUT_THINGS_SERVICE_LEAKCURTPOST { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID BOOL bCheckResult; // 检测结果 char szErrorMsg[1024]; // 失败原因 }NET_OUT_THINGS_SERVICE_LEAKCURTPOST; ///@brief 漏电自检异步输入参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC) typedef struct tagNET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC; ///@brief 漏电自检异步输出参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC) typedef struct tagNET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID BOOL bCheckResult; // 检测结果 char szErrorMsg[1024]; // 失败原因 }NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC; ///@brief 空开红蓝灯闪烁输入参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHFIND) typedef struct tagNET_IN_THINGS_SERVICE_AIRSWITHFIND { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_AIRSWITHFIND; ///@brief 空开红蓝灯闪烁输出参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHFIND) typedef struct tagNET_OUT_THINGS_SERVICE_AIRSWITHFIND { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_AIRSWITHFIND; ///@brief 空开恢复出厂设置输入参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHRESET) typedef struct tagNET_IN_THINGS_SERVICE_AIRSWITHRESET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_AIRSWITHRESET; ///@brief 空开恢复出厂设置输出参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHRESET) typedef struct tagNET_OUT_THINGS_SERVICE_AIRSWITHRESET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_AIRSWITHRESET; ///@brief 场景规则类型 typedef enum tagEM_THINGS_RULECONTENT_TYPE { EM_THINGS_RULECONTENT_TYPE_UNKNOWN, // 未知 EM_THINGS_RULECONTENT_TYPE_IFTTT, // IFTTT类型 }EM_THINGS_RULECONTENT_TYPE; /* 每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是: (1)*:表示匹配该域的任意值。假如在Minutes域使用*, 即表示每分钟都会触发事件。 (2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。 (3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次 (4)/:表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次. (5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。 (6)L:表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。 (7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。 (8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。 (9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。 例子"0 0 8 ? 1-6 1/5 *", // 每年的1-6月,每周1-周5,早上8:00:00 */ ///@brief 定时触发类型Cron内容 typedef struct tagNET_THINGS_TRIGGER_TIMER_CORN { char szSeconds[8]; // 秒,值:0~59的整数以及特殊4个字符, - * / char szMinutes[8]; // 分,值:0~59的整数以及特殊4个字符, - * / char szHours[8]; // 时,值:0~23的整数以及特殊4个字符, - * / char szDayofMonth[8]; // 日期,值:1~31的整数(但是你需要考虑你月的天数)以及特殊8个字符, - * ? / L W C char szMonth[8]; // 月份,值:1~12的整数或者 JAN-DEC以及特殊4个字符, - * / char szDayofWeek[8]; // 星期,值:1~7的整数或者 SUN-SAT以及特殊8个字符, - * ? / L W C char szYear[8]; // 年,值:1970~2099的整数以及特殊4个字符, - * / char szReserve[256]; // 保留字节 }NET_THINGS_TRIGGER_TIMER_CORN; ///@brief 定时触发类型内容表达式类型 typedef enum tagEM_THINGS_TRIGGER_TIMER_CORN_TYPE { EM_THINGS_TRIGGER_TIMER_CORN_TYPE_UNKNOWN, // 未知 EM_THINGS_TRIGGER_TIMER_CORN_TYPE_QUARTZCORN, // "quartz_cron" 表达式结构:$second $minute $hour $dayofmonth $month $dayofweek $year EM_THINGS_TRIGGER_TIMER_CORN_TYPE_LINUX, // "linux" 表达式结构:$minute $hour $day of month $month $dayofweek }EM_THINGS_TRIGGER_TIMER_CORN_TYPE; ///@brief 定时触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER) typedef struct tagNET_THINGS_RULECONTENT_TRIGGER_TIMER { NET_THINGS_TRIGGER_TIMER_CORN stuCron; // Cron时间格式 EM_THINGS_TRIGGER_TIMER_CORN_TYPE emCronType; // Corn表达式类 char szTimezoneID[64]; // 时区,示例:Asia/Shanghai char szReserve[256]; // 保留字节 }NET_THINGS_RULECONTENT_TRIGGER_TIMER; ///@brief 设备属性触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY) typedef struct tagNET_THINGS_RULECONTENT_TRIGGER_PROPERTY { char szProductId[64]; // 设备类型 char szDeviceName[32]; // 设备ID char szPropertyName[32]; // 属性名称 char szCompareType[8]; // 对比格式:< ==等 char szCompareValue[32]; // 对比值 EM_PROPERTIES_VALUE_TYPE emCompareValueType; //对比值类型 char szReserve[256]; // 保留字节 }NET_THINGS_RULECONTENT_TRIGGER_PROPERTY; ///@brief 场景的触发类型 typedef enum tagEM_THINGS_TRIGGER_TYPE { EM_THINGS_TRIGGER_TYPE_UNKNOWN, // 未知 EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER, // "trigger/timer" 定时触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_TIMER EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY, // "trigger/device/property" 设备属性触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_PROPERTY }EM_THINGS_TRIGGER_TYPE; ///@brief 场景的触发器 typedef struct tagNET_THINGS_RULECONTENT_TRIGGER { EM_THINGS_TRIGGER_TYPE emUri; // 场景的触发类型,见EM_THINGS_TRIGGER_TYPE NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer; // 定时触发,emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER有效 NET_THINGS_RULECONTENT_TRIGGER_PROPERTY stuTriggerProperty; // 设备属性触发,emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY有效 char szReserve[1024]; // 保留字节 }NET_THINGS_SERVICE_RULECONTENT_TRIGGER; ///@brief 设置设备属性类型内容(对应EM_THINGS_ACTION_TYPE_SETPROPERTY) typedef struct tagNET_THINGS_RULECONTENT_ACTION_SETPROPERTY { char szProductId[64]; // 设备类型 char szDeviceName[32]; // 设备ID char szPropertyName[32]; // 属性名称 char szPropertyValue[32];// 属性值 EM_PROPERTIES_VALUE_TYPE emPropertyValueType; //属性值类型 char szReserve[256]; // 保留字节 }NET_THINGS_RULECONTENT_ACTION_SETPROPERTY; ///@brief 场景触发执行动作类型 typedef enum tagEM_THINGS_ACTION_TYPE { EM_THINGS_ACTION_TYPE_UNKNOWN, // 未知 EM_THINGS_ACTION_TYPE_SETPROPERTY, // "action/device/setProperty" 设置设备属性,对应结构体NET_THINGS_RULECONTENT_ACTION_SETPROPERTY }EM_THINGS_ACTION_TYPE; ///@brief 场景触发执行动作 typedef struct tagNET_THINGS_RULECONTENT_ACTION { EM_THINGS_ACTION_TYPE emActionUri; // 场景触发执行动作类型,见EM_THINGS_ACTION_TYPE NET_THINGS_RULECONTENT_ACTION_SETPROPERTY stuActionSetProperty; // 设置设备属性,emUri为EM_THINGS_ACTION_TYPE_SETPROPERTY有效 char szReserve[1024]; // 保留字节 }NET_THINGS_SERVICE_RULECONTENT_ACTION; ///@brief 场景触发过滤条件类型 typedef enum tagEM_THINGS_CONDITION_TYPE { EM_THINGS_CONDITION_TYPE_UNKNOWN, // 未知 EM_THINGS_CONDITION_TYPE_TIMERANGE, // "condition/timeRange" 比较当前时间是否在一个区间内,对应结构体 EM_THINGS_CONDITION_TYPE_PROPERTY, // "condition/device/property" 设备属性过滤,对应结构体 }EM_THINGS_CONDITION_TYPE; ///@brief 比较当前时间是否在一个区间内内容(对应EM_THINGS_CONDITION_TYPE_TIMERANGE) typedef struct tagNET_THINGS_RULECONTENT_CONDITION_TIMER { NET_THINGS_TRIGGER_TIMER_CORN stuCron; // Cron时间格式 EM_THINGS_TRIGGER_TIMER_CORN_TYPE emCronType; // Corn表达式类 char szTimezoneID[64]; // 时区,示例:Asia/Shanghai char szReserve[256]; // 保留字节 }NET_THINGS_RULECONTENT_CONDITION_TIMER; ///@brief 设备属性过滤内容(对应EM_THINGS_CONDITION_TYPE_PROPERTY) typedef struct tagNET_THINGS_RULECONTENT_CONDITION_PROPERTY { char szProductId[64]; // 设备类型 char szDeviceName[32]; // 设备ID char szPropertyName[32]; // 属性名称 char szCompareType[8]; // 对比格式:< ==等 char szCompareValue[32]; // 对比值 EM_PROPERTIES_VALUE_TYPE emCompareValueType; //对比值类型 char szReserve[256]; // 保留字节 }NET_THINGS_RULECONTENT_CONDITION_PROPERTY; ///@brief 场景触发过滤条件 typedef struct tagNET_THINGS_RULECONTENT_CONDITION { EM_THINGS_CONDITION_TYPE emConditionUri; // 场景触发过滤条件类型,见EM_THINGS_CONDITION_TYPE NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer; // 比较当前时间是否在一个区间内,emConditionUri为EM_THINGS_CONDITION_TYPE_TIMERANGE有效 NET_THINGS_RULECONTENT_CONDITION_PROPERTY stuConditionProperty; // 设置设备属性,emConditionUri为EM_THINGS_CONDITION_TYPE_PROPERTY有效 char szReserve[1024]; // 保留字节 }NET_THINGS_SERVICE_RULECONTENT_CONDITION; ///@brief 联动规则 typedef struct tagNET_THINGS_SERVICE_RULECONTENT { EM_THINGS_RULECONTENT_TYPE emRuleContentType; // 场景规则类型 int nTriggerNum; // 场景触发个数 NET_THINGS_SERVICE_RULECONTENT_TRIGGER* pstuTrigger; // 场景的触发器,用户分配内存,大小为nTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER) NET_THINGS_SERVICE_RULECONTENT_ACTION* pstuAction; // 场景触发执行动作,用户分配内存,大小为nActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION) int nActionNum; // 场景触发执行动作个数 int nConditionNum; // 场景触发过滤条件个数 NET_THINGS_SERVICE_RULECONTENT_CONDITION* pstuCondition; // 场景触发过滤条件,用户分配内存,大小为nConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION) char szReserve[1024]; // 保留字节 }NET_THINGS_SERVICE_RULECONTENT; ///@brief 添加联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE) typedef struct tagNET_IN_THINGS_SERVICE_ADDRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID char szClassName[256]; // 类型名称“timer”、“alarm” NET_THINGS_SERVICE_RULECONTENT stuRuleContent; // 联动规则内容 }NET_IN_THINGS_SERVICE_ADDRULE; ///@brief 添加联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE) typedef struct tagNET_OUT_THINGS_SERVICE_ADDRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID char szRuleID[256]; // 规则ID }NET_OUT_THINGS_SERVICE_ADDRULE; ///@brief 删除联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE) typedef struct tagNET_IN_THINGS_SERVICE_DELRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID char szRuleID[256]; // 规则ID char szClassName[256]; // 类型名称“timer”、“alarm” }NET_IN_THINGS_SERVICE_DELRULE; ///@brief 删除联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE) typedef struct tagNET_OUT_THINGS_SERVICE_DELRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_DELRULE; ///@brief 修改联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE) typedef struct tagNET_IN_THINGS_SERVICE_MODRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID char szRuleID[256]; // 规则ID char szClassName[256]; // 类型名称“timer”、“alarm” char szRuleContentType[256]; // 规则内容类型"Action" NET_THINGS_SERVICE_RULECONTENT stuRuleContent; // 联动规则内容 }NET_IN_THINGS_SERVICE_MODRULE; ///@brief 修改联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE) typedef struct tagNET_OUT_THINGS_SERVICE_MODRULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_MODRULE; ///@brief 查询联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE) typedef struct tagNET_IN_THINGS_SERVICE_QUERULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID int nPageSize; // 每一页的数据大小 int nPage; // 按页查询 char szClassName[256]; // 类型名称“timer”、“alarm” }NET_IN_THINGS_SERVICE_QUERULE; ///@brief 联动规则 typedef struct tagNET_THINGS_SERVICE_QUERULE_RULECONTENT { EM_THINGS_RULECONTENT_TYPE emRuleContentType; // 场景规则类型 int nMaxTriggerNum; // 用户分配的pstuTrigger个数 int nRetTriggerNum; // 实际返回的pstuTrigger个数 NET_THINGS_SERVICE_RULECONTENT_TRIGGER* pstuTrigger; // 场景的触发器,用户分配内存,大小为nMaxTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER) int nMaxActionNum; // 用户分配的pstuAction个数 int nRetActionNum; // 实际返回的pstuAction个数 NET_THINGS_SERVICE_RULECONTENT_ACTION* pstuAction; // 场景触发执行动作,用户分配内存,大小为nMaxActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION) int nMaxConditionNum; // 用户分配的pstuCondition个数 int nRetConditionNum; // 实际返回的pstuCondition个数 NET_THINGS_SERVICE_RULECONTENT_CONDITION* pstuCondition; // 场景触发过滤条件,用户分配内存,大小为nMaxConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION) char szReserve[1024]; // 保留字节 }NET_THINGS_SERVICE_QUERULE_RULECONTENT; ///@brief 规则详情 typedef struct tagNET_THINGS_SERVICE_QUERULE_RULES { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 BOOL bEnable; // 使能 char szRuleID[256]; // 规则ID NET_THINGS_SERVICE_QUERULE_RULECONTENT stuRuleContent; // 联动规则内容 }NET_THINGS_SERVICE_QUERULE_RULES; ///@brief 查询联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE) typedef struct tagNET_OUT_THINGS_SERVICE_QUERULE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID int nPageCount; // 页个数 int nPageSize; // 每一页的数据大小 int nTotal; // 总数 int nPage; // 按页查询 int nRetRulesNum; // 实际返回的pstuRules个数 int nMaxRulesNum; // 用户分配的pstuRules个数 NET_THINGS_SERVICE_QUERULE_RULES* pstuRules; // 规则详情,用户分配内存,大小为 nMaxRulesNum * sizeof(NET_THINGS_SERVICE_QUERULE_RULES) }NET_OUT_THINGS_SERVICE_QUERULE; ///@brief 使能联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE) typedef struct tagNET_IN_THINGS_SERVICE_ENABLE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID BOOL bEnable; // 使能 char szRuleID[256]; // 规则ID char szClassName[256]; // 类型名称“timer”、“alarm” }NET_IN_THINGS_SERVICE_ENABLE; ///@brief 使能联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE) typedef struct tagNET_OUT_THINGS_SERVICE_ENABLE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_ENABLE; ///@brief 添加设备输入参数(对应 EM_THINGS_SERVICE_TYPE_ADDDEVICE) typedef struct tagNET_IN_THINGS_SERVICE_ADDDEVICE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID UINT nDevCata; // 添加设备类型,3:电表 5:塑壳 6:烟感 UINT nDev485Addr; // 485地址(塑壳、烟感填写) char szDevSn[128]; // 设备序列号(电表填写) char szDevName[128]; // 设备别名(电表填写) }NET_IN_THINGS_SERVICE_ADDDEVICE; ///@brief 添加设备输出参数(对应 EM_THINGS_SERVICE_TYPE_ADDDEVICE) typedef struct tagNET_OUT_THINGS_SERVICE_ADDDEVICE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_ADDDEVICE; ///@brief 子设备ID typedef struct tagNET_THINGS_SERVICE_DELDEVICE_LIST { char szDevieID[64]; // 子设备ID char szReserve[512]; // 保留字节 }NET_THINGS_SERVICE_DELDEVICE_LIST; ///@brief 删除子设备输入参数(对应 EM_THINGS_SERVICE_TYPE_DELDEVICE) typedef struct tagNET_IN_THINGS_SERVICE_DELDEVICE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nDelidListCount; // 子设备ID个数 NET_THINGS_SERVICE_DELDEVICE_LIST stuDelidList[64]; // 子设备ID列表 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_DELDEVICE; ///@brief 删除子设备输出参数(对应 EM_THINGS_SERVICE_TYPE_DELDEVICE) typedef struct tagNET_OUT_THINGS_SERVICE_DELDEVICE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_DELDEVICE; ///@brief 子设备替换输入参数(对应 EM_THINGS_SERVICE_TYPE_DEVREPLACE) typedef struct tagNET_IN_THINGS_SERVICE_DEVREPLACE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID char szReplacedDevID[64]; // 被替换空开ID char szNewDevID[64]; // 新空开ID }NET_IN_THINGS_SERVICE_DEVREPLACE; ///@brief 子设备替换输出参数(对应 EM_THINGS_SERVICE_TYPE_DEVREPLACE) typedef struct tagNET_OUT_THINGS_SERVICE_DEVREPLACE { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_DEVREPLACE; ///@brief 离线日志清除输入参数(对应 EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN) typedef struct tagNET_IN_THINGS_SERVICE_OFFLINELOGCLEAN { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN; ///@brief 离线日志清除输出参数(对应 EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN) typedef struct tagNET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID }NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN; ///@brief 获取所有空开当前报警状态输入参数(对应 EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET) typedef struct tagNET_IN_THINGS_SERVICE_CURRENTSTATUSGET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 char szProductID[64]; // 产品ID,全网唯一 char szDeviceID[64]; // 设备ID }NET_IN_THINGS_SERVICE_CURRENTSTATUSGET; ///@brief 报警状态 typedef enum tagEM_THINGS_CURRENTSTATUSGET_STATUS { EM_THINGS_CURRENTSTATUSGET_STATUS_UNKNOWN = -1, // 未知 EM_THINGS_CURRENTSTATUSGET_STATUS_NORMAL, // 正常 EM_THINGS_CURRENTSTATUSGET_STATUS_EARLY, // 预警 EM_THINGS_CURRENTSTATUSGET_STATUS_ALARM, // 报警 }EM_THINGS_CURRENTSTATUSGET_STATUS; ///@brief 设备状态数据 typedef struct tagNET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS { char szDeviceID[64]; // 设备ID EM_THINGS_CURRENTSTATUSGET_STATUS emStatus; // 报警状态 char szReserve[512]; // 保留字节 }NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS; ///@brief 获取所有空开当前报警状态输出参数(对应 EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET) typedef struct tagNET_OUT_THINGS_SERVICE_CURRENTSTATUSGET { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nErrcode; // 物模型协议错误码定义 char szProductID[64]; // 产品ID char szDeviceID[64]; // 设备ID int nRetStatusNum; // 实际返回stuStatus个数 NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS stuStatus[64]; // 设备状态数据 }NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET; ///@brief 物模型服务类型 typedef enum tagEM_THINGS_SERVICE_TYPE { EM_THINGS_SERVICE_TYPE_VALVECONTROL, // 阀门控制,入参:NET_IN_THINGS_SERVICE_VALVECONTROL,出参:NET_OUT_THINGS_SERVICE_VALVECONTROL EM_THINGS_SERVICE_TYPE_CHARGECLEAR, // 电量清零,入参:NET_IN_THINGS_SERVICE_CHARGECLEAR,出参:NET_OUT_THINGS_SERVICE_CHARGECLEAR EM_THINGS_SERVICE_TYPE_LEAKCURTPOST, // 漏电自检,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOST,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOST EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC, // 漏电自检异步,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC EM_THINGS_SERVICE_TYPE_AIRSWITHFIND, // 空开红蓝灯闪烁(寻找空开),入参:NET_IN_THINGS_SERVICE_AIRSWITHFIND,出参:NET_OUT_THINGS_SERVICE_AIRSWITHFIND EM_THINGS_SERVICE_TYPE_AIRSWITHRESET, // 空开恢复出厂设置,入参:NET_IN_THINGS_SERVICE_AIRSWITHRESET,出参:NET_OUT_THINGS_SERVICE_AIRSWITHRESET EM_THINGS_SERVICE_TYPE_ADDRULE, // 添加联动规则,入参:NET_IN_THINGS_SERVICE_ADDRULE,出参:NET_OUT_THINGS_SERVICE_ADDRULE EM_THINGS_SERVICE_TYPE_DELRULE, // 删除联动规则,入参:NET_IN_THINGS_SERVICE_DELRULE,出参:NET_OUT_THINGS_SERVICE_DELRULE EM_THINGS_SERVICE_TYPE_MODRULE, // 修改联动规则,入参:NET_IN_THINGS_SERVICE_MODRULE,出参:NET_OUT_THINGS_SERVICE_MODRULE EM_THINGS_SERVICE_TYPE_QUERULE, // 查询联动规则,入参:NET_IN_THINGS_SERVICE_QUERULE,出参:NET_OUT_THINGS_SERVICE_QUERULE EM_THINGS_SERVICE_TYPE_ENABLERULE, // 使能联动规则,入参:NET_IN_THINGS_SERVICE_ENABLE,出参:NET_OUT_THINGS_SERVICE_ENABLE EM_THINGS_SERVICE_TYPE_ADDDEVICE, // 添加设备,入参:NET_IN_THINGS_SERVICE_ADDDEVICE,出参:NET_OUT_THINGS_SERVICE_ADDDEVICE EM_THINGS_SERVICE_TYPE_DELDEVICE, // 删除子设备,入参:NET_IN_THINGS_SERVICE_DELDEVICE,出参:NET_OUT_THINGS_SERVICE_DELDEVICE EM_THINGS_SERVICE_TYPE_DEVREPLACE, // 子设备替换,入参:NET_IN_THINGS_SERVICE_DEVREPLACE,出参:NET_OUT_THINGS_SERVICE_DEVREPLACE EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN, // 离线日志清除,入参:NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN,出参:NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET, // 获取所有空开当前报警状态,入参:NET_IN_THINGS_SERVICE_CURRENTSTATUSGET,出参:NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET }EM_THINGS_SERVICE_TYPE; ///@brief 历史数据主题列表 typedef struct tagNET_THINGS_START_HISTORYDATA_TOPICS { char szTopics[32]; // 历史数据具体内容,即历史数据分类由物模型定义决定,可以不填,默认下"" char szReserve[256]; // 保留字节 }NET_THINGS_START_HISTORYDATA_TOPICS; ///@brief CLIENT_StartThingsHistoryData 输入参数 typedef struct tagNET_IN_THINGS_START_HISTORYDATA { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nTopicsCount; // 历史数据主题个数 NET_THINGS_START_HISTORYDATA_TOPICS stuTopics[64]; // 历史数据主题列表 }NET_IN_THINGS_START_HISTORYDATA; ///@brief CLIENT_StartThingsHistoryData 输出参数 typedef struct tagNET_OUT_THINGS_START_HISTORYDATA { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 DWORD dwCount; // 符合查询条件的总数 }NET_OUT_THINGS_START_HISTORYDATA; ///@brief CLIENT_DoFindThingsHistoryData 输入参数 typedef struct tagNET_IN_THINGS_DOFIND_HISTORYDATA { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 UINT uOffset; // 偏移量 UINT uCount; // 每次查询数量 }NET_IN_THINGS_DOFIND_HISTORYDATA; ///@brief 查询结果物模型属性信息 typedef struct tagNET_THINGS_HISTORYDATA_PROPER_INFO { char szKey[64]; // DQZT、FHZYY、Action等 char szValue[256]; // 1,true,"normal"等 EM_PROPERTIES_VALUE_TYPE emValueType; // szValue对应的类型;有int,bool,string类型 int nIntArrayValueNum; // stuIntArrayValue实际个数 NET_PROPERTIES_INTARRAY_VALUE stuIntArrayValue[64]; // int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY char szReserved[256]; // 预留字节 }NET_THINGS_HISTORYDATA_PROPER_INFO; ///@brief 历史数据内容 typedef struct tagNET_THINGS_HISTORYDATA { char szEventID[32]; // 标识符, "CZSJ_ZMZTGB"等 char szDeviceID[32]; // 设备ID char szDevSN[64]; // 设备序列ID NET_TIME_EX stuEventTime; // 数据时间 char szProductID[32]; // 产品ID int nOrder; // 序号 UINT nRetProInfoNum; // 实际返回的pstuProInfo个数 UINT nMaxProInfoNum; // 用户分配的pstuProInfo个数 NET_THINGS_HISTORYDATA_PROPER_INFO* pstuProInfo;// 查询结果物模型属性信息,用户分配内存,大小为 nMaxProInfoNum * sizeof(NET_THINGS_HISTORYDATA_PROPER_INFO) //格式:参数含义;参数名称;数据类型 //1. 当前状态;DQZT;bool //2. 分合闸原因;FHZYY;int //3. 事件动作;Happen; int //4. 对应值;DYZ;int //5. 报警动作;Action; int //6. A相对应值;DYZA;int //7. B相对应值;DYZB;int //8. C相对应值;DYZC;int //9. 检测结果;JCJG;bool //10. 失败原因;SBYY;string //11. 设备ID;SBID;string //12. 变更类型;BGLX;int //13. 任务ID;RWID;string //14. 执行时间;ZXSJ;string //15. 失败原因;SBYY;string //16. 执行参数; CJXX_ZMZT; bool //17. 执行结果;ZXJG;bool char szReserve[512]; // 保留字节 }NET_THINGS_HISTORYDATA; ///@brief CLIENT_DoFindThingsHistoryData 输出参数 typedef struct tagNET_OUT_THINGS_DOFIND_HISTORYDATA { DWORD dwSize; // 结构体大小, 调用者必须初始化该字段 int nCount; // 查询到的数量 int nMaxHisDataNum; // 用户分配的pstuHistoryData个数 NET_THINGS_HISTORYDATA* pstuHistoryData; // 历史数据内容,用户分配内存,大小为 nMaxHisDataNum * sizeof(NET_THINGS_HISTORYDATA) }NET_OUT_THINGS_DOFIND_HISTORYDATA; ///@brief 智慧用电Things配置获取接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThingsConfig(LLONG lLoginID, const NET_IN_THINGS_GET* pInParam, NET_OUT_THINGS_GET* pOutParam, int nWaitTime); ///@brief 智慧用电Things配置设置接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetThingsConfig(LLONG lLoginID, const NET_IN_THINGS_SET* pInParam, NET_OUT_THINGS_SET* pOutParam, int nWaitTime); ///@brief 智慧用电Things物模型属性订阅接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachThingsInfo(LLONG lLoginID, const NET_IN_THINGS_ATTACH* pInParam, NET_OUT_THINGS_ATTACH* pOutParam, int nWaitTime); ///@brief 智慧用电Things取消物模型属性订阅接口 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachThingsInfo(LLONG lAttachHandle); ///@brief 智慧用电Things获取设备能力集接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThingsCaps(LLONG lLoginID, const NET_IN_THINGS_GET_CAPS* pInParam, NET_OUT_THINGS_GET_CAPS* pOutParam, int nWaitTime); ///@brief 智慧用电Things获取设备列表接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThingsDevList(LLONG lLoginID, const NET_IN_THINGS_GET_DEVLIST* pInParam, NET_OUT_THINGS_GET_DEVLIST* pOutParam, int nWaitTime); ///@brief 智慧用电Things获取设备连接状态信息接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThingsNetState(LLONG lLoginID, const NET_IN_THINGS_GET_NETSTATE* pInParam, NET_OUT_THINGS_GET_NETSTATE* pOutParam, int nWaitTime); ///@brief 智慧用电Things物模型服务调用接口 ///@param[in] lLoginID 登录句柄 ///@param[in] emType 物模型服务类型 ///@param[in] pInBuf 接口输入参数,参考emType类型,内存资源由用户申请和释放 ///@param[out] pOutBuf 接口输出参数, 参考emType类型,内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ThingsServiceOperate(LLONG lLoginID, EM_THINGS_SERVICE_TYPE emType, void* pInBuf, void* pOutBuf, int nWaitTime); ///@brief 开始获取设备历史数据接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 查找句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartThingsHistoryData(LLONG lLoginID, const NET_IN_THINGS_START_HISTORYDATA* pstInParam, NET_OUT_THINGS_START_HISTORYDATA* pstOutParam, int nWaitTime); ///@brief 获取设备历史数据结果接口 ///@param[in] lFindHandle 查找句柄 ///@param[in] pstInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoFindThingsHistoryData(LLONG lFindHandle, const NET_IN_THINGS_DOFIND_HISTORYDATA* pstInParam, NET_OUT_THINGS_DOFIND_HISTORYDATA *pstOutParam, int nWaitTime); ///@brief 停止获取设备历史数据 ///@param[in] lFindHandle 查找句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopThingsHistoryData(LLONG lFindHandle); /***************************智慧用电Things接口 END***************************/ ///@brief CLIENT_VerifyUpgradeVerify 接口入参 typedef struct tagNET_IN_VERIFY_UPGRADE_VERIFY { DWORD dwSize; // 结构体大小 char szData[256]; // 加密数据 } NET_IN_VERIFY_UPGRADE_VERIFY; ///@brief CLIENT_VerifyUpgradeVerify 接口出参 typedef struct tagNET_OUT_VERIFY_UPGRADE_VERIFY { DWORD dwSize; // 结构体大小 } NET_OUT_VERIFY_UPGRADE_VERIFY; ///@brief 通过将得到的随机经过转换加密后返回给设备端 CLIENT_NET_API BOOL CALL_METHOD CLIENT_VerifyUpgradeVerify(LLONG lLoginID, const NET_IN_VERIFY_UPGRADE_VERIFY* pInParam, NET_OUT_VERIFY_UPGRADE_VERIFY* pOutParam, int nWaitTime); ///@brief CLIENT_GetUpgradeVerifyCurrentData 接口入参 typedef struct tagNET_IN_GET_UPGRADE_VERIFY_CURRENT_DATA { DWORD dwSize; // 结构体大小 } NET_IN_GET_UPGRADE_VERIFY_CURRENT_DATA; ///@brief 验证信息 typedef struct tagNET_VERIFY_INFO { char szData[64]; // 随机数 char szPublicKeyVersion[16]; // 设备端公钥版本 char szReserved[1024]; // 保留字节 } NET_VERIFY_INFO; ///@brief CLIENT_GetUpgradeVerifyCurrentData 接口出参 typedef struct tagNET_OUT_GET_UPGRADE_VERIFY_CURRENT_DATA { DWORD dwSize; // 结构体大小 NET_VERIFY_INFO stuVerifyInfo; // 验证信息 } NET_OUT_GET_UPGRADE_VERIFY_CURRENT_DATA; ///@brief 获取当前随机数信息 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetUpgradeVerifyCurrentData(LLONG lLoginID, const NET_IN_GET_UPGRADE_VERIFY_CURRENT_DATA* pInParam, NET_OUT_GET_UPGRADE_VERIFY_CURRENT_DATA* pOutParam, int nWaitTime); ///@brief CLIENT_GetRegisterStatus 接口入参 typedef struct tagNET_IN_GET_REGISTER_STATUS { DWORD dwSize; // 结构体大小 } NET_IN_GET_REGISTER_STATUS; ///@brief CLIENT_GetRegisterStatus 接口出参 typedef struct tagNET_OUT_GET_REGISTER_STATUS { DWORD dwSize; // 结构体大小 BOOL bIsRegistered; // 注册的状态, true:注册成功, false:注册失败或未注册 } NET_OUT_GET_REGISTER_STATUS; ///@brief 获取注册的状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetRegisterStatus(LLONG lLoginID, const NET_IN_GET_REGISTER_STATUS* pstuInParam, NET_OUT_GET_REGISTER_STATUS* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetParticipatingConference 接口入参 typedef struct tagNET_IN_GET_PARTICIPATING_CONFERENCE { DWORD dwSize; // 结构体大小 } NET_IN_GET_PARTICIPATING_CONFERENCE; ///@brief 会议信息 typedef struct tagNET_CONFERENCE_INFO { BOOL bIsCloseMicDefault; // 终端是否默认闭麦入会, true表示闭麦入会, false表示开麦入会 char szID[16]; // 会议ID(唯一) char szName[128]; // 会议名称 char szPassword[32]; // 会议密码 NET_TIME stuStartTime; // 会议开始时间 NET_TIME stuEndTime; // 会议结束时间 char szCreatorID[16]; // 会议创建者终端ID char szCreatorName[128]; // 会议创建者终端名称 char szChairmanID[16]; // 会议主席终端ID BOOL bIsAutoLayout; // 是否自动布局,自动布局则布局信息LayoutInfo无效,不使用 UINT nBandwidth; // 会议带宽,单位kb char szResvered[512]; // 保留字节 }NET_CONFERENCE_INFO; ///@brief CLIENT_GetParticipatingConference 接口出参 typedef struct tagNET_OUT_GET_PARTICIPATING_CONFERENCE { DWORD dwSize; // 结构体大小 NET_CONFERENCE_INFO stuConferenceInfo; // 会议信息 } NET_OUT_GET_PARTICIPATING_CONFERENCE; ///@brief 获取正在参与的会议的信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetParticipatingConference(LLONG lLoginID, const NET_IN_GET_PARTICIPATING_CONFERENCE* pstuInParam, NET_OUT_GET_PARTICIPATING_CONFERENCE* pstuOutParam, int nWaitTime); /***************************设备分压业务接口Start***************************/ ///@brief 子连接连接方式 typedef enum tagEM_SUBLINK_TYPE { EM_SUBLINK_TYPE_PASSIVE, // 直连方式 EM_SUBLINK_TYPE_PORT, // 主动注册方式 } EM_SUBLINK_TYPE; ///@brief 子连接连接业务模式 typedef enum tagEM_SUBLINK_MODE { EM_SUBLINK_MODE_NORMAL = 0, //通用模式,默认值 EM_SUBLINK_MODE_LOWPOWER = 1, //低功耗模式 }EM_SUBLINK_MODE; ///@brief 本地服务网络信息 typedef struct tagNET_LOCAL_SERVER_NET_INFO { char szLocalIp[64]; // 本地服务IP UINT nLocalPort; // 本地服务端口 char szReserved[516]; // 保留字节 } NET_LOCAL_SERVER_NET_INFO; ///@brief CLIENT_TransferSubLinkInfo 接口输入参数 typedef struct tagNET_IN_TRANSFER_SUBLINK_INFO { DWORD dwSize; // 结构体大小 EM_SUBLINK_TYPE emLinkType; // 连接方式 char szBSID[64]; // 会话ID NET_LOCAL_SERVER_NET_INFO stuLoaclServerInfo; // 本地服务信息, emLinkType为EM_SUBCONNECT_TYPE_PORT(主动注册)方式时有效 EM_SUBLINK_MODE emLinkMode; // 连接模式 } NET_IN_TRANSFER_SUBLINK_INFO; ///@brief 发送创建子连接所需的信息返回的错误信息 typedef enum tagEM_TRANSFER_SUBCONNECT_ERROR { EM_TRANSFER_SUBCONNECT_UNKNWON, // 未知错误 EM_TRANSFER_SUBCONNECT_EXCEED, // 子链接超上限 } EM_TRANSFER_SUBCONNECT_ERROR; ///@brief CLIENT_TransferSubLinkInfo 接口输出参数 typedef struct tagNET_OUT_TRANSFER_SUBLINK_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_TRANSFER_SUBLINK_INFO; ///@brief 设备网络信息 typedef struct tagNET_DEV_NETWORK_INFO { char szDevIP[64]; // 设备IP UINT nDevPort; // 设备端口号 char szReserved[516]; // 保留字节 } NET_DEV_NETWORK_INFO; ///@brief CLIENT_CreateSubBusinessModule 接口输入参数 typedef struct tagNET_IN_CREAT_SUB_BUSINESS_MDL_INFO { DWORD dwSize; // 结构体大小 EM_SUBLINK_TYPE emLinkType; // 连接方式 char szBSID[64]; // bsid NET_DEV_NETWORK_INFO stuDevNetInfo; // 设备网络信息, emLinkType 为 EM_SUBLINK_TYPE_PASSIVE(直连)方式时有效 EM_SUBLINK_MODE emLinkMode; // 连接模式 } NET_IN_CREAT_SUB_BUSINESS_MDL_INFO; ///@brief CLIENT_CreateSubBusinessModule 接口输出参数 typedef struct tagNET_OUT_CREAT_SUB_BUSINESS_MDL_INFO { DWORD dwSize; // 结构体大小 } NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO; ///@brief 文件下载回调信息 typedef struct tagNET_DOWNLOAD_MEDIA_FILE_CALLBACK_INFO { INT64 nTotalSize; // 文件总长度 INT64 nDownLoadSize; // 已下载数据长度, -1 表示下载完成 UINT nErrCode; // 错误信息 // 0:无错误 // 1: 无权限,2:设备不支持此操作,3:资源不足, 4:设备无法获取当前请求数据 // 11: 表示高级用户抢占低级用户资源 // 12: 禁止入网 // 13: 磁盘读数据限制 // 14: 多画面预览已打开,资源不足,压缩回放失败 // 15: 压缩回放功能已打开,导致失败 // 16: 表示此视频通道处于离线,拉流失败 // 21: 未知的压缩失败原因, // 22: 超出解码能力,导致压缩失败 // 23: 超出压缩能力,导致压缩失败 // 24: 无原始码流,导致压缩失败 // 25: 压缩通道所在的从片掉线,导致压缩失败 // 26: 主码流成功的情况下,拉辅码流时登录失败 // 27: 辅码流被前端关闭 // 28: 文件不存在 // 100: 未知错误 UINT nBufferSize; // 数据长度 char *pDataBuffer; // 文件数据 LDWORD dwUserData; // 用户数据 char szReserved[1024]; // 保留字节 } NET_DOWNLOAD_MEDIA_FILE_CALLBACK_INFO; ///@brief 分压连接断线回调信息 typedef struct tagNET_SUBBIZ_DISCONNECT_CALLBACK { NET_DEV_NETWORK_INFO stuDevNetInfo; // 设备网络信息 LDWORD dwUserData; // 用户数据 char szReserved[1024]; // 保留字节 } NET_SUBBIZ_DISCONNECT_CALLBACK; ///@brief 分压业务连接断线回调 ///@param[out] lSubBizHandle 分压业务sdk句柄, 由CLIENT_CreateSubBusinessModule接口返回 ///@param[out] lOperateHandle 业务句柄 ///@param[out] pstDisConnectInfo 断线回调数据 ///@return void typedef void (CALLBACK *fSubBizDisConnectCallBack)(LLONG lSubBizHandle, LLONG lOperateHandle, NET_SUBBIZ_DISCONNECT_CALLBACK* pstDisConnectInfo); ///@brief 文件下载回调函数原型 ///@param[out] lDownHandle 下载句柄, 由CLIENT_StartDownloadMediaFile接口返回 ///@param[out] pstDwonloadCallBackInfo 文件下载回调数据 ///@return void typedef int (CALLBACK *fDownLoadMediaFileCallBack)(LLONG lDownHandle, NET_DOWNLOAD_MEDIA_FILE_CALLBACK_INFO* pstDwonloadCallBackInfo); ///@brief CLIENT_StartSubBizDownloadMediaFile 接口输入参数 typedef struct tagNET_IN_START_DOWNLOAD_MEDIA_FILE { DWORD dwSize; // 结构体大小 char szReserved[4]; // 保留字节 fDownLoadMediaFileCallBack cbDownLoadCallBack; // 文件下载回调函数 fSubBizDisConnectCallBack cbDisConnectCallBack; // 连接断线回调 LDWORD dwUserData; // 用户数据 } NET_IN_START_DOWNLOAD_MEDIA_FILE; ///@brief CLIENT_StartSubBizDownloadMediaFile 接口输出参数 typedef struct tagNET_OUT_START_DOWNLOAD_MEDIA_FILE { DWORD dwSize; // 结构体大小 } NET_OUT_START_DOWNLOAD_MEDIA_FILE; ///@brief 文件类型 typedef enum tagEM_RECORDFILE_TYPE { EM_RECORDFILE_TYPE_NORMAL, // 普通录像 EM_RECORDFILE_TYPE_ALARM, // 报警录像 EM_RECORDFILE_TYPE_MOVE_DETECT, // 移动检测录像 EM_RECORDFILE_TYPE_CARD, // 卡号录像 EM_RECORDFILE_TYPE_PIC, // 图片 EM_RECORDFILE_TYPE_AUDIO, // 音频 } EM_RECORDFILE_TYPE; ///@brief CLIENT_DoSubBizDownloadMediaFile 接口输入参数 typedef struct tagNET_IN_DO_DOWNLOAD_MEDIA_FILE { DWORD dwSize; // 结构体大小 int nChannelID; // 视频通道号, -1 表示无效, 即不关心通道 EM_RECORDFILE_TYPE emRecordType; // 录像文件类型 char szFilePath[256]; // 录像文件路径 UINT nOffLength; // 偏移大小, 单位字节 UINT nFileLength; // 文件长度, 单位字节 } NET_IN_DO_DOWNLOAD_MEDIA_FILE; ///@brief CLIENT_DoSubBizDownloadMediaFile 接口输出参数 typedef struct tagNET_OUT_DO_DOWNLOAD_MEDIA_FILE { DWORD dwSize; // 结构体大小 } NET_OUT_DO_DOWNLOAD_MEDIA_FILE; ///@brief 子连接状态 typedef enum tagEM_SUBLINK_STATE { EM_SUBLINK_STATE_UNKNWON, // 未知 EM_SUBLINK_STATE_CONNECT, // 已连接 EM_SUBLINK_STATE_DISCONNECT, // 已断开 EM_SUBLINK_STATE_BSID_ERROR, // BSID校验失败, 子连接创建失败 } EM_SUBLINK_STATE; ///@brief 子链接监听服务回调信息 typedef struct tagNET_SUBLINK_SERVER_CALLBACK { EM_SUBLINK_STATE emSubLinkState; // 子连接状态 NET_DEV_NETWORK_INFO stuDevNetInfo; // 设备网络信息 LDWORD dwUserData; // 用户数据 } NET_SUBLINK_SERVER_CALLBACK; ///@brief callback ///@brief 子连接监听服务回调函数原型 ///@param[out] lListenServer 子链接监听服务句柄, 由CLIENT_StartSubLinkListenServer接口返回 ///@param[out] lSubBizHandle 分压业务sdk句柄, 由CLIENT_CreateSubBusinessModule接口返回 ///@param[out] pstSubLinkCallBack 子链接监听服务回调信息 ///@return void typedef void (CALLBACK *fSubLinkServiceCallBack)(LLONG lListenServer, LLONG lSubBizHandle, NET_SUBLINK_SERVER_CALLBACK *pstSubLinkCallBack); ///@brief CLIENT_StartSubLinkListenServer 接口输入参数 typedef struct tagNET_IN_START_SUBLINK_LISTEN_SERVER { DWORD dwSize; // 结构体大小 NET_LOCAL_SERVER_NET_INFO stuLoaclServerInfo; // 本地服务信息 fSubLinkServiceCallBack cbSubLinkServiceCallBack; // 子连接监听服务回调函数 LDWORD dwUserData; // 用户数据 } NET_IN_START_SUBLINK_LISTEN_SERVER; ///@brief CLIENT_StartSubLinkListenServer 接口输出参数 typedef struct tagNET_OUT_START_SUBLINK_LISTEN_SERVER { DWORD dwSize; // 结构体大小 } NET_OUT_START_SUBLINK_LISTEN_SERVER; ///@brief CLIENT_GetSubBusinessCaps 接口输入参数 typedef struct tagNET_IN_GET_SUBBIZ_CAPS { DWORD dwSize; // 结构体大小 } NET_IN_GET_SUBBIZ_CAPS; ///@brief CLIENT_GetSubBusinessCaps 接口输出参数 typedef struct tagNET_OUT_GET_SUBBIZ_CAPS { DWORD dwSize; // 结构体大小 int nBusinessDivision; // 子(分压)业务能力掩码, 0表示不支持分压, bit0:实时流 bit1:回放流 bit2:图片流, bit3:按文件下载, bit4:私有透传隧道 }NET_OUT_GET_SUBBIZ_CAPS; ///@brief CLIENT_SetTransmitTunnelParam 接口输入参数 typedef struct tagNET_IN_SET_TRANSMITTUNNEL_PARAM { DWORD dwSize; // 结构体大小 char szReserved[4]; // 字节对齐 char szLoaclIP[64]; // 本地服务IP UINT nPort[2]; // 向上侦听端口的最小值和最大值 } NET_IN_SET_TRANSMITTUNNEL_PARAM; ///@brief CLIENT_SetTransmitTunnelParam 接口输出参数 typedef struct tagNET_OUT_SET_TRANSMITTUNNEL_PARAM { DWORD dwSize; /// 结构体大小 }NET_OUT_SET_TRANSMITTUNNEL_PARAM; ///@brief 私有隧道断线原因 typedef enum tagEM_TRANSMIT_DISCONNECT_REASON { EM_TRANSMIT_DISCONNECT_REASON_UNKNOWN, // 未知 EM_TRANSMIT_DISCONNECT_REASON_TIMEOUT, // 隧道超时2分钟断线 EM_TRANSMIT_DISCONNECT_REASON_SERVICE_CHANGE, // 设备服务关键信息改变 } EM_TRANSMIT_DISCONNECT_REASON; ///@brief 隧道连接断开回调信息 typedef struct tagNET_TRANSMIT_DISCONNECT_CALLBACK { NET_DEV_NETWORK_INFO stuDevNetInfo; // 设备网络信息 LDWORD dwUserData; // 用户数据 EM_TRANSMIT_DISCONNECT_REASON emDisReason; // 断线原因 char szReserved[1020]; // 保留字节 } NET_TRANSMIT_DISCONNECT_CALLBACK; ///@brief 隧道业务连接断开回调 ///@param[out] lSubBizHandle 分压模块句柄, 由CLIENT_CreateSubBusinessModule接口返回 ///@param[out] lOperateHandle 业务句柄 ///@param[out] pstDisConnectInfo 断线回调数据 ///@return void typedef void (CALLBACK *fTransmitDisConnectCallBack)(LLONG lSubBizHandle, LLONG lOperateHandle, NET_TRANSMIT_DISCONNECT_CALLBACK* pstDisConnectInfo); ///@brief 私有隧道代理类型 typedef enum tagEM_TRANSMIT_PROXY_TYPE { EM_TRANSMIT_PROXY_TYPE_WEB=1, // Web代理。由服务端自动获取web端口,客户端不需要关心 EM_TRANSMIT_PROXY_TYPE_GENERAL, // 通用端口代理。要求客户端知道服务的端口 } EM_TRANSMIT_PROXY_TYPE; ///@brief 私有隧道代理模式 typedef enum tagEM_TRANSMIT_PROXY_MODE { EM_TRANSMIT_PROXY_MODE_LOCAL=1, // 本地代理 EM_TRANSMIT_PROXY_MODE_CASCADE, // 级联代理 } EM_TRANSMIT_PROXY_MODE; ///@brief CLIENT_CreateTransmitTunnel 接口输入参数 typedef struct tagNET_IN_CREATE_TRANSMIT_TUNNEL { DWORD dwSize; // 结构体大小 EM_TRANSMIT_PROXY_TYPE emProxyType; // 代理类型 EM_TRANSMIT_PROXY_MODE emProxyMode; // 代理模式 int nPort; // 当emProxyType为EM_TRANSMIT_PROXY_TYPE_GENERAL 是有效 // 本地代理时指本地的代理端口。级联代理时指远端的代理端口。默认80 int nChannel; // emProxyMode为EM_TRANSMIT_PROXY_MODE_CASCADE时有效,与Port一起,组成需级联代理的服务 char szReserved[4]; // 字节对齐 fTransmitDisConnectCallBack cbDisConnectCallBack; // 隧道超时2分钟断线回调 fSubBizDisConnectCallBack cbDisConnectCallBackEx; // 隧道断线回调 LDWORD dwUserData; // 用户数据 } NET_IN_CREATE_TRANSMIT_TUNNEL; ///@brief CLIENT_RefuseLowPowerDevSleep 接口输入参数 typedef struct tagNET_IN_REFUSE_SLEEP_INFO { DWORD dwSize; // 结构体大小 }NET_IN_REFUSE_SLEEP_INFO; ///@brief CLIENT_RefuseLowPowerDevSleep 接口输出参数 typedef struct tagNET_OUT_REFUSE_SLEEP_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_REFUSE_SLEEP_INFO; ///@brief 低功耗设备保活状态回调数据 typedef struct tagNET_LOW_POWER_KEEPALIVE_CALLBACK_INFO { BOOL bKeepAlive; // 是否收到设备保活包 LDWORD dwUserData; // 用户数据 char szReserved[1024]; // 保留字节 }NET_LOW_POWER_KEEPALIVE_CALLBACK_INFO; ///@brief 收到低功耗设备保活包回调函数原型 ///@param[out] lLowPowerHandle 低功耗通道句柄, 由 CLIENT_CreateLowPowerChannel 接口返回 ///@param[out] pstLowPowerKeepAliveCallBackInfo 低功耗设备保活状态回调数据 ///@return void typedef void (CALLBACK *fLowPowerKeepAliveCallBack)(LLONG lLowPowerHandle, NET_LOW_POWER_KEEPALIVE_CALLBACK_INFO* pstLowPowerKeepAliveCallBackInfo); ///@brief CLIENT_CreateLowPowerChannel 接口输入参数 typedef struct tagNET_IN_CREATE_LOW_POWER_CHANNEL { DWORD dwSize; // 结构体大小 fSubBizDisConnectCallBack cbDisConnectCallBack; // 连接断线回调 LDWORD dwUserData; // 用户数据 fLowPowerKeepAliveCallBack cbLowPowerKeepAliveCallBack; // 低功耗设备保活状态回调 }NET_IN_CREATE_LOW_POWER_CHANNEL; ///@brief CLIENT_CreateLowPowerChannel 接口输出参数 typedef struct tagNET_OUT_CREATE_LOW_POWER_CHANNEL { DWORD dwSize; // 结构体大小 }NET_OUT_CREATE_LOW_POWER_CHANNEL; ///@brief CLIENT_DoWakeUpLowPowerDevcie 接口输入参数 typedef struct tagNET_IN_WAKE_UP_INFO { DWORD dwSize; // 结构体大小 }NET_IN_WAKE_UP_INFO; ///@brief CLIENT_DoWakeUpLowPowerDevcie 接口输出参数 typedef struct tagNET_OUT_WAKE_UP_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_WAKE_UP_INFO; ///@brief 私有web代理协议类型 typedef enum tagEM_WEB_TUNNEL_PROTOCOL { EM_WEB_TUNNEL_PROTOCOL_UNKNOWN, // 未知 EM_WEB_TUNNEL_PROTOCOL_HTTP, // HTTP EM_WEB_TUNNEL_PROTOCOL_HTTPS, // THTPS } EM_WEB_TUNNEL_PROTOCOL; ///@brief CLIENT_CreateTransmitTunnel 接口输出参数 typedef struct tagNET_OUT_CREATE_TRANSMIT_TUNNEL { DWORD dwSize; // 结构体大小 int nPort; // 对上侦听端口 EM_WEB_TUNNEL_PROTOCOL emWebProtocol; // 私有web代理访问协议 char szUserName[128]; // 用户名 char szTempToken[128]; // 令牌 }NET_OUT_CREATE_TRANSMIT_TUNNEL; ///@brief 获取分压业务能力信息, 由主业务模块调用 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒(目前不生效, 保留在此以便后续扩展) ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetSubBusinessCaps(LLONG lLoginID, const NET_IN_GET_SUBBIZ_CAPS *pInParam, NET_OUT_GET_SUBBIZ_CAPS *pOutParam, int nWaitTime); ///@brief 发送创建子连接所需的信息给设备, 由主业务模块调用 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TransferSubLinkInfo(LLONG lLoginID, const NET_IN_TRANSFER_SUBLINK_INFO *pInParam, NET_OUT_TRANSFER_SUBLINK_INFO *pOutParam, int nWaitTime); ///@brief 创建业务sdk模块 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return 业务sdk句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CreateSubBusinessModule(const NET_IN_CREAT_SUB_BUSINESS_MDL_INFO *pInParam, NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO *pOutParam); ///@brief 销毁业务sdk模块 ///@param[in] lSubBizHandle 业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DestroySubBusinessModule(LLONG lSubBizHandle); ///@brief 启动子连接监听服务 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return 子链接监听服务句柄, 非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSubLinkListenServer(const NET_IN_START_SUBLINK_LISTEN_SERVER *pInParam, NET_OUT_START_SUBLINK_LISTEN_SERVER *pOutParam); ///@brief 停止子连接监听服务 ///@param[in] lListenServer 监听服务句柄,由CLIENT_StartSubLinkListenServer接口返回 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSubLinkListenServer(LLONG lListenServer); ///@brief 开始媒体文件下载 ///@param[in] lSubBizHandle 业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@retval LLONG ///@return 录像文件下载句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSubBizDownloadMediaFile(LLONG lSubBizHandle, NET_IN_START_DOWNLOAD_MEDIA_FILE *pInParam, NET_OUT_START_DOWNLOAD_MEDIA_FILE *pOutParam); ///@brief 执行媒体文件下载 ///@param[in] lDownHandle 录像文件下载句柄,由CLIENT_StartDownloadRecordFile接口返回 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoSubBizDownloadMediaFile(LLONG lDownHandle, NET_IN_DO_DOWNLOAD_MEDIA_FILE *pInParam, NET_OUT_DO_DOWNLOAD_MEDIA_FILE *pOutParam); ///@brief 停止媒体文件下载 ///@param[in] lDownHandle 录像文件下载句柄,由CLIENT_StartSubBizDownloadMediaFile接口返回 ///@return TRUE 表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopSubBizDownloadMediaFile(LLONG lDownHandle); ///@brief 暂停或恢复文件下载 ///@param[in] lDownHandle 文件下载句柄,由CLIENT_StartSubBizDownloadMediaFile接口返回 ///@param[in] bPause 是否暂停,TRUE表示暂停下载, FALSE表示恢复下载 ///@return TRUE 表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PauseSubBizDownloadMediaFile(LLONG lDownHandle, BOOL bPause); /***************************透传隧道接口start******************/ ///@brief 设置私有透传通道参数 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetTransmitTunnelParam( const NET_IN_SET_TRANSMITTUNNEL_PARAM *pInParam, NET_OUT_SET_TRANSMITTUNNEL_PARAM *pOutParam); ///@brief 创建隧道 ///@param[in] lSubBizHandle 业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回 ///@param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 ///@return LLONG 透传隧道业务句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CreateTransmitTunnel(LLONG lSubBizHandle, const NET_IN_CREATE_TRANSMIT_TUNNEL *pInParam, NET_OUT_CREATE_TRANSMIT_TUNNEL *pOutParam); ///@brief 销毁隧道 ///@param[in] lTransmitHandle 透传隧道业务句柄,由CLIENT_CreateTransmitTunnel接口返回 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DestroyTransmitTunnel(LLONG lTransmitHandle); /***************************透传隧道接口End*****************/ /***************************4G低功耗业务 start********************/ ///@brief 拒绝休眠 ///@param[in] lLoginID 登录句柄 ///@param[in] pInParam 接口输入参数 ///@param[out] pOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒(目前不生效, 保留在此以便后续扩展) ///@return TRUE表示成功 ,FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RefuseLowPowerDevSleep(LLONG lLoginID, const NET_IN_REFUSE_SLEEP_INFO *pInParam, NET_OUT_REFUSE_SLEEP_INFO *pOutParam, int nWaitTime); ///@brief 创建低功耗通道 ///@param[in] lSubBizHandle 业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回 ///@param[in] pInParam 接口输入参数 ///@param[out] pOutParam 接口输出参数 ///@return LLONG 低功耗通道句柄,非0表示成功 0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_CreateLowPowerChannel(LLONG lSubBizHandle, NET_IN_CREATE_LOW_POWER_CHANNEL *pInParam, NET_OUT_CREATE_LOW_POWER_CHANNEL *pOutParam); ///@brief 唤醒设备 ///@param[in] lChannelHandle 低功耗业务句柄,由CLIENT_CreateLowPowerChannel接口返回 ///@param[in] pInParam 接口输入参数 ///@param[out] pOutParam 接口输参数 ///@return TRUE表示成功 ,FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DoWakeUpLowPowerDevcie(LLONG lChannelHandle, NET_IN_WAKE_UP_INFO *pInParam, NET_OUT_WAKE_UP_INFO *pOutParam); ///@brief 销毁低功耗通道 ///@param[in] lChannelHandle 低功耗业务句柄,由CLIENT_CreateLowPowerChannel接口返回 ///@return TRUE表示成功 ,FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DestoryLowPowerChannel(LLONG lChannelHandle); /***************************4G低功耗业务 end********************/ /***************************设备分压业务接口End***************************/ /***************************开放平台业务接口Start***************************/ ///@brief CLIENT_InstallManagerGetCustomEventCaps入参 typedef struct tagNET_IN_INSTALLMANAGER_GETCUSTOMEVENT_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_INSTALLMANAGER_GETCUSTOMEVENT_CAPS; ///@brief 开放平台自定义事件能力信息 typedef struct tagNET_CUSTOMEVENTCAPS_INFO { char szAppName[128]; // 程序名称 char szClass[128][32]; // 程序支持的自定义事件类别 int nClassNum; // 程序支持的自定义事件个数 BYTE bReserved[2048]; // 保留字节 }NET_CUSTOMEVENTCAPS_INFO; ///@brief CLIENT_InstallManagerGetCustomEventCaps出参 typedef struct tagNET_OUT_INSTALLMANAGER_GETCUSTOMEVENT_CAPS { DWORD dwSize; // 结构体大小 int nListCapNum; // 开放平台自定义事件能力个数 NET_CUSTOMEVENTCAPS_INFO stuListCap[16]; // 开放平台自定义事件能力列表 }NET_OUT_INSTALLMANAGER_GETCUSTOMEVENT_CAPS; ///@brief 获取开放平台自定义事件能力, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_InstallManagerGetCustomEventCaps(LLONG lLoginID, const NET_IN_INSTALLMANAGER_GETCUSTOMEVENT_CAPS* pInParam, NET_OUT_INSTALLMANAGER_GETCUSTOMEVENT_CAPS* pOutParam, int nWaitTime); /***************************开放平台业务接口End***************************/ ///@brief CLIENT_CalcScrapsteelPunish 接口输入参数 typedef struct tagNET_IN_CALC_SCRAPSTEEL_PUNISH { DWORD dwSize; // 结构体大小 int nLayerDetectInfoNum; // 车厢废钢每层分析结果的个数, 最大值为512 NET_SCRAPSTEEL_LAYER_DETECT_INFO* pstuLayerDetectInfo; // 车厢废钢每层分析结果, 由用户申请空间,空间大小为 sizeof(NET_SCRAPSTEEL_LAYER_DETECT_INFO) * nLayerDetectInfoNum int nNetWeight; // 车辆净重(kg), 净重和毛重必须至少填一个 char szPlateNum[32]; // 车牌号码 int nGrossWeight; // 车辆毛重(kg), 净重和毛重必须至少填一个 }NET_IN_CALC_SCRAPSTEEL_PUNISH; ///@brief CLIENT_CalcScrapsteelPunish 接口输出参数 typedef struct tagNET_OUT_CALC_SCRAPSTEEL_PUNISH { DWORD dwSize; // 结构体大小 float fPunishResult; // 扣重扣杂结果 float fPunishResultRatio; // 扣重扣杂结果百分比 float fPunishPrice; // 扣价结果 }NET_OUT_CALC_SCRAPSTEEL_PUNISH; ///@brief 扣重扣杂 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CalcScrapsteelPunish(LLONG lLoginID, const NET_IN_CALC_SCRAPSTEEL_PUNISH *pstuInParam, NET_OUT_CALC_SCRAPSTEEL_PUNISH *pstuOutParam, int nWaitTime); ///@brief CLIENT_SetConsumeResult 输入结构体 typedef struct tagNET_IN_SET_CONSUME_RESULT { DWORD dwSize; // 结构体大小 int nChannelID; // 通道号 char szUserID[32]; // 用户ID UINT nRemainAmount; // 消费后余额,如果消费失败则是消费前余额,单位分。 BOOL bConsumeResult; // 消费成功与否 int nErrorCode; // 错误码 // 0x00:无错误; // 0x01:余额不足 // 0x02:已过就餐时间 // 0x03:已消费 // 0x04:无权限 // 0x05: 超过消费金额上限 // 0x06: 重复交易 UINT nConsumptionAmount; // 平台固定消费金额,单位(分) BOOL bExcessConsumption; // 是否是超额消费 int nRemainingTimes; // 剩余消费次数,-1表示不限制消费次数,0以上(包括0)表示剩余消费次数 char szTransactionSerialNumber[128]; // 消费流水号 }NET_IN_SET_CONSUME_RESULT; ///@brief CLIENT_SetConsumeResult 输出结构体 typedef struct tagNET_OUT_SET_CONSUME_RESULT { DWORD dwSize; // 结构体大小 }NET_OUT_SET_CONSUME_RESULT; ///@brief 设置消费结果 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetConsumeResult(LLONG lLoginID, const NET_IN_SET_CONSUME_RESULT* pInParam, NET_OUT_SET_CONSUME_RESULT* pOutParam, int nWaitTime); ///@brief CLIENT_TransferHospitalHostResult 输入结构体 typedef struct tagNET_IN_TRANSFER_HOSPITAL_HOST_RESULT { DWORD dwSize; // 结构体大小 int nOperator; // 操作类型, 0:发起托管操作, 1:取消托管操作 BOOL bResult; // 操作结果 char szErrorInfo[512]; // 失败原因 char szSrcHostCode[64]; // 发起托管的医护主机设备编码 char szDestHostCode[64]; // 接收托管的医护主机设备编码 }NET_IN_TRANSFER_HOSPITAL_HOST_RESULT; ///@brief CLIENT_TransferHospitalHostResult 输出结构体 typedef struct tagNET_OUT_TRANSFER_HOSPITAL_HOST_RESULT { DWORD dwSize; // 结构体大小 }NET_OUT_TRANSFER_HOSPITAL_HOST_RESULT; ///@brief 通知医护主机托管结果 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TransferHospitalHostResult(LLONG lLoginID, const NET_IN_TRANSFER_HOSPITAL_HOST_RESULT* pstuInParam, NET_OUT_TRANSFER_HOSPITAL_HOST_RESULT* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetAiPickUpWorkState 输入参数 typedef struct tagNET_IN_GET_AI_PICK_UP_WORK_STATE { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道号 }NET_IN_GET_AI_PICK_UP_WORK_STATE; ///@brief CLIENT_GetAiPickUpWorkState 输出参数 typedef struct tagNET_OUT_GET_AI_PICK_UP_WORK_STATE { DWORD dwSize; // 结构体大小 int nState; // 0 异常,1 正常,2 离线 }NET_OUT_GET_AI_PICK_UP_WORK_STATE; ///@brief 获取拾音器工作状态 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAiPickUpWorkState(LLONG lLoginID, const NET_IN_GET_AI_PICK_UP_WORK_STATE* pstuInParam, NET_OUT_GET_AI_PICK_UP_WORK_STATE* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetAiPickUpDeviceInfo 输入参数 typedef struct tagNET_IN_GET_AI_PICK_UP_DEVICE_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道号 }NET_IN_GET_AI_PICK_UP_DEVICE_INFO; ///@brief CLIENT_GetAiPickUpDeviceInfo 输出参数 typedef struct tagNET_OUT_GET_AI_PICK_UP_DEVICE_INFO { DWORD dwSize; // 结构体大小 UINT nCPUMainVer; // 主CPU程序版本 UINT nCPUExtraVer; // 从CPU程序版本 UINT nCPUAiVer; // AI程序版本 char szMAC[32]; // 设备mac地址 char szIP[32]; // 设备IP }NET_OUT_GET_AI_PICK_UP_DEVICE_INFO; ///@brief 获取拾音器设备信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetAiPickUpDeviceInfo(LLONG lLoginID, const NET_IN_GET_AI_PICK_UP_DEVICE_INFO* pstuInParam, NET_OUT_GET_AI_PICK_UP_DEVICE_INFO* pstuOutParam, int nWaitTime); ///@brief 眼睛信息 typedef struct tagNET_ACCESS_IRIS_INFO { UINT nType; // 眼睛类型,0表示左眼,1表示右眼 int nPhotoDataLen; // 眼睛图片大小,最大102400 char* pszPhotoData; // 眼睛图片,内存由用户申请 char szPhotoUrl[512]; // 眼睛图片URL,与PhotoData二选一 char* pszEigenValue; // 眼睛特征值,内存由用户申请 int nEigenValueLen; // 眼睛特征值,最大2048 char szResvered[124]; // 保留字节 }NET_ACCESS_IRIS_INFO; ///@brief 眼睛特征值与图片组 typedef struct tagNET_ACCESS_IRIS_DATA_INFO { NET_ACCESS_IRIS_INFO stuIrisInfo[2]; // 眼睛信息 int nIrisInfoCount; // 眼睛信息个数 char szResvered[124]; // 保留字节 }NET_ACCESS_IRIS_DATA_INFO; ///@brief 下发眼睛信息列表 typedef struct tagNET_ACCESS_IRIS_LIST { char szUserID[32]; // 用户ID,唯一标识由于有产品以证件ID作为UserID,每个字符的取值范围为数字[0-9]或者字母[a-zA-Z] NET_ACCESS_IRIS_DATA_INFO stuIrisData[5]; // 眼睛特征值与图片组 int nIrisDataCount; // 眼睛特征值与图片组个数 char szResvered[124]; // 保留字节 }NET_ACCESS_IRIS_LIST; ///@brief CLIENT_MultiInsertAccessIris 输入参数 typedef struct tagNET_IN_MULTI_INSERT_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nIrisListCount; // 下发眼睛信息个数 NET_ACCESS_IRIS_LIST stuIrisList[10]; // 下发眼睛信息信息列表 }NET_IN_MULTI_INSERT_ACCESS_IRIS; ///@brief CLIENT_MultiInsertAccessIris 输出参数 typedef struct tagNET_OUT_MULTI_INSERT_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nFailCodesCount; // 失败个数 NET_EM_FAILCODE emFailCodes[10]; // 当出现失败时,对应的每一项故障码(0代表此项成功), 数组大小为批量执行的大小。数组元素索引位置对应操作的结果。 }NET_OUT_MULTI_INSERT_ACCESS_IRIS; ///@brief 批量下发眼睛信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiInsertAccessIris(LLONG lLoginID, const NET_IN_MULTI_INSERT_ACCESS_IRIS* pstuInParam, NET_OUT_MULTI_INSERT_ACCESS_IRIS* pstuOutParam, int nWaitTime); ///@brief CLIENT_RemoveAllAccessIris 输入参数 typedef struct tagNET_IN_REMOVE_ALL_ACCESS_IRIS { DWORD dwSize; // 结构体大小 }NET_IN_MULTI_REMOVE_ALL_ACCESS_IRIS; ///@brief CLIENT_RemoveAllAccessIris 输出参数 typedef struct tagNET_OUT_REMOVE_ALL_ACCESS_IRIS { DWORD dwSize; // 结构体大小 }NET_OUT_REMOVE_ALL_ACCESS_IRIS; ///@brief 清空所有眼睛信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveAllAccessIris(LLONG lLoginID, const NET_IN_MULTI_REMOVE_ALL_ACCESS_IRIS* pstuInParam, NET_OUT_REMOVE_ALL_ACCESS_IRIS* pstuOutParam, int nWaitTime); ///@brief CLIENT_MultiRemoveAccessIris 输入参数 typedef struct tagNET_IN_MULTI_REMOVE_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nCount; // 要删除的眼睛信息个数 char szUserList[10][32]; // 要删除的眼睛信息用户UserID列表 }NET_IN_MULTI_REMOVE_ACCESS_IRIS; ///@brief CLIENT_MultiRemoveAccessIris 输出参数 typedef struct tagNET_OUT_MULTI_REMOVE_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nFailCodesCount; // 失败个数 NET_EM_FAILCODE emFailCodes[10]; // 当出现失败时,对应的每一项故障码(0代表此项成功), 数组大小为批量执行的大小。数组元素索引位置对应操作的结果。 }NET_OUT_MULTI_REMOVE_ACCESS_IRIS; ///@brief 批量删除用户眼睛信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiRemoveAccessIris(LLONG lLoginID, const NET_IN_MULTI_REMOVE_ACCESS_IRIS* pstuInParam, NET_OUT_MULTI_REMOVE_ACCESS_IRIS* pstuOutParam, int nWaitTime); ///@brief CLIENT_MultiUpdateAccessIris 输入参数 typedef struct tagNET_IN_MULTI_UPDATE_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nIrisListCount; // 下发眼睛信息个数 NET_ACCESS_IRIS_LIST stuIrisList[10]; // 下发眼睛信息列表 }NET_IN_MULTI_UPDATE_ACCESS_IRIS; ///@brief CLIENT_MultiUpdateAccessIris 输出参数 typedef struct tagNET_OUT_MULTI_UPDATE_ACCESS_IRIS { DWORD dwSize; // 结构体大小 int nFailCodesCount; // 失败个数 NET_EM_FAILCODE emFailCodes[10]; // 当出现失败时,对应的每一项故障码(0代表此项成功), 数组大小为批量执行的大小。数组元素索引位置对应操作的结果。 }NET_OUT_MULTI_UPDATE_ACCESS_IRIS; ///@brief 批量更新目标信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiUpdateAccessIris(LLONG lLoginID, const NET_IN_MULTI_UPDATE_ACCESS_IRIS* pstuInParam, NET_OUT_MULTI_UPDATE_ACCESS_IRIS* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetHygrothermographConfig 输入参数 typedef struct tagNET_IN_SET_HYGROTHERMOGRAPH_CONFIG { DWORD dwSize; // 结构体大小 int nTemperatureRange[2]; // 温度正常范围,单位:℃ int nHumidityRange[2]; // 湿度正常范围,单位:%RH(相对湿度百分比) int nChannel; // 通道号,接多个平台时中间平台使用,IPC对此不作处理 }NET_IN_SET_HYGROTHERMOGRAPH_CONFIG; ///@brief CLIENT_SetHygrothermographConfig 输出参数 typedef struct tagNET_OUT_SET_HYGROTHERMOGRAPH_CONFIG { DWORD dwSize; // 结构体大小 }NET_OUT_SET_HYGROTHERMOGRAPH_CONFIG; ///@brief 设置温湿度阈值 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetHygrothermographConfig(LLONG lLoginID, const NET_IN_SET_HYGROTHERMOGRAPH_CONFIG* pstuInParam, NET_OUT_SET_HYGROTHERMOGRAPH_CONFIG* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetPowerSwitcherConfig 输入参数 typedef struct tagNET_IN_SET_POWER_SWITCHER_CONFIG { DWORD dwSize; // 结构体大小 int nCurrentRange[2]; // 电流正常范围,单位:mA int nVoltageRange[2]; // 电压正常范围,单位:mV int nChannel; // 通道号,接多个平台时中间平台使用,IPC对此不作处理 }NET_IN_SET_POWER_SWITCHER_CONFIG; ///@brief CLIENT_SetPowerSwitcherConfig 输出参数 typedef struct tagNET_OUT_SET_POWER_SWITCHER_CONFIG { DWORD dwSize; // 结构体大小 }NET_OUT_SET_POWER_SWITCHER_CONFIG; ///@brief 设置电量阈值 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPowerSwitcherConfig(LLONG lLoginID, const NET_IN_SET_POWER_SWITCHER_CONFIG* pstuInParam, NET_OUT_SET_POWER_SWITCHER_CONFIG* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetCollectDeviceBodyInfo 接口入参 typedef struct tagNET_IN_GET_COLLECT_DEVICE_BODY_INFO { DWORD dwSize; // 结构体大小 int nSlotBodyNum; // 挂机索引个数 int nSlotBodyIndex[4]; // 挂机索引数组,存放挂机的逻辑序号 } NET_IN_GET_COLLECT_DEVICE_BODY_INFO; ///@brief 挂机信息 typedef struct tagNET_COLLECT_DEVICE_BODY_INFO { BOOL bExist; // 挂机是否存在 UINT nSlotNum; // 挂机支持的槽位号数量 char szResvered[512]; // 保留字节 }NET_COLLECT_DEVICE_BODY_INFO; ///@brief CLIENT_GetCollectDeviceBodyInfo 接口出参 typedef struct tagNET_OUT_GET_COLLECT_DEVICE_BODY_INFO { DWORD dwSize; // 结构体大小 int nBodyCount; // 挂机信息个数 NET_COLLECT_DEVICE_BODY_INFO stuBodyInfo[4]; // 挂机信息 } NET_OUT_GET_COLLECT_DEVICE_BODY_INFO; ///@brief 获取采集站挂机信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCollectDeviceBodyInfo(LLONG lLoginID, const NET_IN_GET_COLLECT_DEVICE_BODY_INFO* pstuInParam, NET_OUT_GET_COLLECT_DEVICE_BODY_INFO* pstuOutParam, int nWaitTime); ///@brief 槽位ID信息 typedef struct tagNET_COLLECT_DEVICE_SLOT_ID_INFO { int nSlotBodyIndex; // 槽位所在挂机号 int nSlotIndex; // 槽位号 char szResvered[128]; // 保留字节 }NET_COLLECT_DEVICE_SLOT_ID_INFO; ///@brief CLIENT_GetCollectDeviceInfo 接口入参 typedef struct tagNET_IN_GET_COLLECT_DEVICE_INFO { DWORD dwSize; // 结构体大小 int nSlotBodyNum; // 挂机索引个数 NET_COLLECT_DEVICE_SLOT_ID_INFO stuSlotID[8]; // 槽位ID数组 } NET_IN_GET_COLLECT_DEVICE_INFO; ///@brief 采集文件数据详细信息 typedef struct tagNET_COLLOCT_FILE_INFO { UINT nFileTotal; // 文件总数 UINT nFileOkCounts; // 采集成功文件个数 UINT nFileFailCounts; // 采集失败文件个数 UINT nFileTotalLength; // 文件总长度,单位字节 UINT nFileOkTotalLength; // 采集成功文件总大小,单位字节 UINT nFileFailTotalLength; // 采集失败文件总大小,单位字节 char szResvered[128]; // 保留字节 }NET_COLLOCT_FILE_INFO; ///@brief 采集设备的槽位信息 typedef struct tagNET_COLLECT_DEVICE_SLOT_INFO { NET_COLLECT_DEVICE_SLOT_ID_INFO stuSlotID; // 槽位标识 int nState; // 槽位状态 // 0:槽位上未接入设备 // 1:槽位接入设备,槽位门未锁定 // 2:槽位接入设备,槽位门已解锁 // 3:槽位接入设备,未成功登陆状态 // 4:槽位接入设备,登陆锁定状态 // 5:槽位接入设备并成功登陆,设备未绑定执法人 // 6:槽位接入设备并成功登陆,采集数据中 // 7:槽位接入设备并成功登陆,数据采集异常 // 8:槽位接入设备并成功登陆,升级中 // 9:槽位接入设备并成功登陆,设备升级失败 // 10:槽位接入设备并成功登陆,设备采集结束 BOOL bPriorityCollectEnable; // 槽位是否开启数据优先采集 UINT nCollectBindwith; // 槽位数据采集带宽,单位字节 UINT nLock; // 槽位锁定状态, 0:槽位门锁定, 1:槽位门未锁定 char szSerial[32]; // 被采集设备的序列号 char szName[64]; // 被采集设备名称,对已登录的状态有效 int nBattery; // 0~100:表示被采集设备当前电量百分比, -1:表示电量信息未获取到 UINT nLoginTryCount; // 表示连续登陆被采集设备的失败次数,nState为3和4时有效 UINT nLoginLockLeftSeconds; // 登陆锁定剩余时间,单位是秒,nState为4时有效 UINT nProcess; // 升级进度百分比,范围0-100 NET_COLLOCT_FILE_INFO stuVideoFileInfo; // 采集的视频文件信息 NET_COLLOCT_FILE_INFO stuAudioFileInfo; // 采集的音频文件信息 NET_COLLOCT_FILE_INFO stuPicFileInfo; // 采集的图片文件信息 char szResvered[256]; // 保留字节 }NET_COLLECT_DEVICE_SLOT_INFO; ///@brief CLIENT_GetCollectDeviceInfo 接口出参 typedef struct tagNET_OUT_GET_COLLECT_DEVICE_INFO { DWORD dwSize; // 结构体大小 int nSlotInfoCount; // 挂机信息个数 NET_COLLECT_DEVICE_SLOT_INFO stuSlotInfo[8]; // 挂机信息 } NET_OUT_GET_COLLECT_DEVICE_INFO; ///@brief 获取采集站槽位信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCollectDeviceInfo(LLONG lLoginID, const NET_IN_GET_COLLECT_DEVICE_INFO* pstuInParam, NET_OUT_GET_COLLECT_DEVICE_INFO* pstuOutParam, int nWaitTime); ///@brief 回调的槽位信息 typedef struct tagNET_COLLECT_DEVICE_MANAGER_NOTIFY_INFO { NET_COLLECT_DEVICE_SLOT_INFO stuSlotInfo; // 槽位信息 char szResvered[1024]; // 保留字节 }NET_COLLECT_DEVICE_MANAGER_NOTIFY_INFO; ///@brief 订阅采集站槽位的状态信息回调函数原型, lAttachHandle为CLIENT_AttachCollectDeviceManager接口的返回值 ///@param[out] lAttachHandle 订阅句柄 ///@param[out] pstuCollectDeviceInfo 订阅采集站槽位的状态回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyCollectDeviceManager)(LLONG lAttachHandle, NET_COLLECT_DEVICE_MANAGER_NOTIFY_INFO* pstuCollectDeviceInfo, LDWORD dwUser); ///@brief 接口 CLIENT_AttachCollectDevice 的输入参数 typedef struct tagNET_IN_ATTACH_COLLECT_DEVICE_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyCollectDeviceManager cbNotify; // 回调函数,通知槽位信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_COLLECT_DEVICE_MANAGER; ///@brief 接口 CLIENT_AttachCollectDevice 的输出参数 typedef struct tagNET_OUT_ATTACH_COLLECT_DEVICE_MANAGER { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_COLLECT_DEVICE_MANAGER; ///@brief 订阅采集站槽位的状态信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachCollectDeviceManager(LLONG lLoginID, NET_IN_ATTACH_COLLECT_DEVICE_MANAGER* pstuInParam, NET_OUT_ATTACH_COLLECT_DEVICE_MANAGER* pstuOutParam , int nWaitTime); ///@brief 取消采集站槽位状态订阅 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachCollectDeviceManager(LLONG lAttachHandle); ///@brief CLIENT_ChooseRemoteUpgraderChip 输入参数 typedef struct tagNET_IN_CHOOSE_REMOTE_UPGRADER_CHIP { DWORD dwSize; // 结构体大小 int nChannel; // 视频通道号 EM_CHIP_TYPE emChipType; // 准备升级的芯片 }NET_IN_CHOOSE_REMOTE_UPGRADER_CHIP; ///@brief CLIENT_ChooseRemoteUpgraderChip 输出参数 typedef struct tagNET_OUT_CHOOSE_REMOTE_UPGRADER_CHIP { DWORD dwSize; // 结构体大小 }NET_OUT_CHOOSE_REMOTE_UPGRADER_CHIP; ///@brief 选择升级的芯片 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ChooseRemoteUpgraderChip(LLONG lLoginID, const NET_IN_CHOOSE_REMOTE_UPGRADER_CHIP* pstuInParam, NET_OUT_CHOOSE_REMOTE_UPGRADER_CHIP* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetDevStorageSmartValue 接口入参 typedef struct tagNET_IN_GET_DEV_STORAGE_SMART_VALUE { DWORD dwSize; // 结构体大小 char szName[64]; // 存储设备名称 } NET_IN_GET_DEV_STORAGE_SMART_VALUE; ///@brief 设备SMART信息 typedef struct tagNET_SMART_VALUE_INFO { UINT nID; // 属性ID char szName[32]; // 属性名 UINT nCurrent; // 属性值 UINT nWorst; // 最大出错值 UINT nThreshold; // 阈值 char szRaw[32]; // 实际值 int nPredict; // 状态 int nSync; // Raid同步状态, -1: 未知; 0: 自适应; 1: 同步优先,I/O优先分给Raid同步; 2:业务优先,I/O优先分给硬盘写数据; 3: 均衡 char szResvered[256]; // 保留字节 }NET_SMART_VALUE_INFO; ///@brief CLIENT_GetDevStorageSmartValue 接口出参 typedef struct tagNET_OUT_GET_DEV_STORAGE_SMART_VALUE { DWORD dwSize; // 结构体大小 int nCount; // 设备SMART信息个数 NET_SMART_VALUE_INFO stuValuesInfo[64]; // 设备SMART信息 } NET_OUT_GET_DEV_STORAGE_SMART_VALUE; ///@brief 获取SMART扫描信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevStorageSmartValue(LLONG lLoginID, const NET_IN_GET_DEV_STORAGE_SMART_VALUE* pstuInParam, NET_OUT_GET_DEV_STORAGE_SMART_VALUE* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetDeviceEthBandInfo 接口入参 typedef struct tagNET_IN_GET_DEVICE_ETH_BAND_INFO { DWORD dwSize; // 结构体大小 } NET_IN_GET_DEVICE_ETH_BAND_INFO; ///@brief 网卡信息 typedef struct tagNET_BAND_SPEED_INFO { char szEthName[16]; // 网卡名称 double dbReceivedBytes; // 网卡接收速率,单位 Mb/s double dbTransmittedBytes; // 网卡发送速率,单位 Mb/s char szResvered[512]; // 保留字节 }NET_BAND_SPEED_INFO; ///@brief CLIENT_GetDeviceEthBandInfo 接口出参 typedef struct tagNET_OUT_GET_DEVICE_ETH_BAND_INFO { DWORD dwSize; // 结构体大小 int nCount; // 网卡信息个数 NET_BAND_SPEED_INFO stuBandSpeedInfo[10]; // 网卡信息 } NET_OUT_GET_DEVICE_ETH_BAND_INFO; ///@brief 获取设备各网卡的上传与发送速率 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDeviceEthBandInfo(LLONG lLoginID, const NET_IN_GET_DEVICE_ETH_BAND_INFO* pstuInParam, NET_OUT_GET_DEVICE_ETH_BAND_INFO* pstuOutParam, int nWaitTime); ///@brief 回调的安检门金属检测消息 typedef struct tagNET_METAL_DETECT_NOTIFY_INFO { UINT nMetalIntensity; // 金属检测强度,范围0~100 UINT nSignalPhaseDiff; // 金属信号相位差值 UINT nDoorRegion; // 门体分区: // 0:表示6分区; // 1:表示12分区; // 2:表示18分区; // 3:表示10分区; // 4:表示33分区; // 5:表示1分区; // 6:表示2分区; // 7:表示3分区; // 8:表示4分区; // 9:表示8分区; // 10:表示9分区; // 11:表示16分区; // 12:表示20分区; // 13:表示24分区; // 14:表示36分区; // 15:表示40分区; // 16:表示45分区; // 17:表示48分区; // 18:表示60分区 UINT nAlarmPositonNum; // 安检门区位个数 UINT nAlarmPositon[128]; // 安检门区位 UINT nTurnOffMetalDetect; // 关闭金属检测, 0:未知, 1:不关闭, 2:关闭 UINT nWriteToFlash; // 金属检测信息是否写入flash, 0:未知, 1:写入, 2:不写入 UINT nMetalRelativeIntensity; // 金属检测强度相对值(百分比*100的整数值) char szResvered[1024]; // 保留字节 }NET_METAL_DETECT_NOTIFY_INFO; ///@brief 订阅安检门金属检测信息回调函数原型, lAttachHandle为CLIENT_AttachMetalDetectInfo接口的返回值 ///@param[out] lAttachHandle 订阅句柄 ///@param[out] pstuMetalDetectInfo 安检门金属检测消息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyMetalDetectInfoManager)(LLONG lAttachHandle, NET_METAL_DETECT_NOTIFY_INFO* pstuMetalDetectInfo, LDWORD dwUser); ///@brief 接口 CLIENT_AttachMetalDetectInfo 的输入参数 typedef struct tagNET_IN_ATTACH_METAL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyMetalDetectInfoManager cbNotify; // 回调函数,回调安检门金属检测消息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_METAL_DETECT_INFO; ///@brief 接口 CLIENT_AttachCollectDevice 的输出参数 typedef struct tagNET_OUT_ATTACH_METAL_DETECT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_METAL_DETECT_INFO; ///@brief 订阅安检门金属检测信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachMetalDetectInfo(LLONG lLoginID, NET_IN_ATTACH_METAL_DETECT_INFO* pstuInParam, NET_OUT_ATTACH_METAL_DETECT_INFO* pstuOutParam , int nWaitTime); ///@brief 取消订阅金属检测信息 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachMetalDetectInfo(LLONG lAttachHandle); ///@brief CLIENT_GetMetalDetectInfo 输入参数 typedef struct tagNET_IN_GET_METAL_DETECT_INFO { DWORD dwSize; // 结构体大小 }NET_IN_GET_METAL_DETECT_INFO; ///@brief CLIENT_GetMetalDetectInfo 输出参数 typedef struct tagNET_OUT_GET_METAL_DETECT_INFO { DWORD dwSize; // 结构体大小 UINT nMetalIntensity; // 金属检测强度,范围0~100 UINT nSignalPhaseDiff; // 金属信号相位差值 UINT nDoorRegion; // 门体分区: // 0:表示6分区; // 1:表示12分区; // 2:表示18分区; // 3:表示10分区; // 4:表示33分区; // 5:表示1分区; // 6:表示2分区; // 7:表示3分区; // 8:表示4分区; // 9:表示8分区; // 10:表示9分区; // 11:表示16分区; // 12:表示20分区; // 13:表示24分区; // 14:表示36分区; // 15:表示40分区; // 16:表示45分区; // 17:表示48分区; // 18:表示60分区 UINT nAlarmPositonNum; // 安检门区位个数 UINT nAlarmPositon[128]; // 安检门区位 UINT nTurnOffMetalDetect; // 关闭金属检测, 0:未知, 1:不关闭, 2:关闭 UINT nWriteToFlash; // 金属检测信息是否写入flash, 0:未知, 1:写入, 2:不写入 UINT nMetalRelativeIntensity; // 金属检测强度相对值(百分比*100的整数值) }NET_OUT_GET_METAL_DETECT_INFO; ///@brief 获取安检门当前金属检测信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMetalDetectInfo(LLONG lLoginID, const NET_IN_GET_METAL_DETECT_INFO* pstuInParam, NET_OUT_GET_METAL_DETECT_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetFaceFlowStatCaps 输入参数 typedef struct tagNET_IN_GET_FACE_FLOW_STAT_CAPS { DWORD dwSize; // 结构体大小 }NET_IN_GET_FACE_FLOW_STAT_CAPS; ///@brief CLIENT_GetFaceFlowStatCaps 输出参数 typedef struct tagNET_OUT_GET_FACE_FLOW_STAT_CAPS { DWORD dwSize; // 结构体大小 UINT nSupport; // 支持目标检测统计掩码, bit0-支持目标检测统计, bit1-支持目标识别统计, bit2-支持按统计粒度Granularity字段来查询 }NET_OUT_GET_FACE_FLOW_STAT_CAPS; ///@brief 查询目标数量统计能力 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFaceFlowStatCaps(LLONG lLoginID, const NET_IN_GET_FACE_FLOW_STAT_CAPS* pstuInParam, NET_OUT_GET_FACE_FLOW_STAT_CAPS* pstuOutParam, int nWaitTime); ///@brief 人员信息 typedef struct tagNET_FACE_FLOW_STAT_PERSON { EM_SEX_TYPE emSex; // 查询性别 UINT nAge[2]; // 查询年龄区间 char szResvered[1024]; // 保留字节 }NET_FACE_FLOW_STAT_PERSON; ///@brief CLIENT_StartFindFaceFlowStat 输入参数 typedef struct tagNET_IN_START_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 NET_TIME stuStartTime; // 查询开始时间 NET_TIME stuEndTime; // 查询结束时间 UINT nGranularity; // 查询要求返回的统计信息粒度, 0:未知,1:按小时,2:按天,3:按月,4:按年, NET_FACE_FLOW_STAT_PERSON stuPerson; // 查询人员信息 int nChannel; // 通道号 int nPresetIDCount; // 预置点个数 int nPresetID[512]; // 预置点 }NET_IN_START_FIND_FACE_FLOW_STAT; ///@brief CLIENT_StartFindFaceFlowStat 输出参数 typedef struct tagNET_OUT_START_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌 UINT nTotalCount; // 符合此次查询条件的结果总条数 }NET_OUT_START_FIND_FACE_FLOW_STAT; ///@brief 开始目标识别统计查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartFindFaceFlowStat(LLONG lLoginID, NET_IN_START_FIND_FACE_FLOW_STAT* pstuInParam, NET_OUT_START_FIND_FACE_FLOW_STAT* pstuOutParam, int nWaitTime); ///@brief CLIENT_DoFindFaceFlowStat 输入参数 typedef struct tagNET_IN_DO_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌 UINT nBeginNumber; // 查询起始序号, 表示从beginNumber条记录开始, 取count条记录返回; 0<=beginNumber<=totalCount-1 UINT nCount; // 每次查询的目标识别统计条数 }NET_IN_DO_FIND_FACE_FLOW_STAT; ///@brief 目标识别统计信息 typedef struct tagNET_FACE_FLOW_STAT_INFO { UINT nChannel; // 通道号 int nPresetIDCount; // 预置点个数 int nPresetID[512]; // 预置点 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 UINT nRepeatCount; // 重复总次数 UINT nFaceDetectCount; // 目标检测去重后的次数统计 UINT nFaceAnalysisCount; // 目标识别去重后的次数统计 char szResvered[252]; // 保留字节 }NET_FACE_FLOW_STAT_INFO; ///@brief CLIENT_StartFindFaceFlowStat 输出参数 typedef struct tagNET_OUT_DO_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 UINT nFound; // 查询到的条数 NET_FACE_FLOW_STAT_INFO stuInfo[64]; // 目标识别统计信息 }NET_OUT_DO_FIND_FACE_FLOW_STAT; ///@brief 获取目标识别统计信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_DoFindFaceFlowStat(LLONG lLoginID, NET_IN_DO_FIND_FACE_FLOW_STAT* pstuInParam, NET_OUT_DO_FIND_FACE_FLOW_STAT* pstuOutParam, int nWaitTime); ///@brief CLIENT_StopFindFaceFlowStat 输入参数 typedef struct tagNET_IN_STOP_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 UINT nToken; // 查询令牌 }NET_IN_STOP_FIND_FACE_FLOW_STAT; ///@brief CLIENT_StopFindFaceFlowStat 输出参数 typedef struct tagNET_OUT_STOP_FIND_FACE_FLOW_STAT { DWORD dwSize; // 结构体大小 }NET_OUT_STOP_FIND_FACE_FLOW_STAT; ///@brief 结束目标识别统计查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StopFindFaceFlowStat(LLONG lLoginID, NET_IN_STOP_FIND_FACE_FLOW_STAT* pstuInParam, NET_OUT_STOP_FIND_FACE_FLOW_STAT* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetPrivacyMasking 输入参数 typedef struct tagNET_IN_GET_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nOffset; // 本次从第几个遮档块开始获取 int nLimit; // 本次获取多少个遮档块信息,最大不超过24 }NET_IN_GET_PRIVACY_MASKING; ///@brief 隐私遮挡信息 typedef struct tagNET_PRIVACY_MASKING_INFO { int nIndex; // 遮档块编号,从0开始 int nEnable; // 隐私遮挡开关标志 1 开,0关 char szName[64]; // 每个遮挡块可命名 EM_PRIVACY_MASKING_TYPE emShapeType; // 形状类型为矩形,Rect项有效(默认),形状类型为多边形,此时Polygon有效 DH_RECT stuRect; // 矩形区域,使用相对坐标体系,取值均为0-8192 NET_UINT_POINT stuPolygon[64]; // 多边形顶点坐标,多边形顶点不超过64, 使用相对坐标体系,取值均为0-8192 int nPointNum; // 多边形顶点坐标个数 DH_COLOR_RGBA stuColor; // 遮挡块颜色,下发时nMosaic为0则必填 int nMosaic; // 遮挡块马赛克类型,马赛克时颜色Color无效,具体值参考获取能力后NET_MOSAIC_MASKING_CAPS的nSupportMosaicType字段 int nShieldZoom; // 屏蔽倍率,度数扩大10倍表示 char szResvered[512]; // 保留字节 }NET_PRIVACY_MASKING_INFO; ///@brief CLIENT_GetPrivacyMasking 输出参数 typedef struct tagNET_OUT_GET_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nTotal; // 总共有多少个遮档块 NET_PRIVACY_MASKING_INFO stuPrivacyMaskingInfo[24]; // 隐私遮挡块信息 int nPrivacyMasking; // 返回的隐私遮挡数组数量 }NET_OUT_GET_PRIVACY_MASKING; ///@brief 获取隐私遮挡列表 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPrivacyMasking(LLONG lLoginID, const NET_IN_GET_PRIVACY_MASKING* pstuInParam, NET_OUT_GET_PRIVACY_MASKING* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetPrivacyMasking 输入参数 typedef struct tagNET_IN_SET_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 NET_PRIVACY_MASKING_INFO stuPrivacyMaskingInfo; // 隐私遮挡块信息 }NET_IN_SET_PRIVACY_MASKING; ///@brief CLIENT_SetPrivacyMasking 输出参数 typedef struct tagNET_OUT_SET_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PRIVACY_MASKING; ///@brief 设置隐私遮挡列表 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPrivacyMasking(LLONG lLoginID, const NET_IN_SET_PRIVACY_MASKING* pstuInParam, NET_OUT_SET_PRIVACY_MASKING* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetPrivacyMaskingEnable 输入参数 typedef struct tagNET_IN_SET_PRIVACY_MASKING_ENABLE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 BOOL bEnable; // true 使能所有隐私遮挡块 false 关闭所有隐私遮挡块 }NET_IN_SET_PRIVACY_MASKING_ENABLE; ///@brief CLIENT_SetPrivacyMaskingEnable 输出参数 typedef struct tagNET_OUT_SET_PRIVACY_MASKING_ENABLE { DWORD dwSize; // 结构体大小 }NET_OUT_SET_PRIVACY_MASKING_ENABLE; ///@brief 使能或关闭所有隐私遮挡块 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPrivacyMaskingEnable(LLONG lLoginID, const NET_IN_SET_PRIVACY_MASKING_ENABLE* pstuInParam, NET_OUT_SET_PRIVACY_MASKING_ENABLE* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetPrivacyMaskingEnable 输入参数 typedef struct tagNET_IN_GET_PRIVACY_MASKING_ENABLE { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_GET_PRIVACY_MASKING_ENABLE; ///@brief CLIENT_GetPrivacyMaskingEnable 输出参数 typedef struct tagNET_OUT_GET_PRIVACY_MASKING_ENABLE { DWORD dwSize; // 结构体大小 BOOL bEnable; // true 开 false 关 }NET_OUT_GET_PRIVACY_MASKING_ENABLE; ///@brief 获取隐私遮挡总开关使能状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPrivacyMaskingEnable(LLONG lLoginID, const NET_IN_GET_PRIVACY_MASKING_ENABLE* pstuInParam, NET_OUT_GET_PRIVACY_MASKING_ENABLE* pstuOutParam, int nWaitTime); ///@brief CLIENT_GotoPrivacyMasking 输入参数 typedef struct tagNET_IN_GOTO_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nIndex; // 遮档块编号,从0开始 }NET_IN_GOTO_PRIVACY_MASKING; ///@brief CLIENT_GotoPrivacyMasking 输出参数 typedef struct tagNET_OUT_GOTO_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 }NET_OUT_GOTO_PRIVACY_MASKING; ///@brief 跳转到隐私遮档块 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GotoPrivacyMasking(LLONG lLoginID, const NET_IN_GOTO_PRIVACY_MASKING* pstuInParam, NET_OUT_GOTO_PRIVACY_MASKING* pstuOutParam, int nWaitTime); ///@brief CLIENT_DeletePrivacyMasking 输入参数 typedef struct tagNET_IN_DELETE_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 int nIndex; // 遮档块编号,从0开始 }NET_IN_DELETE_PRIVACY_MASKING; ///@brief CLIENT_DeletePrivacyMasking 输出参数 typedef struct tagNET_OUT_DELETE_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 }NET_OUT_DELETE_PRIVACY_MASKING; ///@brief 删除隐私遮档块 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeletePrivacyMasking(LLONG lLoginID, const NET_IN_DELETE_PRIVACY_MASKING* pstuInParam, NET_OUT_DELETE_PRIVACY_MASKING* pstuOutParam, int nWaitTime); ///@brief CLIENT_ClearPrivacyMasking 输入参数 typedef struct tagNET_IN_CLEAR_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 int nChannel; // 通道号 }NET_IN_CLEAR_PRIVACY_MASKING; ///@brief CLIENT_ClearPrivacyMasking 输出参数 typedef struct tagNET_OUT_CLEAR_PRIVACY_MASKING { DWORD dwSize; // 结构体大小 }NET_OUT_CLEAR_PRIVACY_MASKING; ///@brief 清除遮挡 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ClearPrivacyMasking(LLONG lLoginID, const NET_IN_CLEAR_PRIVACY_MASKING* pstuInParam, NET_OUT_CLEAR_PRIVACY_MASKING* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetFileAlias 输入参数 typedef struct tagNET_IN_SET_FILE_ALIAS_INFO { DWORD dwSize; // 结构体大小 int nChannel; // 目标文件对应的视频通道号 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nVideoStream; // 视频码流 0-主码流 1-辅码流1 2-辅码流2 3-辅码流3 int nFlagCount; // 文件标志总个数; EM_RECORD_SNAP_FLAG_TYPE emFlagsList[128]; // 文件标志 int nMediaType; // 文件类型 0:dav, 1:jpg char szRecordAlias[256]; // 要关联的文件名称 }NET_IN_SET_FILE_ALIAS_INFO; ///@brief CLIENT_SetFileAlias 输出参数 typedef struct tagNET_OUT_SET_FILE_ALIAS_INFO { DWORD dwSize; // 结构体大小 }NET_OUT_SET_FILE_ALIAS_INFO; ///@brief 指定时间段内录像自定义重命名 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetFileAlias(LLONG lLoginID, const NET_IN_SET_FILE_ALIAS_INFO* pstuInParam, NET_OUT_SET_FILE_ALIAS_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_SearchFileByAlias 输入参数 typedef struct tagNET_IN_SEARCH_FILE_BYALIAS_INFO { DWORD dwSize; // 结构体大小 char szRecordAlias[256]; // 要查询的文件名称 UINT nMaxCount; // 最大查询数量 }NET_IN_SEARCH_FILE_BYALIAS_INFO; ///@brief 根据录像的命名搜索录像文件 查询到的录像信息 typedef struct tagNET_RECORS_BYALIAS_INFO { int nChannel; // 视频通道号 int nVideoStream; // 视频码流 0 未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3 NET_TIME stuStartTime; // 开始时间 NET_TIME stuEndTime; // 结束时间 int nFlagCount; // 文件标志总个数; EM_RECORD_SNAP_FLAG_TYPE emFlagsList[128]; // 文件标志 UINT nDriveNo; // 磁盘号 UINT nCluster; // 簇号 int nMediaType; // 文件类型 0:未知, 1:dav, 2:jpg int nPartition; // 分区号 UINT nLength; // 整个文件长度 单位:字节 UINT nCutLength; // 按查询时间段截取过的文件长度 char szFilePath[260]; // 图片路径,录像类型无此字段 char szResvered[1024]; // 保留字节 }NET_RECORS_BYALIAS_INFO; ///@brief CLIENT_SearchFileByAlias 输出参数 typedef struct tagNET_OUT_SEARCH_FILE_BYALIAS_INFO { DWORD dwSize; // 结构体大小 char szReserved1[4]; // 字节对齐 UINT nMaxCount; // 最大查询数量,用户填写 UINT nRetCount; // 实际查到的录像条数 NET_RECORS_BYALIAS_INFO* pstuRecordInfo; // 查询到的录像信息,用户申请内存,数组大小为nMaxCount }NET_OUT_SEARCH_FILE_BYALIAS_INFO; ///@brief 根据录像的命名调取录像 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SearchFileByAlias(LLONG lLoginID, const NET_IN_SEARCH_FILE_BYALIAS_INFO* pstuInParam, NET_OUT_SEARCH_FILE_BYALIAS_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetFanSpeedEx 输入参数 typedef struct tagNET_IN_GET_FAN_SPEED_EX { DWORD dwSize; // 结构体大小 int nType; // 风扇类型,0: 表示全部,1: CPU处理器,2: Cabinet机柜,3: Mainboard主板,4: Power电源 }NET_IN_GET_FAN_SPEED_EX; ///@brief CLIENT_GetFanSpeedEx 输出参数 typedef struct tagNET_OUT_GET_FAN_SPEED_EX { DWORD dwSize; // 结构体大小 int nCPUCount; // CPU风扇个数 int nCPU[16]; // CPU风扇转数, -1表示获取失败 int nCabinetCount; // 机柜风扇个数 int nCabinet[16]; // 机柜风扇转数 int nMainboardCount; // 主板风扇个数 int nMainboard[16]; // 主板风扇转数 int nPowerCount; // 电源风扇个数 int nPower[16]; // 电源风扇转数 }NET_OUT_GET_FAN_SPEED_EX; ///@brief 获取风扇转速 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFanSpeedEx(LLONG lLoginID, const NET_IN_GET_FAN_SPEED_EX* pstuInParam, NET_OUT_GET_FAN_SPEED_EX* pstuOutParam, int nWaitTime); ///@brief 用户信息 typedef struct tagNET_MODIFY_USER_INFO { char szName[128]; // 用户名 char szGroup[8]; // 用户所在的组名 int nPwdValidPeriod; // 账户密码有效期,单位天 BOOL bUseGroupEx; // 是否使用szGroupEx char szGroupEx[32]; // 用户所在的组名扩展 char szResvered[984]; // 保留字节 }NET_MODIFY_USER_INFO; ///@brief CLIENT_ModifyUserManagerUser 接口入参 typedef struct tagNET_IN_MODIFY_USER_MANAGER_USER { DWORD dwSize; // 结构体大小 char szName[128]; // 修改的用户名称,必须是已有的用户名 NET_MODIFY_USER_INFO stuUserInfo; // 用户信息 }NET_IN_MODIFY_USER_MANAGER_USER; ///@brief CLIENT_ModifyUserManagerUser 接口出参 typedef struct tagNET_OUT_MODIFY_USER_MANAGER_USER { DWORD dwSize; // 结构体大小 }NET_OUT_MODIFY_USER_MANAGER_USER; ///@brief 全量式修改用户信息 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数 ///@param[out] pstuOutParam: 接口输出参数 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ModifyUserManagerUser(LLONG lLoginID, NET_IN_MODIFY_USER_MANAGER_USER* pstuInParam, NET_OUT_MODIFY_USER_MANAGER_USER* pstuOutParam, int nWaitTime); ///@brief 回调的声音检测元数据信息 typedef struct tagNET_NOTIFY_SOUND_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nChannel; // 通道号 UINT nSoundVolume; // 声强大小 char szSource[32]; // 元数据来源 char szResvered[256]; // 保留字节 }NET_NOTIFY_SOUND_DATA_INFO; ///@brief 订阅声音检测元数据接口回调函数原型, lAttachSoundDataHandle为CLIENT_AttachSoundData接口的返回值 ///@param[out] lAttachSoundDataHandle 订阅句柄 ///@param[out] pstuSoundDataInfo 订阅的声音检测元数据回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifySoundData)(LLONG lAttachSoundDataHandle, NET_NOTIFY_SOUND_DATA_INFO* pstuSoundDataInfo, LDWORD dwUser); ///@brief CLIENT_AttachSoundData接口入参 typedef struct tagNET_IN_ATTACH_SOUNDDATA { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySoundData cbfNotifySoundData; // 回调函数,通知通道变化信息 LDWORD dwUser; // 用户自定义参数 int nChannel; // 订阅通道,用于创建音频检测设备实例 char szSource[32]; // 元数据来源 }NET_IN_ATTACH_SOUNDDATA; ///@brief CLIENT_AttachSoundData接口出参 typedef struct tagNET_OUT_ATTACH_SOUNDDATA { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SOUNDDATA; ///@brief 订阅声音检测元数据接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSoundData(LLONG lLoginID,const NET_IN_ATTACH_SOUNDDATA* pstInParam, NET_OUT_ATTACH_SOUNDDATA* pstOutParam, int nWaitTime); ///@brief 退订声音检测元数据接口 ///@param[in] lAttachSoundDataHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSoundData(LLONG lAttachSoundDataHandle); ///@brief CLIENT_SecurityExportDataEx接口入参 typedef struct tagNET_IN_SECURITY_EXPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szKey[1024]; // 公钥加密后再经过Base64编码的密码串 int nfileTypeMask; // 导出数据类型, 其文件的类型取值即此文件的掩码位数 // Bit3通讯录 // Bit4密码信息 // Bit5 卡片信息 // Bit6 目标信息 // Bit7信息信息 // Bit8 对讲IPC信息 // Bit13 预置点信息 int nOffset; // 导出偏移 int nNeedLength; // 需要导出的字节长度 }NET_IN_SECURITY_EXPORT_DATA_INFO; ///@brief CLIENT_SecurityExportDataEx接口出参 typedef struct tagNET_OUT_SECURITY_EXPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char* pBufData; // 导出文件数据, 用户申请内存, 大小为nBufLen int nBufLen; // pBufData最大长度 int nBufRet; // 实际返回的长度 int nTotalLength; // 导出文件数据总长度 int nPackLength; // 二进制包长度 }NET_OUT_SECURITY_EXPORT_DATA_INFO; ///@brief 设备导出文件接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityExportDataEx(LLONG lLoginID,const NET_IN_SECURITY_EXPORT_DATA_INFO* pstInParam, NET_OUT_SECURITY_EXPORT_DATA_INFO* pstOutParam, int nWaitTime); ///@brief 设备导入文件状态 typedef enum tagEM_STATUS_TYPE { EM_IMPORT_STATUS_UNKNOWN, // 未知 EM_IMPORT_STATUS_BEGIN, // 开始 EM_IMPORT_STATUS_APPEND, // 追加 EM_IMPORT_STATUS_END, // 结束 } EM_STATUS_TYPE; ///@brief CLIENT_SecurityImportDataEx接口入参 typedef struct tagNET_IN_SECURITY_IMPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szKey[1024]; // 公钥加密后再经过Base64编码的密码串 BOOL bIsOverWrite; // 是否覆盖 EM_STATUS_TYPE emStatus; // 设备导入文件状态 char* pBufData; // 下发二进制文件数据 int nLength; // 数据长度,单位:字节 }NET_IN_SECURITY_IMPORT_DATA_INFO; ///@brief CLIENT_SecurityImportDataEx接口出参 typedef struct tagNET_OUT_SECURITY_IMPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SECURITY_IMPORT_DATA_INFO; ///@brief 设备导入文件接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityImportDataEx(LLONG lLoginID,const NET_IN_SECURITY_IMPORT_DATA_INFO* pstInParam, NET_OUT_SECURITY_IMPORT_DATA_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_SecurityPrepareExportData接口入参 typedef struct tagNET_IN_SECURITY_PREPARE_EXPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nfileTypeMask; // 导出数据类型, 其文件的类型取值即此文件的掩码位数 // Bit3 通讯录 // Bit4 密码信息 // Bit5 卡片信息 // Bit6 目标信息 // Bit7 信息 // Bit13 预置点信息 char szKey[1024]; // 公钥加密后再经过Base64编码的密码串 }NET_IN_SECURITY_PREPARE_EXPORT_DATA_INFO; ///@brief CLIENT_SecurityPrepareExportData接口出参 typedef struct tagNET_OUT_SECURITY_PREPARE_EXPORT_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SECURITY_PREPARE_EXPORT_DATA_INFO; ///@brief 准备生成导出文件接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityPrepareExportData(LLONG lLoginID,const NET_IN_SECURITY_PREPARE_EXPORT_DATA_INFO* pstInParam, NET_OUT_SECURITY_PREPARE_EXPORT_DATA_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_SecurityGetCaps接口入参 typedef struct tagNET_IN_SECURITY_GETCAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_SECURITY_GETCAPS_INFO; ///@brief CLIENT_SecurityGetCaps接口出参 typedef struct tagNET_OUT_SECURITY_GETCAPS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTypesRealNum; // 返回支持类型 int nSupportTypes[32]; // 0 车牌允许名单 // 1 车牌禁止名单 // 2 车牌禁止和允许名单 // 3 对讲通信录 // 4 自定义密码 // 5 卡片记录集 // 6 门禁目标信息 // 7 门禁信息 // 8 对讲IPC信息 // 9 对讲人员信息 // 10 公共密码记录集 // 11 运维信息 // 13 预置点信息 // 14 管理机设备管理信息 }NET_OUT_SECURITY_GETCAPS_INFO; ///@brief 查询特定数据类型的任务状态接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGetCaps(LLONG lLoginID,const NET_IN_SECURITY_GETCAPS_INFO* pstInParam, NET_OUT_SECURITY_GETCAPS_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_SecurityGetTaskStatus接口入参 typedef struct tagNET_IN_SECURITY_GET_TASK_STATUS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nType; // 任务数据类型, 13:预置点信息 }NET_IN_SECURITY_GET_TASK_STATUS_INFO; ///@brief 当前任务类型 typedef enum tagEM_SECURITY_TASK_TYPE { EM_TYPE_STATUS_UNKNOWN, // 未知 EM_TYPE_STATUS_NONE, // 当前无任务 EM_TYPE_STATUS_IMPORT, // 有导入任务 EM_TYPE_STATUS_EXPORT, // 有导出任务 } EM_SECURITY_TASK_TYPE; ///@brief 当前任务状态 typedef enum tagEM_SECURITY_TASK_STATUS { EM_TASK_STATUS_UNKNOWN, // 未知 EM_TASK_STATUS_RUNNING, // 任务执行中 EM_TASK_STATUS_SUCCEEDED, // 任务执行成功 EM_TASK_STATUS_FAILED, // 任务执行失败 } EM_SECURITY_TASK_STATUS; ///@brief CLIENT_SecurityGetTaskStatus接口出参 typedef struct tagNET_OUT_SECURITY_GET_TASK_STATUS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_SECURITY_TASK_TYPE nTaskType; // 当前任务类型 EM_SECURITY_TASK_STATUS nStatus; // 当前任务状态 char szErrorCode[128]; // 当任务状态"Status"为"Failed"时, 填写错误信息, 例如:"File content error!" 文件错误 int nProgress; // 当前任务执行进度百分比 }NET_OUT_SECURITY_GET_TASK_STATUS_INFO; ///@brief 查询当前支持的导入导出数据类型 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SecurityGetTaskStatus(LLONG lLoginID,const NET_IN_SECURITY_GET_TASK_STATUS_INFO* pstInParam, NET_OUT_SECURITY_GET_TASK_STATUS_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_ICRGetState接口入参 typedef struct tagNET_IN_ICR_GET_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_ICR_GET_STATE_INFO; ///@brief 滤光片类型 typedef enum tagEM_ICR_STATE_TYPE { EM_ICR_STATE_TYPE_UNKNOWN, // 未知 EM_ICR_STATE_TYPE_NORMAL, // 普通 EM_ICR_STATE_TYPE_IR, // 红外 EM_ICR_STATE_TYPE_CPL, // 偏振镜 } EM_ICR_STATE_TYPE; ///@brief CLIENT_ICRGetState接口出参 typedef struct tagNET_OUT_ICR_GET_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nState; // 滤光片状态 -1 无效值, 0 白片(IPC的描述为彩色), 1 夜片(IPC的描述为黑白) EM_ICR_STATE_TYPE emICRState; // 滤光片类型 }NET_OUT_ICR_GET_STATE_INFO; ///@brief 通知开始获取数据 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_ICRGetState(LLONG lLoginID,const NET_IN_ICR_GET_STATE_INFO* pstInParam, NET_OUT_ICR_GET_STATE_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_RemoveAnalyseTaskByType 输入参数 typedef struct tagNET_IN_REMOVE_ANALYSE_TASK_BYTYPE { DWORD dwSize; // 结构体大小 EM_DATA_SOURCE_TYPE emSourceType; // 任务类型 }NET_IN_REMOVE_ANALYSE_TASK_BYTYPE; ///@brief CLIENT_RemoveAnalyseTaskByType 输出参数 typedef struct tagNET_OUT_REMOVE_ANALYSE_TASK_BYTYPE { DWORD dwSize; // 结构体大小 }NET_OUT_REMOVE_ANALYSE_TASK_BYTYPE; ///@brief 按数据源类型删除智能分析任务 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveAnalyseTaskByType(LLONG lLoginID, const NET_IN_REMOVE_ANALYSE_TASK_BYTYPE* pstuInParam, NET_OUT_REMOVE_ANALYSE_TASK_BYTYPE* pstuOutParam, int nWaitTime); ///@brief 获取设备状态入参 typedef struct tagNET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS { DWORD dwSize; // 结构体大小 }NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS; ///@brief 供电类型 typedef enum tagNET_EM_POWER_TYPE { NET_EM_POWER_TYPE_UNKNOWN = -1, // 未知 NET_EM_POWER_TYPE_POWERADAPTER, // 电源适配器 NET_EM_POWER_TYPE_BATTERY, // 电池 NET_EM_POWER_TYPE_BATTERY_AND_POWERADAPTER, // 电池+电源适配器 }NET_EM_POWER_TYPE; ///@brief 电源电池相关信息 typedef struct tagNET_DEVSTATUS_POWER_INFO { UINT nBatteryPercent; // 电池电量百分比,0~100 NET_EM_POWER_TYPE emPowerType; // 供电类型 }NET_DEVSTATUS_POWER_INFO; ///@brief 有线网连接状态 typedef enum tagNET_EM_ETH_STATE { NET_EM_ETH_UNKNOWN, // 未知 NET_EM_ETH_CONNECT, // 连接 NET_EM_ETH_DISCONNECT, // 未连接 }NET_EM_ETH_STATE; ///@brief sim卡状态 typedef enum tagNET_EM_SIM_STATE { NET_EM_SIM_UNKNOWN, // 未知 NET_EM_SIM_ONLINE, // 在线 NET_EM_SIM_OFFLINE, // 离线 }NET_EM_SIM_STATE; ///@brief sim卡状态信息 typedef struct tagNET_DEVSTATUS_SIM_INFO { NET_EM_SIM_STATE emStatus; // SIM卡状态 BYTE byIndex; // SIM卡编号 BYTE byReserved[31]; // 预留字段 }NET_DEVSTATUS_SIM_INFO; ///@brief 网络相关信息 typedef struct tagNET_DEVSTATUS_NET_INFO { UINT nWifiIntensity; // wifi信号强度等级,0~5,0表示没有信号 UINT nWifiSignal; // wifi信号强度,单位dbm, 0~100,0表示没有信号 UINT nCellulSignal; // 2g/3g/4g信号强度,单位dbm. 0~100, 0表示没有信号 UINT nCellulIntensity; // 2g/3g/4g信号强度等级,0~5, 0表示没有信号 NET_EM_ETH_STATE emEthState; // 有线网连接状态 UINT n3Gflux; // 蜂窝网络实际使用流量,单位:MB UINT n3GfluxByTime; // 网络实际使用时长,单位:分钟 NET_EM_ETH_STATE emWifiState; // 网络连接状态 NET_EM_ETH_STATE emCellularstate; // 蜂窝网络连接状态 UINT nSimNum; // SIM卡数量 NET_DEVSTATUS_SIM_INFO stuSimInfo[DH_GATEWAY_MAX_SIM_NUM]; // SIM卡状态信息 }NET_DEVSTATUS_NET_INFO; ///@brief 主机防拆状态 typedef enum tagNET_EM_TAMPER_STATE { NET_EM_TAMPER_UNKNOWN = -1, // 未知 NET_EM_TAMPER_NOALARM, // 未报警 NET_EM_TAMPER_ALARMING, // 报警中 }NET_EM_TAMPER_STATE; ///@brief 获取设备状态出参 typedef struct tagNET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS { DWORD dwSize; // 结构体大小 NET_DEVSTATUS_POWER_INFO stuPowerInfo; // 电源电池相关信息 NET_DEVSTATUS_NET_INFO stuNetInfo; // 网络相关信息 char szVersion[DH_COMMON_STRING_32]; // 主机软件版本 NET_EM_TAMPER_STATE emTamperState; // 主机防拆状态 }NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS; ///@brief 获取设备状态, DMSS专用接口, pInParam与pOutParam内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetUnifiedStatus(LLONG lLoginID, NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS* pInParam, NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS* pOutParam, int nWaitTime); ///@brief 获取token入参 typedef struct tagNET_IN_MAKE_TOKEN { DWORD dwSize; // 结构体大小 char szUUID[128]; // 客户端唯一标示符 int nKeepLiveTime; // Token保活时间, 范围60~86400 }NET_IN_MAKE_TOKEN; ///@brief 获取token出参 typedef struct tagNET_OUT_MAKE_TOKEN { DWORD dwSize; // 结构体大小 UINT nToken; // Token }NET_OUT_MAKE_TOKEN; ///@brief 获取token, pstuInParam与pstuOutParam内存由用户申请释放 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_MakeToken(LLONG lLoginID, NET_IN_MAKE_TOKEN* pstuInParam, NET_OUT_MAKE_TOKEN* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetNASDirectoryInfo接口入参 typedef struct tagNET_IN_NAS_DIRECTORY_GET_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szName[128]; // 共享文件夹名称, 用于创建设备组件实例, 必须填写 }NET_IN_NAS_DIRECTORY_GET_INFO; ///@brief NAS状态 typedef enum tagEM_NAS_STATE_TYPE { EM_NAS_STATE_TYPE_UNKNOWN, // 未知 EM_NAS_STATE_TYPE_ACTIVE, // 正常 EM_NAS_STATE_TYPE_LVFAILED, // LV异常 EM_NAS_STATE_TYPE_INACTIVE, // 非活跃 EM_NAS_STATE_TYPE_VGFAILED, // LV所属的VG异常 EM_NAS_STATE_TYPE_NOTSTARTED, // 服务未开启 } EM_NAS_STATE_TYPE; ///@brief CLIENT_GetNASDirectoryInfo接口出参 typedef struct tagNET_OUT_NAS_DIRECTORY_GET_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nFreeSpace; // 剩余空间, 单位MB UINT nTotalSpace; // 总空间, 单位MB EM_NAS_STATE_TYPE emState; // NAS状态 }NET_OUT_NAS_DIRECTORY_GET_INFO; ///@brief 获取共享文件夹工作目录信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetNASDirectoryInfo(LLONG lLoginID,const NET_IN_NAS_DIRECTORY_GET_INFO* pstInParam, NET_OUT_NAS_DIRECTORY_GET_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_GetFileManagerExFileInfoByPath接口入参 typedef struct tagNET_IN_GET_FILE_INFO_BY_PATH_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szPath[256]; // 文件路径 }NET_IN_GET_FILE_INFO_BY_PATH_INFO; ///@brief 文件上传状态 typedef enum tagEM_FILE_UPDATE_STATE { EM_FILE_UPDATE_STATE_UNKNOWN, // 未知 EM_FILE_UPDATE_STATE_UPLOADING, // 正在上传 EM_FILE_UPDATE_STATE_PAUSED, // 上传中断 EM_FILE_UPDATE_STATE_SUCCEEDED, // 上传成功 } EM_FILE_UPDATE_STATE; ///@brief CLIENT_GetFileManagerExFileInfoByPath接口出参 typedef struct tagNET_OUT_GET_FILE_INFO_BY_PATH_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_FILE_UPDATE_STATE emState; // 文件上传状态 NET_TIME_EX stuStartTime; // 文件开始时间 NET_TIME_EX stuEndTime; // 文件结束时间 UINT nProgress; // 文件上传进度 UINT nCurrentSlice; // 当前分片(切片上传模式所需数据) TP_U64 nFileLength; // 文件大小 int nReason; // 错误原因 // 0: 未知原因 // 1: 文件个数超出 // 2: 文件存储空间已满 // 3: 该文件太大 // 4: 无效的文件类型 // 5: 没有上传权限 // 6: 文件命名异常 // 7: 文件名太长 // 8: 文件名已经存在 // 9: 验签失败 char szReserved[4]; // 字节对齐 }NET_OUT_GET_FILE_INFO_BY_PATH_INFO; ///@brief 根据文件路径获取外部导入文件信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFileManagerExFileInfoByPath(LLONG lLoginID,const NET_IN_GET_FILE_INFO_BY_PATH_INFO* pstInParam, NET_OUT_GET_FILE_INFO_BY_PATH_INFO* pstOutParam, int nWaitTime); ///@brief CLIENT_GetStorageTankInfo接口入参 typedef struct tagNET_IN_GET_STORAGE_TANK_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_STORAGE_TANK_INFO; ///@brief 磁盘柜信息 typedef struct tagNET_STORAGE_TANK_INFO { int nSlotNum; // 磁盘柜总槽位数 char szReserved[2044]; // 保留字段 }NET_STORAGE_TANK_INFO; ///@brief CLIENT_GetStorageTankInfo接口出参 typedef struct tagNET_OUT_GET_STORAGE_TANK_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nTankInfoNum; // 磁盘柜数量 NET_STORAGE_TANK_INFO stuTankInfo[32]; // 磁盘柜信息 }NET_OUT_GET_STORAGE_TANK_INFO; ///@brief 查询磁盘柜信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetStorageTankInfo(LLONG lLoginID,const NET_IN_GET_STORAGE_TANK_INFO* pstuInParam, NET_OUT_GET_STORAGE_TANK_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_AddOSDText接口入参 typedef struct tagNET_IN_ADD_OSD_TEXT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nType; // 叠加的类型, 0 与GPS信息叠加强相关 int nChannelNum; // 实际下发的通道数 int nChannel[16]; // 需要叠加的通道 char szText[256]; // 叠加的文本信息 UINT nDuration; // 叠加显示时长, 0表示一直叠加至下一次协议下发, 其它数字表示显示时长, 单位秒 }NET_IN_ADD_OSD_TEXT_INFO; ///@brief CLIENT_AddOSDText接口出参 typedef struct tagNET_OUT_ADD_OSD_TEXT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ADD_OSD_TEXT_INFO; ///@brief 添加叠加文本信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_AddOSDText(LLONG lLoginID,const NET_IN_ADD_OSD_TEXT_INFO* pstuInParam, NET_OUT_ADD_OSD_TEXT_INFO* pstuOutParam, int nWaitTime); ///@brief 导出数据包描述 typedef struct tagNET_STREAM_DATA_FILE_INFO { char szDestFile[70]; // 目录名:导出数据存放文件夹 char szResvered1[2]; // 预留字节1 char szDestPath[128]; // 导出数据存放路径 char szDestFileName[128]; // 导出文件名 UINT nIndex; // 文件分片索引号从1开始一次递增, 若单个文件完整输出则填0 char szResvered[1024]; // 预留字节 }NET_STREAM_DATA_FILE_INFO; ///@brief CLIENT_AttachStartStreamData的回调信息 typedef struct tagNET_CB_START_STREAM_DATA_INFO { NET_STREAM_DATA_FILE_INFO stuFileInfo; // 导出数据包描述 BOOL bEOF; // 数据完成标志 UINT nProgress; // 数据传输进度, 百分比, 范围[0, 100] char szReserved[2048]; // 预留字节 }NET_CB_START_STREAM_DATA_INFO; ///@brief CLIENT_AttachStartStreamData的回调函数 typedef void (CALLBACK *fStartStreamDataCallBack)(LLONG lAttachHandle, NET_CB_START_STREAM_DATA_INFO* pstuStartStreamData, LDWORD dwUser, BYTE *pBuffer, DWORD dwBufSize); ///@brief CLIENT_AttachStartStreamData 接口输入参数 typedef struct tagNET_IN_ATTACH_START_STREAM_DATA { DWORD dwSize; // 此结构体大小,必须赋值 fStartStreamDataCallBack cbStartStreamData; // 回调函数 LDWORD dwUser; // 用户信息 }NET_IN_ATTACH_START_STREAM_DATA; ///@brief CLIENT_AttachStartStreamData 接口输出参数 typedef struct tagNET_OUT_ATTACH_START_STREAM_DATA { DWORD dwSize; // 结构体大小 } NET_OUT_ATTACH_START_STREAM_DATA; ///@brief 获取设备当前状态并绑定导出接口 ///@param[in] lLoginID: 登录句柄 ///@param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放 ///@param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放 ///@param[in] nWaitTime: 接口超时时间, 单位毫秒 ///@return 订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachStartStreamData(LLONG lLoginID, NET_IN_ATTACH_START_STREAM_DATA* pstuInParam, NET_OUT_ATTACH_START_STREAM_DATA* pstuOutParam , int nWaitTime); ///@brief 注销一键导出处理 ///@param[in] lAttachHandle 订阅接口返回句柄 ///@return TRUE表示成功, FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachStopStreamData(LLONG lAttachHandle); ///@brief CLIENT_GetDevVideoInputCollect接口入参 typedef struct tagNET_IN_GET_DEV_VIDEO_INPUT_COLLECT { DWORD dwSize; // 结构体大小 }NET_IN_GET_DEV_VIDEO_INPUT_COLLECT; ///@brief CLIENT_GetDevVideoInputCollect接口出参 typedef struct tagNET_OUT_GET_DEV_VIDEO_INPUT_COLLECT { DWORD dwSize; // 结构体大小 UINT nChannels; // 模拟输入通道数 }NET_OUT_GET_DEV_VIDEO_INPUT_COLLECT; ///@brief 获取模拟输入通道数, pstuInParam与pstuOutParam内存由用户申请释放 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDevVideoInputCollect(LLONG lLoginID, NET_IN_GET_DEV_VIDEO_INPUT_COLLECT* pstuInParam, NET_OUT_GET_DEV_VIDEO_INPUT_COLLECT* pstuOutParam, int nWaitTime); ///@brief 回调的触摸屏触摸信息 typedef struct tagNET_NOTIFY_HOOK_DATA_INFO { UINT nType; // 输入源类型 UINT nMessage; // 消息类型 UINT nParam1; // 按键键值 UINT nParam2; // 触摸坐标值 char szReserved[1024]; // 保留字节 }NET_NOTIFY_HOOK_DATA_INFO; ///@brief 订阅触摸屏触摸信息接口回调函数原型, lAttachHookHandle为CLIENT_AttachHook接口的返回值 ///@param[out] lAttachHookHandle 订阅句柄 ///@param[out] pstuHookDataInfo 订阅的触摸屏触摸信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyHookData)(LLONG lAttachHookHandle, NET_NOTIFY_HOOK_DATA_INFO* pstuHookDataInfo, LDWORD dwUser); ///@brief CLIENT_AttachHook接口入参 typedef struct tagNET_IN_ATTACH_HOOK { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyHookData cbNotifyHookData; // 回调函数 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_HOOK; ///@brief CLIENT_AttachHook接口出参 typedef struct tagNET_OUT_ATTACH_HOOK { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_HOOK; ///@brief 订阅触摸屏触摸信息接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachHook(LLONG lLoginID, const NET_IN_ATTACH_HOOK* pstuInParam, NET_OUT_ATTACH_HOOK* pstuOutParam, int nWaitTime); ///@brief 取消触摸屏触摸信息订阅接口 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachHook(LLONG lAttachHandle); ///@brief 回调的陀螺仪数据信息 typedef struct tagNET_NOTIFY_GYRO_DATA_INFO { double dbAngularSpeedX; // X轴角速度,单位rad/s double dbAngularSpeedY; // Y轴角速度,单位rad/s double dbAngularSpeedZ; // z轴角速度,单位rad/s double dbAccelX; // X轴加速度,单位m/s^2 double dbAccelY; // Y轴加速度,单位m/s^2 double dbAccelZ; // Z轴加速度,单位m/s^2 char szReserved[1024]; // 保留字节 }NET_NOTIFY_GYRO_DATA_INFO; ///@brief 订阅陀螺仪数据接口回调函数原型, lAttachGyroHandle为CLIENT_AttachGyro接口的返回值 ///@param[out] lAttachGyroHandle 订阅句柄 ///@param[out] pstuGyroDataInfo 订阅的陀螺仪数据回调信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyGyroData)(LLONG lAttachGyroHandle, NET_NOTIFY_GYRO_DATA_INFO* pstuGyroDataInfo, LDWORD dwUser); ///@brief CLIENT_AttachGyro接口入参 typedef struct tagNET_IN_ATTACH_GYRO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyGyroData cbNotifyGyroData; // 回调函数 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_GYRO; ///@brief CLIENT_AttachGyro接口出参 typedef struct tagNET_OUT_ATTACH_GYRO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_GYRO; ///@brief 订阅陀螺仪数据接口 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out] pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachGyro(LLONG lLoginID,const NET_IN_ATTACH_GYRO* pstuInParam, NET_OUT_ATTACH_GYRO* pstuOutParam, int nWaitTime); ///@brief 取消陀螺仪数据订阅接口 ///@param[in] lAttachHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachGyro(LLONG lAttachHandle); ///@brief CLIENT_SetArchivePlan接口入参 typedef struct tagNET_IN_SET_ARCHIVE_PLAN { DWORD dwSize; // 结构体大小 char szChannelID[64]; // 通道ID char szChannelName[64]; // 通道名称 DH_TSECT stuTimeSection[8][24]; //备份时间段 int nVideoStream; // 视频码流,0-未知,1-主码流,2-辅码流1,3-辅码流2 }NET_IN_SET_ARCHIVE_PLAN; ///@brief CLIENT_SetArchivePlan接口出参 typedef struct tagNET_OUT_SET_ARCHIVE_PLAN { DWORD dwSize; // 结构体大小 }NET_OUT_SET_ARCHIVE_PLAN; ///@brief 设置归档计划 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetArchivePlan(LLONG lLoginID, const NET_IN_SET_ARCHIVE_PLAN* pstuInParam, NET_OUT_SET_ARCHIVE_PLAN* pstuOutParam, int nWaitTime); ///@brief CLIENT_RemoveArchivePlans接口入参 typedef struct tagNET_IN_REMOVE_ARCHIVE_PLANS { DWORD dwSize; // 结构体大小 int nChannelIDNum; // 通道ID数量 char szChannelIDs[64][1024]; // 通道ID列表 }NET_IN_REMOVE_ARCHIVE_PLANS; ///@brief CLIENT_RemoveArchivePlans接口出参 typedef struct tagNET_OUT_REMOVE_ARCHIVE_PLANS { DWORD dwSize; // 结构体大小 }NET_OUT_REMOVE_ARCHIVE_PLANS; ///@brief 删除归档计划 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RemoveArchivePlans(LLONG lLoginID, const NET_IN_REMOVE_ARCHIVE_PLANS* pstuInParam, NET_OUT_REMOVE_ARCHIVE_PLANS* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetArchivePlanStat接口入参 typedef struct tagNET_IN_GET_ARCHIVE_PLAN_STAT { DWORD dwSize; // 结构体大小 }NET_IN_GET_ARCHIVE_PLAN_STAT; ///@brief CLIENT_GetArchivePlanStat接口出参 typedef struct tagNET_OUT_GET_ARCHIVE_PLAN_STAT { DWORD dwSize; // 结构体大小 UINT nMaxPlanNum; // 最大归档计划数 UINT nInUsePlanNum; // 使用中的归档计划数 UINT nRemovedPlanNum; // 已删除的归档计划数 }NET_OUT_GET_ARCHIVE_PLAN_STAT; ///@brief 获取归档计划的统计信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetArchivePlanStat(LLONG lLoginID, const NET_IN_GET_ARCHIVE_PLAN_STAT* pstuInParam, NET_OUT_GET_ARCHIVE_PLAN_STAT* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetArchivePlanInfos接口入参 typedef struct tagNET_IN_GET_ARCHIVE_PLAN_INFOS { DWORD dwSize; // 结构体大小 UINT nQueryType; // 归档计划的查询类型。0-查询所有的归档计划;1-查询使用中的归档计划;2-查询已删除的归档计划。 }NET_IN_GET_ARCHIVE_PLAN_INFOS; ///@brief 归档计划信息 typedef struct tagNET_ARCHIVE_PLAN_INFOS { char szChannelID[64]; // 通道ID char szChannelName[64]; // 通道名称 DH_TSECT stuTimeSection[8][24]; // 备份时间段 char szRealRtspURL[256]; // 实时流RTSP地址 int nVideoStream; // 视频码流,0-未知,1-主码流,2-辅码流1,3-辅码流2 UINT nStatus; // 归档计划的状态。UINT_MAX - 未知;0-归档计划正常;1-归档计划异常;2-归档计划已删除。 NET_TIME stuLastArchivedTime; // 最近归档的时间 NET_TIME stuLastModifiedTime; // 最近添加或修改归档计划的时间 char szReserved[1024]; // 保留字节 }NET_ARCHIVE_PLAN_INFOS; ///@brief CLIENT_GetArchivePlanInfos接口出参 typedef struct tagNET_OUT_GET_ARCHIVE_PLAN_INFOS { DWORD dwSize; // 结构体大小 int nMaxArchivePlanCount; // 归档计划信息最大值, 用户填写 NET_ARCHIVE_PLAN_INFOS* pstuArchivePlanInfo; // 归档计划信息列表, 用户分配内存 int nRetArchivePlanCount; // 实际返回归档计划个数 }NET_OUT_GET_ARCHIVE_PLAN_INFOS; ///@brief 查询归档计划信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetArchivePlanInfos(LLONG lLoginID, const NET_IN_GET_ARCHIVE_PLAN_INFOS* pstuInParam, NET_OUT_GET_ARCHIVE_PLAN_INFOS* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetDeviceSubClass接口入参 typedef struct tagNET_IN_GET_DEVICE_SUB_CLASS { DWORD dwSize; // 结构体大小 }NET_IN_GET_DEVICE_SUB_CLASS; ///@brief CLIENT_GetDeviceSubClass接口出参 typedef struct tagNET_OUT_GET_DEVICE_SUB_CLASS { DWORD dwSize; // 结构体大小 char szType[16]; // 设备子类型 }NET_OUT_GET_DEVICE_SUB_CLASS; ///@brief 获取设备子类型 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDeviceSubClass(LLONG lLoginID, const NET_IN_GET_DEVICE_SUB_CLASS* pstuInParam, NET_OUT_GET_DEVICE_SUB_CLASS* pstuOutParam, int nWaitTime); ///@brief CLIENT_StartRemoteBackupTask接口入参 typedef struct tagNET_IN_START_REMOTE_BACKUP_TASK { DWORD dwSize; // 结构体大小 char szDeviceIP[64]; // 备份设备IP char szAPMac[64]; // 备份设备连接无线访问节点的mac地址 }NET_IN_START_REMOTE_BACKUP_TASK; ///@brief CLIENT_StartRemoteBackupTask接口出参 typedef struct tagNET_OUT_START_REMOTE_BACKUP_TASK { DWORD dwSize; // 结构体大小 }NET_OUT_START_REMOTE_BACKUP_TASK; ///@brief 开始回传任务 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartRemoteBackupTask(LLONG lLoginID, const NET_IN_START_REMOTE_BACKUP_TASK* pstuInParam, NET_OUT_START_REMOTE_BACKUP_TASK* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetThermoReceptorParam 入参 typedef struct tagNET_IN_GET_THERMO_RECEPTOR_PARAM_INFO { DWORD dwSize; int nChannel; // 热成像通道 } NET_IN_GET_THERMO_RECEPTOR_PARAM_INFO; ///@brief CLIENT_GetThermoReceptorParam 出参 typedef struct tagNET_OUT_GET_THERMO_RECEPTOR_PARAM_INFO { DWORD dwSize; int nHourseTemp; // 腔体温度, 取值[-273,1000](精度0.01,实际值已扩大100倍,原值0.00) int nTECTemp; // TEC温度, 取值[-273,1000](精度0.01,实际值已扩大100倍,原值0.00) int nBoardTemp; // 电路板温度, 取值[-273,1000](精度0.01,实际值已扩大100倍,原值0.00) } NET_OUT_GET_THERMO_RECEPTOR_PARAM_INFO; ///@brief 获取机芯温度传感器参数 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口输入参数 ///@param[out]pstuOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetThermoReceptorParam(LLONG lLoginID, const NET_IN_GET_THERMO_RECEPTOR_PARAM_INFO* pstuInParam, NET_OUT_GET_THERMO_RECEPTOR_PARAM_INFO* pstuOutParam, int nWaitTime); /////////////////////////////////////////// IVS智能事件查询相关业务 开始 (仅IVS产品使用)////////////////////////////////////////// ///@brief CLIENT_IVSEventFind接口入参 typedef struct tagNET_IN_IVSEVENT_FIND_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nVaild; // 报警诊断类型 // 0:全部 // 1:未处理 // 2:正确 // 3:错误 // 4:重复正确报警 // 5:重复错误报警 NET_TIME stStartTime; // 查询开始时间 NET_TIME stEndTime; // 查询结束时间 int nChannelList[128]; // 通道号列表 DWORD dwChannelCnt; // nChannelList中有效通道号个数,填0表示查询所有通道号 DWORD dwEventCodeCnt; // dwEventCodeList中有效的事件类型个数 DWORD dwEventCodeList[128]; // 智能事件类型列表,参考 EVENT_IVS_ALL 这个宏下面的智能事件宏定义 // 注意,并非所有的事件都能查询,需要根据所用的IVS设备支持的情况,填写对应的智能事件类型 }NET_IN_IVSEVENT_FIND_INFO; ///@brief CLIENT_IVSEventFind接口出参 typedef struct tagNET_OUT_IVSEVENT_FIND_INFO { DWORD dwSize; // 此结构体大小,必须赋值 DWORD dwCount; // 查询到结果总数 }NET_OUT_IVSEVENT_FIND_INFO; ///@brief CLIENT_IVSEventNextFind接口入参 typedef struct tagNET_IN_IVSEVENT_NEXTFIND_INFO { DWORD dwSize; // 此结构体大小,必须赋值 unsigned int nStartIndex; // 查询起点偏移 unsigned int nLimit; // 单次查询返回数量 }NET_IN_IVSEVENT_NEXTFIND_INFO; ///@brief 智能事件数据信息 typedef struct tagNET_IVSEVENT_EVENT_INFO { int nChannel; // 通道号 从0开始,-1表示通道号未知 DWORD nId; // 事件编号 DWORD dwEventCode; // 事件类型,值含义参考 EVENT_IVS_ALL 下面的智能事件类型宏定义 int nVaild; // 报警诊断类型 // 0:未知 // 1:未处理 // 2:正确 // 3:错误 // 4:重复正确报警 // 5:重复错误报警 NET_TIME_EX stuTime; // 事件发生的时间 char szChannel[32]; // 通道号,字符串形式 BYTE byReserved[988]; // 保留字节 }NET_IVSEVENT_EVENT_INFO; ///@brief CLIENT_IVSEventNextFind接口出参 typedef struct tagNET_OUT_IVSEVENT_NEXTFIND_INFO { DWORD dwSize; // 此结构体大小,必须赋值 DWORD dwEventCnt; // pstuEventInfo的个数, 等于 NET_IN_IVSEVENT_NEXTFIND_INFO 的nLimit字段 NET_IVSEVENT_EVENT_INFO* pstuEventInfo; // 事件信息数组,用户分配内存,大小为sizeof(NET_IVSEVENT_EVENT_INFO)*dwEventCnt DWORD dwRetEventCnt; // 返回的pstuEventInfo个数 }NET_OUT_IVSEVENT_NEXTFIND_INFO; ///@brief 智能事件开始查询 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 查询句柄 非0表示成功,0表示失败 CLIENT_NET_API LLONG CALL_METHOD CLIENT_IVSEventFind(LLONG lLoginID,const NET_IN_IVSEVENT_FIND_INFO* pstInParam, NET_OUT_IVSEVENT_FIND_INFO* pstOutParam, int nWaitTime); ///@brief 智能事件信息查询 ///@param[in] lFindHandle 查询句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_IVSEventNextFind(LLONG lFindHandle, const NET_IN_IVSEVENT_NEXTFIND_INFO* pstInParam, NET_OUT_IVSEVENT_NEXTFIND_INFO* pstOutParam, int nWaitTime); ///@brief 智能事件结束查询 ///@param[in] lFindHandle 查询句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_IVSEventFindClose(LLONG lFindHandle); ///////////////////////////////////////////IVS智能事件查询相关业务 结束////////////////////////////////////////// ///@brief 订阅的设备密码找回验证码信息 typedef struct tagNET_NOTIFY_PWD_RESET_STATE_INFO { char szVerifyCode[256]; // 验证码 char szResvered[1024]; // 保留字节 }NET_NOTIFY_PWD_RESET_STATE_INFO; ///@brief 订阅设备密码找回状态回调函数原型, lPwdResetStateHandle 为 CLIENT_AttachPwdResetState 接口的返回值 ///@param[out] lPwdResetStateHandle 订阅句柄 ///@param[out] pstuPwdResetStateNotifyInfo 订阅的设备密码找回验证码信息 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyPwdResetState)(LLONG lPwdResetStateHandle, NET_NOTIFY_PWD_RESET_STATE_INFO* pstuPwdResetStateNotifyInfo, LDWORD dwUser); ///@brief CLIENT_AttachPwdResetState 接口入参 typedef struct tagNET_IN_ATTACH_PWD_RESET_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyPwdResetState cbfNotifyPwdResetState; // 回调函数,通知EAS设备相位配置信息 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_PWD_RESET_STATE_INFO; ///@brief CLIENT_AttachPwdResetState 接口出参 typedef struct tagNET_OUT_ATTACH_PWD_RESET_STATE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_PWD_RESET_STATE_INFO; ///@brief 订阅设备密码找回状态 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPwdResetState(LLONG lLoginID, NET_IN_ATTACH_PWD_RESET_STATE_INFO* pstInParam, NET_OUT_ATTACH_PWD_RESET_STATE_INFO* pstOutParam, int nWaitTime); ///@brief 退订设备密码找回状态 ///@param[in] lPwdResetStateHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPwdResetState(LLONG lPwdResetStateHandle); ///@brief CLIENT_SendPwdResetRequest 接口入参 typedef struct tagNET_IN_SEND_PWD_RESET_REQ_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szVerifyCode[256]; // 验证码 }NET_IN_SEND_PWD_RESET_REQ_INFO; ///@brief CLIENT_SendPwdResetRequest 接口出参 typedef struct tagNET_OUT_SEND_PWD_RESET_REQ_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SEND_PWD_RESET_REQ_INFO; ///@brief 密码找回请求 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendPwdResetRequest(LLONG lLoginID, NET_IN_SEND_PWD_RESET_REQ_INFO* pstuInParam, NET_OUT_SEND_PWD_RESET_REQ_INFO* pstuOutParam, int nWaitTime); ///@brief 校验码验证结果 typedef enum tagEM_SEND_PWD_RESET_STATE { EM_SEND_PWD_RESET_STATE_UNKNOWN, // 未知 EM_SEND_PWD_RESET_STATE_SUCCESS, // 验证成功 EM_SEND_PWD_RESET_STATE_FAILED, // 验证失败 EM_SEND_PWD_RESET_STATE_OVERTIME, // 验证码超时失效 }EM_SEND_PWD_RESET_STATE; ///@brief CLIENT_SendCodeCheckResult 接口入参 typedef struct tagNET_IN_SEND_CODE_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_SEND_PWD_RESET_STATE emPwdResetState; // 校验码验证结果 char szVerifyCode[256]; // 验证码 }NET_IN_SEND_CODE_CHECK_RESULT_INFO; ///@brief CLIENT_SendCodeCheckResult 接口出参 typedef struct tagNET_OUT_SEND_CODE_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SEND_CODE_CHECK_RESULT_INFO; ///@brief 向设备发送校验码验证结果 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendCodeCheckResult(LLONG lLoginID, NET_IN_SEND_CODE_CHECK_RESULT_INFO* pstuInParam, NET_OUT_SEND_CODE_CHECK_RESULT_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetCodeCheckResult 接口入参 typedef struct tagNET_IN_GET_CODE_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_CODE_CHECK_RESULT_INFO; ///@brief 校验码验证结果 typedef enum tagEM_PWD_RESET_STATE { EM_PWD_RESET_STATE_UNKNOWN=-1, // 未知 EM_PWD_RESET_STATE_NO_RESULT, // 尚未获取到平台验证结果 EM_PWD_RESET_STATE_SUCCESS, // 验证成功 EM_PWD_RESET_STATE_FAILED, // 验证失败 EM_PWD_RESET_STATE_OVERTIME, // 验证码超时失效 }EM_PWD_RESET_STATE; ///@brief CLIENT_GetCodeCheckResult 接口出参 typedef struct tagNET_OUT_GET_CODE_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 EM_PWD_RESET_STATE emPwdResetState; // 校验码验证结果 }NET_OUT_GET_CODE_CHECK_RESULT_INFO; ///@brief 获取验证码校验结果 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetCodeCheckResult(LLONG lLoginID, NET_IN_GET_CODE_CHECK_RESULT_INFO* pstuInParam, NET_OUT_GET_CODE_CHECK_RESULT_INFO* pstuOutParam, int nWaitTime); ///@brief 遥测数据信息 typedef struct tagDEV_SCADA_DATA_INFO { char szID[32]; // 点位ID NET_TIME_EX stuTime; // 遥测数据采集时间,utc int nStatus; // 点位状态,0:无告警,1:一级告警, -1为未收到报警状态 char szType[8]; // 点位类型,YC:遥测 char szUnit[8]; // 遥测数据单位,如m/s,℃ float fSetupVal; // 遥调值 float fMeasuredVal; // 点位遥测值 char szAddress[16]; // 电力104点号,当启用电力104协议时存在 char szResvered[256]; // 保留字节 }DEV_SCADA_DATA_INFO; ///@brief 订阅的遥测数据 typedef struct tagNET_NOTIFY_SCADA_DATA_INFO { char szDeviceId[256]; // 探测器设备ID int nDataInfoNum; // 遥测数据信息数组有效个数 DEV_SCADA_DATA_INFO stuDataInfo[128]; // 遥测数据信息 char szResvered[1024]; // 保留字节 }NET_NOTIFY_SCADA_DATA_INFO; ///@brief 动环遥测数据订阅回调函数原型, lSCADADataHandle 为 CLIENT_AttachSCADAData 接口的返回值 ///@param[out] lSCADADataHandle 订阅句柄 ///@param[out] pstuSCADADataNotifyInfo 订阅的遥测数据 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifySCADAData)(LLONG lSCADADataHandle, NET_NOTIFY_SCADA_DATA_INFO* pstuSCADADataNotifyInfo, LDWORD dwUser); ///@brief CLIENT_AttachSCADAData 接口入参 typedef struct tagNET_IN_ATTACH_SCADA_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifySCADAData cbfNotifySCADAData; // 回调函数, 设备传回的遥测数据 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_SCADA_DATA_INFO; ///@brief CLIENT_AttachSCADAData 接口出参 typedef struct tagNET_OUT_ATTACH_SCADA_DATA_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_SCADA_DATA_INFO; ///@brief 动环遥测数据订阅 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachSCADAData(LLONG lLoginID, NET_IN_ATTACH_SCADA_DATA_INFO* pstInParam, NET_OUT_ATTACH_SCADA_DATA_INFO* pstOutParam, int nWaitTime); ///@brief 动环遥测数据退订 ///@param[in] lSCADADataHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachSCADAData(LLONG lSCADADataHandle); ///@brief CLIENT_GetGpsStatus 接口入参 typedef struct tagNET_IN_GET_GPS_STATUS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_GPS_STATUS_INFO; ///@brief CLIENT_GetGpsStatus 接口出参 typedef struct tagNET_OUT_GET_GPS_STATUS_INFO { DWORD dwSize; // 此结构体大小,必须赋值 NET_GPS_STATUS_INFO stuGPSStatus; // GPS状态 }NET_OUT_GET_GPS_STATUS_INFO; ///@brief 获取GPS定位信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetGpsStatus(LLONG lLoginID, NET_IN_GET_GPS_STATUS_INFO* pstuInParam, NET_OUT_GET_GPS_STATUS_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetPTZDueNorthDirectionAngle 接口入参 typedef struct tagNET_IN_GET_PTZ_NORTH_ANGLE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nChannel; // 通道号 }NET_IN_GET_PTZ_NORTH_ANGLE_INFO; ///@brief CLIENT_GetPTZDueNorthDirectionAngle 接口出参 typedef struct tagNET_OUT_GET_PTZ_NORTH_ANGLE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 char szReserved[4]; // 字节对齐 double dbAngle; // 镜头指向角度,范围0~360 }NET_OUT_GET_PTZ_NORTH_ANGLE_INFO; ///@brief 获取设备镜头与地理方位正北方向的夹角 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPTZDueNorthDirectionAngle(LLONG lLoginID, NET_IN_GET_PTZ_NORTH_ANGLE_INFO* pstuInParam, NET_OUT_GET_PTZ_NORTH_ANGLE_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_CalcWorkTime 接口入参 typedef struct tagNET_IN_CALC_WORK_TIME { DWORD dwSize; // 此结构体大小,必须赋值 int nType; // 返回的操作结果类型, 0: 返回查询剩余加班额度结果, 1: 返回申请加班时长结果 char szUserID[32]; // 用户编号 char szUserName[128]; // 用户姓名 float fRemainingOvertimeLimit; // 剩余加班额度 BOOL bResult; // 返回成功或失败,Type为1时必选项 }NET_IN_CALC_WORK_TIME; ///@brief CLIENT_CalcWorkTime 接口出参 typedef struct tagNET_OUT_CALC_WORK_TIME { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_CALC_WORK_TIME; ///@brief 核算加班信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_CalcWorkTime(LLONG lLoginID, NET_IN_CALC_WORK_TIME* pstuInParam, NET_OUT_CALC_WORK_TIME* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetTrafficFlowStatCaps 接口入参 typedef struct tagNET_IN_GET_TRAFFIC_FLOW_STAT_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 }NET_IN_GET_TRAFFIC_FLOW_STAT_CAPS; ///@brief CLIENT_GetTrafficFlowStatCaps 接口出参 typedef struct tagNET_OUT_GET_TRAFFIC_FLOW_STAT_CAPS { DWORD dwSize; // 此结构体大小,必须赋值 int nSupportRealFlowStatCaps; // 表示支持实时车流量功能的方式, 0:未知, 1:使用事件形式发送, 2:使用接口回调的形式发送 }NET_OUT_GET_TRAFFIC_FLOW_STAT_CAPS; ///@brief 获取流量统计能力集 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetTrafficFlowStatCaps(LLONG lLoginID, NET_IN_GET_TRAFFIC_FLOW_STAT_CAPS* pstuInParam, NET_OUT_GET_TRAFFIC_FLOW_STAT_CAPS* pstuOutParam, int nWaitTime); ///@brief CLIENT_GetEncodeBitrate 接口入参 typedef struct tagNET_IN_GET_ENCODE_BITRATE { DWORD dwSize; // 此结构体大小,必须赋值 int nChannelCount; // 通道号个数 int nChannels[1024]; // 要查询的通道号 }NET_IN_GET_ENCODE_BITRATE; ///@brief CLIENT_GetEncodeBitrate 接口出参 typedef struct tagNET_OUT_GET_ENCODE_BITRATE { DWORD dwSize; // 此结构体大小,必须赋值 int nRetBitrateCount; // 实际返回的个数 int nBitrareCount[1024]; // 对应通道的码率大小 }NET_OUT_GET_ENCODE_BITRATE; ///@brief 获取码流值 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetEncodeBitrate(LLONG lLoginID, NET_IN_GET_ENCODE_BITRATE* pstuInParam, NET_OUT_GET_ENCODE_BITRATE* pstuOutParam, int nWaitTime); //////////////////////////////////////// ///@brief 多门控制校验结果 typedef struct tagNET_CENTRAL_CHECK_RESP_INFO { UINT nAction; // 0:反潜检查 1:多门互锁检查 int nDoorChannel; // 门通道, nAction为多门互锁有效 char szTransID[36]; // 事务ID,由请求源端产生唯一ID char szUserID[32]; // 人员编号ID, 对应nAction为反潜才有效 char szReaderID[32]; // 门读卡器ID, 对应nAction为反潜才有效 char szResvered[1024]; // 保留字节 }NET_CENTRAL_CHECK_RESP_INFO; ///@brief 注册集中式多门控制校验函数订阅回调数据 typedef struct tagNET_NOTIFY_MULTI_DOOR_CTRL_CHECK_INFO { NET_CENTRAL_CHECK_RESP_INFO stuReq; // 多门控制校验结果 char szResvered[1024]; // 保留字节 }NET_NOTIFY_MULTI_DOOR_CTRL_CHECK_INFO; ///@brief 注册集中式多门控制校验函数订阅回调函数原型, lCheckCentraMultiDoorCtrlHandle 为 CLIENT_AttachCheckCentraMultiDoorCtrl 接口的返回值 ///@param[out] lCheckCentraMultiDoorCtrlHandle 订阅句柄 ///@param[out] pstuMultiDoorCtrlCheckNotifyInfo 多门控制校验结果 ///@param[out] dwUser 用户信息 ///@return void typedef void (CALLBACK *fNotifyCentraMultiDoorCtrlCheck)(LLONG lCheckCentraMultiDoorCtrlHandle, NET_NOTIFY_MULTI_DOOR_CTRL_CHECK_INFO* pstuMultiDoorCtrlCheckNotifyInfo, LDWORD dwUser); ///@brief CLIENT_AttachCheckCentraMultiDoorCtrl 接口入参 typedef struct tagNET_IN_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 fNotifyCentraMultiDoorCtrlCheck cbfNotifyCentraMultiDoorCtrlCheck; // 回调函数, 多门控制校验结果 UINT nAction; // 需要设置回调函数的过滤器, 0:反潜检查 , 1:多门互锁检查 LDWORD dwUser; // 用户自定义参数 }NET_IN_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO; ///@brief CLIENT_AttachCheckCentraMultiDoorCtrl 接口出参 typedef struct tagNET_OUT_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO; ///@brief 注册集中式多门控制校验函数订阅 ///@param[in] lLoginID 登录句柄 ///@param[in] pstInParam 接口输入参数 ///@param[out] pstOutParam 接口输出参数 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return 返回订阅句柄 CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachCheckCentraMultiDoorCtrl(LLONG lLoginID, NET_IN_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO* pstInParam, NET_OUT_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO* pstOutParam, int nWaitTime); ///@brief 注册集中式多门控制校验函数退订 ///@param[in] lCheckCentraMultiDoorCtrlHandle 订阅句柄 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachCheckCentraMultiDoorCtrl(LLONG lCheckCentraMultiDoorCtrlHandle); ///@brief CLIENT_SetCheckResultByCentra 接口入参 typedef struct tagNET_IN_CENTRA_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nAction; // 0:反潜检查 1:多门互锁检查 char szTransID[36]; // 事务ID UINT nAntiSumarineResult; // 反潜触发结果 0:没有触发防反潜 1:触发防反潜,对应Action为反潜有效 UINT nInterLockResult; // 互锁检查结果 0:没有构成互锁 1:构成互锁,对应Action为互锁有效 }NET_IN_CENTRA_CHECK_RESULT_INFO; ///@brief CLIENT_SetCheckResultByCentra 接口出参 typedef struct tagNET_OUT_CENTRA_CHECK_RESULT_INFO { DWORD dwSize; // 此结构体大小,必须赋值 UINT nErrorCode; // 返回错误码 0:处理成功;1:处理失败(通用错误码,尽量在后追加更具体错误码,方便客户端提示);2:该事务处理超时 }NET_OUT_CENTRA_CHECK_RESULT_INFO; ///@brief 中心设置校验结果给下级设备 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetCheckResultByCentra(LLONG lLoginID, NET_IN_CENTRA_CHECK_RESULT_INFO* pstuInParam, NET_OUT_CENTRA_CHECK_RESULT_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetAntiSubmarineRuleCfg 接口入参 typedef struct tagNET_IN_ANTI_SUBMARINE_RULE_CFG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nForceReaderIDsNum; // 强执行的读头ID数组第一维长度 int nWeakReaderIDsNum; // 弱执行的读头ID数组第一维长度 char szReserved[4]; // 字节对齐 char szForceReaderIDs[32][16]; // 强执行的读头ID char szWeakReaderIDs[32][16]; // 弱执行的读头ID }NET_IN_ANTI_SUBMARINE_RULE_CFG_INFO; ///@brief CLIENT_SetAntiSubmarineRuleCfg 接口出参 typedef struct tagNET_OUT_ANTI_SUBMARINE_RULE_CFG_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_ANTI_SUBMARINE_RULE_CFG_INFO; ///@brief 中心设置反潜规则配置给下级设备 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetAntiSubmarineRuleCfg(LLONG lLoginID, NET_IN_ANTI_SUBMARINE_RULE_CFG_INFO* pstuInParam, NET_OUT_ANTI_SUBMARINE_RULE_CFG_INFO* pstuOutParam, int nWaitTime); ///@brief CLIENT_SetInterLockRule 接口入参 typedef struct tagNET_IN_INTER_LOCK_RULE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nForceDoorChannelsNum; // 强执行的门通道ID数组长度 int nWeakDoorChannelsNum; // 弱执行的门通道ID数组长度 UINT szForceDoorChannels[32]; // 强执行的门通道ID UINT szWeakDoorChannels[32]; // 弱执行的门通道ID }NET_IN_INTER_LOCK_RULE_INFO; ///@brief CLIENT_SetInterLockRule 接口出参 typedef struct tagNET_OUT_INTER_LOCK_RULE_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_INTER_LOCK_RULE_INFO; ///@brief 给主控的下级设备设置互锁规则配置 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetInterLockRule(LLONG lLoginID, NET_IN_INTER_LOCK_RULE_INFO* pstuInParam, NET_OUT_INTER_LOCK_RULE_INFO* pstuOutParam, int nWaitTime); //////////////////////////////////////// ///@brief 各个小区信息 typedef struct tagNET_COMMUNITY_INFO { char szCommunityId[64]; // 小区ID char szCommunityAddr[64]; // 小区地址 char szCommunityName[64]; // 小区名称 char szReserved[256]; // 预留字段 }NET_COMMUNITY_INFO; ///@brief 通道信息,数组下标对应通道 typedef struct tagNET_CHANNEL_LIST_INFO { char szChannelCode[64]; // 通道编码 char szChannelName[64]; // 通道名称 char szReserved[256]; // 预留字段 }NET_CHANNEL_LIST_INFO; ///@brief CLIENT_SetCommunityInfo 接口入参 typedef struct tagNET_IN_SET_COMMUNITY_INFO { DWORD dwSize; // 此结构体大小,必须赋值 int nCommunityInfoNum; // 各个小区信息数组长度 int nChannelListNum; // 通道信息数组长度 char szReserved[4]; // 字节对齐 NET_COMMUNITY_INFO stuCommunityInfo[128]; // 各个小区信息 NET_CHANNEL_LIST_INFO stuChannelList[128]; // 通道信息 }NET_IN_SET_COMMUNITY_INFO; ///@brief CLIENT_SetCommunityInfo 接口出参 typedef struct tagNET_OUT_SET_COMMUNITY_INFO { DWORD dwSize; // 此结构体大小,必须赋值 }NET_OUT_SET_COMMUNITY_INFO; ///@brief 设置小区信息 ///@param[in] lLoginID 登录句柄 ///@param[in] pstuInParam 接口入参 ///@param[out] pstuOutParam 接口出参 ///@param[in] nWaitTime 接口超时时间, 单位毫秒 ///@return TRUE表示成功 FALSE表示失败 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetCommunityInfo(LLONG lLoginID, NET_IN_SET_COMMUNITY_INFO* pstuInParam, NET_OUT_SET_COMMUNITY_INFO* pstuOutParam, int nWaitTime); /////////////////////////////淘汰接口 Start///////////////////////////////// ///@brief web信息上传接口:该接口淘汰,请使用 CLIENT_TransmitInfoForWebEx CLIENT_NET_API BOOL CALL_METHOD CLIENT_TransmitInfoForWeb(LLONG lLoginID, char* szInBuffer, DWORD dwInBufferSize, char* szOutBuffer, DWORD dwOutBufferSize, void* pExtData, int waittime=500); ///@brief 查询系统服务器配置;该接口已淘汰,请使用CLIENT_GetDevConfig CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryConfig(LLONG lLoginID, int nConfigType, char *pConfigbuf, int maxlen, int *nConfigbuflen, int waittime=1000); ///@brief 设置系统服务器配置;该接口已淘汰,请使用CLIENT_SetDevConfig CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetupConfig(LLONG lLoginID, int nConfigType, char *pConfigbuf, int nConfigbuflen, int waittime=1000); ///@brief 该接口已淘汰,请不要使用 CLIENT_NET_API BOOL CALL_METHOD CLIENT_Reset(LLONG lLoginID, BOOL bReset); ///@brief 查询串口协议 - 该接口已淘汰,请使用CLIENT_GetDevConfig CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryComProtocol(LLONG lLoginID, int nProtocolType, char *pProtocolBuffer, int maxlen, int *nProtocollen, int waittime=1000); ///@brief 开始对讲;该接口已淘汰,请使用CLIENT_StartTalkEx CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartTalk(LLONG lRealHandle, BOOL bCustomSend=false); ///@brief 结束对讲;该接口已淘汰,请使用CLIENT_StopTalkEx CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopTalk(LLONG lRealHandle); ///@brief 发送自定义对讲数据;该接口已淘汰,请使用CLIENT_TalkSendData CLIENT_NET_API BOOL CALL_METHOD CLIENT_SendTalkData_Custom(LLONG lRealHandle, char *pBuffer, DWORD dwBufSize); ///@brief 设置实时预览缓冲大小 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetPlayerBufNumber(LLONG lRealHandle, DWORD dwBufNum); ///@brief 通过时间下载文件 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetFileByTime(LLONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, char *sSavedFileName); ///@brief 网络回放控制 CLIENT_NET_API BOOL CALL_METHOD CLIENT_PlayBackControl(LLONG lPlayHandle, DWORD dwControlCode, DWORD dwInValue, DWORD *lpOutValue); ///@brief 查询设备工作状态 该接口已淘汰,请使用CLIENT_QueryDevState CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetDEVWorkState(LLONG lLoginID, LPNET_DEV_WORKSTATE lpWorkState, int waittime=1000); ///@brief 异步查询设备日志 CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryLogCallback(LLONG lLoginID, fLogDataCallBack cbLogData, LDWORD dwUser); ///@brief 录像开启和关闭,pstRecIn与pstRecOut内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_RecMngCtrlMpt300(LLONG lLoginID, const NET_IN_REC_MNG_CTRL_MPT300 *pstRecIn, NET_OUT_REC_MNG_CTRL_MPT300 *pstRecOut, int nWaitTime); ///@brief 同步直接透传接口,pstInTransmit与pstOutTransmit内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_TransmitInfoDirectly(LLONG lLoginID, const NET_IN_TRANSMIT_DIRECTLY *pstInTransmit, NET_OUT_TRANSMIT_DIRECTLY *pstOutTransmit, int nWaittime = 1000); ///@brief 异步直接透传回调函数原型 typedef void (CALLBACK *fTransmitInfoDirectlyCallBack)(LLONG lLoginID, LLONG lStartHandle, const char *pszOutBuf, DWORD dwBufLen, LDWORD dwUser); ///@brief 异步直接透传接口,pstInTransmit与pstOutTransmit内存由用户申请释放 CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartTransmitInfoDirectly(LLONG lLoginID, const NET_IN_TRANSMIT_DIRECTLY *pstInTransmit, NET_OUT_TRANSMIT_DIRECTLY *pstOutTransmit, fTransmitInfoDirectlyCallBack cbDirectly, LDWORD dwUser, int nWaitTime = 1000); ///@brief 取消异步直接透传接口,pstInTransmit与pstOutTransmit内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopTransmitInfoDirectly(LLONG lStartHandle, const NET_IN_TRANSMIT_DIRECTLY *pstInTransmit, NET_OUT_TRANSMIT_DIRECTLY *pstOutTransmit, int nWaitTime = 1000); ///@brief 获取VK,淘汰废弃接口,请使用CLIENT_AttachVK获取当前甚至前一个vk并订阅vk CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetVK(LLONG lLoginID, const NET_IN_GET_VKINFO* pInParam, NET_OUT_GET_VKINFO* pOutParam, int nWaitTime); ///@brief GDPR版本信息 typedef enum EM_GDPR_VERSION { EM_GDPR_VERSION_NON = 0, // 非GDPR设备 EM_GDPR_VERSION_V1, // GDPR V1设备:支持V1版本的拉流、回放 EM_GDPR_VERSION_V2, // GDPR V2设备:支持V2版本的拉流、回放 }EM_GDPR_VERSION; ///@brief 获取GDPR版本信息,废弃接口,请使用 CLIENT_GetGDPRAbility 接口 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetGDPRVersion(LLONG lLoginID, EM_GDPR_VERSION* pVersion, int nWaitTime); ///@brief 淘汰废弃接口 // 手机订阅推送信息, 使用RegisterID标识配置项,pstuCfg内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetMobilePushNotify(LLONG lLoginID, const NET_MOBILE_PUSH_NOTIFY *pstuCfg, int *nError, int *nRestart, int nWaitTime = 1000); ///@brief 淘汰废弃接口 // 删除手机订阅推送信息, 使用RegisterID标识配置项,pstuIn与pstuOut内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelMobilePushNotify(LLONG lLoginID, const NET_MOBILE_PUSH_NOTIFY_DEL *pstuIn, NET_OUT_DELETECFG* pstuOut, int nWaitTime = 1000); ///@brief 淘汰废弃接口 // 获取手机订阅推送信息, 使用RegisterID+AppID标识配置项,AppID内容不能带点号,点号可以用下划线代替,pstuCfg内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetMobilePushNotifyCfg(LLONG lLoginID, NET_MOBILE_PUSH_NOTIFY_CFG *pstuCfg, int *nError, int nWaitTime = 1000); ///@brief 淘汰废弃接口 // 设置手机订阅推送信息, 使用RegisterID+AppID标识配置项,AppID内容不能带点号,点号可以用下划线代替,pstuCfg内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_SetMobilePushNotifyCfg(LLONG lLoginID, const NET_MOBILE_PUSH_NOTIFY_CFG *pstuCfg, int *nError, int *nRestart, int nWaitTime = 1000); ///@brief 淘汰废弃接口 // 删除手机订阅推送信息, 使用RegisterID+AppID标识配置项,AppID内容不能带点号,点号可以用下划线代替,pstuIn与pstuOut内存由用户申请释放 CLIENT_NET_API BOOL CALL_METHOD CLIENT_DelMobilePushNotifyCfg(LLONG lLoginID, const NET_MOBILE_PUSH_NOTIFY_CFG_DEL *pstuIn, NET_OUT_DELETECFG* pstuOut, int nWaitTime = 1000); ///@brief 操作类型枚举 typedef enum tagNET_EVENT_OPERATE_TYPE { NET_EVENT_OPERATE_TYPE_UNKOWN =0, //未知 NET_EVENT_OPERATE_TYPE_ADD, //增加 NET_EVENT_OPERATE_TYPE_DELETE, //删除 NET_EVENT_OPERATE_TYPE_MODIFY, //修改 }NET_EVENT_OPERATE_TYPE; ///@brief 用户类型枚举 typedef enum tagNET_EVENT_USER_TYPE { NET_EVENT_USER_TYPE_UNKOWN =0, //未知 NET_EVENT_USER_TYPE_KEYPAD, //键盘 }NET_EVENT_USER_TYPE; ///@brief 设备类型枚举 typedef enum tagNET_EVENT_DEVICE_TYPE { NET_EVENT_DEVICE_TYPE_UNKOWN =0, //未知 NET_EVENT_DEVICE_TYPE_CARD, //卡片 }NET_EVENT_DEVICE_TYPE; ///@brief RF干扰上报事件 (对应 DH_ALARM_RF_JAMMING) typedef struct tagNET_ALARM_RF_JAMMING_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szDeviceName[256]; // 设备名称 char szReserved[1024]; // 保留字节 }NET_ALARM_RF_JAMMING_INFO; ///@brief 布防失败上报事件 (对应 DH_ALARM_ARMING_FAILURE) typedef struct tagNET_ALARM_ARMING_FAILURE_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 EM_ARM_TYPE emMode; // 布撤防模式 char szReserved[1024]; // 保留字节 }NET_ALARM_ARMING_FAILURE_INFO; ///@brief 用户信息被修改(增加、删除、修改)上报事件 (对应 DH_ALARM_USER_MODIFIED) typedef struct tagNET_ALARM_USER_MODIFIED_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 char szUser[128]; // 用户名称 NET_EVENT_OPERATE_TYPE emOpType; // 操作类型 NET_EVENT_USER_TYPE emUserType; // 用户类型 char szReserved[1024]; // 保留字节 }NET_ALARM_USER_MODIFIED_INFO; ///@brief 手动测试上报事件 (对应 DH_ALARM_MANUAL_TEST) typedef struct tagNET_ALARM_MANUAL_TEST_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szSN[32]; // 配件序列号 char szName[32]; // 配件名称 char szAreaName[128]; // 配件所属区域名称 char szReserved[1024]; // 保留字节 }NET_ALARM_MANUAL_TEST_INFO; ///@brief 设备设息修改(增加、删除、修改)上报事件 (对应 DH_ALARM_DEVICE_MODIFIED) typedef struct tagNET_ALARM_DEVICE_MODIFIED_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szUser[32]; // 用户名称 NET_EVENT_OPERATE_TYPE emOpType; // 操作类型 NET_EVENT_DEVICE_TYPE emDeviceType; // 设备类型 char szReserved[1024];// 保留字节 }NET_ALARM_DEVICE_MODIFIED_INFO; ///@brief 报警传输系统故障上报事件 (对应 DH_ALARM_ATS_FAULT) typedef struct tagNET_ALARM_ATS_FAULT_INFO { int nAction; // 事件动作, 1:开始 2:停止 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szReserved[1024];// 保留字节 }NET_ALARM_ATS_FAULT_INFO; ///@brief 报警接收中心离线上报事件 (对应 DH_ALARM_ARC_OFFLINE) typedef struct tagNET_ALARM_ARC_OFFLINE_INFO { int nAction; // 事件动作, 1:开始 2:停止 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szDetail[128]; // ARC通讯异常描述信息 char szReserved[1024];// 保留字节 }NET_ALARM_ARC_OFFLINE_INFO; ///@brief 所属区域信息结构体 typedef struct tagNET_EVENT_AREAR_INFO { char szName[128]; // 所属区域名称 int nIndex; // 所属区域编号 char szRsd[64]; // 保留字节 }NET_EVENT_AREAR_INFO; ///@brief wifi故障上报事件 (对应 DH_ALARM_WIFI_FAILURE) typedef struct tagNET_ALARM_WIFI_FAILURE_INFO { int nAction; // 事件动作, 1:开始 2:停止 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szSN[32]; // 配件序列号 char szName[64]; // 配件名称 int nErrorCode; // wifi故障错误码 1:未知错误;2:无效的网络名称;3:无效的网络口令;4:网络故障 int nAreaInfoNum; // 所属区域信息个数 NET_EVENT_AREAR_INFO stuAreaInfo[64]; // 所属区域信息 char szReserved[1024];// 保留字节 }NET_ALARM_WIFI_FAILURE_INFO; ///@brief 超温上报事件 (对应 DH_ALARM_OVER_TEMPERATURE) typedef struct tagNET_ALARM_OVER_TEMPERATURE_INFO { int nAction; // 事件动作 0:脉冲 int nChannel; // 通道号 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 char szSN[32]; // 配件序列号 char szName[64]; // 配件名称 int nTemperatureType; // 超温类型 0:温度恢复正常;1:温度超过下限;2:温度超过上限 int nAreaInfoNum; // 所属区域信息个数 NET_EVENT_AREAR_INFO stuAreaInfo[64]; // 所属区域信息 char szReserved[1024]; // 保留字节 }NET_ALARM_OVER_TEMPERATURE_INFO; ///@brief 隔栏传物事件检测到的目标信息结构体 typedef struct tagNET_DETECTION_OBJECT_INFO { char szObjectType[16]; // 目标类型 支持"Human" NET_RECT_EX stuBoundingBox; // 目标物体包围盒,矩形类型归一化到[0,8192)区间 UINT nObjectID; // 目标ID char szReserved[516]; // 保留字节 }NET_DETECTION_OBJECT_INFO; ///@brief 隔栏传物事件 (对应 DH_ALARM_RAILING_PASS_DETECTION) typedef struct tagNET_DEV_EVENT_RAILING_PASS_DETECTION_INFO { int nChannelID; // 通道号,从0开始 int nEventAction; // 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束 UINT nRuleID; // 智能事件规则编号,用于标示哪个规则触发的事件。 NET_TIME_EX stuUTC; // 事件发生的时间,标准的(不带时区偏差的)UTC时间 NET_EVENT_INFO_EXTEND stuEventInfoEx; // 事件公共扩展字段结构体 char szName[128]; // 事件名称 char szClass[16]; // 智能事件所属大类 int nGroupID; // 事件组ID,同一物体抓拍过程内GroupID相同 int nCountInGroup; // 一个事件组内的抓拍张数 int nIndexInGroup; // 一个事件组内的抓拍序号 int nCount; // 规则被触发次数 double dbPTS; // 相对事件时间戳,单位毫秒 UINT nUTCMS; // 事件时间毫秒数 UINT nEventID; // 事件编号 DH_POINT_EX stuDetectLine[2]; // 配置的规则线,包含一个起点、一个终点坐标,归一化到[0,8192)区间 DH_POINT_EX stuDetectRegion[20]; // 配置的检测区,多边形中每个顶点的坐标归一化到[0,8192)区间 int nDetectRegionPointNum; // 多边形中顶点个数 int nObjectsCount; // 检测到的目标信息个数 NET_DETECTION_OBJECT_INFO stuObjects[100]; // 检测到的目标信息 char szReserved[1024]; // 保留字节 }NET_DEV_EVENT_RAILING_PASS_DETECTION_INFO; /////////////////////////////淘汰接口 End///////////////////////////////// #ifdef __cplusplus } #endif #endif // DHNETSDK_H